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