使用nlsat求解器进行增量求解

时间:2014-04-30 03:04:13

标签: z3

我正在尝试使用'nlsat'求解器实现快速解释算法。 由于算法需要多次解决原始约束集的子集,我决定在z3 c ++接口中使用push / pop函数。(check(假设)在nlsat求解器中不起作用)。 选择器变量用于暗示添加/删除约束。

但是在解决约束集时遇到了问题。 z3能够在不到1分钟的时间内告诉我整个约束集是不饱和的。但是在检查原始约束集的子集时,它不会给出超过1小时的结果。

整个约束集can be solved in less than 1 minute

原始约束集can't get a result for more than 1 hour

的子集

性能有何显着变化?一般来说,是什么影响了nlsat求解器的性能?

任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:0)

nlsat解算器不会显示增量,因此当您创建多个查询时,它将从头开始。对于较短的公式,搜索空间可能会大得多。