Пролог 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.
Другие вопросы по тегам