我假设你想要
x1
和
x2
在Z3生产的模型中。如果是这种情况,您可以使用以下方法检索它们:
m = s.model()
print m[x1]
print m[x2]
以下是完整的示例(也可在线获取
here
). 顺便说一句,注意我们不需要
h1, h2 = Consts('h1 h2', S)
.
S, (cl_3, cl_39, cl_11, me_32, me_59, me_81) =
EnumSort('S', ['cl_3','cl_39','cl_11','me_32','me_59','me_81'])
def fun(h1 , h2):
conds = [
(cl_3, me_32),
(cl_39, me_59),
(cl_11, me_81),
]
and_conds = (And(h1==a, h2==b) for a,b in conds)
return Or(*and_conds)
s = Solver()
x1 = Const('x1', S)
x2 = Const('x2', S)
s.add(fun(x1,x2))
print s.check()
m = s.model()
print m
print m[x1]
print m[x2]