A Linear Logic Model of State (Preliminary Report) Uday S. Reddy University of Illinois at Urbana-Champaign reddy@cs.uiuc.edu July 6, 1992 Abstract We propose an abstract formal model of state manipulation in the framework of Girard’s linear logic. This work addresses twin issues: how to incorporate state manipulation in func- tional programming languages, and how to describe the semantics of higher-order imperative programming languages. In fact, it appears that, given the right model of state, the difference between functional and imperative programming becomes rather thin. Our model of state is based on a new “modality” type constructor for expressing “regenerative values” (values that reproduce themselves each time they are used). Just as Girard’s “of course” modality allows him to express static values and intuitionistic logic within the framework of linear logic, our regenerative modality allows us to express states and state-dependent values within the same framework. We demonstrate the expressiveness of the model by showing that a higher-order Algol-like language can be embedded into it. 1 Introduction State is ubiquitous in computing. Many important applications of computing—data bases, operat- ing systems and window management, just to mention a few—as well as many important algorithms are based on manipulation of state. Finding formal models, programming notations, as well as reasoning methods for state manipulation are important problems facing programming language research. Unfortunately, the current state of affairs in this regard is far from pleasant. Imperative programming languages—the most able languages for carrying out state manipulation—do not yet have good formal models. See [MS88] for a discussion of the problems. Functional programming languages—arguably, the best understood of languages—do not yet have sufficient capabilities to manipulate state. In a sense, the two problems are twin sides of the same coin. For, if we had a good formal model of state, we could devise programming notations based on it and incorporate them into a functional programming language. Girard’s linear logic [Gir87a] has been perceived, almost from the beginning, as a formal system that deals with state manipulation. This perception is implicitly present in Girard’s own explanation of linear logic [Gir87c, Gir87b], its applications to Petri nets [BG90, GG89, MM91], and linear functional programming [Abr90, Hol88, Laf88]. However, Wadler [Wad90b, Wad91a] seems to have been the first to propose it as an explicit tool for formulating state manipulation in 1