我有一组事实:
likes(john,mary).
likes(mary,robert).
likes(robert,kate).
likes(alan,george).
likes(alan,mary).
likes(george,mary).
likes(harry,mary).
likes(john,alan).
现在我想编写一个关系,它将检查输入列表的所有元素 X 如果likes(X,A)
是真的。我的关系应该返回 true 一次,如果likes(X,A)
对于列表 L 中的所有元素 X 都成立。
如果我尝试这个:
relat(X) :- member(A,[john,alan,george,harry]), likes(A,X).
但输出是
?- relat(mary).
true ;
true ;
true ;
true.
我想这样写,一旦发现它就返回一个 truelikes(john,mary),likes(alan,mary),likes(george,mary),likes(harry,mary)
一切都是真的。
如何解决这个问题?