Предположим, у меня есть следующий код в моем файле familyTree.pl:
male(tom).
male(bob).
female(lisa).
female(emily).
parent(tom, bob).
parent(lisa, bob).
morethanfriends(emily, bob).
father(X,Y) :- male(X), parent(X,Y).
mother(X,Y) :- female(X), parent(X,Y).
girlfriend(X,Y) :- female(X), (morethanfriends(X,Y); morethanfriends(Y,X)).
boyfriend(X,Y) :- male(X), (morethanfriends(X,Y); morethanfriends(Y,X)).
Теперь я хочу получить ответ на такие вопросы, как:
What is the relationship between Tom and Bob ?
What is the relationship between Lisa and Emily ?
Как я могу задать вышеупомянутые вопросы в прологе?
Единственное решение, которое я мог придумать, состояло в том, чтобы перебрать известные типы отношений, давая (Том, Боб) или (Лиза, Эмили) в качестве параметра, и проверить, какой из них возвращает истину . Но; это решение кажется пустой тратой времени, когда количество известных типов отношений больше, чем несколько и / или существует цепная связь между данными двумя людьми (например: Лиза и Эмили: Лиза - мать парня Эмили).