z3 - 当断言 0 除以 0 为 1 时,z3 返回未知
问题描述
我正在尝试文章Z3: a tutorial中的示例。有一个例子展示了所有的函数都是总的,包括“div”:
(push)
(assert (= 1 (div 0 0)))
(check-sat)
;sat (pop)
我注意到 z3 版本 4.8.5 根据是否使用“推送”返回不同的结果。
使用下面的代码,z3 返回未知:
(get-info :version)
;(push)
(assert (= 1 (div 0 0)))
(check-sat)
z3 的输出是:
(:version "4.8.5 - build hashcode 8c085f1a1850")
unknown
相反,使用下面的代码,z3 返回 sat:
(get-info :version)
(push)
(assert (= 1 (div 0 0)))
(check-sat)
(get-model)
z3 的输出是:
(:version "4.8.5 - build hashcode 8c085f1a1850")
sat
(model
)
在rise4fun教程中,它说“命令push通过保存当前堆栈大小创建一个新范围”,似乎“push”的使用应该不会导致不同的结果,因为只有一个断言?
解决方案
严格来说unknown
并不sat
矛盾:求解器可以随时退出并说unknown
. 例如,如果您明确使用策略,则可能会发生这种行为。
但是你是绝对正确的,这push
是导致这种差异的奇怪现象。请在 z3 github 问题站点提交工单:https ://github.com/Z3Prover/z3/issues ,让我们知道您发现了什么!
推荐阅读
- memory-management - Linux内核中的“FOLL_FORCE”是什么意思?
- php - Laravel 身份验证“记住我”令牌
- jquery - jQuery require 返回一个对象而不是一个函数
- scala - 为什么在 Scala 中的 f 有界多态性通常使用上限类型和自类型来实现
- laravel - 有没有办法在laravel中具有“存在”条件的多个图片网址中选择一个网址?
- python - Python:读取现有 Excel 文件并选择不同的下拉值
- python - 使用 Python 和 sqlite 搜索 searchQuerys 列表中的所有值并获取出现在标题或内容列中的所有值
- android-studio - 更喜欢 const 文字作为 android studio 中 @immutable 类的构造函数的参数
- reactjs - webpack5 配置不起作用
- python - 在 python 中通过快速正弦变换求解一维 BVP: