set b = DataLoc ((F1() . F3()),F4());
set FR = for-down (F3(),F4(),F5(),F2());
defpred S1[ Nat] means for t being State of SCMPDS st t . (DataLoc ((F1() . F3()),F4())) <= $1 & t . F3() = F1() . F3() & P1[ Dstate t] holds
( (IExec ((for-down (F3(),F4(),F5(),F2())),t)) . (DataLoc ((F1() . F3()),F4())) <= 0 & P1[ Dstate (IExec ((for-down (F3(),F4(),F5(),F2())),t))] );
A4:
S1[ 0 ]
proof
let t be
State of
SCMPDS;
( t . (DataLoc ((F1() . F3()),F4())) <= 0 & t . F3() = F1() . F3() & P1[ Dstate t] implies ( (IExec ((for-down (F3(),F4(),F5(),F2())),t)) . (DataLoc ((F1() . F3()),F4())) <= 0 & P1[ Dstate (IExec ((for-down (F3(),F4(),F5(),F2())),t))] ) )
assume that A5:
(
t . (DataLoc ((F1() . F3()),F4())) <= 0 &
t . F3()
= F1()
. F3() )
and A6:
P1[
Dstate t]
;
( (IExec ((for-down (F3(),F4(),F5(),F2())),t)) . (DataLoc ((F1() . F3()),F4())) <= 0 & P1[ Dstate (IExec ((for-down (F3(),F4(),F5(),F2())),t))] )
thus
(IExec ((for-down (F3(),F4(),F5(),F2())),t)) . (DataLoc ((F1() . F3()),F4())) <= 0
by A5, SCMPDS_7:66;
P1[ Dstate (IExec ((for-down (F3(),F4(),F5(),F2())),t))]
for
x being
Int_position holds
(IExec ((for-down (F3(),F4(),F5(),F2())),t)) . x = t . x
by A5, SCMPDS_7:66;
hence
P1[
Dstate (IExec ((for-down (F3(),F4(),F5(),F2())),t))]
by A6, Th5;
verum
end;
A7:
now let k be
Element of
NAT ;
( S1[k] implies S1[k + 1] )assume A8:
S1[
k]
;
S1[k + 1]now let u be
State of
SCMPDS;
( u . (DataLoc ((F1() . F3()),F4())) <= k + 1 & u . F3() = F1() . F3() & P1[ Dstate u] implies ( (IExec ((for-down (F3(),F4(),F5(),F2())),b1)) . (DataLoc ((F1() . F3()),F4())) <= 0 & P1[ Dstate (IExec ((for-down (F3(),F4(),F5(),F2())),b1))] ) )assume that A9:
u . (DataLoc ((F1() . F3()),F4())) <= k + 1
and A10:
u . F3()
= F1()
. F3()
and A11:
P1[
Dstate u]
;
( (IExec ((for-down (F3(),F4(),F5(),F2())),b1)) . (DataLoc ((F1() . F3()),F4())) <= 0 & P1[ Dstate (IExec ((for-down (F3(),F4(),F5(),F2())),b1))] )per cases
( u . (DataLoc ((F1() . F3()),F4())) <= 0 or u . (DataLoc ((F1() . F3()),F4())) > 0 )
;
suppose
u . (DataLoc ((F1() . F3()),F4())) <= 0
;
( (IExec ((for-down (F3(),F4(),F5(),F2())),b1)) . (DataLoc ((F1() . F3()),F4())) <= 0 & P1[ Dstate (IExec ((for-down (F3(),F4(),F5(),F2())),b1))] )hence
(
(IExec ((for-down (F3(),F4(),F5(),F2())),u)) . (DataLoc ((F1() . F3()),F4())) <= 0 &
P1[
Dstate (IExec ((for-down (F3(),F4(),F5(),F2())),u))] )
by A4, A10, A11;
verum end; suppose A12:
u . (DataLoc ((F1() . F3()),F4())) > 0
;
( (IExec ((for-down (F3(),F4(),F5(),F2())),b1)) . (DataLoc ((F1() . F3()),F4())) <= 0 & P1[ Dstate (IExec ((for-down (F3(),F4(),F5(),F2())),b1))] )set Ad =
AddTo (
F3(),
F4(),
(- F5()));
set Iu =
IExec (
(F2() ';' (AddTo (F3(),F4(),(- F5())))),
u);
A13:
(
(IExec ((F2() ';' (AddTo (F3(),F4(),(- F5())))),u)) . F3()
= F1()
. F3() &
P1[
Dstate (IExec ((F2() ';' (AddTo (F3(),F4(),(- F5())))),u))] )
by A3, A10, A11, A12;
(IExec ((F2() ';' (AddTo (F3(),F4(),(- F5())))),u)) . (DataLoc ((F1() . F3()),F4())) = (u . (DataLoc ((F1() . F3()),F4()))) - F5()
by A3, A10, A11, A12;
then
((IExec ((F2() ';' (AddTo (F3(),F4(),(- F5())))),u)) . (DataLoc ((F1() . F3()),F4()))) + 1
<= u . (DataLoc ((F1() . F3()),F4()))
by A1, INT_1:20, XREAL_1:46;
then
((IExec ((F2() ';' (AddTo (F3(),F4(),(- F5())))),u)) . (DataLoc ((F1() . F3()),F4()))) + 1
<= k + 1
by A9, XXREAL_0:2;
then A14:
(IExec ((F2() ';' (AddTo (F3(),F4(),(- F5())))),u)) . (DataLoc ((F1() . F3()),F4())) <= k
by XREAL_1:8;
A15:
P1[
Dstate u]
by A11;
A16:
for
t being
State of
SCMPDS st
P1[
Dstate t] &
t . F3()
= u . F3() &
t . (DataLoc ((u . F3()),F4())) > 0 holds
(
(IExec ((F2() ';' (AddTo (F3(),F4(),(- F5())))),t)) . F3()
= t . F3() &
(IExec ((F2() ';' (AddTo (F3(),F4(),(- F5())))),t)) . (DataLoc ((u . F3()),F4())) = (t . (DataLoc ((u . F3()),F4()))) - F5() &
F2()
is_closed_on t &
F2()
is_halting_on t &
P1[
Dstate (IExec ((F2() ';' (AddTo (F3(),F4(),(- F5())))),t))] )
by A3, A10;
A17:
u . (DataLoc ((u . F3()),F4())) > 0
by A10, A12;
( (
P1[
u] or not
P1[
u] ) &
IExec (
(for-down (F3(),F4(),F5(),F2())),
u)
= IExec (
(for-down (F3(),F4(),F5(),F2())),
(IExec ((F2() ';' (AddTo (F3(),F4(),(- F5())))),u))) )
from SCPISORT:sch 2(A1, A17, A15, A16);
hence
(
(IExec ((for-down (F3(),F4(),F5(),F2())),u)) . (DataLoc ((F1() . F3()),F4())) <= 0 &
P1[
Dstate (IExec ((for-down (F3(),F4(),F5(),F2())),u))] )
by A8, A14, A13;
verum end; end; end; hence
S1[
k + 1]
;
verum end;
A18:
for k being Element of NAT holds S1[k]
from NAT_1:sch 1(A4, A7);
thus
( P1[F1()] or not P1[F1()] )
; ( (IExec ((for-down (F3(),F4(),F5(),F2())),F1())) . (DataLoc ((F1() . F3()),F4())) <= 0 & P1[ Dstate (IExec ((for-down (F3(),F4(),F5(),F2())),F1()))] )
per cases
( F1() . (DataLoc ((F1() . F3()),F4())) > 0 or F1() . (DataLoc ((F1() . F3()),F4())) <= 0 )
;
suppose
F1()
. (DataLoc ((F1() . F3()),F4())) > 0
;
( (IExec ((for-down (F3(),F4(),F5(),F2())),F1())) . (DataLoc ((F1() . F3()),F4())) <= 0 & P1[ Dstate (IExec ((for-down (F3(),F4(),F5(),F2())),F1()))] )then reconsider m =
F1()
. (DataLoc ((F1() . F3()),F4())) as
Element of
NAT by INT_1:16;
S1[
m]
by A18;
hence
(
(IExec ((for-down (F3(),F4(),F5(),F2())),F1())) . (DataLoc ((F1() . F3()),F4())) <= 0 &
P1[
Dstate (IExec ((for-down (F3(),F4(),F5(),F2())),F1()))] )
by A2;
verum end; suppose
F1()
. (DataLoc ((F1() . F3()),F4())) <= 0
;
( (IExec ((for-down (F3(),F4(),F5(),F2())),F1())) . (DataLoc ((F1() . F3()),F4())) <= 0 & P1[ Dstate (IExec ((for-down (F3(),F4(),F5(),F2())),F1()))] )hence
(
(IExec ((for-down (F3(),F4(),F5(),F2())),F1())) . (DataLoc ((F1() . F3()),F4())) <= 0 &
P1[
Dstate (IExec ((for-down (F3(),F4(),F5(),F2())),F1()))] )
by A2, A4;
verum end; end;