了解 z3 模型

2024-03-10

Z3Py 片段:

x = Int('x')
fun = Function('fun', IntSort(), IntSort(), IntSort())
phi = ForAll(x, (fun(x, x) != x)) 
print phi
solve(phi)

永久链接: http://rise4fun.com/Z3Py/KZbR http://rise4fun.com/Z3Py/KZbR

Output:

∀x : fun(x, x) ≠ x
[elem!0 = 0,
 fun!6 = [(1, 1) → 2, else → 1],
 fun = [else → fun!6(ζ5(ν0), ζ5(ν1))],
 ζ5 = [1 → 1, else → 0]]

Question: 我正在尝试理解 Z3 生成的模型。我有以下疑问。

  1. 在z3生成的模型中,fun只有else部分。因此乍一看,无论参数如何,似乎都有一个值。但仔细一看,似乎v0 and v1是形式参数fun。这有什么约定吗?
  2. 哪个变量起作用elem!0参考?

Thanks.


Z3生成的模型应该被视为纯函数式程序。 当我们要求 Z3 以 SMT 2.0 格式显示模型时,这一点变得很清楚。 我们可以通过使用该方法来实现sexpr()。这是使用此方法的示例(http://rise4fun.com/Z3Py/4Pw http://rise4fun.com/Z3Py/4Pw):

x = Int('x')
fun = Function('fun', IntSort(), IntSort(), IntSort())
phi = ForAll(x, (fun(x, x) != x)) 
print phi
s = Solver()
s.add(phi)
print s.check()
print s.model().sexpr()

的解释fun包含自由变量。你应该将其读作:fun(v0, v1) = fun!6(k5(v0), k5(v1))。当模型以 SMT 2.0 格式显示时,这是明确的。当我编写 Python 漂亮打印机时,我试图专注于无量词的问题。 “模型作为函数式程序”的想法与无量词问题无关。以后我会尝试改进Python模型漂亮的打印机。 常数elem!0是Z3在求解过程中创建的辅助常数。最终并不是真的需要它(在模型简化之后)。我将改进模型的“死代码”消除程序,以消除这些不必要的信息。然而,该模型是正确的。它确实满足量词。您可以在以下位置找到有关 Z3 使用的编码的更多详细信息:http://rise4fun.com/Z3/tutorial/guide http://rise4fun.com/Z3/tutorial/guide,以及辅助功能k!5是本文中描述的“投影”函数article http://research.microsoft.com/en-us/um/people/leonardo/files/ci.pdf.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解 z3 模型 的相关文章

随机推荐

  • CSS 网格并指定多个区域

    我需要一些元素重叠 我还想通过区域名称而不是行 列来指定内容 因为这样可以更好地阅读 我一生都无法理解如何按照 MDN 示例指定多个网格区域 或者 如果它甚至可能 文章建议它根据语法示例是可能的 但它实际上是如何工作的 没有任何线索 问题示
  • 解决多源多汇流网络的最优方式

    为了简单起见 假设我们有以下问题 我们正在为城市中的自动驾驶汽车编写 GPS 我们假设运行我们软件的汽车是路上唯一的汽车 他们将城市的布局表示为一个流网络 但流网络有多个起点 终点 因此存在多个不一定彼此靠近的源 汇 有没有有效的解决方案来
  • 如何覆盖 node.js http 以对所有出站请求使用代理

    我最近创建了一个 node js 应用程序 可以访问社交媒体网站并缓存我们的公共源 我正在使用一些现有的 npm 模块来方便访问社交媒体 api 它在我的开发环境中就像一个魅力 但在我们的生产环境中 请求超时 因为它们需要通过代理 无需修改
  • 构造函数参数的所有组合

    很可能是一个愚蠢的问题 但无论如何 是否有一种简短的方法来声明采用任意参数组合的构造函数 例如 具有 3 个参数的 ctor 有 2 3 种可能的组合 如下面的模型所示 template
  • 将正则表达式中的文本更改为大写

    我有个问题 如何将 HTML 标签 之间的文本更改为大写字母 部分代码 string a b hello world b table test table a Regex Replace a lt n gt String Empty 现在
  • Android项目包结构

    我想知道如何为 Android 应用程序创建灵活的包结构 以便于扩展和管理 我的第一个想法是将每个应用程序组件放在单独的包中 例如 spk myapp main 主要活动中使用的所有类 spk myapp processor 处理器提供程序
  • Objective C - 获取方法的参数类型?

    在运行时我需要能够获取方法的参数类型 以下是打印的内容 我在其他线程上读到 在运行时 Objective C 将传递给方法的所有对象视为参数id 如果这种方法不起作用 那么关于读取参数类型的方法还有其他建议吗 Log 2014 02 07
  • 什么叫会话存储?

    Web 应用程序 网站上下文中的会话存储是什么 它不仅仅是会话变量的临时存储吗 通常 用户对站点的第一个请求会建立一个会话 会话有一个密钥 该密钥作为 cookie 传递给用户 以便每个后续请求都会检索到相同的会话 会话存储可以存储您不希望
  • 在 HTML 和 Javascript 中的图像顶部“绘制”

    我正在构建一个网络应用程序 用户可以通过用光标在图像上 绘图 来标记图像 我们将获取用户的绘图并将其发送到服务器以转换为 PNG 或其他格式进行存储 我们需要这个应用程序能够在基于桌面和平板电脑的浏览器上运行 因此 Flash Java 和
  • 在C中检查大量数据是否为空的最快方法? [复制]

    这个问题在这里已经有答案了 我有大量数据 可能有 4MB 现在想要检查其中的所有位是否都为 0 例如 这是数据 void data malloc 4 1024 1024 memset data 0 4 1024 1024 检查其中的所有位是
  • 是否可以访问App Bundle的en.lproj?

    我希望能够更改语言目录中的语言文件 例如 假设我有日语更新 那么我可以让应用程序从 FTP 站点获取 localized strings 文件 然后写入 jp lproj 目录 另一个例子是将新语言上传到应用程序 我的应用程序将再次从 FT
  • Postgres 的 php pdo:“找不到驱动程序”

    我在新的 Ubuntu 18 04 服务器上为 Postgres 安装了 php 但我遇到了 php 问题 以下是我的 php 7 3 安装步骤 sudo apt install software properties common sud
  • PHP + PhantomJS 光栅化

    我在 PHP 应用程序中使用 PhantomJS 64 位来动态捕获要通过电子邮件发送给用户的 HTML 页面 phantomjs rasterize js http path to images image png 当我在命令行上运行上述
  • 查找 Maven 依赖项对象的依赖项

    我正在编写一个 Maven 3 插件 它需要知道给定的传递依赖项org apache maven model Dependency 我怎样才能做到这一点 在 Maven 3 中 您可以通过依赖于基于树的形式访问所有依赖项maven depe
  • 在 Google App Engine 上使用任务队列时如何确定任务的优先级?

    我正在尝试解决以下问题 我有一系列想要执行的 任务 我有固定数量的工作人员来执行这些工作人员 因为它们使用 urlfetch 调用外部 API 并且对此 API 的并行调用数量有限 我希望这些 任务 能够 尽快 执行 即最小延迟 这些任务是
  • Visual Studio 2022 中是否支持 .editorconfig?

    我打开 Visual Studio 2022 并创建一个新的空解决方案 我添加一个 editorconfig文件包含 root true end of line lf indent style space indent size 3 tab
  • UITextField 在视图出现后丢失firstResponder

    我有一个UIPageViewController 一个页面有一个按钮 另一页有一个UITextField有一个按钮 当页面滚动到带有字段的视图时 我希望它becomeFirstResponder并打开键盘 发生的情况如下 I call se
  • Outlook iCal 会议邀请说明问题

    我正在发送iCal event邀请使用php 一切都以正确的方式显示RVSP按钮正确显示 但description is cutting down after first line 例如 如果我的描述是 The problem occurs
  • JDK 1.6 中“vm 线程”的作用是什么[重复]

    这个问题在这里已经有答案了 我们在客户的系统中看到该线程的大量活动 因此想知道可能会发生什么 有链接 信息 教程吗 P S 这种情况发生在带有 JDK 1 6 0 23 的 Solaris 10 上 该线程将为您提供一些继续操作的步骤 如果
  • 了解 z3 模型

    Z3Py 片段 x Int x fun Function fun IntSort IntSort IntSort phi ForAll x fun x x x print phi solve phi 永久链接 http rise4fun c