Пролог SWI - CLP(R) не распространяется полностью
Это дает мне результат:
?- {5/(X) = (5/2)}.
X = 2.0 ;
Это показывает мне ограничение, но не позволяет мне использовать
X
любым материальным способом:
?- {5/(3-X) = (5/2)}.
{-2.5+5/(3-X)=0.0}.
?- {5/(3-X) = (5/2)}, Z is X.
ERROR: Arguments are not sufficiently instantiated
Конечно, если я явно даю решение, ограничение исчезает и оно оценивается как истинное.
?- {5/(3-X) = (5/2)}, X = 1.
X = 1.
Почему и как я могу заставить его работать?
1 ответ
См. раздел A10.3 по адресу https://www.swi-prolog.org/man/clpqr.html .
Однако clpBNR кажется лучше:
?- pack_install(clpBNR).
?- use_module(library(clpBNR)).
?- {5/(3-X) =:= 5/2}, Z = X.
X = Z, Z = 1.