我正在prolog中开发一个家谱(皇家)实现,而且我对prolog很新。所以每当我跑:
| ?- brother_in_law(Who, diana).
Who = andrew ? ;
Who = andrew ? ;
Who = edward ? ;
Who = edward ? ;
no
正如你所看到的,我得到了这些重复的答案,我想知道这是正常的,或者我做错了什么?我如何解决它?任何帮助,将不胜感激。
这是我对brother_in_law的谓词:
brother_in_law(B, X) :- male(B), brother(B, M), spouse(X, M).
兄弟的谓词:
brother(X, Y) :- male(X), sibling(X, Y).
最终谓词兄弟姐妹:
sibling(X, Y) :- child(X, P), child(Y, P), X \= Y.
然后我还有其他事实,如男性(爱德华),女性(戴安娜)和配偶(戴安娜,查尔斯)等。