我使用z3来解决线性混合自动机的可达性问题。我在有限的记忆下运行实验。我对内存使用感到困惑。有一种情况是z3可以在给定绑定2500的有限内存下解决。但是,当绑定设置为2000时,z3的内存使用超过了最大许可。这是什么原因?
答案 0 :(得分:2)
SMT2文件中较少数量的约束并不一定意味着Z3将使用更少的内存来解决问题。例如,一个小但不可满足的问题可能需要比一个大的可满足问题更多的内存。
设置自动机展开的下限很可能会将一个令人满意的问题(在2500处)变成一个不可满足的问题(在2000处),这反过来使得Z3的问题变得更加困难,即使约束较少。因此,Z3将使用更多的时间和/或内存。
解决这个问题可能需要对问题进行不同的编码或在求解器上使用不同的选项,例如,调整启发式方法以使它们更频繁地“幸运”并更早地找到解决方案。