reserve k,n,i,j for Nat;

theorem Th21:
  for G being Group, f,g being FinSequence of G holds (f^g)"=(f")^ (g")
proof
  let G be Group, f,g be FinSequence of G;
A1: len ((f^g)")=len (f^g) by Def3
    .= len f+len g by FINSEQ_1:22;
A2: len f+len g=len (f") +len g by Def3
    .=len (f") + len (g") by Def3
    .= len ((f")^(g")) by FINSEQ_1:22;
A3: len ((f^g)")=len (f^g) by Def3;
  for i being Nat st 1<=i & i<= len ((f^g)") holds ((f^g)").i=((f")^(g")). i
  proof
    let i be Nat;
    assume that
A4: 1<=i and
A5: i<= len ((f^g)");
    now
      per cases;
      case
        len f>0;
A6:     len (f")=len f by Def3;
        len ((f^g)")=len (f^g) by Def3;
        then
A7:     dom ((f^g)")=dom (f^g) by FINSEQ_3:29;
        i in Seg len ((f^g)") by A4,A5;
        then
A8:     i in dom ((f^g)") by FINSEQ_1:def 3;
        then
A9:    ((f^g)") .i=(((f^g)"))/.i by PARTFUN1:def 6
          .= ((f^g)/.i)" by A7,A8,Def3;
A10:    len (g")=len g by Def3;
        now
          per cases;
          case
            i<=len f;
            then
A11:        i in Seg len f by A4;
            then
A12:        i in dom f by FINSEQ_1:def 3;
A13:        i in dom (f") by A6,A11,FINSEQ_1:def 3;
            (f^g)/.i=(f^g).i by A7,A8,PARTFUN1:def 6
              .=f.i by A12,FINSEQ_1:def 7
              .=f/.i by A12,PARTFUN1:def 6;
            then ((f^g)/.i)" =(f")/.i by A12,Def3
              .=(f").i by A13,PARTFUN1:def 6;
            hence thesis by A9,A13,FINSEQ_1:def 7;
          end;
          case
A14:        i>len f;
            then 1+len f<=i by NAT_1:13;
            then
A15:        1+len f -len f<=i-len f by XREAL_1:9;
A16:        i-'len f=i-len f by A14,XREAL_1:233;
            i-len f <= len g+len f -len f by A1,A5,XREAL_1:9;
            then
A17:        i-'len f in Seg len g by A16,A15;
            then
A18:        i-'len f in dom g by FINSEQ_1:def 3;
A19:        i-'len f in dom (g") by A10,A17,FINSEQ_1:def 3;
            (f^g)/.i=(f^g).i by A7,A8,PARTFUN1:def 6
              .=g.(i-len (f)) by A3,A5,A14,FINSEQ_1:24
              .=g/.(i-'len f) by A16,A18,PARTFUN1:def 6;
            then ((f^g)/.i)" =(g")/.(i-'len f) by A18,Def3
              .=(g").(i-len (f")) by A6,A16,A19,PARTFUN1:def 6;
            hence thesis by A1,A2,A5,A6,A9,A14,FINSEQ_1:24;
          end;
        end;
        hence thesis;
      end;
      case
        len f<=0;
        then f={};
        then ((f^g)")=g" & f"=<*>(the carrier of G) by Th20,FINSEQ_1:34;
        hence thesis by FINSEQ_1:34;
      end;
    end;
    hence thesis;
  end;
  hence thesis by A1,A2;
end;
