z3相关内容

如何用c++API获取SAT试题中的模型值?

我正在使用Z3的C++API来解决SAT问题。 当问题确定后,我想得到所有变量的可满足性赋值。 我发现打印变量的值很容易,如以下代码所示: context c; solver s(c); expr x=c.bool_const("x"); s.add(x); if(s.check()==sat){ model m=s.get_model(); std::cout ..
发布时间:2022-08-22 10:06:30 其他开发

Z3的旧版本与新版本

我有一个实例,旧版本的Z3(2.18版)可以非常高效地解决这个问题。它会在几秒钟内返回SAT。 然而,当我在当前版本的Z3(版本4.3.1)上试用它时。10分钟后不返回任何结果。 这里是关于这个实验的一些细节。有谁能给点建议吗? 共有4000个Bool变量和200个Int变量 所有约束都在命题逻辑中,并在整数之间进行比较,如a<;b 平台:Open SuSE Linux ..
发布时间:2022-08-22 09:54:45 其他开发

无法为Z3中的GADT创建抽象加法运算

问题 我在Z3中使用以下Datatype定义。我的目标是从本质上“重载”加法操作符。我使用ForAll尝试了以下技巧,但Z3似乎认为它无效。 问题 这是怎么回事?为什么这不起作用? 代码 import pytest from z3 import Datatype, IntSort, Solver, Ints def test_stackoverflow(): ..
发布时间:2022-08-22 09:49:30 Python

Z3 C++API产生&未知&q;,而序列化输出上的二进制产生&unsat&q;

当我使用Z3C++API构建特定的约束集时,得到的响应是“未知”。但是,如果我使用运算符<;<;()序列化z3::solver对象,并将输出传递给Z3二进制文件,它会像预期的那样产生“unsat”。非常有趣的是,如果我使用z3::solver::to_smt2()而不是运算符<;<;(),则Z3二进制输出“未知”。 为什么会发生这种情况?如何使用C++API获取Z3以“看到” ..
发布时间:2022-08-22 09:35:40 C/C++开发

Z3&;的Java绑定的JavaExample.Java测试的编译错误

我正在尝试使用Z3的Java绑定,特别是尝试运行Z3的4.4.2版本中分发的Java示例JavaExample.java。 JavaExample.java在我使用4.4.2 com.microsoft.z3.jar文件时编译得很好。但是,它不会运行,因为默认的libz3java.dll是32位,而我的环境是64位。我尝试为其生成文件生成器scripts/mk_make.py构建一个带有-x ..
发布时间:2022-08-22 09:23:43 Java开发

Z3:无效的有界变量

我正在尝试查看Z3(Python)中的一句话的有效性,但收到以下消息:Invalid bounded variable(s) 我在这里复制我遵循的步骤: v, a, b, c, d, e = Ints('v a b c d e') lt_1 = (v == 4) lt_2 = (v == 2) lt_3 = (v == 3) lt_4 = (v == 5) lt_5 = (v == ..
发布时间:2022-08-22 09:16:00 Python

Z3';的Java绑定的JavaExample.Java测试的编译错误

我正在尝试使用Z3的Java绑定,特别是尝试运行Z3的4.4.2版本中分发的Java示例JavaExample.java。 JavaExample.java在我使用4.4.2 com.microsoft.z3.jar文件时编译得很好。但是,它不会运行,因为默认的libz3java.dll是32位,而我的环境是64位。我尝试为其生成文件生成器scripts/mk_make.py构建一个带有-x ..
发布时间:2022-08-22 09:12:27 Java开发

为什么Z3&Quot;舍入&Real小到1.0/0.0?

我正在使用Z3的pythonAPI进行一些线性实数运算。我遇到过一种情况,非常接近于零的雷亚尔以某种方式转换为1.0/0.0。这进而导致Z3的C++部分内部出现浮点异常。 例如,我有以下的Python程序: from z3 import * s = Solver() s.add(0.00001 * Real("a") + 0.00001 * Real("b") > 0.0) print ..
发布时间:2022-08-22 09:00:51 Python

Z3-Python中的SAT查询变慢了:增量式SAT怎么办?

在Z3(Python)中,循环内的SAT查询速度变慢,我可以使用增量SAT来解决此问题吗? 问题如下:我在循环中执行具体的SAT搜索。在每次迭代中,我都会得到一个模型(当然,我存储了该模型的否定,以便不会再次探索相同的模型)。此外,如果该模型满足某个属性,我还会添加它的子查询,并将其他限制添加到公式中。然后再次迭代,直到获得UNSAT(即不再有模型)。 我提供代码的定向快照: ..
发布时间:2022-08-22 00:00:00 其他开发

Z3支持平方根

我一直在搜索Z3提供的平方根功能。例如,对于添加关于实数x的约束,即x*x=2,对其进行编码的最佳方式是什么? 我已尝试: (declare-const x Real) (assert (= 2 (* x x))) (check-sat) 结果未知。该模型也不可用。 然而,我相信应该有一种方法来满足这一点。我指的是SMT-lib 2.0语言的扩展版本,而不是pythonAP ..
发布时间:2022-08-21 23:54:10 其他开发

Z3py SMT编码跟随变量及公式

我对Z3和SMT解算器真的很陌生。 我有以下问题,我不知道如何在Z3py中编码。 在上图中,N是节点集,因此N={Node1,Node2,Node3,Node4,Node5,Node6,Node7} i是输入集合,i={i1,i2,i3,i4} O是输出集合,O={O1,O2,O3} G是这样一个组,其中对于任何连续的2个输出(O i、O j),如果Oi是第一个生成的输出,并且 ..
发布时间:2022-08-21 23:47:56 其他开发

Z3的参考文献--它是如何工作的[内部理论]?

我对阅读Z3背后的内在理论很感兴趣。具体地说,我想阅读Z3 SMT求解器是如何工作的,以及它如何能够为不正确的模型找到反例。我希望能够手动计算出一些非常简单的例子的轨迹。 然而,所有的Z3参考似乎都是如何在其中编码;或者是对他们的算法的非常高级的描述。我找不到对所用算法的描述。此信息是否未由Microsoft公开? 有人能引用一些参考文献(论文/书籍)来全面了解Z3的理论和实践吗? ..
发布时间:2022-08-21 23:36:58 其他开发

表示Z3中的集合有哪些替代方案?

PERthis answerZ3集合排序是使用数组实现的,考虑到API中提供的SetAdd和SetDel方法,这是有意义的。还声称here如果从未使用数组修改函数,则使用数组而不是未解释的函数是浪费开销的。鉴于此,如果我对集合的唯一用途是使用IsMember应用约束(无论是在单个值上还是作为量化的一部分),那么使用从底层元素排序到布尔值的未解释函数映射是不是更好?所以: from z3 im ..
发布时间:2022-08-21 23:31:19 其他开发

使用Z3为特定CHC系统的猜测解决方案找到反例?

假设我有以下CHC系统(i(X)是一个未知谓词): (x = 0) -> I(x) (x = 5) -> x = 5 现在假设我猜测i(X)的解为x<;2(实际上是一个错误的猜测)。我可以为Z3Py编写代码来(I)检查它是否是有效的解,以及(Ii)如果不正确,找一个反例,即一个满足x ..
发布时间:2022-08-21 23:20:43 其他开发

Z3求解器中MAxSMT与用户自定义代价函数的结合

我正在使用Z3来优化具有一些软约束的成本函数(具有加权的MaxSMT)。我很好奇MaxSMT和用户定义的成本函数是如何交互的。求解器是否同时最小化MaxSMT成本和目标函数,是否有优先机制?我找不到任何有关这方面的文档,如果遗漏了什么,请告诉我。 推荐答案 @alias从技术角度回答了这个问题;我从可用性角度解释了这个问题,所以我添加了一个带有一些细节的答案。 如@alias所述 ..
发布时间:2022-08-21 23:10:11 其他开发

任意长度的泛型位向量类型

出于与此处相同的原因(user defined uninterpreted function),我想定义我自己的未解释函数 bvredxnor():对给定位向量的位进行异或运算。 如果我遵循此处给出的示例(example of universal quantifiers with C API),我不知道应该为函数的参数(位向量)提供哪种类型 我可以创建一个给定长度的位向量,但我希 ..
发布时间:2022-08-21 23:03:36 其他开发

Z3整流2bv运行

我遇到了一些有关位向量操作的问题。特别是,在给定以下模型的情况下。我原以为var0应该是11。 (declare-const var1 Int) (declare-const var0 Int) (assert (= var1 10)) (assert (= var0 ((_ bv2int 32) (bvor ((_ int2bv 32) var1) ((_ int2bv 32) 1)))) ..
发布时间:2022-08-21 22:51:44 其他开发

巨蟒--优化的不等式组

我正在编写一个用Python语言编写的程序,其中的一小部分涉及优化方程/不等式系统。理想情况下,我会像在Modelica中所能做的那样,写出方程,让求解器来处理。 求解器和线性规划的操作有点超出了我的舒适区,但我还是决定尝试一下。问题是,程序的总体设计是面向对象的,并且有许多不同的组合来形成方程,以及一些非线性,所以我无法将其转化为线性规划问题(但我可能是错的)。 经过一些研究后,我发 ..
发布时间:2022-08-21 22:45:17 Python