let s1, s2 be State of SCM+FSA ; for I being Program of SCM+FSA st I is_closed_on s1 & I +* (Start-At 0 ,SCM+FSA ) c= s1 & I +* (Start-At 0 ,SCM+FSA ) c= s2 & DataPart s1 = DataPart s2 holds
for i being Element of NAT holds
( IC (Comput (ProgramPart s1),s1,i) = IC (Comput (ProgramPart s2),s2,i) & CurInstr (ProgramPart (Comput (ProgramPart s1),s1,i)),(Comput (ProgramPart s1),s1,i) = CurInstr (ProgramPart (Comput (ProgramPart s2),s2,i)),(Comput (ProgramPart s2),s2,i) & DataPart (Comput (ProgramPart s1),s1,i) = DataPart (Comput (ProgramPart s2),s2,i) )
let J be Program of SCM+FSA ; ( J is_closed_on s1 & J +* (Start-At 0 ,SCM+FSA ) c= s1 & J +* (Start-At 0 ,SCM+FSA ) c= s2 & DataPart s1 = DataPart s2 implies for i being Element of NAT holds
( IC (Comput (ProgramPart s1),s1,i) = IC (Comput (ProgramPart s2),s2,i) & CurInstr (ProgramPart (Comput (ProgramPart s1),s1,i)),(Comput (ProgramPart s1),s1,i) = CurInstr (ProgramPart (Comput (ProgramPart s2),s2,i)),(Comput (ProgramPart s2),s2,i) & DataPart (Comput (ProgramPart s1),s1,i) = DataPart (Comput (ProgramPart s2),s2,i) ) )
assume that
A1:
J is_closed_on s1
and
A2:
J +* (Start-At 0 ,SCM+FSA ) c= s1
and
A3:
J +* (Start-At 0 ,SCM+FSA ) c= s2
and
A4:
DataPart s1 = DataPart s2
; for i being Element of NAT holds
( IC (Comput (ProgramPart s1),s1,i) = IC (Comput (ProgramPart s2),s2,i) & CurInstr (ProgramPart (Comput (ProgramPart s1),s1,i)),(Comput (ProgramPart s1),s1,i) = CurInstr (ProgramPart (Comput (ProgramPart s2),s2,i)),(Comput (ProgramPart s2),s2,i) & DataPart (Comput (ProgramPart s1),s1,i) = DataPart (Comput (ProgramPart s2),s2,i) )
A5:
ProgramPart (Relocated J,0 ) = J
by Th9;
s2 =
s2 +* (J +* (Start-At 0 ,SCM+FSA ))
by A3, FUNCT_4:79
.=
(s2 +* J) +* (Start-At 0 ,SCM+FSA )
by FUNCT_4:15
.=
(s2 +* (Start-At 0 ,SCM+FSA )) +* J
by SCMFSA6B:14
;
then A6:
ProgramPart (Relocated J,0 ) c= s2
by A5, FUNCT_4:26;
let i be Element of NAT ; ( IC (Comput (ProgramPart s1),s1,i) = IC (Comput (ProgramPart s2),s2,i) & CurInstr (ProgramPart (Comput (ProgramPart s1),s1,i)),(Comput (ProgramPart s1),s1,i) = CurInstr (ProgramPart (Comput (ProgramPart s2),s2,i)),(Comput (ProgramPart s2),s2,i) & DataPart (Comput (ProgramPart s1),s1,i) = DataPart (Comput (ProgramPart s2),s2,i) )
A7:
(IC (Comput (ProgramPart s1),s1,i)) + 0 = IC (Comput (ProgramPart s1),s1,i)
;
A8: IC s2 =
IC (s2 +* (J +* (Start-At 0 ,SCM+FSA )))
by A3, FUNCT_4:79
.=
IC ((s2 +* J) +* (Start-At 0 ,SCM+FSA ))
by FUNCT_4:15
.=
0
by AMI_1:111
;
IncAddr (CurInstr (ProgramPart (Comput (ProgramPart s1),s1,i)),(Comput (ProgramPart s1),s1,i)),0 = CurInstr (ProgramPart (Comput (ProgramPart s1),s1,i)),(Comput (ProgramPart s1),s1,i)
by Th8;
hence
( IC (Comput (ProgramPart s1),s1,i) = IC (Comput (ProgramPart s2),s2,i) & CurInstr (ProgramPart (Comput (ProgramPart s1),s1,i)),(Comput (ProgramPart s1),s1,i) = CurInstr (ProgramPart (Comput (ProgramPart s2),s2,i)),(Comput (ProgramPart s2),s2,i) & DataPart (Comput (ProgramPart s1),s1,i) = DataPart (Comput (ProgramPart s2),s2,i) )
by A1, A2, A4, A7, A6, A8, Th42; verum