以以下示例为例:
from z3 import *
a, b, c, d, e = Bools('a b c d e')
s = Solver()
s.add(Implies(a, b))
s.add(Implies(c, d))
s.add(a)
print s.check()
print s.model()
z3返回:
sat
[a = True, b = True, c = False, d = False]
这是一个模型,其中c和d为假。但是实际上这两个变量可以是true或false。似乎z3返回了默认情况下将False
分配给决策变量(即值无关紧要的变量)的模型。有什么方法可以获取这些决策变量?在此示例中,它是[c, d, e]
。