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

What do 1<0 and 1=-1 mean in clingo/ASP?

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

foo(L1, L2, L3) :- isa(thing,object), isa(thing, object)...

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

假设您使用的是 Clingo 5,条件应该像正常的布尔条件一样解析。

由于您没有发布确切的行,我只能假设它是以下形式的行:

atom :- 1 > 0, 1 < 0, 1 = -1. 

这一行说

atom is true if: "1 > 0" AND "1 < 0" AND "1 = -1".

我觉得混淆的根源是解释这行的方式。只有第一个布尔条件为真,其他 2 个为假。但这并不意味着原子是假的:它只是意味着没有证据表明原子是真的。

运行 这一行给我们输出:

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行矛盾,所以答案不满足。

显然,如果没有给出实际的行,我无法告诉您任何细节,但布尔值的解析方式与它们在传统编程语言中的解析方式相同。

希望对您有所帮助!