retrieve the matched model in Z3py?

时光毁灭记忆、已成空白 提交于 2019-12-04 21:05:38

I'm assuming that you want the value of x1 and x2 in the model produced by Z3. If that is the case, you can retrieve them using:

   m = s.model()
   print m[x1]
   print m[x2]

Here is the complete example (also available online here). BTW, note that we don't need 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]
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!