检索 Z3Py 中的值会产生意外结果

2023-12-30

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

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

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 = 2]。这肯定不是真的(采取x = 1)。怎么了?

另外:通过指定delta = RealVal('1'),一个反例是x = 0,即使当x = 0应该避免。


您的常量被强制为整数。而不是写:

1/5000

你应该写:

1.0/5000.0

您可以通过以下方式查看生成的表达式:

print s.sexpr()

这会提醒您注意这个问题。

注意。编写常量时,明确类型始终很重要。请参阅此答案,了解该主题的变体,该变体可能会导致进一步的问题:https://stackoverflow.com/a/46860633/936310 https://stackoverflow.com/a/46860633/936310

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

检索 Z3Py 中的值会产生意外结果 的相关文章

  • Z3 Solver Java API:意外行为

    通过向求解器添加条件 我想使用 solver check 检查是否存在解 因此 我创建了一个简单的示例来寻找 t1 的解决方案 我知道 t1 有一个解 即 t1 0 然而 求解器的状态不是 SATISFIABLE public static
  • 使用 C++ API 进行数组选择和存储

    我正在使用 z3 v 4 1 我正在使用 C API 并尝试在上下文中添加一些数组约束 我在 C API 中没有看到选择和排序函数 我尝试混合使用 C 和 C API 在示例中array example1 如果我将上下文变量从Z3 Cont
  • 避免 Z3 中的量词

    我正在尝试 Z3 其中结合了算术 量词和等式的理论 这似乎不是很有效 事实上 在可能的情况下用所有实例化的基础实例替换量词似乎更有效 考虑以下示例 其中我对函数的唯一名称公理进行了编码f需要两个参数Obj并返回解释的排序S 该公理指出 每个
  • 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 的新手 我试图了解它是如何工作的 以及它能做什么和不能做什么 我知道Z3至少有some通过幂 运算符支持指数 请参阅Z3py 使用 pow 函数返回未知方程 https stackoverflow com questions 3
  • 在 Z3 中定义带有约束的代数数据类型

    我看过一些在线材料 用于定义代数数据类型 例如 Z3 中的 IntList 我想知道如何定义具有逻辑约束的代数数据类型 例如 如何定义代表正整数的 PosSort SMT中的全部功能 在 SMT 中函数总是完整的 这提出了如何对部分函数 例
  • Z3 -smt2 -in:获取Z3版本

    使用选项启动后可以获得Z3的版本吗 smt2 in 就像是 get z3 version Z3 4 3 2 x64 Desired reply 在SMT LIB 2 0前端 我们可以使用命令 get info version 该命令是标准的
  • 如何将 Z3 与 C++ 结合使用

    我想将 Z3 与 C 一起使用 并且我遵循了安装指南 使用 Visual Studio 命令提示符在 Windows 上构建 Z3 https github com Z3Prover z3 building z3 on windows us
  • 将 IR 转换为 Z3 公式?

    我在 IR 中有一些代码 并且该代码已经是 SSA 形式 现在我正在尝试将此代码转换为SMT公式 然后将其提供给Z3进行一些验证 我有一些疑问 有没有技术论文详细解释如何将SSA IR转换为SMT公式 我四处寻找 一无所获 对于那些计算指令
  • 为什么 Z3 中的运算符“/”和“div”给出不同的结果?

    我试图用两个整数来表示一个实数 并将它们用作实数的分子和分母 我写了以下程序 declare const a Int declare const b Int declare const f Real assert f a b assert
  • Z3 将数组的默认值设置为零

    我正在尝试求解数组表达式的模型 其中数组的默认值等于 0 例如 我正在尝试解决这个例子 但我总是得到未知的结果 declare const arr Array Int Int declare const arr2 Array Int Int
  • Z3:检查模型是否唯一

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

    是否可以使用 C API 在运行时更改求解器的超时值 为了设置超时 可以执行以下操作 Z3 config cfg Z3 mk config Z3 set param value cfg SOFT TIMEOUT 10000 set time
  • Z3:执行矩阵运算

    我的情况 我正在开展一个项目 需要 证明正确性3D 矩阵变换 http rodrigo silveira com 3d programming transformation matrix tutorial UU65YicWsYZ涉及矩阵运算
  • Z3统计中内存使用量的单位是什么?

    z3 统计中测量内存使用情况的单位是什么 是MB还是KB 记忆到底意味着什么 是执行期间的最大内存使用量还是所有分配的总和 它是执行期间最大堆大小的近似值 并通过 cmd context cpp 中的以下函数将其添加到统计对象中 void
  • 能够删除特定约束的增量 SMT 求解器

    是否有增量 SMT 求解器或用于某些增量 SMT 求解器的 API 我可以在其中增量添加约束 在其中我可以通过某个标签 名称唯一地标识每个约束 我想唯一地标识约束的原因是这样我可以稍后通过指定标签 名称来删除它们 需要放弃约束是因为我之前的
  • 如何解决 Z3 中的最小化约束?

    谁能告诉我如何通过 Z3py 实现最小化整数问题 如下所示 我如何定义所有语句 这里所有的变量都是int排序的 Z3中有没有专门的求解器可以解决此类问题 如果有的话 我该如何设置该解算器的配置 Thanks 以下是一些相关 类似的问题和答案
  • 通过 C/C++ API 对 Z3 中的 LIA 进行量词消除

    我想使用 Z3 通过 C C API 消除线性整数算术公式中的量词 考虑一个简单的例子 Exists x x 0 我尝试这样做 context ctx ctx set ELIM QUANTIFIERS true expr x ctx int
  • 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

随机推荐

  • jQuery - 当滑动面板显示时绝对定位 div 的“左”位置动画

    我在屏幕左侧有一个隐藏面板 单击位于屏幕左侧的 选项卡 即可滑入视图 我需要面板滑过现有页面内容的顶部 并且需要选项卡随之移动 所以两者在css中都是绝对定位的 一切工作正常 除了我需要选项卡 以及选项卡容器 在面板显示时向左移动 因此它似
  • 从 azure web 应用程序发送 http 请求到我的机器

    我创建了一个发送 http 请求的 azure Web 应用程序 axios post http mypublicip 3000 write Name content data 1 同时我的电脑有一个正在运行的 Express 服务器 ap
  • 如何在 ASP.NET MVC 中生成完整的trace.axd?

    在我的应用程序上 启用后ASP NET 跟踪 http msdn microsoft com en us library y13fw6we VS 71 aspx在 ASP NET MVC 应用程序中 时间计算统计数据相差 5000 倍 我的
  • AF网络和网络错误

    我正在使用AFNetworking框架来发出多个 JSON Web 请求 在开发过程中 如果我未能提供所需的参数或服务开发人员损坏了某些东西 我会收到500 error 的错误块AFJSONRequestOperation正确地抓住了它 但
  • 在 Life ray 中自定义站点管理员角色的权限?

    我想自定义站点管理员角色权限 即我需要启用一项功能来创建用户以在相应站点下进行站点管理 我怎样才能做到这一点 我需要用 Hook 来实现它还是需要创建 EXT 或者任何其他更简单的方法来实现这一目标 我需要在相应站点下启用用户创建并为站点管
  • 著名:滚动视图中的滚动视图

    我正在尝试创建一个类似于 BBC 新闻本机应用程序的布局 使用known js 一个垂直的ScrollView 其中有许多水平的ScrollView 我已经 工作 到了一切都渲染并且水平滚动条完美工作的程度 我的问题是 如果用户在水平 Sc
  • 重命名文件扩展名而不指定

    我正在创建一个 bash shell 脚本 它将重命名文件扩展名 而无需指定旧的文件扩展名 如果我在 Linux 的终端中输入 change foo 它会将所有文件扩展名更改为 foo 假设我有四个文件 file1 txt file2 tx
  • 使用 Object.assign 更新嵌套对象

    我有以下对象 当用户单击按钮时 该对象将被分配一个新值 state title id imageId boarding id test work title id 我更新的对象如下所示 state title My img id 1234
  • 服务意图必须明确:意图

    我现在有一个应用程序 我在其中通过广播接收器 MyStartupIntentReceiver 调用服务 广播接收器中调用服务的代码是 public void onReceive Context context Intent intent I
  • 从 Razor 调用 ServiceStack 服务

    这里有一点边缘情况 我需要从 razor 同一网站 调用服务堆栈服务 现在我正在做 CheckIfConfiguredResponse aResponse new JsonServiceClient http localhost 2000
  • 在使用 AngularJS 的 Chrome 应用程序中,我可以直接将 ngSrc 指令用于内部图像吗?

    我正在使用 AngularJS 编写一个 Chrome 应用程序 我知道 当访问外部图像时 您必须执行跨源 XMLHttpRequest 并将它们作为 blob 提供 我有一堆内部图像 本地应用程序资源 它们遵循我想要在 ngRepeat
  • 选择容器后 JProfiler 远程进程列表为空

    我正在使用 JProfiler 12 并尝试通过 SSH 连接到 Docker 容器中的远程 JVM 进程 我已按照此处的说明进行操作 https www ej technologies com products jprofiler wha
  • 仅使用一元绑定语法表达 do 块

    据我所知 doHaskell 中的块只是一元绑定运算符的某种语法糖 例如 可以转换 main do f lt readFile foo txt print f print Finished to main readFile foo txt
  • uitableviewcell 的数据在滚动时相互重叠

    我有一个包含四个部分的表格视图 所有部分都有两个文本字段和一个位于不同行的标签 我添加了一些文本作为文本字段的占位符 最初 数据看起来很好 但是当我滚动表格视图时 单元格开始出现重叠的数据 My Code UITableViewCell t
  • 我如何检查是否已收到 Playwright 的回复?

    使用 Java 我试图等待对我正在等待的 Javascript 脚本之一的响应 我已经发现我可以使用等待响应 https playwright dev java docs api class page page wait for respo
  • React.js 中的 setState 与 refs

    我在反应中创建了选项卡 现在单击我必须更改选项卡的类 选项卡类可能如下 1 active2 上一个活动3 已选择 单击选项卡类后将变为active并在使用前检查是否已选择alreadySelected类和active最后一个活动选项卡中的类
  • 如何将多个 PNG 合并为一个大 PNG 文件?

    我有大约 6000 个 PNG 文件 256 256 像素 并希望将它们组合成一个大 PNG 以编程方式保存所有这些文件 最好 最快的方法是什么 目的是在纸上打印 因此使用某些网络技术不是一种选择 拥有一个单一的图片文件将消除许多使用错误
  • Go 中的 exec.Command() 与环境变量

    我想在 Go 中运行以下代码 out err exec Command echo PATH Output 结果是 PATH 而不是 PATH bin 的预期值 为什么 我怎样才能得到期望值 shell 没有解释您的命令 这就是预期的变量替换
  • {} + "" 与 "" + {} - 加法的一致性 [重复]

    这个问题在这里已经有答案了 前几天我在 Reddit 上偶然发现了这个 海报指出 等于0 而类似的 等于一个空 object Object 正常的数学规则告诉我这很奇怪 但为什么会这样呢 代币 语句的开头可能意味着对象文字的开始 也可能意味
  • 检索 Z3Py 中的值会产生意外结果

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