我有一组事实:谓语必须是所有元素的真正在列表
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)
是真实的。
relat(X) :- member(A,[john,alan,george,harry]), likes(A,X).
但输出
?- relat(mary).
true ;
true ;
true ;
true.
我想写它这样的:如果我试试这个这是我的关系应该返回true,如果一旦likes(X,A)
是在我的名单L. 所有元素X真一旦它发现likes(john,mary),likes(alan,mary),likes(george,mary),likes(harry,mary)
全部为真,它将返回一个真。 如何解决这个问题?
这是一个直接的解决方案。我没有受过关于forall/2的教育。谢谢@larsmans。 – na899 2014-12-03 17:21:22