let P be Instruction-Sequence of SCMPDS; for s being 0 -started State of SCMPDS
for m being Element of NAT st s . GBP = 0 & s . (intpos 3) = m holds
( (IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . GBP = 0 & (IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos 1) = (s . (intpos 1)) + (s . (intpos m)) & (IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos 2) = (s . (intpos 2)) + 1 & (IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos 3) = m + 1 & ( for i being Element of NAT st i > 3 holds
(IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos i) = s . (intpos i) ) )
set a = GBP ;
let s be 0 -started State of SCMPDS; for m being Element of NAT st s . GBP = 0 & s . (intpos 3) = m holds
( (IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . GBP = 0 & (IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos 1) = (s . (intpos 1)) + (s . (intpos m)) & (IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos 2) = (s . (intpos 2)) + 1 & (IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos 3) = m + 1 & ( for i being Element of NAT st i > 3 holds
(IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos i) = s . (intpos i) ) )
let m be Element of NAT ; ( s . GBP = 0 & s . (intpos 3) = m implies ( (IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . GBP = 0 & (IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos 1) = (s . (intpos 1)) + (s . (intpos m)) & (IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos 2) = (s . (intpos 2)) + 1 & (IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos 3) = m + 1 & ( for i being Element of NAT st i > 3 holds
(IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos i) = s . (intpos i) ) ) )
assume that
A1:
s . GBP = 0
and
A2:
s . (intpos 3) = m
; ( (IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . GBP = 0 & (IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos 1) = (s . (intpos 1)) + (s . (intpos m)) & (IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos 2) = (s . (intpos 2)) + 1 & (IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos 3) = m + 1 & ( for i being Element of NAT st i > 3 holds
(IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos i) = s . (intpos i) ) )
set t0 = Initialize s;
set t1 = IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s));
set t2 = IExec (((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))),P,(Initialize s));
set t3 = Exec ((AddTo (GBP,1,(intpos 3),0)),(Initialize s));
A3:
(Initialize s) . (intpos 3) = m
by A2, SCMPDS_5:15;
A4:
(Initialize s) . GBP = 0
by A1, SCMPDS_5:15;
then
0 <> |.(((Initialize s) . GBP) + 1).|
by ABSVALUE:def 1;
then
GBP <> DataLoc (((Initialize s) . GBP),1)
by XTUPLE_0:1;
then A5:
(Exec ((AddTo (GBP,1,(intpos 3),0)),(Initialize s))) . GBP = 0
by A4, SCMPDS_2:49;
then
0 <> |.(((Exec ((AddTo (GBP,1,(intpos 3),0)),(Initialize s))) . GBP) + 2).|
by ABSVALUE:def 1;
then A6:
GBP <> DataLoc (((Exec ((AddTo (GBP,1,(intpos 3),0)),(Initialize s))) . GBP),2)
by XTUPLE_0:1;
3 <> |.(((Initialize s) . GBP) + 1).|
by A4, ABSVALUE:def 1;
then
intpos 3 <> DataLoc (((Initialize s) . GBP),1)
by XTUPLE_0:1;
then A7:
(Exec ((AddTo (GBP,1,(intpos 3),0)),(Initialize s))) . (intpos 3) = m
by A3, SCMPDS_2:49;
3 <> |.(((Exec ((AddTo (GBP,1,(intpos 3),0)),(Initialize s))) . GBP) + 2).|
by A5, ABSVALUE:def 1;
then A8:
intpos 3 <> DataLoc (((Exec ((AddTo (GBP,1,(intpos 3),0)),(Initialize s))) . GBP),2)
by XTUPLE_0:1;
A9: (IExec (((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))),P,(Initialize s))) . (intpos 3) =
(Exec ((AddTo (GBP,2,1)),(Exec ((AddTo (GBP,1,(intpos 3),0)),(Initialize s))))) . (intpos 3)
by SCMPDS_5:42
.=
m
by A7, A8, SCMPDS_2:48
;
A10:
(Initialize s) . (intpos 1) = s . (intpos 1)
by SCMPDS_5:15;
A11:
DataLoc (((Initialize s) . GBP),1) = intpos (0 + 1)
by A4, SCMP_GCD:1;
then A12: (Exec ((AddTo (GBP,1,(intpos 3),0)),(Initialize s))) . (intpos 1) =
((Initialize s) . (intpos 1)) + ((Initialize s) . (DataLoc (((Initialize s) . (intpos 3)),0)))
by SCMPDS_2:49
.=
((Initialize s) . (intpos 1)) + ((Initialize s) . (intpos (m + 0)))
by A3, SCMP_GCD:1
.=
(s . (intpos 1)) + (s . (intpos m))
by A10, SCMPDS_5:15
;
1 <> |.(((Exec ((AddTo (GBP,1,(intpos 3),0)),(Initialize s))) . GBP) + 2).|
by A5, ABSVALUE:def 1;
then A13:
intpos 1 <> DataLoc (((Exec ((AddTo (GBP,1,(intpos 3),0)),(Initialize s))) . GBP),2)
by XTUPLE_0:1;
A14:
DataLoc (((Exec ((AddTo (GBP,1,(intpos 3),0)),(Initialize s))) . GBP),2) = intpos (0 + 2)
by A5, SCMP_GCD:1;
then A15:
|.(((Exec ((AddTo (GBP,1,(intpos 3),0)),(Initialize s))) . GBP) + 2).| = 0 + 2
by XTUPLE_0:1;
2 <> |.(((Initialize s) . GBP) + 1).|
by A4, ABSVALUE:def 1;
then
intpos 2 <> DataLoc (((Initialize s) . GBP),1)
by XTUPLE_0:1;
then A16: (Exec ((AddTo (GBP,1,(intpos 3),0)),(Initialize s))) . (intpos 2) =
(Initialize s) . (intpos 2)
by SCMPDS_2:49
.=
s . (intpos 2)
by SCMPDS_5:15
;
A17: (IExec (((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))),P,(Initialize s))) . GBP =
(Exec ((AddTo (GBP,2,1)),(Exec ((AddTo (GBP,1,(intpos 3),0)),(Initialize s))))) . GBP
by SCMPDS_5:42
.=
0
by A5, A6, SCMPDS_2:48
;
then A18:
DataLoc (((IExec (((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))),P,(Initialize s))) . GBP),3) = intpos (0 + 3)
by SCMP_GCD:1;
A19: (IExec (((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))),P,(Initialize s))) . (intpos 2) =
(Exec ((AddTo (GBP,2,1)),(Exec ((AddTo (GBP,1,(intpos 3),0)),(Initialize s))))) . (intpos 2)
by SCMPDS_5:42
.=
(s . (intpos 2)) + 1
by A16, A14, SCMPDS_2:48
;
A20: (IExec (((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))),P,(Initialize s))) . (intpos 1) =
(Exec ((AddTo (GBP,2,1)),(Exec ((AddTo (GBP,1,(intpos 3),0)),(Initialize s))))) . (intpos 1)
by SCMPDS_5:42
.=
(s . (intpos 1)) + (s . (intpos m))
by A12, A13, SCMPDS_2:48
;
0 <> |.(((IExec (((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))),P,(Initialize s))) . GBP) + 3).|
by A17, ABSVALUE:def 1;
then A21:
GBP <> DataLoc (((IExec (((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))),P,(Initialize s))) . GBP),3)
by XTUPLE_0:1;
thus (IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . GBP =
(Exec ((AddTo (GBP,3,1)),(IExec (((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))),P,(Initialize s))))) . GBP
by SCMPDS_5:41
.=
0
by A17, A21, SCMPDS_2:48
; ( (IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos 1) = (s . (intpos 1)) + (s . (intpos m)) & (IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos 2) = (s . (intpos 2)) + 1 & (IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos 3) = m + 1 & ( for i being Element of NAT st i > 3 holds
(IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos i) = s . (intpos i) ) )
1 <> |.(((IExec (((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))),P,(Initialize s))) . GBP) + 3).|
by A17, ABSVALUE:def 1;
then A22:
intpos 1 <> DataLoc (((IExec (((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))),P,(Initialize s))) . GBP),3)
by XTUPLE_0:1;
thus (IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos 1) =
(Exec ((AddTo (GBP,3,1)),(IExec (((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))),P,(Initialize s))))) . (intpos 1)
by SCMPDS_5:41
.=
(s . (intpos 1)) + (s . (intpos m))
by A20, A22, SCMPDS_2:48
; ( (IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos 2) = (s . (intpos 2)) + 1 & (IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos 3) = m + 1 & ( for i being Element of NAT st i > 3 holds
(IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos i) = s . (intpos i) ) )
2 <> |.(((IExec (((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))),P,(Initialize s))) . GBP) + 3).|
by A17, ABSVALUE:def 1;
then A23:
intpos 2 <> DataLoc (((IExec (((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))),P,(Initialize s))) . GBP),3)
by XTUPLE_0:1;
thus (IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos 2) =
(Exec ((AddTo (GBP,3,1)),(IExec (((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))),P,(Initialize s))))) . (intpos 2)
by SCMPDS_5:41
.=
(s . (intpos 2)) + 1
by A19, A23, SCMPDS_2:48
; ( (IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos 3) = m + 1 & ( for i being Element of NAT st i > 3 holds
(IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos i) = s . (intpos i) ) )
thus (IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos 3) =
(Exec ((AddTo (GBP,3,1)),(IExec (((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))),P,(Initialize s))))) . (intpos 3)
by SCMPDS_5:41
.=
m + 1
by A9, A18, SCMPDS_2:48
; for i being Element of NAT st i > 3 holds
(IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos i) = s . (intpos i)
A24:
|.(((Initialize s) . GBP) + 1).| = 0 + 1
by A11, XTUPLE_0:1;
hereby verum
let i be
Element of
NAT ;
( i > 3 implies (IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos i) = s . (intpos i) )assume A25:
i > 3
;
(IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos i) = s . (intpos i)then A26:
intpos i <> DataLoc (
((IExec (((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))),P,(Initialize s))) . GBP),3)
by A18, XTUPLE_0:1;
i <> |.(((Initialize s) . GBP) + 1).|
by A24, A25;
then A27:
intpos i <> DataLoc (
((Initialize s) . GBP),1)
by XTUPLE_0:1;
i <> |.(((Exec ((AddTo (GBP,1,(intpos 3),0)),(Initialize s))) . GBP) + 2).|
by A15, A25;
then A28:
intpos i <> DataLoc (
((Exec ((AddTo (GBP,1,(intpos 3),0)),(Initialize s))) . GBP),2)
by XTUPLE_0:1;
thus (IExec ((((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))) ';' (AddTo (GBP,3,1))),P,(Initialize s))) . (intpos i) =
(Exec ((AddTo (GBP,3,1)),(IExec (((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))),P,(Initialize s))))) . (intpos i)
by SCMPDS_5:41
.=
(IExec (((AddTo (GBP,1,(intpos 3),0)) ';' (AddTo (GBP,2,1))),P,(Initialize s))) . (intpos i)
by A26, SCMPDS_2:48
.=
(Exec ((AddTo (GBP,2,1)),(Exec ((AddTo (GBP,1,(intpos 3),0)),(Initialize s))))) . (intpos i)
by SCMPDS_5:42
.=
(Exec ((AddTo (GBP,1,(intpos 3),0)),(Initialize s))) . (intpos i)
by A28, SCMPDS_2:48
.=
(Initialize s) . (intpos i)
by A27, SCMPDS_2:49
.=
s . (intpos i)
by SCMPDS_5:15
;
verum
end;