let P be Instruction-Sequence of SCMPDS; for s being 0 -started State of SCMPDS st s . GBP = 0 holds
( (IExec ((((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))) ';' (AddTo (GBP,3,(- 1)))),P,s)) . GBP = 0 & (IExec ((((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))) ';' (AddTo (GBP,3,(- 1)))),P,s)) . (intpos 1) = s . (intpos 2) & (IExec ((((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))) ';' (AddTo (GBP,3,(- 1)))),P,s)) . (intpos 2) = (s . (intpos 1)) + (s . (intpos 2)) & (IExec ((((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))) ';' (AddTo (GBP,3,(- 1)))),P,s)) . (intpos 3) = (s . (intpos 3)) - 1 )
set a = GBP ;
let s be 0 -started State of SCMPDS; ( s . GBP = 0 implies ( (IExec ((((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))) ';' (AddTo (GBP,3,(- 1)))),P,s)) . GBP = 0 & (IExec ((((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))) ';' (AddTo (GBP,3,(- 1)))),P,s)) . (intpos 1) = s . (intpos 2) & (IExec ((((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))) ';' (AddTo (GBP,3,(- 1)))),P,s)) . (intpos 2) = (s . (intpos 1)) + (s . (intpos 2)) & (IExec ((((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))) ';' (AddTo (GBP,3,(- 1)))),P,s)) . (intpos 3) = (s . (intpos 3)) - 1 ) )
set t0 = s;
set t1 = IExec ((((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))) ';' (AddTo (GBP,3,(- 1)))),P,s);
set t2 = IExec (((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))),P,s);
set Q0 = P;
set t3 = IExec ((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))),P,s);
set t4 = Exec (((GBP,4) := (GBP,2)),s);
set a4 = intpos 4;
assume
s . GBP = 0
; ( (IExec ((((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))) ';' (AddTo (GBP,3,(- 1)))),P,s)) . GBP = 0 & (IExec ((((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))) ';' (AddTo (GBP,3,(- 1)))),P,s)) . (intpos 1) = s . (intpos 2) & (IExec ((((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))) ';' (AddTo (GBP,3,(- 1)))),P,s)) . (intpos 2) = (s . (intpos 1)) + (s . (intpos 2)) & (IExec ((((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))) ';' (AddTo (GBP,3,(- 1)))),P,s)) . (intpos 3) = (s . (intpos 3)) - 1 )
then A5:
s . GBP = 0
;
then
DataLoc ((s . GBP),4) = intpos (0 + 4)
by SCMP_GCD:1;
then A6: (Exec (((GBP,4) := (GBP,2)),s)) . (intpos 4) =
s . (DataLoc ((s . GBP),2))
by SCMPDS_2:47
.=
s . (intpos (0 + 2))
by A5, SCMP_GCD:1
.=
s . (intpos 2)
;
0 <> abs ((s . GBP) + 4)
by A5, ABSVALUE:def 1;
then
GBP <> DataLoc ((s . GBP),4)
by ZFMISC_1:27;
then A7:
(Exec (((GBP,4) := (GBP,2)),s)) . GBP = 0
by A5, SCMPDS_2:47;
then A8:
DataLoc (((Exec (((GBP,4) := (GBP,2)),s)) . GBP),2) = intpos (0 + 2)
by SCMP_GCD:1;
0 <> abs (((Exec (((GBP,4) := (GBP,2)),s)) . GBP) + 2)
by A7, ABSVALUE:def 1;
then A9:
GBP <> DataLoc (((Exec (((GBP,4) := (GBP,2)),s)) . GBP),2)
by ZFMISC_1:27;
A10: (IExec ((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))),P,s)) . GBP =
(Exec ((AddTo (GBP,2,GBP,1)),(Exec (((GBP,4) := (GBP,2)),s)))) . GBP
by SCMPDS_5:42
.=
0
by A7, A9, SCMPDS_2:49
;
then A11:
DataLoc (((IExec ((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))),P,s)) . GBP),1) = intpos (0 + 1)
by SCMP_GCD:1;
4 <> abs (((Exec (((GBP,4) := (GBP,2)),s)) . GBP) + 2)
by A7, ABSVALUE:def 1;
then A12:
intpos 4 <> DataLoc (((Exec (((GBP,4) := (GBP,2)),s)) . GBP),2)
by ZFMISC_1:27;
A13: (IExec ((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))),P,s)) . (intpos 4) =
(Exec ((AddTo (GBP,2,GBP,1)),(Exec (((GBP,4) := (GBP,2)),s)))) . (intpos 4)
by SCMPDS_5:42
.=
s . (intpos 2)
by A6, A12, SCMPDS_2:49
;
A14: (IExec (((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))),P,s)) . (intpos 1) =
(Exec (((GBP,1) := (GBP,4)),(IExec ((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))),P,s)))) . (intpos 1)
by SCMPDS_5:41
.=
(IExec ((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))),P,s)) . (DataLoc (((IExec ((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))),P,s)) . GBP),4))
by A11, SCMPDS_2:47
.=
s . (intpos 2)
by A10, A13, SCMP_GCD:1
;
3 <> abs (((Exec (((GBP,4) := (GBP,2)),s)) . GBP) + 2)
by A7, ABSVALUE:def 1;
then A15:
intpos 3 <> DataLoc (((Exec (((GBP,4) := (GBP,2)),s)) . GBP),2)
by ZFMISC_1:27;
2 <> abs ((s . GBP) + 4)
by A5, ABSVALUE:def 1;
then
intpos 2 <> DataLoc ((s . GBP),4)
by ZFMISC_1:27;
then A16: (Exec (((GBP,4) := (GBP,2)),s)) . (intpos 2) =
s . (intpos 2)
by SCMPDS_2:47
.=
s . (intpos 2)
;
1 <> abs ((s . GBP) + 4)
by A5, ABSVALUE:def 1;
then
intpos 1 <> DataLoc ((s . GBP),4)
by ZFMISC_1:27;
then A17: (Exec (((GBP,4) := (GBP,2)),s)) . (intpos 1) =
s . (intpos 1)
by SCMPDS_2:47
.=
s . (intpos 1)
;
3 <> abs ((s . GBP) + 4)
by A5, ABSVALUE:def 1;
then
intpos 3 <> DataLoc ((s . GBP),4)
by ZFMISC_1:27;
then A18: (Exec (((GBP,4) := (GBP,2)),s)) . (intpos 3) =
s . (intpos 3)
by SCMPDS_2:47
.=
s . (intpos 3)
;
0 <> abs (((IExec ((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))),P,s)) . GBP) + 1)
by A10, ABSVALUE:def 1;
then A19:
GBP <> DataLoc (((IExec ((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))),P,s)) . GBP),1)
by ZFMISC_1:27;
A20: (IExec (((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))),P,s)) . GBP =
(Exec (((GBP,1) := (GBP,4)),(IExec ((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))),P,s)))) . GBP
by SCMPDS_5:41
.=
0
by A10, A19, SCMPDS_2:47
;
then A21:
DataLoc (((IExec (((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))),P,s)) . GBP),3) = intpos (0 + 3)
by SCMP_GCD:1;
2 <> abs (((IExec ((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))),P,s)) . GBP) + 1)
by A10, ABSVALUE:def 1;
then A22:
intpos 2 <> DataLoc (((IExec ((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))),P,s)) . GBP),1)
by ZFMISC_1:27;
A23: (IExec ((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))),P,s)) . (intpos 2) =
(Exec ((AddTo (GBP,2,GBP,1)),(Exec (((GBP,4) := (GBP,2)),s)))) . (intpos 2)
by SCMPDS_5:42
.=
((Exec (((GBP,4) := (GBP,2)),s)) . (intpos 2)) + ((Exec (((GBP,4) := (GBP,2)),s)) . (DataLoc (((Exec (((GBP,4) := (GBP,2)),s)) . GBP),1)))
by A8, SCMPDS_2:49
.=
(s . (intpos 2)) + (s . (intpos 1))
by A7, A17, A16, SCMP_GCD:1
;
A24: (IExec (((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))),P,s)) . (intpos 2) =
(Exec (((GBP,1) := (GBP,4)),(IExec ((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))),P,s)))) . (intpos 2)
by SCMPDS_5:41
.=
(s . (intpos 2)) + (s . (intpos 1))
by A23, A22, SCMPDS_2:47
;
3 <> abs (((IExec ((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))),P,s)) . GBP) + 1)
by A10, ABSVALUE:def 1;
then A25:
intpos 3 <> DataLoc (((IExec ((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))),P,s)) . GBP),1)
by ZFMISC_1:27;
0 <> abs (((IExec (((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))),P,s)) . GBP) + 3)
by A20, ABSVALUE:def 1;
then A26:
GBP <> DataLoc (((IExec (((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))),P,s)) . GBP),3)
by ZFMISC_1:27;
thus (IExec ((((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))) ';' (AddTo (GBP,3,(- 1)))),P,s)) . GBP =
(Exec ((AddTo (GBP,3,(- 1))),(IExec (((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))),P,s)))) . GBP
by SCMPDS_5:41
.=
0
by A20, A26, SCMPDS_2:48
; ( (IExec ((((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))) ';' (AddTo (GBP,3,(- 1)))),P,s)) . (intpos 1) = s . (intpos 2) & (IExec ((((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))) ';' (AddTo (GBP,3,(- 1)))),P,s)) . (intpos 2) = (s . (intpos 1)) + (s . (intpos 2)) & (IExec ((((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))) ';' (AddTo (GBP,3,(- 1)))),P,s)) . (intpos 3) = (s . (intpos 3)) - 1 )
1 <> abs (((IExec (((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))),P,s)) . GBP) + 3)
by A20, ABSVALUE:def 1;
then A27:
intpos 1 <> DataLoc (((IExec (((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))),P,s)) . GBP),3)
by ZFMISC_1:27;
thus (IExec ((((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))) ';' (AddTo (GBP,3,(- 1)))),P,s)) . (intpos 1) =
(Exec ((AddTo (GBP,3,(- 1))),(IExec (((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))),P,s)))) . (intpos 1)
by SCMPDS_5:41
.=
s . (intpos 2)
by A14, A27, SCMPDS_2:48
; ( (IExec ((((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))) ';' (AddTo (GBP,3,(- 1)))),P,s)) . (intpos 2) = (s . (intpos 1)) + (s . (intpos 2)) & (IExec ((((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))) ';' (AddTo (GBP,3,(- 1)))),P,s)) . (intpos 3) = (s . (intpos 3)) - 1 )
2 <> abs (((IExec (((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))),P,s)) . GBP) + 3)
by A20, ABSVALUE:def 1;
then A28:
intpos 2 <> DataLoc (((IExec (((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))),P,s)) . GBP),3)
by ZFMISC_1:27;
A29: (IExec ((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))),P,s)) . (intpos 3) =
(Exec ((AddTo (GBP,2,GBP,1)),(Exec (((GBP,4) := (GBP,2)),s)))) . (intpos 3)
by SCMPDS_5:42
.=
s . (intpos 3)
by A18, A15, SCMPDS_2:49
;
A30: (IExec (((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))),P,s)) . (intpos 3) =
(Exec (((GBP,1) := (GBP,4)),(IExec ((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))),P,s)))) . (intpos 3)
by SCMPDS_5:41
.=
s . (intpos 3)
by A29, A25, SCMPDS_2:47
;
thus (IExec ((((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))) ';' (AddTo (GBP,3,(- 1)))),P,s)) . (intpos 2) =
(Exec ((AddTo (GBP,3,(- 1))),(IExec (((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))),P,s)))) . (intpos 2)
by SCMPDS_5:41
.=
(s . (intpos 1)) + (s . (intpos 2))
by A24, A28, SCMPDS_2:48
; (IExec ((((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))) ';' (AddTo (GBP,3,(- 1)))),P,s)) . (intpos 3) = (s . (intpos 3)) - 1
thus (IExec ((((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))) ';' (AddTo (GBP,3,(- 1)))),P,s)) . (intpos 3) =
(Exec ((AddTo (GBP,3,(- 1))),(IExec (((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))),P,s)))) . (intpos 3)
by SCMPDS_5:41
.=
((IExec (((((GBP,4) := (GBP,2)) ';' (AddTo (GBP,2,GBP,1))) ';' ((GBP,1) := (GBP,4))),P,s)) . (intpos 3)) + (- 1)
by A21, SCMPDS_2:48
.=
(s . (intpos 3)) - 1
by A30
; verum