Automatic predicate abstraction of C programs

Citation
T. Ball et al., Automatic predicate abstraction of C programs, ACM SIGPL N, 36(5), 2001, pp. 203-213
Citations number
33
Categorie Soggetti
Computer Science & Engineering
Journal title
ACM SIGPLAN NOTICES
ISSN journal
15232867 → ACNP
Volume
36
Issue
5
Year of publication
2001
Pages
203 - 213
Database
ISI
SICI code
1523-2867(200105)36:5<203:APAOCP>2.0.ZU;2-N
Abstract
Model checking has been widely successful in validating and debugging desig ns in the hardware and protocol domains, However, state-space explosion lim its the applicability of model checking tools, so model checkers typically operate on abstractions of systems. Recently, there has been significant interest in applying model checking to software. For infinite-state systems like software, abstraction is even mo re critical. Techniques for abstracting software are a prerequisite to maki ng software model checking a reality. We present the first algorithm to automatically construct a predicate abstr action of programs written in an industrial programming language such as C, and its implementation in a tool - C2BP. The C2BP tool is part of the SLAM toolkit, which uses a combination of predicate abstraction, model checking , symbolic reasoning, and iterative refinement to statically check temporal safety properties of programs. Predicate abstraction of software has many applications, including detectin g program errors, synthesizing program invariants, and improving the precis ion of program analyses through predicate sensitivity. We discuss our exper ience applying the C2BP predicate abstraction tool to a variety of problems , ranging from checking that list-manipulating code preserves heap invarian ts to finding errors in Windows NT device drivers.