Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Z3 python模型比较

Z3 python模型比较
EN

Stack Overflow用户
提问于 2019-01-09 12:55:19
回答 1查看 184关注 0票数 0

拥有一组公式并使用z3py创建两个模型old_model = solver.model()new_model。如何获得在两个模型中具有不同赋值的变量名列表?

需要一个考虑公式集中所有自由变量的通用解决方案。如果可能,存在由var = Int('varname')m定义变量且仅在公式ForAll(var, ...)中使用的情况,当开始比较模型时,不需要考虑变量var

这个想法是在调试期间使用比较,并查看是否存在定义模型之间差异的任何意外变量,或者变量不应出现在模型中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-09 16:09:57

不清楚您在问什么;但是当z3给您一个模型时,它只是一个将变量映射到它们的值的字典。您可以在Python中轻松地保留它们:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from z3 import *

s = Solver()

x, y, z = Ints('x y z')

s.add(x + y > 5)

s.add(ForAll([z], z > z-1))

s.check()
m = s.model()

print m

# get the variables:
for v in m:
  print v

这将打印:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[y = 0, x = 6]
y
x

正如您所看到的,yx在那里,而z不在那里;我认为正如您所希望的那样。如果您有多个模型,您可以简单地分别查询它们,并查找差异并执行您想要的任何编程。这就是你要找的吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54110662

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文