reserve x,y,z for set;
reserve f,f1,f2,f3 for FinSequence,
  p,p1,p2,p3 for set,
  i,k for Nat;

theorem Th8:
  p in rng f1 implies (f1^f2)|--p = (f1|--p)^f2
proof
  assume
A1: p in rng f1;
  then
A2: p..f1 = p..(f1^f2) by Th6;
A3: len(f1|--p) = len f1 - p..f1 by A1,FINSEQ_4:def 6;
A4: now
    let k;
    assume
A5: k in dom((f1|--p)^f2);
    per cases by A5,FINSEQ_1:25;
    suppose
A6:   k in dom(f1|--p);
      len(f1|--p) = len f1 - p..f1 by A1,FINSEQ_4:def 6;
      then
A7:   len(f1|--p) + p..f1 = len f1;
      k <= len(f1|--p) by A6,FINSEQ_3:25;
      then
A8:   k + p..f1 <= len f1 by A7,XREAL_1:6;
A9:   k <= k + p..f1 by NAT_1:11;
      1 <= k by A6,FINSEQ_3:25;
      then 1 <= k + p..f1 by A9,XXREAL_0:2;
      then
A10:  k + p..f1 in dom f1 by A8,FINSEQ_3:25;
      thus ((f1|--p)^f2).k = (f1|--p).k by A6,FINSEQ_1:def 7
        .= f1.(k + p..f1) by A1,A6,FINSEQ_4:def 6
        .= (f1^f2).(k + p..(f1^f2)) by A2,A10,FINSEQ_1:def 7;
    end;
    suppose
      ex n being Nat st n in dom f2 & k = len(f1|--p) + n;
      then consider n being Nat such that
A11:  n in dom f2 and
A12:  k = len(f1|--p) + n;
      thus ((f1|--p)^f2).k = f2.n by A11,A12,FINSEQ_1:def 7
        .= (f1^f2).(len f1 + n) by A11,FINSEQ_1:def 7
        .= (f1^f2).(k + p..(f1^f2)) by A2,A3,A12;
    end;
  end;
  rng(f1^f2) = rng f1 \/ rng f2 by FINSEQ_1:31;
  then
A13: p in rng(f1^f2) by A1,XBOOLE_0:def 3;
  len((f1|--p)^f2) = len f1 - p..f1 + len f2 by A3,FINSEQ_1:22
    .= len f1 + len f2 - p..f1
    .= len(f1^f2) - p..(f1^f2) by A2,FINSEQ_1:22;
  hence thesis by A13,A4,FINSEQ_4:def 6;
end;
