Z3 将数组的默认值设置为零

2024-03-08

我正在尝试求解数组表达式的模型,其中数组的默认值等于 0。

例如,我正在尝试解决这个例子,但我总是得到未知的结果

(declare-const arr (Array Int Int))
(declare-const arr2 (Array Int Int))
(declare-const a Int)
(declare-const b Int)

(assert (forall ((x Int)) (= (select arr x) 0)))

(assert (> a 0))
(assert (<= a 10))

(assert (= arr2 (store arr a 1337)))

(assert (> b 0))
(assert (<= b 10))


(assert (= (select arr2 b) 0))

(check-sat)
(get-model)

帕特里克关于不使用量词的建议是正确的!他们会让你的生活变得更加艰难。不过,您很幸运,因为 z3 支持您的用例的常量数组,这很常见。语法是:

(assert (= arr ((as const (Array Int Int)) 0)))

这可以确保arr其所有条目将作为0;不需要量化,z3 在内部处理得很好。

因此,您的基准将是:

(declare-const arr (Array Int Int))
(declare-const arr2 (Array Int Int))
(declare-const a Int)
(declare-const b Int)

(assert (= arr ((as const (Array Int Int)) 0)))

(assert (> a 0))
(assert (<= a 10))

(assert (= arr2 (store arr a 1337)))

(assert (> b 0))
(assert (<= b 10))


(assert (= (select arr2 b) 0))

(check-sat)
(get-model)

这很快就解决了。这样,您就可以让整个数组以0,并修改您感兴趣的范围;它可以像往常一样依赖于变量,并且不需要提前知道。

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

Z3 将数组的默认值设置为零 的相关文章

  • 如何在z3py中连接正则表达式?

    我想构造一个正则表达式 例如a b c z3中有一个函数re 可以将3个正则表达式连接在一起 所以我可以构造a b c 如下所示 assert str in re aabbc re re str to re a re str to re b
  • 在 Z3-Python 中,执行模型搜索时出现“builtin_function_or_method' object is not iterable”

    我正在探索在 Z3 Python 中执行 SAT 求解的快速方法 为此 我尝试模仿第 5 1 章的结果https theory stanford edu nikolaj programmingz3 html sec blocking eva
  • 避免 Z3 中的量词

    我正在尝试 Z3 其中结合了算术 量词和等式的理论 这似乎不是很有效 事实上 在可能的情况下用所有实例化的基础实例替换量词似乎更有效 考虑以下示例 其中我对函数的唯一名称公理进行了编码f需要两个参数Obj并返回解释的排序S 该公理指出 每个
  • 从 z3 模型中仅提取一个值

    我正在寻找相当于 z3 源 API获取价值 例如 当我有以下查询时 我可以轻松指定我想要查看哪些值 declare const s1 String declare const s2 String assert 8 str len s1 as
  • 检索 Z3Py 中的值会产生意外结果

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

    我正在使用 Z3 求解器的 python API 来搜索优化的时间表 它工作得很好 除了有时即使对于小图也非常慢 但有时非常快 原因可能是我的调度问题的约束相当复杂 我试图加快速度 并偶然发现了一些关于增量解决方案的文章 据我了解 您可以使
  • 在 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
  • 任意长度的通用位向量类型

    出于与此处描述相同的原因 用户定义的未解释函数 https stackoverflow com questions 7740556 equivalent of define fun in z3 api 我想定义我自己的未解释函数 bvred
  • 在 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 中证明归纳事实

    我试图在 Microsoft 的 SMT 求解器 Z3 中证明一个归纳事实 我知道 Z3 一般不提供此功能 如Z3 guide http rise4fun com z3 tutorial guide 第 8 节 数据类型 但是当我们限制要证
  • 目标没有战术支持

    我有一些代码 我想在一些策略的帮助下检查它们 因为我有很多if then else声明 我要申请elim term ite tactic 我使用了以下策略 check sat using then simplify arith lhs tr
  • 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
  • 为什么 Z3 对于很小的搜索空间来说很慢?

    我正在尝试制作一个 Z3 程序 在 Python 中 它生成执行某些任务的布尔电路 例如 添加两个 n 位数字 但性能非常糟糕 以至于对整个解决方案空间进行强力搜索将导致快一点 这是我第一次使用 Z3 所以我可能会做一些影响我性能的事情 但
  • Z3 Java API 定义函数

    我需要您帮助使用 Z3 Java API 定义函数 我尝试解决这样的问题 与 z3 exe 进程一起工作正常 declare fun a Real declare fun b Real declare fun c Bool define f
  • 是否可以将一位的位向量转换为 SMTLib2 中的布尔变量?

    我想要一个布尔变量来测试 例如 位向量的第三位是否为 0 位向量的理论允许提取 1 位作为位向量 但不是布尔类型 我想知道我是否可以出演这个角色 谢谢 更新 如果我的问题不清楚 我很抱歉 但 Nikolaj Bjorner 的答案是如何测试
  • 如何获取 Z3 上下文的所有可用配置设置的列表?

    net API 具有以下 Context 构造函数 Context Dictionary lt string string gt settings 如何获取所有可能设置的列表 具体来说 我对如何要求 Z3 生成 unsat 核心感兴趣 即相
  • z3 中的列表串联

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

随机推荐

  • Django 测试:测试表单字段的初始值

    我有一个观点 应该根据 GET 值为表单字段设置初始值 我想测试一下 我目前正在使用Django的测试客户端 http docs djangoproject com en dev topics testing module django t
  • 是否有命令行的版本控制系统抽象?

    现在 如此多的小型开源项目通过其版本控制系统 发布 我有数十个经常需要的存储库 通常位于多台计算机上 我正在寻找某种方法来轻松管理这个问题 如果我自己设计它 我将有一个列出所有远程存储库的文件 以及一个自动从它们中提取的命令行客户端 这个或
  • Express & Handlebars 的全球属性

    我使用 Handlebars 使用express3 handlebars 作为模板 使用 Passport 在 NodeJS 应用程序中进行身份验证 一切都很好 但我想知道是否有一种方法可以将 Passport 创建的 req user 对
  • 准备卸载,就像 Inno Setup 中的准备安装页面一样

    我需要检查多个 exe 文件是否正在运行 通过安装程序安装 然后提示用户关闭它们 如果它们正在运行 如果没有则取消卸载过程 有没有办法在安装中为卸载程序提供类似 准备 页面之类的内容 或者我该如何实施这样的检查 甚至一个消息框也将是完美的
  • Shapefile 到 TopoJSON 转换问题

    I m trying to convert a shapefile to GeoJSON and then to TopoJSON as described in Let s Make a Map http bost ocks org mi
  • 删除最后一次出现的字符

    A 今天在 talkstats com 上发现了这个问题 http www talkstats com showthread php 36897 regular expressions其中发布者想要使用正则表达式删除字符串的最后一个句点 而
  • 刷新jsp文件时线程锁定

    在重负载下 当 GZipping 和解压缩 JSP 文件时 我看到很多线程被锁定 线程转储如下所示 似乎来自大小为 14Kb 的 header jsp http 0 0 0 0 8080 304 daemon prio 3 tid 0x00
  • ASP.NET 页面上的 MS SQL 超时,但 SSMS 中没有

    当存储过程在我们的 ASP NET 页面之一上执行时 它在 SQL Server 上超时 但出现异常Timeout expired The timeout period elapsed prior to completion of the
  • 在 Python 中使用带有正则表达式的 OR 语句时防止列表中出现空元素

    我正在使用正则表达式从网站编译价格 PriceFinder re compile lt n s b d d 2 lt lt FF0000 gt b d d 2 lt Price re findall PriceFinder str soup
  • Cypher - 删除具有特定值的所有属性

    我正在寻找一种方法来删除数据库中任何节点的每个属性 使用 Cypher 具有特定值 Context我从关系表中获取了一个包含大量 NULL 值的 csv 批量文件 LOAD CSV将它们作为价值观 删除它们 用 csv 文件中的空 替换它们
  • 使用 ssh 检查远程主机上是否存在文件

    我想检查远程主机上是否存在某个文件 我试过这个 if ssh user localhost p 19999 e home user Dropbox path Research and Development Puffer and Traps
  • SQLSRV PHP for SQL Server 不是有效的 Win32 应用程序

    这是我的设置 Windows Server 2008 R2 64 位 阿帕奇 2 4 4 64 位 PHP 5 4 15 32位 64位仍处于实验阶段 线程安全 VC9编译器 Microsoft SQL Server 2012 本机客户端
  • 锚元素的 ping 属性跨浏览器如何?

    a 是 HTML5 锚元素中一个相对较新 相对未知的属性 它的跨浏览器兼容性如何 我查看了 MDN 等在线资源http caniuse com http caniuse com 但没有发现任何表明浏览器支持的信息 我想知道这是否是 2014
  • 在docker中安装.net框架4.7.2

    我是 Net 环境的新手 我正在尝试为我的公司实施 docker 他们之前使用的是 4 5 所以我在 dockerfile 中使用了以下语句 RUN Install WindowsFeature NET Framework 45 ASPNE
  • 如何设置Spark执行器内存?

    我已经设定Spark executor 内存 to 2048m 并且在 UI 环境 页面中 我可以看到该值已正确设置 但是在 Executors 页面中 我看到只有1个执行器 它的内存是265 4MB 非常奇怪的价值 为什么不是256MB
  • const char* 连接

    我需要连接两个 const 字符 如下所示 const char one Hello const char two World 我该怎么做呢 我通过了这些char 来自具有 C 接口的第三方库 所以我不能简单地使用std string反而
  • 显示所有 messageHeader 的值

    我想知道显示所有 MessageHeaders 服务器端的最佳方式是什么 实际上我知道的唯一方法如下 OperationContext Current IncomingMessageHeaders GetHeader
  • 将 Powershell 核心设置为 Windows/Linux 上的默认 GNU Make shell

    在 Windows 上的 makefile 中 使用以下 make 版本 PS C projects gt make version GNU Make 4 1 Built for i686 w64 mingw32 Copyright C 1
  • 一般:Angular2 中的异步验证

    从几个晚上开始 我就开始在 augular2 中进行表单验证 所有基本案例都很容易实现并且工作正常 但我坚持使用异步验证 我创建了一个非常小的例子http plnkr co edit Xo8xwJjhlHkXrunzS8ZE http pl
  • Z3 将数组的默认值设置为零

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