lparse/clingo:怎么说 All Of(a,b,c) :- 条件?
lparse/clingo: How to say AllOf(a,b,c) :- condition?
以下使一个或多个文字为真:
a,b,c :- condition.
a;b;c :- condition.
上面a,b,c,condition是一个有效的模型,还有(a,condition), (a,b,condition)等。我希望a,b,c都为真,总是,如果条件为真。
我可以写下面的代码来强制 a,b,c 一起永远为真。
:- condition, a, not b.
:- condition, b, not c.
:- condition, c, not a.
但是对于复杂的规则,这些变得非常冗长并且容易出错。
你可以写
3 { a ; b ; c } 3 :- condition.
这意味着如果条件为真,则大括号中至少有3个和最多3个原子被定义为真。
你写的约束有一个非常不同的含义,例如第一个约束要求一些其他规则不能定义条件的真实性,除非还有一个规则定义 b 为真。
以下使一个或多个文字为真:
a,b,c :- condition.
a;b;c :- condition.
上面a,b,c,condition是一个有效的模型,还有(a,condition), (a,b,condition)等。我希望a,b,c都为真,总是,如果条件为真。
我可以写下面的代码来强制 a,b,c 一起永远为真。
:- condition, a, not b.
:- condition, b, not c.
:- condition, c, not a.
但是对于复杂的规则,这些变得非常冗长并且容易出错。
你可以写
3 { a ; b ; c } 3 :- condition.
这意味着如果条件为真,则大括号中至少有3个和最多3个原子被定义为真。
你写的约束有一个非常不同的含义,例如第一个约束要求一些其他规则不能定义条件的真实性,除非还有一个规则定义 b 为真。