| | |
Summary: Data Structure Fusion
Peter Hawkins, Alex Aiken, Kathleen Fisher, Martin Rinard, and Mooly Sagiv
Stanford University, AT&T Labs Research, MIT, Tel Aviv University
Abstract. We consider the problem of specifying data structures with
complex sharing in a manner that is both declarative and results in
provably correct code. In our approach, abstract data types are speci-
fied using relational algebra and functional dependencies; a novel fuse
operation on relational indexes specifies where the underlying physical
data structure representation has sharing. We permit the user to specify
different concrete shared representations for relations, and show that the
semantics of the relational specification are preserved.
1 Introduction
Consider the data structure used in an operating system kernel to represent the
set of available file systems. There are two kinds of objects: file systems and
files. Each file system has a list of its files, and each file may be in one of two
states, either currently in use or currently unused. Figure 1 sketches the data
structure typically used:1
each file system is the head of a linked list of its files,
and two other linked lists maintain the set of files in use and files not in use.
Thus, every file participates in two lists: the list of files in its file system, and
|