首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未派生的DLV谓词

未派生的DLV谓词
EN

Stack Overflow用户
提问于 2018-08-25 16:04:26
回答 1查看 61关注 0票数 0

我有一个简单的DLV程序,由几个谓词和派生规则组成。其中一个规则没有被激活,我不知道为什么,因为显然所有的谓词都存在。我不得不承认,我不是DLV方面的专家,自从上次使用DLV以来,我有点生疏,所以如果这太明显,请原谅我:-/

除其他外,我有一条规则:

代码语言:javascript
复制
knows(ps, chunk(v, ps, pd)) :-  value(v),       
                                knows(ps, v),
                                connected(ps, pd).

在这里,您可以看到我在执行代码之后得到了什么:

./dlv -nofinitecheck model.edb rules.idb {参与者(P1),参与者( p2),参与者( p3),值( v1),值( r1),值( v2),值( r2),值( v3),值(R3),连接(p1,p2),连接(p1,p3),连接(p2,p3),知道(p1,v1),知道(p3,p3),知道(,)

由于我有"value(v1)“和”明知( p1,v1)“和"connected(p1,p2)",所以我希望程序的输出应该包含”知道(p1,块(v1,p1,p2))“。

有人能解释一下为什么不发生这种事吗?

编辑:我删除了所有的规则,只创建了这个单一的规则。

代码语言:javascript
复制
chunk(v, ps) :- value(v), participant(ps).

但是这个规则也没有被激活!有什么问题吗?我试过最简单的一个:

代码语言:javascript
复制
chunk(v) :- value(v).

也没有激活。我遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2018-08-25 16:42:53

好的。我刚刚意识到我的愚蠢。问题是我用小写字母作为变量,而不是用大写字母.对不起,就像我说的,我生锈了!

所以,只是为了记录下。而不是chunk(v) :- value(v),它应该是类似于chunk(V) :- value(V)的东西

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52019013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档