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 中最大值的模型不正确 的相关文章

  • 使用 C++ API 进行数组选择和存储

    我正在使用 z3 v 4 1 我正在使用 C API 并尝试在上下文中添加一些数组约束 我在 C API 中没有看到选择和排序函数 我尝试混合使用 C 和 C API 在示例中array example1 如果我将上下文变量从Z3 Cont
  • 确定任意命题公式中变量的上/下界[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 给定一个任意命题公式 PHI 某些变量的线性约束 确定每个变量的 近似 上限和下限的最佳方法是什么 有些变量可能是无界的 在这种情况下 算
  • Z3中的parthood定义

    我试图在 Z3 中定义集合对 使用数组定义 之间的部分关系 在下面的代码中称为 C 我写了 3 个断言来定义自反性 传递性和反对称性 但 Z3 返回 未知 我不明白为什么 define sort Set Array Int Bool dec
  • z3在处理非线性实数运算时能否始终给出结果

    我有一个问题需要解决一组非线性多项式约束 在处理非线性实数算术时 z3 能否始终给出结果 sat 或 unsat 结果也还好吗 是的 假设 1 资源可用 并且 2 您仅使用实际约束 以便nlsat使用了策略 正如我上次检查的那样 它没有与其
  • Z3 返回型号不可用

    如果可能的话 我想要对我的代码有第二意见 问题的约束条件是 a b c d e f是非零整数 s1 a b c and s2 d e f 是集合 The sum s1 i s2 j for i j 0 2必须是一个完美的正方形 我不明白为什
  • 有没有办法获取Z3中的默认上下文?

    我正在使用 z3py API 4 3 0 我可以轻松翻译一个表达expr从默认上下文到新上下文target ctx using expr translate target ctx 但是我如何从给定的上下文中进行翻译ctx进入默认的 Z3 上
  • Z3 量词支持

    我需要一个定理证明器来解决一些简单的线性算术问题 然而 即使是简单的问题我也无法让 Z3 工作 我知道它不完整 但是它应该能够处理这个简单的示例 assert forall t Int t 5 check sat 我不确定我是否忽略了某些事
  • 跟踪 z3::optimize unsat_core

    如何正确追踪z3 optimize未饱和核心 Z3 C z3 optimize当我添加时没有找到预期的解决方案不饱和核心跟踪 基于这些examples https github com Z3Prover z3 blob 9df6c10ad8
  • 在 Z3 中定义带有约束的代数数据类型

    我看过一些在线材料 用于定义代数数据类型 例如 Z3 中的 IntList 我想知道如何定义具有逻辑约束的代数数据类型 例如 如何定义代表正整数的 PosSort SMT中的全部功能 在 SMT 中函数总是完整的 这提出了如何对部分函数 例
  • z3 中如何定义 Int 排序(SMT-LIB 2.0 Ints 理论)和动态声明排序?

    这是我使用 z3 执行的 SMT LIB 2 0 基准测试 set logic AUFLIA declare sort PZ 0 declare fun MS Int PZ Bool assert forall x Int exists X
  • Z3 Optimize 最大和最小功能背后的理论是什么?

    我写这封信是为了询问 Z3 Optimize 功能背后的理论 算法 特别是它的maximum and minimum功能 这对我来说似乎很神奇 它是某种二分搜索吗 它如何有效地计算出这里的最大 最小值 我试图搜索相关功能的源代码 例如 ex
  • Z3 支持非线性算术

    我知道 Z3 对非线性算术有一些支持 但想知道扩展到什么范围 是否可以指定支持和不支持 或可能超时 哪些类别的非线性算术 提前了解这些将帮助我尽早放弃我的任务 似乎不支持与电源相关的内容 如下所示 def pow2 x k Int k re
  • Z3 求解器中 MAxSMT 和用户定义成本函数的组合

    我正在使用 Z3 来优化带有一些软约束 带有加权 MaxSMT 的成本函数 我很好奇 MaxSMT 和用户定义的成本函数如何交互 求解器是否最小化 MaxSMT 成本和目标函数两者 是否有优先级机制 我找不到这方面的任何文档 如果我遗漏了什
  • Z3 实数算术和数据类型理论整合得不太好

    这与我之前问过的问题有关Z3 SMT 2 0 与 Z3 py 实现 https stackoverflow com questions 13826217 z3 smt 2 0 vs z3 py implementation我实现了无穷大正实
  • (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
  • 能够删除特定约束的增量 SMT 求解器

    是否有增量 SMT 求解器或用于某些增量 SMT 求解器的 API 我可以在其中增量添加约束 在其中我可以通过某个标签 名称唯一地标识每个约束 我想唯一地标识约束的原因是这样我可以稍后通过指定标签 名称来删除它们 需要放弃约束是因为我之前的
  • 如何以跨系统的方式将进程仅绑定到物理核心?

    我在用着每次将线程数加倍的项目 https github com ConsenSys mythril pull 1372 files 您会增加 40 到 60 的开销 由于超线程将性能最多提高了 30 这意味着程序在超线程系统上的运行速度比
  • z3 中的列表串联

    有没有办法在 z3 中连接两个列表 类似于 ML 中的 运算符 我正在考虑自己定义它 但我不认为 z3 支持递归函数定义 即 define fun concat List l1 List l2 List ite isNil l1 l2 co
  • Z3 的简化

    declare datatypes SE BROKEN ON OFF declare const s SE declare const a Int simplify or s ON s OFF s BROKEN simplify and g
  • 如何使用 Z3 SMT-LIB 证明 Frobenius 代数中的定理

    我们在弗罗贝尼乌斯代数中证明以下定理 使用以下代码进行证明 Frobenius algebra object A mu eta delta epsilon declare sort A declare sort AA declare sor

随机推荐

  • 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 中 看上面的 可能