【发布时间】:2016-11-16 07:54:54
【问题描述】:
假设我想解决以下约束:y == max(x, 0)。我能想到的是对以下内容进行编码(在 z3py 接口中):If(x > 0, y == x, y == 0)。我的问题是:
- Z3 是否会在内部将上述表达式转换为两个约束:
x > 0 /\ y == x和x <= 0 /\ y == 0,然后在两个约束中的任何一个满足时对它们进行 OR 并返回 sat? - 如果是这样,约束的数量似乎会随着
max操作的数量呈指数增长。我的系统有超过 100 个max。在 Z3 或任何其他求解器中是否有有效的解决方法?
谢谢!
【问题讨论】: