let s be State of SCMPDS; for P being the Instructions of SCMPDS -valued ManySortedSet of NAT
for i being parahalting Instruction of SCMPDS holds Exec (i,(Initialize s)) = IExec ((Load i),P,s)
let P be the Instructions of SCMPDS -valued ManySortedSet of NAT ; for i being parahalting Instruction of SCMPDS holds Exec (i,(Initialize s)) = IExec ((Load i),P,s)
let i be parahalting Instruction of SCMPDS; Exec (i,(Initialize s)) = IExec ((Load i),P,s)
set Li = Load i;
set Mi = stop (Load i);
set sI = Initialize s;
set PI = P +* (stop (Load i));
set Is = Initialize s;
set IC1 = IC (Comput ((P +* (stop (Load i))),(Initialize s),1));
A2:
P +* (stop (Load i)) halts_on Initialize s
by FUNCT_4:26, SCMPDS_4:def 10;
A3:
1 in dom (stop (Load i))
by Th9;
A4:
0 in dom (stop (Load i))
by Th9;
A5:
now set Y =
NAT ;
set X =
SCM-Data-Loc \/ {(IC )};
assume A6:
Result (
(P +* (stop (Load i))),
(Initialize s))
= Exec (
i,
(Initialize s))
;
Exec (i,(Initialize s)) = IExec ((Load i),P,s)A8:
NAT /\ ((SCM-Data-Loc \/ {(IC )}) \/ NAT) c= NAT /\ ((SCM-Data-Loc \/ {(IC )}) \/ NAT)
;
A9:
dom (Exec (i,(Initialize s))) = the
carrier of
SCMPDS
by PARTFUN1:def 4;
A10:
dom s = the
carrier of
SCMPDS
by PARTFUN1:def 4;
then
dom s = (SCM-Data-Loc \/ {(IC )}) \/ NAT
by COMPOS_1:160, SCMPDS_2:100;
then A11:
dom s = (SCM-Data-Loc \/ {(IC )}) \/ NAT
;
now thus A12:
dom ((Exec (i,(Initialize s))) | NAT) = (dom s) /\ NAT
by A9, A10, RELAT_1:90;
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
x in (dom s) /\ NAT
by A12;
then A13:
x in NAT /\ ((SCM-Data-Loc \/ {(IC )}) \/ NAT)
by A11;
then reconsider x9 =
x as
Element of
NAT by XBOOLE_1:21;
x in NAT
by A13, 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 A14:
(Exec (i,(Initialize s))) | NAT = s | NAT
by FUNCT_1:68;
dom (Exec (i,(Initialize s))) = the
carrier of
SCMPDS
by PARTFUN1:def 4;
then
dom (Exec (i,(Initialize s))) = (SCM-Data-Loc \/ {(IC )}) \/ NAT
by COMPOS_1:160, SCMPDS_2:100;
then A15:
(IExec ((Load i),P,s)) | NAT = s | NAT
by A6, A11, A8, FUNCT_4:93;
SCM-Data-Loc \/ {(IC )} misses NAT
then
SCM-Data-Loc \/ {(IC )} misses dom (s | NAT)
by RELAT_1:87, XBOOLE_1:63;
then
(IExec ((Load i),P,s)) | (SCM-Data-Loc \/ {(IC )}) = (Exec (i,(Initialize s))) | (SCM-Data-Loc \/ {(IC )})
by A6, FUNCT_4:76;
then A19:
(Exec (i,(Initialize s))) | ((SCM-Data-Loc \/ {(IC )}) \/ NAT) = (IExec ((Load i),P,s)) | ((SCM-Data-Loc \/ {(IC )}) \/ NAT)
by A15, A14, RELAT_1:185;
dom (IExec ((Load i),P,s)) = the
carrier of
SCMPDS
by PARTFUN1:def 4;
then A20:
dom (IExec ((Load i),P,s)) = (SCM-Data-Loc \/ {(IC )}) \/ NAT
by COMPOS_1:160, SCMPDS_2:100;
A21:
dom (Exec (i,(Initialize s))) = the
carrier of
SCMPDS
by PARTFUN1:def 4;
dom (Exec (i,(Initialize s))) = (SCM-Data-Loc \/ {(IC )}) \/ NAT
by A21, COMPOS_1:160, SCMPDS_2:100;
hence Exec (
i,
(Initialize s)) =
(Exec (i,(Initialize s))) | ((SCM-Data-Loc \/ {(IC )}) \/ NAT)
by RELAT_1:98
.=
(IExec ((Load i),P,s)) | ((SCM-Data-Loc \/ {(IC )}) \/ NAT)
by A19
.=
IExec (
(Load i),
P,
s)
by A20, RELAT_1:98
;
verum end;
A22:
(stop (Load i)) . 1 = halt SCMPDS
by Th10;
A23:
(stop (Load i)) . 0 = i
by Th10;
A24:
stop (Load i) c= P +* (stop (Load i))
by FUNCT_4:26;
A25:
IC (Comput ((P +* (stop (Load i))),(Initialize s),1)) in dom (stop (Load i))
by FUNCT_4:26, SCMPDS_4:def 9;
A26:
(P +* (stop (Load i))) /. (IC (Initialize s)) = (P +* (stop (Load i))) . (IC (Initialize s))
by PBOOLE:158;
A27: Comput ((P +* (stop (Load i))),(Initialize s),(0 + 1)) =
Following ((P +* (stop (Load i))),(Comput ((P +* (stop (Load i))),(Initialize s),0)))
by EXTPRO_1:4
.=
Following ((P +* (stop (Load i))),(Initialize s))
by EXTPRO_1:3
.=
Exec (((P +* (stop (Load i))) . 0),(Initialize s))
by A26, COMPOS_1:223
.=
Exec (i,(Initialize s))
by A4, A23, A24, GRFUNC_1:8
;
per cases
( IC (Comput ((P +* (stop (Load i))),(Initialize s),1)) = 0 or IC (Comput ((P +* (stop (Load i))),(Initialize s),1)) = 1 )
by A25, Th11;
suppose A28:
IC (Comput ((P +* (stop (Load i))),(Initialize s),1)) = 0
;
Exec (i,(Initialize s)) = IExec ((Load i),P,s)set Ni =
InsCode i;
succ (IC (Initialize s)) =
succ 0
by COMPOS_1:223
.=
1
;
then A29:
InsCode i in {0,1,4,5,6}
by A27, A28, SCMPDS_4:6;
A30:
CurInstr (
(P +* (stop (Load i))),
(Comput ((P +* (stop (Load i))),(Initialize s),1))) =
(P +* (stop (Load i))) . 0
by A28, PBOOLE:158
.=
i
by A4, A23, A24, GRFUNC_1:8
;
A31:
InsCode i <> 1
by Th26;
hereby verum
per cases
( i = halt SCMPDS or i <> halt SCMPDS )
;
suppose A32:
i <> halt SCMPDS
;
Exec (i,(Initialize s)) = IExec ((Load i),P,s)A33:
for
loc being
Element of
NAT holds
(Initialize s) . loc = (Exec (i,(Initialize s))) . loc
by AMI_1:def 13;
A35:
Following (
(P +* (stop (Load i))),
(Initialize s)) =
Following (
(P +* (stop (Load i))),
(Comput ((P +* (stop (Load i))),(Initialize s),0)))
by EXTPRO_1:3
.=
Exec (
i,
(Initialize s))
by A27, EXTPRO_1:4
;
A36:
IC (Initialize s) = IC (Exec (i,(Initialize s)))
by A27, A28, COMPOS_1:223;
then A37:
Initialize s = Exec (
i,
(Initialize s))
by A34, A33, SCMPDS_2:54;
now let n be
Element of
NAT ;
CurInstr ((P +* (stop (Load i))),(Comput ((P +* (stop (Load i))),(Initialize s),n))) <> halt SCMPDS Comput (
(P +* (stop (Load i))),
(Initialize s),
n) =
Initialize s
by A36, A34, A33, A35, EXTPRO_1:27, SCMPDS_2:54
.=
Following (
(P +* (stop (Load i))),
(Comput ((P +* (stop (Load i))),(Initialize s),0)))
by A37, A35, EXTPRO_1:3
.=
Comput (
(P +* (stop (Load i))),
(Initialize s),
(0 + 1))
by EXTPRO_1:4
;
hence
CurInstr (
(P +* (stop (Load i))),
(Comput ((P +* (stop (Load i))),(Initialize s),n)))
<> halt SCMPDS
by A30, A32;
verum end; then
not
P +* (stop (Load i)) halts_on Initialize s
by EXTPRO_1:30;
hence
Exec (
i,
(Initialize s))
= IExec (
(Load i),
P,
s)
by FUNCT_4:26, SCMPDS_4:def 10;
verum end; end;
end; end; suppose A38:
IC (Comput ((P +* (stop (Load i))),(Initialize s),1)) = 1
;
Exec (i,(Initialize s)) = IExec ((Load i),P,s) CurInstr (
(P +* (stop (Load i))),
(Comput ((P +* (stop (Load i))),(Initialize s),1))) =
(P +* (stop (Load i))) . 1
by A38, PBOOLE:158
.=
halt SCMPDS
by A3, A22, A24, GRFUNC_1:8
;
hence
Exec (
i,
(Initialize s))
= IExec (
(Load i),
P,
s)
by A2, A5, A27, EXTPRO_1:def 8;
verum end; end;