2017 · 14 citations · 17 references
ComputingComputer ScienceAlgorithmsSoftware EngineeringTheory Of ComputationModel CheckingSymbolic ExecutionAbstraction RefinementCounterexample-guided Abstraction RefinementCounterexample-guided ProofCraig InterpolationSoftware VerificationSymbolic Execution EnginesSymbolic Model Checking
Ever since the seminal work on SLAM and BLAST, software model checking with counterexample-guided abstraction refinement (CEGAR) has been an active topic of research. The crucial procedure here is to analyze a sequence of program statements (the counterexample) to find building blocks for the overall proof of the program. We can distinguish two approaches (which we name Craig and Newton) to implement the procedure. The historically first approach, Newton (named after the tool from the SLAM toolkit), is based on symbolic execution. The second approach, Craig, is based on Craig interpolation. It was widely believed that Craig is substantially more effective than Newton. In fact, 12 out of the 15 CEGAR-based tools in SV-COMP are based on Craig. Advances in software model checkers based on Craig, however, can go only lockstep with advances in SMT solvers with Craig interpolation. It may be time to revisit Newton and ask whether Newton can be as effective as Craig. We have implemented a total of 11 variants of Craig and Newton in two different state-of-the-art software model checking tools and present the outcome of our experimental comparison.
17
Thomas A. Henzinger, Ranjit Jhala, Rupak Majumdar et al. · 2002 · 1.2K citations
Automatic predicate abstraction of C programs
Thomas Ball, Rupak Majumdar, Todd Millstein et al. · ACM SIGPLAN Notices · 2012 · 703 citations
SAT-based model checking without unrolling
Aaron R. Bradley · 2013 · 491 citations
Thomas A. Henzinger, Ranjit Jhala, Rupak Majumdar et al. · ACM SIGPLAN Notices · 2014 · 483 citations
Automatic predicate abstraction of C programs
Thomas Ball, Rupak Majumdar, Todd Millstein et al. · 2001 · 438 citations