我在prolog中有一个问题。这是知识库。
loves(vincent,mia).
loves(marcellus,mia).
loves(pumpkin,honey_bunny).
loves(honey_bunny,pumpkin).
jealous(X,Y) :-
loves(X,Z),
loves(Y,Z).
这是来自“Learn Prolog Now”一书。现在,如果我进行查询?- jealous(marcellus,W).
,则返回W = vincent
,但如果我提供查询?- jealous(vincent,W).
,则返回结果为W=vincent
所以这意味着文森特嫉妒自己但是马塞勒斯并不嫉妒自己。为什么答案不同?
我在Ubuntu Linux中使用swipl,它位于winxp上的VirtualBox中。我是Prolog的初学者。
由于
答案 0 :(得分:2)
在查询W = vincent
的答案?- jealous(marcellus,W).
后输入;
而不是Enter
,您将获得W = marcellus.
您必须在X \= Y
中添加jealous/2
这一事实。