Graph Types

Authors

  • Nils Klarlund
  • Michael I. Schwartzbach

DOI:

https://doi.org/10.7146/dpb.v21i421.7952

Abstract

Recursive data structures are abstractions of simple records and pointers. They impose a shape invariant, which is verified at compile-time and exploited to automatically generate code for building, copying, comparing, and traversing values without loss of efficiency. However, such values are always tree shaped, which is a major obstacle to practical use. We propose a notion of graph types , which allow common shapes, such as doubly-linked lists or threaded trees, to be expressed concisely and efficiently. We define regular languages of routing expressions to specify relative addresses of extra pointers in a canonical spanning tree. An efficient algorithm for computing such addresses is developed. We employ a second-order monadic logic to decide well-formedness of graph type specifications. This logic can also be used for automated reasoning about pointer structures.

Downloads

Published

1992-10-01

How to Cite

Klarlund, N., & Schwartzbach, M. I. (1992). Graph Types. DAIMI Report Series, 21(421). https://doi.org/10.7146/dpb.v21i421.7952