我知道Z3具有基于堆栈的缓存,可以在其中添加和缓存其他公式。是否有内置方式或扩展程序可以将两个Z3缓存组合在一起?
示例(Z3年)
from z3 import Solver
solver = Solver()
solver.push()
solver2 = Solver()
# solver.combine(solver2) ?
答案 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]
您可以使用此技巧来进行您自己的组合。