У меня есть несколько фактов:
parent(bob, anne). % bob is a. parent of anne.
sibling(anne, mary).
Я пытаюсь выяснить у родителей факты, связанные с братьями и сестрами, поэтому, если я запрашиваю * 1004, * bob должен быть выводом.Пока мои правила таковы:
siblingOf(X,Y) :- sibling(X,Y).
siblingOf(X,Y) :- sibling(Y,X).
parent(X,Z) :-
siblingOf(Z,Y),
parent(X,Y).
Это идет по бесконечному циклу.Я подозреваю, что это потому, что рекурсивный вызов не имеет конечного условия.Что я могу сделать, чтобы это работало?