如何复制在pysmt中创建的解算器?

时间:2017-03-17 05:09:30

标签: python z3

pysmt中的

,假设我已经创建了一个求解器并添加了许多断言。现在,我想制作一个求解器实例的副本,因为我需要向求解器添加不同的断言。我该怎么办?我需要这样做,以提高代码的性能。

我尝试做像copy(),clone()和deepcopy()这样的事情,但它们都不起作用。所以我现在的解决方法是跟踪所有断言并创建新的求解器实例并每次从头开始构建它。

1 个答案:

答案 0 :(得分:0)

对于您的方案,最简单的似乎如下:

您可以使用“assertions()”方法从解算器中检索所有断言。

from z3 import *
x, y = Ints('x y')
s1 = Solver()
s1.add(x <= y)
print s1
s2 = Solver()
s2.add(s1.assertions())
print s2