gpt4 book ai didi

prolog - 谓词必须对列表中的所有元素都为真

转载 作者:行者123 更新时间:2023-12-05 08:34:29 24 4
gpt4 key购买 nike

我有一组事实:

likes(john,mary).
likes(mary,robert).
likes(robert,kate).
likes(alan,george).
likes(alan,mary).
likes(george,mary).
likes(harry,mary).
likes(john,alan).

现在我想编写一个关系,如果 likes(X,A) 为真,它将检查输入列表的所有元素 X。如果 likes(X,A) 对于列表 L 中的所有元素 X 都为真,我的关系应该返回一次真。如果我试试这个:

relat(X) :- member(A,[john,alan,george,harry]), likes(A,X).

但是输出是

?- relat(mary).
true ;
true ;
true ;
true.

我想这样写,一旦发现 likes(john,mary),likes(alan,mary),likes(george,mary),likes(harry,mary) 都是真的。如何解决这个问题?

最佳答案

在 SWI-Prolog 中,您可以使用 forall/2:

?- forall(member(A, [john, alan, george, harry]), likes(A, mary)).
true.
?- forall(member(A, [john,alan,george,harry,marys_ex]), likes(A, mary)).
false.

关于prolog - 谓词必须对列表中的所有元素都为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27275378/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com