reserve i,j,m,n,k for Nat,
  x,y for set,
  K for Field,
  a,a1,a2 for Element of K,
  D for non empty set,
  d,d1,d2 for Element of D,
  M,M1,M2 for (Matrix of D),
  A,A1,A2,B1,B2 for (Matrix of K),
  f,g for FinSequence of NAT;
reserve F,F1,F2 for FinSequence_of_Matrix of D,
  G,G9,G1,G2 for FinSequence_of_Matrix of K;
reserve S,S1,S2 for FinSequence_of_Square-Matrix of D,
  R,R1,R2 for FinSequence_of_Square-Matrix of K;
reserve N for (Matrix of n,K),
  N1 for (Matrix of m,K);
reserve p,p1 for FinSequence of K;

theorem Th74:
  len G = len G9 implies (G^G1)(#)(G9^G2) = (G(#)G9)^(G1(#)G2)
proof
  set GG9=G(#)G9;
  set G12=G1(#)G2;
  set GG1=G^G1;
  set GG2=G9^G2;
A1: len GG1=len G+len G1 by FINSEQ_1:22;
A2: dom GG9=dom G by Def11;
  then
A3: len GG9=len G by FINSEQ_3:29;
A4: dom (GG1(#)GG2)= dom GG1 by Def11;
  then
A5: len (GG1(#)GG2)=len GG1 by FINSEQ_3:29;
  assume
A6: len G=len G9;
  then
A7: len GG2=len G+len G2 by FINSEQ_1:22;
A8: len (GG9^G12)=len GG9+len G12 by FINSEQ_1:22;
A9: dom G12=dom G1 by Def11;
A10: dom G=dom G9 by A6,FINSEQ_3:29;
A11: now
    let i such that
A12: 1<=i and
A13: i<= len G+len G1;
A14: i in dom (GG1(#)GG2) by A4,A1,A12,A13,FINSEQ_3:25;
    then
A15: (GG1(#)GG2).i=GG1.i * GG2.i by Def11;
    now
      per cases by A4,A14,FINSEQ_1:25;
      suppose
A16:    i in dom G;
        hence (GG1(#)GG2).i = G.i* GG2.i by A15,FINSEQ_1:def 7
          .= G.i *G9.i by A10,A16,FINSEQ_1:def 7
          .= GG9.i by A2,A16,Def11
          .= (GG9^G12).i by A2,A16,FINSEQ_1:def 7;
      end;
      suppose
        ex n st n in dom G1 & i=len G + n;
        then consider n such that
A17:    n in dom G1 and
A18:    i=len G+n;
        now
          per cases;
          suppose
            n in dom G2;
            hence GG2.i=G2.n by A6,A18,FINSEQ_1:def 7;
          end;
          suppose
A19:        not n in dom G2;
            then n<1 or n>len G2 by FINSEQ_3:25;
            then i>len G+len G2 by A17,A18,FINSEQ_3:25,XREAL_1:8;
            then not i in dom GG2 by A7,FINSEQ_3:25;
            hence GG2.i = {} by FUNCT_1:def 2
              .= G2.n by A19,FUNCT_1:def 2;
          end;
        end;
        hence (GG1(#)GG2).i = G1.n*G2.n by A15,A17,A18,FINSEQ_1:def 7
          .= G12.n by A9,A17,Def11
          .= (GG9^G12).i by A9,A3,A17,A18,FINSEQ_1:def 7;
      end;
    end;
    hence (GG1(#)GG2).i=(GG9^G12).i;
  end;
  len G12=len G1 by A9,FINSEQ_3:29;
  hence thesis by A3,A5,A1,A8,A11;
end;
