The Pointer Assertion Logic Engine

Authors

  • Anders Møller
  • Michael I. Schwartzbach

DOI:

https://doi.org/10.7146/brics.v7i39.20205

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.
Other work with similar goals is based on more traditional program analyses, such as shape analysis. That approach requires explicit introduction of an appropriate operational semantics along with a proof of correctness whenever
a new data structure is being considered. In comparison, our approach only requires the data structure to be abstractly described in Pointer Assertion Logic.

Downloads

Published

2000-06-09

How to Cite

Møller, A., & Schwartzbach, M. I. (2000). The Pointer Assertion Logic Engine. BRICS Report Series, 7(39). https://doi.org/10.7146/brics.v7i39.20205