是否有可能强制Z3模型来评估涉及数组的布尔表达式?

时间:2013-08-07 05:23:34

标签: z3 z3py

有时,即使表达式明确具有具体值,在模型中计算布尔表达式也不会返回具体的布尔值。我已经能够将此减少到涉及数组表达式的案例,例如this test case

from z3 import *

x = K(IntSort(), 0)
s = Solver()
s.check()
m = s.model()
print m.evaluate(x == Store(x, 0, 1), model_completion=True)

我希望这会打印False,而是打印K(Int, 0) == Store(K(Int, 0), 0, 1)。其他示例产生类似的结果。用x = Array('x', IntSort(), IntSort())替换第一行会得到相同的结果(尽管直到默认解释)。有趣的是,用x = Store(K(IntSort(), 0), 0, 1)替换第一行会导致示例打印True

有没有办法强制Z3将这些表达式评估为具体值?

0 个答案:

没有答案