deffunc H1( set , Element of [:NAT,NAT:]) -> Element of [:NAT,NAT:] = [($2 `2),(($2 `1) + ($2 `2))];
let it1, it2 be Element of NAT ; :: thesis: ( 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) ; :: thesis: ( 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) ; :: thesis: it1 = it2
fib1 = fib2 from NAT_1:sch 16(A3, A4, A6, A7);
hence it1 = it2 by A2, A5; :: thesis: verum