reserve m for Nat;
reserve P,PP,P1,P2 for Instruction-Sequence of SCM+FSA;

theorem Th14:
  for s1 being 0-started State of SCM+FSA,
      s2 being State of SCM+FSA, I being Program of SCM+FSA st
   I c= P1 & I is_pseudo-closed_on s1,P1
   for n being Nat st Reloc(I,n) c= P2 &
    IC s2 =  n & DataPart s1 =
  DataPart s2 holds ((for i being Nat
   st i < pseudo-LifeSpan(s1,P1,I)
  holds IncAddr(CurInstr(P1,Comput(P1,s1,i)),n)
   = CurInstr(P2,Comput(P2,s2,i))) &
for i being Nat st i <= pseudo-LifeSpan(s1,P1,I)
holds IC Comput(P1, s1,i) + n = IC Comput(P2, s2,i) &
  DataPart Comput(P1, s1,i) = DataPart Comput(P2, s2,i))
proof
  let s1 be 0-started State of SCM+FSA,
      s2 be State of SCM+FSA;
  let I be Program of SCM+FSA;
A1: Start-At(0,SCM+FSA) c= s1 by MEMSTR_0:29;
  assume
A2: I c= P1;
   then
A3: P1 = P1 +* I by FUNCT_4:98;
  assume
A4: I is_pseudo-closed_on s1,P1;
  let n be Nat;
  assume
A5: Reloc(I,n) c= P2;
  defpred P[Nat] means $1 <= pseudo-LifeSpan(s1,P1,I) implies
   IC Comput(P1,s1,$1) + n = IC Comput(P2,s2,$1) &
   DataPart Comput(P1,s1,$1) = DataPart Comput(P2,s2,$1);
  assume
A6: IC s2 =  n;
  assume
A7: DataPart s1 = DataPart s2;
  thus
A8: now
    defpred P[Nat] means $1 < pseudo-LifeSpan(s1,P1,I) implies
       IC Comput(P1,s1,$1) + n = IC Comput(P2,s2,$1) &
       IncAddr(CurInstr(P1,Comput(P1,s1,$1)),n)
        = CurInstr(P2,Comput(P2,s2,$1)) &
       DataPart Comput(P1,s1,$1) = DataPart Comput(P2,s2,$1);
    let i be Nat;
    assume
A9: i < pseudo-LifeSpan(s1,P1,I);
A10: for k being Nat st P[k] holds P[k + 1]
    proof
      let k be Nat;
      assume
A11:  P[k];
      reconsider l = IC Comput(P1,s1,k+1) as Element of NAT;
      reconsider j = CurInstr(P1,Comput(P1,s1,k+1)) as Instruction of SCM+FSA;
      assume
A12:  k + 1 < pseudo-LifeSpan(s1,P1,I);
A13:  Comput(P1,s1,k+1) = Following(P1,Comput(P1,s1,k)) by EXTPRO_1:3;
A14:   Initialize s1 = s1 by A1,FUNCT_4:98;
      then
A15:  IC Comput(P1,s1,k+1) in dom I by A4,A12,A3,SCMFSA8A:def 4;
A16:  l in dom I by A14,A4,A12,A3,SCMFSA8A:def 4;
A17:  Comput(P2,s2,k+1) = Following(P2,Comput(P2,s2,k)) by EXTPRO_1:3;
A18:  k + 0 < k + 1 by XREAL_1:6;
      hence
A19:  IC Comput(P1,s1,k+1) + n = IC Comput(P2,s2,k+1)
by A11,A12,A13,A17,SCMFSA6A:8,XXREAL_0:2;
      then
A20:  IC Comput(P2,s2,k+1) in dom Reloc(I,n) by A15,COMPOS_1:46;
      j = P1.IC Comput(P1,s1,k+1) by PBOOLE:143
        .= I.l by A15,A2,GRFUNC_1:2;
      hence
      IncAddr(CurInstr(P1,Comput(P1,s1,k+1)),n)
         = Reloc(I,n).(l + n) by A16,COMPOS_1:35
        .= P2.IC Comput(P2,s2,k+1) by A20,A19,A5,GRFUNC_1:2
        .= CurInstr(P2,Comput(P2,s2,k+1)) by PBOOLE:143;
      thus thesis by A11,A12,A18,A13,A17,SCMFSA6A:8,XXREAL_0:2;
    end;
A21: P[0]
    proof
A22:   IC SCM+FSA in dom Start-At(0,SCM+FSA) by MEMSTR_0:15;
A23:  IC Comput(P1 +* I, (Initialize s1),0) =
      IC (Initialize s1)
        .= IC Start-At(0,SCM+FSA) by A22,FUNCT_4:13
        .=  0 by FUNCOP_1:72;
      assume 0 < pseudo-LifeSpan(s1,P1,I);
      then
A24:   0 in dom I by A4,A23,SCMFSA8A:def 4;
A25:  IC SCM+FSA in dom Start-At(0,SCM+FSA) by MEMSTR_0:15;
      IC Comput(P1,s1,0) = s1.IC SCM+FSA
        .= IC Start-At(0,SCM+FSA) by A1,A25,GRFUNC_1:2
        .=  0 by FUNCOP_1:72;
      hence IC Comput(P1,s1,0) + n = IC Comput(P2,s2,0) by A6;
A26:   (0 + n) in dom Reloc(I,n) by A24,COMPOS_1:46;
A27:  P1.IC s1 = P1.IC Start-At(0,SCM+FSA) by A1,A25,GRFUNC_1:2
        .= P1. 0 by FUNCOP_1:72
        .= I. 0 by A24,A2,GRFUNC_1:2;
A28:  P1/.IC s1 = P1.IC s1 by PBOOLE:143;
A29:  P2/.IC s2 = P2.IC s2 by PBOOLE:143;
      thus IncAddr(CurInstr(P1,
      Comput(P1,s1,0)),n)
        = Reloc(I,n). (0 + n) by A24,A28,A27,COMPOS_1:35
        .= CurInstr(P2,Comput(P2,s2,0))
         by A6,A26,A29,A5,GRFUNC_1:2;
      thus DataPart Comput(P1,s1,0) = DataPart s2 by A7
        .= DataPart Comput(P2,s2,0);
    end;
    for k being Nat holds P[k] from NAT_1:sch 2(A21,A10);
    hence IncAddr(CurInstr(P1,Comput(P1,s1,i)),n)
     = CurInstr(P2,Comput(P2,s2,i)) by A9;
  end;
A30: for k being Nat st P[k] holds P[k + 1]
  proof
    let k be Nat;
    assume
A31: P[k];
    set i = CurInstr(P1,Comput(P1,s1,k));
A32: Comput(P2,s2,k+1) = Following(P2,Comput(P2,s2,k)) by EXTPRO_1:3;
    assume
A33: k + 1 <= pseudo-LifeSpan(s1,P1,I);
    then
A34: k + 1 <= pseudo-LifeSpan(s1,P1,I) + 1 by NAT_1:12;
A35: k < pseudo-LifeSpan(s1,P1,I) by A33,NAT_1:13;
A36: Comput(P1,s1,k+1) = Following(P1,Comput(P1,s1,k)) by EXTPRO_1:3;
    hence IC Comput(P1,s1,k+1) + n
       = IC Exec(IncAddr(i,n),Comput(P2,s2,k))
    by A31,A34,SCMFSA6A:8,XREAL_1:6
      .= IC Comput(P2,s2,k+1) by A8,A35,A32;
    thus DataPart Comput(P1,s1,k+1) = DataPart Exec(IncAddr(i,n),
Comput(P2,s2,k)) by A31,A34,A36,SCMFSA6A:8,XREAL_1:6
      .= DataPart Comput(P2,s2,k+1) by A8,A35,A32;
  end;
  let i be Nat;
  assume
A37: i <= pseudo-LifeSpan(s1,P1,I);
A38: P[0]
  proof
    assume 0 <= pseudo-LifeSpan(s1,P1,I);
A39: IC SCM+FSA in dom Start-At(0,SCM+FSA) by MEMSTR_0:15;
    IC Comput(P1,s1,0) = s1.IC SCM+FSA
      .= IC Start-At(0,SCM+FSA) by A1,A39,GRFUNC_1:2
      .=  0 by FUNCOP_1:72;
    hence IC Comput(P1,s1,0) + n = IC Comput(P2,s2,0)
by A6;
    thus DataPart Comput(P1,s1,0) = DataPart s2 by A7
      .= DataPart Comput(P2,s2,0);
  end;
  for k being Nat holds P[k] from NAT_1:sch 2(A38,A30);
  hence thesis by A37;
end;
