Это очень распространенное упражнение в прологе, и просто быстрый Google дает бесчисленное множество решений, похожих на то, что вы ищете!Давайте добавим информацию, которую нам дал пример, в набор фактов.
parent(jane, tommy).
parent(beth, tammy).
parent(john, tommy).
parent(mike, tammy).
female(jane).
female(beth).
male(john).
male(mike).
функции, которые мать и отец не могут использовать в факте.
Таким образом, мы должны найти способ обойти это.Итак, что мы знаем, если вы мать, вы должны быть женщиной, а если вы отец, вы должны быть мужчиной.
mother(X, Y):-
parent(X, Y),
female(X).
father(X, Y):-
parent(X, Y),
male(X).
Так что, когда вы напишите father(X, tammy).
, он вернется X = mike
,Я бы порекомендовал прыгнуть через этот github , так как подход очень похож.