reserve a,b,k,m,n,s for Nat;
reserve c,c1,c2,c3 for Complex;
reserve i,j,z for Integer;
reserve p for Prime;
reserve x for object;
reserve f,g for complex-valued FinSequence;

theorem Th60:
  (f^g)" = (f") ^ (g")
  proof
A1: len(f") = len f by Th55;
A2: len(g") = len g by Th55;
    dom((f^g)") = dom(f^g) by VALUED_1:def 7
    .= Seg(len f + len g) by FINSEQ_1:def 7
    .= dom((f")^(g")) by A1,A2,FINSEQ_1:def 7;
    hence len((f^g)") = len((f")^(g")) by FINSEQ_3:29;
    let k be Nat such that
A3: 1 <= k and
A4: k <= len((f^g)");
A5: (f^g)".k = ((f^g).k)" by VALUED_1:10;
    per cases;
    suppose
A6:   k <= len f;
      hence (f^g)".k = (f.k)" by A3,A5,FINSEQ_1:64
      .= (f").k by VALUED_1:10
      .= ((f")^(g")).k by A1,A3,A6,FINSEQ_1:64;
    end;
    suppose
A7:   k > len f;
      then reconsider i = k-len(f) as Element of NAT by INT_1:5;
A8:   len(f^g) = len f + len g by FINSEQ_1:22;
A9:   len((f^g)") = len(f^g) by Th55;
A10:  k = len f + i;
A11:  0+1 <= k - len f by A7,XREAL_1:50,INT_1:7;
A12:  k - len f <= len g by A4,A8,A9,XREAL_1:20;
      then
A13:  (f^g).k = g.i by A10,A11,FINSEQ_1:65;
      ((f")^(g")).k = (g").i by A1,A2,A10,A11,A12,FINSEQ_1:65;
      hence (f^g)".k = ((f")^(g")).k by A5,A13,VALUED_1:10;
    end;
  end;
