z3py相关内容

关闭 Z3py 打印截断

我需要打印整个 Z3 问题来调试它,但是当我打印它时,输出被截断了. from z3 import *s = 求解器()... 添加许多断言到 s ...印刷) 如何显示所有内容? 解决方案 尝试: set_option(max_args=10000000, max_lines=1000000, max_depth=10000000, max_visited=1000000) 您可 ..
发布时间:2021-10-04 20:41:27 Python

z3py 在尝试消除量词时死了

我有一个 Python 程序,可以在其中生成不同的 z3 公式,然后对其中一些公式进行存在量化.我的程序过去运行良好,但突然间它开始尝试对某些表达式进行量词消除.代码不会返回并挂在这些示例上.这是出现问题的输入之一.所有变量都是整数.我尝试打印 expr 但它从不打印.在有问题的情况下,进程也不能轻易终止.我必须通过关闭终端(ubuntu)来强制它. Exists([R_1_0, R__0, R ..
发布时间:2021-10-04 20:41:21 其他开发

Z3py,随机不同解生成

from z3 import *随机导入a = Int('a')b = Int('b')s = Tactic('qflra').solver()s.add(a > 10)set_option('smt.arith.random_initial_value', True)set_option('smt.random_seed', random.randint(0, 2 ** 8))而 s.check ..
发布时间:2021-10-04 20:41:18 Python

Z3py:将值添加到计算结果并进行另一次检查

我想用 Z3 解决下面的例子: 输入 = 0如果输入5:返回真别的:返回错误 如何将这个逻辑转换为 Z3?这是我目前所拥有的. input = Int(“输入")v1 = Int(“v1")求解器 = 求解器()solver.add(v1 == 5)solver.add(输入 如何将 5 添加到输入中,并将多个输入添加到 5,以便稍后检查它是否大于 5? 解决方案 建模此类命令式程 ..
发布时间:2021-10-04 20:41:13 其他开发

z3 - 意外输出/不确定输出意味着什么

我问了一个问题并得到了一个具体答案.但是,我不得不扩展这个答案以处理大量数据(下面的代码).但是,这样做时,我得到了一个我不明白的输出. 有时,我得到一个unsat,有时我得到一个sat s.check();有时 s.check() 和 s.model() 需要很长时间才能运行,而其他时间则是几秒钟.但是,我不明白的是当我得到这样的输出时: [else ->或(变量(0)== 7,变量(0 ..
发布时间:2021-10-04 20:40:56 Python

Z3检查python字符串可满足性

有没有办法检查像'p或p这样的python字符串的可满足性->如果您事先不知道变量名称,则 Z3 中的 p' ?例如我见过这个: p = Bool('p')解决(暗示(或(p,p),p)) 但是我无法提前定义 Z3 中的变量,因为该命题是作为字符串提供给我的.我怎样才能用 z3 做到这一点? 我也看过 python 的 eval 函数,但似乎我也需要在之前的 z3 中定义变量名 解 ..
发布时间:2021-10-04 20:40:53 Python

如何在 Z3py 中建模

我一共有七个(A, B, C, D, E, r, c) Z3个布尔变量,其中A, B, C, D, E代表从一个点开始的边,用黑点表示如下图1. 剩下的两个变量,即r和c是黑点点的变量,其值取决于边缘值如下: 变量‘r’的条件:情况 1:如果 A 为真,则只有来自 C 或 D 的一个变量可以为真情况 2:同样,如果 B 为真,则只有变量 C 或 D 为真.只有在情况 1 或情况 2 之 ..
发布时间:2021-10-04 20:40:50 Python

Z3python异或总和?

我目前正在尝试使用 z3python 求解一些方程,但遇到了我无法处理的情况. 我需要对某些 ​​BitVecs 与特定的非 ascii 字符值进行异或,并将它们相加以检查校验和.这是一个例子: pbInput = [BitVec("{}".format(i), 8) for i in range(KEY_LEN)]密码 = "\xff\xff\xde\x8e\xae"solver.add ..
发布时间:2021-10-04 20:40:44 Python

Z3 字符串/字符异或?

我正在 Python 中使用 Z3,并试图弄清楚如何进行字符串操作.通常,我将 z3.String 作为对象进行了尝试,执行了诸如 str1 + str2 == 'hello world' 之类的操作.但是,我一直无法完成以下行为: solver.add(str1[1] ^ str1[2] == 12) # -- 或 --solver.add(str1[1] ^ str1[2] == str2[ ..
发布时间:2021-10-04 20:40:41 Python

我如何知道z3中有多少个数组?

我正在使用 Z3py 但是当我定义一个数组时 array = Array('array', IntSort(), IntSort()) 我不知道如何知道数组有多少个值. 解决方案 Z3(和 SMT)中的数组具有无限大小.例如,参见 创建一个固定大小的数组并初始化它 ..
发布时间:2021-10-04 20:40:10 其他开发

python中z3求解器的超时

我在为求解器设置超时时遇到问题: s = Solver()编码 = parse_smt2_file("ex.smt2")s.add(编码)s.set("超时", 600)解决方案 = s.check() 但我收到以下错误 回溯(最近一次调用最后一次):文件“/Users/X/Documents/encode.py",第 145 行,在 parse_polyedra("file")文件“/Us ..
发布时间:2021-10-04 20:39:24 其他开发

为什么这个 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

将`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 其他开发

如何在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 其他开发

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

在 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 或 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 其他开发