Каким было ваше первоначальное намерение? Возможно, вы хотели заявить, что X
не равно 3. Для неравенства многие системы Prolog предлагают dif/2
:
?- dif(X,3).
dif(X,3).
В этом запросе мы запрашиваем значения для X
, которые не равны 3. Итак, какие значения не равны? На самом деле, довольно много: вспомните 1
, 2
, термин 3+3
, c
, список [2,3,4]
и многое другое. Таким образом, конкретный ответ, такой как X = 4
, исключает многие другие действительные ответы. Ответ здесь, однако, следующий: запрос выполняется для всех X
, которые не равны 3. Поэтому фактическая оценка отложена до более позднего момента.
?- dif(X,3), X = 3.
false.
Здесь мы попали в ситуацию, когда X
получил значение 3 - что не имеет места.
?- dif(X,3), X = 4.
X = 4.
И здесь принимается конкретное действительное значение, а ограничение dif(4,3)
снимается.