BLITZ: Compositional bounded model checking for real-world programs
Authors:
- 1 November 2013
- conference paper
- Published by Institute of Electrical and Electronics Engineers (IEEE)
- p. 136-146
Abstract
Bounded Model Checking (BMC) for software is a precise bug-finding technique that builds upon the efficiency of modern SAT and SMT solvers. BMC currently does not scale to large programs because the size of the generated formulae exceeds the capacity of existing solvers. We present a new, compositional and property-sensitive algorithm that enables BMC to automatically find bugs in large programs. A novel feature of our technique is to decompose the behaviour of a program into a sequence of BMC instances and use a combination of satisfying assignments and unsatisfiability proofs to propagate information across instances. A second novelty is to use the control- and data-flow of the program as well as information from proofs to prune the set of variables and procedures considered and hence, generate smaller instances. Our tool BLITZ outperforms existing tools and scales to programs with over 100,000 lines of code. BLITZ automatically and efficiently discovers bugs in widely deployed software including new vulnerabilities in Internet infrastructure software.Keywords
This publication has 15 references indexed in Scilit:
- Alternate and Learn: Finding Witnesses without Looking All overLecture Notes in Computer Science, 2012
- A Solver for Reachability Modulo TheoriesLecture Notes in Computer Science, 2012
- Interpolation-Based Software Verification with Wolverine2011
- SAT-Based Model Checking without Unrolling2011
- Compositional may-must program analysisACM SIGPLAN Notices, 2010
- Lazy Annotation for Program Testing and Verification2010
- Demand-Driven Compositional Symbolic Execution2008
- Relevance heuristics for program analysis2008
- Z3: An Efficient SMT Solver2008
- An axiomatic basis for computer programmingCommunications of the ACM, 1969