let s be State of SCM+FSA; ( s . (intloc (1 + 1)) >= 1 & s . (intloc (1 + 1)) <= len (s . (fsloc 0)) implies ( (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (2 + 1)) = s . (intloc (2 + 1)) & (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (5 + 1)) = s . (intloc (5 + 1)) & (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (fsloc 0) = s . (fsloc 0) & ex x1 being Integer st
( x1 = (s . (fsloc 0)) . (s . (intloc (1 + 1))) & ( x1 - (s . (intloc (5 + 1))) > 0 implies ( (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (1 + 1)) = 0 & (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (3 + 1)) = s . (intloc (3 + 1)) ) ) & ( x1 - (s . (intloc (5 + 1))) <= 0 implies ( (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (1 + 1)) = (s . (intloc (1 + 1))) - 1 & (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (3 + 1)) = (s . (intloc (3 + 1))) + 1 ) ) ) ) )
assume that
A1:
s . (intloc (1 + 1)) >= 1
and
A2:
s . (intloc (1 + 1)) <= len (s . (fsloc 0))
; ( (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (2 + 1)) = s . (intloc (2 + 1)) & (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (5 + 1)) = s . (intloc (5 + 1)) & (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (fsloc 0) = s . (fsloc 0) & ex x1 being Integer st
( x1 = (s . (fsloc 0)) . (s . (intloc (1 + 1))) & ( x1 - (s . (intloc (5 + 1))) > 0 implies ( (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (1 + 1)) = 0 & (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (3 + 1)) = s . (intloc (3 + 1)) ) ) & ( x1 - (s . (intloc (5 + 1))) <= 0 implies ( (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (1 + 1)) = (s . (intloc (1 + 1))) - 1 & (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (3 + 1)) = (s . (intloc (3 + 1))) + 1 ) ) ) )
A3:
abs (s . (intloc (1 + 1))) = s . (intloc (1 + 1))
by A1, ABSVALUE:def 1;
set s0 = Initialized s;
set s1 = Exec (((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))),(Initialized s));
set s2 = IExec ((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))),s);
A4:
intloc (3 + 1) <> intloc (2 + 1)
by SCMFSA_2:128;
reconsider k1 = s . (intloc (1 + 1)) as Element of NAT by A1, INT_1:16;
reconsider n = (s . (fsloc 0)) . k1 as Integer ;
A5:
(s . (fsloc 0)) /. k1 = n
by A1, A2, FINSEQ_4:24;
A6: (Exec (((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))),(Initialized s))) . (intloc (4 + 1)) =
((Initialized s) . (fsloc 0)) /. (abs ((Initialized s) . (intloc (1 + 1))))
by SCMBSORT:8
.=
((Initialized s) . (fsloc 0)) /. (abs (s . (intloc (1 + 1))))
by SCMFSA6C:3
.=
n
by A3, A5, SCMFSA6C:3
;
A7:
intloc (1 + 1) <> intloc (2 + 1)
by SCMFSA_2:128;
A8:
intloc (4 + 1) <> intloc (5 + 1)
by SCMFSA_2:128;
then A9: (Exec (((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))),(Initialized s))) . (intloc (5 + 1)) =
(Initialized s) . (intloc (5 + 1))
by SCMFSA_2:98
.=
s . (intloc (5 + 1))
by SCMFSA6C:3
;
A10:
intloc (4 + 1) <> intloc (2 + 1)
by SCMFSA_2:128;
A11: (IExec ((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))),s)) . (intloc (4 + 1)) =
(Exec ((SubFrom ((intloc (4 + 1)),(intloc (5 + 1)))),(Exec (((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))),(Initialized s))))) . (intloc (4 + 1))
by SCMFSA6C:9
.=
n - (s . (intloc (5 + 1)))
by A9, A6, SCMFSA_2:91
;
thus (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (2 + 1)) =
(IExec ((if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0)))))),(IExec ((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))),s)))) . (intloc (2 + 1))
by SCM_HALT:30
.=
(IExec ((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))),s)) . (intloc (2 + 1))
by A4, A7, Lm15
.=
(Exec ((SubFrom ((intloc (4 + 1)),(intloc (5 + 1)))),(Exec (((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))),(Initialized s))))) . (intloc (2 + 1))
by SCMFSA6C:9
.=
(Exec (((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))),(Initialized s))) . (intloc (2 + 1))
by A10, SCMFSA_2:91
.=
(Initialized s) . (intloc (2 + 1))
by A10, SCMFSA_2:98
.=
s . (intloc (2 + 1))
by SCMFSA6C:3
; ( (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (5 + 1)) = s . (intloc (5 + 1)) & (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (fsloc 0) = s . (fsloc 0) & ex x1 being Integer st
( x1 = (s . (fsloc 0)) . (s . (intloc (1 + 1))) & ( x1 - (s . (intloc (5 + 1))) > 0 implies ( (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (1 + 1)) = 0 & (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (3 + 1)) = s . (intloc (3 + 1)) ) ) & ( x1 - (s . (intloc (5 + 1))) <= 0 implies ( (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (1 + 1)) = (s . (intloc (1 + 1))) - 1 & (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (3 + 1)) = (s . (intloc (3 + 1))) + 1 ) ) ) )
A12:
intloc (3 + 1) <> intloc (5 + 1)
by SCMFSA_2:128;
A13:
intloc (1 + 1) <> intloc (5 + 1)
by SCMFSA_2:128;
thus (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (5 + 1)) =
(IExec ((if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0)))))),(IExec ((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))),s)))) . (intloc (5 + 1))
by SCM_HALT:30
.=
(IExec ((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))),s)) . (intloc (5 + 1))
by A12, A13, Lm15
.=
(Exec ((SubFrom ((intloc (4 + 1)),(intloc (5 + 1)))),(Exec (((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))),(Initialized s))))) . (intloc (5 + 1))
by SCMFSA6C:9
.=
s . (intloc (5 + 1))
by A8, A9, SCMFSA_2:91
; ( (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (fsloc 0) = s . (fsloc 0) & ex x1 being Integer st
( x1 = (s . (fsloc 0)) . (s . (intloc (1 + 1))) & ( x1 - (s . (intloc (5 + 1))) > 0 implies ( (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (1 + 1)) = 0 & (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (3 + 1)) = s . (intloc (3 + 1)) ) ) & ( x1 - (s . (intloc (5 + 1))) <= 0 implies ( (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (1 + 1)) = (s . (intloc (1 + 1))) - 1 & (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (3 + 1)) = (s . (intloc (3 + 1))) + 1 ) ) ) )
A14:
intloc (4 + 1) <> intloc (3 + 1)
by SCMFSA_2:128;
thus (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (fsloc 0) =
(IExec ((if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0)))))),(IExec ((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))),s)))) . (fsloc 0)
by SCM_HALT:31
.=
(IExec ((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))),s)) . (fsloc 0)
by Lm13
.=
(Exec ((SubFrom ((intloc (4 + 1)),(intloc (5 + 1)))),(Exec (((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))),(Initialized s))))) . (fsloc 0)
by SCMFSA6C:10
.=
(Exec (((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))),(Initialized s))) . (fsloc 0)
by SCMFSA_2:91
.=
(Initialized s) . (fsloc 0)
by SCMFSA_2:98
.=
s . (fsloc 0)
by SCMFSA6C:3
; ex x1 being Integer st
( x1 = (s . (fsloc 0)) . (s . (intloc (1 + 1))) & ( x1 - (s . (intloc (5 + 1))) > 0 implies ( (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (1 + 1)) = 0 & (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (3 + 1)) = s . (intloc (3 + 1)) ) ) & ( x1 - (s . (intloc (5 + 1))) <= 0 implies ( (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (1 + 1)) = (s . (intloc (1 + 1))) - 1 & (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (3 + 1)) = (s . (intloc (3 + 1))) + 1 ) ) )
take
n
; ( n = (s . (fsloc 0)) . (s . (intloc (1 + 1))) & ( n - (s . (intloc (5 + 1))) > 0 implies ( (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (1 + 1)) = 0 & (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (3 + 1)) = s . (intloc (3 + 1)) ) ) & ( n - (s . (intloc (5 + 1))) <= 0 implies ( (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (1 + 1)) = (s . (intloc (1 + 1))) - 1 & (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (3 + 1)) = (s . (intloc (3 + 1))) + 1 ) ) )
A15:
intloc (4 + 1) <> intloc (1 + 1)
by SCMFSA_2:128;
thus
n = (s . (fsloc 0)) . (s . (intloc (1 + 1)))
; ( ( n - (s . (intloc (5 + 1))) > 0 implies ( (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (1 + 1)) = 0 & (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (3 + 1)) = s . (intloc (3 + 1)) ) ) & ( n - (s . (intloc (5 + 1))) <= 0 implies ( (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (1 + 1)) = (s . (intloc (1 + 1))) - 1 & (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (3 + 1)) = (s . (intloc (3 + 1))) + 1 ) ) )
A16: (IExec ((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))),s)) . (intloc (3 + 1)) =
(Exec ((SubFrom ((intloc (4 + 1)),(intloc (5 + 1)))),(Exec (((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))),(Initialized s))))) . (intloc (3 + 1))
by SCMFSA6C:9
.=
(Exec (((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))),(Initialized s))) . (intloc (3 + 1))
by A14, SCMFSA_2:91
.=
(Initialized s) . (intloc (3 + 1))
by A14, SCMFSA_2:98
.=
s . (intloc (3 + 1))
by SCMFSA6C:3
;
hereby ( n - (s . (intloc (5 + 1))) <= 0 implies ( (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (1 + 1)) = (s . (intloc (1 + 1))) - 1 & (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (3 + 1)) = (s . (intloc (3 + 1))) + 1 ) )
assume A17:
n - (s . (intloc (5 + 1))) > 0
;
( (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (1 + 1)) = 0 & (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (3 + 1)) = s . (intloc (3 + 1)) )thus (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (1 + 1)) =
(IExec ((if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0)))))),(IExec ((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))),s)))) . (intloc (1 + 1))
by SCM_HALT:30
.=
0
by A11, A17, Lm3
;
(IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (3 + 1)) = s . (intloc (3 + 1))thus (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (3 + 1)) =
(IExec ((if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0)))))),(IExec ((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))),s)))) . (intloc (3 + 1))
by SCM_HALT:30
.=
s . (intloc (3 + 1))
by A16, A11, A17, Lm14
;
verum
end;
A18: (IExec ((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))),s)) . (intloc (1 + 1)) =
(Exec ((SubFrom ((intloc (4 + 1)),(intloc (5 + 1)))),(Exec (((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))),(Initialized s))))) . (intloc (1 + 1))
by SCMFSA6C:9
.=
(Exec (((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))),(Initialized s))) . (intloc (1 + 1))
by A15, SCMFSA_2:91
.=
(Initialized s) . (intloc (1 + 1))
by A15, SCMFSA_2:98
.=
s . (intloc (1 + 1))
by SCMFSA6C:3
;
hereby verum
assume A19:
n - (s . (intloc (5 + 1))) <= 0
;
( (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (1 + 1)) = (s . (intloc (1 + 1))) - 1 & (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (3 + 1)) = (s . (intloc (3 + 1))) + 1 )thus (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (1 + 1)) =
(IExec ((if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0)))))),(IExec ((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))),s)))) . (intloc (1 + 1))
by SCM_HALT:30
.=
(s . (intloc (1 + 1))) - 1
by A18, A11, A19, Lm3
;
(IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (3 + 1)) = (s . (intloc (3 + 1))) + 1thus (IExec (((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))) ';' (if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0))))))),s)) . (intloc (3 + 1)) =
(IExec ((if>0 ((intloc (4 + 1)),(Macro (SubFrom ((intloc (1 + 1)),(intloc (1 + 1))))),((AddTo ((intloc (3 + 1)),(intloc 0))) ';' (SubFrom ((intloc (1 + 1)),(intloc 0)))))),(IExec ((((intloc (4 + 1)) := ((fsloc 0),(intloc (1 + 1)))) ';' (SubFrom ((intloc (4 + 1)),(intloc (5 + 1))))),s)))) . (intloc (3 + 1))
by SCM_HALT:30
.=
(s . (intloc (3 + 1))) + 1
by A16, A11, A19, Lm14
;
verum
end;