Z3Py 中最大值的模型不正确

2024-01-22

我想找到一个表达式的最大间隔e对于所有 x 都成立。编写这样的公式的方法应该是:Exists d : ForAll x in (-d,d) . e and ForAll x not in (-d,d) . !e.

为了得到这样一个d, 公式f在 Z3 中(看上面的)可能是以下内容:

from __future__ import division
from z3 import *

x = Real('x')
delta = Real('d')
s = Solver()

e = And(1/10000*x**2 > 0, 1/5000*x**3 + -1/5000*x**2 < 0)

f = ForAll(x,
And(Implies(And(delta > 0,
                -delta < x, x < delta, 
                x != 0),
            e),
    Implies(And(delta > 0,
                Or(x > delta, x < -delta),
                x != 0),
            Not(e))
    )
)

s.add(Not(f))
s.check()
print s.model()

哪个输出[d = 1/4].

为了检查它,我设置了delta = RealVal('1/4'),删除ForAll量词来自f我得到x = 1/2。我替换delta with 1/2并得到3/4, then 7/8等等。界限应该是1。我可以让Z3立即输出吗?


如果你自己算一下,你会发现解决方案是x != 0, x < 1。或者你可以简单地询问沃尔夫勒姆·阿尔法 http://www.wolframalpha.com/input/?i=1%2F10000*x**2%20%3E%200%20%26%26%20(1%2F5000*x**3%20%2B%20-1%2F5000*x**2%20%3C%200)为你做这件事。所以,不存在这样的delta.

您遇到的问题是您断言:

s.add(Not(f))

这将开启通用量化x进入存在主义;询问z3找到一个delta such 有一些x这符合要求。 (也就是说,你否定了整个公式。)相反,你应该这样做:

s.add(delta > 0, f)

这也确保了delta是积极的。进行此更改后,z3 将正确响应:

unsat

(然后你会收到一个错误,调用s.model(),你应该只调用s.model()如果之前的调用s.check()回报sat.)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Z3Py 中最大值的模型不正确 的相关文章

  • 使用布尔运算符在 Z3 中定义约束

    比方说 我想使用 Z3 约束将字符串的每个字符限制为字符集 a zA Z0 9 我可以使用布尔运算符来指定吗 举个例子 input BitVec input s i 8 for i in range 10 for i in range 10
  • 如何在线使用Z3Py解决运算放大器的问题

    求下列电路中R的值 使用以下代码可以解决此问题 R V1 V2 Vo Reals R V1 V2 Vo I1 V1 R 50 I2 V2 R 10 g R I1 I2 print g equations Vo g print equatio
  • 检索 Z3Py 中的值会产生意外结果

    我想找到一个表达式的最大间隔e对所有人来说都是如此x 编写这样的公式的方法应该是 Exists d ForAll x in d d e and ForAll x not in d d e 为了得到这样一个d 公式f在 Z3 中 看上面的 可
  • 简化 CNF 公式,同时保留某些变量的所有解决方案

    有关的 CNF 简化 https stackoverflow com questions 23461191 cnf simplification 事实上 我认为这个问题的提交者可能是在追求我想要的东西 有许多工具可用于简化 或求解前 预处理
  • 如何让 z3 返回多个 unsat 核心、多个令人满意的作业

    我正在研究一个研究工具的一个组件 我有兴趣检索 对于 QF LRA 多个 最少或其他 UNSAT核心以及 多项 SAT 作业 我检查了论坛以获取有关此主题的早期讨论 例如 在逻辑 QF LRA 上使用 z3 时如何获得不同的 unsat 核
  • 在 Z3 中使用 SMT 约束时获取合法范围信息的(次)最佳方法

    这个问题与我之前的问题相关 在 Z3 中使用 SMT 约束时是否可以获得合法的范围信息 https stackoverflow com questions 53676016 is it possible to get a legit ran
  • 正确 Dafny 方法的 Z3 模型

    对于正确的方法 Z3能否找到该方法验证条件的模型 我原以为不会 但这里有一个例子 该方法是正确的 但验证发现了一个模型 这是 Dafny 1 9 7 的情况 Malte 所说的是正确的 我发现它也得到了很好的解释 Dafny 是健全的 因为
  • Z3 -smt2 -in:获取Z3版本

    使用选项启动后可以获得Z3的版本吗 smt2 in 就像是 get z3 version Z3 4 3 2 x64 Desired reply 在SMT LIB 2 0前端 我们可以使用命令 get info version 该命令是标准的
  • Z3Py 中最大值的模型不正确

    我想找到一个表达式的最大间隔e对于所有 x 都成立 编写这样的公式的方法应该是 Exists d ForAll x in d d e and ForAll x not in d d e 为了得到这样一个d 公式f在 Z3 中 看上面的 可能
  • 在 Mac OS X 上构建 z3

    我正在尝试建立Z3 http z3 codeplex com releases view 95640在 Mac OS X 上 按照 README 文件 我刚刚执行了 autoconf configure make 收到错误 omp h 文件
  • 如何将 Z3 与 C++ 结合使用

    我想将 Z3 与 C 一起使用 并且我遵循了安装指南 使用 Visual Studio 命令提示符在 Windows 上构建 Z3 https github com Z3Prover z3 building z3 on windows us
  • 有人尝试过用Z3本身来证明Z3吗?

    有没有人尝试证明Z3 http research microsoft com en us um redmond projects z3 与Z3本身 是否有可能使用 Z3 来证明 Z3 是正确的 更理论化的是 是否有可能使用 X 本身来证明工
  • 如何从 Z3 中的 Seq 类型中提取元素作为基本类型?

    如何将序列中的元素提取到基本类型 以便以下内容正常工作 define sort ISeq Seq Int define const x ISeq seq unit 5 define const y ISeq seq unit 6 asser
  • Z3 支持非线性算术

    我知道 Z3 对非线性算术有一些支持 但想知道扩展到什么范围 是否可以指定支持和不支持 或可能超时 哪些类别的非线性算术 提前了解这些将帮助我尽早放弃我的任务 似乎不支持与电源相关的内容 如下所示 def pow2 x k Int k re
  • 如何估计在 z3 for SMT 中解决 SAT 部分所花费的时间?

    我已经使用探查器 gprof statshere http www ccs neu edu jaideep example2 stats包括调用图 并试图将所花费的时间分为两类 I SAT 求解部分 包括 纯 布尔传播和 纯 布尔冲突子句检
  • 尝试在Python中使用Z3找到布尔公式的所有解决方案

    我是 Z3 的新手 正在尝试制作一个求解器 将每个可满足的解决方案返回到布尔公式 从其他 SO 帖子中记下笔记 我已经编写了我希望能起作用的代码 但事实并非如此 问题似乎是 通过添加以前的解决方案 我删除了一些变量 但它们又在后面的解决方案
  • (Z3Py) 声明函数

    我想在简单的 result x t c 公式中找到一些给定结果 x 对的 c 和 t 系数 from z3 import x Int x c Int c t Int t s Solver f Function f IntSort IntSo
  • Z3:检查模型是否唯一

    Z3 有没有办法证明 表明给定模型是唯一的并且不存在其他解决方案 一个小例子来演示 declare const a1 Int declare const a2 Int declare const a3 Int declare const b
  • Z3:执行矩阵运算

    我的情况 我正在开展一个项目 需要 证明正确性3D 矩阵变换 http rodrigo silveira com 3d programming transformation matrix tutorial UU65YicWsYZ涉及矩阵运算
  • Z3:FP 和 BitVector 之间的转换?

    SMTLIB2 中是否有任何方法可以在 BitVector 和 FP 之间进行转换 例如 int2bv 和 bv2int 函数 为了澄清 我正在寻找位的原始表示 而不是例如 BitVec 形式的舍入整数 准确地说 SMTLIB中的浮点运算还

随机推荐

  • HTTP 在 Android 模拟器中不起作用

    我尝试了多个 HTTP 类 HttpURLConnection HTTPClient和其他 但它们在模拟器中不起作用 然后我决定在我的手机上测试一下 效果很好 那么我该如何解决 Android 模拟器 HTTP 类不起作用 而浏览器可以工作
  • 为什么来自 POSTMAN 的 POST 请求返回空?

    我在邮递员中的标题如下 我的身体是这样的 在 Laravel Lumen 路线中 我像这样检查 router gt group middleware gt auth function router router gt post sales
  • 无效的设备符号 cudaMemcpyFromSymbol CUDA

    我想计算 CUDA 中数组所有元素的总和 我想出了这段代码 它编译没有任何错误 但结果始终为零 我收到了无效的设备符号cudaMemcpyFromSymbol 我无法使用 Thrust 或 Cublas 等任何库 define TRIALS
  • 在 Swing 中使用 sleep()

    public class TestFrame extends JFrame public TestFrame setBounds 10 10 500 500 setLocationRelativeTo null setDefaultClos
  • 将 Spark 作业从 Airflow 提交到外部 Spark 容器

    我有一个用 docker swarm 构建的 Spark 和气流集群 正如我所期望的 气流容器不能包含火花提交 我正在使用 github 中存在的以下图像 Spark 大数据欧洲 docker hadoop spark workbench
  • 确定有序素数对 (p, q) 的数量,使得 N = p^2+q^3 使得从 0 到 9 的每个数字都恰好出现一次

    我必须编写一个程序 可以确定素数 p q 的有序对的数量 这样当 N p 2 q 3 以十进制书写时 从 0 到 9 的每个数字只出现一次 没有前导零 我想到使用埃拉托斯特尼筛的变体 正如它所解释的那样here https www geek
  • RETEasy 客户端 + NoSuchMethodError

    我正在尝试编写简单的 RESTEasy 客户端 下面给出的是示例代码 Client client ClientBuilder newBuilder build WebTarget target client target http loca
  • 内联内容可编辑标签无法在 IE 中正确对齐

    我遇到的情况是 我有内联 contenteditable span 标签以及其他非 contenteditable 标签 这些标签在除 IE 之外的所有浏览器中都可以正常工作 在 IE 中 标签无法充当内联标签 并开始强制将自身对齐为块 某
  • 为库模块添加 rspec 测试似乎没有拾取期望和匹配器

    我正在向我的应用程序添加更多 rspec 测试 并希望测试位于 lib scoring methods rb 中的 ScoringMethods 模块 所以我添加了一个 spec lib 目录并在那里添加了 rating methods s
  • 从 Collection 更改为 SortedSet

    我正在将 Collection 更改为 SortedSet 因为我需要它始终保持与创建它们时一致的顺序 我已将模型属性从 OneToMany cascade CascadeType ALL mappedBy contentId privat
  • 如何使用 MailChimp API 发送电子邮件

    我正在 nodejs 中创建一个应用程序来使用 MailChimp 发送电子邮件 我尝试过使用https apidocs mailchimp com sts 1 0 sendemail func php https apidocs mail
  • 在 javascript/jQuery 中将字符串转换为数字

    一直在尝试将以下内容转换为数字
  • 将 dataReader 转换为字典

    我尝试使用 LINQ 将一行转换为字典 fieldName gt fieldValue return Enumerable Range 0 reader FieldCount ToDictionary
  • React 原生性能问题

    我使用 coincap api 首先获取大约 1500 多种加密货币的数据 然后使用 Web socket 来更新加密货币的更新值 我在这里使用 redux 来管理我的状态 在我里面componentDidMount 我正在打电话还原动作
  • QTableView排序信号?

    I use QTableView QStandardItemModel显示一些数据 存储在其他数据结构中的数据 这个表视图是sortable 由于它是可排序的 因此在对该模型进行排序时 我还需要对存储数据的顺序进行排序 我尝试为排序信号实现
  • 将数据上传到数据库时出现问题

    我在将数据发送到数据库时遇到问题 问题是每次我刷新页面时它都会自动发送以前的数据 任何人都可以帮忙吗 if isset POST Posts if isset POST t isset POST i isset POST P title P
  • Bootstrap 3 网格可以扩展吗?

    我正在开发一个项目 我们将保留 Bootstrap less 文件不变 我们也不想在 HTML 中使用 Bootstrap 类 因为我们将来可能不会使用它 我正在尝试使用 扩展 功能将我们的类名与样式表中的 BS 版本分组 除了网格列之外
  • 如何在 Laravel 中将模型事件与查询生成器一起使用

    我在模型的静态函数启动方法中使用诸如 static saving static saved 等模型事件 当用户保存新帖子时效果很好 但是当我执行以下操作时 post where id post id gt update array publ
  • 在纯 CSS 中将子级的宽度设置为父级的高度

    我可以设置width of a child div等于它的parent div height在纯CSS中 JsFiddle 演示 http jsfiddle net evk9a9ma 到目前为止 我一直在 jQuery 中做 child d
  • Z3Py 中最大值的模型不正确

    我想找到一个表达式的最大间隔e对于所有 x 都成立 编写这样的公式的方法应该是 Exists d ForAll x in d d e and ForAll x not in d d e 为了得到这样一个d 公式f在 Z3 中 看上面的 可能