let s be State of SCMPDS ; for i being parahalting Instruction of SCMPDS holds Exec i,(Initialized s) = IExec (Load i),s
set SA0 = Start-At 0 ,SCMPDS ;
let i be parahalting Instruction of SCMPDS ; Exec i,(Initialized s) = IExec (Load i),s
set Li = Load i;
set Mi = stop (Load i);
set sI = s +* (Initialized (stop (Load i)));
set Is = Initialized s;
set IC1 = IC (Comput (ProgramPart (s +* (Initialized (stop (Load i))))),(s +* (Initialized (stop (Load i)))),1);
A1:
ProgramPart (s +* (Initialized (stop (Load i)))) halts_on s +* (Initialized (stop (Load i)))
by FUNCT_4:26, SCMPDS_4:63;
A2:
1 in dom (Initialized (stop (Load i)))
by Th13;
A3:
0 in dom (Initialized (stop (Load i)))
by Th13;
A4:
now set Y =
NAT ;
set X =
SCM-Data-Loc \/ {(IC SCMPDS )};
assume A5:
Result (s +* (Initialized (stop (Load i)))) = Exec i,
(s +* (Initialized (stop (Load i))))
;
Exec i,(Initialized s) = IExec (Load i),s
s +* (Initialized (stop (Load i))) = (s +* (stop (Load i))) +* (Start-At 0 ,SCMPDS )
by FUNCT_4:15;
then
Initialized s,
s +* (Initialized (stop (Load i))) equal_outside NAT
by AMI_1:120, FUNCT_7:106;
then
(Initialized s) | (SCM-Data-Loc \/ {(IC SCMPDS )}) = (s +* (Initialized (stop (Load i)))) | (SCM-Data-Loc \/ {(IC SCMPDS )})
by Th41;
then A6:
(Exec i,(Initialized s)) | (SCM-Data-Loc \/ {(IC SCMPDS )}) = (Exec i,(s +* (Initialized (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,(Initialized 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,(Initialized s)) | NAT ) = (dom s) /\ NAT
by A9, A10, RELAT_1:90, SCMPDS_3:5;
for x being set st x in dom ((Exec i,(Initialized s)) | NAT ) holds
((Exec i,(Initialized s)) | NAT ) . x = s . xlet x be
set ;
( x in dom ((Exec i,(Initialized s)) | NAT ) implies ((Exec i,(Initialized s)) | NAT ) . x = s . x )assume
x in dom ((Exec i,(Initialized s)) | NAT )
;
((Exec i,(Initialized s)) | NAT ) . x = s . xthen A11:
x in NAT /\ ((SCM-Data-Loc \/ {(IC SCMPDS )}) \/ NAT )
by A9, RELAT_1:90, SCMPDS_3:5;
then
x is
Element of
NAT
by XBOOLE_1:21;
then reconsider x9 =
x as
Element of
NAT ;
x in NAT
by A11, XBOOLE_1:21;
hence ((Exec i,(Initialized s)) | NAT ) . x =
(Exec i,(Initialized s)) . x
by FUNCT_1:72
.=
(Initialized s) . x9
by AMI_1:def 13
.=
s . x
by Th40
;
verum end; then A12:
(Exec i,(Initialized s)) | NAT = s | NAT
by FUNCT_1:68;
dom (Exec i,(s +* (Initialized (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,(s +* (Initialized (stop (Load i))))) | (SCM-Data-Loc \/ {(IC SCMPDS )})
by A5, FUNCT_4:76;
then A17:
(Exec i,(Initialized 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,
(Initialized s) =
(Exec i,(Initialized 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:
(Initialized (stop (Load i))) . 1 = halt SCMPDS
by Th13;
A19:
(Initialized (stop (Load i))) . 0 = i
by Th13;
A20:
Initialized (stop (Load i)) c= s +* (Initialized (stop (Load i)))
by FUNCT_4:26;
then A21:
IC (Comput (ProgramPart (s +* (Initialized (stop (Load i))))),(s +* (Initialized (stop (Load i)))),1) in dom (stop (Load i))
by SCMPDS_4:def 9;
u:
Comput (ProgramPart (s +* (Initialized (stop (Load i))))),(s +* (Initialized (stop (Load i)))),0 = s +* (Initialized (stop (Load i)))
by AMI_1:13;
Y:
(ProgramPart (s +* (Initialized (stop (Load i))))) /. (IC (s +* (Initialized (stop (Load i))))) = (s +* (Initialized (stop (Load i)))) . (IC (s +* (Initialized (stop (Load i)))))
by AMI_1:150;
A22: Comput (ProgramPart (s +* (Initialized (stop (Load i))))),(s +* (Initialized (stop (Load i)))),(0 + 1) =
Following (ProgramPart (s +* (Initialized (stop (Load i))))),(Comput (ProgramPart (s +* (Initialized (stop (Load i))))),(s +* (Initialized (stop (Load i)))),0 )
by AMI_1:14
.=
Following (ProgramPart (s +* (Initialized (stop (Load i))))),(s +* (Initialized (stop (Load i))))
by AMI_1:13
.=
Exec ((s +* (Initialized (stop (Load i)))) . 0 ),(s +* (Initialized (stop (Load i))))
by Th18, FUNCT_4:26, Y, u
.=
Exec i,(s +* (Initialized (stop (Load i))))
by A3, A19, A20, GRFUNC_1:8
;
per cases
( IC (Comput (ProgramPart (s +* (Initialized (stop (Load i))))),(s +* (Initialized (stop (Load i)))),1) = 0 or IC (Comput (ProgramPart (s +* (Initialized (stop (Load i))))),(s +* (Initialized (stop (Load i)))),1) = 1 )
by A21, Th11;
suppose A23:
IC (Comput (ProgramPart (s +* (Initialized (stop (Load i))))),(s +* (Initialized (stop (Load i)))),1) = 0
;
Exec i,(Initialized s) = IExec (Load i),sset Ni =
InsCode i;
succ (IC (s +* (Initialized (stop (Load i))))) =
succ 0
by Th18, FUNCT_4:26
.=
1
;
then A24:
InsCode i in {0 ,1,4,5,6}
by A22, A23, SCMPDS_4:6;
Y:
(ProgramPart (Comput (ProgramPart (s +* (Initialized (stop (Load i))))),(s +* (Initialized (stop (Load i)))),1)) /. (IC (Comput (ProgramPart (s +* (Initialized (stop (Load i))))),(s +* (Initialized (stop (Load i)))),1)) = (Comput (ProgramPart (s +* (Initialized (stop (Load i))))),(s +* (Initialized (stop (Load i)))),1) . (IC (Comput (ProgramPart (s +* (Initialized (stop (Load i))))),(s +* (Initialized (stop (Load i)))),1))
by AMI_1:150;
A25:
CurInstr (ProgramPart (Comput (ProgramPart (s +* (Initialized (stop (Load i))))),(s +* (Initialized (stop (Load i)))),1)),
(Comput (ProgramPart (s +* (Initialized (stop (Load i))))),(s +* (Initialized (stop (Load i)))),1) =
(s +* (Initialized (stop (Load i)))) . 0
by A22, A23, AMI_1:def 13, Y
.=
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,(Initialized s) = IExec (Load i),sA28:
for
loc being
Element of
NAT holds
(s +* (Initialized (stop (Load i)))) . loc = (Exec i,(s +* (Initialized (stop (Load i))))) . loc
by AMI_1:def 13;
u:
Comput (ProgramPart (s +* (Initialized (stop (Load i))))),
(s +* (Initialized (stop (Load i)))),
0 = s +* (Initialized (stop (Load i)))
by AMI_1:13;
A30:
Following (ProgramPart (s +* (Initialized (stop (Load i))))),
(s +* (Initialized (stop (Load i)))) =
Following (ProgramPart (s +* (Initialized (stop (Load i))))),
(Comput (ProgramPart (s +* (Initialized (stop (Load i))))),(s +* (Initialized (stop (Load i)))),0 )
by AMI_1:13
.=
Exec i,
(s +* (Initialized (stop (Load i))))
by A22, AMI_1:14
;
A31:
IC (s +* (Initialized (stop (Load i)))) = IC (Exec i,(s +* (Initialized (stop (Load i)))))
by A22, A23, Th18, FUNCT_4:26;
then A32:
s +* (Initialized (stop (Load i))) = Exec i,
(s +* (Initialized (stop (Load i))))
by A29, A28, SCMPDS_2:54;
now let n be
Element of
NAT ;
CurInstr (ProgramPart (Comput (ProgramPart (s +* (Initialized (stop (Load i))))),(s +* (Initialized (stop (Load i)))),n)),(Comput (ProgramPart (s +* (Initialized (stop (Load i))))),(s +* (Initialized (stop (Load i)))),n) <> halt SCMPDS Comput (ProgramPart (s +* (Initialized (stop (Load i))))),
(s +* (Initialized (stop (Load i)))),
n =
s +* (Initialized (stop (Load i)))
by A31, A29, A28, A30, AMI_1:130, SCMPDS_2:54, u
.=
Following (ProgramPart (s +* (Initialized (stop (Load i))))),
(Comput (ProgramPart (s +* (Initialized (stop (Load i))))),(s +* (Initialized (stop (Load i)))),0 )
by A32, A30, AMI_1:13
.=
Comput (ProgramPart (s +* (Initialized (stop (Load i))))),
(s +* (Initialized (stop (Load i)))),
(0 + 1)
by AMI_1:14
;
hence
CurInstr (ProgramPart (Comput (ProgramPart (s +* (Initialized (stop (Load i))))),(s +* (Initialized (stop (Load i)))),n)),
(Comput (ProgramPart (s +* (Initialized (stop (Load i))))),(s +* (Initialized (stop (Load i)))),n) <> halt SCMPDS
by A25, A27;
verum end; then
not
ProgramPart (s +* (Initialized (stop (Load i)))) halts_on s +* (Initialized (stop (Load i)))
by AMI_1:146;
hence
Exec i,
(Initialized s) = IExec (Load i),
s
by FUNCT_4:26, SCMPDS_4:63;
verum end; end;
end; end; suppose S:
IC (Comput (ProgramPart (s +* (Initialized (stop (Load i))))),(s +* (Initialized (stop (Load i)))),1) = 1
;
Exec i,(Initialized s) = IExec (Load i),s
(ProgramPart (Comput (ProgramPart (s +* (Initialized (stop (Load i))))),(s +* (Initialized (stop (Load i)))),1)) /. (IC (Comput (ProgramPart (s +* (Initialized (stop (Load i))))),(s +* (Initialized (stop (Load i)))),1)) = (Comput (ProgramPart (s +* (Initialized (stop (Load i))))),(s +* (Initialized (stop (Load i)))),1) . (IC (Comput (ProgramPart (s +* (Initialized (stop (Load i))))),(s +* (Initialized (stop (Load i)))),1))
by AMI_1:150;
then CurInstr (ProgramPart (Comput (ProgramPart (s +* (Initialized (stop (Load i))))),(s +* (Initialized (stop (Load i)))),1)),
(Comput (ProgramPart (s +* (Initialized (stop (Load i))))),(s +* (Initialized (stop (Load i)))),1) =
(s +* (Initialized (stop (Load i)))) . 1
by A22, AMI_1:def 13, S
.=
halt SCMPDS
by A2, A18, A20, GRFUNC_1:8
;
hence
Exec i,
(Initialized s) = IExec (Load i),
s
by A1, A4, A22, AMI_1:def 22;
verum end; end;