ACM Home Page
Please provide us with feedback. Feedback
Polymorphic predicate abstraction
Full text PdfPdf (318 KB)
Source ACM Transactions on Programming Languages and Systems (TOPLAS) archive
Volume 27 ,  Issue 2  (March 2005) table of contents
Pages: 314 - 343  
Year of Publication: 2005
ISSN:0164-0925
Authors
Thomas Ball  Microsoft Research, Redmond, WA
Todd Millstein  University of California, Los Angeles, CA
Sriram K. Rajamani  Microsoft Research, Redmond, WA
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 9,   Downloads (12 Months): 92,   Citation Count: 2
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1057387.1057391
What is a DOI?

ABSTRACT

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.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

1
 
2
 
3
 
4
 
5
Ball, T. and Rajamani, S. K. 2002a. Generating abstract explanations of spurious counterexamples in C programs. Tech. Rep. MSR-TR-2002-09. Microsoft Research, Jan.
6
7
 
8
9
10
11
 
12
 
13
Detlefs, D., Nelson, G., and Saxe, J. B. 2003. Simplify: A theorem prover for program checking. HP Labs Technical Report HPL-2003-148.
 
14
 
15
 
16
Engler, D., Chelf, B., Chou, A., and Hallem, S. 2000. Checking system rules using system-specific, programmer-written compiler extensions. In OSDI 00: Operating System Design and Implementation. Usenix Association.
17
18
 
19
 
20
 
21
 
22
Havelund, K. and Pressburger, T. 1998. Model checking Java programs using Java PathFinder. Int. J. Softw. Tools Tech. Trans. 2, 4 (Apr.).
23
24
 
25
 
26
27
 
28
Milner, R. 1978. A theory of type polymorphism in programming. J. Comput. Syst. Sci. 17, 348--375.
 
29
 
30
Morris, J. M. 1982. A general axiom of assignment. In Theoretical Foundations of Programming Methodology. Lecture Notes of an International Summer School, Reidel, pp. 25--34.
 
31
Nelson, G. 1981. Techniques for program verification. Tech. Rep. CSL81-10. Xerox Palo Alto Research Center, Palo Alto, Calif.
32
 
33
 
34
Sharir, M. and Pnueli, A. 1981. Two approaches to interprocedural data flow analysis. In Program Flow Analysis: Theory and Applications. Prentice-Hall, New York, pp. 189--233.
35
36


Collaborative Colleagues:
Thomas Ball: colleagues
Todd Millstein: colleagues
Sriram K. Rajamani: colleagues