Z3 中断言的顺序有何重要性?

2023-12-05

我有两个文件,除了放置断言的顺序之外,其内容相同:在一个文件中,断言的放置顺序与另一个文件的顺序相反。第一个文件(po-9.z3)在不到一秒的时间内被 Z3 声明为不可满足,而另一个文件(po.z3)在一分钟内无法验证。

造成这种差异的原因是什么?我认为将验证中涉及的断言放在文件的前面会提高性能。但是,通过验证的文件 (po-9.z3) 在文件底部具有大部分相关/问题特定的断言。另外,在 po.z3 中,虽然要证明的定理和假设位于文件的顶部,但一个重要的断言(lambda 表达式的一阶公式)却放在文件的底部。当我将其置于顶部时,po.z3 会在不到一秒的时间内进行验证。

在 z3 smt2 文件中生成断言的最佳顺序是什么?


造成这种差异的原因是什么?

SMT 求解器实现 DPLL(T) 算法,该算法是 DPLL 过程和决策过程(的变体)的组合。

DPLL 的性能很大程度上受分支变量选择的影响。在某些情况下,根据变量的选择,运行时间是恒定的或指数的。

如果两个公式在逻辑上是等价的(需要仔细检查),那么我认为唯一的可能是,两个公式中的顺序不同导致变量选择的顺序不同,最终导致性能的差异。

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

Z3 中断言的顺序有何重要性? 的相关文章

  • Z3:int2bv 的异常

    declare const a Int declare const b Int declare const c BitVec 32 declare const d BitVec 32 assert b bv2int c assert c i
  • 将项目分配给具有功能的组

    我有一个问题 我要将变量分配给集合 每个集合都有可以分配给它的变量的限制 并且每个变量都可以分配给总集合的某个子集 Example a可以成套A or B b可以成套B c可以成套A or B d可以成套A 因此 我们可以有A a d B
  • 为什么已经弹出的范围会影响后续范围中的 check-sat 时间?

    一般问题 我已经注意到好几次了push pop已经弹出的范围似乎会影响check sat在后续范围的需要 也就是说 假设一个程序具有多个 可能任意嵌套 push pop 作用域 每个作用域都包含一个 check sat 命令 此外 假设第二
  • 从 z3 模型中仅提取一个值

    我正在寻找相当于 z3 源 API获取价值 例如 当我有以下查询时 我可以轻松指定我想要查看哪些值 declare const s1 String declare const s2 String assert 8 str len s1 as
  • 如何在线使用Z3Py解决运算放大器的问题

    求下列电路中R的值 使用以下代码可以解决此问题 R V1 V2 Vo Reals R V1 V2 Vo I1 V1 R 50 I2 V2 R 10 g R I1 I2 print g equations Vo g print equatio
  • 检索 Z3Py 中的值会产生意外结果

    我想找到一个表达式的最大间隔e对所有人来说都是如此x 编写这样的公式的方法应该是 Exists d ForAll x in d d e and ForAll x not in d d e 为了得到这样一个d 公式f在 Z3 中 看上面的 可
  • Z3中数组的理论:(1)模型很难理解,(2)不知道如何实现功能,(3)与序列的区别

    继发布于的问题之后Z3 Py 中的数组的表现力如何 一个例子 https stackoverflow com questions 73778513 how expressive can we be with arrays in z3py a
  • 有没有办法获取Z3中的默认上下文?

    我正在使用 z3py API 4 3 0 我可以轻松翻译一个表达expr从默认上下文到新上下文target ctx using expr translate target ctx 但是我如何从给定的上下文中进行翻译ctx进入默认的 Z3 上
  • 简化 CNF 公式,同时保留某些变量的所有解决方案

    有关的 CNF 简化 https stackoverflow com questions 23461191 cnf simplification 事实上 我认为这个问题的提交者可能是在追求我想要的东西 有许多工具可用于简化 或求解前 预处理
  • 如何让 z3 返回多个 unsat 核心、多个令人满意的作业

    我正在研究一个研究工具的一个组件 我有兴趣检索 对于 QF LRA 多个 最少或其他 UNSAT核心以及 多项 SAT 作业 我检查了论坛以获取有关此主题的早期讨论 例如 在逻辑 QF LRA 上使用 z3 时如何获得不同的 unsat 核
  • 跟踪 z3::optimize unsat_core

    如何正确追踪z3 optimize未饱和核心 Z3 C z3 optimize当我添加时没有找到预期的解决方案不饱和核心跟踪 基于这些examples https github com Z3Prover z3 blob 9df6c10ad8
  • 使用函数在 z3 中创建列表

    我试图将这段伪代码转换为 SMT LIB 语言 但我卡住了 List function my fun int x list nil for i in 1 to x if some condition on i list concat i r
  • 正确 Dafny 方法的 Z3 模型

    对于正确的方法 Z3能否找到该方法验证条件的模型 我原以为不会 但这里有一个例子 该方法是正确的 但验证发现了一个模型 这是 Dafny 1 9 7 的情况 Malte 所说的是正确的 我发现它也得到了很好的解释 Dafny 是健全的 因为
  • Z3 -smt2 -in:获取Z3版本

    使用选项启动后可以获得Z3的版本吗 smt2 in 就像是 get z3 version Z3 4 3 2 x64 Desired reply 在SMT LIB 2 0前端 我们可以使用命令 get info version 该命令是标准的
  • z3 是否支持有理算术的输入约束?

    事实上 SMT LIB标准是否有理性的 不仅仅是真实的 排序 按其website http smtlib cs uiowa edu theories shtml 它不是 如果 x 是有理数并且我们有约束 x 2 2 那么我们应该返回 不可满
  • 在 Z3 中证明归纳事实

    我试图在 Microsoft 的 SMT 求解器 Z3 中证明一个归纳事实 我知道 Z3 一般不提供此功能 如Z3 guide http rise4fun com z3 tutorial guide 第 8 节 数据类型 但是当我们限制要证
  • (Z3Py) 声明函数

    我想在简单的 result x t c 公式中找到一些给定结果 x 对的 c 和 t 系数 from z3 import x Int x c Int c t Int t s Solver f Function f IntSort IntSo
  • Z3:执行矩阵运算

    我的情况 我正在开展一个项目 需要 证明正确性3D 矩阵变换 http rodrigo silveira com 3d programming transformation matrix tutorial UU65YicWsYZ涉及矩阵运算
  • Z3 Java API 定义函数

    我需要您帮助使用 Z3 Java API 定义函数 我尝试解决这样的问题 与 z3 exe 进程一起工作正常 declare fun a Real declare fun b Real declare fun c Bool define f
  • z3 中的列表串联

    有没有办法在 z3 中连接两个列表 类似于 ML 中的 运算符 我正在考虑自己定义它 但我不认为 z3 支持递归函数定义 即 define fun concat List l1 List l2 List ite isNil l1 l2 co

随机推荐

  • 为什么我的 win32 程序需要提升?

    我有一个非常简单的程序 用于自动更新 它检查服务器 HTTPS 上的可用版本 下载新更新并运行 可能更新的 程序 这是一个用Delphi 7编写的旧程序 在Windows 8和Windows 10下 这个程序似乎需要提升 以管理员身份运行
  • Rust 中 PhantomData 类型的使用

    我正在查看一些 Rust 源代码 发现了一种名为PhantomData 我正在浏览 Rust 文档并在互联网上进行了大量搜索 但是 我无法理解这种数据类型与 Rust 的实际用途 如果可能的话 有人可以简单地向我解释一下吗 pub stru
  • 日期倒计时器

    我正在尝试进行迄今为止的倒计时 并将每个倒计时放在 ListView 中的 ItemView 中 我已经有了Listview buillder 但我不知道如何制作具有不同值的倒计时并将它们放入列表视图中 我看到还有另一个类似的问题 但我无法
  • 粘性页脚,但只是有时

    我有一个带有页眉 内容 页脚的基本网站 我正在寻找一种设计页脚样式的方法 以便根据屏幕分辨率 如果内容没有填充页面 它会粘在底部 但如果内容溢出 它会将页脚向下推 必须滚动浏览器查看页脚 div div div div div ul li
  • “复制”不会创建动态数组的独立副本

    参考位于以下位置的在线文档http docwiki embarcadero com RADStudio XE6 en Structured Types Dynamic Arrays 写得很清楚 要制作动态数组的独立副本 请使用 Copy 函
  • 使用 ajax 请求安全地发送密码

    只是想知道 是否可以通过 Ajax 请求安全地发送密码 我有一个登录框 它调用 ajax 请求来尝试登录 通过并检索有错误的 JSON 对象 如果有 我应该使用表单重定向吗 EDIT 将加密的密码存储在数据库中并不是解决方案 因为ajax发
  • 替换由另一个矩阵索引的矩阵元素

    经过几个小时的搜索 我正在寻求您的专业知识 R 初学者 我尝试加快我的代码速度 我的目标是替换矩阵中的值A 但是 我想根据另一个矩阵的两个向量替换值B B 1 是行的名称i矩阵的A 第二栏 B 2 对应矩阵的列名A 我的代码的第一个版本是在
  • 如何在 jQuery 中获取当前日期?

    我想知道如何使用 jQuery 中的 Date 函数来获取当前日期yyyy mm dd format Date 不属于jQuery 它是 JavaScript 的特性之一 See Date 对象的文档 你可以这样做 var d new Da
  • IKVM 的 Map.xml 中的字符串和复杂数据类型!

    我正在使用 IKVM 将 java jar 文件转换为 NET dll 文件 我可以从整数类型的 getter 和 setter 创建一个属性 但我无法在 java 代码中对字符串数据类型执行此操作 您能告诉我 IKVM 的字符串或复杂数据
  • 检查 C++ 中的 double(或 float)是否为 NaN

    有 isnan 函数吗 PS 我在MinGW 如果这有影响的话 我通过使用 isnan 解决了这个问题
  • ASP.NET 中的 JQuery 与母版页

    我正在尝试将 JQuery 与一些使用母版页的 asp net 页面一起使用 并且在加载 JQuery javascript 文件时遇到问题 当我将该文件包含在母版页的标记中时 它在与母版页位于同一目录中的页面上运行良好 但是对于与母版页不
  • 以编程方式检索 OS X 命令行应用程序的绝对路径

    在Linux上 应用程序可以通过查询轻松获取其绝对路径 proc self exe 在 FreeBSD 上 它更加复杂 因为您必须构建 sysctl 调用 int mib 4 mib 0 CTL KERN mib 1 KERN PROC m
  • 触发器可以被锁定吗?如何确定它是?

    在回答中如果我在应用程序运行时替换 Oracle 触发器 是否会错过任何更改 我查看触发器是否被 INSERT 语句锁定 事实并非如此 我在互联网上找不到任何表明可以锁定触发器的内容 如果我在一个会话中运行以下命令 create table
  • SignalR - 离开所有组

    使用 SignalR 集线器可以在组中添加或删除客户端 一个客户端可以属于多个组 是否可以将客户端从其当前所属的每个组中删除 我想我正在寻找的是类似的东西Clients allgroups leave Context ConnectionI
  • CFBundleDocumentTypes 和 UIFileSharingEnabled 问题

    有人让 UIFileSharingEnabled 或 CFBundleDocumentTypes 工作吗 我将 UIFileSharingEnabled 添加为 true 到我的 plist 中 并使用下面链接中的 Apple 示例作为 C
  • 在 iOS 14 小部件上渲染图像

    我正在开发 iOS 14 Widget 扩展 我有 3 个图像要循环显示 并创建一个时间轴来显示这些图像 func getTimeline in context Context completion escaping Timeline
  • 单行上的 EditText.setError()

    我有一个问题EditText setError 我有一个 EditText
  • 在 boost r-tree 中存储或访问对象

    我在用Boost s我的代码中的 r 树实现 我有一个带有坐标的对象列表 比如地图上的城市 如果重要的话 我希望在 r 树中索引 以执行快速 NN 搜索等 我已经遵循了他们的迭代查询示例 其中树木存储boost geometry model
  • C# 按值传递

    我只是想举下面的例子 public void main int x 1 Foo x public void Foo int y y 5 我们知道 C 参数是按值类型的值传递的 这是否意味着在上面的示例中 我在堆栈上有 2 个副本 一份用于
  • Z3 中断言的顺序有何重要性?

    我有两个文件 除了放置断言的顺序之外 其内容相同 在一个文件中 断言的放置顺序与另一个文件的顺序相反 第一个文件 po 9 z3 在不到一秒的时间内被 Z3 声明为不可满足 而另一个文件 po z3 在一分钟内无法验证 造成这种差异的原因是