FIX chr_identifier related bugs and performance issues
[chr.git] / Examples / fib.chr
blob1ddaf7f285ca959beb2c840619a1d72a9b72013b
1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2 %%
3 %% 991202 Slim Abdennadher, LMU
4 %%
5 %% ported to hProlog by Tom Schrijvers
7 :- module(fib,[]).
9 :- use_module(library(chr)).
11 :- constraints fib/2.
13 %% fib(N,M) is true if  M is the Nth Fibonacci number.
15 %% Top-down Evaluation with Tabulation
17 fib(N,M1), fib(N,M2) <=> M1 = M2, fib(N,M1).
19 fib(0,M) ==> M = 1.
21 fib(1,M) ==> M = 1.
23 fib(N,M) ==> N > 1 | N1 is N-1, fib(N1,M1), N2 is N-2, fib(N2,M2), M is M1 + M2.
24