set D = SCM-Data-Loc ;
let I be halt-free parahalting Program of SCMPDS ; for J being parahalting shiftable Program of SCMPDS
for s, s1 being State of SCMPDS st Initialize (stop (I ';' J)) c= s & s1 = (Initialize s) +* (stop I) holds
( IC (Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1)) = card I & DataPart (Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1)) = DataPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J)) & Shift (stop J),(card I) c= Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1) & LifeSpan (ProgramPart s),s = (LifeSpan (ProgramPart s1),s1) + (LifeSpan (ProgramPart ((Initialize (Result (ProgramPart s1),s1)) +* (stop J))),((Initialize (Result (ProgramPart s1),s1)) +* (stop J))) )
let J be parahalting shiftable Program of SCMPDS ; for s, s1 being State of SCMPDS st Initialize (stop (I ';' J)) c= s & s1 = (Initialize s) +* (stop I) holds
( IC (Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1)) = card I & DataPart (Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1)) = DataPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J)) & Shift (stop J),(card I) c= Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1) & LifeSpan (ProgramPart s),s = (LifeSpan (ProgramPart s1),s1) + (LifeSpan (ProgramPart ((Initialize (Result (ProgramPart s1),s1)) +* (stop J))),((Initialize (Result (ProgramPart s1),s1)) +* (stop J))) )
let s, s1 be State of SCMPDS ; ( Initialize (stop (I ';' J)) c= s & s1 = (Initialize s) +* (stop I) implies ( IC (Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1)) = card I & DataPart (Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1)) = DataPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J)) & Shift (stop J),(card I) c= Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1) & LifeSpan (ProgramPart s),s = (LifeSpan (ProgramPart s1),s1) + (LifeSpan (ProgramPart ((Initialize (Result (ProgramPart s1),s1)) +* (stop J))),((Initialize (Result (ProgramPart s1),s1)) +* (stop J))) ) )
set spJ = stop J;
set sIJ = stop (I ';' J);
set m1 = LifeSpan (ProgramPart s1),s1;
set s3 = (Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J);
I1:
(Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J) = (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1)) +* (Initialize (stop J))
by SCMPDS_4:5;
set m3 = LifeSpan (ProgramPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J))),((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J));
assume that
A1:
Initialize (stop (I ';' J)) c= s
and
A2:
s1 = (Initialize s) +* (stop I)
; ( IC (Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1)) = card I & DataPart (Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1)) = DataPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J)) & Shift (stop J),(card I) c= Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1) & LifeSpan (ProgramPart s),s = (LifeSpan (ProgramPart s1),s1) + (LifeSpan (ProgramPart ((Initialize (Result (ProgramPart s1),s1)) +* (stop J))),((Initialize (Result (ProgramPart s1),s1)) +* (stop J))) )
I2:
(Initialize s) +* (stop I) = s +* (Initialize (stop I))
by SCMPDS_4:5;
A3:
DataPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J)) = (DataPart (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (DataPart (Initialize (stop J)))
by I1, FUNCT_4:75;
set s4 = Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1);
A4:
Initialize I c= Initialize (stop (I ';' J))
by Th15;
hence A5:
IC (Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1)) = card I
by A1, A2, Th30, XBOOLE_1:1; ( DataPart (Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1)) = DataPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J)) & Shift (stop J),(card I) c= Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1) & LifeSpan (ProgramPart s),s = (LifeSpan (ProgramPart s1),s1) + (LifeSpan (ProgramPart ((Initialize (Result (ProgramPart s1),s1)) +* (stop J))),((Initialize (Result (ProgramPart s1),s1)) +* (stop J))) )
A11:
dom (DataPart (Initialize (stop J))) = (dom (Initialize (stop J))) /\ SCM-Data-Loc
by RELAT_1:90, SCMPDS_2:100;
reconsider m = (LifeSpan (ProgramPart s1),s1) + (LifeSpan (ProgramPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J))),((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J))) as Element of NAT ;
stop (I ';' J) =
I ';' (J ';' (Stop SCMPDS ))
by SCMPDS_4:46
.=
I +* (Shift (stop J),(card I))
;
then A12:
Shift (stop J),(card I) c= stop (I ';' J)
by FUNCT_4:26;
A13:
Initialize (stop J) c= (Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J)
by I1, FUNCT_4:26;
then A14:
ProgramPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J)) halts_on (Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J)
by AMI_1:def 26;
I3:
(Initialize s) +* (stop (I ';' J)) = s +* (Initialize (stop (I ';' J)))
by SCMPDS_4:5;
dom (Initialize (stop J)) c= dom ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J))
by A13, GRFUNC_1:8;
then
dom (Initialize (stop J)) c= the carrier of SCMPDS
by PARTFUN1:def 4;
then
dom (DataPart (Initialize (stop J))) c= the carrier of SCMPDS /\ SCM-Data-Loc
by A11, XBOOLE_1:26;
then
dom (DataPart (Initialize (stop J))) c= (dom (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) /\ SCM-Data-Loc
by PARTFUN1:def 4;
then
dom (DataPart (Initialize (stop J))) c= dom (DataPart (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1)))
by RELAT_1:90, SCMPDS_2:100;
then
DataPart (Initialize (stop J)) c= DataPart (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))
by A6, GRFUNC_1:8;
then A15:
DataPart (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1)) = DataPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J))
by A3, LATTICE2:8;
s =
(Initialize s) +* (stop (I ';' J))
by A1, I3, FUNCT_4:79
.=
s +* ((I ';' (J ';' (Stop SCMPDS ))) +* (Start-At 0 ,SCMPDS ))
by I3, SCMPDS_4:46
;
hence A16:
DataPart (Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1)) = DataPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J))
by A2, A15, Th33, SCMPDS_4:24; ( Shift (stop J),(card I) c= Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1) & LifeSpan (ProgramPart s),s = (LifeSpan (ProgramPart s1),s1) + (LifeSpan (ProgramPart ((Initialize (Result (ProgramPart s1),s1)) +* (stop J))),((Initialize (Result (ProgramPart s1),s1)) +* (stop J))) )
T:
ProgramPart s = ProgramPart (Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1))
by AMI_1:123;
x:
Comput (ProgramPart s),s,((LifeSpan (ProgramPart s1),s1) + (LifeSpan (ProgramPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J))),((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J)))) = Comput (ProgramPart s),(Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1)),(LifeSpan (ProgramPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J))),((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J)))
by AMI_1:51;
TX3:
ProgramPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J)) = ProgramPart (Comput (ProgramPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J))),((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J)),(LifeSpan (ProgramPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J))),((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J))))
by AMI_1:123;
TX4:
ProgramPart (Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1)) = ProgramPart (Comput (ProgramPart (Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1))),(Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1)),(LifeSpan (ProgramPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J))),((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J))))
by AMI_1:123;
stop (I ';' J) c= s
by A1, SCMPDS_4:57;
then
Shift (stop J),(card I) c= s
by A12, XBOOLE_1:1;
hence A17:
Shift (stop J),(card I) c= Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1)
by AMI_1:81; LifeSpan (ProgramPart s),s = (LifeSpan (ProgramPart s1),s1) + (LifeSpan (ProgramPart ((Initialize (Result (ProgramPart s1),s1)) +* (stop J))),((Initialize (Result (ProgramPart s1),s1)) +* (stop J)))
then
CurInstr (ProgramPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J))),(Comput (ProgramPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J))),((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J)),(LifeSpan (ProgramPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J))),((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J)))) = CurInstr (ProgramPart (Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1))),(Comput (ProgramPart (Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1))),(Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1)),(LifeSpan (ProgramPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J))),((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J))))
by A13, A5, A16, TX4, TX3, SCMPDS_4:84;
then
CurInstr (ProgramPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J))),(Comput (ProgramPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J))),((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J)),(LifeSpan (ProgramPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J))),((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J)))) = CurInstr (ProgramPart s),(Comput (ProgramPart s),s,((LifeSpan (ProgramPart s1),s1) + (LifeSpan (ProgramPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J))),((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J)))))
by x, T;
then A18:
CurInstr (ProgramPart s),(Comput (ProgramPart s),s,m) = halt SCMPDS
by A14, AMI_1:def 46;
A19:
now let k be
Element of
NAT ;
( (LifeSpan (ProgramPart s1),s1) + k < m implies not CurInstr (ProgramPart s),(Comput (ProgramPart s),s,((LifeSpan (ProgramPart s1),s1) + k)) = halt SCMPDS )assume
(LifeSpan (ProgramPart s1),s1) + k < m
;
not CurInstr (ProgramPart s),(Comput (ProgramPart s),s,((LifeSpan (ProgramPart s1),s1) + k)) = halt SCMPDS then A20:
k < LifeSpan (ProgramPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J))),
((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J))
by XREAL_1:8;
assume A21:
CurInstr (ProgramPart s),
(Comput (ProgramPart s),s,((LifeSpan (ProgramPart s1),s1) + k)) = halt SCMPDS
;
contradictionT:
ProgramPart s = ProgramPart (Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1))
by AMI_1:123;
TX3:
ProgramPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J)) = ProgramPart (Comput (ProgramPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J))),((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J)),k)
by AMI_1:123;
TX4:
ProgramPart (Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1)) = ProgramPart (Comput (ProgramPart (Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1))),(Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1)),k)
by AMI_1:123;
x:
Comput (ProgramPart s),
s,
((LifeSpan (ProgramPart s1),s1) + k) = Comput (ProgramPart s),
(Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1)),
k
by AMI_1:51;
CurInstr (ProgramPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J))),
(Comput (ProgramPart ((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J))),((Initialize (Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1))) +* (stop J)),k) =
CurInstr (ProgramPart (Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1))),
(Comput (ProgramPart (Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1))),(Comput (ProgramPart s),s,(LifeSpan (ProgramPart s1),s1)),k)
by A13, A5, A16, A17, TX4, TX3, SCMPDS_4:84
.=
halt SCMPDS
by A21, x, T
;
hence
contradiction
by A14, A20, AMI_1:def 46;
verum end;
then A24:
for k being Element of NAT st CurInstr (ProgramPart s),(Comput (ProgramPart s),s,k) = halt SCMPDS holds
m <= k
;
Initialize (stop I) c= s1
by A2, I2, FUNCT_4:26;
then
ProgramPart s1 halts_on s1
by SCMPDS_4:63;
then X:
Result (ProgramPart s1),s1 = Comput (ProgramPart s1),s1,(LifeSpan (ProgramPart s1),s1)
by AMI_1:122;
ProgramPart s halts_on s
by A1, SCMPDS_4:63;
then
LifeSpan (ProgramPart s),s = m
by A18, A24, AMI_1:def 46;
hence
LifeSpan (ProgramPart s),s = (LifeSpan (ProgramPart s1),s1) + (LifeSpan (ProgramPart ((Initialize (Result (ProgramPart s1),s1)) +* (stop J))),((Initialize (Result (ProgramPart s1),s1)) +* (stop J)))
by X; verum