let s be State of SCM+FSA ; IExec (Stop SCM+FSA ),s = (Initialized s) +* (Start-At 0 ,SCM+FSA )
set D = Int-Locations \/ FinSeq-Locations ;
set A = NAT ;
set s1 = (Initialized s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA ));
A1:
(Initialized s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA )) = Comput (ProgramPart ((Initialized s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA )))),((Initialized s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA ))),0
by AMI_1:13;
A2:
IExec (Stop SCM+FSA ),s = (Result (ProgramPart (s +* (Initialized (Stop SCM+FSA )))),(s +* (Initialized (Stop SCM+FSA )))) +* (s | NAT )
by SCMFSA6B:def 1;
Y:
(ProgramPart ((Initialized s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA )))) /. (IC ((Initialized s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA )))) = ((Initialized s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA ))) . (IC ((Initialized s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA ))))
by COMPOS_1:38;
y:
(Stop SCM+FSA ) . 0 = halt SCM+FSA
by AFINSQ_1:38;
x:
0 in dom (Stop SCM+FSA )
by COMPOS_1:45;
A3:
s +* (Initialized (Stop SCM+FSA )) = (Initialized s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA ))
by SCMFSA8A:13;
then A4: CurInstr (ProgramPart ((Initialized s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA )))),((Initialized s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA ))) =
((Initialized 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 ((Initialized s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA ))) halts_on (Initialized s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA ))
by A1, y, AMI_1:146;
then A5:
IExec (Stop SCM+FSA ),s = ((Initialized 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 ((Initialized s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA )))
by Th37
.=
DataPart (Initialized 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 = ((Initialized s) +* (Start-At 0 ,SCM+FSA )) . b1 )assume A9:
x in dom (IExec (Stop SCM+FSA ),s)
;
(IExec (Stop SCM+FSA ),s) . b1 = ((Initialized 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 = ((Initialized 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, COMPOS_1:3;
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 =
((Initialized s) +* ((Stop SCM+FSA ) +* (Start-At 0 ,SCM+FSA ))) . (IC SCM+FSA )
by A5, A14, FUNCT_4:12
.=
(((Initialized 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
.=
((Initialized 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 ((Initialized s) +* (Start-At 0 ,SCM+FSA ))
by PARTFUN1:def 4
;
hence
IExec (Stop SCM+FSA ),
s = (Initialized s) +* (Start-At 0 ,SCM+FSA )
by A8, FUNCT_1:9;
verum
end;