(Примечание: этот ответ несколько догадывается)
Рассмотрим, как Пролог определяет, является ли f(a,c)
истинным или нет. Он проверяет первое правило f(a,b)
и не находит соответствия, но второе правило f(a,c)
соответствует. Следовательно, f(a,c)
верно. Более того, поскольку для f
больше нет правил, нет смысла разрешать возникновение возврата назад - других возможных решений нет.
Теперь рассмотрим f(a,b)
. Пролог проверит первое правило и найдет совпадение. Следовательно, f(a,b)
верно. Однако не все правила были исчерпаны. Поэтому Prolog позволит продолжить поиск (если вы нажмете ;
). Когда вы продолжите поиск и возврат, он обнаружит, что остальные правила, в частности f(a,c)
, не соответствуют f(a,b)
. Следовательно, результат ложен.