z3相关内容

Z3 Python 绑定:在使用 Z3-python 之前必须调用 init(Z3_LIBRARY_PATH)

我在 Linux 上安装了 Z3 定理证明器,并且正在使用其 Python 绑定 (Z3Py).我试图测试一个最小的例子,但我立即收到以下错误: z3.z3types.Z3Exception: init(Z3_LIBRARY_PATH) 必须在使用 Z3-python 之前调用 如何解决此问题并启动并运行 Z3? 我不太确定该错误消息的含义.Z3 文档和教程似乎没有对此或 init() ..
发布时间:2021-10-04 20:38:20 Python

如何在 Z3 中实现自定义简化策略?

在我的工具中,我使用将常量与整数变量进行比较的条件(例如 y 在代码中: context c;目标 g(c);expr x = c.int_const("x");expr y = c.int_const("y");求解器 s(c);expr F = y 最后的输出返回:subgoal 0(目标(不是( 而不是 subgoal 0(goal(not( ..
发布时间:2021-10-04 20:38:18 C/C++开发

在 Z3Py 中检索值会产生意外结果

我想找到一个最大区间,其中表达式 e 对所有 x 都为真.编写这样一个公式的方法应该是: Exists d : ForAll x in (-d,d) .e 和 ForAll x 不在 (-d,d) 中.!e. 要得到这样的 d,Z3 中的公式 f(看上面的那个)可能如下: from z3 import *x = Real('x')delta = Real('d')s = 求解器()e = ..
发布时间:2021-10-04 20:38:15 其他开发

在 z3::expr 中使用 C++ 字符串?

我在使用 Z3::expr 时遇到了困难.在 z3 中,expr conj 可以这样定义: expr x = c.bool_const("x");expr y = c.bool_const("y");expr conj = (!x || !y); 有没有办法使用字符串变量来定义conj?类似的东西: expr x = c.bool_const("x");expr y = c.bool_con ..
发布时间:2021-10-04 20:38:12 C/C++开发

Z3 或 Z3Py 中的假设

有没有办法在 Z3 中表达假设(我使用的是 Z3Py 库),这样引擎就不会检查它们的有效性,而是将它们作为基础理论,就像在定理证明中一样? 例如,假设我有两个参数为 Real 类型的一元函数.我想告诉 Z3 引擎,对于所有输入值,f1(t) 等于 f2(t). 在 Z3Py 中编码,如下所示: t = Real("t") 假设 1 = ForAll(t, f1(t) = f2(t) ..
发布时间:2021-10-04 20:38:09 其他开发

Z3Py 中的最大值模型不正确

我想找到一个最大区间,其中表达式 e 对所有 x 都为真.编写这样一个公式的方法应该是: Exists d : ForAll x in (-d,d) .e 和 ForAll x 不在 (-d,d) 中.!e. 要得到这样的 d,Z3 中的公式 f(看上面的那个)可能如下: from __future__ 导入师从 z3 导入 *x = Real('x')delta = Real('d')s ..
发布时间:2021-10-04 20:38:06 其他开发

如何为偏序生成模型?

我正在尝试使用 Z3 为描述偏序理论的一组 SAT 断言生成模型.我尝试了 Z3 指南中的子类型示例,但似乎无法获得具体模型.Z3 有没有办法生成一个模型来描述元素之间的顺序并满足我所做的所有断言? 例如,以下是“子类型"的约束.Z3 是否有可能产生类似“int-type * ..
发布时间:2021-10-04 20:38:03 其他开发

在 Z3 中定义带约束的代数数据类型

我看过一些在线资料,用于定义 Z3 中的 IntList 等代数数据类型.我想知道如何定义具有逻辑约束的代数数据类型.例如,如何定义代表正整数的 PosSort. 解决方案 您正在寻找的是谓词-子类型化;据我所知,Yices 是唯一支持它的 SMT 求解器:http://yices.csl.sri.com/old/language.shtml 特别是,请参阅此处的示例:http:// ..
发布时间:2021-10-04 20:38:00 其他开发

Z3 中的单纯形求解器

我知道在 z3 中实现了一个单纯形求解器.是否可以使用求解器进行线性优化?z3源代码中求解器的接口在哪里? 解决方案 是的,Z3 有一个基于 Simplex 方法的求解器.它在文件 src\smt\theory_arith* 中实现.主要文件是src\smt\theory_arith.h 和src\smt\theory_arith_core.h.该求解器对文件 src\smt\theory ..
发布时间:2021-10-04 20:37:58 其他开发

SMT 中哪个更好的做法是:添加多个断言或单个断言?

假设我有两个要在 SMT 中建模的子句,将它们作为单独的断言添加是否更好,例如 (assert (> x y))(断言 ( x y)(<y 2))) 这对于 SMT 求解器性能方面的大规模问题是否重要.我正在使用 Z3. 解决方案 连词被拆分成多个断言,所以它并不重要.如果您引入大连词,Z3 的解析器将创建一个包含所 ..
发布时间:2021-10-04 20:37:52 其他开发

用于求解器超时的 Z3 C-API

我在 Linux 上使用 Z3 4.1 C-API.我想为求解器指定超时时间. 我正在使用以下命令,但是在命令 Z3_solver_set_params() 中出现分段错误. Z3_context ctx = mk_context();Z3_solver s = Z3_mk_solver(ctx);Z3_params params = Z3_mk_params(ctx);Z3_symbol ..
发布时间:2021-10-04 20:37:49 其他开发

Z3_benchmark_to_smtlib_string() 的输入参数

我正在尝试使用函数 Z3_benchmark_to_smtlib_string().以下是我使用的参数: Z3_benchmark_to_smtlib_string(ctx,/* 这个是有效的 */"test",/* 这个是随机的,看不懂 */"QF_UFBV",/* 我从 smtlib 网站得到这个名字,有效吗?*/"sat",/* 也不确定这个 */NULL,/* 也不确定这个 */nb_a ..
发布时间:2021-10-04 20:37:46 其他开发

在 linux 中编译 z3 ocaml 绑定

我正在尝试在 Linux 中为 z3 编译 OCaml 绑定. 我尝试使用提供的 Makefile:我做了“make ocamlrelease"但它因错误而中止cp: 无法统计 `ml_release/build-lib.sh': 没有那个文件或目录 我还阅读了 ml 目录中包含的 readme.txt,它说要使用 SLAM 和 SDT,但这些似乎只适用于 Windows,而不适用于 ..
发布时间:2021-10-04 20:37:44 其他开发

z3、z3py:是否可以从本质上减少Function的搜索空间?

我正在推断一个 Function(var1) 并且我只关心这个函数的值,当 0 (我猜)限制函数搜索空间的一种常见方法是像(在 z3py 中)断言约束一样: for i in range(11):solver.add(And(Function(i)>=0,Function(i) 我的问题是:有没有更好的方法来限制函数的搜索空间?像设置这个函数的上界/下界一样吗? 我的直觉是:由于我对这 ..
发布时间:2021-10-04 20:37:41 其他开发

非线性整数算法中的可满足性检验

是否可以通过用线性不等式系统逼近原始系统来要求 Z3 证明具有 2 个不同变量(或在一般情况下)的整数多项式不等式系统的可满足性? 解决方案 默认情况下,Z3 将尝试将非线性整数问题作为线性问题求解.基本技巧是将诸如 x*y 之类的非线性项视为新的“变量".Z3 没有很好地支持非线性整数运算,以下帖子总结了 Z3 如何处理非线性整数运算: Z3 如何处理非线性整数算术? ..
发布时间:2021-10-04 20:37:38 其他开发

Z3 中的统计数据

我正在使用 Z3 的 Java API,我想从求解器获取一些统计信息,例如求解时间、变量/符号的数量、内存使用情况.此处的帖子(Z3py:如何获取来自公式的变量列表?) 声称 Python 中有一个实用程序实现,但我想知道是否有任何用于 JavaAPI 的实现. 谢谢. 解决方案 那些特定的实用程序是对 Z3 的外部贡献,仅适用于 Python API.不过应该可以在 Java 中遵 ..
发布时间:2021-10-04 20:37:35 其他开发

将WhyML映射到SMT逻辑的确切机制

您好,自动扣款和验证黑客! 为了更深入地了解 WhyML 如何为 ACSL 注释的 C 程序提供证明,我尝试手动“重现"Why3 对WhyML 程序所做的工作,同时将其转换为SMT 逻辑并将其提供给Z3 证明器. 假设我们有以下 C 片段: const int L = 3;int a[L] = {0};int i = 0;而 (i ..
发布时间:2021-10-04 20:37:32 其他开发

如何从 Z3 smtlib2 公式中获取声明?

我想使用 C++ API 对 Z3 进行增量求解. 关于这个,2012 年已经有一些老问题了: Z3 4.0 Z3_parse_smtlib2_string Z3 4.0:获取完整模型 Z34.3.1 C-API parse_smtlib2_string:从哪里得到声明? 我想知道新的 Z3 版本 4.4.2 是否有解决方案. 基本上我想做的事情是这样的: c ..
发布时间:2021-10-04 20:37:29 其他开发

Z3Python:字符串排序支持

我正在使用 Z3 及其 Python 模块为 Python 构建一个符号执行引擎. 我需要对字符串进行推理,但当前 Python API 我发现它可以以某种方式完成:https://github.com/cs-au-dk/Artemis/tree/master/contrib/Z3-str 我怎样才能让 Z3 使用它的 Python API 来推理字符串?(也许会延长它?) ..
发布时间:2021-10-04 20:37:26 Python

有没有办法通过 API 查询或访问 Z3 表达式的结构

我正在从 F# 访问托管 API.我可以使用 ctx.MkFalse、MkImplies、MkMul 等构造 Z3 表达式,但我如何遍历 Z3 表达式以发现其结构?是否有类似 e.Op 或 e.IsFalse、e.IsImplies 等的东西. 解决方案 您应该查看 Expr.cs. 这是一个遍历表达式的简单 F# 示例: 让遍历(expr: Expr) =printfn "num ..
发布时间:2021-10-04 20:37:23 其他开发