Первый library(clpfd)
(не fd
) - насколько я знаю - конечный домен решатель. Поэтому вам необходимо предоставить домены конечных.
Во-вторых, вы предоставляете ограничение равенства, вы должны обеспечить ограничение неравенства.
Пример:
:- use_module(library(cplfd)).
compute(L=R,X,Low,High) :-
term_variables(L, [X]),
X in Low..High,
L #> R,
label([X]).
Или когда никакие домены не указаны:
compute(L=R,X) :-
term_variables(L,[X]),
L #> R.
А потом инстанцирует:
?- compute(5*X*X-2*X+7=0,X).
2*X#=_G1114,
_G1128*X#=_G1126,
5*X#=_G1128,
_G1152+_G1114#=_G1126,
_G1152 in -6..sup,
_G1152+7#=_G1174,
_G1174 in 1..sup.
Как вы его экземпляр, почему вы используете конечный домены, какие существуют домены? Насколько я знаю, 'fd' даже не является библиотекой. –
http://stackoverflow.com/questions/9209058/how-to-do-arithmetic-expression-evaluation-in-prolog из приведенной выше ссылки я узнал об этом. Также я хочу знать, как вставить библиотеку в .pl file.The # sign doen; t поддержка вообще. Даже в вышеуказанной программе. – ict
Как уже упоминалось, библиотека 'fd' мне неизвестна. Вероятно, вы должны использовать 'clpfd' ... –