Journal of Automated Reasoning · 2017 · 62 citations · 32 references
ComputingComputer ScienceFormal MethodsSoftware EngineeringTheory Of ComputationModel CheckingVerificationAbstract DomainsAbstractionBounded Model CheckingPredicate AbstractionProgram VerificationSoftware Verification
Software verification has produced many successful SMT‑based approaches, yet knowledge about their abstract domains and algorithms remains fragmented. This paper aims to give a concise, accessible overview of four SMT‑based verification techniques so they can be studied both theoretically and practically. The authors reformulate bounded‑model checking, k‑induction, predicate abstraction, and lazy abstraction with interpolants within the configurable program analysis framework, implement them in CPAchecker, and evaluate them under identical settings. The evaluation shows how the approaches differ in effectiveness and efficiency across a large benchmark set, leading to conclusions about their relative strengths.
Abstract After many years of successful development of new approaches for software verification, there is a need to consolidate the knowledge about the different abstract domains and algorithms. The goal of this paper is to provide a compact and accessible presentation of four SMT-based verification approaches in order to study them in theory and in practice. We present and compare the following different “schools of thought” of software verification: bounded model checking, k -induction, predicate abstraction, and lazy abstraction with interpolants. Those approaches are well-known and successful in software verification and have in common that they are based on SMT solving as the back-end technology. We reformulate all four approaches in the unifying theoretical framework of configurable program analysis and implement them in the verification framework CPA checker . Based on this, we can present an evaluation that thoroughly compares the different approaches, where the core differences are expressed in configuration parameters and all other variables are kept constant (such as parser front end, SMT solver, used theory in SMT formulas). We evaluate the effectiveness and the efficiency of the approaches on a large set of verification tasks and discuss the conclusions.
32
Graph-Based Algorithms for Boolean Function Manipulation
Bryant · IEEE Transactions on Computers · 1986 · 8.9K citations · Full text
Symbolic execution and program testing
James C. King · Communications of the ACM · 1976 · 3K citations · Full text
Thomas A. Henzinger, Ranjit Jhala, Rupak Majumdar et al. · 2002 · 1.2K citations
Counterexample-guided abstraction refinement for symbolic model checking
Edmund M. Clarke, Orna Grümberg, Somesh Jha et al. · Journal of the ACM · 2003 · 991 citations