let P be Instruction-Sequence of SCMPDS; for s being 0 -started State of SCMPDS
for I being halt-free shiftable Program of SCMPDS
for a being Int_position
for i, c being Integer
for X, Y being set
for f being Function of (product (the_Values_of SCMPDS)),NAT st s . (DataLoc ((s . a),i)) > 0 & ( for t being 0 -started State of SCMPDS st f . t = 0 holds
t . (DataLoc ((s . a),i)) <= 0 ) & ( for x being Int_position st x in X holds
s . x >= c + (s . (DataLoc ((s . a),i))) ) & ( for t being 0 -started State of SCMPDS
for Q being Instruction-Sequence of SCMPDS st ( for x being Int_position st x in X holds
t . x >= c + (t . (DataLoc ((s . a),i))) ) & ( for x being Int_position st x in Y holds
t . x = s . x ) & t . a = s . a & t . (DataLoc ((s . a),i)) > 0 holds
( (IExec (I,Q,t)) . a = t . a & I is_closed_on t,Q & I is_halting_on t,Q & f . (Initialize (IExec (I,Q,t))) < f . t & ( for x being Int_position st x in X holds
(IExec (I,Q,t)) . x >= c + ((IExec (I,Q,t)) . (DataLoc ((s . a),i))) ) & ( for x being Int_position st x in Y holds
(IExec (I,Q,t)) . x = t . x ) ) ) holds
IExec ((while>0 (a,i,I)),P,s) = IExec ((while>0 (a,i,I)),P,(Initialize (IExec (I,P,s))))
let s be 0 -started State of SCMPDS; for I being halt-free shiftable Program of SCMPDS
for a being Int_position
for i, c being Integer
for X, Y being set
for f being Function of (product (the_Values_of SCMPDS)),NAT st s . (DataLoc ((s . a),i)) > 0 & ( for t being 0 -started State of SCMPDS st f . t = 0 holds
t . (DataLoc ((s . a),i)) <= 0 ) & ( for x being Int_position st x in X holds
s . x >= c + (s . (DataLoc ((s . a),i))) ) & ( for t being 0 -started State of SCMPDS
for Q being Instruction-Sequence of SCMPDS st ( for x being Int_position st x in X holds
t . x >= c + (t . (DataLoc ((s . a),i))) ) & ( for x being Int_position st x in Y holds
t . x = s . x ) & t . a = s . a & t . (DataLoc ((s . a),i)) > 0 holds
( (IExec (I,Q,t)) . a = t . a & I is_closed_on t,Q & I is_halting_on t,Q & f . (Initialize (IExec (I,Q,t))) < f . t & ( for x being Int_position st x in X holds
(IExec (I,Q,t)) . x >= c + ((IExec (I,Q,t)) . (DataLoc ((s . a),i))) ) & ( for x being Int_position st x in Y holds
(IExec (I,Q,t)) . x = t . x ) ) ) holds
IExec ((while>0 (a,i,I)),P,s) = IExec ((while>0 (a,i,I)),P,(Initialize (IExec (I,P,s))))
let I be halt-free shiftable Program of SCMPDS; for a being Int_position
for i, c being Integer
for X, Y being set
for f being Function of (product (the_Values_of SCMPDS)),NAT st s . (DataLoc ((s . a),i)) > 0 & ( for t being 0 -started State of SCMPDS st f . t = 0 holds
t . (DataLoc ((s . a),i)) <= 0 ) & ( for x being Int_position st x in X holds
s . x >= c + (s . (DataLoc ((s . a),i))) ) & ( for t being 0 -started State of SCMPDS
for Q being Instruction-Sequence of SCMPDS st ( for x being Int_position st x in X holds
t . x >= c + (t . (DataLoc ((s . a),i))) ) & ( for x being Int_position st x in Y holds
t . x = s . x ) & t . a = s . a & t . (DataLoc ((s . a),i)) > 0 holds
( (IExec (I,Q,t)) . a = t . a & I is_closed_on t,Q & I is_halting_on t,Q & f . (Initialize (IExec (I,Q,t))) < f . t & ( for x being Int_position st x in X holds
(IExec (I,Q,t)) . x >= c + ((IExec (I,Q,t)) . (DataLoc ((s . a),i))) ) & ( for x being Int_position st x in Y holds
(IExec (I,Q,t)) . x = t . x ) ) ) holds
IExec ((while>0 (a,i,I)),P,s) = IExec ((while>0 (a,i,I)),P,(Initialize (IExec (I,P,s))))
let a be Int_position; for i, c being Integer
for X, Y being set
for f being Function of (product (the_Values_of SCMPDS)),NAT st s . (DataLoc ((s . a),i)) > 0 & ( for t being 0 -started State of SCMPDS st f . t = 0 holds
t . (DataLoc ((s . a),i)) <= 0 ) & ( for x being Int_position st x in X holds
s . x >= c + (s . (DataLoc ((s . a),i))) ) & ( for t being 0 -started State of SCMPDS
for Q being Instruction-Sequence of SCMPDS st ( for x being Int_position st x in X holds
t . x >= c + (t . (DataLoc ((s . a),i))) ) & ( for x being Int_position st x in Y holds
t . x = s . x ) & t . a = s . a & t . (DataLoc ((s . a),i)) > 0 holds
( (IExec (I,Q,t)) . a = t . a & I is_closed_on t,Q & I is_halting_on t,Q & f . (Initialize (IExec (I,Q,t))) < f . t & ( for x being Int_position st x in X holds
(IExec (I,Q,t)) . x >= c + ((IExec (I,Q,t)) . (DataLoc ((s . a),i))) ) & ( for x being Int_position st x in Y holds
(IExec (I,Q,t)) . x = t . x ) ) ) holds
IExec ((while>0 (a,i,I)),P,s) = IExec ((while>0 (a,i,I)),P,(Initialize (IExec (I,P,s))))
let i, c be Integer; for X, Y being set
for f being Function of (product (the_Values_of SCMPDS)),NAT st s . (DataLoc ((s . a),i)) > 0 & ( for t being 0 -started State of SCMPDS st f . t = 0 holds
t . (DataLoc ((s . a),i)) <= 0 ) & ( for x being Int_position st x in X holds
s . x >= c + (s . (DataLoc ((s . a),i))) ) & ( for t being 0 -started State of SCMPDS
for Q being Instruction-Sequence of SCMPDS st ( for x being Int_position st x in X holds
t . x >= c + (t . (DataLoc ((s . a),i))) ) & ( for x being Int_position st x in Y holds
t . x = s . x ) & t . a = s . a & t . (DataLoc ((s . a),i)) > 0 holds
( (IExec (I,Q,t)) . a = t . a & I is_closed_on t,Q & I is_halting_on t,Q & f . (Initialize (IExec (I,Q,t))) < f . t & ( for x being Int_position st x in X holds
(IExec (I,Q,t)) . x >= c + ((IExec (I,Q,t)) . (DataLoc ((s . a),i))) ) & ( for x being Int_position st x in Y holds
(IExec (I,Q,t)) . x = t . x ) ) ) holds
IExec ((while>0 (a,i,I)),P,s) = IExec ((while>0 (a,i,I)),P,(Initialize (IExec (I,P,s))))
let X, Y be set ; for f being Function of (product (the_Values_of SCMPDS)),NAT st s . (DataLoc ((s . a),i)) > 0 & ( for t being 0 -started State of SCMPDS st f . t = 0 holds
t . (DataLoc ((s . a),i)) <= 0 ) & ( for x being Int_position st x in X holds
s . x >= c + (s . (DataLoc ((s . a),i))) ) & ( for t being 0 -started State of SCMPDS
for Q being Instruction-Sequence of SCMPDS st ( for x being Int_position st x in X holds
t . x >= c + (t . (DataLoc ((s . a),i))) ) & ( for x being Int_position st x in Y holds
t . x = s . x ) & t . a = s . a & t . (DataLoc ((s . a),i)) > 0 holds
( (IExec (I,Q,t)) . a = t . a & I is_closed_on t,Q & I is_halting_on t,Q & f . (Initialize (IExec (I,Q,t))) < f . t & ( for x being Int_position st x in X holds
(IExec (I,Q,t)) . x >= c + ((IExec (I,Q,t)) . (DataLoc ((s . a),i))) ) & ( for x being Int_position st x in Y holds
(IExec (I,Q,t)) . x = t . x ) ) ) holds
IExec ((while>0 (a,i,I)),P,s) = IExec ((while>0 (a,i,I)),P,(Initialize (IExec (I,P,s))))
let f be Function of (product (the_Values_of SCMPDS)),NAT; ( s . (DataLoc ((s . a),i)) > 0 & ( for t being 0 -started State of SCMPDS st f . t = 0 holds
t . (DataLoc ((s . a),i)) <= 0 ) & ( for x being Int_position st x in X holds
s . x >= c + (s . (DataLoc ((s . a),i))) ) & ( for t being 0 -started State of SCMPDS
for Q being Instruction-Sequence of SCMPDS st ( for x being Int_position st x in X holds
t . x >= c + (t . (DataLoc ((s . a),i))) ) & ( for x being Int_position st x in Y holds
t . x = s . x ) & t . a = s . a & t . (DataLoc ((s . a),i)) > 0 holds
( (IExec (I,Q,t)) . a = t . a & I is_closed_on t,Q & I is_halting_on t,Q & f . (Initialize (IExec (I,Q,t))) < f . t & ( for x being Int_position st x in X holds
(IExec (I,Q,t)) . x >= c + ((IExec (I,Q,t)) . (DataLoc ((s . a),i))) ) & ( for x being Int_position st x in Y holds
(IExec (I,Q,t)) . x = t . x ) ) ) implies IExec ((while>0 (a,i,I)),P,s) = IExec ((while>0 (a,i,I)),P,(Initialize (IExec (I,P,s)))) )
A1:
Initialize s = s
by MEMSTR_0:44;
set b = DataLoc ((s . a),i);
set WHL = while>0 (a,i,I);
set pWHL = stop (while>0 (a,i,I));
set P1 = P +* (stop (while>0 (a,i,I)));
set i1 = (a,i) <=0_goto ((card I) + 2);
set i2 = goto (- ((card I) + 1));
assume A2:
s . (DataLoc ((s . a),i)) > 0
; ( ex t being 0 -started State of SCMPDS st
( f . t = 0 & not t . (DataLoc ((s . a),i)) <= 0 ) or ex x being Int_position st
( x in X & not s . x >= c + (s . (DataLoc ((s . a),i))) ) or ex t being 0 -started State of SCMPDS ex Q being Instruction-Sequence of SCMPDS st
( ( for x being Int_position st x in X holds
t . x >= c + (t . (DataLoc ((s . a),i))) ) & ( for x being Int_position st x in Y holds
t . x = s . x ) & t . a = s . a & t . (DataLoc ((s . a),i)) > 0 & not ( (IExec (I,Q,t)) . a = t . a & I is_closed_on t,Q & I is_halting_on t,Q & f . (Initialize (IExec (I,Q,t))) < f . t & ( for x being Int_position st x in X holds
(IExec (I,Q,t)) . x >= c + ((IExec (I,Q,t)) . (DataLoc ((s . a),i))) ) & ( for x being Int_position st x in Y holds
(IExec (I,Q,t)) . x = t . x ) ) ) or IExec ((while>0 (a,i,I)),P,s) = IExec ((while>0 (a,i,I)),P,(Initialize (IExec (I,P,s)))) )
set s4 = Comput ((P +* (stop (while>0 (a,i,I)))),s,1);
set P4 = P +* (stop (while>0 (a,i,I)));
A3:
IC s = 0
by MEMSTR_0:def 11;
A4:
while>0 (a,i,I) = ((a,i) <=0_goto ((card I) + 2)) ';' (I ';' (goto (- ((card I) + 1))))
by SCMPDS_4:15;
A5: Comput ((P +* (stop (while>0 (a,i,I)))),s,(0 + 1)) =
Following ((P +* (stop (while>0 (a,i,I)))),(Comput ((P +* (stop (while>0 (a,i,I)))),s,0)))
by EXTPRO_1:3
.=
Following ((P +* (stop (while>0 (a,i,I)))),s)
.=
Exec (((a,i) <=0_goto ((card I) + 2)),s)
by A4, A1, SCMPDS_6:11
;
set m0 = LifeSpan ((P +* (stop (while>0 (a,i,I)))),s);
set Es = IExec (I,P,s);
set bj = DataLoc (((Initialize (IExec (I,P,s))) . a),i);
set EP = P;
assume A6:
for t being 0 -started State of SCMPDS st f . t = 0 holds
t . (DataLoc ((s . a),i)) <= 0
; ( ex x being Int_position st
( x in X & not s . x >= c + (s . (DataLoc ((s . a),i))) ) or ex t being 0 -started State of SCMPDS ex Q being Instruction-Sequence of SCMPDS st
( ( for x being Int_position st x in X holds
t . x >= c + (t . (DataLoc ((s . a),i))) ) & ( for x being Int_position st x in Y holds
t . x = s . x ) & t . a = s . a & t . (DataLoc ((s . a),i)) > 0 & not ( (IExec (I,Q,t)) . a = t . a & I is_closed_on t,Q & I is_halting_on t,Q & f . (Initialize (IExec (I,Q,t))) < f . t & ( for x being Int_position st x in X holds
(IExec (I,Q,t)) . x >= c + ((IExec (I,Q,t)) . (DataLoc ((s . a),i))) ) & ( for x being Int_position st x in Y holds
(IExec (I,Q,t)) . x = t . x ) ) ) or IExec ((while>0 (a,i,I)),P,s) = IExec ((while>0 (a,i,I)),P,(Initialize (IExec (I,P,s)))) )
assume A7:
for x being Int_position st x in X holds
s . x >= c + (s . (DataLoc ((s . a),i)))
; ( ex t being 0 -started State of SCMPDS ex Q being Instruction-Sequence of SCMPDS st
( ( for x being Int_position st x in X holds
t . x >= c + (t . (DataLoc ((s . a),i))) ) & ( for x being Int_position st x in Y holds
t . x = s . x ) & t . a = s . a & t . (DataLoc ((s . a),i)) > 0 & not ( (IExec (I,Q,t)) . a = t . a & I is_closed_on t,Q & I is_halting_on t,Q & f . (Initialize (IExec (I,Q,t))) < f . t & ( for x being Int_position st x in X holds
(IExec (I,Q,t)) . x >= c + ((IExec (I,Q,t)) . (DataLoc ((s . a),i))) ) & ( for x being Int_position st x in Y holds
(IExec (I,Q,t)) . x = t . x ) ) ) or IExec ((while>0 (a,i,I)),P,s) = IExec ((while>0 (a,i,I)),P,(Initialize (IExec (I,P,s)))) )
assume A8:
for t being 0 -started State of SCMPDS
for Q being Instruction-Sequence of SCMPDS st ( for x being Int_position st x in X holds
t . x >= c + (t . (DataLoc ((s . a),i))) ) & ( for x being Int_position st x in Y holds
t . x = s . x ) & t . a = s . a & t . (DataLoc ((s . a),i)) > 0 holds
( (IExec (I,Q,t)) . a = t . a & I is_closed_on t,Q & I is_halting_on t,Q & f . (Initialize (IExec (I,Q,t))) < f . t & ( for x being Int_position st x in X holds
(IExec (I,Q,t)) . x >= c + ((IExec (I,Q,t)) . (DataLoc ((s . a),i))) ) & ( for x being Int_position st x in Y holds
(IExec (I,Q,t)) . x = t . x ) )
; IExec ((while>0 (a,i,I)),P,s) = IExec ((while>0 (a,i,I)),P,(Initialize (IExec (I,P,s))))
then
while>0 (a,i,I) is_halting_on s,P
by A6, A7, Th22;
then A9:
P +* (stop (while>0 (a,i,I))) halts_on s
by A1, SCMPDS_6:def 3;
A10:
for x being Int_position st x in Y holds
s . x = s . x
;
A11: DataLoc (((Initialize (IExec (I,P,s))) . a),i) =
DataLoc (((IExec (I,P,s)) . a),i)
by SCMPDS_5:15
.=
DataLoc ((s . a),i)
by A2, A7, A8, A10
;
set PI = P +* (stop I);
set m1 = (LifeSpan ((P +* (stop I)),s)) + 2;
set s2 = Initialize (IExec (I,P,s));
set P2 = P +* (stop (while>0 (a,i,I)));
set m2 = LifeSpan ((P +* (stop (while>0 (a,i,I)))),(Initialize (IExec (I,P,s))));
A12:
stop I c= P +* (stop I)
by FUNCT_4:25;
A13: (Initialize (IExec (I,P,s))) . a =
(IExec (I,P,s)) . a
by SCMPDS_5:15
.=
s . a
by A2, A7, A8, A10
;
A14:
now for t being 0 -started State of SCMPDS
for Q being Instruction-Sequence of SCMPDS st ( for x being Int_position st x in X holds
t . x >= c + (t . (DataLoc (((Initialize (IExec (I,P,s))) . a),i))) ) & ( for x being Int_position st x in Y holds
t . x = (Initialize (IExec (I,P,s))) . x ) & t . a = (Initialize (IExec (I,P,s))) . a & t . (DataLoc (((Initialize (IExec (I,P,s))) . a),i)) > 0 holds
( (Initialize (IExec (I,Q,t))) . a = t . a & I is_closed_on t,Q & I is_halting_on t,Q & f . (Initialize (IExec (I,Q,t))) < f . t & ( for x being Int_position st x in X holds
(Initialize (IExec (I,Q,t))) . x >= c + ((Initialize (IExec (I,Q,t))) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i))) ) & ( for x being Int_position st x in Y holds
(IExec (I,Q,t)) . x = t . x ) )let t be
0 -started State of
SCMPDS;
for Q being Instruction-Sequence of SCMPDS st ( for x being Int_position st x in X holds
t . x >= c + (t . (DataLoc (((Initialize (IExec (I,P,s))) . a),i))) ) & ( for x being Int_position st x in Y holds
t . x = (Initialize (IExec (I,P,s))) . x ) & t . a = (Initialize (IExec (I,P,s))) . a & t . (DataLoc (((Initialize (IExec (I,P,s))) . a),i)) > 0 holds
( (Initialize (IExec (I,Q,t))) . a = t . a & I is_closed_on t,Q & I is_halting_on t,Q & f . (Initialize (IExec (I,Q,t))) < f . t & ( for x being Int_position st x in X holds
(Initialize (IExec (I,Q,t))) . x >= c + ((Initialize (IExec (I,Q,t))) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i))) ) & ( for x being Int_position st x in Y holds
(IExec (I,Q,t)) . x = t . x ) )let Q be
Instruction-Sequence of
SCMPDS;
( ( for x being Int_position st x in X holds
t . x >= c + (t . (DataLoc (((Initialize (IExec (I,P,s))) . a),i))) ) & ( for x being Int_position st x in Y holds
t . x = (Initialize (IExec (I,P,s))) . x ) & t . a = (Initialize (IExec (I,P,s))) . a & t . (DataLoc (((Initialize (IExec (I,P,s))) . a),i)) > 0 implies ( (Initialize (IExec (I,Q,t))) . a = t . a & I is_closed_on t,Q & I is_halting_on t,Q & f . (Initialize (IExec (I,Q,t))) < f . t & ( for x being Int_position st x in X holds
(Initialize (IExec (I,Q,t))) . x >= c + ((Initialize (IExec (I,Q,t))) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i))) ) & ( for x being Int_position st x in Y holds
(IExec (I,Q,t)) . x = t . x ) ) )assume that A15:
for
x being
Int_position st
x in X holds
t . x >= c + (t . (DataLoc (((Initialize (IExec (I,P,s))) . a),i)))
and A16:
for
x being
Int_position st
x in Y holds
t . x = (Initialize (IExec (I,P,s))) . x
and A17:
t . a = (Initialize (IExec (I,P,s))) . a
and A18:
t . (DataLoc (((Initialize (IExec (I,P,s))) . a),i)) > 0
;
( (Initialize (IExec (I,Q,t))) . a = t . a & I is_closed_on t,Q & I is_halting_on t,Q & f . (Initialize (IExec (I,Q,t))) < f . t & ( for x being Int_position st x in X holds
(Initialize (IExec (I,Q,t))) . x >= c + ((Initialize (IExec (I,Q,t))) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i))) ) & ( for x being Int_position st x in Y holds
(IExec (I,Q,t)) . x = t . x ) )thus (Initialize (IExec (I,Q,t))) . a =
(IExec (I,Q,t)) . a
by SCMPDS_5:15
.=
t . a
by A8, A13, A15, A17, A18, A19
;
( I is_closed_on t,Q & I is_halting_on t,Q & f . (Initialize (IExec (I,Q,t))) < f . t & ( for x being Int_position st x in X holds
(Initialize (IExec (I,Q,t))) . x >= c + ((Initialize (IExec (I,Q,t))) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i))) ) & ( for x being Int_position st x in Y holds
(IExec (I,Q,t)) . x = t . x ) )A21:
t . a =
(IExec (I,P,s)) . a
by A17, SCMPDS_5:15
.=
s . a
by A2, A7, A8, A10
;
hence
(
I is_closed_on t,
Q &
I is_halting_on t,
Q )
by A8, A15, A17, A18, A19;
( f . (Initialize (IExec (I,Q,t))) < f . t & ( for x being Int_position st x in X holds
(Initialize (IExec (I,Q,t))) . x >= c + ((Initialize (IExec (I,Q,t))) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i))) ) & ( for x being Int_position st x in Y holds
(IExec (I,Q,t)) . x = t . x ) )thus
f . (Initialize (IExec (I,Q,t))) < f . t
by A8, A15, A17, A18, A19, A21;
( ( for x being Int_position st x in X holds
(Initialize (IExec (I,Q,t))) . x >= c + ((Initialize (IExec (I,Q,t))) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i))) ) & ( for x being Int_position st x in Y holds
(IExec (I,Q,t)) . x = t . x ) )thus
for
x being
Int_position st
x in X holds
(Initialize (IExec (I,Q,t))) . x >= c + ((Initialize (IExec (I,Q,t))) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i)))
for x being Int_position st x in Y holds
(IExec (I,Q,t)) . x = t . xproof
let x be
Int_position;
( x in X implies (Initialize (IExec (I,Q,t))) . x >= c + ((Initialize (IExec (I,Q,t))) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i))) )
(
(Initialize (IExec (I,Q,t))) . x = (IExec (I,Q,t)) . x &
(Initialize (IExec (I,Q,t))) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i)) = (IExec (I,Q,t)) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i)) )
by SCMPDS_5:15;
hence
(
x in X implies
(Initialize (IExec (I,Q,t))) . x >= c + ((Initialize (IExec (I,Q,t))) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i))) )
by A8, A13, A15, A17, A18, A19;
verum
end; thus
for
x being
Int_position st
x in Y holds
(IExec (I,Q,t)) . x = t . x
by A8, A15, A17, A18, A19, A21;
verum end;
A22:
for x being Int_position st x in X holds
(Initialize (IExec (I,P,s))) . x >= c + ((Initialize (IExec (I,P,s))) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i)))
proof
let x be
Int_position;
( x in X implies (Initialize (IExec (I,P,s))) . x >= c + ((Initialize (IExec (I,P,s))) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i))) )
A23:
(Initialize (IExec (I,P,s))) . x = (IExec (I,P,s)) . x
by SCMPDS_5:15;
A24:
(Initialize (IExec (I,P,s))) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i)) = (IExec (I,P,s)) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i))
by SCMPDS_5:15;
assume
x in X
;
(Initialize (IExec (I,P,s))) . x >= c + ((Initialize (IExec (I,P,s))) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i)))
hence
(Initialize (IExec (I,P,s))) . x >= c + ((Initialize (IExec (I,P,s))) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i)))
by A2, A7, A8, A10, A13, A23, A24;
verum
end;
for t being 0 -started State of SCMPDS
for Q being Instruction-Sequence of SCMPDS st ( for x being Int_position st x in X holds
t . x >= c + (t . (DataLoc (((Initialize (IExec (I,P,s))) . a),i))) ) & ( for x being Int_position st x in Y holds
t . x = (Initialize (IExec (I,P,s))) . x ) & t . a = (Initialize (IExec (I,P,s))) . a & t . (DataLoc (((Initialize (IExec (I,P,s))) . a),i)) > 0 holds
( (IExec (I,Q,t)) . a = t . a & I is_closed_on t,Q & I is_halting_on t,Q & f . (Initialize (IExec (I,Q,t))) < f . t & ( for x being Int_position st x in X holds
(IExec (I,Q,t)) . x >= c + ((IExec (I,Q,t)) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i))) ) & ( for x being Int_position st x in Y holds
(IExec (I,Q,t)) . x = t . x ) )
proof
let t be
0 -started State of
SCMPDS;
for Q being Instruction-Sequence of SCMPDS st ( for x being Int_position st x in X holds
t . x >= c + (t . (DataLoc (((Initialize (IExec (I,P,s))) . a),i))) ) & ( for x being Int_position st x in Y holds
t . x = (Initialize (IExec (I,P,s))) . x ) & t . a = (Initialize (IExec (I,P,s))) . a & t . (DataLoc (((Initialize (IExec (I,P,s))) . a),i)) > 0 holds
( (IExec (I,Q,t)) . a = t . a & I is_closed_on t,Q & I is_halting_on t,Q & f . (Initialize (IExec (I,Q,t))) < f . t & ( for x being Int_position st x in X holds
(IExec (I,Q,t)) . x >= c + ((IExec (I,Q,t)) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i))) ) & ( for x being Int_position st x in Y holds
(IExec (I,Q,t)) . x = t . x ) )let Q be
Instruction-Sequence of
SCMPDS;
( ( for x being Int_position st x in X holds
t . x >= c + (t . (DataLoc (((Initialize (IExec (I,P,s))) . a),i))) ) & ( for x being Int_position st x in Y holds
t . x = (Initialize (IExec (I,P,s))) . x ) & t . a = (Initialize (IExec (I,P,s))) . a & t . (DataLoc (((Initialize (IExec (I,P,s))) . a),i)) > 0 implies ( (IExec (I,Q,t)) . a = t . a & I is_closed_on t,Q & I is_halting_on t,Q & f . (Initialize (IExec (I,Q,t))) < f . t & ( for x being Int_position st x in X holds
(IExec (I,Q,t)) . x >= c + ((IExec (I,Q,t)) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i))) ) & ( for x being Int_position st x in Y holds
(IExec (I,Q,t)) . x = t . x ) ) )
assume that A25:
for
x being
Int_position st
x in X holds
t . x >= c + (t . (DataLoc (((Initialize (IExec (I,P,s))) . a),i)))
and A26:
for
x being
Int_position st
x in Y holds
t . x = (Initialize (IExec (I,P,s))) . x
and A27:
t . a = (Initialize (IExec (I,P,s))) . a
and A28:
t . (DataLoc (((Initialize (IExec (I,P,s))) . a),i)) > 0
;
( (IExec (I,Q,t)) . a = t . a & I is_closed_on t,Q & I is_halting_on t,Q & f . (Initialize (IExec (I,Q,t))) < f . t & ( for x being Int_position st x in X holds
(IExec (I,Q,t)) . x >= c + ((IExec (I,Q,t)) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i))) ) & ( for x being Int_position st x in Y holds
(IExec (I,Q,t)) . x = t . x ) )
thus (IExec (I,Q,t)) . a =
(Initialize (IExec (I,Q,t))) . a
by SCMPDS_5:15
.=
t . a
by A14, A25, A26, A27, A28
;
( I is_closed_on t,Q & I is_halting_on t,Q & f . (Initialize (IExec (I,Q,t))) < f . t & ( for x being Int_position st x in X holds
(IExec (I,Q,t)) . x >= c + ((IExec (I,Q,t)) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i))) ) & ( for x being Int_position st x in Y holds
(IExec (I,Q,t)) . x = t . x ) )
thus
(
I is_closed_on t,
Q &
I is_halting_on t,
Q )
by A14, A25, A26, A27, A28;
( f . (Initialize (IExec (I,Q,t))) < f . t & ( for x being Int_position st x in X holds
(IExec (I,Q,t)) . x >= c + ((IExec (I,Q,t)) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i))) ) & ( for x being Int_position st x in Y holds
(IExec (I,Q,t)) . x = t . x ) )
thus
f . (Initialize (IExec (I,Q,t))) < f . t
by A14, A25, A26, A27, A28;
( ( for x being Int_position st x in X holds
(IExec (I,Q,t)) . x >= c + ((IExec (I,Q,t)) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i))) ) & ( for x being Int_position st x in Y holds
(IExec (I,Q,t)) . x = t . x ) )
thus
for
x being
Int_position st
x in X holds
(IExec (I,Q,t)) . x >= c + ((IExec (I,Q,t)) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i)))
for x being Int_position st x in Y holds
(IExec (I,Q,t)) . x = t . xproof
let x be
Int_position;
( x in X implies (IExec (I,Q,t)) . x >= c + ((IExec (I,Q,t)) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i))) )
(
(IExec (I,Q,t)) . x = (Initialize (IExec (I,Q,t))) . x &
(IExec (I,Q,t)) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i)) = (Initialize (IExec (I,Q,t))) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i)) )
by SCMPDS_5:15;
hence
(
x in X implies
(IExec (I,Q,t)) . x >= c + ((IExec (I,Q,t)) . (DataLoc (((Initialize (IExec (I,P,s))) . a),i))) )
by A14, A25, A26, A27, A28;
verum
end;
thus
for
x being
Int_position st
x in Y holds
(IExec (I,Q,t)) . x = t . x
by A14, A25, A26, A27, A28;
verum
end;
then
while>0 (a,i,I) is_halting_on Initialize (IExec (I,P,s)),P
by A6, A11, Th22, A22;
then A29:
P +* (stop (while>0 (a,i,I))) halts_on Initialize (Initialize (IExec (I,P,s)))
by SCMPDS_6:def 3;
for a being Int_position holds s . a = (Comput ((P +* (stop (while>0 (a,i,I)))),s,1)) . a
by A5, SCMPDS_2:56;
then A30:
DataPart s = DataPart (Comput ((P +* (stop (while>0 (a,i,I)))),s,1))
by SCMPDS_4:8;
set mI = LifeSpan ((P +* (stop I)),s);
set s5 = Comput ((P +* (stop (while>0 (a,i,I)))),(Comput ((P +* (stop (while>0 (a,i,I)))),s,1)),(LifeSpan ((P +* (stop I)),s)));
set P5 = P +* (stop (while>0 (a,i,I)));
set l1 = (card I) + 1;
A31:
while>0 (a,i,I) c= stop (while>0 (a,i,I))
by AFINSQ_1:74;
stop (while>0 (a,i,I)) c= P +* (stop (while>0 (a,i,I)))
by FUNCT_4:25;
then A32:
while>0 (a,i,I) c= P +* (stop (while>0 (a,i,I)))
by A31, XBOOLE_1:1;
set m3 = (LifeSpan ((P +* (stop I)),s)) + 1;
set s7 = Comput ((P +* (stop (while>0 (a,i,I)))),s,(((LifeSpan ((P +* (stop I)),s)) + 1) + 1));
set P7 = P +* (stop (while>0 (a,i,I)));
set s6 = Comput ((P +* (stop (while>0 (a,i,I)))),s,((LifeSpan ((P +* (stop I)),s)) + 1));
set P6 = P +* (stop (while>0 (a,i,I)));
(card I) + 1 < (card I) + 2
by XREAL_1:6;
then A33:
(card I) + 1 in dom (while>0 (a,i,I))
by Th16;
Shift (I,1) c= while>0 (a,i,I)
by Lm4;
then A34:
Shift (I,1) c= P +* (stop (while>0 (a,i,I)))
by A32, XBOOLE_1:1;
I is_halting_on s,P
by A2, A7, A8, A10;
then A35:
P +* (stop I) halts_on s
by A1, SCMPDS_6:def 3;
(P +* (stop I)) +* (stop I) halts_on s
by A35;
then A36:
I is_halting_on s,P +* (stop I)
by A1, SCMPDS_6:def 3;
A37: IC (Comput ((P +* (stop (while>0 (a,i,I)))),s,1)) =
(IC s) + 1
by A2, A5, SCMPDS_2:56
.=
0 + 1
by A3
;
A38:
I is_closed_on s,P +* (stop I)
by A2, A7, A8, A10;
then A39:
IC (Comput ((P +* (stop (while>0 (a,i,I)))),(Comput ((P +* (stop (while>0 (a,i,I)))),s,1)),(LifeSpan ((P +* (stop I)),s)))) = (card I) + 1
by A12, A36, A37, A30, A34, SCMPDS_7:18;
A40:
(P +* (stop (while>0 (a,i,I)))) /. (IC (Comput ((P +* (stop (while>0 (a,i,I)))),s,((LifeSpan ((P +* (stop I)),s)) + 1)))) = (P +* (stop (while>0 (a,i,I)))) . (IC (Comput ((P +* (stop (while>0 (a,i,I)))),s,((LifeSpan ((P +* (stop I)),s)) + 1))))
by PBOOLE:143;
A41:
Comput ((P +* (stop (while>0 (a,i,I)))),s,((LifeSpan ((P +* (stop I)),s)) + 1)) = Comput ((P +* (stop (while>0 (a,i,I)))),(Comput ((P +* (stop (while>0 (a,i,I)))),s,1)),(LifeSpan ((P +* (stop I)),s)))
by EXTPRO_1:4;
then A42: CurInstr ((P +* (stop (while>0 (a,i,I)))),(Comput ((P +* (stop (while>0 (a,i,I)))),s,((LifeSpan ((P +* (stop I)),s)) + 1)))) =
(P +* (stop (while>0 (a,i,I)))) . ((card I) + 1)
by A12, A36, A38, A37, A30, A34, A40, SCMPDS_7:18
.=
(while>0 (a,i,I)) . ((card I) + 1)
by A33, A32, GRFUNC_1:2
.=
goto (- ((card I) + 1))
by Th17
;
A43: Comput ((P +* (stop (while>0 (a,i,I)))),s,(((LifeSpan ((P +* (stop I)),s)) + 1) + 1)) =
Following ((P +* (stop (while>0 (a,i,I)))),(Comput ((P +* (stop (while>0 (a,i,I)))),s,((LifeSpan ((P +* (stop I)),s)) + 1))))
by EXTPRO_1:3
.=
Exec ((goto (- ((card I) + 1))),(Comput ((P +* (stop (while>0 (a,i,I)))),s,((LifeSpan ((P +* (stop I)),s)) + 1))))
by A42
;
then IC (Comput ((P +* (stop (while>0 (a,i,I)))),s,(((LifeSpan ((P +* (stop I)),s)) + 1) + 1))) =
ICplusConst ((Comput ((P +* (stop (while>0 (a,i,I)))),s,((LifeSpan ((P +* (stop I)),s)) + 1))),(0 - ((card I) + 1)))
by SCMPDS_2:54
.=
0
by A39, A41, SCMPDS_7:1
;
then A44:
IC (Initialize (IExec (I,P,s))) = IC (Comput ((P +* (stop (while>0 (a,i,I)))),s,((LifeSpan ((P +* (stop I)),s)) + 2)))
by MEMSTR_0:def 11;
A45:
DataPart (Comput ((P +* (stop I)),s,(LifeSpan ((P +* (stop I)),s)))) = DataPart (Comput ((P +* (stop (while>0 (a,i,I)))),(Comput ((P +* (stop (while>0 (a,i,I)))),s,1)),(LifeSpan ((P +* (stop I)),s))))
by A12, A36, A38, A37, A30, A34, SCMPDS_7:18;
now for x being Int_position holds (Comput ((P +* (stop (while>0 (a,i,I)))),s,(((LifeSpan ((P +* (stop I)),s)) + 1) + 1))) . x = (Initialize (IExec (I,P,s))) . xlet x be
Int_position;
(Comput ((P +* (stop (while>0 (a,i,I)))),s,(((LifeSpan ((P +* (stop I)),s)) + 1) + 1))) . x = (Initialize (IExec (I,P,s))) . xA46:
not
x in dom (Start-At (0,SCMPDS))
by SCMPDS_4:18;
(Comput ((P +* (stop (while>0 (a,i,I)))),(Comput ((P +* (stop (while>0 (a,i,I)))),s,1)),(LifeSpan ((P +* (stop I)),s)))) . x =
(Comput ((P +* (stop I)),s,(LifeSpan ((P +* (stop I)),s)))) . x
by A45, SCMPDS_4:8
.=
(Result ((P +* (stop I)),s)) . x
by A35, EXTPRO_1:23
.=
(IExec (I,P,s)) . x
by SCMPDS_4:def 5
;
hence (Comput ((P +* (stop (while>0 (a,i,I)))),s,(((LifeSpan ((P +* (stop I)),s)) + 1) + 1))) . x =
(IExec (I,P,s)) . x
by A41, A43, SCMPDS_2:54
.=
(Initialize (IExec (I,P,s))) . x
by A46, FUNCT_4:11
;
verum end;
then A47:
DataPart (Comput ((P +* (stop (while>0 (a,i,I)))),s,(((LifeSpan ((P +* (stop I)),s)) + 1) + 1))) = DataPart (Initialize (IExec (I,P,s)))
by SCMPDS_4:8;
A48:
Comput ((P +* (stop (while>0 (a,i,I)))),s,((LifeSpan ((P +* (stop I)),s)) + 2)) = Initialize (IExec (I,P,s))
by A47, A44, MEMSTR_0:78;
then
CurInstr ((P +* (stop (while>0 (a,i,I)))),(Comput ((P +* (stop (while>0 (a,i,I)))),s,((LifeSpan ((P +* (stop I)),s)) + 2)))) = (a,i) <=0_goto ((card I) + 2)
by A4, SCMPDS_6:11;
then
LifeSpan ((P +* (stop (while>0 (a,i,I)))),s) > (LifeSpan ((P +* (stop I)),s)) + 2
by A9, EXTPRO_1:36, SCMPDS_6:17;
then consider nn being Nat such that
A49:
LifeSpan ((P +* (stop (while>0 (a,i,I)))),s) = ((LifeSpan ((P +* (stop I)),s)) + 2) + nn
by NAT_1:10;
reconsider nn = nn as Nat ;
Comput ((P +* (stop (while>0 (a,i,I)))),s,(((LifeSpan ((P +* (stop I)),s)) + 2) + (LifeSpan ((P +* (stop (while>0 (a,i,I)))),(Initialize (IExec (I,P,s))))))) = Comput ((P +* (stop (while>0 (a,i,I)))),(Initialize (IExec (I,P,s))),(LifeSpan ((P +* (stop (while>0 (a,i,I)))),(Initialize (IExec (I,P,s))))))
by A48, EXTPRO_1:4;
then
CurInstr ((P +* (stop (while>0 (a,i,I)))),(Comput ((P +* (stop (while>0 (a,i,I)))),s,(((LifeSpan ((P +* (stop I)),s)) + 2) + (LifeSpan ((P +* (stop (while>0 (a,i,I)))),(Initialize (IExec (I,P,s))))))))) = halt SCMPDS
by A29, EXTPRO_1:def 15;
then
((LifeSpan ((P +* (stop I)),s)) + 2) + (LifeSpan ((P +* (stop (while>0 (a,i,I)))),(Initialize (IExec (I,P,s))))) >= LifeSpan ((P +* (stop (while>0 (a,i,I)))),s)
by A9, EXTPRO_1:def 15;
then A50:
LifeSpan ((P +* (stop (while>0 (a,i,I)))),(Initialize (IExec (I,P,s)))) >= nn
by A49, XREAL_1:6;
A51:
Comput ((P +* (stop (while>0 (a,i,I)))),s,(LifeSpan ((P +* (stop (while>0 (a,i,I)))),s))) = Comput ((P +* (stop (while>0 (a,i,I)))),(Initialize (IExec (I,P,s))),nn)
by A48, A49, EXTPRO_1:4;
then
CurInstr ((P +* (stop (while>0 (a,i,I)))),(Comput ((P +* (stop (while>0 (a,i,I)))),(Initialize (IExec (I,P,s))),nn))) = halt SCMPDS
by A9, EXTPRO_1:def 15;
then
nn >= LifeSpan ((P +* (stop (while>0 (a,i,I)))),(Initialize (IExec (I,P,s))))
by A29, EXTPRO_1:def 15;
then
nn = LifeSpan ((P +* (stop (while>0 (a,i,I)))),(Initialize (IExec (I,P,s))))
by A50, XXREAL_0:1;
then
Result ((P +* (stop (while>0 (a,i,I)))),s) = Comput ((P +* (stop (while>0 (a,i,I)))),(Initialize (IExec (I,P,s))),(LifeSpan ((P +* (stop (while>0 (a,i,I)))),(Initialize (IExec (I,P,s))))))
by A9, A51, EXTPRO_1:23;
hence IExec ((while>0 (a,i,I)),P,s) =
Comput ((P +* (stop (while>0 (a,i,I)))),(Initialize (IExec (I,P,s))),(LifeSpan ((P +* (stop (while>0 (a,i,I)))),(Initialize (IExec (I,P,s))))))
by SCMPDS_4:def 5
.=
Result ((P +* (stop (while>0 (a,i,I)))),(Initialize (IExec (I,P,s))))
by A29, EXTPRO_1:23
.=
IExec ((while>0 (a,i,I)),P,(Initialize (IExec (I,P,s))))
by SCMPDS_4:def 5
;
verum