Skip to main content
QUICK REVIEW

[论文解读] Interpolation and SAT-Based Model Checking Revisited: Adoption to Software Verification

Dirk Beyer, Nian-Ze Lee|arXiv (Cornell University)|Aug 9, 2022
Software Reliability and Analysis Research被引用 10
一句话总结

本文重新审视了McMillan于2003年提出的基于插值的模型检测(IMC)算法——该算法此前仅限于硬件验证——并成功通过大块编码与SMT求解,将其适配于软件验证。在最大的公开C语言程序验证基准上评估,IMC优于其他基于插值的方法,解决了其他方法在15分钟CPU时间或15 GB内存限制下均失败的7个独特任务,证明了其在软件验证中的竞争力与互补性。

ABSTRACT

The article "Interpolation and SAT-Based Model Checking" (McMillan, 2003) describes a formal-verification algorithm, which was originally devised to verify safety properties of finite-state transition systems. It derives interpolants from unsatisfiable BMC queries and collects them to construct an overapproximation of the set of reachable states. Although 20 years old, the algorithm is still state-of-the-art in hardware model checking. Unlike other formal-verification algorithms, such as k-induction or PDR, which have been extended to handle infinite-state systems and investigated for program analysis, McMillan's interpolation-based model-checking algorithm from 2003 has not been used to verify programs so far. Our contribution is to close this significant, two decades old gap in knowledge by adopting the algorithm to software verification. We implemented it in the verification framework CPAchecker and evaluated the implementation against other state-of-the-art software-verification techniques on the largest publicly available benchmark suite of C safety-verification tasks. The evaluation demonstrates that McMillan's interpolation-based model-checking algorithm from 2003 is competitive among other algorithms in terms of both the number of solved verification tasks and the run-time efficiency. Our results are important for the area of software verification, because researchers and developers now have one more approach to choose from.

研究动机与目标

  • 通过将McMillan 2003年提出的基于插值的模型检测(IMC)算法适配于软件验证,弥合形式化验证领域长达20年的技术空白。
  • 评估原本专为有限状态硬件系统设计的经典IMC算法,在无限状态软件系统中是否依然具有可行性与有效性。
  • 证明高级SMT求解技术可实现IMC在真实C程序上的可扩展应用。
  • 在大型基准测试套件上,将IMC的性能与有效性与其他最先进的软件验证技术进行比较。
  • 提供一个全新的、开源的CPACHECKER实现,作为未来基于插值的软件验证研究的基准。

提出的方法

  • 采用McMillan原始的IMC算法,通过大块编码从C程序中提取转移关系,无需符号化程序计数器。
  • 从不可满足的BMC查询中构造插值式,以过近似可达状态,并重用先前的插值式以提升泛化能力。
  • 将算法集成至CPACHECKER框架中,以确保与其它最先进的验证技术进行公平比较。
  • 使用SMT求解器处理展开程序路径所产生的复杂公式,利用现代求解器的性能实现可扩展性。
  • 在SV-COMP '22 C语言安全验证基准套件上开展系统性基准测试,以评估其有效性与效率。
  • 采用BENCHEXEC进行精确的CPU时间和内存使用量测量,以确保结果可复现。

实验结果

研究问题

  • RQ1尽管IMC算法最初是为有限状态系统设计的,它是否能有效适配于软件验证?
  • RQ2在求解任务数量与运行时效率方面,IMC与其它最先进的基于SMT的软件验证技术相比表现如何?
  • RQ3IMC同时使用初始状态的插值式与先前插值式,是否能生成更高质量的抽象并实现比路径式方法(如IMPACT)更好的泛化能力?
  • RQ4是否存在某些程序,IMC能够验证而其他基于插值的方法因资源限制无法验证?
  • RQ5将IMC集成到CPACHECKER中,是否能提供一个稳定、可重用且开源的基准,以支持未来基于插值的软件验证研究?

主要发现

  • IMC在有效性和效率方面均表现出具有竞争力的性能,在SV-COMP '22基准套件上求解的验证任务数量与其它最先进的方法相当。
  • IMC唯一解决了7个其他方法在15分钟CPU时间或15 GB内存限制下均失败的C语言验证任务,证明其具备处理复杂程序的独特能力。
  • IMC在插值上的计算开销低于IMPACT,表明其生成的插值式质量更高,并在程序路径间实现了更好的泛化。
  • 大块编码的使用使得在无需显式符号化程序计数器的情况下,仍能有效提取转移关系,简化了编码过程,同时保持了正确性。
  • CPACHECKER中的实现稳定且可重用,所有软件、输入和结果均公开,便于复现与进一步研究。
  • 结果表明,McMillan 2003年的算法在现代软件验证中依然具有相关性与有效性,为现有技术提供了宝贵的补充。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。