z3相关内容

如何从 SMT-Lib 标准在 Java 中运行 Z3?

到目前为止,我可以在 cmd 中在 Window 上运行 Z3 来求解方程: z3 -smt2 path_smt_lib_file 但是我如何在 Java 中使用 SMT-Lib 标准输入运行 Z3.提前致谢. 解决方案 您应该能够在 JavaExample.java 在文件夹 examples/java 中. 查看API.特别是,如果你想读取 SMT2 文件,请参阅 ..
发布时间:2021-10-04 20:39:22 Java开发

如何使用z3获得Fixedpoint中变量的约束?

我想在定点phi中得到元素的约束,下面例子中,约束应该是c2=5.0 应该如何在Z3中实现呢?或者有什么办法可以不使用Z3中的定点 (set-option :produce-models true)(设置选项:dl_engine 1)(设置选项:dl_pdr_use_farkas 真)(declare-var c1 Real)(declare-var c2 Real)(声明-var lambda ..
发布时间:2021-10-04 20:39:16 其他开发

如何打印 Z3 Set 对象?

我无法打印/显示作为 Z3 模型一部分返回的集合对象.考虑以下示例(在 F# 中): let ctx:Context = new Context()让 ASort = ctx.MkEnumSort("S",[| "A"; "B"; "C"|])让 ASetSort = ctx.MkSetSort(ASort)让 xs = ctx.MkConst("xs",ASetSort)让 p = mkPre ..
发布时间:2021-10-04 20:39:13 其他开发

在 z3 中有效地查找 BitVec 权重(也就是访问位向量的位)

我目前正在使用 z3 的 python api 计算位向量的权重. 在通过 python API 搜索更直接的方法后,我正在以下列方式实现位向量 st1 的权重函数: Sum([( (st1 & (2**(i)))/(2**(i)) ) for i in range(bits)]) 我的问题比较简单,有没有更简单/更有效的方法? 我遇到了包含 1500 多个此类重量限制的问题,并希 ..
发布时间:2021-10-04 20:39:10 Python

Z3 FP 逻辑:产生意想不到的模型

对于这个问题:http://rise4fun.com/Z3/YNBG Z3 生产模型: sat((s0 FP!val!0)) 我期待看到一个真实的数字作为模型.对于这种情况,它几乎就像将 FP 视为一种未解释的排序.有没有办法让Z3在这里产生一个实数? 解决方案 感谢您报告此问题.事实上,FPA 的模型补全中存在一个错误.该修复程序已在 Codeplex 的不稳定分支中提供. ..
发布时间:2021-10-04 20:39:07 其他开发

为什么这个 z3 方程失败了?

我需要解决这个代码(C中的代码) if (((0xAAAAAAAAAAAAAAABLL * len_input_serial > 64) > 1)+ len_input_serial- 3 * ((0xAAAAAAAAAAAAAAABLL * len_input_serial > 64) > 14))返回 0xFFFFFFFFLL; 这是我的python脚本 from z3 import * ..
发布时间:2021-10-04 20:39:05 Python

Z3可以输出“任何东西"吗?对于无约束的 UF 值?

未解释函数的某些值在搜索过程中可以不受约束.例如,如果在 smt 查询中只调用 f(1),那么 f(2), f(3) 可以是任何东西.有没有办法(可能有一些选项)知道在求解过程中没有使用哪些值,因此可以是任何值? 解决方案 对于没有量词的问题,您可以通过使用选项 :model-partial 到 true 来实现.这是一个示例(也可在此处获得): (set-option :model-p ..
发布时间:2021-10-04 20:39:01 其他开发

Z3 SMT 2.0 与 Z3 py 实现

我正在尝试对 Z3 中具有恒定无穷大的正实数进行算术编码.我在SMT2中使用以下对编码成功获得了结果 (declare-datatypes (T1 T2) ((Pair (mk-pair (first T1) (second T2)))))(declare-const infty (Pair Bool Real))(断言(= infty(mk-pair true 0.)))(define-fun ..
发布时间:2021-10-04 20:38:53 其他开发

将`appendo`关系从smt2转换为python

最近我正在学习 SMT 求解器.虽然 SMT 求解器对我来说是一个新概念,但它让我想起了逻辑编程,例如Prolog 和 minikanren.所以我在SMT求解器中尝试了一个经典的逻辑编程示例. 示例是appendo 关系,我们可以向后执行它.即给定一个输出列表,返回所有可能的两个输入,当连接这两个输入列表时返回输出列表. 以下是appendo关系,我在z3/smt2求解器中实现: ..
发布时间:2021-10-04 20:38:50 Python

z3 和浮点系数的解释

我在玩一个小的多目标整数规划问题: 在 Z3(使用 Python 绑定)中,我们可以非常优雅地说明这一点: from z3 import *x1,x2 = Ints('x1 x2')z1,z2 = Reals('z1 z2')选择 = 优化()opt.set(priority='pareto')opt.add(x1 >= 0, x2 >=0, x1 ..
发布时间:2021-10-04 20:38:47 其他开发

包装来自 Z3 C API 的实体

我正在试验 Z3 中的枚举排序,如 如何在 Z3 中调用一些策略后使用枚举常量? 我注意到我可能对如何正确使用 C 和 C++ api 有一些误解.让我们考虑以下示例. 上下文 z3_cont;Z3_symbol e_names[2];Z3_func_decl e_consts[2];Z3_func_decl e_testers[2];e_names[0] = Z3_mk_string_sym ..
发布时间:2021-10-04 20:38:44 其他开发

集合 z3 中的最大值

我是 Z3 的新手. 想知道如何计算一组和两个不同组的最大值. 例如:[1, 6, 5] - 6[1, 6, 5] e [10, 7, 2] - 6 越大 我用下面的代码来设置: (声明排序集 0)(declare-fun 包含 (Set Int) bool)( 声明常量集集 )(声明-const distinct_set 集)( 声明-const A Int )( 声明-co ..
发布时间:2021-10-04 20:38:41 其他开发

Z3 上下文序列化/反序列化?

是否可以序列化/反序列化 Z3 上下文(来自 C#)?如果没有,是否计划使用此功能? 我认为这个功能对于现实世界的应用程序很重要. 解决方案 当前 API 不直接支持此功能.下一版本将支持多个求解器,我们将提供用于将断言从一个求解器复制到另一个求解器并检索断言的命令.使用这些命令,可以通过将表达式转储到文件(SMT 2.0 格式)中来实现序列化.为了反序列化,我们只是读回文件.请注意 ..
发布时间:2021-10-04 20:38:37 其他开发

在 Z3 中创建传递而不是自反函数

我正在尝试在 Z3 中创建一个可传递但不具有自反性的函数.IE.如果 (transitive ab) 和 (transitive bc)hold 那么 (transitive ac) 应该成立,但是 (transitive aa)代码>不应该. 我尝试按照以下方式进行,进行了 5 次“测试".第一个符合我的预期,但第二个失败并导致 unknown. (declare-datatypes ( ..
发布时间:2021-10-04 20:38:32 其他开发

跟踪 z3::优化 unsat_core

如何正确跟踪 z3::optimize 未饱和内核? 当我添加 unsat_core 跟踪时,Z3 C++ z3::optimize 没有找到预期的解决方案(基于这些 examples) (gcc 10.0). 1. 考虑如下问题:有三个连续的点A、B和C,其中A和 C 分别固定为 0 和 200.确定B的位置,使得B - A >= 10,C - B >= 15,我们的优化目标是最小化( ..
发布时间:2021-10-04 20:38:29 C/C++开发

如何在z3py中表示对数公式

我对 z3py 很陌生.我正在尝试在 z3py 中编写以下对数表达式. log(x,y) 我确实经常搜索堆栈溢出并遇到类似的问题,但不幸的是我无法得到足够令人满意的答案.请帮帮我! 解决方案 更一般地说,我们如何用 Z3 定义日志? 我获得任何吸引力的唯一方法是使用 e 的近似值,将 exp(x) 定义为 (^ ex),然后将 log 定义为 exp 的逆函数.在 SMT-LIB ..
发布时间:2021-10-04 20:38:26 其他开发

Z3Py:随机结果(阶段选择)不是随机的?

我尝试使用位向量在模型值中获得随机结果,如 de Moura here 然后使用 Z3Py 而不是 SMTLIB.我将他的例子翻译成: from z3 import *s = 求解器()x = BitVec('x', 16)set_option('auto_config', False)set_option('smt.phase_selection',5)s.add(ULT(x,100))s.c ..
发布时间:2021-10-04 20:38:23 其他开发