reserve x,y for set;
reserve C,C9,D,D9,E for non empty set;
reserve c for Element of C;
reserve c9 for Element of C9;
reserve d,d1,d2,d3,d4,e for Element of D;
reserve d9 for Element of D9;
reserve i,j for natural Number;
reserve F for Function of [:D,D9:],E;
reserve p,q for FinSequence of D,
  p9,q9 for FinSequence of D9;
reserve f,f9 for Function of C,D,
  h for Function of D,E;
reserve T,T1,T2,T3 for Tuple of i,D;
reserve T9 for Tuple of i, D9;
reserve S for Tuple of j, D;
reserve S9 for Tuple of j, D9;

theorem Th12:
  F[;](d,p9^<*d9*>) = (F[;](d,p9))^<*F.(d,d9)*>
proof
  set pd = p9^<*d9*>, q = F[;](d,p9);
  set r = F[;](d,pd), s = q^<*F.(d,d9)*>;
  set i = len p9;
A1: len q = i by FINSEQ_2:78;
  len pd = i + 1 by FINSEQ_2:16;
  then
A2: len r = i + 1 by FINSEQ_2:78;
  then
A3: dom r = Seg(i+1) by FINSEQ_1:def 3;
A4: now
    let j be Nat;
    assume
A5: j in dom r;
    now
      per cases by A3,A5,FINSEQ_2:7;
      suppose
A6:     j in Seg i;
        then
A7:     j in dom q by A1,FINSEQ_1:def 3;
A8:     Seg len q = dom q by FINSEQ_1:def 3;
        Seg len p9 = dom p9 by FINSEQ_1:def 3;
        hence F.(d,pd.j) = F.(d,p9.j) by A6,FINSEQ_1:def 7
          .= q.j by A7,FUNCOP_1:32
          .= s.j by A1,A6,A8,FINSEQ_1:def 7;
      end;
      suppose
A9:     j = i+1;
        hence F.(d,pd.j) = F.(d,d9) by FINSEQ_1:42
          .= s.j by A1,A9,FINSEQ_1:42;
      end;
    end;
    hence r.j = s.j by A5,FUNCOP_1:32;
  end;
  len s = len q + 1 by FINSEQ_2:16;
  hence thesis by A1,A2,A4,FINSEQ_2:9;
end;
