let s1, s2 be State of SCM+FSA; for I being Program of SCM+FSA
for a being Int-Location st ( for d being read-write Int-Location st a <> d holds
s1 . d = s2 . d ) & ( for f being FinSeq-Location holds s1 . f = s2 . f ) & not I refers a & I is_closed_on Initialized s1 & I is_halting_on Initialized s1 holds
( ( for d being Int-Location st a <> d holds
(IExec (I,s1)) . d = (IExec (I,s2)) . d ) & ( for f being FinSeq-Location holds (IExec (I,s1)) . f = (IExec (I,s2)) . f ) & IC (IExec (I,s1)) = IC (IExec (I,s2)) )
let I be Program of SCM+FSA; for a being Int-Location st ( for d being read-write Int-Location st a <> d holds
s1 . d = s2 . d ) & ( for f being FinSeq-Location holds s1 . f = s2 . f ) & not I refers a & I is_closed_on Initialized s1 & I is_halting_on Initialized s1 holds
( ( for d being Int-Location st a <> d holds
(IExec (I,s1)) . d = (IExec (I,s2)) . d ) & ( for f being FinSeq-Location holds (IExec (I,s1)) . f = (IExec (I,s2)) . f ) & IC (IExec (I,s1)) = IC (IExec (I,s2)) )
let a be Int-Location ; ( ( for d being read-write Int-Location st a <> d holds
s1 . d = s2 . d ) & ( for f being FinSeq-Location holds s1 . f = s2 . f ) & not I refers a & I is_closed_on Initialized s1 & I is_halting_on Initialized s1 implies ( ( for d being Int-Location st a <> d holds
(IExec (I,s1)) . d = (IExec (I,s2)) . d ) & ( for f being FinSeq-Location holds (IExec (I,s1)) . f = (IExec (I,s2)) . f ) & IC (IExec (I,s1)) = IC (IExec (I,s2)) ) )
assume that
A1:
for d being read-write Int-Location st a <> d holds
s1 . d = s2 . d
and
A2:
for f being FinSeq-Location holds s1 . f = s2 . f
; ( I refers a or not I is_closed_on Initialized s1 or not I is_halting_on Initialized s1 or ( ( for d being Int-Location st a <> d holds
(IExec (I,s1)) . d = (IExec (I,s2)) . d ) & ( for f being FinSeq-Location holds (IExec (I,s1)) . f = (IExec (I,s2)) . f ) & IC (IExec (I,s1)) = IC (IExec (I,s2)) ) )
set S1 = s1 +* (Initialized I);
set S2 = s2 +* (Initialized I);
assume A7:
not I refers a
; ( not I is_closed_on Initialized s1 or not I is_halting_on Initialized s1 or ( ( for d being Int-Location st a <> d holds
(IExec (I,s1)) . d = (IExec (I,s2)) . d ) & ( for f being FinSeq-Location holds (IExec (I,s1)) . f = (IExec (I,s2)) . f ) & IC (IExec (I,s1)) = IC (IExec (I,s2)) ) )
A8:
s2 +* (Initialized I) = (Initialized s2) +* (I +* (Start-At (0,SCM+FSA)))
by SCMFSA8A:13;
assume that
A9:
I is_closed_on Initialized s1
and
A10:
I is_halting_on Initialized s1
; ( ( for d being Int-Location st a <> d holds
(IExec (I,s1)) . d = (IExec (I,s2)) . d ) & ( for f being FinSeq-Location holds (IExec (I,s1)) . f = (IExec (I,s2)) . f ) & IC (IExec (I,s1)) = IC (IExec (I,s2)) )
then
I is_halting_on Initialized s2
by A7, A9, A10, A3, Th40;
then A12:
ProgramPart (s2 +* (Initialized I)) halts_on s2 +* (Initialized I)
by A8, SCMFSA7B:def 8;
A13:
s1 +* (Initialized I) = (Initialized s1) +* (I +* (Start-At (0,SCM+FSA)))
by SCMFSA8A:13;
then A14:
ProgramPart (s1 +* (Initialized I)) halts_on s1 +* (Initialized I)
by A10, SCMFSA7B:def 8;
now let l be
Element of
NAT ;
( l < LifeSpan ((ProgramPart (s1 +* (Initialized I))),(s1 +* (Initialized I))) implies CurInstr ((ProgramPart (s2 +* (Initialized I))),(Comput ((ProgramPart (s2 +* (Initialized I))),(s2 +* (Initialized I)),l))) <> halt SCM+FSA )TX1:
ProgramPart (s1 +* (Initialized I)) = ProgramPart (Comput ((ProgramPart (s1 +* (Initialized I))),(s1 +* (Initialized I)),l))
by AMI_1:123;
TX2:
ProgramPart (s2 +* (Initialized I)) = ProgramPart (Comput ((ProgramPart (s2 +* (Initialized I))),(s2 +* (Initialized I)),l))
by AMI_1:123;
assume
l < LifeSpan (
(ProgramPart (s1 +* (Initialized I))),
(s1 +* (Initialized I)))
;
CurInstr ((ProgramPart (s2 +* (Initialized I))),(Comput ((ProgramPart (s2 +* (Initialized I))),(s2 +* (Initialized I)),l))) <> halt SCM+FSAthen
CurInstr (
(ProgramPart (s1 +* (Initialized I))),
(Comput ((ProgramPart (s1 +* (Initialized I))),(s1 +* (Initialized I)),l)))
<> halt SCM+FSA
by A14, EXTPRO_1:def 14;
hence
CurInstr (
(ProgramPart (s2 +* (Initialized I))),
(Comput ((ProgramPart (s2 +* (Initialized I))),(s2 +* (Initialized I)),l)))
<> halt SCM+FSA
by A7, A9, A3, A11, A13, A8, Th38, TX1, TX2;
verum end;
then A15:
for l being Element of NAT st CurInstr ((ProgramPart (s2 +* (Initialized I))),(Comput ((ProgramPart (s2 +* (Initialized I))),(s2 +* (Initialized I)),l))) = halt SCM+FSA holds
LifeSpan ((ProgramPart (s1 +* (Initialized I))),(s1 +* (Initialized I))) <= l
;
TX1:
ProgramPart (s1 +* (Initialized I)) = ProgramPart (Comput ((ProgramPart (s1 +* (Initialized I))),(s1 +* (Initialized I)),(LifeSpan ((ProgramPart (s1 +* (Initialized I))),(s1 +* (Initialized I))))))
by AMI_1:123;
TX2:
ProgramPart (s2 +* (Initialized I)) = ProgramPart (Comput ((ProgramPart (s2 +* (Initialized I))),(s2 +* (Initialized I)),(LifeSpan ((ProgramPart (s1 +* (Initialized I))),(s1 +* (Initialized I))))))
by AMI_1:123;
CurInstr ((ProgramPart (s2 +* (Initialized I))),(Comput ((ProgramPart (s2 +* (Initialized I))),(s2 +* (Initialized I)),(LifeSpan ((ProgramPart (s1 +* (Initialized I))),(s1 +* (Initialized I))))))) =
CurInstr ((ProgramPart (s1 +* (Initialized I))),(Comput ((ProgramPart (s1 +* (Initialized I))),(s1 +* (Initialized I)),(LifeSpan ((ProgramPart (s1 +* (Initialized I))),(s1 +* (Initialized I)))))))
by A7, A9, A3, A11, A13, A8, Th38, TX1, TX2
.=
halt SCM+FSA
by A14, EXTPRO_1:def 14
;
then A16:
LifeSpan ((ProgramPart (s1 +* (Initialized I))),(s1 +* (Initialized I))) = LifeSpan ((ProgramPart (s2 +* (Initialized I))),(s2 +* (Initialized I)))
by A12, A15, EXTPRO_1:def 14;
then A17:
Result ((ProgramPart (s2 +* (Initialized I))),(s2 +* (Initialized I))) = Comput ((ProgramPart (s2 +* (Initialized I))),(s2 +* (Initialized I)),(LifeSpan ((ProgramPart (s1 +* (Initialized I))),(s1 +* (Initialized I)))))
by A12, EXTPRO_1:23;
A18:
Result ((ProgramPart (s1 +* (Initialized I))),(s1 +* (Initialized I))) = Comput ((ProgramPart (s1 +* (Initialized I))),(s1 +* (Initialized I)),(LifeSpan ((ProgramPart (s1 +* (Initialized I))),(s1 +* (Initialized I)))))
by A14, EXTPRO_1:23;
hereby ( ( for f being FinSeq-Location holds (IExec (I,s1)) . f = (IExec (I,s2)) . f ) & IC (IExec (I,s1)) = IC (IExec (I,s2)) )
let d be
Int-Location ;
( a <> d implies (IExec (I,s1)) . d = (IExec (I,s2)) . d )assume A19:
a <> d
;
(IExec (I,s1)) . d = (IExec (I,s2)) . dthus (IExec (I,s1)) . d =
(Result ((ProgramPart (s1 +* (Initialized I))),(s1 +* (Initialized I)))) . d
by Th36, SCMFSA10:92
.=
(Result ((ProgramPart (s2 +* (Initialized I))),(s2 +* (Initialized I)))) . d
by A7, A9, A3, A11, A13, A8, A17, A18, A19, Th38
.=
(IExec (I,s2)) . d
by Th36, SCMFSA10:92
;
verum
end;
hereby IC (IExec (I,s1)) = IC (IExec (I,s2))
let f be
FinSeq-Location ;
(IExec (I,s1)) . f = (IExec (I,s2)) . fthus (IExec (I,s1)) . f =
(Result ((ProgramPart (s1 +* (Initialized I))),(s1 +* (Initialized I)))) . f
by Th36, SCMFSA10:93
.=
(Result ((ProgramPart (s2 +* (Initialized I))),(s2 +* (Initialized I)))) . f
by A7, A9, A3, A11, A13, A8, A17, A18, Th38
.=
(IExec (I,s2)) . f
by Th36, SCMFSA10:93
;
verum
end;
thus IC (IExec (I,s1)) =
IC (Result ((ProgramPart (s1 +* (Initialized I))),(s1 +* (Initialized I))))
by SCMFSA8A:7
.=
IC (Comput ((ProgramPart (s1 +* (Initialized I))),(s1 +* (Initialized I)),(LifeSpan ((ProgramPart (s1 +* (Initialized I))),(s1 +* (Initialized I))))))
by A14, EXTPRO_1:23
.=
IC (Comput ((ProgramPart (s2 +* (Initialized I))),(s2 +* (Initialized I)),(LifeSpan ((ProgramPart (s2 +* (Initialized I))),(s2 +* (Initialized I))))))
by A7, A9, A3, A11, A13, A8, A16, Th38
.=
IC (Result ((ProgramPart (s2 +* (Initialized I))),(s2 +* (Initialized I))))
by A12, EXTPRO_1:23
.=
IC (IExec (I,s2))
by SCMFSA8A:7
; verum