【发布时间】:2020-09-12 20:33:43
【问题描述】:
我是 python 新手,也是 z3 新手。我正在尝试通过 z3py 解决一些 SMT 问题。 现在我需要设置一个限制:array1(1,8) 至少有 5 个零。但是我遇到了一些错误。
al1,al2,al3,al4,al5,al6,al7,al8=Ints('al1 al2 al3 al4 al5 al6 al7 al8')
这是我声明的,当我想使用al1=If(be1*wi1,1,0)时,会出现一个错误,说Z3Exception: Value cannot be converted into a Z3 Boolean value
或Z3Exception: Symbolic expressions cannot be cast to concrete Boolean values
我想知道如何计算这些元素中有多少个零?我不确定这个声明是否可以更改...我只是从示例中复制了这部分.. p>
【问题讨论】:
-
请发布一个最小但完整的示例,以便重现您的问题。关于您的目标(最多 n 次):您可以使用存在(不存在数组具有特定值的五个不同索引);如果数组的长度是静态已知的,那么存在可以被析取替换;根据数组中的值,可以选择使用总和/乘积的解决方案。