Пролог ньюб ie здесь. У меня есть эта программа:
edge(a,b). edge(b,c). path(X,X). path(X,Y):- edge(X,Z),path(Z,Y).
Я не могу понять, почему Пролог возвращает true для этого запроса:
path(a,c)
Возвращает true, потому что механизм пролога может доказать ваш запрос.
true
Вы можете представить, что механизм пролога делает это, когда вы запрашиваете path(a,c):
path/2
X
a
c
Y
edge(a, Z)
edge(a,b)
Z
b
path(b, c)
edge(b, Z)
path(c, c)