我在 dlv 中有以下事实,知道 (X,Y) 意味着 X 知道 Y。
knows(adam, dan).
knows(adam,alice).
knows(adam,peter).
knows(adam,eva).
knows(dan, adam).
knows(dan,alice).
knows(dan,peter).
knows(eva, alice).
knows(eva,peter).
knows(alice, peter).
knows(peter, alice).
我定义了以下谓词,
person(X) :- knows(X, _).
这将给所有的人从事实。我试图找到一个谓词流行(X)。这将给受欢迎的人。它被定义为如果所有人都知道 X,那么 X 是受欢迎的。上述事实清单的答案是爱丽丝和彼得。我将其定义如下,
popular(X):-person(X),knows(_,X).
如果 X 是一个人并且每个人都知道 X,那么 X 很受欢迎。但是当我运行它时,我得到的结果是所有人。我在哪里犯错?