deffunc H1( set , Element of [:NAT ,NAT :]) -> Element of [:NAT ,NAT :] = [($2 `2 ),(($2 `1 ) + ($2 `2 ))];
consider fib being Function of NAT ,[: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();
thus Fib 0 =
[0 ,1] `1
by A1, A2, Def1
.=
0
by MCART_1:7
; :: thesis: ( 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, A2, Def1
.=
[((fib . 0 ) `2 ),(((fib . 0 ) `1 ) + ((fib . 0 ) `2 ))] `1
by A2
.=
[0 ,1] `2
by A1, MCART_1:7
.=
1
by MCART_1:7
; :: thesis: for n being Nat holds Fib ((n + 1) + 1) = (Fib n) + (Fib (n + 1))
let n be Nat; :: thesis: Fib ((n + 1) + 1) = (Fib n) + (Fib (n + 1))
reconsider n = n as Element of NAT by ORDINAL1:def 13;
A3: (fib . (n + 1)) `1 =
[((fib . n) `2 ),(((fib . n) `1 ) + ((fib . n) `2 ))] `1
by A2
.=
(fib . n) `2
by MCART_1:7
;
Fib ((n + 1) + 1) =
(fib . ((n + 1) + 1)) `1
by A1, A2, Def1
.=
[((fib . (n + 1)) `2 ),(((fib . (n + 1)) `1 ) + ((fib . (n + 1)) `2 ))] `1
by A2
.=
(fib . (n + 1)) `2
by MCART_1:7
.=
[((fib . n) `2 ),(((fib . n) `1 ) + ((fib . n) `2 ))] `2
by A2
.=
((fib . n) `1 ) + ((fib . (n + 1)) `1 )
by A3, MCART_1:7
.=
(Fib n) + ((fib . (n + 1)) `1 )
by A1, A2, Def1
.=
(Fib n) + (Fib (n + 1))
by A1, A2, Def1
;
hence
Fib ((n + 1) + 1) = (Fib n) + (Fib (n + 1))
; :: thesis: verum