我有一組事實:謂語必須是所有元素的真正在列表
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