代码之家  ›  专栏  ›  技术社区  ›  Sid Datta

lparse/clago:如何说allof(a,b,c):-条件?

  •  0
  • Sid Datta  · 技术社区  · 8 年前

    以下内容使一个或多个字面值为真:

    a,b,c :- condition.
    a;b;c :- condition.
    

    在上面的a,b,c中,条件是一个有效的模型,但是(a,condition),(a,b,condition)等。我希望a,b,c的所有内容都是真的,如果条件是真的,则始终是真的。

    我可以写下以下的话来强迫A,B,C永远在一起。

    :- condition, a, not b.
    :- condition, b, not c.
    :- condition, c, not a.
    

    但对于复杂的规则,这些规则变得非常冗长和容易出错。

    1 回复  |  直到 8 年前
        1
  •  1
  •   peschü    8 年前

    你可以写

    3 { a ; b ; c } 3 :- condition.
    

    这意味着,如果条件为真,则花括号中的至少3个、最多3个原子被定义为真。

    您编写的约束有一个非常不同的含义,例如第一个约束要求 其他一些规则 不能定义条件和a的真值,除非还有一条规则将b定义为真。

    推荐文章