reserve x,y,X,Y for set,
  k,l,n for Nat,
  i,i1,i2,i3,j for Integer,
  G for Group,
  a,b,c,d for Element of G,
  A,B,C for Subset of G,
  H,H1,H2, H3 for Subgroup of G,
  h for Element of H,
  F,F1,F2 for FinSequence of the carrier of G,
  I,I1,I2 for FinSequence of INT;

theorem Th19:
  len F1 = len I1 & len F2 = len I2 implies (F1 ^ F2) |^ (I1 ^ I2)
  = (F1 |^ I1) ^ (F2 |^ I2)
proof
  assume that
A1: len F1 = len I1 and
A2: len F2 = len I2;
  set r = F2 |^ I2;
  set q = F1 |^ I1;
  len(F1 ^ F2) = len F1 + len F2 by FINSEQ_1:22
    .= len(I1 ^ I2) by A1,A2,FINSEQ_1:22;
  then
A3: dom (F1 ^ F2) = dom (I1 ^ I2) by FINSEQ_3:29;
A4: now
    let k;
    assume
A5: k in dom(F1 ^ F2);
    now
      per cases by A5,FINSEQ_1:25;
      suppose
A6:     k in dom F1;
        len q = len F1 by Def3;
        then k in dom q by A6,FINSEQ_3:29;
        then
A7:     (q ^ r).k = q.k by FINSEQ_1:def 7
          .= (F1/.k) |^ @(I1/.k) by A6,Def3;
A8:     (I1 ^ I2).k = (I1 ^ I2)/.k by A3,A5,PARTFUN1:def 6;
A9:     F1/.k = F1.k by A6,PARTFUN1:def 6
          .= (F1 ^ F2).k by A6,FINSEQ_1:def 7
          .= (F1 ^ F2)/.k by A5,PARTFUN1:def 6;
A10:    k in dom I1 by A1,A6,FINSEQ_3:29;
        then I1/.k = I1.k by PARTFUN1:def 6;
        hence (q ^ r).k = ((F1 ^ F2)/.k) |^ @((I1 ^ I2)/.k) by A10,A8,A7,A9,
FINSEQ_1:def 7;
      end;
      suppose
        ex n be Nat st n in dom F2 & k = len F1 + n;
        then consider n such that
A11:    n in dom F2 and
A12:    k = len F1 + n;
A13:    (F1 ^ F2).k = F2.n & F2.n = F2/.n by A11,A12,FINSEQ_1:def 7
,PARTFUN1:def 6;
A14:    len q = len F1 by Def3;
        len r = len F2 by Def3;
        then n in dom r by A11,FINSEQ_3:29;
        then
A15:    (q ^ r).k = r.n by A12,A14,FINSEQ_1:def 7;
A16:    (F1 ^ F2).k = (F1 ^ F2)/.k & (I1 ^ I2)/.k = (I1 ^ I2).k by A3,A5,
PARTFUN1:def 6;
A17:    n in dom I2 by A2,A11,FINSEQ_3:29;
        then
A18:    I2/.n = I2.n by PARTFUN1:def 6;
        (I1 ^ I2).k = I2.n by A1,A12,A17,FINSEQ_1:def 7;
        hence (q ^ r).k = ((F1 ^ F2)/.k) |^ @((I1 ^ I2)/.k) by A11,A15,A13,A16
,A18,Def3;
      end;
    end;
    hence (q ^ r).k = ((F1 ^ F2)/.k) |^ @((I1 ^ I2)/.k);
  end;
  len(q ^ r) = len q + len r by FINSEQ_1:22
    .= len F1 + len r by Def3
    .= len F1 + len F2 by Def3
    .= len(F1 ^ F2) by FINSEQ_1:22;
  hence thesis by A4,Def3;
end;
