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行矛盾,所以答案不满足。
显然,如果没有给出实际的行,我无法告诉您任何细节,但布尔值的解析方式与它们在传统编程语言中的解析方式相同。
希望对您有所帮助!
我以前从未使用过 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行矛盾,所以答案不满足。
显然,如果没有给出实际的行,我无法告诉您任何细节,但布尔值的解析方式与它们在传统编程语言中的解析方式相同。
希望对您有所帮助!