deffunc H1( set , Element of [:NAT,NAT:]) -> Element of [:NAT,NAT:] = In ([($2 `2),(($2 `1) + ($2 `2))],[:NAT,NAT:]);
consider fib being sequence of [:NAT,NAT:] such that
A1:
fib . 0 = [0,1]
and
A2:
for n being Nat holds fib . (n + 1) = H1(n,fib . n)
from NAT_1:sch 12();
A3:
for n being Nat holds fib . (n + 1) = [((fib . n) `2),(((fib . n) `1) + ((fib . n) `2))]
proof
let n be
Nat;
fib . (n + 1) = [((fib . n) `2),(((fib . n) `1) + ((fib . n) `2))]
reconsider i =
(fib . n) `2 ,
j =
((fib . n) `1) + ((fib . n) `2) as
Nat ;
fib . (n + 1) =
H1(
n,
fib . n)
by A2
.=
[i,j]
;
hence
fib . (n + 1) = [((fib . n) `2),(((fib . n) `1) + ((fib . n) `2))]
;
verum
end;
thus Fib 0 =
[0,1] `1
by A1, A3, Def1
.=
0
; ( Fib 1 = 1 & ( for n being Nat holds Fib ((n + 1) + 1) = (Fib n) + (Fib (n + 1)) ) )
thus Fib 1 =
(fib . (0 + 1)) `1
by A1, A3, Def1
.=
[((fib . 0) `2),(((fib . 0) `1) + ((fib . 0) `2))] `1
by A3
.=
[0,1] `2
by A1
.=
1
; for n being Nat holds Fib ((n + 1) + 1) = (Fib n) + (Fib (n + 1))
let n be Nat; Fib ((n + 1) + 1) = (Fib n) + (Fib (n + 1))
reconsider n = n as Element of NAT by ORDINAL1:def 12;
A4: (fib . (n + 1)) `1 =
[((fib . n) `2),(((fib . n) `1) + ((fib . n) `2))] `1
by A3
.=
(fib . n) `2
;
Fib ((n + 1) + 1) =
(fib . ((n + 1) + 1)) `1
by A1, A3, Def1
.=
[((fib . (n + 1)) `2),(((fib . (n + 1)) `1) + ((fib . (n + 1)) `2))] `1
by A3
.=
(fib . (n + 1)) `2
.=
[((fib . n) `2),(((fib . n) `1) + ((fib . n) `2))] `2
by A3
.=
((fib . n) `1) + ((fib . (n + 1)) `1)
by A4
.=
(Fib n) + ((fib . (n + 1)) `1)
by A1, A3, Def1
.=
(Fib n) + (Fib (n + 1))
by A1, A3, Def1
;
hence
Fib ((n + 1) + 1) = (Fib n) + (Fib (n + 1))
; verum