Results 1  10
of
21
A FormulaeasTypes Notion of Control
 In Conference Record of the Seventeenth Annual ACM Symposium on Principles of Programming Languages
, 1990
"... The programming language Scheme contains the control construct call/cc that allows access to the current continuation (the current control context). This, in effect, provides Scheme with firstclass labels and jumps. We show that the wellknown formulaeastypes correspondence, which relates a constr ..."
Abstract

Cited by 240 (0 self)
 Add to MetaCart
The programming language Scheme contains the control construct call/cc that allows access to the current continuation (the current control context). This, in effect, provides Scheme with firstclass labels and jumps. We show that the wellknown formulaeastypes correspondence, which relates a constructive proof of a formula ff to a program of type ff, can be extended to a typed Idealized Scheme. What is surprising about this correspondence is that it relates classical proofs to typed programs. The existence of computationally interesting "classical programs"  programs of type ff, where ff holds classically, but not constructively  is illustrated by the definition of conjunctive, disjunctive, and existential types using standard classical definitions. We also prove that all evaluations of typed terms in Idealized Scheme are finite.
Control Categories and Duality: on the Categorical Semantics of the LambdaMu Calculus
, 1999
"... this paper, we study the relationship between the callbyname and callbyvalue paradigms for Parigot's calculus. The calculus is an extension of the simplytyped lambda calculus with certain sequential control operators. We show that, in the presence of product and disjunction types, the callby ..."
Abstract

Cited by 84 (3 self)
 Add to MetaCart
this paper, we study the relationship between the callbyname and callbyvalue paradigms for Parigot's calculus. The calculus is an extension of the simplytyped lambda calculus with certain sequential control operators. We show that, in the presence of product and disjunction types, the callbyname and callbyvalue calculi are isomorphic to each other, in the sense that there exist syntactic translations between them that preserve the operational semantics and that are mutually inverse up to isomorphism of types. These translations take the form of a
Semantic Lego
, 1995
"... Denotational semantics [Sch86] is a powerful framework for describing programming languages; however, its descriptions lack modularity: conceptually independent language features influence each others' semantics. We address this problem by presenting a theory of modular denotational semantics. Follo ..."
Abstract

Cited by 35 (0 self)
 Add to MetaCart
Denotational semantics [Sch86] is a powerful framework for describing programming languages; however, its descriptions lack modularity: conceptually independent language features influence each others' semantics. We address this problem by presenting a theory of modular denotational semantics. Following Mosses [Mos92], we divide a semantics into two parts, a computation ADT and a language ADT (abstract data type). The computation ADT represents the basic semantic structure of the language. The language ADT represents the actual language constructs, as described by a grammar. We define the language ADT using the computation ADT; in fact, language constructs are polymorphic over many different computation ADTs. Following Moggi [Mog89a], we build the computation ADT from composable parts, using monads and monad transformers. These techniques allow us to build many different computation ADTs, and, since our language constructs are polymorphic, many different language semantics. We autom...
On the unity of duality
 Special issue on “Classical Logic and Computation
, 2008
"... Most type systems are agnostic regarding the evaluation strategy for the underlying languages, with the value restriction for ML which is absent in Haskell as a notable exception. As type systems become more precise, however, detailed properties of the operational semantics may become visible becaus ..."
Abstract

Cited by 12 (2 self)
 Add to MetaCart
Most type systems are agnostic regarding the evaluation strategy for the underlying languages, with the value restriction for ML which is absent in Haskell as a notable exception. As type systems become more precise, however, detailed properties of the operational semantics may become visible because properties captured by the types may be sound under one strategy but not the other. For example, intersection types distinguish between callbyname and callbyvalue functions, because the subtyping law (A → B) ∩ (A → C) ≤ A → (B ∩ C) is unsound for the latter in the presence of effects. In this paper we develop a prooftheoretic framework for analyzing the interaction of types with evaluation order, based on the notion of polarity. Polarity was discovered through linear logic, but we propose a fresh origin in Dummett’s program of justifying the logical laws through alternative verificationist or pragmatist “meaningtheories”, which include a bias towards either introduction or elimination rules. We revisit Dummett’s analysis using the tools of MartinLöf’s judgmental method, and then show how to extend it to a unified polarized logic, with Girard’s “shift ” connectives acting as intermediaries. This logic safely combines intuitionistic and dual intuitionistic reasoning principles, while simultaneously admitting a focusing interpretation for the classical sequent calculus. Then, by applying the CurryHoward isomorphism to polarized logic, we obtain a single programming language in which evaluation order is reflected at the level of types. Different logical notions correspond directly to natural programming constructs, such as patternmatching, explicit substitutions, values and callbyvalue continuations. We give examples demonstrating the expressiveness of the language and type system, and prove a basic but modular type safety result. We conclude with a brief discussion of extensions to the language with additional effects and types, and sketch the sort of explanation this can provide for operationallysensitive typing phenomena. 1
Callbyvalue is dual to callbyname, reloaded
 In Rewriting Technics and Application, RTA’05, volume 3467 of LNCS
, 2005
"... Abstract. We consider the relation of the dual calculus of Wadler (2003) to the λµcalculus of Parigot (1992). We give translations from the λµcalculus into the dual calculus and back again. The translations form an equational correspondence as defined by Sabry and Felleisen (1993). In particular, ..."
Abstract

Cited by 11 (0 self)
 Add to MetaCart
Abstract. We consider the relation of the dual calculus of Wadler (2003) to the λµcalculus of Parigot (1992). We give translations from the λµcalculus into the dual calculus and back again. The translations form an equational correspondence as defined by Sabry and Felleisen (1993). In particular, translating from λµ to dual and then ‘reloading ’ from dual back into λµ yields a term equal to the original term. Composing the translations with duality on the dual calculus yields an involutive notion of duality on the λµcalculus. A previous notion of duality on the λµcalculus has been suggested by Selinger (2001), but it is not involutive. Note This paper uses color to clarify the relation of types and terms, and of source and target calculi. If the URL below is not in blue please download the color version from
Duality between CallbyName Recursion and CallbyValue Iteration
 In Proc. Computer Science Logic, Springer Lecture Notes in Comput. Sci
, 2001
"... We investigate the duality between callbyname recursion and callbyvalue iteration on the calculi. The duality between callbyname and callbyvalue was first studied by Filinski, and Selinger has studied the categorytheoretic duality on the models of the callbyname calculus and the callby ..."
Abstract

Cited by 9 (4 self)
 Add to MetaCart
We investigate the duality between callbyname recursion and callbyvalue iteration on the calculi. The duality between callbyname and callbyvalue was first studied by Filinski, and Selinger has studied the categorytheoretic duality on the models of the callbyname calculus and the callbyvalue one. We extend the callbyname calculus and the callbyvalue one with a fixedpoint operator and an iteration operator, respectively. We show that the dual translations constructed by Selinger can be expanded into our extended calculi, and we also discuss their implications to practical applications.
Dependently Typed Programming with DomainSpecific Logics
 SUBMITTED TO POPL ’09
, 2008
"... We define a dependent programming language in which programmers can define and compute with domainspecific logics, such as an accesscontrol logic that statically prevents unauthorized access to controlled resources. Our language permits programmers to define logics using the LF logical framework, ..."
Abstract

Cited by 6 (3 self)
 Add to MetaCart
We define a dependent programming language in which programmers can define and compute with domainspecific logics, such as an accesscontrol logic that statically prevents unauthorized access to controlled resources. Our language permits programmers to define logics using the LF logical framework, whose notion of binding and scope facilitates the representation of the consequence relation of a logic, and to compute with logics by writing functional programs over LF terms. These functional programs can be used to compute values at runtime, and also to compute types at compiletime. In previous work, we studied a simplytyped framework for representing and computing with variable binding [LICS 2008]. In this paper, we generalize our previous type theory to account for dependently typed inference rules, which are necessary to adequately represent domainspecific logics, and we present examples of using our type theory for certified software and mechanized metatheory.
On categorical models of classical logic and the geometry of interaction
, 2005
"... It is wellknown that weakening and contraction cause naïve categorical models of the classical sequent calculus to collapse to Boolean lattices. In previous work, summarized briefly herein, we have provided a class of models called classical categories which is sound and complete and avoids this co ..."
Abstract

Cited by 5 (0 self)
 Add to MetaCart
It is wellknown that weakening and contraction cause naïve categorical models of the classical sequent calculus to collapse to Boolean lattices. In previous work, summarized briefly herein, we have provided a class of models called classical categories which is sound and complete and avoids this collapse by interpreting cutreduction by a posetenrichment. Examples of classical categories include boolean lattices and the category of sets and relations, where both conjunction and disjunction are modelled by the settheoretic product. In this article, which is selfcontained, we present an improved axiomatization of classical categories, together with a deep exploration of their structural theory. Observing that the collapse already happens in the absence of negation, we start with negationfree models called Dummett categories. Examples include, besides the classical categories above, the category of sets and relations, where both conjunction and disjunction are modelled by the disjoint union. We prove that Dummett categories are MIX, and that the partial order can be derived from homsemilattices which have a straightforward prooftheoretic definition. Moreover, we show that the GeometryofInteraction construction can be extended from multiplicative linear logic to classical logic, by applying it to obtain a classical
Implicit and Explicit Aspects of Scope and Block Structure
"... Block structure is a fundamental mechanism for expressing the scope of variables in a computation. Scope can be expressed either explicitly with formal parameters or implicitly with free variables. We discuss the transformations between explicit and implicit scope. Making scope explicit is current p ..."
Abstract

Cited by 5 (2 self)
 Add to MetaCart
Block structure is a fundamental mechanism for expressing the scope of variables in a computation. Scope can be expressed either explicitly with formal parameters or implicitly with free variables. We discuss the transformations between explicit and implicit scope. Making scope explicit is current practice in functional programming: it is called "lambdalifting. " Our thesis addresses the transformations between explicit and implicit scope. We show lambdadropping to be a useful transformation that can be applied to clarify the structure of programs and to increase the efficiency of recursive functions. In addition, we demonstrate that lambdadropping is of practical use as a backend in a partial evaluator. 1 Preface This document describes most of the work that was done in conjunction with the author's "speciale" (master's thesis). One of the primary subjects of this work is a program transformation called "lambdadropping." It was first conceived by my thesis advisor, Olivier Dan...
Classical Callbyneed and duality
"... Abstract. We study callbyneed from the point of view of the duality between callbyname and callbyvalue. We develop sequentcalculus style versions of callbyneed both in the minimal and classical case. As a result, we obtain a natural extension of callbyneed with control operators. This lea ..."
Abstract

Cited by 4 (4 self)
 Add to MetaCart
Abstract. We study callbyneed from the point of view of the duality between callbyname and callbyvalue. We develop sequentcalculus style versions of callbyneed both in the minimal and classical case. As a result, we obtain a natural extension of callbyneed with control operators. This leads us to introduce a callbyneed λµcalculus. Finally, by using the dualities principles of λµ˜µcalculus, we show the existence of a new callbyneed calculus, which is distinct from callbyname, callbyvalue and usual callbyneed theories. 1