let s be State of SCM+FSA ; IExec (Stop SCM+FSA ),s = (Initialize s) +* (Start-At 0 ,SCM+FSA )
set D = Int-Locations \/ FinSeq-Locations ;
set A = NAT ;
set s1 = (Initialize s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA ));
A1:
(Initialize s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA )) = Comput (ProgramPart ((Initialize s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA )))),((Initialize s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA ))),0
by AMI_1:13;
A2:
IExec (Stop SCM+FSA ),s = (Result (s +* (Initialized (Stop SCM+FSA )))) +* (s | NAT )
by SCMFSA6B:def 1;
Y:
(ProgramPart ((Initialize s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA )))) /. (IC ((Initialize s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA )))) = ((Initialize s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA ))) . (IC ((Initialize s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA ))))
by AMI_1:150;
y:
(Stop SCM+FSA ) . 0 = halt SCM+FSA
by AFINSQ_1:38;
x:
0 in dom (Stop SCM+FSA )
by SCMNORM:2;
A3:
s +* (Initialized (Stop SCM+FSA )) = (Initialize s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA ))
by SCMFSA8A:13;
then A4: CurInstr (ProgramPart ((Initialize s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA )))),((Initialize s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA ))) =
((Initialize s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA ))) . 0
by Y, FUNCT_4:26, SCMFSA6B:34
.=
(Stop SCM+FSA ) . 0
by Th26, x
;
then
ProgramPart ((Initialize s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA ))) halts_on (Initialize s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA ))
by A1, y, AMI_1:146;
then A5:
IExec (Stop SCM+FSA ),s = ((Initialize s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA ))) +* (s | NAT )
by A3, A4, A1, A2, y, AMI_1:def 22;
then A6: DataPart (IExec (Stop SCM+FSA ),s) =
DataPart ((Initialize s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA )))
by Th37
.=
DataPart (Initialize s)
by SCMFSA8A:11
;
hereby verum
A7:
dom (Start-At 0 ,SCM+FSA ) = {(IC SCM+FSA )}
by FUNCOP_1:19;
A8:
now let x be
set ;
( x in dom (IExec (Stop SCM+FSA ),s) implies (IExec (Stop SCM+FSA ),s) . b1 = ((Initialize s) +* (Start-At 0 ,SCM+FSA )) . b1 )assume A9:
x in dom (IExec (Stop SCM+FSA ),s)
;
(IExec (Stop SCM+FSA ),s) . b1 = ((Initialize s) +* (Start-At 0 ,SCM+FSA )) . b1per cases
( x is Int-Location or x is FinSeq-Location or x = IC SCM+FSA or x is Element of NAT )
by A9, SCMFSA6A:35;
suppose A14:
x = IC SCM+FSA
;
(IExec (Stop SCM+FSA ),s) . b1 = ((Initialize s) +* (Start-At 0 ,SCM+FSA )) . b1then
x in {(IC SCM+FSA )}
by TARSKI:def 1;
then A15:
x in dom (Start-At 0 ,SCM+FSA )
by FUNCOP_1:19;
not
x in NAT
by A14, AMI_1:48;
then
not
x in (dom s) /\ NAT
by XBOOLE_0:def 4;
then
not
x in dom (s | NAT )
by RELAT_1:90;
hence (IExec (Stop SCM+FSA ),s) . x =
((Initialize s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA ))) . (IC SCM+FSA )
by A5, A14, FUNCT_4:12
.=
(((Initialize s) +* (Stop SCM+FSA )) +* (Start-At 0 ,SCM+FSA )) . (IC SCM+FSA )
by FUNCT_4:15
.=
(Start-At 0 ,SCM+FSA ) . (IC SCM+FSA )
by A14, A15, FUNCT_4:14
.=
((Initialize s) +* (Start-At 0 ,SCM+FSA )) . x
by A14, A15, FUNCT_4:14
;
verum end; end; end; dom (IExec (Stop SCM+FSA ),s) =
the
carrier of
SCM+FSA
by PARTFUN1:def 4
.=
dom ((Initialize s) +* (Start-At 0 ,SCM+FSA ))
by PARTFUN1:def 4
;
hence
IExec (Stop SCM+FSA ),
s = (Initialize s) +* (Start-At 0 ,SCM+FSA )
by A8, FUNCT_1:9;
verum
end;