:: SCMPDS_8 semantic presentation
set c1 = the Instruction-Locations of SCMPDS ;
set c2 = SCM-Data-Loc ;
theorem Th1: :: SCMPDS_8:1
:: deftheorem Def1 defines Dstate SCMPDS_8:def 1 :
theorem Th2: :: SCMPDS_8:2
theorem Th3: :: SCMPDS_8:3
theorem Th4: :: SCMPDS_8:4
theorem Th5: :: SCMPDS_8:5
:: deftheorem Def2 defines while<0 SCMPDS_8:def 2 :
theorem Th6: :: SCMPDS_8:6
Lemma8:
for b1 being Int_position
for b2 being Integer
for b3 being Program-block holds card (stop (while<0 b1,b2,b3)) = (card b3) + 3
theorem Th7: :: SCMPDS_8:7
theorem Th8: :: SCMPDS_8:8
Lemma11:
for b1 being Int_position
for b2 being Integer
for b3 being Program-block holds while<0 b1,b2,b3 = (b1,b2 >=0_goto ((card b3) + 2)) ';' (b3 ';' (goto (- ((card b3) + 1))))
by SCMPDS_4:51;
theorem Th9: :: SCMPDS_8:9
theorem Th10: :: SCMPDS_8:10
theorem Th11: :: SCMPDS_8:11
theorem Th12: :: SCMPDS_8:12
Lemma14:
for b1 being Program-block
for b2 being Int_position
for b3 being Integer holds Shift b1,1 c= while<0 b2,b3,b1
theorem Th13: :: SCMPDS_8:13
for
b1 being
State of
SCMPDS for
b2 being
shiftable No-StopCode Program-block for
b3 being
Int_position for
b4 being
Integer for
b5 being
set for
b6 being
Function of
product the
Object-Kind of
SCMPDS ,
NAT st
card b2 > 0 & ( for
b7 being
State of
SCMPDS st
b6 . (Dstate b7) = 0 holds
b7 . (DataLoc (b1 . b3),b4) >= 0 ) & ( for
b7 being
State of
SCMPDS st ( for
b8 being
Int_position st
b8 in b5 holds
b7 . b8 = b1 . b8 ) &
b7 . b3 = b1 . b3 &
b7 . (DataLoc (b1 . b3),b4) < 0 holds
(
(IExec b2,b7) . b3 = b7 . b3 &
b6 . (Dstate (IExec b2,b7)) < b6 . (Dstate b7) &
b2 is_closed_on b7 &
b2 is_halting_on b7 & ( for
b8 being
Int_position st
b8 in b5 holds
(IExec b2,b7) . b8 = b7 . b8 ) ) ) holds
(
while<0 b3,
b4,
b2 is_closed_on b1 &
while<0 b3,
b4,
b2 is_halting_on b1 )
theorem Th14: :: SCMPDS_8:14
for
b1 being
State of
SCMPDS for
b2 being
shiftable No-StopCode Program-block for
b3 being
Int_position for
b4 being
Integer for
b5 being
set for
b6 being
Function of
product the
Object-Kind of
SCMPDS ,
NAT st
card b2 > 0 &
b1 . (DataLoc (b1 . b3),b4) < 0 & ( for
b7 being
State of
SCMPDS st
b6 . (Dstate b7) = 0 holds
b7 . (DataLoc (b1 . b3),b4) >= 0 ) & ( for
b7 being
State of
SCMPDS st ( for
b8 being
Int_position st
b8 in b5 holds
b7 . b8 = b1 . b8 ) &
b7 . b3 = b1 . b3 &
b7 . (DataLoc (b1 . b3),b4) < 0 holds
(
(IExec b2,b7) . b3 = b7 . b3 &
b2 is_closed_on b7 &
b2 is_halting_on b7 &
b6 . (Dstate (IExec b2,b7)) < b6 . (Dstate b7) & ( for
b8 being
Int_position st
b8 in b5 holds
(IExec b2,b7) . b8 = b7 . b8 ) ) ) holds
IExec (while<0 b3,b4,b2),
b1 = IExec (while<0 b3,b4,b2),
(IExec b2,b1)
theorem Th15: :: SCMPDS_8:15
for
b1 being
State of
SCMPDS for
b2 being
shiftable No-StopCode Program-block for
b3 being
Int_position for
b4 being
Integer for
b5 being
set st
card b2 > 0 & ( for
b6 being
State of
SCMPDS st ( for
b7 being
Int_position st
b7 in b5 holds
b6 . b7 = b1 . b7 ) &
b6 . b3 = b1 . b3 &
b6 . (DataLoc (b1 . b3),b4) < 0 holds
(
(IExec b2,b6) . b3 = b6 . b3 &
(IExec b2,b6) . (DataLoc (b1 . b3),b4) > b6 . (DataLoc (b1 . b3),b4) &
b2 is_closed_on b6 &
b2 is_halting_on b6 & ( for
b7 being
Int_position st
b7 in b5 holds
(IExec b2,b6) . b7 = b6 . b7 ) ) ) holds
(
while<0 b3,
b4,
b2 is_closed_on b1 &
while<0 b3,
b4,
b2 is_halting_on b1 )
theorem Th16: :: SCMPDS_8:16
for
b1 being
State of
SCMPDS for
b2 being
shiftable No-StopCode Program-block for
b3 being
Int_position for
b4 being
Integer for
b5 being
set st
b1 . (DataLoc (b1 . b3),b4) < 0 &
card b2 > 0 & ( for
b6 being
State of
SCMPDS st ( for
b7 being
Int_position st
b7 in b5 holds
b6 . b7 = b1 . b7 ) &
b6 . b3 = b1 . b3 &
b6 . (DataLoc (b1 . b3),b4) < 0 holds
(
(IExec b2,b6) . b3 = b6 . b3 &
(IExec b2,b6) . (DataLoc (b1 . b3),b4) > b6 . (DataLoc (b1 . b3),b4) &
b2 is_closed_on b6 &
b2 is_halting_on b6 & ( for
b7 being
Int_position st
b7 in b5 holds
(IExec b2,b6) . b7 = b6 . b7 ) ) ) holds
IExec (while<0 b3,b4,b2),
b1 = IExec (while<0 b3,b4,b2),
(IExec b2,b1)
:: deftheorem Def3 defines while>0 SCMPDS_8:def 3 :
theorem Th17: :: SCMPDS_8:17
Lemma17:
for b1 being Int_position
for b2 being Integer
for b3 being Program-block holds card (stop (while>0 b1,b2,b3)) = (card b3) + 3
theorem Th18: :: SCMPDS_8:18
theorem Th19: :: SCMPDS_8:19
Lemma20:
for b1 being Int_position
for b2 being Integer
for b3 being Program-block holds while>0 b1,b2,b3 = (b1,b2 <=0_goto ((card b3) + 2)) ';' (b3 ';' (goto (- ((card b3) + 1))))
by SCMPDS_4:51;
theorem Th20: :: SCMPDS_8:20
theorem Th21: :: SCMPDS_8:21
theorem Th22: :: SCMPDS_8:22
theorem Th23: :: SCMPDS_8:23
Lemma23:
for b1 being Program-block
for b2 being Int_position
for b3 being Integer holds Shift b1,1 c= while>0 b2,b3,b1
theorem Th24: :: SCMPDS_8:24
for
b1 being
State of
SCMPDS for
b2 being
shiftable No-StopCode Program-block for
b3 being
Int_position for
b4,
b5 being
Integer for
b6,
b7 being
set for
b8 being
Function of
product the
Object-Kind of
SCMPDS ,
NAT st
card b2 > 0 & ( for
b9 being
State of
SCMPDS st
b8 . (Dstate b9) = 0 holds
b9 . (DataLoc (b1 . b3),b4) <= 0 ) & ( for
b9 being
Int_position st
b9 in b6 holds
b1 . b9 >= b5 + (b1 . (DataLoc (b1 . b3),b4)) ) & ( for
b9 being
State of
SCMPDS st ( for
b10 being
Int_position st
b10 in b6 holds
b9 . b10 >= b5 + (b9 . (DataLoc (b1 . b3),b4)) ) & ( for
b10 being
Int_position st
b10 in b7 holds
b9 . b10 = b1 . b10 ) &
b9 . b3 = b1 . b3 &
b9 . (DataLoc (b1 . b3),b4) > 0 holds
(
(IExec b2,b9) . b3 = b9 . b3 &
b2 is_closed_on b9 &
b2 is_halting_on b9 &
b8 . (Dstate (IExec b2,b9)) < b8 . (Dstate b9) & ( for
b10 being
Int_position st
b10 in b6 holds
(IExec b2,b9) . b10 >= b5 + ((IExec b2,b9) . (DataLoc (b1 . b3),b4)) ) & ( for
b10 being
Int_position st
b10 in b7 holds
(IExec b2,b9) . b10 = b9 . b10 ) ) ) holds
(
while>0 b3,
b4,
b2 is_closed_on b1 &
while>0 b3,
b4,
b2 is_halting_on b1 )
theorem Th25: :: SCMPDS_8:25
for
b1 being
State of
SCMPDS for
b2 being
shiftable No-StopCode Program-block for
b3 being
Int_position for
b4,
b5 being
Integer for
b6,
b7 being
set for
b8 being
Function of
product the
Object-Kind of
SCMPDS ,
NAT st
b1 . (DataLoc (b1 . b3),b4) > 0 &
card b2 > 0 & ( for
b9 being
State of
SCMPDS st
b8 . (Dstate b9) = 0 holds
b9 . (DataLoc (b1 . b3),b4) <= 0 ) & ( for
b9 being
Int_position st
b9 in b6 holds
b1 . b9 >= b5 + (b1 . (DataLoc (b1 . b3),b4)) ) & ( for
b9 being
State of
SCMPDS st ( for
b10 being
Int_position st
b10 in b6 holds
b9 . b10 >= b5 + (b9 . (DataLoc (b1 . b3),b4)) ) & ( for
b10 being
Int_position st
b10 in b7 holds
b9 . b10 = b1 . b10 ) &
b9 . b3 = b1 . b3 &
b9 . (DataLoc (b1 . b3),b4) > 0 holds
(
(IExec b2,b9) . b3 = b9 . b3 &
b2 is_closed_on b9 &
b2 is_halting_on b9 &
b8 . (Dstate (IExec b2,b9)) < b8 . (Dstate b9) & ( for
b10 being
Int_position st
b10 in b6 holds
(IExec b2,b9) . b10 >= b5 + ((IExec b2,b9) . (DataLoc (b1 . b3),b4)) ) & ( for
b10 being
Int_position st
b10 in b7 holds
(IExec b2,b9) . b10 = b9 . b10 ) ) ) holds
IExec (while>0 b3,b4,b2),
b1 = IExec (while>0 b3,b4,b2),
(IExec b2,b1)
theorem Th26: :: SCMPDS_8:26
for
b1 being
State of
SCMPDS for
b2 being
shiftable No-StopCode Program-block for
b3 being
Int_position for
b4 being
Integer for
b5 being
set for
b6 being
Function of
product the
Object-Kind of
SCMPDS ,
NAT st
card b2 > 0 & ( for
b7 being
State of
SCMPDS st
b6 . (Dstate b7) = 0 holds
b7 . (DataLoc (b1 . b3),b4) <= 0 ) & ( for
b7 being
State of
SCMPDS st ( for
b8 being
Int_position st
b8 in b5 holds
b7 . b8 = b1 . b8 ) &
b7 . b3 = b1 . b3 &
b7 . (DataLoc (b1 . b3),b4) > 0 holds
(
(IExec b2,b7) . b3 = b7 . b3 &
b2 is_closed_on b7 &
b2 is_halting_on b7 &
b6 . (Dstate (IExec b2,b7)) < b6 . (Dstate b7) & ( for
b8 being
Int_position st
b8 in b5 holds
(IExec b2,b7) . b8 = b7 . b8 ) ) ) holds
(
while>0 b3,
b4,
b2 is_closed_on b1 &
while>0 b3,
b4,
b2 is_halting_on b1 & (
b1 . (DataLoc (b1 . b3),b4) > 0 implies
IExec (while>0 b3,b4,b2),
b1 = IExec (while>0 b3,b4,b2),
(IExec b2,b1) ) )
theorem Th27: :: SCMPDS_8:27
for
b1 being
State of
SCMPDS for
b2 being
shiftable No-StopCode Program-block for
b3 being
Int_position for
b4,
b5 being
Integer for
b6,
b7 being
set st
card b2 > 0 & ( for
b8 being
Int_position st
b8 in b6 holds
b1 . b8 >= b5 + (b1 . (DataLoc (b1 . b3),b4)) ) & ( for
b8 being
State of
SCMPDS st ( for
b9 being
Int_position st
b9 in b6 holds
b8 . b9 >= b5 + (b8 . (DataLoc (b1 . b3),b4)) ) & ( for
b9 being
Int_position st
b9 in b7 holds
b8 . b9 = b1 . b9 ) &
b8 . b3 = b1 . b3 &
b8 . (DataLoc (b1 . b3),b4) > 0 holds
(
(IExec b2,b8) . b3 = b8 . b3 &
b2 is_closed_on b8 &
b2 is_halting_on b8 &
(IExec b2,b8) . (DataLoc (b1 . b3),b4) < b8 . (DataLoc (b1 . b3),b4) & ( for
b9 being
Int_position st
b9 in b6 holds
(IExec b2,b8) . b9 >= b5 + ((IExec b2,b8) . (DataLoc (b1 . b3),b4)) ) & ( for
b9 being
Int_position st
b9 in b7 holds
(IExec b2,b8) . b9 = b8 . b9 ) ) ) holds
(
while>0 b3,
b4,
b2 is_closed_on b1 &
while>0 b3,
b4,
b2 is_halting_on b1 & (
b1 . (DataLoc (b1 . b3),b4) > 0 implies
IExec (while>0 b3,b4,b2),
b1 = IExec (while>0 b3,b4,b2),
(IExec b2,b1) ) )
theorem Th28: :: SCMPDS_8:28
for
b1 being
State of
SCMPDS for
b2 being
shiftable No-StopCode Program-block for
b3 being
Int_position for
b4 being
Integer for
b5 being
set st
card b2 > 0 & ( for
b6 being
State of
SCMPDS st ( for
b7 being
Int_position st
b7 in b5 holds
b6 . b7 = b1 . b7 ) &
b6 . b3 = b1 . b3 &
b6 . (DataLoc (b1 . b3),b4) > 0 holds
(
(IExec b2,b6) . b3 = b6 . b3 &
b2 is_closed_on b6 &
b2 is_halting_on b6 &
(IExec b2,b6) . (DataLoc (b1 . b3),b4) < b6 . (DataLoc (b1 . b3),b4) & ( for
b7 being
Int_position st
b7 in b5 holds
(IExec b2,b6) . b7 = b6 . b7 ) ) ) holds
(
while>0 b3,
b4,
b2 is_closed_on b1 &
while>0 b3,
b4,
b2 is_halting_on b1 & (
b1 . (DataLoc (b1 . b3),b4) > 0 implies
IExec (while>0 b3,b4,b2),
b1 = IExec (while>0 b3,b4,b2),
(IExec b2,b1) ) )
theorem Th29: :: SCMPDS_8:29
for
b1 being
State of
SCMPDS for
b2 being
shiftable No-StopCode Program-block for
b3 being
Int_position for
b4,
b5 being
Integer for
b6 being
set st
card b2 > 0 & ( for
b7 being
Int_position st
b7 in b6 holds
b1 . b7 >= b5 + (b1 . (DataLoc (b1 . b3),b4)) ) & ( for
b7 being
State of
SCMPDS st ( for
b8 being
Int_position st
b8 in b6 holds
b7 . b8 >= b5 + (b7 . (DataLoc (b1 . b3),b4)) ) &
b7 . b3 = b1 . b3 &
b7 . (DataLoc (b1 . b3),b4) > 0 holds
(
(IExec b2,b7) . b3 = b7 . b3 &
b2 is_closed_on b7 &
b2 is_halting_on b7 &
(IExec b2,b7) . (DataLoc (b1 . b3),b4) < b7 . (DataLoc (b1 . b3),b4) & ( for
b8 being
Int_position st
b8 in b6 holds
(IExec b2,b7) . b8 >= b5 + ((IExec b2,b7) . (DataLoc (b1 . b3),b4)) ) ) ) holds
(
while>0 b3,
b4,
b2 is_closed_on b1 &
while>0 b3,
b4,
b2 is_halting_on b1 & (
b1 . (DataLoc (b1 . b3),b4) > 0 implies
IExec (while>0 b3,b4,b2),
b1 = IExec (while>0 b3,b4,b2),
(IExec b2,b1) ) )