answer-set-programming - lparse/cligo:怎么说 AllOf(a,b,c) :- 条件?
问题描述
以下使一个或多个文字为真:
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 个原子被定义为真。
您编写的约束具有非常不同的含义,例如,第一个约束要求某些其他规则不得定义条件和 a 的真实性,除非还有一条规则将 b 定义为真实。
推荐阅读
- java - 尝试在同一页面中显示输入的值
- python - 为什么我的 API 密钥在 Python 中的 base64 编码与外部软件对同一密钥的编码不同?
- python - 如何用 0 替换空字符串,但如果不为空则不理会
- github - 设置 Travis-CI 以仅构建已批准的拉取请求
- node.js - 在猫鼬中,如果值为 null,则不应将其添加到 MongoDB
- aem - AEM Query Builder 多个属性值
- heroku - Heroku 缺少必需的标志:-a,
- vba - 根据输入列值选择列表框的行
- c# - 用于批处理的 Azure 服务总线队列最大更新消息锁
- django - 如何在管理面板中限制样本