Z3缓存是否具有附加功能?

时间:2019-03-04 14:23:57

标签: caching z3 z3py

我知道Z3具有基于堆栈的缓存,可以在其中添加和缓存其他公式。是否有内置方式或扩展程序可以将两个Z3缓存组合在一起?

示例(Z3年)

from z3 import Solver

solver = Solver()
solver.push()
solver2 = Solver()
# solver.combine(solver2) ?

1 个答案:

答案 0 :(得分:0)

对“组合”的含义不太了解。但是,您可以从一个断言中获取断言,然后将其添加到另一个断言中:

from z3 import *

i = Int('x')
s1 = Solver()
s1.add(i == 3)
s1.push()

s2 = Solver()
s2.add(s1.assertions())
print s2.check()
print s2.model()

此打印:

sat
[x = 3]

您可以使用此技巧来进行您自己的组合。