在clingo / ASP中1 <0和1 = -1是什么意思?

时间:2018-11-21 16:54:03

标签: answer-set-programming clingo gringo

我以前从未使用过clingo,但是我发现在线文档不完整(我也无法发布到Potassco论坛)。我有一段clingo代码,其中的规则行格式为

  

foo(L1,L2,L3):-isa(事物,对象),isa(事物,对象)...

那部分代码是有意义的,但是在最后一条规则的最后一行,我的条件是1> 0、1 <0或1 ==-1。我不确定它们的含义,因为它们似乎没有遵循正常的布尔规则。有谁知道这对clingo意味着什么?

1 个答案:

答案 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行矛盾,因此答案不令人满意。

很显然,如果不提供实际的代码,我无法告诉您任何细节,但是布尔值的解析方式与常规编程语言相同。

我希望这会有所帮助!