【发布时间】:2013-11-26 19:43:18
【问题描述】:
我认为这里有两个不同的相关案例:
案例一:
我有一组布尔变量,我想要另一个布尔变量,如果其中任何一个变量为真,则该变量为真。 我目前正在通过将布尔变量设为整数来实现这一点,然后使用以下形式的表达式进行设置:
(ite (boolean_expr) 1 0)
然后我只使用总和和大于来设置整体布尔值
(> (+ b1 b2 b3...) 0)
案例 2(这可能不是真正的伪布尔值):
我有两组布尔变量:
set1 = n_1,n_2....
set2 = m_1,m_2....
我想添加一个约束,表示在 set1 中设置为 true 的变量数等于在 set2 中设置为 true 的数量。
如上所述,我目前通过使用整数而不是布尔值来执行此操作,并使用以下形式的 ite 设置每个整数:
n_1 = (ite (boolean_expr) 1 0)
然后说:
n_1+n_2+.... = m_1+m_2......
在每种情况下,使用整数变量是最有效的方法,还是有更好的方法?
谢谢。
【问题讨论】:
标签: z3