我有这个简单的 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).
并且没有激活。我错过了什么?