ACM Home Page
Please provide us with feedback. Feedback
The pointer assertion logic engine
Full text PdfPdf (1.43 MB)
Source Conference on Programming Language Design and Implementation archive
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation table of contents
Snowbird, Utah, United States
Pages: 221 - 231  
Year of Publication: 2001
ISBN:1-58113-414-2
Also published in ...
Authors
Anders Møller  BRICS, Department of Computer Science, University of Aarhus, Denmark
Michael I. Schwartzbach  BRICS, Department of Computer Science, University of Aarhus, Denmark
Sponsor
SIGPLAN: ACM Special Interest Group on Programming Languages
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 2,   Downloads (12 Months): 31,   Citation Count: 27
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/378795.378851
What is a DOI?

ABSTRACT

We present a new framework for verifying partial specifications of programs in order to catch type and memory errors and check data structure invariants. Our technique can verify a large class of data structures, namely all those that can be expressed as graph types. Earlier versions were restricted to simple special cases such as lists or trees. Even so, our current implementation is as fast as the previous specialized tools.

Programs are annotated with partial specifications expressed in Pointer Assertion Logic, a new notation for expressing properties of the program store. We work in the logical tradition by encoding the programs and partial specifications as formulas in monadic second-order logic. Validity of these formulas is checked by the MONA tool, which also can provide explicit counterexamples to invalid formulas.

To make verification decidable, the technique requires explicit loop and function call invariants. In return, the technique is highly modular: every statement of a given program is analyzed only once.

The main target applications are safety-critical data-type algorithms, where the cost of annotating a program with invariants is justified by the value of being able to automatically verify complex properties of the program.


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
 
6
 
7
8
 
9
 
10
 
11
Patric Cousot. Formal models and semantics. In J. van Leeuwen, editor, Handbook of Theoretical Computer Science volume B, pages 841-993. MIT Press/Elsevier, 1990.
 
12
David L. Detlefs, K. Rustan M. Leino, Greg Nelson, and James B. Saxe. Extended static checking. Research Report 159, Compaq Systems Research Center, December, 1998.
 
13
 
14
15
 
16
Robert W. Floyd. Assigning meanings to programs. Mathematical Aspects of Computer Science, American Math. Soc., 1967.
 
17
18
 
19
 
20
Klaus Havelund and Thomas Pressburger. Model checking Java programs using Java Path Finder. International Journal on Software Tools for Technology Transf er 2(4), April 2000.
21
22
23
24
 
25
 
26
Nils Klarlund and Anders Moller. MONA Version 1.4 User Manual BRICS Notes Series NS-01-1, Department of Computer Science, University of Aarhus, January 2001.
 
27
28
 
29
 
30
31
 
32
 
33
Albert R. Meyer. Wea monadic second-order theory of successor is not elementary recursive. In R. Parikh, editor, Logic Colloquium, (Proc. Symposium on Logic, Boston, 1972), volume 453 of LNCS pages 132-154, 1975.
 
34
Anders Moller. MONA project home page. www.brics.dk/mona
 
35
Anders Moller. PALE project home page. www.brics.dk/PALE
 
36
Joseph M. Morris. A general axiom of assignment. In Theoretical Foundations of Programming Methodology 1982.
 
37
John C. Reynolds. Intuitionistic reasoning about shared mutable data structure. In Millennial Perspectives in Computer Science 2000.
38
 
39

CITED BY  27

Collaborative Colleagues:
Anders Møller: colleagues
Michael I. Schwartzbach: colleagues