reserve m,n for Nat,
  I for Program of SCM+FSA,
  s,s1,s2 for State of SCM+FSA,
  a for Int-Location,
  f for FinSeq-Location,
  p,p1,p2 for Instruction-Sequence of SCM+FSA;

theorem Th4:
  for J being InitHalting really-closed Program of SCM+FSA
   st Initialize ((intloc 0) .--> 1) c= s1 & J c= p1
  for n being Nat st
  Reloc(J,n) c= p2 &
   IC s2 = n & DataPart s1 = DataPart s2
  for i being Nat holds
   IC Comput(p1,s1,i) + n = IC Comput(p2,s2,i) &
   IncAddr(CurInstr(p1,Comput(p1,s1,i)),n) = CurInstr(p2,Comput(p2,s2,i)) &
   DataPart Comput(p1,s1,i) = DataPart Comput(p2,s2,i)
proof
  let J be InitHalting really-closed Program of SCM+FSA;
  assume that
A1: iS c= s1 and
A2: J c= p1;
  let n be Nat;
  assume that
A3: Reloc(J,n) c= p2 and
A4: IC s2 =  n and
A5: DataPart s1 = DataPart s2;
A6: DataPart Comput(p1,s1,0) = DataPart s2 by A5
    .= DataPart Comput(p2,s2,0);
  defpred P[Nat] means 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);
A7: for k being Nat st P[k] holds P[k + 1]
  proof
    let k be Nat;
A8: Comput(p1,s1,k+1) = Following(p1,Comput(p1,s1,k)) by EXTPRO_1:3
      .= Exec(CurInstr(p1,Comput(p1,s1,k)),
      Comput(p1,s1,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;
A9: Comput(p2,s2,k+1) = Following(p2,
Comput(p2,s2,k)) by EXTPRO_1:3
      .= Exec(CurInstr(p2,Comput(p2,s2,k)),
      Comput(p2,s2,k));
  IC s1 = 0 by A1,MEMSTR_0:47;
  then IC s1 in dom J by AFINSQ_1:65;
  then
A10: IC Comput(p1,s1,k+1) in dom J by A2,AMISTD_1:21;
    assume
A11: P[k];
    hence
 IC Comput(p1,s1,k+1) + n = IC Comput(p2,s2,k+1)
by A8,A9,SCMFSA6A:8;
    then
A12: IC Comput(p2,s2,k+1) in dom Reloc(J,n) by A10,COMPOS_1:46;
A13: l in dom J by A10;
    j = p1.IC Comput(p1,s1,k+1) by PBOOLE:143
      .= J.l by A10,A2,GRFUNC_1:2;
    hence IncAddr(CurInstr(p1,Comput(p1,s1,k+1)),n)
       = Reloc(J,n).(l + n) by A13,COMPOS_1:35
      .= (Reloc(J,n)).(IC Comput(p2,s2,k+1))
            by A11,A8,A9,SCMFSA6A:8
      .= p2.IC Comput(p2,s2,k+1) by A12,A3,GRFUNC_1:2
      .= CurInstr(p2,Comput(p2,s2,k+1)) by PBOOLE:143;
    thus thesis by A11,A8,A9,SCMFSA6A:8;
  end;
A14:  0 in dom J by AFINSQ_1:65;
A15:  0 in dom J by AFINSQ_1:65;
A16: IC SCM+FSA in dom iS by MEMSTR_0:48;
  then
A17: p1.IC s1 = p1.IC iS by A1,GRFUNC_1:2
    .= J. 0 by A15,A2,Lm1,GRFUNC_1:2;
  let i be Nat;
   0 in dom J by AFINSQ_1:65;
  then
A18:  (0 + n) in dom Reloc(J,n) by COMPOS_1:46;
A19: IC Comput(p1,s1,0) = s1.IC SCM+FSA
    .=  0 by Lm1,A1,A16,GRFUNC_1:2;
A20: p2/.IC s2 = p2.IC s2 by PBOOLE:143;
A21: p1/.IC s1 = p1.IC s1 by PBOOLE:143;
  IncAddr(CurInstr(p1,Comput(p1,s1,0)),n)
     = IncAddr(CurInstr(p1,s1),n)
    .= Reloc(J,n).( 0 + n) by A17,A14,A21,COMPOS_1:35
    .= CurInstr(p2,s2) by A4,A18,A20,A3,GRFUNC_1:2
    .= CurInstr(p2,Comput(p2,s2,0));
  then
A22: P[0] by A4,A19,A6;
  for k being Nat holds P[k] from NAT_1:sch 2(A22,A7);
  hence thesis;
end;
