我以前从未使用过clingo,但是我发现在线文档不完整(我也无法发布到Potassco论坛)。我有一段clingo代码,其中的规则行格式为
foo(L1,L2,L3):-isa(事物,对象),isa(事物,对象)...
那部分代码是有意义的,但是在最后一条规则的最后一行,我的条件是1> 0、1 <0或1 ==-1。我不确定它们的含义,因为它们似乎没有遵循正常的布尔规则。有谁知道这对clingo意味着什么?
答案 0 :(得分:1)
假设您使用的是Clingo 5,则条件应该可以像正常的布尔条件一样解决。
由于您尚未发布确切的行,因此我只能假定它是以下形式的行:
atom :- 1 > 0, 1 < 0, 1 = -1.
此行说
如果为“ 1> 0”且“ 1 <0”且“ 1 = -1”,则为true。
我感觉混乱的根源是解释这条线的方式。只有第一个布尔条件为true,其他两个为false。但这并不意味着原子是假的:它只是意味着没有证据表明原子是真。
运行此行将为我们提供输出:
Answer: 1
SATISFIABLE
因为没有证据证明原子是真的。
这意味着我们可以有一个像这样的程序:
atom :- 1 > 0, 1 < 0, 1 = -1.
atom :- 1 = 1.
它将得到答案:
Answer: 1
atom
SATISFIABLE
第二行提供了原子为真的证据,而第一行则没有提供原子为真的证据。因此,原子是真实的,答案是可以满足的。没有矛盾。
在此程序中:
atom :- 1 > 0, 1 < 0, 1 = -1.
atom :- 1 = 0.
我们得到了答案:
Answer: 1
SATISFIABLE
因为这两行都没有提供原子为真的证据。没有矛盾,所以答案是满意的,但是只有当有证据证明一个原子为真时,原子才被证明为真。
在此程序中:
atom :- 1 > 0, 1 < 0, 1 = -1.
:- atom.
我们得到了答案:
Answer: 1
SATISFIABLE
第一行仍然没有提供原子为真的证据,但是第二行证明为假。由于这两行并不矛盾,我们再次有了一个空虚但满意的答案。
最后,我们有了程序:
atom :- 1 > 0, 1 < 0, 1 = -1.
atom :- 1 = 1.
:- atom.
有答案的人
UNSATISFIABLE
第1行没有提供证明原子为真的证据,第2行证明了原子为真,而第3行则证明了原子为假。第2行和第3行矛盾,因此答案不令人满意。
很显然,如果不提供实际的代码,我无法告诉您任何细节,但是布尔值的解析方式与常规编程语言相同。
我希望这会有所帮助!