问题标签 [z3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
z3 - 使用 Z3 和 SMT-LIB 获得最多两个值
如何使用 smt-lib2 获得公式的最大值?
我想要这样的东西:
当然,'max' 对 smtlibv2 来说是未知的。那么,如何做到这一点呢?
types - 在 Z3 中表示枚举类型之间的子类型关系
在 Z3 中表达枚举类型之间的子类型关系的最佳方式是什么?
具体来说,我想做以下事情:
然后创建一个新的子类型:
因此,有 4 个不同类型的 Animal 常量的断言是 SAT,但断言有 4 个不同类型的 Mammal 常量是 UNSAT。
z3 - 使用 Z3 和 smtlib 计算混合值的配置/模型
如何计算属性值?这是一个例子:
有了这个我会得到2个模型:
现在,我想要的是这样的:
所以,我想得到属性总和大于6的模型:
也许使用数组是实现这一目标的一种方法......
z3 - Z3 中的软/硬约束
如何在 Z3 中表达软约束和硬约束?我从 API 中知道可以有假设(软约束),但是在使用命令行工具时我无法表达这一点。我使用 z3 /smt2 /si 调用它
scala - z3 中使用 scala^z3 的可能配置太多
我猜这主要是一个逻辑问题......
我使用这个 smtlib 公式:
这是这种结构的一个术语(至少在我看来):
我的猜测:结果集看起来像这样:
但它使用 scala^z3 ctx.checkAndGetAllModels():
为什么里面有ad和abcd?是否有可能只得到我期望的结果?
algorithm - 是否可以通过 SMT 求解器找到布尔公式的最优解?
我有一个很大的布尔公式要解决,由于编辑的原因,我必须在此处粘贴图像:
另外,我已经有一个函数area
来测量 4 个整数的维度:area(c,d,e,f)=|c−d|×|e−f|
我想做的不仅仅是弄清楚公式是否可以满足:我正在寻找一个最佳的 6 元组(a,b,c,d,e,f)
,它可以构成大公式TRUE
,并且area(c,d,e,f)
大于或等于任何其他也满足公式的 6 元组的维度。
换句话说,找到Max(area(c,d,e,f))
大公式的主题。
我想知道 SMT 求解器是否可以帮助解决这个问题。我知道Z3
支持quantifiers
,并且能够说布尔表达式是否可以满足。但问题是是否Z3
可以帮助找到函数的最佳解决方案area
。
有谁有想法吗?任何关于 SMT 求解器、Z3 或其他算法的评论将不胜感激......
optimization - Z3中如何优化一段代码?(PI_NON_NESTED_ARITH_WEIGHT 相关)
我有一个代码z3
,旨在解决布尔公式的优化问题
我猜是因为量词和含义,这段代码成本很高。当我在线测试时,它给了我2个警告,最终结果是unknown
:
谁能告诉我这两个警告是否会避免获得良好的结果?有什么办法可以优化这段代码使其运行吗?
scala - Scala^Z3 在解析器错误时终止正在运行的线程
当我使用 Scala^Z3(Z3 3.2 和根据 Scala^Z3 java 库)并得到如下解析器错误:
执行的线程被杀死,我无法通过用 try/catch 或任何东西包围代码来阻止它。
有没有办法阻止这种行为?
z3 - Z3 能否处理包含由 declare-sort/define-sort 引入的排序的数据类型?
我正在尝试定义一个数据类型,其中包含由声明排序或定义排序引入的排序。但是以下尝试会导致错误。
有没有办法做到这一点?
提前致谢。
z3 - 如何在 Z3 (NET API) 中找到建模/检查可满足性所需的内存和时间
我与 Z3 和 Yices 合作了不到一年的时间来解决一些研究问题。使用这些求解器时,我总是需要评估性能,尤其是两件事:建模/检查所需的时间和空间(内存)(可满足性)。在 Z3 的情况下,我没有找到直接找到它们的线索。我尝试使用“statistics”(使用 Z3 NET API 提供的函数“DisplayStatistics”),发现输出如下所示(例如):
编号。冲突:122
编号。决定:2245
编号。传播:27884(二进制:21129)
编号。重启:1
编号。最终检查:1
编号。分钟。点亮:52
编号。添加等式:3766
编号。mk 布尔变量:2782
编号。德尔布尔变量:658
编号。mk 节点:1723
编号。删除节点:78
编号。MK 条款:3622
编号。删除条款:1517
编号。mk bin 条款:3067
编号。MK 点亮:18935
编号。ta 冲突:28
编号。添加行:5091
编号。枢轴:328
编号。断言更低:2597
编号。断言上:3416
编号。断言diseq:1353
编号。绑定道具:787
编号。固定当量:697
编号。偏移量:866
编号。伪 nl.: 34
编号。等式。适配器:820
我不知道如何解释这些值以了解使用的内存/时间。有一些方法可以找到运行时间(使用秒表等计时器类)。但是,在空间要求的情况下,我没有找到任何方法。如果我可以获得建模所需的布尔变量(低级,SAT 求解器)的数量,那么对我来说效果很好。
如果有人能告诉我解决方案,那就太好了。