let s be State of SCMPDS ; :: thesis: for I, J being shiftable Program of SCMPDS
for a being Int_position
for k1 being Integer st s . (DataLoc (s . a),k1) < 0 & I is_closed_on s & I is_halting_on s holds
( if<0 a,k1,I,J is_closed_on s & if<0 a,k1,I,J is_halting_on s )
let I, J be shiftable Program of SCMPDS ; :: thesis: for a being Int_position
for k1 being Integer st s . (DataLoc (s . a),k1) < 0 & I is_closed_on s & I is_halting_on s holds
( if<0 a,k1,I,J is_closed_on s & if<0 a,k1,I,J is_halting_on s )
let a be Int_position ; :: thesis: for k1 being Integer st s . (DataLoc (s . a),k1) < 0 & I is_closed_on s & I is_halting_on s holds
( if<0 a,k1,I,J is_closed_on s & if<0 a,k1,I,J is_halting_on s )
let k1 be Integer; :: thesis: ( s . (DataLoc (s . a),k1) < 0 & I is_closed_on s & I is_halting_on s implies ( if<0 a,k1,I,J is_closed_on s & if<0 a,k1,I,J is_halting_on s ) )
set b = DataLoc (s . a),k1;
assume A1:
s . (DataLoc (s . a),k1) < 0
; :: thesis: ( not I is_closed_on s or not I is_halting_on s or ( if<0 a,k1,I,J is_closed_on s & if<0 a,k1,I,J is_halting_on s ) )
assume A2:
I is_closed_on s
; :: thesis: ( not I is_halting_on s or ( if<0 a,k1,I,J is_closed_on s & if<0 a,k1,I,J is_halting_on s ) )
assume A3:
I is_halting_on s
; :: thesis: ( if<0 a,k1,I,J is_closed_on s & if<0 a,k1,I,J is_halting_on s )
set G = Goto ((card J) + 1);
set I2 = (I ';' (Goto ((card J) + 1))) ';' J;
set IF = if<0 a,k1,I,J;
set pIF = stop (if<0 a,k1,I,J);
set IsIF = Initialized (stop (if<0 a,k1,I,J));
set pI2 = stop ((I ';' (Goto ((card J) + 1))) ';' J);
set II2 = Initialized (stop ((I ';' (Goto ((card J) + 1))) ';' J));
set s2 = s +* (Initialized (stop ((I ';' (Goto ((card J) + 1))) ';' J)));
set s3 = s +* (Initialized (stop (if<0 a,k1,I,J)));
set s4 = Computation (s +* (Initialized (stop (if<0 a,k1,I,J)))),1;
set i = a,k1 >=0_goto ((card I) + 2);
A4:
Initialized (stop ((I ';' (Goto ((card J) + 1))) ';' J)) c= s +* (Initialized (stop ((I ';' (Goto ((card J) + 1))) ';' J)))
by FUNCT_4:26;
(I ';' (Goto ((card J) + 1))) ';' J is_halting_on s
by A2, A3, Th44;
then A5:
s +* (Initialized (stop ((I ';' (Goto ((card J) + 1))) ';' J))) is halting
by Def3;
A6:
(I ';' (Goto ((card J) + 1))) ';' J is_closed_on s
by A2, A3, Th44;
then A7:
(I ';' (Goto ((card J) + 1))) ';' J is_closed_on s +* (Initialized (stop ((I ';' (Goto ((card J) + 1))) ';' J)))
by Th38;
A8:
inspos 0 in dom (stop (if<0 a,k1,I,J))
by SCMPDS_4:75;
A9: if<0 a,k1,I,J =
((a,k1 >=0_goto ((card I) + 2)) ';' (I ';' (Goto ((card J) + 1)))) ';' J
by SCMPDS_4:50
.=
(a,k1 >=0_goto ((card I) + 2)) ';' ((I ';' (Goto ((card J) + 1))) ';' J)
by SCMPDS_4:50
;
A10:
IC (s +* (Initialized (stop (if<0 a,k1,I,J)))) = inspos 0
by FUNCT_4:26, SCMPDS_5:18;
A11: Computation (s +* (Initialized (stop (if<0 a,k1,I,J)))),(0 + 1) =
Following (Computation (s +* (Initialized (stop (if<0 a,k1,I,J)))),0 )
by AMI_1:14
.=
Following (s +* (Initialized (stop (if<0 a,k1,I,J))))
by AMI_1:13
.=
Exec (a,k1 >=0_goto ((card I) + 2)),(s +* (Initialized (stop (if<0 a,k1,I,J))))
by A9, Th22
;
A12:
( not DataLoc (s . a),k1 in dom (Initialized (stop (if<0 a,k1,I,J))) & DataLoc (s . a),k1 in dom s )
by SCMPDS_2:49, SCMPDS_4:31;
( not a in dom (Initialized (stop (if<0 a,k1,I,J))) & a in dom s )
by SCMPDS_2:49, SCMPDS_4:31;
then A13: (s +* (Initialized (stop (if<0 a,k1,I,J)))) . (DataLoc ((s +* (Initialized (stop (if<0 a,k1,I,J)))) . a),k1) =
(s +* (Initialized (stop (if<0 a,k1,I,J)))) . (DataLoc (s . a),k1)
by FUNCT_4:12
.=
s . (DataLoc (s . a),k1)
by A12, FUNCT_4:12
;
A14: card (stop (if<0 a,k1,I,J)) =
(card (if<0 a,k1,I,J)) + 1
by SCMPDS_5:7
.=
((card ((I ';' (Goto ((card J) + 1))) ';' J)) + 1) + 1
by A9, Th15
;
A15:
Shift (stop ((I ';' (Goto ((card J) + 1))) ';' J)),1 c= Computation (s +* (Initialized (stop (if<0 a,k1,I,J)))),1
by A9, Lm6;
A17: IC (Computation (s +* (Initialized (stop (if<0 a,k1,I,J)))),1) =
Next (IC (s +* (Initialized (stop (if<0 a,k1,I,J)))))
by A1, A11, A13, SCMPDS_2:69
.=
inspos (0 + 1)
by A10
;
A18:
DataPart (s +* (Initialized (stop ((I ';' (Goto ((card J) + 1))) ';' J)))) = DataPart (s +* (Initialized (stop (if<0 a,k1,I,J))))
by SCMPDS_4:24, SCMPDS_4:36;
now let a be
Int_position ;
:: thesis: (s +* (Initialized (stop ((I ';' (Goto ((card J) + 1))) ';' J)))) . a = (Computation (s +* (Initialized (stop (if<0 a,k1,I,J)))),1) . athus (s +* (Initialized (stop ((I ';' (Goto ((card J) + 1))) ';' J)))) . a =
(s +* (Initialized (stop (if<0 a,k1,I,J)))) . a
by A18, SCMPDS_4:23
.=
(Computation (s +* (Initialized (stop (if<0 a,k1,I,J)))),1) . a
by A11, SCMPDS_2:69
;
:: thesis: verum end;
then A19:
DataPart (s +* (Initialized (stop ((I ';' (Goto ((card J) + 1))) ';' J)))) = DataPart (Computation (s +* (Initialized (stop (if<0 a,k1,I,J)))),1)
by SCMPDS_4:23;
CurInstr (Computation (s +* (Initialized (stop (if<0 a,k1,I,J)))),((LifeSpan (s +* (Initialized (stop ((I ';' (Goto ((card J) + 1))) ';' J))))) + 1)) =
CurInstr (Computation (Computation (s +* (Initialized (stop (if<0 a,k1,I,J)))),1),(LifeSpan (s +* (Initialized (stop ((I ';' (Goto ((card J) + 1))) ';' J))))))
by AMI_1:51
.=
CurInstr (Computation (s +* (Initialized (stop ((I ';' (Goto ((card J) + 1))) ';' J)))),(LifeSpan (s +* (Initialized (stop ((I ';' (Goto ((card J) + 1))) ';' J))))))
by A4, A7, A15, A17, A19, Th45
.=
halt SCMPDS
by A5, AMI_1:def 46
;
then A20:
s +* (Initialized (stop (if<0 a,k1,I,J))) is halting
by AMI_1:def 20;
now let k be
Element of
NAT ;
:: thesis: IC (Computation (s +* (Initialized (stop (if<0 a,k1,I,J)))),b1) in dom (stop (if<0 a,k1,I,J))per cases
( 0 < k or k = 0 )
;
suppose
0 < k
;
:: thesis: IC (Computation (s +* (Initialized (stop (if<0 a,k1,I,J)))),b1) in dom (stop (if<0 a,k1,I,J))then consider k1 being
Nat such that A21:
k1 + 1
= k
by NAT_1:6;
reconsider k1 =
k1 as
Element of
NAT by ORDINAL1:def 13;
reconsider m =
IC (Computation (s +* (Initialized (stop ((I ';' (Goto ((card J) + 1))) ';' J)))),k1) as
Element of
NAT by ORDINAL1:def 13;
A23:
card (stop (if<0 a,k1,I,J)) = (card (stop ((I ';' (Goto ((card J) + 1))) ';' J))) + 1
by A14, SCMPDS_5:7;
inspos m in dom (stop ((I ';' (Goto ((card J) + 1))) ';' J))
by A6, Def2;
then
m < card (stop ((I ';' (Goto ((card J) + 1))) ';' J))
by SCMPDS_4:1;
then A24:
m + 1
< card (stop (if<0 a,k1,I,J))
by A23, XREAL_1:8;
IC (Computation (s +* (Initialized (stop (if<0 a,k1,I,J)))),k) =
IC (Computation (Computation (s +* (Initialized (stop (if<0 a,k1,I,J)))),1),k1)
by A21, AMI_1:51
.=
inspos (m + 1)
by A4, A7, A15, A17, A19, Th45
;
hence
IC (Computation (s +* (Initialized (stop (if<0 a,k1,I,J)))),k) in dom (stop (if<0 a,k1,I,J))
by A24, SCMPDS_4:1;
:: thesis: verum end; end; end;
hence
if<0 a,k1,I,J is_closed_on s
by Def2; :: thesis: if<0 a,k1,I,J is_halting_on s
thus
if<0 a,k1,I,J is_halting_on s
by A20, Def3; :: thesis: verum