【发布时间】:2017-08-22 06:10:46
【问题描述】:
我正在使用Z3 theorem prover (Z3Py) 的 Python 绑定。我有 N 个布尔变量,x1,..,xN。我想表达一个约束,即其中 N 个中的 K 个应该为真。在 Z3Py 中我该怎么做?是否有任何内置支持?我查看了在线文档,但 Z3Py docs 没有提及任何 API。
对于 N 中取一的约束,我知道我可以分别表示至少一个为真(断言 Or(x1,..,xN))和至多一个为真(断言 Not(And( xi,xj)) 对于所有 i,j)。我也知道other ways 可以手动表达 1-out-of-N 和 K-out-of-N 约束。但是我的印象是,当求解器内置支持此约束时,它有时会比手动表达更有效。
【问题讨论】: