在序言中,我们可以使用否定来选择元组中的最大值,例如:p(X),而不是(p(Y),Y> X)。 %在Prolog中工作,但在Clingo中不工作
如何使用Clingo表达式获得相似的规则(如果没有比A大的数字,则A为最大值)。谢谢。
以下规则可以表示如果没有比A大的数字,则A为最大值。
non_max(X) :- p(X), p(Y), Y > X.
max(X) :- p(X), not non_max(X).
[基本上,您代表的规则是具有通用量词的规则,即
∀b∈p(b),如果a> b,则a为最大值。 (1)
[如果a是最大值,则∀b∈p(b),a> b。 (2)
将(2)转换为对立面,我们有
如果Ifb∈p(b),a
(3)的对应规则是non_max(X) :- p(X), p(Y), Y > X.
由于max和non_max是互斥的,所以我们有max(X) :- p(X), not non_max(X).