
theorem Th39:
  for f be Function of [:NAT,NAT:],ExtREAL, n,m be Nat holds
       (Partial_Sums_in_cod1 f).(n,m) = (Partial_Sums_in_cod2 ~f).(m,n)
     & (Partial_Sums_in_cod2 f).(n,m) = (Partial_Sums_in_cod1 ~f).(m,n)
proof
   let f be Function of [:NAT,NAT:],ExtREAL;
   let n,m be Nat;
   reconsider n1=n, m1=m as Element of NAT by ORDINAL1:def 12;
   defpred P1[Nat] means
     (Partial_Sums_in_cod1 f).($1,m) = (Partial_Sums_in_cod2 ~f).(m,$1);
   (Partial_Sums_in_cod1 f).(0,m) = f.(0,m) by DefRSM
     .= (~f).(m1,0) by FUNCT_4:def 8; then
A2:P1[0] by DefCSM;
A3:for k be Nat st P1[k] holds P1[k+1]
   proof
    let k be Nat;
    assume A4: P1[k];
    (Partial_Sums_in_cod1 f).(k+1,m)
     = (Partial_Sums_in_cod1 f).(k,m) + f.(k+1,m) by DefRSM
    .= (Partial_Sums_in_cod2 ~f).(m,k) + ~f.(m1,k+1) by A4,FUNCT_4:def 8;
    hence P1[k+1] by DefCSM;
   end;
   for k be Nat holds P1[k] from NAT_1:sch 2(A2,A3);
   hence (Partial_Sums_in_cod1 f).(n,m) = (Partial_Sums_in_cod2 ~f).(m,n);
   defpred P2[Nat] means
     (Partial_Sums_in_cod2 f).(n,$1) = (Partial_Sums_in_cod1 ~f).($1,n);
   (Partial_Sums_in_cod2 f).(n,0) = f.(n,0) by DefCSM
     .= (~f).(0,n1) by FUNCT_4:def 8; then
A5:P2[0] by DefRSM;
A6:for k be Nat st P2[k] holds P2[k+1]
   proof
    let k be Nat;
    assume A7: P2[k];
    (Partial_Sums_in_cod2 f).(n,k+1)
     = (Partial_Sums_in_cod2 f).(n,k) + f.(n,k+1) by DefCSM
    .= (Partial_Sums_in_cod1 ~f).(k,n) + ~f.(k+1,n1) by A7,FUNCT_4:def 8;
    hence P2[k+1] by DefRSM;
   end;
   for k be Nat holds P2[k] from NAT_1:sch 2(A5,A6);
   hence (Partial_Sums_in_cod2 f).(n,m) = (Partial_Sums_in_cod1 ~f).(m,n);
end;
