let s be State of SCMPDS; for i being parahalting Instruction of SCMPDS holds Exec (i,(Initialize s)) = IExec ((Load i),s)
set SA0 = Start-At (0,SCMPDS);
let i be parahalting Instruction of SCMPDS; Exec (i,(Initialize s)) = IExec ((Load i),s)
set Li = Load i;
set Mi = stop (Load i);
set sI = (Initialize s) +* (stop (Load i));
set Is = Initialize s;
I1:
(Initialize s) +* (stop (Load i)) = s +* (Initialize (stop (Load i)))
by COMPOS_1:125;
set IC1 = IC (Comput ((ProgramPart ((Initialize s) +* (stop (Load i)))),((Initialize s) +* (stop (Load i))),1));
A1:
ProgramPart ((Initialize s) +* (stop (Load i))) halts_on (Initialize s) +* (stop (Load i))
by FUNCT_4:26, SCMPDS_4:def 10;
A2:
1 in dom (stop (Load i))
by Th9;
A3:
0 in dom (stop (Load i))
by Th9;
A4:
now set Y =
NAT ;
set X =
SCM-Data-Loc \/ {(IC SCMPDS)};
assume A5:
Result (
(ProgramPart ((Initialize s) +* (stop (Load i)))),
((Initialize s) +* (stop (Load i))))
= Exec (
i,
((Initialize s) +* (stop (Load i))))
;
Exec (i,(Initialize s)) = IExec ((Load i),s)
Initialize s,
(Initialize s) +* (stop (Load i)) equal_outside NAT
by FUNCT_7:132;
then
(Initialize s) | (SCM-Data-Loc \/ {(IC SCMPDS)}) = ((Initialize s) +* (stop (Load i))) | (SCM-Data-Loc \/ {(IC SCMPDS)})
by Th41;
then A6:
(Exec (i,(Initialize s))) | (SCM-Data-Loc \/ {(IC SCMPDS)}) = (Exec (i,((Initialize s) +* (stop (Load i))))) | (SCM-Data-Loc \/ {(IC SCMPDS)})
by SCMPDS_3:7;
A7:
NAT /\ ((SCM-Data-Loc \/ {(IC SCMPDS)}) \/ NAT) c= NAT /\ ((SCM-Data-Loc \/ {(IC SCMPDS)}) \/ NAT)
;
A8:
dom (IExec ((Load i),s)) = the
carrier of
SCMPDS
by PARTFUN1:def 4;
A9:
dom (Exec (i,(Initialize s))) = the
carrier of
SCMPDS
by PARTFUN1:def 4;
A10:
dom s = (SCM-Data-Loc \/ {(IC SCMPDS)}) \/ NAT
by PARTFUN1:def 4, SCMPDS_3:5;
now thus
dom ((Exec (i,(Initialize s))) | NAT) = (dom s) /\ NAT
by A9, A10, RELAT_1:90, SCMPDS_3:5;
for x being set st x in dom ((Exec (i,(Initialize s))) | NAT) holds
((Exec (i,(Initialize s))) | NAT) . x = s . xlet x be
set ;
( x in dom ((Exec (i,(Initialize s))) | NAT) implies ((Exec (i,(Initialize s))) | NAT) . x = s . x )assume
x in dom ((Exec (i,(Initialize s))) | NAT)
;
((Exec (i,(Initialize s))) | NAT) . x = s . xthen A11:
x in NAT /\ ((SCM-Data-Loc \/ {(IC SCMPDS)}) \/ NAT)
by A9, RELAT_1:90, SCMPDS_3:5;
then reconsider x9 =
x as
Element of
NAT by XBOOLE_1:21;
x in NAT
by A11, XBOOLE_1:21;
hence ((Exec (i,(Initialize s))) | NAT) . x =
(Exec (i,(Initialize s))) . x
by FUNCT_1:72
.=
(Initialize s) . x9
by AMI_1:def 13
.=
s . x
by Th40
;
verum end; then A12:
(Exec (i,(Initialize s))) | NAT = s | NAT
by FUNCT_1:68;
dom (Exec (i,((Initialize s) +* (stop (Load i))))) = the
carrier of
SCMPDS
by PARTFUN1:def 4;
then A13:
(IExec ((Load i),s)) | NAT = s | NAT
by A5, A10, A7, FUNCT_4:93, SCMPDS_3:5;
SCM-Data-Loc \/ {(IC SCMPDS)} misses NAT
then
SCM-Data-Loc \/ {(IC SCMPDS)} misses dom (s | NAT)
by RELAT_1:87, XBOOLE_1:63;
then
(IExec ((Load i),s)) | (SCM-Data-Loc \/ {(IC SCMPDS)}) = (Exec (i,((Initialize s) +* (stop (Load i))))) | (SCM-Data-Loc \/ {(IC SCMPDS)})
by A5, FUNCT_4:76;
then A17:
(Exec (i,(Initialize s))) | ((SCM-Data-Loc \/ {(IC SCMPDS)}) \/ NAT) = (IExec ((Load i),s)) | ((SCM-Data-Loc \/ {(IC SCMPDS)}) \/ NAT)
by A6, A13, A12, RELAT_1:185;
thus Exec (
i,
(Initialize s)) =
(Exec (i,(Initialize s))) | ((SCM-Data-Loc \/ {(IC SCMPDS)}) \/ NAT)
by A9, RELAT_1:98, SCMPDS_3:5
.=
IExec (
(Load i),
s)
by A8, A17, RELAT_1:98, SCMPDS_3:5
;
verum end;
A18:
(stop (Load i)) . 1 = halt SCMPDS
by Th10;
A19:
(stop (Load i)) . 0 = i
by Th10;
A20:
stop (Load i) c= (Initialize s) +* (stop (Load i))
by FUNCT_4:26;
A21:
IC (Comput ((ProgramPart ((Initialize s) +* (stop (Load i)))),((Initialize s) +* (stop (Load i))),1)) in dom (stop (Load i))
by FUNCT_4:26, SCMPDS_4:def 9;
Y:
(ProgramPart ((Initialize s) +* (stop (Load i)))) /. (IC ((Initialize s) +* (stop (Load i)))) = ((Initialize s) +* (stop (Load i))) . (IC ((Initialize s) +* (stop (Load i))))
by COMPOS_1:38;
A22: Comput ((ProgramPart ((Initialize s) +* (stop (Load i)))),((Initialize s) +* (stop (Load i))),(0 + 1)) =
Following ((ProgramPart ((Initialize s) +* (stop (Load i)))),(Comput ((ProgramPart ((Initialize s) +* (stop (Load i)))),((Initialize s) +* (stop (Load i))),0)))
by EXTPRO_1:4
.=
Following ((ProgramPart ((Initialize s) +* (stop (Load i)))),((Initialize s) +* (stop (Load i))))
by EXTPRO_1:3
.=
Exec ((((Initialize s) +* (stop (Load i))) . 0),((Initialize s) +* (stop (Load i))))
by Th18, Y, I1, FUNCT_4:26
.=
Exec (i,((Initialize s) +* (stop (Load i))))
by A3, A19, A20, GRFUNC_1:8
;
per cases
( IC (Comput ((ProgramPart ((Initialize s) +* (stop (Load i)))),((Initialize s) +* (stop (Load i))),1)) = 0 or IC (Comput ((ProgramPart ((Initialize s) +* (stop (Load i)))),((Initialize s) +* (stop (Load i))),1)) = 1 )
by A21, Th11;
suppose A23:
IC (Comput ((ProgramPart ((Initialize s) +* (stop (Load i)))),((Initialize s) +* (stop (Load i))),1)) = 0
;
Exec (i,(Initialize s)) = IExec ((Load i),s)set Ni =
InsCode i;
succ (IC ((Initialize s) +* (stop (Load i)))) =
succ 0
by Th18, I1, FUNCT_4:26
.=
1
;
then A24:
InsCode i in {0,1,4,5,6}
by A22, A23, SCMPDS_4:6;
A25:
CurInstr (
(ProgramPart ((Initialize s) +* (stop (Load i)))),
(Comput ((ProgramPart ((Initialize s) +* (stop (Load i)))),((Initialize s) +* (stop (Load i))),1))) =
((Initialize s) +* (stop (Load i))) . 0
by A23, COMPOS_1:38
.=
i
by A3, A19, A20, GRFUNC_1:8
;
A26:
InsCode i <> 1
by Th26;
hereby verum
per cases
( i = halt SCMPDS or i <> halt SCMPDS )
;
suppose A27:
i <> halt SCMPDS
;
Exec (i,(Initialize s)) = IExec ((Load i),s)A28:
for
loc being
Element of
NAT holds
((Initialize s) +* (stop (Load i))) . loc = (Exec (i,((Initialize s) +* (stop (Load i))))) . loc
by AMI_1:def 13;
A30:
Following (
(ProgramPart ((Initialize s) +* (stop (Load i)))),
((Initialize s) +* (stop (Load i)))) =
Following (
(ProgramPart ((Initialize s) +* (stop (Load i)))),
(Comput ((ProgramPart ((Initialize s) +* (stop (Load i)))),((Initialize s) +* (stop (Load i))),0)))
by EXTPRO_1:3
.=
Exec (
i,
((Initialize s) +* (stop (Load i))))
by A22, EXTPRO_1:4
;
A31:
IC ((Initialize s) +* (stop (Load i))) = IC (Exec (i,((Initialize s) +* (stop (Load i)))))
by A22, A23, Th18, I1, FUNCT_4:26;
then A32:
(Initialize s) +* (stop (Load i)) = Exec (
i,
((Initialize s) +* (stop (Load i))))
by A29, A28, SCMPDS_2:54;
now let n be
Element of
NAT ;
CurInstr ((ProgramPart ((Initialize s) +* (stop (Load i)))),(Comput ((ProgramPart ((Initialize s) +* (stop (Load i)))),((Initialize s) +* (stop (Load i))),n))) <> halt SCMPDS Comput (
(ProgramPart ((Initialize s) +* (stop (Load i)))),
((Initialize s) +* (stop (Load i))),
n) =
(Initialize s) +* (stop (Load i))
by A31, A29, A28, A30, EXTPRO_1:27, SCMPDS_2:54
.=
Following (
(ProgramPart ((Initialize s) +* (stop (Load i)))),
(Comput ((ProgramPart ((Initialize s) +* (stop (Load i)))),((Initialize s) +* (stop (Load i))),0)))
by A32, A30, EXTPRO_1:3
.=
Comput (
(ProgramPart ((Initialize s) +* (stop (Load i)))),
((Initialize s) +* (stop (Load i))),
(0 + 1))
by EXTPRO_1:4
;
hence
CurInstr (
(ProgramPart ((Initialize s) +* (stop (Load i)))),
(Comput ((ProgramPart ((Initialize s) +* (stop (Load i)))),((Initialize s) +* (stop (Load i))),n)))
<> halt SCMPDS
by A25, A27;
verum end; then
not
ProgramPart ((Initialize s) +* (stop (Load i))) halts_on (Initialize s) +* (stop (Load i))
by EXTPRO_1:30;
hence
Exec (
i,
(Initialize s))
= IExec (
(Load i),
s)
by FUNCT_4:26, SCMPDS_4:def 10;
verum end; end;
end; end; suppose S:
IC (Comput ((ProgramPart ((Initialize s) +* (stop (Load i)))),((Initialize s) +* (stop (Load i))),1)) = 1
;
Exec (i,(Initialize s)) = IExec ((Load i),s) CurInstr (
(ProgramPart ((Initialize s) +* (stop (Load i)))),
(Comput ((ProgramPart ((Initialize s) +* (stop (Load i)))),((Initialize s) +* (stop (Load i))),1))) =
((Initialize s) +* (stop (Load i))) . 1
by S, COMPOS_1:38
.=
halt SCMPDS
by A2, A18, A20, GRFUNC_1:8
;
hence
Exec (
i,
(Initialize s))
= IExec (
(Load i),
s)
by A1, A4, A22, EXTPRO_1:def 8;
verum end; end;