reserve i,j,n,k,m for Nat,
     a,b,x,y,z for object,
     F,G for FinSequence-yielding FinSequence,
     f,g,p,q for FinSequence,
     X,Y for set,
     D for non empty set;

theorem Th19:
  for f,g be FinSequence holds
    Ext(f^g,a,b) = Ext(f,a,b)^Ext(g,a,b)
proof
  let f,g be FinSequence;
  set Ef=Ext(f,a,b),Eg=Ext(g,a,b),Efg=Ext(f^g,a,b);
A1: len Ef = len f & len Eg=len g & len Efg = len (f^g) by CARD_1:def 7;
A2: len (Ef^Eg) = len Ef + len Eg & len (f^g)=len f+len g by FINSEQ_1:22;
  for k st 1 <= k & k <= len Efg holds Efg.k = (Ef^Eg).k
  proof
    let k such that
A3:  1 <= k & k <= len Efg;
A4:  k in dom (f^g) by A3,A1,FINSEQ_3:25;
    per cases by A4,FINSEQ_1:25;
    suppose
A5:     k in dom f;
      then
A6:     f.k = (f^g).k by FINSEQ_1:def 7;
A7:     dom f c= dom (f^g) by FINSEQ_1:26;
      k in dom Ef by A5,Def5;
      then
A8:     (Ef^Eg).k = Ef.k by FINSEQ_1:def 7;
      per cases;
      suppose
A9:       a in f.k;
        hence (Ef^Eg).k = (f.k)\/ {b} by A8,A5,Def5
        .= Efg.k by A6,A9,A7,A5,Def5;
      end;
      suppose
A10:      not a in f.k;
        hence (Ef^Eg).k = f.k by A8,A5,Def5
        .= Efg.k by A6,A10,A7,A5,Def5;
      end;
    end;
    suppose ex n st n in dom g & k = len f+n;
      then consider n such that
A11:    n in dom g & k = len f+n;
A12:    g.n = (f^g).k by A11,FINSEQ_1:def 7;
      n in dom Eg by A11,Def5;
      then
A13:    (Ef^Eg).k = Eg.n by A11,A1,FINSEQ_1:def 7;
      per cases;
      suppose
A14:      a in g.n;
        hence (Ef^Eg).k = (g.n) \/ {b} by A13,A11,Def5
        .= Efg.k by A12,A14,A4,Def5;
      end;
      suppose
A15:      not a in g.n;
        hence (Ef^Eg).k = (g.n) by A13,A11,Def5
        .= Efg.k by A12,A15,A4,Def5;
      end;
    end;
  end;
  hence thesis by A2,A1;
end;
