无法导出DLV谓词

时间:2018-08-25 16:04:27

标签: declarative datalog answer-set-programming

我有这个简单的DLV程序,由很少的谓词和派生规则组成。规则之一没有被激活,我也不知道为什么,因为显然所有谓词都存在。我必须承认我不是DLV的专家,并且自从我上次使用它以来就有点生锈,所以如果这太明显了,请原谅我:-/

在其他规则中,我有以下规则:

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),   知道(p1,r1),知道(p2,v2),知道(p2,r2),知道(p3,v3),知道(p3,r3)}

由于我拥有“ value(v1)”和“ knows(p1,v1)”以及“ connected(p1,p2)”,因此我期望程序的输出应包含“ knows(p1,chunk(v1, p1,p2))”。

任何人都可以解释一下为什么这种情况没有发生吗?


编辑:我删除了所有规则,仅创建了一个规则

chunk(v, ps) :- value(v), participant(ps).

但是此规则也未激活!有什么问题?我尝试了最简单的方法:

chunk(v) :- value(v).

,并且没有激活。我想念什么?

1 个答案:

答案 0 :(得分:1)

好。我刚意识到自己的愚蠢。问题是我在变量中使用小写字母而不是大写字母...对不起,我说我生锈了!

所以,仅作记录。而不是chunk(v) :- value(v)应该是chunk(V) :- value(V)