reserve D for non empty set;
reserve s for FinSequence of D;
reserve m,n for Element of NAT;

theorem Th18:
  for n,m be Nat st n+m <= len s holds
  (s|n)^((s/^n)|m) = s|(n+m)
  proof
    let n,m be Nat;
    assume A1: n+m <= len s;
    set f0=s/^n;
    A2:(s|n)^f0 =s by RFINSEQ:8;
    set f1=f0|m;
    set f2=f0/^m;
    set f3=(s|n)^((s/^n)|m);
    A3: (s|n)^(f1^f2) =s by A2,RFINSEQ:8;
    n <= n+m by NAT_1:11;then
    n <= len s by A1,XXREAL_0:2;
    then A4: len (s|n)= n &
    len f0= len s -n by FINSEQ_1:59,RFINSEQ:def 1;
    then n+m <= n + len f0 by A1;
    then len f1 = m by FINSEQ_1:59,XREAL_1:6;
    then len f3= n+m by A4,FINSEQ_1:22;
    then dom f3 = Seg (n+m) by FINSEQ_1:def 3;
    hence f3=(f3^f2)|(Seg (n+m)) by FINSEQ_1:21
    .=s|(n+m) by A3,FINSEQ_1:32;
  end;
