Prolog为什么这个查询返回这个特定的结果,它的作用是什么

时间:2011-07-13 20:24:05

标签: prolog

?- assert(p(a)),assert(p(b)),setof(X,p(X),R).
X = H142
R = [a, b] 
yes

这个查询的效果是什么,为什么会返回这个特定的结果?

1 个答案:

答案 0 :(得分:2)

yes结果的原因是R,即仅由a和b组成的集合实际上是满足p(x)谓词的所有X的集合。

如果您要向R添加元素或从中删除a或b,结果将为no

p(a)和p(b)为真,因为断言谓词将这些子句添加到数据库中。

同样,如果您要添加另一个子句R = [a, b],请保留assert(p(c)),结果将为no(因为R将缺少c以使全部< / em> X,它满足p(X))。