let s1, s2 be State of SCM+FSA ; for I being Program of SCM+FSA
for a being Int-Location st not I refersrefer a & ( for b being Int-Location st a <> b holds
s1 . b = s2 . b ) & ( for f being FinSeq-Location holds s1 . f = s2 . f ) & I is_closed_on s1 & I is_halting_on s1 holds
( I is_closed_on s2 & I is_halting_on s2 )
let I be Program of SCM+FSA ; for a being Int-Location st not I refersrefer a & ( for b being Int-Location st a <> b holds
s1 . b = s2 . b ) & ( for f being FinSeq-Location holds s1 . f = s2 . f ) & I is_closed_on s1 & I is_halting_on s1 holds
( I is_closed_on s2 & I is_halting_on s2 )
let a be Int-Location ; ( not I refersrefer a & ( for b being Int-Location st a <> b holds
s1 . b = s2 . b ) & ( for f being FinSeq-Location holds s1 . f = s2 . f ) & I is_closed_on s1 & I is_halting_on s1 implies ( I is_closed_on s2 & I is_halting_on s2 ) )
assume A1:
not I refersrefer a
; ( ex b being Int-Location st
( a <> b & not s1 . b = s2 . b ) or ex f being FinSeq-Location st not s1 . f = s2 . f or not I is_closed_on s1 or not I is_halting_on s1 or ( I is_closed_on s2 & I is_halting_on s2 ) )
set S2 = s2 +* (I +* (Start-At 0 ,SCM+FSA ));
set S1 = s1 +* (I +* (Start-At 0 ,SCM+FSA ));
assume A2:
for b being Int-Location st a <> b holds
s1 . b = s2 . b
; ( ex f being FinSeq-Location st not s1 . f = s2 . f or not I is_closed_on s1 or not I is_halting_on s1 or ( I is_closed_on s2 & I is_halting_on s2 ) )
A3:
now let b be
Int-Location ;
( a <> b implies (s1 +* (I +* (Start-At 0 ,SCM+FSA ))) . b = (s2 +* (I +* (Start-At 0 ,SCM+FSA ))) . b )assume A4:
a <> b
;
(s1 +* (I +* (Start-At 0 ,SCM+FSA ))) . b = (s2 +* (I +* (Start-At 0 ,SCM+FSA ))) . bA5:
not
b in dom (I +* (Start-At 0 ,SCM+FSA ))
by SCMFSA6B:12;
not
b in dom (I +* (Start-At 0 ,SCM+FSA ))
by SCMFSA6B:12;
hence (s1 +* (I +* (Start-At 0 ,SCM+FSA ))) . b =
s1 . b
by FUNCT_4:12
.=
s2 . b
by A2, A4
.=
(s2 +* (I +* (Start-At 0 ,SCM+FSA ))) . b
by A5, FUNCT_4:12
;
verum end;
assume A6:
for f being FinSeq-Location holds s1 . f = s2 . f
; ( not I is_closed_on s1 or not I is_halting_on s1 or ( I is_closed_on s2 & I is_halting_on s2 ) )
A9:
(I +* (Start-At 0 ,SCM+FSA )) +* (I +* (Start-At 0 ,SCM+FSA )) = I +* (Start-At 0 ,SCM+FSA )
;
then A10:
(s1 +* (I +* (Start-At 0 ,SCM+FSA ))) +* (I +* (Start-At 0 ,SCM+FSA )) = s1 +* (I +* (Start-At 0 ,SCM+FSA ))
by FUNCT_4:15;
A11:
(s2 +* (I +* (Start-At 0 ,SCM+FSA ))) +* (I +* (Start-At 0 ,SCM+FSA )) = s2 +* (I +* (Start-At 0 ,SCM+FSA ))
by A9, FUNCT_4:15;
assume that
A12:
I is_closed_on s1
and
A13:
I is_halting_on s1
; ( I is_closed_on s2 & I is_halting_on s2 )
A14:
I is_closed_on s1 +* (I +* (Start-At 0 ,SCM+FSA ))
by A12, A13, Th39;
A15:
now let k be
Element of
NAT ;
IC (Comput (ProgramPart (s2 +* (I +* (Start-At 0 ,SCM+FSA )))),(s2 +* (I +* (Start-At 0 ,SCM+FSA ))),k) in dom I
IC (Comput (ProgramPart (s1 +* (I +* (Start-At 0 ,SCM+FSA )))),(s1 +* (I +* (Start-At 0 ,SCM+FSA ))),k) in dom I
by A12, SCMFSA7B:def 7;
hence
IC (Comput (ProgramPart (s2 +* (I +* (Start-At 0 ,SCM+FSA )))),(s2 +* (I +* (Start-At 0 ,SCM+FSA ))),k) in dom I
by A1, A3, A7, A10, A11, A14, Th38;
verum end;
ProgramPart (s1 +* (I +* (Start-At 0 ,SCM+FSA ))) halts_on s1 +* (I +* (Start-At 0 ,SCM+FSA ))
by A13, SCMFSA7B:def 8;
then consider n being Element of NAT such that
A16:
CurInstr (ProgramPart (s1 +* (I +* (Start-At 0 ,SCM+FSA )))),(Comput (ProgramPart (s1 +* (I +* (Start-At 0 ,SCM+FSA )))),(s1 +* (I +* (Start-At 0 ,SCM+FSA ))),n) = halt SCM+FSA
by AMI_1:146;
TX1:
ProgramPart (s1 +* (I +* (Start-At 0 ,SCM+FSA ))) = ProgramPart (Comput (ProgramPart (s1 +* (I +* (Start-At 0 ,SCM+FSA )))),(s1 +* (I +* (Start-At 0 ,SCM+FSA ))),n)
by AMI_1:123;
TX2:
ProgramPart (s2 +* (I +* (Start-At 0 ,SCM+FSA ))) = ProgramPart (Comput (ProgramPart (s2 +* (I +* (Start-At 0 ,SCM+FSA )))),(s2 +* (I +* (Start-At 0 ,SCM+FSA ))),n)
by AMI_1:123;
CurInstr (ProgramPart (s2 +* (I +* (Start-At 0 ,SCM+FSA )))),(Comput (ProgramPart (s2 +* (I +* (Start-At 0 ,SCM+FSA )))),(s2 +* (I +* (Start-At 0 ,SCM+FSA ))),n) = halt SCM+FSA
by A1, A3, A7, A10, A11, A14, A16, Th38, TX1, TX2;
then
ProgramPart (s2 +* (I +* (Start-At 0 ,SCM+FSA ))) halts_on s2 +* (I +* (Start-At 0 ,SCM+FSA ))
by AMI_1:146;
hence
( I is_closed_on s2 & I is_halting_on s2 )
by A15, SCMFSA7B:def 7, SCMFSA7B:def 8; verum