let s be State of SCMPDS ; :: thesis: ( s . GBP = 0 implies ( for-down GBP ,2,1,(Load (AddTo GBP ,3,1)) is_closed_on s & for-down GBP ,2,1,(Load (AddTo GBP ,3,1)) is_halting_on s ) )
set I = Load (AddTo GBP ,3,1);
assume A1:
s . GBP = 0
; :: thesis: ( for-down GBP ,2,1,(Load (AddTo GBP ,3,1)) is_closed_on s & for-down GBP ,2,1,(Load (AddTo GBP ,3,1)) is_halting_on s )
per cases
( s . (DataLoc (s . GBP ),2) <= 0 or s . (DataLoc (s . GBP ),2) > 0 )
;
suppose
s . (DataLoc (s . GBP ),2) <= 0
;
:: thesis: ( for-down GBP ,2,1,(Load (AddTo GBP ,3,1)) is_closed_on s & for-down GBP ,2,1,(Load (AddTo GBP ,3,1)) is_halting_on s )hence
(
for-down GBP ,2,1,
(Load (AddTo GBP ,3,1)) is_closed_on s &
for-down GBP ,2,1,
(Load (AddTo GBP ,3,1)) is_halting_on s )
by Th63;
:: thesis: verum end; suppose A2:
s . (DataLoc (s . GBP ),2) > 0
;
:: thesis: ( for-down GBP ,2,1,(Load (AddTo GBP ,3,1)) is_closed_on s & for-down GBP ,2,1,(Load (AddTo GBP ,3,1)) is_halting_on s )
DataLoc (s . GBP ),2
= intpos (0 + 2)
by A1, SCMP_GCD:5;
then
DataLoc (s . GBP ),2
<> GBP
by AMI_3:52;
then A3:
not
DataLoc (s . GBP ),2
in {GBP }
by TARSKI:def 1;
A4:
card (Load (AddTo GBP ,3,1)) = 1
by SCMPDS_5:6;
now let t be
State of
SCMPDS ;
:: thesis: ( ( for x being Int_position st x in {GBP } holds
t . x = s . x ) & t . GBP = s . GBP implies ( (IExec (Load (AddTo GBP ,3,1)),t) . GBP = t . GBP & (IExec (Load (AddTo GBP ,3,1)),t) . (DataLoc (s . GBP ),2) = t . (DataLoc (s . GBP ),2) & Load (AddTo GBP ,3,1) is_closed_on t & Load (AddTo GBP ,3,1) is_halting_on t & ( for y being Int_position st y in {GBP } holds
(IExec (Load (AddTo GBP ,3,1)),t) . y = t . y ) ) )assume A5:
( ( for
x being
Int_position st
x in {GBP } holds
t . x = s . x ) &
t . GBP = s . GBP )
;
:: thesis: ( (IExec (Load (AddTo GBP ,3,1)),t) . GBP = t . GBP & (IExec (Load (AddTo GBP ,3,1)),t) . (DataLoc (s . GBP ),2) = t . (DataLoc (s . GBP ),2) & Load (AddTo GBP ,3,1) is_closed_on t & Load (AddTo GBP ,3,1) is_halting_on t & ( for y being Int_position st y in {GBP } holds
(IExec (Load (AddTo GBP ,3,1)),t) . y = t . y ) )set t0 =
Initialized t;
(Initialized t) . GBP = 0
by A1, A5, SCMPDS_5:40;
then A6:
DataLoc ((Initialized t) . GBP ),3
= intpos (0 + 3)
by SCMP_GCD:5;
thus A8:
(IExec (Load (AddTo GBP ,3,1)),t) . GBP =
(Exec (AddTo GBP ,3,1),(Initialized t)) . GBP
by SCMPDS_5:45
.=
(Initialized t) . GBP
by A6, AMI_3:52, SCMPDS_2:60
.=
t . GBP
by SCMPDS_5:40
;
:: thesis: ( (IExec (Load (AddTo GBP ,3,1)),t) . (DataLoc (s . GBP ),2) = t . (DataLoc (s . GBP ),2) & Load (AddTo GBP ,3,1) is_closed_on t & Load (AddTo GBP ,3,1) is_halting_on t & ( for y being Int_position st y in {GBP } holds
(IExec (Load (AddTo GBP ,3,1)),t) . y = t . y ) )set cv =
DataLoc (s . GBP ),2;
B9:
DataLoc (s . GBP ),2
= intpos (0 + 2)
by A1, SCMP_GCD:5;
thus (IExec (Load (AddTo GBP ,3,1)),t) . (DataLoc (s . GBP ),2) =
(Exec (AddTo GBP ,3,1),(Initialized t)) . (DataLoc (s . GBP ),2)
by SCMPDS_5:45
.=
(Initialized t) . (DataLoc (s . GBP ),2)
by B9, A6, AMI_3:52, SCMPDS_2:60
.=
t . (DataLoc (s . GBP ),2)
by SCMPDS_5:40
;
:: thesis: ( Load (AddTo GBP ,3,1) is_closed_on t & Load (AddTo GBP ,3,1) is_halting_on t & ( for y being Int_position st y in {GBP } holds
(IExec (Load (AddTo GBP ,3,1)),t) . y = t . y ) )thus
(
Load (AddTo GBP ,3,1) is_closed_on t &
Load (AddTo GBP ,3,1) is_halting_on t )
by SCMPDS_6:34, SCMPDS_6:35;
:: thesis: for y being Int_position st y in {GBP } holds
(IExec (Load (AddTo GBP ,3,1)),t) . y = t . y end; hence
(
for-down GBP ,2,1,
(Load (AddTo GBP ,3,1)) is_closed_on s &
for-down GBP ,2,1,
(Load (AddTo GBP ,3,1)) is_halting_on s )
by A1, A2, A3, A4, Th67;
:: thesis: verum end; end;