Z3 在求解线性实数算术约束时会自适应改变策略吗?

Will Z3 adaptively change strategy in solving linear real arithmetic constraints?

我有一大组线性实数算术约束要解决,我正在逐步将它们提供给求解器。 Z3 似乎总是在一段时间后卡住。 Z3 是否会在内部改变其解决约束的策略,例如放弃 Simplex 算法并尝试其他算法等。还是我必须明确指示 Z3 这样做?我正在使用 Z3py。

如果没有进一步的细节,就不可能准确地回答这个问题。

通常,在没有设置任何逻辑并且默认策略是 运行 或 (check-sat) 的情况下调用时没有进一步的选项,Z3 将在第一次看到 [=11] 时切换到不同的求解器=] 命令;在此之前,它可以使用非增量求解器。

增量求解器具有增量求解器的所有优点和缺点,即它最初可能更快,但一段时间后可能无法利用以前学习的引理,并且它可能只是记住了太多不相关的内容事实。此外,启发式方法可能会 'remember' 稍后不适用的信息,例如, 'good' 变量排序可能会在弹出所有内容后变为错误排序,并且相同变量的不同问题是推。过去,一些用户发现对一些查询使用增量求解器效果更好,但当它变得太慢时从头开始。