Polymorphic predicate abstraction

被引:16
作者
Ball, T
Millstein, T
Rajamani, SK
机构
[1] Microsoft Corp, Redmond, WA 98052 USA
[2] Univ Calif Los Angeles, Dept Comp Sci, Los Angeles, CA 90095 USA
来源
ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS | 2005年 / 27卷 / 02期
关键词
algorithms; reliability; verification; software model checking; predicate abstraction; polymorphism;
D O I
10.1145/1057387.1057391
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Predicate abstraction is a technique for creating abstract models of software that are amenable to model checking algorithms. We show how polymorphism, a well-known concept in programming languages and program analysis, can be incorporated in a predicate abstraction algorithm for C programs. The use of polymorphism in predicates, via the introduction of symbolic names for values, allows us to model the effect of a procedure independent of its calling contexts. Therefore, we can safely and precisely abstract a procedure once and then reuse this abstraction across multiple calls and multiple applications containing the procedure. Polymorphism also enables us to handle programs that need to be analyzed in an open environment, for all possible callers. We have proved that our algorithm is sound and have implemented it in the C2BP tool as part of the SLAM software model checking toolkit.
引用
收藏
页码:314 / 343
页数:30
相关论文
共 36 条
[1]  
[Anonymous], 1981, SCI PROGRAMMING, DOI DOI 10.1007/978-1-4612-5983-1
[2]  
[Anonymous], LECT NOTES COMPUTER
[3]  
[Anonymous], 1981, CSL8110 XER PAL ALT
[4]  
[Anonymous], PRINCIPLES PROGRAMMI
[5]  
Ball T, 2000, LECT NOTES COMPUT SC, V1885, P113
[6]  
BALL T, 2001, PROGRAMMING LANGUAGE, P203, DOI DOI 10.1145/378795.378846
[7]  
BALL T, 2001, LECT NOTES COMPUTER, V2057, P103
[8]  
BALL T, 2002, MSRTR200209
[9]  
Ball Thomas., 2001, Tools and Algorithms for the Construction and Analysis of Systems, Lecture Notes in Computer Science, V2031, P268, DOI [10.1007/3-540-45319-9_19, DOI 10.1007/3-540-45319-9_19]
[10]  
Ball VE, 2002, STUD PRODUCT EFF, V2, P1