如何在解决公式时告诉Z3从哪里开始?

时间:2017-05-10 13:12:04

标签: z3 smt

我目前处理的情况是,给予Z3的断言包含大量的不等式和等式。它们相互依赖,通过为均值中使用的变量赋值来开始求解公式是最有效的。

有没有办法改变Z3的启发式,使得求解器总是选择“开始”这些公式?

我的猜测是使用一种最初处理包含上述等值的目标的策略。然后它将继续其他断言,必要时重新启动整个过程。

但是,我不确定如何实现这一点 - 如何从公式集创建自定义目标?

1 个答案:

答案 0 :(得分:0)

您可以尝试断言您想要的第一组公式,然后发出check-sat,发出下一组,发出check-sat;必要时重复。如果需要,您还可以使用push-pop返回这些点。

通过以这种方式发出多个check-sats,您将强制解算器探索到此为止所声称的公式。这实际上是否实际达到了你想要的程度取决于你的公式究竟是什么样的,以及解算器在每次检查坐电话时可以得到多少。