如何让 Z3 返回最小模型?

2023-12-05

如果我给 Z3 一个像 p | 这样的公式q,我希望 Z3 返回 p=true, q=dont care (或者 p 和 q 切换),但它似乎坚持为 p 和 q 赋值(即使我没有完成转换)通话时亮起Eval())。除了对此感到惊讶之外,我的问题是如果 p 和 q 不是简单的道具怎么办? vars 但昂贵的表达式,我知道通常 p 或 q 将为真。有没有一种简单的方法可以要求 Z3 返回“最小”模型,而不是浪费时间尝试同时满足 p 和 q?我已经尝试过了MkITE但这没有什么区别。或者我必须使用某种策略来强制执行此操作?

谢谢! 附言。我想补充一点,我已经关闭了 AUTO_CONFIG,但 Z3 正在尝试为 or 的两个分支中的常量赋值:例如,在下面的代码片段中,我希望它分配给 path2_2 和 path2_1 或分配给 path2R_2 和 path2R_1,但不能同时分配给两者

   (or (and (select a!5 path2_2) a!6 (select a!5 path2_1) a!7)
       (and (select a!5 path2R_2) a!8 (select a!5 path2R_1) a!9))

Z3有一个称为相关性传播的功能。它描述于本文。它做你想做的事。请注意,在大多数情况下,相关性传播会对性能产生负面影响。在我们的实验中,它仅对包含量词的问题有用(量词推理的成本如此之高,以至于它是值得的)。默认情况下,Z3 将在包含量词的问题中使用相关性传播。否则,它不会使用它。 这是一个关于如何在问题没有量词时打开它的示例(该示例也可以在线获取)here)

x, y = Bools('x y')
s = Solver()
s.set(auto_config=False, relevancy=2)
s.add(Or(x, y))
print s.check()
print s.model()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让 Z3 返回最小模型? 的相关文章

  • Z3:int2bv 的异常

    declare const a Int declare const b Int declare const c BitVec 32 declare const d BitVec 32 assert b bv2int c assert c i
  • 将项目分配给具有功能的组

    我有一个问题 我要将变量分配给集合 每个集合都有可以分配给它的变量的限制 并且每个变量都可以分配给总集合的某个子集 Example a可以成套A or B b可以成套B c可以成套A or B d可以成套A 因此 我们可以有A a d B
  • Z3 Java API 文档

    我已经安装了Z3 API for Java我正在尝试使用它 但找不到任何解释如何使用此 API 的文档 到目前为止我找到的唯一资源是源代码和示例程序 所以我想知道是否有人知道任何其他文档Z3 Java API 目前 Java API 没有单
  • 量词与非量词

    我有一个关于量词的问题 假设我有一个数组 我想计算该数组的数组索引 0 1 和 2 declare const cpuA Array Int Int assert or select cpuA 0 0 select cpuA 0 1 ass
  • Z3 Solver Java API:意外行为

    通过向求解器添加条件 我想使用 solver check 检查是否存在解 因此 我创建了一个简单的示例来寻找 t1 的解决方案 我知道 t1 有一个解 即 t1 0 然而 求解器的状态不是 SATISFIABLE public static
  • 为什么已经弹出的范围会影响后续范围中的 check-sat 时间?

    一般问题 我已经注意到好几次了push pop已经弹出的范围似乎会影响check sat在后续范围的需要 也就是说 假设一个程序具有多个 可能任意嵌套 push pop 作用域 每个作用域都包含一个 check sat 命令 此外 假设第二
  • 从 z3 模型中仅提取一个值

    我正在寻找相当于 z3 源 API获取价值 例如 当我有以下查询时 我可以轻松指定我想要查看哪些值 declare const s1 String declare const s2 String assert 8 str len s1 as
  • 正确 Dafny 方法的 Z3 模型

    对于正确的方法 Z3能否找到该方法验证条件的模型 我原以为不会 但这里有一个例子 该方法是正确的 但验证发现了一个模型 这是 Dafny 1 9 7 的情况 Malte 所说的是正确的 我发现它也得到了很好的解释 Dafny 是健全的 因为
  • 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
  • (Z3Py) 函数声明有什么限制吗?

    函数声明有什么限制吗 例如 这段代码返回 unsat from z3 import def one op op arg1 arg2 if op 1 return arg1 arg2 if op 2 return arg1 arg2 if o
  • 将 IR 转换为 Z3 公式?

    我在 IR 中有一些代码 并且该代码已经是 SSA 形式 现在我正在尝试将此代码转换为SMT公式 然后将其提供给Z3进行一些验证 我有一些疑问 有没有技术论文详细解释如何将SSA IR转换为SMT公式 我四处寻找 一无所获 对于那些计算指令
  • 在 Z3 中证明归纳事实

    我试图在 Microsoft 的 SMT 求解器 Z3 中证明一个归纳事实 我知道 Z3 一般不提供此功能 如Z3 guide http rise4fun com z3 tutorial guide 第 8 节 数据类型 但是当我们限制要证
  • Z3 求解器中 MAxSMT 和用户定义成本函数的组合

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

    我有一些代码 我想在一些策略的帮助下检查它们 因为我有很多if then else声明 我要申请elim term ite tactic 我使用了以下策略 check sat using then simplify arith lhs tr
  • SMT中量化算术推理的局限性是什么?

    我在以下看似微不足道的基准测试中尝试了几种 SMT 求解器 CVC3 CVC4 和 Z3 set logic LIA set info smt lib version 2 0 assert forall x Int forall y Int
  • Z3:检查模型是否唯一

    Z3 有没有办法证明 表明给定模型是唯一的并且不存在其他解决方案 一个小例子来演示 declare const a1 Int declare const a2 Int declare const a3 Int declare const b
  • 如何解决 Z3 中的最小化约束?

    谁能告诉我如何通过 Z3py 实现最小化整数问题 如下所示 我如何定义所有语句 这里所有的变量都是int排序的 Z3中有没有专门的求解器可以解决此类问题 如果有的话 我该如何设置该解算器的配置 Thanks 以下是一些相关 类似的问题和答案
  • 是否可以将一位的位向量转换为 SMTLib2 中的布尔变量?

    我想要一个布尔变量来测试 例如 位向量的第三位是否为 0 位向量的理论允许提取 1 位作为位向量 但不是布尔类型 我想知道我是否可以出演这个角色 谢谢 更新 如果我的问题不清楚 我很抱歉 但 Nikolaj Bjorner 的答案是如何测试
  • Z3 python对待x**2与x*x不同?

    看来Z3 Python接口不喜欢 运算符 它可以处理x x但不能处理x 2 如下例所示 gt gt gt x y x y Reals x y gt gt gt z3 prove Implies x 6 0 x 2 36 0 failed t
  • 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

随机推荐

  • fread 的下载速度比 readfile 慢很多

    我通过 PHP 脚本从 URL 向用户提供下载服务 使用时readfile 我得到了我的连接可以支持的最大下载速度 大约 2 5MB s 但是当我使用fopen fread fclose路线下载速度非常非常慢 大约1 2KB s 这是我的代
  • IntelliJ 找不到任何 LibGDX 包?

    我刚刚切换到 Ubuntu 并且安装了 IntelliJ IDEA 14 社区版 当我导入现有项目时 我发现 IntelliJ 似乎找不到任何 LibGDX 依赖项 我事先安装了 Gradle 我尝试使用 IntelliJ 项目中包含的 G
  • MYSQL select join 多个表并求和

    我有三张桌子 1 master id master barcode name last stock 1 123 abc 15 2 234 bcd 10 3 345 cde 7 4 456 def 11 5 567 efg 20 2 反式输入
  • 如何处理 Android 6 及更高版本上的卸载意图?

    背景 On my 应用程序管理器 应用程序 我处理了卸载意图 以便用户可以使用 root 在后台卸载应用程序 问题 到 Android 5 x 为止 一切都很顺利并且工作正常 但似乎从 Android 6 开始 情况发生了变化 即使日志显示
  • Android 总是使用“tinyALSA”吗?

    今天我发现我可以写一个libaudio so并将其放入我的 Android 文件夹 system library 中以进行自定义音频处理 我的设备是配备 Android 4 2 的 Galaxy Nexus 正在使用tinyAlsa并有一个
  • DataAnnotations.DisplayAttribute.Order 属性是否不适用于 ASP.NET MVC 2?

    我为订单属性 of the 显示属性在我的模型元数据中 MetadataType typeof OccasionMetadata public partial class Occasion private class OccasionMet
  • SQLite 1.0.94 未出现在 EDM 提供程序上

    我注意到这也是 1 0 93 的问题 但似乎也适用于 1 0 94 进一步来说 计算机运行 Windows 8 1 x64 Visual Studio 2013 从 SQLite 官方网站安装 sqlite netFx451 setup b
  • 使用 getComputedStyle().getPropertyValue() 获取边框值? (Mozilla、FF)

    在某些浏览器 即 Firefox 中getComputedStyle getPropertyValue 不报告任何简写 CSS 的内容 例如border 是否有一种非特定代码的方式来获取这些速记 CSS 值 我考虑过制作一个速记 CSS 及
  • 为什么用户代理样式表是最后一个要应用的样式表?

    我见过一个answer 讨论了样式表在网页中的应用顺序 我正在学习认证 我遇到了这个问题 问题 您正在使用 HTML5 和 CSS3 创建应用程序 风格 页面源自五个样式表 款式不是 正确应用于应用程序中的页面 你需要 确定样式表应用的顺序
  • Tweepy 跟踪多个术语

    我正在对推文进行内容分析 我使用 tweepy 返回与某些术语匹配的推文 然后将 N 条推文写入 CSv 文件进行分析 创建文件和获取数据不是问题 但我想减少数据收集时间 目前我正在迭代文件中的术语列表 一旦达到 N 例如 500 条推文
  • 以编程方式在scale_fill_manual ggplot调用中指定颜色

    我想根据特定列中给出的值对 ggplot2 分面图的背景进行着色 利用我之前提出的问题的答案 我能够将我需要的东西拼凑在一起 joran 的回答this问题特别有用 因为它说明了创建单独的数据框以传递给 ggplot 的技术 This al
  • MySQL Group by - 获取计数为零的列

    我尝试谴责其他答案 但没有运气 因此提出了要求 我有一张桌子 还有几张与其他年份类似的桌子 这是表结构 STATUS Year Company Name Certified 2010 Google Cert Denied 2010 Goog
  • 预期第一层具有 x 尺寸,但得到形状为 y 的数组

    我刚刚在节点上启动tensorflow js 我一直在网上上下搜索答案 混乱我有来自的图像数据image1 tf fromPixels img 我尝试将其与其他图像数据一起输入xs tf tensor image1 image2 困惑在于无
  • 获取请求IP的正确方法是什么[重复]

    这个问题在这里已经有答案了 我发现了一些在 servlet 中获取 ip 的不同方法 但我不知道哪一个是正确的以及为什么 1 request getHeader X Real IP 2 String ip request getHeader
  • BETWEEN 查询返回零或一

    我有这样的疑问 SELECT fecha BETWEEN 1390950000 AND 1391126400 GROUP CONCAT CONCAT WS idItem nombreItem cantidad diferencia ORDE
  • mod_rewrite:从 URL 中删除查询字符串?

    我正在尝试使用 htaccess 进行以下重定向 301 page 1 重定向到 其中 是通配符 基本上 我只是想阻止任何人访问 URL 末尾带有 page 1 的页面 而是将他们定向到相同的 url 减去 page 1 有没有快速的方法来
  • 如何在单页网站的导航中实现活动状态

    我正在开发一个一页网站 在这个网站中 我希望在导航栏中的活动部分或 页面 带有下划线 目前 我点击链接后会显示带下划线的链接 但是 当我单击转到另一个活动 页面 时 它仍然带有下划线 以下是在 HTML 中设置导航的方式 div class
  • 有没有办法将 @mention 插入到使用 pyfacebook 发布的 Facebook 状态更新中?

    我的应用程序中有一些如下代码 message Hi John Doe postID fb stream publish message loader render to string wall post phtml message mess
  • /dev 与 /exec 文档和错误处理

    让我们从没有太多文档的事实开始 dev vs exec端点 如果你有一些我找不到的有价值的信息 我非常乐意看到它 没有讽刺 据我所知 dev 是当前的编辑版本 exec 是脚本的最后发布版本 或者如果您选择旧版本 这告诉我 我应该能够编辑我
  • 如何让 Z3 返回最小模型?

    如果我给 Z3 一个像 p 这样的公式q 我希望 Z3 返回 p true q dont care 或者 p 和 q 切换 但它似乎坚持为 p 和 q 赋值 即使我没有完成转换 通话时亮起Eval 除了对此感到惊讶之外 我的问题是如果 p