Interpolation and SAT-Based Model Checking Revisited: Adoption to Software Verification

Dirk Beyer, Nian-Ze Lee, and Philipp Wendler

This work has been accepted by the Journal of Automated Reasoning and was presented at iPRA 2022 (slides).
A preprint of this article is available for you to download.


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.


Reproduction Information

A reproduction package is available on Zenodo (DOI). The SVN repository contains the revision (corresponding commit on GitLab) of CPAchecker used in the evaluation. The benchmark set can be downloaded from the SV-COMP repository.


Full Results

This table contains the full results of all algorithms evaluated in the paper. You can click on the cells in the status columns to see the respective log output and use the respective tabs to show various plots, e.g., a quantile plot.