set D = SCM-Data-Loc ;
let I be halt-free parahalting Program of SCMPDS; for J being parahalting shiftable Program of SCMPDS
for s being 0 -started State of SCMPDS
for s1 being State of SCMPDS st stop (I ';' J) c= s & s1 = 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 being 0 -started State of SCMPDS
for s1 being State of SCMPDS st stop (I ';' J) c= s & s1 = 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 be 0 -started State of SCMPDS; for s1 being State of SCMPDS st stop (I ';' J) c= s & s1 = 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 s1 be State of SCMPDS; ( stop (I ';' J) c= s & s1 = 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)))) ) )
AA:
Initialize s = s
by COMPOS_1:78;
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 COMPOS_1:125;
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:
stop (I ';' J) c= s
and
A2:
s1 = 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)))) )
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)));
UU:
ProgramPart (Comput ((ProgramPart s),s,(LifeSpan ((ProgramPart s1),s1)))) = ProgramPart s
by AMI_1:123;
A4:
I c= 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 (stop J)) = (dom (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 AFINSQ_1:30
.=
I +* (Shift ((stop J),(card I)))
;
then A12:
Shift ((stop J),(card I)) c= stop (I ';' J)
by FUNCT_4:26;
A13:
stop J c= (Initialize (Comput ((ProgramPart s1),s1,(LifeSpan ((ProgramPart s1),s1))))) +* (stop J)
by FUNCT_4:26;
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 FUNCT_4:26, SCMPDS_4:def 10;
I3:
(Initialize s) +* (stop (I ';' J)) = s +* (Initialize (stop (I ';' J)))
by COMPOS_1:125;
XX:
DataPart (Initialize (stop J)) = DataPart (stop J)
by COMPOS_1:80;
dom (stop J) c= dom ((Initialize (Comput ((ProgramPart s1),s1,(LifeSpan ((ProgramPart s1),s1))))) +* (stop J))
by A13, GRFUNC_1:8;
then
dom (stop J) c= the carrier of SCMPDS
by PARTFUN1:def 4;
then
dom (DataPart (stop J)) c= the carrier of SCMPDS /\ SCM-Data-Loc
by A11, XBOOLE_1:26;
then
dom (DataPart (stop J)) c= (dom (Comput ((ProgramPart s1),s1,(LifeSpan ((ProgramPart s1),s1))))) /\ SCM-Data-Loc
by PARTFUN1:def 4;
then
dom (DataPart (stop J)) c= dom (DataPart (Comput ((ProgramPart s1),s1,(LifeSpan ((ProgramPart s1),s1)))))
by RELAT_1:90, SCMPDS_2:100;
then
DataPart (stop J) c= DataPart (Comput ((ProgramPart s1),s1,(LifeSpan ((ProgramPart s1),s1))))
by A6, XX, 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, XX, LATTICE2:8;
s =
(Initialize s) +* (stop (I ';' J))
by A1, AA, FUNCT_4:79
.=
s +* ((I ';' (J ';' (Stop SCMPDS))) +* (Start-At (0,SCMPDS)))
by I3, AFINSQ_1:30
;
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, AA, COMPOS_1:138; ( 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 EXTPRO_1:5;
Shift ((stop J),(card I)) c= s
by A12, A1, 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 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, A13, A5, A16, SCMPDS_4:84;
then A18:
CurInstr ((ProgramPart s),(Comput ((ProgramPart s),s,m))) = halt SCMPDS
by A14, EXTPRO_1:def 14;
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 SCMPDSthen 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
;
contradictionx:
Comput (
(ProgramPart s),
s,
((LifeSpan ((ProgramPart s1),s1)) + k))
= Comput (
(ProgramPart s),
(Comput ((ProgramPart s),s,(LifeSpan ((ProgramPart s1),s1)))),
k)
by EXTPRO_1:5;
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)))
= halt SCMPDS
by A21, x, A13, A5, A16, A17, UU, SCMPDS_4:84;
hence
contradiction
by A14, A20, EXTPRO_1:def 14;
verum end;
then A24:
for k being Element of NAT st CurInstr ((ProgramPart s),(Comput ((ProgramPart s),s,k))) = halt SCMPDS holds
m <= k
;
ProgramPart s1 halts_on s1
by A2, FUNCT_4:26, SCMPDS_4:def 10;
then X:
Result ((ProgramPart s1),s1) = Comput ((ProgramPart s1),s1,(LifeSpan ((ProgramPart s1),s1)))
by EXTPRO_1:23;
ProgramPart s halts_on s
by A1, SCMPDS_4:def 10;
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, A18, A24, EXTPRO_1:def 14; verum