Types for Describing Coordinated Data Structures Michael F. Ringenburg∗ Dan Grossman
[email protected] [email protected] Dept. of Computer Science & Engineering University of Washington, Seattle, WA 98195 ABSTRACT the n-th function). This section motivates why such invari- Coordinated data structures are sets of (perhaps unbounded) ants are important, explores why the scope of type variables data structures where the nodes of each structure may share makes the problem appear daunting, and previews the rest abstract types with the corresponding nodes of the other of the paper. structures. For example, consider a list of arguments, and 1.1 Low-Level Type Systems a separate list of functions, where the n-th function of the Recent years have witnessed substantial work on powerful second list should be applied only to the n-th argument of type systems for safe, low-level languages. Standard moti- the first list. We can guarantee that this invariant is obeyed vation for such systems includes compiler debugging (gener- by coordinating the two lists, such that the type of the n-th ated code that does not type check implies a compiler error), argument is existentially quantified and identical to the ar- proof-carrying code (the type system encodes a safety prop- gument type of the n-th function. In this paper, we describe erty that the type-checker verifies), automated optimization a minimal set of features sufficient for a type system to sup- (an optimizer can exploit the type information), and manual port coordinated data structures. We also demonstrate that optimization (humans can use idioms unavailable in higher- two known type systems (Crary and Weirich’s LX [6] and level languages without sacrificing safety).