Automatic predicate abstraction of C programs

被引:228
作者
Ball, T
Millstein, T
Majumdar, R
Rajamani, SK
机构
[1] Univ Calif Berkeley, Berkeley, CA 94720 USA
[2] Univ Washington, Seattle, WA 98195 USA
关键词
D O I
10.1145/381694.378846
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Model checking has been widely successful in validating and debugging designs in the hardware and protocol domains, However, state-space explosion limits 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 more critical. Techniques for abstracting software are a prerequisite to making software model checking a reality. We present the first algorithm to automatically construct a predicate abstraction 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 detecting program errors, synthesizing program invariants, and improving the precision of program analyses through predicate sensitivity. We discuss our experience applying the C2BP predicate abstraction tool to a variety of problems, ranging from checking that list-manipulating code preserves heap invariants to finding errors in Windows NT device drivers.
引用
收藏
页码:203 / 213
页数:11
相关论文
共 33 条
[1]  
Ammons Glenn, 1998, P ACM SIGPLAN C PROG, P72, DOI DOI 10.1145/277652.277665
[2]  
[Anonymous], 1981, SCI PROGRAMMING, DOI DOI 10.1007/978-1-4612-5983-1
[3]  
[Anonymous], 1981, CSL8110 XER PAL ALT
[4]  
[Anonymous], POPL 2001
[5]  
[Anonymous], P 26 ACM SIGPLAN SIG
[6]  
Ball T, 2000, LECT NOTES COMPUT SC, V1885, P113
[7]  
BALL T, 2001, LNCS, V2057
[8]  
BALL T, 2000, 200110 MSR
[9]  
BLEI D, VAMPYRE PROOF GENERA
[10]  
BODIK R, 1998, P 25 ACM SIGPLAN SIG, P237