woman(lisa).
woman(maggie).
parents(lisa , homer, marge).
parents(maggie, homer, marge).
sister(X, Y) :-
X \= Y,
woman(X),
parents(X, P, M),
parents(Y, P, M).
Когда я запустил следующий запрос, я не ожидал отказа (но получил его тем не менее).Почему эта прологовая программа возвращает false?
?- sister(lisa, X).
false. % expected result: X = maggie
Почему я вижу это поведение?
'(\ =)/2' не является чисто логическое отношение. Вместо этого используйте чистый предикат 'dif/2'. Проблема с '(\ =)/2' в двух словах:'? - X \ = Y, X = a, Y = b.' дает ** false **, но 'X = a, Y = b, X \ = Y' ** преуспевает **. – mat