Generalizando a sequência de Fibonacci com o SICStus Prolog
Estou tentando encontrar uma solução para uma consulta em uma seqüência generalizada de Fibonacci (GFS). A consulta é: existe algum GFS que tenha 885 como seu 12º número? Os 2 números iniciais podem ser restritos entre 1 e 10.
Eu já encontrei a solução para encontrar o enésimo número em uma sequência que começa em (1, 1) na qual defino explicitamente os números iniciais. Aqui está o que eu tenho para isso:
fib(1, 1).
fib(2, 1).
fib(N, X) :-
N #> 1,
Nmin1 #= N - 1,
Nmin2 #= N - 2,
fib(Nmin1, Xmin1),
fib(Nmin2, Xmin2),
X #= Xmin1 + Xmin2.
Para a consulta mencionada, pensei que o seguinte faria o truque, no qual reutilizo o método fib sem definir explicitamente os números iniciais, pois isso agora precisa ser feito dinamicamente:
fib(N, X) :-
N #> 1,
Nmin1 #= N - 1,
Nmin2 #= N - 2,
fib(Nmin1, Xmin1),
fib(Nmin2, Xmin2),
X #= Xmin1 + Xmin2.
fib2 :-
X1 in 1..10,
X2 in 1..10,
fib(1, X1),
fib(2, X2),
fib(12, 885).
... mas isso não parece funcionar.
Não é possível definir os números iniciais ou estou fazendo algo terrivelmente errado? Não estou pedindo a solução, mas qualquer conselho que possa me ajudar a resolver isso será muito apreciado.