% Prolog Fibonacci

fib(0, 0).
fib(1, 1).
fib(N, F) :-
    N > 1,
    N1 is N - 1,
    N2 is N - 2,
    fib(N1, F1),
    fib(N2, F2),
    F is F1 + F2.

print_fib(N) :-
    fib(N, F),
    format('fib(~w) = ~w~n', [N, F]).

main :-
    forall(between(0, 10, N), print_fib(N)),
    halt.

:- initialization(main).
