是否可以克隆 Z3_context?

2023-12-04

我需要它在符号执行(Klee)的上下文中进行增量求解。 在符号执行路径的分支点,有必要将求解器上下文分为两部分:条件为真和条件为假。当然,有一个昂贵的解决方法 - 创建空上下文并重播所有约束。

有没有办法分割Z3_context?您打算添加这样的功能吗?

Note

如果使用深度优先符号探索,即探索当前执行路径直到它到达“结束”,则可以避免上下文的分割,因此将来不会再探索该路径。在这种情况下就足够了pop直到到达分支点,继续探索另一个条件分支。但是在 Klee 的情况下,“同时”探索许多符号路径(对真分支和假分支的探索是交错的),因此您需要求解器上下文求解器切换(每个方法中有 Z3_context 参数)和分支(没有方法可以实现此目的,这就是我需要的)。

Thanks!


不可以,当前版本的Z3(3.2)不支持此功能。我们意识到这是一项重要的功能,并且在下一个版本中将提供等效的功能。 这个想法是将上下文和求解器的概念分开。在下一个版本中,我们将提供用于创建(和复制)求解器的 API。因此,您将能够对搜索的每个分支使用不同的求解器。简而言之,Context 用于管理/创建 Z3 表达式,Solver 用于检查可满足性。

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

是否可以克隆 Z3_context? 的相关文章

  • 在 Windows 上安装 Z3 + Python

    我很难让 Z3 Python 前端在 Windows 7 上使用 Codeplex 的 Z3 版本 4 3 0 运行 作为 MSI 文件分发的旧版本 4 1 2 在我的 Windows 7 上运行良好 首先 我无法使用 codeplex 中
  • 混合实数和位向量

    我有两个使用实数的 SMT2 Lib 脚本 它们在道德上是等效的 唯一的区别是 一个也使用位向量 而另一个则不使用 这是同时使用实数和位向量的版本 uses both reals and bit vectors set option pro
  • Z3 Java API 文档

    我已经安装了Z3 API for Java我正在尝试使用它 但找不到任何解释如何使用此 API 的文档 到目前为止我找到的唯一资源是源代码和示例程序 所以我想知道是否有人知道任何其他文档Z3 Java API 目前 Java API 没有单
  • 量词与非量词

    我有一个关于量词的问题 假设我有一个数组 我想计算该数组的数组索引 0 1 和 2 declare const cpuA Array Int Int assert or select cpuA 0 0 select cpuA 0 1 ass
  • 增量求解有什么好处?

    如果 pop 完全破坏了上下文 即学到的引理 增量约束求解使用 堆栈 的目的是什么 模式 理由 我想如果我只有 1 个约束 几个 合词 最好进行单个查询 而不是 将单独帧中的合取词堆叠到堆栈上 如果我 有超过 1 个约束并决定使用增量求解
  • 关于 Z3 for Java 的性能问题

    我在当前使用 Z3 for Java 的项目中遇到了一些性能问题 基本上我当前的大多数限制都非常简单 例如 f x 2 f y lt 3 f x lt 5 我正在使用整个项目共享的静态上下文和解算器实例 public class Const
  • 有没有办法获取Z3中的默认上下文?

    我正在使用 z3py API 4 3 0 我可以轻松翻译一个表达expr从默认上下文到新上下文target ctx using expr translate target ctx 但是我如何从给定的上下文中进行翻译ctx进入默认的 Z3 上
  • Z3 量词支持

    我需要一个定理证明器来解决一些简单的线性算术问题 然而 即使是简单的问题我也无法让 Z3 工作 我知道它不完整 但是它应该能够处理这个简单的示例 assert forall t Int t 5 check sat 我不确定我是否忽略了某些事
  • z3 中如何定义 Int 排序(SMT-LIB 2.0 Ints 理论)和动态声明排序?

    这是我使用 z3 执行的 SMT LIB 2 0 基准测试 set logic AUFLIA declare sort PZ 0 declare fun MS Int PZ Bool assert forall x Int exists X
  • 如何将 Z3 与 C++ 结合使用

    我想将 Z3 与 C 一起使用 并且我遵循了安装指南 使用 Visual Studio 命令提示符在 Windows 上构建 Z3 https github com Z3Prover z3 building z3 on windows us
  • Z3 的参考资料 - 它是如何工作的[内部理论]?

    我有兴趣阅读 Z3 背后的内部理论 具体来说 我想了解 Z3 SMT 求解器的工作原理 以及它如何找到不正确模型的反例 我希望能够手动计算出一些非常简单的示例的跟踪 然而 所有 Z3 参考文献似乎都是如何在其中编码 或对其算法的非常高级的描
  • 如何从 Z3 中的 Seq 类型中提取元素作为基本类型?

    如何将序列中的元素提取到基本类型 以便以下内容正常工作 define sort ISeq Seq Int define const x ISeq seq unit 5 define const y ISeq seq unit 6 asser
  • SMT中量化算术推理的局限性是什么?

    我在以下看似微不足道的基准测试中尝试了几种 SMT 求解器 CVC3 CVC4 和 Z3 set logic LIA set info smt lib version 2 0 assert forall x Int forall y Int
  • z3 中的函数声明

    在 z3 中是否可以声明一个以另一个函数作为参数的函数 例如 这个 declare fun foo Int Bool Int 似乎不太管用 谢谢 正如 Leonardo 提到的 SMT Lib 确实not允许高阶函数 这不仅仅是语法限制 使
  • Z3统计中内存使用量的单位是什么?

    z3 统计中测量内存使用情况的单位是什么 是MB还是KB 记忆到底意味着什么 是执行期间的最大内存使用量还是所有分配的总和 它是执行期间最大堆大小的近似值 并通过 cmd context cpp 中的以下函数将其添加到统计对象中 void
  • 如何以跨系统的方式将进程仅绑定到物理核心?

    我在用着每次将线程数加倍的项目 https github com ConsenSys mythril pull 1372 files 您会增加 40 到 60 的开销 由于超线程将性能最多提高了 30 这意味着程序在超线程系统上的运行速度比
  • 如何获取 Z3 上下文的所有可用配置设置的列表?

    net API 具有以下 Context 构造函数 Context Dictionary lt string string gt settings 如何获取所有可能设置的列表 具体来说 我对如何要求 Z3 生成 unsat 核心感兴趣 即相
  • 通过 C/C++ API 对 Z3 中的 LIA 进行量词消除

    我想使用 Z3 通过 C C API 消除线性整数算术公式中的量词 考虑一个简单的例子 Exists x x 0 我尝试这样做 context ctx ctx set ELIM QUANTIFIERS true expr x ctx int
  • Z3:FP 和 BitVector 之间的转换?

    SMTLIB2 中是否有任何方法可以在 BitVector 和 FP 之间进行转换 例如 int2bv 和 bv2int 函数 为了澄清 我正在寻找位的原始表示 而不是例如 BitVec 形式的舍入整数 准确地说 SMTLIB中的浮点运算还
  • 如何使用 Z3 SMT-LIB 证明 Frobenius 代数中的定理

    我们在弗罗贝尼乌斯代数中证明以下定理 使用以下代码进行证明 Frobenius algebra object A mu eta delta epsilon declare sort A declare sort AA declare sor

随机推荐