deffunc H1( set , Element of [:NAT ,NAT :]) -> Element of [:NAT ,NAT :] = [($2 `2 ),(($2 `1 ) + ($2 `2 ))];
let it1, it2 be Element of NAT ; ( ex fib being Function of NAT ,[:NAT ,NAT :] st
( it1 = (fib . n) `1 & fib . 0 = [0 ,1] & ( for n being Nat holds fib . (n + 1) = [((fib . n) `2 ),(((fib . n) `1 ) + ((fib . n) `2 ))] ) ) & ex fib being Function of NAT ,[:NAT ,NAT :] st
( it2 = (fib . n) `1 & fib . 0 = [0 ,1] & ( for n being Nat holds fib . (n + 1) = [((fib . n) `2 ),(((fib . n) `1 ) + ((fib . n) `2 ))] ) ) implies it1 = it2 )
given fib1 being Function of NAT ,[:NAT ,NAT :] such that A2:
it1 = (fib1 . n) `1
and
A3:
fib1 . 0 = [0 ,1]
and
A4:
for n being Nat holds fib1 . (n + 1) = H1(n,fib1 . n)
; ( for fib being Function of NAT ,[:NAT ,NAT :] holds
( not it2 = (fib . n) `1 or not fib . 0 = [0 ,1] or ex n being Nat st not fib . (n + 1) = [((fib . n) `2 ),(((fib . n) `1 ) + ((fib . n) `2 ))] ) or it1 = it2 )
given fib2 being Function of NAT ,[:NAT ,NAT :] such that A5:
it2 = (fib2 . n) `1
and
A6:
fib2 . 0 = [0 ,1]
and
A7:
for n being Nat holds fib2 . (n + 1) = H1(n,fib2 . n)
; it1 = it2
fib1 = fib2
from NAT_1:sch 16(A3, A4, A6, A7);
hence
it1 = it2
by A2, A5; verum