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

theorem
  for s1,s2 being State of SCM+FSA,
      I being really-closed Program of SCM+FSA
   st s1.intloc 0 = 1 & I is_halting_on s1,P1 &
      DataPart s1 = DataPart s2
  holds DataPart IExec(I,P1,s1) = DataPart IExec(I,P2,s2)
proof
  let s1,s2 be State of SCM+FSA;
  set D = Data-Locations SCM+FSA;
  let I be really-closed Program of SCM+FSA;
  set s11 = Initialized s1, P11 = P1 +* I;
  set s21 = Initialized s2, P21 = P2 +* I;
A1: I c= P11 by FUNCT_4:25;
A2: I c= P21 by FUNCT_4:25;
  assume that
A3: s1.intloc 0 = 1 and
A4: I is_halting_on s1,P1 and
A5: DataPart s1 = DataPart s2;
A6: s11 = Initialize s1 by A3,SCMFSA_M:18;
  then
A7: DataPart s11 = DataPart s1 by MEMSTR_0:79;
  s2.intloc 0 = 1 by A3,A5,SCMFSA_M:2;
  then s21 = Initialize s2 by SCMFSA_M:18;
  then
A8: DataPart s11 = DataPart s21 by A5,A7,MEMSTR_0:79;
A9: P11 halts_on s11 by A4,A6;
  then CurInstr(P11,
  Comput(P11,s11,LifeSpan(P11,s11)))
  = halt SCM+FSA by EXTPRO_1:def 15;
  then CurInstr(P21,
  Comput(P21,s21,LifeSpan(P11,s11)))
   = halt SCM+FSA by A8,Th9,A1,A2;
  then
A10: P21 halts_on s21 by EXTPRO_1:29;
  I is_halting_on s11,P11 by A4,A7,SCMFSA8B:5;
  then
A11: LifeSpan(P11,s11) = LifeSpan(P21,s21) by A8,Th10,A1,A2;
  thus DataPart IExec(I,P1,s1) = DataPart Result(P11,s11)
    .= DataPart Comput(P11, s11,LifeSpan(P11,s11)) by A9,EXTPRO_1:23
    .= DataPart Comput(P21, s21,LifeSpan(P11,s11)) by A8,Th9,A1,A2
    .= DataPart Result(P21,s21) by A11,A10,EXTPRO_1:23
    .= DataPart IExec(I,P2,s2);
end;
