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 Th18:
  for f,g be FinSequence holds
    Swap(f^g,a,b) = Swap(f,a,b)^Swap(g,a,b)
proof
  let f,g be FinSequence;
  set Sf=Swap(f,a,b),Sg=Swap(g,a,b),Sfg=Swap(f^g,a,b);
A1: len Sf = len f & len Sg=len g & len Sfg = len (f^g) by CARD_1:def 7;
A2: len (Sf^Sg) = len Sf + len Sg & len (f^g)=len f+len g by FINSEQ_1:22;
  for k st 1 <= k & k <= len Sfg holds Sfg.k = (Sf^Sg).k
  proof
    let k such that
A3:   1 <= k & k <= len Sfg;
A4:   k in dom (f^g) by A3,A1,FINSEQ_3:25; then
    per cases by 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 Sf by A5,Def4;
      then
A8:     (Sf^Sg).k = Sf.k by FINSEQ_1:def 7;
      per cases;
      suppose
A9:       a in f.k;
        hence (Sf^Sg).k = ((f.k)\{a}) \/ {b} by A8,A5,Def4
        .= Sfg.k by A6,A9,A7,A5,Def4;
      end;
      suppose
A10:    not a in f.k;
        hence (Sf^Sg).k = (f.k) \/ {a} by A8,A5,Def4
        .= Sfg.k by A6,A10,A7,A5,Def4;
      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 Sg by A11,Def4;
      then
A13:    (Sf^Sg).k = Sg.n by A11,A1,FINSEQ_1:def 7;
      per cases;
      suppose
A14:      a in g.n;
        hence (Sf^Sg).k = ((g.n)\{a}) \/ {b} by A13,A11,Def4
        .= Sfg.k by A12,A14,A4,Def4;
      end;
      suppose
A15:    not a in g.n;
        hence (Sf^Sg).k = (g.n) \/ {a} by A13,A11,Def4
        .= Sfg.k by A12,A15,A4,Def4;
      end;
    end;
  end;
  hence thesis by A2,A1;
end;
