在z3中的空模型

时间:2012-10-16 05:27:05

标签: python z3

z3py代码段

x = Int('x')

s = Solver()
s.add(x <= x)
print s.check()
print s.model()
print s.model().sexpr()

http://rise4fun.com/Z3Py/mfPU

输出:

sat
[]

x的任何值都可以,但z3会返回空模型。 模型中缺少的自由变量x是否表明任何整数值都是有效模型?

1 个答案:

答案 0 :(得分:7)

是的,在Z3中,如果模型中没有出现常量(例如x),那么它就是“不关心”。也就是说,x的任何值都将满足公式。在评估常量的值时,我们可以启用“模型完成”。也就是说,Z3将对“不关心”符号使用任意解释。以下是http://rise4fun.com/Z3Py/bvVO

的示例
x = Int('x')
s = Solver()
s.add(x <= x)
print s.check()
m = s.model()
print m.evaluate(x)
print m.evaluate(x, model_completion=True)
print m