Results 1 -
4 of
4
A Fully Abstract Semantics for a Concurrent Functional Language With Monadic Types
, 1995
"... This paper presents a typed higher-order concurrent functional programming language, based on Moggi's monadic metalanguage and Reppy's Concurrent ML. We present an operational semantics for the language, and show that a higherorder variant of the traces model is fully abstract for maytesting. This p ..."
Abstract
-
Cited by 20 (4 self)
- Add to MetaCart
This paper presents a typed higher-order concurrent functional programming language, based on Moggi's monadic metalanguage and Reppy's Concurrent ML. We present an operational semantics for the language, and show that a higherorder variant of the traces model is fully abstract for maytesting. This proof uses a program logic based on Hennessy-- Milner logic and Abramsky's domain theory in logical form. 1 Introduction This paper presents an operational semantics for a concurrent functional programming language, based on Reppy's [26, 27] Concurrent ML, and Moggi's [22] monadic metalanguage. CML is a concurrent extension of New Jersey ML, which adds communication primitives based on CCS [19] and CSP [11]. Reppy introduces a new type constructor of events, which can spawn concurrent processes, and communicate with them along channels. Three of the constructors for the event type are: always : a#aevent wrap : (aeventa#b)# (bevent) sync : aevent#a These are: . alwayse is an event whic...
Adjunction models for call-by-push-value with stacks
- Proceedings, 9th Conference on Category Theory and Computer Science, Ottawa, 2002, volume 69 of Electronic Notes in Theoretical Computer Science
, 2005
"... Call-by-push-value is a ”semantic machine code”, providing a set of simple primitives from which both the call-by-value and call-by-name paradigms are built. We present its operational semantics as a stack machine, suggesting a term judgement of stacks. We then see that CBPV, incorporating these st ..."
Abstract
-
Cited by 9 (6 self)
- Add to MetaCart
Call-by-push-value is a ”semantic machine code”, providing a set of simple primitives from which both the call-by-value and call-by-name paradigms are built. We present its operational semantics as a stack machine, suggesting a term judgement of stacks. We then see that CBPV, incorporating these stack terms, has a simple categorical semantics based on an adjunction between values and stacks. There are no coherence requirements. We describe this semantics incrementally. First, we introduce locally indexed categories and the opGrothendieck construction, and use these to give the basic structure for interpreting the three judgements: values, stacks and computations. Then we look at the universal property required to interpret each type constructor. We define a model to be a strong adjunction with countable coproducts, countable products and exponentials. We see a wide range of instances of this structure: we give examples for divergence, storage, erratic choice, continuations, possible worlds and games (with or without a bracketing condition), in each case resolving the strong monad from the literature into a strong adjunction. And we give ways of constructing models from other models. Finally, we see that call-by-value and call-by-name are interpreted within the Kleisli and co-Kleisli parts, respectively, of a call-by-push-value adjunction.
Call-By-Push-Value: Decomposing Call-By-Value And Call-By-Name
"... We present the call-by-push-value (CBPV) calculus, which decomposes the typed call-by-value (CBV) and typed call-by-name (CBN) paradigms into fine-grain primitives. On the operational side, we give big-step semantics and a stack machine for CBPV, which leads to a straightforward push/pop reading of ..."
Abstract
-
Cited by 7 (3 self)
- Add to MetaCart
We present the call-by-push-value (CBPV) calculus, which decomposes the typed call-by-value (CBV) and typed call-by-name (CBN) paradigms into fine-grain primitives. On the operational side, we give big-step semantics and a stack machine for CBPV, which leads to a straightforward push/pop reading of CBPV programs. On the denotational side, we model CBPV using cpos and, more generally, using algebras for a strong monad. For storage, we present an O’Hearn-style “behaviour semantics” that does not use a monad. We present the translations from CBN and CBV to CBPV. All these translations straightforwardly preserve denotational semantics. We also study their operational properties: simulation and full abstraction. We give an equational theory for CBPV, and show it equivalent to a categorical semantics using monads and algebras. We use this theory to formally compare CBPV to Filinski’s variant of the monadic metalanguage, as well as to Marz’s language SFPL, both of which have essentially the same type structure as CBPV. We also discuss less formally the differences between the CBPV and monadic frameworks.
A Fully Abstract Semantics for a Nondeterministic Functional Language With Monadic Types
, 1995
"... This paper presents a functional programming language, based on Moggi's monadic metalanguage. In the first part of this paper, we show how the language can be regarded as a monad on a category of signatures, and that the resulting category of algebras is equivalent to the category of computationally ..."
Abstract
-
Cited by 6 (2 self)
- Add to MetaCart
This paper presents a functional programming language, based on Moggi's monadic metalanguage. In the first part of this paper, we show how the language can be regarded as a monad on a category of signatures, and that the resulting category of algebras is equivalent to the category of computationally cartesian closed categories. In the second part, we extend the language to include a nondeterministic operational semantics, and show that the lower powerdomain semantics is fully abstract for may-testing. 1 Introduction Moggi has proposed strong monads as an appropriate way to model computation. In [9], he shows that any model of computation satisfying certain equations forms a strong monad. His work concentrates on the denotational properties of programs, whereas we shall show how his work can be applied to an operational semantics. In the first section of this paper, we present a slight variant on his functional monadic metalanguage and show that its algebras are equivalent to strong mo...

