Results 1  10
of
32
Combinators for bidirectional tree transformations: A linguistic approach to the view update problem
 In ACM SIGPLAN–SIGACT Symposium on Principles of Programming Languages (POPL
, 2005
"... We propose a novel approach to the view update problem for treestructured data: a domainspecific programming language in which all expressions denote bidirectional transformations on trees. In one direction, these transformations—dubbed lenses—map a “concrete ” tree into a simplified “abstract vie ..."
Abstract

Cited by 118 (15 self)
 Add to MetaCart
We propose a novel approach to the view update problem for treestructured data: a domainspecific programming language in which all expressions denote bidirectional transformations on trees. In one direction, these transformations—dubbed lenses—map a “concrete ” tree into a simplified “abstract view”; in the other, they map a modified abstract view, together with the original concrete tree, to a correspondingly modified concrete tree. Our design emphasizes both robustness and ease of use, guaranteeing strong wellbehavedness and totality properties for welltyped lenses. We identify a natural mathematical space of wellbehaved bidirectional transformations over arbitrary structures, study definedness and continuity in this setting, and state a precise connection with the classical theory of “update translation under a constant complement ” from databases. We then instantiate this semantic framework in the form of a collection of lens combinators that can be assembled to describe transformations on trees. These combinators include familiar constructs from functional programming (composition, mapping, projection, conditionals, recursion) together with some novel primitives for manipulating trees (splitting, pruning, copying, merging, etc.). We illustrate the expressiveness of these combinators by developing a number of bidirectional listprocessing transformations as derived forms. An extended example shows how our combinators can be used to define a lens that translates between a native HTML representation of browser bookmarks and a generic abstract bookmark format.
Design of the Programming Language Forsythe
, 1996
"... This is a description of the programming language Forsythe, which is a descendant of Algol 60 intended to be as uniform and general as possible, while retaining the basic character of its progenitor. This document supercedes Report CMUCS88159, "Preliminary Design of the Programming Language Fo ..."
Abstract

Cited by 111 (0 self)
 Add to MetaCart
This is a description of the programming language Forsythe, which is a descendant of Algol 60 intended to be as uniform and general as possible, while retaining the basic character of its progenitor. This document supercedes Report CMUCS88159, "Preliminary Design of the Programming Language Forsythe" [1]. c fl1996 John C. Reynolds Research suuported by National Science Foundation Grant CCR9409997. Keywords: Forsythe, Algollike languages, Algol 60, intersection types 1. Introduction In retrospect, it is clear that Algol 60 [2, 3] was an heroic and surprisingly successful attempt to design a programming language from first principles. Its creation gave a formidable impetus to the development and use of theory in language design and implementation, which has borne rich fruit in the intervening thirtysix years. Most of this work has led to languages that are quite different than Algol 60, but there has been a continuing thread of concern with languages that retain the essentia...
Categorical Logic
 A CHAPTER IN THE FORTHCOMING VOLUME VI OF HANDBOOK OF LOGIC IN COMPUTER SCIENCE
, 1995
"... ..."
Semantics of Types for Mutable State
, 2004
"... Proofcarrying code (PCC) is a framework for mechanically verifying the safety of machine language programs. A program that is successfully verified by a PCC system is guaranteed to be safe to execute, but this safety guarantee is contingent upon the correctness of various trusted components. For in ..."
Abstract

Cited by 55 (5 self)
 Add to MetaCart
Proofcarrying code (PCC) is a framework for mechanically verifying the safety of machine language programs. A program that is successfully verified by a PCC system is guaranteed to be safe to execute, but this safety guarantee is contingent upon the correctness of various trusted components. For instance, in traditional PCC systems the trusted computing base includes a large set of lowlevel typing rules. Foundational PCC systems seek to minimize the size of the trusted computing base. In particular, they eliminate the need to trust complex, lowlevel type systems by providing machinecheckable proofs of type soundness for real machine languages. In this thesis, I demonstrate the use of logical relations for proving the soundness of type systems for mutable state. Specifically, I focus on type systems that ensure the safe allocation, update, and reuse of memory. For each type in the language, I define logical relations that explain the meaning of the type in terms of the operational semantics of the language. Using this model of types, I prove each typing rule as a lemma. The major contribution is a model of System F with general references — that is, mutable cells that can hold values of any closed type including other references, functions, recursive types, and impredicative quantified types. The model is based on ideas from both possible worlds and the indexed model of Appel and McAllester. I show how the model of mutable references is encoded in higherorder logic. I also show how to construct an indexed possibleworlds model for a von Neumann machine. The latter is used in the Princeton Foundational PCC system to prove type safety for a fullfledged lowlevel typed assembly language. Finally, I present a semantic model for a region calculus that supports typeinvariant references as well as memory reuse. iii
Positive Subtyping
 Information and Computation
, 1994
"... The statement S T in a calculus with subtyping is traditionally interpreted as a semantic coercion function of type [[S]]![[T ]] that extracts the "T part" of an element of S. If the subtyping relation is restricted to covariant positions, this interpretation may be enriched to include both the ..."
Abstract

Cited by 51 (8 self)
 Add to MetaCart
The statement S T in a calculus with subtyping is traditionally interpreted as a semantic coercion function of type [[S]]![[T ]] that extracts the "T part" of an element of S. If the subtyping relation is restricted to covariant positions, this interpretation may be enriched to include both the coercion and an overwriting function put[S; T ] 2 [[S]]![[T ]]![[S]] that updates the T part of an element of S.
KripkeStyle Models for Typed Lambda Calculus
 Annals of Pure and Applied Logic
, 1996
"... The semantics of typed lambda calculus is usually described using Henkin models, consisting of functions over some collection of sets, or concrete cartesian closed categories, which are essentially equivalent. We describe a more general class of Kripkestyle models. In categorical terms, our Kripke ..."
Abstract

Cited by 44 (3 self)
 Add to MetaCart
The semantics of typed lambda calculus is usually described using Henkin models, consisting of functions over some collection of sets, or concrete cartesian closed categories, which are essentially equivalent. We describe a more general class of Kripkestyle models. In categorical terms, our Kripke lambda models are cartesian closed subcategories of the presheaves over a poset. To those familiar with Kripke models of modal or intuitionistic logics, Kripke lambda models are likely to seem adequately \semantic." However, when viewed as cartesian closed categories, they do not have the property variously referred to as concreteness, wellpointedness, or having enough points. While the traditional lambda calculus proof system is not complete for Henkin models that may have empty types, we prove strong completeness for Kripke models. In fact, every set of equations that is closed under implication is the theory of a single Kripke model. We also develop some properties of logical relations ...
Categorical Models for Local Names
 LISP AND SYMBOLIC COMPUTATION
, 1996
"... This paper describes the construction of categorical models for the nucalculus, a language that combines higherorder functions with dynamically created names. Names are created with local scope, they can be compared with each other and passed around through function application, but that is all. T ..."
Abstract

Cited by 39 (2 self)
 Add to MetaCart
This paper describes the construction of categorical models for the nucalculus, a language that combines higherorder functions with dynamically created names. Names are created with local scope, they can be compared with each other and passed around through function application, but that is all. The intent behind this language is to examine one aspect of the imperative character of Standard ML: the use of local state by dynamic creation of references. The nucalculus is equivalent to a certain fragment of ML, omitting side effects, exceptions, datatypes and recursion. Even without all these features, the interaction of name creation with higherorder functions can be complex and subtle; it is particularly difficult to characterise the observable behaviour of expressions. Categorical monads, in the style of Moggi, are used to build denotational models for the nucalculus. An intermediate stage is the use of a computational metalanguage, which distinguishes in the type system between values and computations. The general requirements for a categorical model are presented, and two specific examples described in detail. These provide a sound denotational semantics for the nucalculus, and can be used to reason about observable equivalence in the language. In particular a model using logical relations is fully abstract for firstorder expressions.
Semantics of Local Variables
, 1992
"... This expository article discusses recent progress on the problem of giving sufficiently abstract semantics to localvariable declarations in Algollike languages, especially work using categorical methods. ..."
Abstract

Cited by 35 (4 self)
 Add to MetaCart
This expository article discusses recent progress on the problem of giving sufficiently abstract semantics to localvariable declarations in Algollike languages, especially work using categorical methods.
Reasoning about local variables with operationallybased logical relations
 In LICS
, 1996
"... A parametric logical relation between the phrases of an Algollike language is presented. Its definition involves the structural operational semantics of the language, but was inspired by recent denotationallybased work of O’Hearn and Reynolds on translating Algol into a predicatively polymorphic l ..."
Abstract

Cited by 32 (3 self)
 Add to MetaCart
A parametric logical relation between the phrases of an Algollike language is presented. Its definition involves the structural operational semantics of the language, but was inspired by recent denotationallybased work of O’Hearn and Reynolds on translating Algol into a predicatively polymorphic linear lambda calculus. The logical relation yields an applicative characterisation of contextual equivalence for the language and provides a useful (and complete) method for proving equivalences. Its utility is illustrated by giving simple and direct proofs of some contextual equivalences, including an interesting equivalence due to O’Hearn which hinges upon the undefinability of ‘snapback ’ operations (and which goes beyond the standard suite of ‘MeyerSieber ’ examples). Whilst some of the mathematical intricacies of denotational semantics are avoided, the hard work in this operational approach lies in establishing the ‘fundamental property’ for the logical relation—the proof of which makes use of a compactness property of fixpoint recursion with respect to evaluation of phrases. But once this property has been established, the logical relation provides a verification method with an attractively low mathematical overhead. 1.
Domain theory for concurrency
, 2003
"... Concurrent computation can be given an abstract mathematical treatment very similar to that provided for sequential computation by domain theory and denotational semantics of Scott and Strachey. ..."
Abstract

Cited by 23 (6 self)
 Add to MetaCart
Concurrent computation can be given an abstract mathematical treatment very similar to that provided for sequential computation by domain theory and denotational semantics of Scott and Strachey.