let I be No-StopCode Program of SCMPDS ; for J being shiftable Program of SCMPDS
for s, s1, s2 being State of SCMPDS st I is_closed_on s & I is_halting_on s & J is_closed_on IExec I,s & J is_halting_on IExec I,s & s2 = s +* (Initialized (stop (I ';' J))) & s1 = s +* (Initialized (stop I)) holds
( IC (Comput (ProgramPart s2),s2,(LifeSpan s1)) = card I & DataPart (Comput (ProgramPart s2),s2,(LifeSpan s1)) = DataPart ((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J))) & Shift (stop J),(card I) c= Comput (ProgramPart s2),s2,(LifeSpan s1) & LifeSpan s2 = (LifeSpan s1) + (LifeSpan ((Result s1) +* (Initialized (stop J)))) )
let J be shiftable Program of SCMPDS ; for s, s1, s2 being State of SCMPDS st I is_closed_on s & I is_halting_on s & J is_closed_on IExec I,s & J is_halting_on IExec I,s & s2 = s +* (Initialized (stop (I ';' J))) & s1 = s +* (Initialized (stop I)) holds
( IC (Comput (ProgramPart s2),s2,(LifeSpan s1)) = card I & DataPart (Comput (ProgramPart s2),s2,(LifeSpan s1)) = DataPart ((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J))) & Shift (stop J),(card I) c= Comput (ProgramPart s2),s2,(LifeSpan s1) & LifeSpan s2 = (LifeSpan s1) + (LifeSpan ((Result s1) +* (Initialized (stop J)))) )
let s, s1, s2 be State of SCMPDS ; ( I is_closed_on s & I is_halting_on s & J is_closed_on IExec I,s & J is_halting_on IExec I,s & s2 = s +* (Initialized (stop (I ';' J))) & s1 = s +* (Initialized (stop I)) implies ( IC (Comput (ProgramPart s2),s2,(LifeSpan s1)) = card I & DataPart (Comput (ProgramPart s2),s2,(LifeSpan s1)) = DataPart ((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J))) & Shift (stop J),(card I) c= Comput (ProgramPart s2),s2,(LifeSpan s1) & LifeSpan s2 = (LifeSpan s1) + (LifeSpan ((Result s1) +* (Initialized (stop J)))) ) )
set IsI = Initialized (stop I);
set spJ = stop J;
set IsJ = Initialized (stop J);
set IJ = I ';' J;
set sIJ = stop (I ';' J);
set IsIJ = Initialized (stop (I ';' J));
set m1 = LifeSpan s1;
set sm = Comput (ProgramPart s1),s1,(LifeSpan s1);
set s3 = (Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J));
set m3 = LifeSpan ((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J)));
set sE = IExec I,s;
assume that
A1:
I is_closed_on s
and
A2:
I is_halting_on s
and
A3:
J is_closed_on IExec I,s
and
A4:
J is_halting_on IExec I,s
and
A5:
s2 = s +* (Initialized (stop (I ';' J)))
and
A6:
s1 = s +* (Initialized (stop I))
; ( IC (Comput (ProgramPart s2),s2,(LifeSpan s1)) = card I & DataPart (Comput (ProgramPart s2),s2,(LifeSpan s1)) = DataPart ((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J))) & Shift (stop J),(card I) c= Comput (ProgramPart s2),s2,(LifeSpan s1) & LifeSpan s2 = (LifeSpan s1) + (LifeSpan ((Result s1) +* (Initialized (stop J)))) )
A7:
DataPart ((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J))) = (DataPart (Comput (ProgramPart s1),s1,(LifeSpan s1))) +* (DataPart (Initialized (stop J)))
by FUNCT_4:75;
set s4 = Comput (ProgramPart s2),s2,(LifeSpan s1);
thus A8:
IC (Comput (ProgramPart s2),s2,(LifeSpan s1)) = card I
by A1, A2, A5, A6, Th17, Th44; ( DataPart (Comput (ProgramPart s2),s2,(LifeSpan s1)) = DataPart ((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J))) & Shift (stop J),(card I) c= Comput (ProgramPart s2),s2,(LifeSpan s1) & LifeSpan s2 = (LifeSpan s1) + (LifeSpan ((Result s1) +* (Initialized (stop J)))) )
A14:
dom (DataPart (Initialized (stop J))) = (dom (Initialized (stop J))) /\ SCM-Data-Loc
by RELAT_1:90, SCMPDS_2:100;
A15:
Initialized (stop J) c= (Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J))
by FUNCT_4:26;
then
dom (Initialized (stop J)) c= dom ((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J)))
by GRFUNC_1:8;
then
dom (Initialized (stop J)) c= the carrier of SCMPDS
by PARTFUN1:def 4;
then
dom (DataPart (Initialized (stop J))) c= the carrier of SCMPDS /\ SCM-Data-Loc
by A14, XBOOLE_1:26;
then
dom (DataPart (Initialized (stop J))) c= (dom (Comput (ProgramPart s1),s1,(LifeSpan s1))) /\ SCM-Data-Loc
by PARTFUN1:def 4;
then
dom (DataPart (Initialized (stop J))) c= dom (DataPart (Comput (ProgramPart s1),s1,(LifeSpan s1)))
by RELAT_1:90, SCMPDS_2:100;
then
DataPart (Initialized (stop J)) c= DataPart (Comput (ProgramPart s1),s1,(LifeSpan s1))
by A9, GRFUNC_1:8;
then A16:
DataPart (Comput (ProgramPart s1),s1,(LifeSpan s1)) = DataPart ((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J)))
by A7, LATTICE2:8;
s2 = s +* ((I ';' (J ';' (Stop SCMPDS ))) +* (Start-At 0 ,SCMPDS ))
by A5, SCMPDS_4:46;
hence A17:
DataPart (Comput (ProgramPart s2),s2,(LifeSpan s1)) = DataPart ((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J)))
by A1, A2, A6, A16, Th38, SCMPDS_4:24; ( Shift (stop J),(card I) c= Comput (ProgramPart s2),s2,(LifeSpan s1) & LifeSpan s2 = (LifeSpan s1) + (LifeSpan ((Result s1) +* (Initialized (stop J)))) )
reconsider m = (LifeSpan s1) + (LifeSpan ((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J)))) as Element of NAT ;
A18:
stop (I ';' J) c= Initialized (stop (I ';' J))
by SCMPDS_4:9;
stop (I ';' J) =
I ';' (J ';' (Stop SCMPDS ))
by SCMPDS_4:46
.=
I +* (Shift (stop J),(card I))
;
then A19:
Shift (stop J),(card I) c= stop (I ';' J)
by FUNCT_4:26;
Initialized (stop (I ';' J)) c= s2
by A5, FUNCT_4:26;
then
stop (I ';' J) c= s2
by A18, XBOOLE_1:1;
then
Shift (stop J),(card I) c= s2
by A19, XBOOLE_1:1;
hence A20:
Shift (stop J),(card I) c= Comput (ProgramPart s2),s2,(LifeSpan s1)
by AMI_1:81; LifeSpan s2 = (LifeSpan s1) + (LifeSpan ((Result s1) +* (Initialized (stop J))))
J is_halting_on Comput (ProgramPart s1),s1,(LifeSpan s1)
by A2, A3, A4, A6, Th42;
then A21:
ProgramPart ((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J))) halts_on (Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J))
by SCMPDS_6:def 3;
T:
ProgramPart s2 = ProgramPart (Comput (ProgramPart s2),s2,(LifeSpan s1))
by AMI_1:144;
x:
Comput (ProgramPart s2),s2,((LifeSpan s1) + (LifeSpan ((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J))))) = Comput (ProgramPart s2),(Comput (ProgramPart s2),s2,(LifeSpan s1)),(LifeSpan ((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J))))
by AMI_1:51;
J is_closed_on Comput (ProgramPart s1),s1,(LifeSpan s1)
by A2, A3, A4, A6, Th42;
then A22:
J is_closed_on (Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J))
by SCMPDS_6:38;
then
CurInstr (ProgramPart (Comput (ProgramPart ((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J)))),((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J))),(LifeSpan ((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J)))))),(Comput (ProgramPart ((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J)))),((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J))),(LifeSpan ((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J))))) = CurInstr (ProgramPart (Comput (ProgramPart (Comput (ProgramPart s2),s2,(LifeSpan s1))),(Comput (ProgramPart s2),s2,(LifeSpan s1)),(LifeSpan ((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J)))))),(Comput (ProgramPart (Comput (ProgramPart s2),s2,(LifeSpan s1))),(Comput (ProgramPart s2),s2,(LifeSpan s1)),(LifeSpan ((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J)))))
by A15, A8, A17, A20, SCMPDS_6:45;
then
CurInstr (ProgramPart (Comput (ProgramPart ((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J)))),((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J))),(LifeSpan ((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J)))))),(Comput (ProgramPart ((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J)))),((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J))),(LifeSpan ((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J))))) = CurInstr (ProgramPart (Comput (ProgramPart s2),s2,((LifeSpan s1) + (LifeSpan ((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J))))))),(Comput (ProgramPart s2),s2,((LifeSpan s1) + (LifeSpan ((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J))))))
by x, T;
then A23:
CurInstr (ProgramPart (Comput (ProgramPart s2),s2,m)),(Comput (ProgramPart s2),s2,m) = halt SCMPDS
by A21, AMI_1:def 46;
A24:
now let k be
Element of
NAT ;
( (LifeSpan s1) + k < m implies not CurInstr (ProgramPart (Comput (ProgramPart s2),s2,((LifeSpan s1) + k))),(Comput (ProgramPart s2),s2,((LifeSpan s1) + k)) = halt SCMPDS )assume
(LifeSpan s1) + k < m
;
not CurInstr (ProgramPart (Comput (ProgramPart s2),s2,((LifeSpan s1) + k))),(Comput (ProgramPart s2),s2,((LifeSpan s1) + k)) = halt SCMPDS then A25:
k < LifeSpan ((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J)))
by XREAL_1:8;
assume A26:
CurInstr (ProgramPart (Comput (ProgramPart s2),s2,((LifeSpan s1) + k))),
(Comput (ProgramPart s2),s2,((LifeSpan s1) + k)) = halt SCMPDS
;
contradictionT:
ProgramPart s2 = ProgramPart (Comput (ProgramPart s2),s2,(LifeSpan s1))
by AMI_1:144;
x:
Comput (ProgramPart s2),
s2,
((LifeSpan s1) + k) = Comput (ProgramPart s2),
(Comput (ProgramPart s2),s2,(LifeSpan s1)),
k
by AMI_1:51;
CurInstr (ProgramPart (Comput (ProgramPart ((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J)))),((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J))),k)),
(Comput (ProgramPart ((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J)))),((Comput (ProgramPart s1),s1,(LifeSpan s1)) +* (Initialized (stop J))),k) =
CurInstr (ProgramPart (Comput (ProgramPart (Comput (ProgramPart s2),s2,(LifeSpan s1))),(Comput (ProgramPart s2),s2,(LifeSpan s1)),k)),
(Comput (ProgramPart (Comput (ProgramPart s2),s2,(LifeSpan s1))),(Comput (ProgramPart s2),s2,(LifeSpan s1)),k)
by A15, A22, A8, A17, A20, SCMPDS_6:45
.=
halt SCMPDS
by A26, x, T
;
hence
contradiction
by A21, A25, AMI_1:def 46;
verum end;
now let k be
Element of
NAT ;
( k < m implies CurInstr (ProgramPart (Comput (ProgramPart s2),s2,b1)),(Comput (ProgramPart s2),s2,b1) <> halt SCMPDS )assume A27:
k < m
;
CurInstr (ProgramPart (Comput (ProgramPart s2),s2,b1)),(Comput (ProgramPart s2),s2,b1) <> halt SCMPDS end;
then A29:
for k being Element of NAT st CurInstr (ProgramPart (Comput (ProgramPart s2),s2,k)),(Comput (ProgramPart s2),s2,k) = halt SCMPDS holds
m <= k
;
A30:
ProgramPart s1 halts_on s1
by A2, A6, SCMPDS_6:def 3;
I ';' J is_halting_on s
by A1, A2, A3, A4, Th43;
then
ProgramPart s2 halts_on s2
by A5, SCMPDS_6:def 3;
then
LifeSpan s2 = m
by A23, A29, AMI_1:def 46;
hence
LifeSpan s2 = (LifeSpan s1) + (LifeSpan ((Result s1) +* (Initialized (stop J))))
by A30, AMI_1:122; verum