sat-solvers相关内容

尝试在Python中使用Z3找到布尔公式的所有解

我是Z3的新手,正在尝试创建一个求解器,它返回布尔公式的所有可满足解。我记下了其他帖子的笔记,我编写了我希望能起作用的代码,但事实并非如此。问题似乎是,通过添加前面的解决方案,我删除了一些变量,但它们在后来的解决方案中返回? 目前我只想解决a或b或c。 如果我解释得不好,请让我知道,我会尝试进一步解释。 提前感谢您的回复:) 我的代码: from z3 import ..
发布时间:2022-08-21 21:51:21 其他开发

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

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

Z3py:打印包含 144 个变量的大型公式

我使用 Z3 定理证明器,并且我有一个很大的公式(114 个变量).我可以打印一个包含所有子句的大公式吗?普通的print str(f)会截断输出,最后只打印“...",而不是所有子句. 我测试了 print f.sexpr() 并且这总是打印所有子句.但是仅在 sexpr 语法中. 我可以打印公式的所有子句但避免使用 s 表达式语法吗? 注意:代码示例很少能说明问题,但发布一个 ..
发布时间:2021-10-04 20:35:09 Python

具有删除特定约束能力的增量 SMT 求解器

是否有增量 SMT 求解器或某些增量 SMT 求解器的 API,我可以在其中增量添加约束,在其中我可以通过某些标签/名称唯一标识每个约束? 我想唯一地标识约束的原因是,我可以稍后通过指定该标签/名称来删除它们.需要删除约束是因为我之前的约束随着时间变得无关紧要.我看到使用 Z3 我不能使用基于推送/弹出的增量方法,因为它遵循基于堆栈的想法,而我的要求是删除特定的早期/旧约束.使用基于假设的 ..
发布时间:2021-10-04 20:34:14 其他开发

确定任意命题公式中变量的上限/下限

给定一个任意命题公式 PHI(对某些变量的线性约束),确定每个变量的(近似)上限和下限的最佳方法是什么? 有些变量可能是无界的.在这种情况下,算法应该得出结论,这些变量没有上限/下限. 例如,PHI = (x=3 AND y>=1).x 的上下限都是 3.y 的下限是 1,y 没有上限. 这是一个非常简单的例子,但是否有一般的解决方案(可能使用 SMT 求解器)? 解决方案 ..
发布时间:2021-10-04 20:33:49 其他开发

Z3统计解读

我从 Z3 的运行中获得了几个统计数据.我需要明白这些是什么意思.对于 sat 和 SMT 求解的最新发展,我相当生疏且不了解最新情况,因此我试图自己寻找解释,但我可能完全错了.所以我的问题主要是: 1) 度量的名称是什么意思? 2) 如果错了,你能指点我更好地理解它们所指的是什么吗? 其他意见如下,在概念上属于上述两个问题.提前致谢! 我的解释如下. DPLL.以下 ..
发布时间:2021-10-04 20:29:58 其他开发

(get-unsat-core)在Z3中返回空

我正在使用Z3提取不满意公式的不饱和核。我正在使用Z3 @ Rise界面(基于Web)编写以下代码, (set-logic QF_LIA) (set-option:produce-unsat-cores true) (声明乐趣ph1()Int) (声明乐趣ph1p()Int) (声明-有趣的ph3()整数) (声明乐趣ph3p()整数) (声明乐趣ph4()整数) (声明乐趣ph4p() ..
发布时间:2020-10-09 19:28:11 其他开发

ocaml上的Z3绑定

我当前正在使用ocaml 4.06.0,并且正在尝试使用Z3 sat求解器.我正在使用opam的绿洲来编译文件(这将成功构建所有文件).但是,当我运行生成的本机代码时,出现以下错误:error while loading shared libraries: libz3.so.我尝试重新安装z3软件包,但错误仍然存​​在.有人可以帮我解决这个问题,因为我不知道还能尝试什么? 解决方案 这是我 ..
发布时间:2020-05-19 19:20:51 其他开发