【发布时间】:2015-02-19 09:52:40
【问题描述】:
看完Z3的strategies guide和Leo的this answer,我以为(check-sat)和(check-sat-using smt)是等价的。然而,当针对我们的测试套件(230 个 SMTLIB2 文件)运行 Z3 4.3.2 三次时,(check-sat) 需要 198s/192s/195s 秒,而(check-sat-using smt) 需要 275s/283s/270s。我也试过nightly build Z3 4.4.0 d3fb5f2a4cda,差别也差不多。
为什么会这样?
更多可能相关的信息:
- Windows 7 x64、Z3 x64
- 我们所有的测试都配置了
auto_config false和smt.mbqi false - 都使用量词和未解释的函数
- 有些使用(非线性)int 和/或实数算术
- 所有人都大量使用 push-pop 块
编辑:我最终想做的是为 一些 check-sat 调用设置超时,但不是全部。 AFAIK,check-sat 本身是不可能的,但check-sat-using (using-params smt :soft_timeout $timeout) 应该可以工作。对吗?
【问题讨论】:
-
仅供参考,在 Z3 的当前 master 分支中,使用
(check-sat-using default)可以获得您想要的效果。见this question。
标签: z3