let s be State of SCMPDS ; for n being Element of NAT holds
( (IExec (Fib-macro n),s) . (intpos 1) = Fib n & (IExec (Fib-macro n),s) . (intpos 2) = Fib (n + 1) & Fib-macro n is_halting_on s )
let n be Element of NAT ; ( (IExec (Fib-macro n),s) . (intpos 1) = Fib n & (IExec (Fib-macro n),s) . (intpos 2) = Fib (n + 1) & Fib-macro n is_halting_on s )
set a = GBP ;
set i1 = GBP := 0 ;
set i2 = (intpos 1) := 0 ;
set i3 = (intpos 2) := 1;
set i4 = (intpos 3) := n;
set I4 = (((GBP := 0 ) ';' ((intpos 1) := 0 )) ';' ((intpos 2) := 1)) ';' ((intpos 3) := n);
set t1 = IExec ((((GBP := 0 ) ';' ((intpos 1) := 0 )) ';' ((intpos 2) := 1)) ';' ((intpos 3) := n)),s;
set t2 = IExec (((GBP := 0 ) ';' ((intpos 1) := 0 )) ';' ((intpos 2) := 1)),s;
set t3 = IExec ((GBP := 0 ) ';' ((intpos 1) := 0 )),s;
set t4 = Exec (GBP := 0 ),(Initialize s);
A1:
(Exec (GBP := 0 ),(Initialize s)) . GBP = 0
by SCMPDS_2:57;
A2: (IExec ((GBP := 0 ) ';' ((intpos 1) := 0 )),s) . GBP =
(Exec ((intpos 1) := 0 ),(Exec (GBP := 0 ),(Initialize s))) . GBP
by SCMPDS_5:47
.=
0
by A1, AMI_3:52, SCMPDS_2:57
;
A3: (IExec (((GBP := 0 ) ';' ((intpos 1) := 0 )) ';' ((intpos 2) := 1)),s) . GBP =
(Exec ((intpos 2) := 1),(IExec ((GBP := 0 ) ';' ((intpos 1) := 0 )),s)) . GBP
by SCMPDS_5:46
.=
0
by A2, AMI_3:52, SCMPDS_2:57
;
A4: (IExec ((GBP := 0 ) ';' ((intpos 1) := 0 )),s) . (intpos 1) =
(Exec ((intpos 1) := 0 ),(Exec (GBP := 0 ),(Initialize s))) . (intpos 1)
by SCMPDS_5:47
.=
0
by SCMPDS_2:57
;
A5: (IExec (((GBP := 0 ) ';' ((intpos 1) := 0 )) ';' ((intpos 2) := 1)),s) . (intpos 1) =
(Exec ((intpos 2) := 1),(IExec ((GBP := 0 ) ';' ((intpos 1) := 0 )),s)) . (intpos 1)
by SCMPDS_5:46
.=
0
by A4, AMI_3:52, SCMPDS_2:57
;
A6: (IExec ((((GBP := 0 ) ';' ((intpos 1) := 0 )) ';' ((intpos 2) := 1)) ';' ((intpos 3) := n)),s) . (intpos 1) =
(Exec ((intpos 3) := n),(IExec (((GBP := 0 ) ';' ((intpos 1) := 0 )) ';' ((intpos 2) := 1)),s)) . (intpos 1)
by SCMPDS_5:46
.=
0
by A5, AMI_3:52, SCMPDS_2:57
;
A7: (IExec (((GBP := 0 ) ';' ((intpos 1) := 0 )) ';' ((intpos 2) := 1)),s) . (intpos 2) =
(Exec ((intpos 2) := 1),(IExec ((GBP := 0 ) ';' ((intpos 1) := 0 )),s)) . (intpos 2)
by SCMPDS_5:46
.=
1
by SCMPDS_2:57
;
A8: (IExec ((((GBP := 0 ) ';' ((intpos 1) := 0 )) ';' ((intpos 2) := 1)) ';' ((intpos 3) := n)),s) . (intpos 2) =
(Exec ((intpos 3) := n),(IExec (((GBP := 0 ) ';' ((intpos 1) := 0 )) ';' ((intpos 2) := 1)),s)) . (intpos 2)
by SCMPDS_5:46
.=
1
by A7, AMI_3:52, SCMPDS_2:57
;
A9: (IExec ((((GBP := 0 ) ';' ((intpos 1) := 0 )) ';' ((intpos 2) := 1)) ';' ((intpos 3) := n)),s) . (intpos 3) =
(Exec ((intpos 3) := n),(IExec (((GBP := 0 ) ';' ((intpos 1) := 0 )) ';' ((intpos 2) := 1)),s)) . (intpos 3)
by SCMPDS_5:46
.=
n
by SCMPDS_2:57
;
A10: (IExec ((((GBP := 0 ) ';' ((intpos 1) := 0 )) ';' ((intpos 2) := 1)) ';' ((intpos 3) := n)),s) . GBP =
(Exec ((intpos 3) := n),(IExec (((GBP := 0 ) ';' ((intpos 1) := 0 )) ';' ((intpos 2) := 1)),s)) . GBP
by SCMPDS_5:46
.=
0
by A3, AMI_3:52, SCMPDS_2:57
;
then A11:
( while>0 GBP ,3,((((GBP ,4 := GBP ,2) ';' (AddTo GBP ,2,GBP ,1)) ';' (GBP ,1 := GBP ,4)) ';' (AddTo GBP ,3,(- 1))) is_closed_on IExec ((((GBP := 0 ) ';' ((intpos 1) := 0 )) ';' ((intpos 2) := 1)) ';' ((intpos 3) := n)),s & while>0 GBP ,3,((((GBP ,4 := GBP ,2) ';' (AddTo GBP ,2,GBP ,1)) ';' (GBP ,1 := GBP ,4)) ';' (AddTo GBP ,3,(- 1))) is_halting_on IExec ((((GBP := 0 ) ';' ((intpos 1) := 0 )) ';' ((intpos 2) := 1)) ';' ((intpos 3) := n)),s )
by A6, A8, A9, Lm7;
(IExec (while>0 GBP ,3,((((GBP ,4 := GBP ,2) ';' (AddTo GBP ,2,GBP ,1)) ';' (GBP ,1 := GBP ,4)) ';' (AddTo GBP ,3,(- 1)))),(IExec ((((GBP := 0 ) ';' ((intpos 1) := 0 )) ';' ((intpos 2) := 1)) ';' ((intpos 3) := n)),s)) . (intpos 1) = Fib n
by A10, A6, A8, A9, Lm7;
hence
(IExec (Fib-macro n),s) . (intpos 1) = Fib n
by A11, SCPISORT:8; ( (IExec (Fib-macro n),s) . (intpos 2) = Fib (n + 1) & Fib-macro n is_halting_on s )
(IExec (while>0 GBP ,3,((((GBP ,4 := GBP ,2) ';' (AddTo GBP ,2,GBP ,1)) ';' (GBP ,1 := GBP ,4)) ';' (AddTo GBP ,3,(- 1)))),(IExec ((((GBP := 0 ) ';' ((intpos 1) := 0 )) ';' ((intpos 2) := 1)) ';' ((intpos 3) := n)),s)) . (intpos 2) = Fib (n + 1)
by A10, A6, A8, A9, Lm7;
hence
(IExec (Fib-macro n),s) . (intpos 2) = Fib (n + 1)
by A11, SCPISORT:8; Fib-macro n is_halting_on s
thus
Fib-macro n is_halting_on s
by A11, SCPISORT:10; verum