Привет, у меня есть проблема, которую я не могу решить. Я новичок в Prolog, и я видел массу примеров этого генеалогического древа, но ни один из них, похоже, не решает мою проблему.
Скажи, что у меня есть
son(X, Y) :-
\+daughter(X, Y),
father(Y, X).
father(Y, X) :-
male(X),
son(X, Y).
и я вызываю один из них, он будет переключаться между условиями, потому что каждый из них будет удовлетворять предыдущему, что приведет к локальной ошибке стека.
Большинство, похоже, рекомендуют удалить одно из определений, но мне нужно ответить на вопросы отца и сына. Пожалуйста, помогите, это кажется таким простым, но я никак не могу в этом разобраться. Как я могу сломаться после цикла один раз?
ТИА