Results 1  10
of
20
Classical Logic, Continuation Semantics and Abstract Machines
, 1998
"... Machines Th. STREICHER Fachbereich 4 Mathematik, TU Darmstadt, Schlossgartenstr. 7, 64289 Darmstadt, streiche@mathematik.thdarmstadt.de B. REUS Institut fur Informatik, LudwigMaximiliansUniversitat, Oettingenstr. 67, D80538 Munchen, reus@informatik.unimuenchen.de Abstract One of the ..."
Abstract

Cited by 67 (4 self)
 Add to MetaCart
Machines Th. STREICHER Fachbereich 4 Mathematik, TU Darmstadt, Schlossgartenstr. 7, 64289 Darmstadt, streiche@mathematik.thdarmstadt.de B. REUS Institut fur Informatik, LudwigMaximiliansUniversitat, Oettingenstr. 67, D80538 Munchen, reus@informatik.unimuenchen.de Abstract One of the goals of this paper is to demonstrate that denotational semantics is useful for operational issues like implementation of functional languages by abstract machines. This is exemplified in a tutorial way by studying the case of extensional untyped callbyname calculus with Felleisen's control operator C. We derive the transition rules for an abstract machine from a continuation semantics which appears as a generalization of the ::translation known from logic. The resulting abstract machine appears as an extension of Krivine's Machine implementing head reduction. Though the result, namely Krivine's Machine, is well known our method of deriving it from continuation semantics is new and applicable to other languages (as e.g. callbyvalue variants).
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 21 (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
CallByPushValue: A Subsuming Paradigm
 in Proc. TLCA ’99
, 1999
"... . Callbypushvalue is a new paradigm that subsumes the callbyname and callbyvalue paradigms, in the following sense: both operational and denotational semantics for those paradigms can be seen as arising, via translations that we will provide, from similar semantics for callbypushvalue. To ..."
Abstract

Cited by 20 (0 self)
 Add to MetaCart
(Show Context)
. Callbypushvalue is a new paradigm that subsumes the callbyname and callbyvalue paradigms, in the following sense: both operational and denotational semantics for those paradigms can be seen as arising, via translations that we will provide, from similar semantics for callbypushvalue. To explain callbypushvalue, we first discuss general operational ideas, especially the distinction between values and computations, using the principle that "a value is, a computation does". Using an example program, we see that the lambdacalculus primitives can be understood as push/pop commands for an operandstack. We provide operational and denotational semantics for a range of computational effects and show their agreement. We hence obtain semantics for callbyname and callbyvalue, of which some are familiar, some are new and some were known but previously appeared mysterious. 1 Introduction 1.1 Contribution In his invited lecture at POPL '98 [32], Reynolds, surveying over 30 year...
The duality of computation under focus
, 2012
"... We review the relationship between abstract machines for (callbyname or callbyvalue) λcalculi (extended with Felleisen’s C) and sequent calculus, reintroducing on the way CurienHerbelin’s syntactic kit of the duality of computation. We provide a term language for a presentation of LK (with co ..."
Abstract

Cited by 8 (2 self)
 Add to MetaCart
We review the relationship between abstract machines for (callbyname or callbyvalue) λcalculi (extended with Felleisen’s C) and sequent calculus, reintroducing on the way CurienHerbelin’s syntactic kit of the duality of computation. We provide a term language for a presentation of LK (with conjunction, disjunction, and negation), and we transcribe cut elimination as (non confluent) rewriting. A key slogan, which may appear here in print for the first time, is that commutative cut elimination rules are explicit substitution propagation rules. We then describe the focalised proof search discipline (in the classical setting), and narrow down the language and the rewriting rules to a confluent calculus (a variant of the second author’s focalising system L). We then define a game of patterns and counterpatterns, leading us to a fully focalised finitary syntax for a synthetic presentation of classical logic, that provides a quotient on (focalised) proofs, abstracting out the order of decomposition of negative connectives.
Intuitionistic dualintuitionistic nets
, 2009
"... The intuitionistic sequent calculus (at most one formula on the righthand side of sequents) comes with a natural dual system: the dualintuitionistic sequent calculus (at most one formula on the lefthand side). We explain how the duality between these two systems exactly corresponds to the intens ..."
Abstract

Cited by 6 (0 self)
 Add to MetaCart
The intuitionistic sequent calculus (at most one formula on the righthand side of sequents) comes with a natural dual system: the dualintuitionistic sequent calculus (at most one formula on the lefthand side). We explain how the duality between these two systems exactly corresponds to the intensively studied duality between callbyvalue systems and callbyname systems for classical logic. Relying on the uniqueness of the computational behaviour underlying these four logics (intuitionistic, dualintuitionistic, callbyvalue classical and callbyname classical), we define a generic syntax of nets which can be used for any of these logics.
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 5 (4 self)
 Add to MetaCart
(Show Context)
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
Instances of computational effects: an algebraic perspective
"... Abstract—We investigate the connections between computational effects, algebraic theories, and monads on functor categories. We develop a syntactic framework with variable binding that allows us to describe equations between programs while taking into account the idea that there may be different ins ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
(Show Context)
Abstract—We investigate the connections between computational effects, algebraic theories, and monads on functor categories. We develop a syntactic framework with variable binding that allows us to describe equations between programs while taking into account the idea that there may be different instances of a particular computational effect. We use our framework to give a general account of several notions of computation that had previously been analyzed in terms of monads on presheaf categories: the analysis of local store by Plotkin and Power; the analysis of restriction by Pitts; and the analysis of the pi calculus by Stark. I.
The duality of computation under focus
, 2009
"... We use the infrastructure of CurienHerbelin’s λµ˜µcalculus to provide a syntax with patterns for a (weakly) focalised version of LK, which we call LKQ given its close relation with DanosJoinetSchellinx’s LKQ. Exploiting a simple game of patterns and counterpatterns, we then move on to a fully f ..."
Abstract
 Add to MetaCart
(Show Context)
We use the infrastructure of CurienHerbelin’s λµ˜µcalculus to provide a syntax with patterns for a (weakly) focalised version of LK, which we call LKQ given its close relation with DanosJoinetSchellinx’s LKQ. Exploiting a simple game of patterns and counterpatterns, we then move on to a fully focalised syntax close to Girard’s ludics and Zeilberger’s CU. We also provide a version of our syntax closer to Girard’s original LC (the first constructivisation of classical logic) and show its usefulness as the target of a translation of a mixed callbyname/callbyvalue language.