Results 11  20
of
41
Extracting constructive content from classical logic via controllike reductions
 In Bezem and Groote [12
, 1993
"... ..."
MLISP: A RepresentationIndependent Dialect of LISP with Reduction Semantics
 ACM Transactions on Programming Languages and Systems
, 1992
"... In this paper we introduce MLISP, a simple new dialect of LISP which is designed with an eye toward reconciling LISP's metalinguistic power with the structural style of operational semantics advocated by Plotkin [Plo75]. We begin by reviewing the original denition of LISP [McC61] in an attempt t ..."
Abstract

Cited by 22 (2 self)
 Add to MetaCart
In this paper we introduce MLISP, a simple new dialect of LISP which is designed with an eye toward reconciling LISP's metalinguistic power with the structural style of operational semantics advocated by Plotkin [Plo75]. We begin by reviewing the original denition of LISP [McC61] in an attempt to clarify the source of its metalinguistic power. We nd that it arises from a problematic clause in this denition. We then dene the abstract syntax and operational semantics of MLISP, essentially a hybrid of Mexpression LISP and Scheme. Next, we tie the operational semantics to the corresponding equational logic. As usual, provable equality in the logic implies operational equality. Having established this framework we then extend MLISP with the metalinguistic eval and reify operators (the latter is a nonstrict operator which converts its argument to its metalanguage representation.) These operators encapsulate the metalinguistic representation conversions that occur globall...
Environments as First Class Objects
 In th ACM Symposium on Principle of Programming Languages Conference
, 1987
"... We describe a programming language called Symmetric Lisp that treats environments as firstclass objects. Symmetric Lisp allows programmers to write expressions that evaluate to environments, and to create and denote variables and constants of type environment as well. One consequence is that the ro ..."
Abstract

Cited by 18 (4 self)
 Add to MetaCart
We describe a programming language called Symmetric Lisp that treats environments as firstclass objects. Symmetric Lisp allows programmers to write expressions that evaluate to environments, and to create and denote variables and constants of type environment as well. One consequence is that the roles filled in other languages by a variety of limited, special purpose environment forms like records, structures, closures, modules, classes and abstract data types are filled instead by a single versatile and powerful structure. In addition to being its fundamental structuring tool, environments also serve as the basic functional object in the language. Because the elements of an environment are evaluated in parallel, Symmetric Lisp is a parallel programming language; because they may be assembled dyamically as well as statically, Symmetric Lisp accomodates an unusually flexible and simple (parallel) interpreter as well as other historysensitive applications requiring dynamic environments. We show that firstclass environments bring about fundamental changes in a language's structure: conventional distinctions between declarations and expressions, data structures and program structures, passive modules and active processes disappear. We argue that the resulting language is clean, simple and powerful.
The Formal Relationship Between Direct and ContinuationPassing Style Optimizing Compilers: A Synthesis of Two Paradigms
, 1994
"... Compilers for higherorder programming languages like Scheme, ML, and Lisp can be broadly characterized as either "direct compilers" or "continuationpassing style (CPS) compilers", depending on their main intermediate representation. Our central result is a precise correspondence between the two co ..."
Abstract

Cited by 15 (0 self)
 Add to MetaCart
Compilers for higherorder programming languages like Scheme, ML, and Lisp can be broadly characterized as either "direct compilers" or "continuationpassing style (CPS) compilers", depending on their main intermediate representation. Our central result is a precise correspondence between the two compilation strategies. Starting from
Game Semantics and Subtyping
 In Proceedings of the fifteenth annual IEEE symposium on Logic in Computer Science
, 1999
"... While Game Semantics has been remarkably successful at modelling, often in a fully abstract manner, a wide range of features of programming languages, there has to date been no attempt at applying it to subtyping. We show how the simple device of explicitly introducing error values in the syntax of ..."
Abstract

Cited by 11 (1 self)
 Add to MetaCart
While Game Semantics has been remarkably successful at modelling, often in a fully abstract manner, a wide range of features of programming languages, there has to date been no attempt at applying it to subtyping. We show how the simple device of explicitly introducing error values in the syntax of the calculus leads to a notion of subtyping for game semantics. We construct an interpretation of a simple calculus with subtyping and show how the range of the interpretation of types is a complete lattice thus yielding an interpretation of bounded quantification.
Recursion from Iteration
 Lisp and Symbolic Computation
, 1994
"... . In a simplytyped, callbyvalue (CBV) language with firstclass continuations, the usual CBV fixpoint operator can be defined in terms of a simple, infinitelylooping iteration primitive. We first consider a natural but flawed definition, based on exceptions and "iterative deepening" of finite unf ..."
Abstract

Cited by 10 (0 self)
 Add to MetaCart
. In a simplytyped, callbyvalue (CBV) language with firstclass continuations, the usual CBV fixpoint operator can be defined in terms of a simple, infinitelylooping iteration primitive. We first consider a natural but flawed definition, based on exceptions and "iterative deepening" of finite unfoldings, and point out some of its shortcomings. Then we present the proper construction using full firstclass continuations, with both an informal derivation and a proof that the behavior of the defined operator faithfully mimics a "builtin" recursion primitive. In fact, given an additional uniformity assumption, the construction is a twosided inverse of the usual definition of iteration from recursion. Continuing, we show that the CBV looping primitive is in fact the directstyle equivalent of a continuationpassingstyle fixpoint, and that this correspondence extends all the way to traditional definitions of these operators in terms of reflexive types. 1. Introduction 1.1. Background ...
Search algorithms in type theory
, 2000
"... In this paper, we take an abstract view of search by describing search procedures via particular kinds of proofs in type theory. We rely on the proofsasprograms interpretation to extract programs from our proofs. Using these techniques we explore, in depth, a large family of search problems by par ..."
Abstract

Cited by 8 (2 self)
 Add to MetaCart
In this paper, we take an abstract view of search by describing search procedures via particular kinds of proofs in type theory. We rely on the proofsasprograms interpretation to extract programs from our proofs. Using these techniques we explore, in depth, a large family of search problems by parameterizing the speci cation of the problem. A constructive proof is presented which has as its computational content a correct search procedure for these problems. We show how a classical extension to an otherwise constructive system can be used to describe a typical use of the nonlocal control operator call/cc. Using the classical typing of nonlocal control we extend our purely constructive proof to incorporate a sophisticated backtracking technique known as ‘con ictdirected backjumping’ (CBJ). A variant of this proof is formalized in Nuprl yielding a correctbyconstruction implementation of CBJ. The extracted program has been translated into Scheme and serves as the basis for an implementation of a new solution to the Hamiltonian circuit problem. This paper demonstrates a nontrivial application of the proofsasprograms paradigm by applying the technique to the derivation of a sophisticated search algorithm; also, it shows the generality of the resulting implementation by demonstrating its application in a new problem
Compiling with NonParametric Polymorphism (Preliminary Report)
"... There is a middle ground between parametric and adhoc polymorphism in which a computation can depend upon a type parameter but is restricted to being defined at all types in an inductive fashion. We call such polymorphism nonparametric. We show how nonparametric polymorphism can be used to impleme ..."
Abstract

Cited by 7 (2 self)
 Add to MetaCart
There is a middle ground between parametric and adhoc polymorphism in which a computation can depend upon a type parameter but is restricted to being defined at all types in an inductive fashion. We call such polymorphism nonparametric. We show how nonparametric polymorphism can be used to implement a variety of useful language mechanisms including overloading, unboxed data representations in the presence of MLstyle polymorphism, and canonical representations of equivalent types. We show that, by using a secondorder, explicitly typed language extended with nonparametric operations, these mechanisms can be implemented without having to tag data with type information at runtime. Furthermore, this approach retains a "phase distinction" and permits static type checking and separate compilation. Our aim is to provide a unifying language, translation, and proof framework in which a variety of nonparametric mechanisms can be expressed and verified. 1 Introduction Polymorphism is the ...
Revisiting Coroutines
, 2004
"... This paper defends the revival of coroutines as a general control abstraction. After proposing a new classification of coroutines, we introduce the concept of full asymmetric coroutines and provide a precise definition for it through an operational semantics. We then demonstrate that full coroutines ..."
Abstract

Cited by 7 (3 self)
 Add to MetaCart
This paper defends the revival of coroutines as a general control abstraction. After proposing a new classification of coroutines, we introduce the concept of full asymmetric coroutines and provide a precise definition for it through an operational semantics. We then demonstrate that full coroutines have an expressive power equivalent to oneshot continuations and oneshot partial continuations. We also show that full asymmetric coroutines and oneshot partial continuations have many similarities, and therefore present comparable benefits. Nevertheless, coroutines are easier implemented and understood, specially in the realm of procedural languages. Finally, we provide a collection of programming examples that illustrate the use of full asymmetric coroutines to support direct and concise implementations of several useful control behaviors, including cooperative multitasking.
A Strong Normalization Result for Classical Logic
 Annals of Pure and Applied Logic
, 1995
"... In this paper we give a strong normalization proof for a set of reduction rules for classical logic. These reductions, more general then the ones usually considered in literature, are inspired to the reductions of Felleisen's lambda calculus with continuations. 1 Introduction Recently, in the logic ..."
Abstract

Cited by 7 (0 self)
 Add to MetaCart
In this paper we give a strong normalization proof for a set of reduction rules for classical logic. These reductions, more general then the ones usually considered in literature, are inspired to the reductions of Felleisen's lambda calculus with continuations. 1 Introduction Recently, in the logic and theoretical computer science community, there has been an ever growing interest in the computational features of classical logic. The problem on which research is beginning to focus now is not the theoretical possibility of having constructive content present in classical proofs, established in old and well known results, but the practical applicability of such results. It was Kreisel in [12] who first pinpointed the presence of constructive content in classical proofs by proving the equality of the sets of \Sigma 0 1 sentences provable respectively in intuitionistic and classical logic. Friedman in [7] showed how to get the computational content of a classical proof of a \Sigma 0 1 ...