Пролог - различия между красным и зеленым

Я начал изучать пролог, и хотел сделать все прорези более понятными. Я читал, что «зеленое вырезание не меняет декларативное значение программы, в то время как красное сокращение не меняет». Но смысл программы не является чисто декларативным (просто из-за того, что пролог фактически возвращает все параметры).

Вот пример:

p(1).
p(2) :- !.
p(3).

было сказано, что это зеленый срез. Но если я запускаю это:

p(X), X =:= 3.

Я получу «истинно» без разреза, и «ложно» с разрезом. Итак, что я скучаю?

Заранее спасибо.

Ответы на вопрос(1)

Ваш ответ на вопрос