Results 1  10
of
27
Models of Sharing Graphs: A Categorical Semantics of let and letrec
, 1997
"... To my parents A general abstract theory for computation involving shared resources is presented. We develop the models of sharing graphs, also known as term graphs, in terms of both syntax and semantics. According to the complexity of the permitted form of sharing, we consider four situations of sha ..."
Abstract

Cited by 60 (9 self)
 Add to MetaCart
To my parents A general abstract theory for computation involving shared resources is presented. We develop the models of sharing graphs, also known as term graphs, in terms of both syntax and semantics. According to the complexity of the permitted form of sharing, we consider four situations of sharing graphs. The simplest is firstorder acyclic sharing graphs represented by letsyntax, and others are extensions with higherorder constructs (lambda calculi) and/or cyclic sharing (recursive letrec binding). For each of four settings, we provide the equational theory for representing the sharing graphs, and identify the class of categorical models which are shown to be sound and complete for the theory. The emphasis is put on the algebraic nature of sharing graphs, which leads us to the semantic account of them. We describe the models in terms of the notions of symmetric monoidal categories and functors, additionally with symmetric monoidal adjunctions and traced
Computational types from a logical perspective
 Journal of Functional Programming
, 1998
"... Moggi’s computational lambda calculus is a metalanguage for denotational semantics which arose from the observation that many different notions of computation have the categorical structure of a strong monad on a cartesian closed category. In this paper we show that the computational lambda calculus ..."
Abstract

Cited by 54 (6 self)
 Add to MetaCart
Moggi’s computational lambda calculus is a metalanguage for denotational semantics which arose from the observation that many different notions of computation have the categorical structure of a strong monad on a cartesian closed category. In this paper we show that the computational lambda calculus also arises naturally as the term calculus corresponding (by the CurryHoward correspondence) to a novel intuitionistic modal propositional logic. We give natural deduction, sequent calculus and Hilbertstyle presentations of this logic and prove strong normalisation and confluence results. 1
A Concurrent Logical Framework: The Propositional Fragment
, 2003
"... We present the propositional fragment CLF0 of the Concurrent Logical Framework (CLF). CLF extends the Linear Logical Framework to allow the natural representation of concurrent computations in an object language. The underlying type theory uses monadic types to segregate values from computations ..."
Abstract

Cited by 31 (3 self)
 Add to MetaCart
We present the propositional fragment CLF0 of the Concurrent Logical Framework (CLF). CLF extends the Linear Logical Framework to allow the natural representation of concurrent computations in an object language. The underlying type theory uses monadic types to segregate values from computations. This separation leads to a tractable notion of definitional equality that identifies computations di#ering only in the order of execution of independent steps. From a logical point of view our type theory can be seen as a novel combination of lax logic and dual intuitionistic linear logic. An encoding of a small Petri net exemplifies the representation methodology, which can be summarized as "concurrent computations as monadic expressions ".
Operational Interpretations of Linear Logic
, 1998
"... Two different operational interpretations of intuitionistic linear logic have been proposed in the literature. The simplest interpretation recomputes nonlinear values every time they are required. It has good memorymanagement properties, but is often dismissed as being too inefficient. Alternative ..."
Abstract

Cited by 27 (0 self)
 Add to MetaCart
Two different operational interpretations of intuitionistic linear logic have been proposed in the literature. The simplest interpretation recomputes nonlinear values every time they are required. It has good memorymanagement properties, but is often dismissed as being too inefficient. Alternatively, one can memoize the results of evaluating nonlinear values. This avoids any recomputation, but has weaker memorymanagement properties. Using a novel combination of typetheoretic and operational techniques we give a concise formal comparison of the two interpretations. Moreover, we show that there is a subset of linear logic where the two operational interpretations coincide. In this subset, which is sufficiently expressive to encode callbyvalue lambdacalculus, we can have the best of both worlds: a simple and efficient implementation, and good memorymanagement properties. Keywords: linear logic, operational semantics, callbyvalue lambda calculus, memory management. 1 Introductio...
Syntactic Accidents in Program Analysis: On the Impact of the CPS Transformation
 Journal of Functional Programming
, 2000
"... Our results formalize and confirm a folklore theorem about traditional bindingtime analysis, namely that CPS has a positive effect on binding times. What may be more surprising is that the benefit does not arise from a standard refinement of program analysis, as, for instance, duplicating continuati ..."
Abstract

Cited by 25 (9 self)
 Add to MetaCart
Our results formalize and confirm a folklore theorem about traditional bindingtime analysis, namely that CPS has a positive effect on binding times. What may be more surprising is that the benefit does not arise from a standard refinement of program analysis, as, for instance, duplicating continuations.
Logical Modalities and MultiStage Programming
, 1999
"... . Multistage programming is a method for improving the performance of programs through the introduction of controlled program specialization. This paper makes a case for multistage programming with open code and closed values. We argue that a simple language exploiting interactions between two log ..."
Abstract

Cited by 22 (13 self)
 Add to MetaCart
. Multistage programming is a method for improving the performance of programs through the introduction of controlled program specialization. This paper makes a case for multistage programming with open code and closed values. We argue that a simple language exploiting interactions between two logical modalities is well suited for multistage programming, and report the results from our study of categorical models for multistage languages. Keywords: Multistage programming, categorical models, semantics, type systems (multilevel typed calculi) , combination of logics (modal and temporal). 1 Introduction Multistage programming is a method for improving the performance of programs through the introduction of controlled program specialization [15, 13]. MetaML was the first language designed specifically to support this method. It provides a type constructor for "code" and staging annotations for building, combining, and executing code, thus allowing the programmer to have finer cont...
Embedded Interpreters
 UNDER CONSIDERATION FOR PUBLICATION IN J. FUNCTIONAL PROGRAMMING
, 2003
"... This is a tutorial on using typeindexed embedding/projection pairs when writing interpreters in staticallytyped functional languages. The method allows (higherorder) values in the interpreting language to be embedded in the interpreted language and values from the interpreted language may be proj ..."
Abstract

Cited by 19 (1 self)
 Add to MetaCart
This is a tutorial on using typeindexed embedding/projection pairs when writing interpreters in staticallytyped functional languages. The method allows (higherorder) values in the interpreting language to be embedded in the interpreted language and values from the interpreted language may be projected back into the interpreting one. This is particularly useful when adding commandline interfaces or scripting languages to applications written in functional languages. We first
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 15 (0 self)
 Add to MetaCart
. 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...
Linearly Used Effects: Monadic and CPS Transformations into the Linear Lambda Calculus
 In: Proceedings of the 6th International Symposium on Functional and Logic Programming (FLOPS2002). Aizu
, 2002
"... Abstract. We propose a semantic and syntactic framework for modelling linearly used effects, by giving the monadic transforms of the computational lambda calculus (considered as the core calculus of typed callbyvalue programming languages) into the linear lambda calculus. As an instance Berdine et ..."
Abstract

Cited by 13 (4 self)
 Add to MetaCart
Abstract. We propose a semantic and syntactic framework for modelling linearly used effects, by giving the monadic transforms of the computational lambda calculus (considered as the core calculus of typed callbyvalue programming languages) into the linear lambda calculus. As an instance Berdine et al.’s work on linearly used continuations can be put in this general picture. As a technical result we show the full completeness of the CPS transform into the linear lambda calculus.
A Categorical Analysis of MultiLevel Languages (Extended Abstract)
, 1999
"... We propose categorical models for fl, 2 , MetaML, and AIM. First, we focus on the underlying logical modalities and the interactions between them, then we investigate the interactions between logical modalities and computational monads. We give two examples of categorical model: one simpler but with ..."
Abstract

Cited by 10 (7 self)
 Add to MetaCart
We propose categorical models for fl, 2 , MetaML, and AIM. First, we focus on the underlying logical modalities and the interactions between them, then we investigate the interactions between logical modalities and computational monads. We give two examples of categorical model: one simpler but with some limitations, the other more complex but able to model all features of AIM.