每日处理十亿个 SMT 查询及程序验证中的约束 Horn 子句应用
1. SMT 求解器的选择与评估
在处理大量 SMT 查询时,分析时间大多花费在 SMT 求解器上。为了避免因查询分析时间翻倍而导致用户体验下降,我们采用了在求解器组合中添加新求解器的方法,而非替换现有求解器。具体来说,我们将 cvc5(版本 0.0.7)添加到了由 CVC4、带序列字符串求解器的 Z3 以及基于 Z3 的自定义自动机求解器组成的现有求解器组合中。
起初评估 cvc5 时,我们并未打算在组合中添加新版本的 CVC 求解器,原本期望最新版本的 cvc5 在及时性上能与 CVC4 相当。尽管与 CVC 开发者紧密合作后发现 cvc5 在许多查询上表现更好,但它并非在所有查询中都能满足我们对及时性的要求,这促使我们将 cvc5(版本 0.0.7)添加到 Zelkova 组合求解器中。
不同求解器组合的比较结果显示,Zelkova 在云端采用的组合求解方法是有效的。不过,随着 cvc5(版本 1.0.0)的出现,同样的问题再次浮现:是用最新版本升级现有的 cvc5 版本,还是在组合求解器中再添加一个 CVC 版本?早期实验表明目前尚无明确答案,不同版本 cvc5 的性能比较结果显示,最新版本的 cvc5 并非在性能上单调优于其先前版本。不过,我们希望利用 cvc5(版本 1.0.0)更好的证明生成能力,以增强对 UNSAT 查询正确性的信心。
以下是求解器组合的相关信息表格:
| 求解器组合 | 包含求解器 |
| ---- | ---- |
| 原组合 | CVC4、带序列字符串求解器的 Z3、基于 Z3 的自定义自动机求解器 |
| 新组合
超级会员免费看
订阅专栏 解锁全文
33

被折叠的 条评论
为什么被折叠?



