Results 1  10
of
140
Domain Theory
 Handbook of Logic in Computer Science
, 1994
"... Least fixpoints as meanings of recursive definitions. ..."
Abstract

Cited by 481 (20 self)
 Add to MetaCart
Least fixpoints as meanings of recursive definitions.
Relational Properties of Domains
 Information and Computation
, 1996
"... New tools are presented for reasoning about properties of recursively defined domains. We work within a general, categorytheoretic framework for various notions of `relation' on domains and for actions of domain constructors on relations. Freyd's analysis of recursive types in terms of a ..."
Abstract

Cited by 102 (5 self)
 Add to MetaCart
(Show Context)
New tools are presented for reasoning about properties of recursively defined domains. We work within a general, categorytheoretic framework for various notions of `relation' on domains and for actions of domain constructors on relations. Freyd's analysis of recursive types in terms of a property of mixed initiality/finality is transferred to a corresponding property of invariant relations. The existence of invariant relations is proved under completeness assumptions about the notion of relation. We show how this leads to simpler proofs of the computational adequacy of denotational semantics for functional programming languages with userdeclared datatypes. We show how the initiality/finality property of invariant relations can be specialized to yield an induction principle for admissible subsets of recursively defined domains, generalizing the principle of structural induction for inductively defined sets. We also show how the initiality /finality property gives rise to the coinduct...
Stack Inspection: Theory and Variants
 ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS
, 2001
"... Stack inspection is a security mechanism implemented in runtimes such as the JVM and the CLR to accommodate components with diverse levels of trust. Although stack inspection enables the finegrained expression of access control policies, it has rather a complex and subtle semantics. We present a ..."
Abstract

Cited by 93 (4 self)
 Add to MetaCart
Stack inspection is a security mechanism implemented in runtimes such as the JVM and the CLR to accommodate components with diverse levels of trust. Although stack inspection enables the finegrained expression of access control policies, it has rather a complex and subtle semantics. We present a formal semantics and an equational theory to explain how stack inspection a#ects program behaviour and code optimisations. We discuss the security properties enforced by stack inspection, and also consider variants with stronger, simpler properties.
Operationallybased theories of program equivalence
 Semantics and Logics of Computation
, 1997
"... ..."
(Show Context)
The πCalculus in Direct Style
, 1997
"... We introduce a calculus which is a direct extension of both the and the π calculi. We give a simple type system for it, that encompasses both Curry's type inference for the calculus, and Milner's sorting for the πcalculus as particular cases of typing. We observe that the various contin ..."
Abstract

Cited by 66 (2 self)
 Add to MetaCart
We introduce a calculus which is a direct extension of both the and the π calculi. We give a simple type system for it, that encompasses both Curry's type inference for the calculus, and Milner's sorting for the πcalculus as particular cases of typing. We observe that the various continuation passing style transformations for terms, written in our calculus, actually correspond to encodings already given by Milner and others for evaluation strategies of terms into the πcalculus. Furthermore, the associated sortings correspond to wellknown double negation translations on types. Finally we provide an adequate cps transform from our calculus to the πcalculus. This shows that the latter may be regarded as an "assembly language", while our calculus seems to provide a better programming notation for higherorder concurrency.
Bisimilarity for a FirstOrder Calculus of Objects with Subtyping
 In Proceedings of the TwentyThird Annual ACM Symposium on Principles of Programming Languages
, 1996
"... Bisimilarity (also known as `applicative bisimulation ') has attracted a good deal of attention as an operational equivalence for calculi. It approximates or even equals Morrisstyle contextual equivalence and admits proofs of program equivalence via coinduction. It has an elementary construc ..."
Abstract

Cited by 45 (2 self)
 Add to MetaCart
(Show Context)
Bisimilarity (also known as `applicative bisimulation ') has attracted a good deal of attention as an operational equivalence for calculi. It approximates or even equals Morrisstyle contextual equivalence and admits proofs of program equivalence via coinduction. It has an elementary construction from the operational definition of a language. We consider bisimilarity for one of the typed object calculi of Abadi and Cardelli. By defining a labelled transition system for the calculus in the style of Crole and Gordon and using a variation of Howe's method we establish two central results: that bisimilarity is a congruence, and that it equals contextual equivalence. So two objects are bisimilar iff no amount of programming can tell them apart. Our third contribution is to show that bisimilarity soundly models the equational theory of Abadi and Cardelli. This is the first study of contextual equivalence for an object calculus and the first application of Howe's method to subtyping. By the...
Improvement in a Lazy Context: An Operational Theory for CallByNeed
 Proc. POPL'99, ACM
, 1999
"... Machine The semantics presented in this section is essentially Sestoft's \mark 1" abstract machine for laziness [Sestoft 1997]. In that paper, he proves his abstract machine 6 A. K. Moran and D. Sands h fx = Mg; x; S i ! h ; M; #x : S i (Lookup) h ; V; #x : S i ! h fx = V g; V; S i (Up ..."
Abstract

Cited by 43 (8 self)
 Add to MetaCart
Machine The semantics presented in this section is essentially Sestoft's \mark 1" abstract machine for laziness [Sestoft 1997]. In that paper, he proves his abstract machine 6 A. K. Moran and D. Sands h fx = Mg; x; S i ! h ; M; #x : S i (Lookup) h ; V; #x : S i ! h fx = V g; V; S i (Update) h ; M x; S i ! h ; M; x : S i (Unwind) h ; x:M; y : S i ! h ; M [ y = x ]; S i (Subst) h ; case M of alts ; S i ! h ; M; alts : S i (Case) h ; c j ~y; fc i ~x i N i g : S i ! h ; N j [ ~y = ~x j ]; S i (Branch) h ; let f~x = ~ Mg in N; S i ! h f~x = ~ Mg; N; S i ~x dom(;S) (Letrec) Fig. 1. The abstract machine semantics for callbyneed. semantics sound and complete with respect to Launchbury's natural semantics, and we will not repeat those proofs here. Transitions are over congurations consisting of a heap, containing bindings, the expression currently being evaluated, and a stack. The heap is a partial function from variables to terms, and denoted in an identical manner to a coll...
A Coinduction Principle for Recursive Data Types Based on Bisimulation
, 1996
"... This paper provides foundations for a reasoning principle (coinduction) for establishing the equality of potentially infinite elements of selfreferencing (or circular) data types. As it is wellknown, such data types not only form the core of the denotational approach to the semantics of programmin ..."
Abstract

Cited by 37 (3 self)
 Add to MetaCart
This paper provides foundations for a reasoning principle (coinduction) for establishing the equality of potentially infinite elements of selfreferencing (or circular) data types. As it is wellknown, such data types not only form the core of the denotational approach to the semantics of programming languages [SS71], but also arise explicitly as recursive data types in functional programming languages like Standard ML [MTH90] or Haskell [HPJW92]. In the latter context, the coinduction principle provides a powerful technique for establishing the equality of programs with values in recursive data types (see examples herein and in [Pit94]).
Compilation by Transformation in NonStrict Functional Languages
, 1995
"... In this thesis we present and analyse a set of automatic sourcetosource program transformations that are suitable for incorporation in optimising compilers for lazy functional languages. These transformations improve the quality of code in many different respects, such as execution time and memory ..."
Abstract

Cited by 33 (1 self)
 Add to MetaCart
In this thesis we present and analyse a set of automatic sourcetosource program transformations that are suitable for incorporation in optimising compilers for lazy functional languages. These transformations improve the quality of code in many different respects, such as execution time and memory usage. The transformations presented are divided in two sets: global transformations, which are performed once (or sometimes twice) during the compilation process; and a set of local transformations, which are performed before and after each of the global transformations, so that they can simplify the code before applying the global transformations and also take advantage of them afterwards. Many of the local transformations are simple, well known, and do not have major effects on their own. They become important as they interact with each other and with global transformations, sometimes in nonobvious ways. We present how and why they improve the code, and perform extensive experiments wit...
HigherOrder, Linear, Concurrent Constraint Programming
, 1992
"... We present a very simple and powerful framework for indeterminate, asynchronous, higherorder computation based on the formulaasagent and proofascomputation interpretation of (higherorder) linear logic [Gir87]. The framework significantly refines and extends the scope of the concurrent constrai ..."
Abstract

Cited by 31 (5 self)
 Add to MetaCart
We present a very simple and powerful framework for indeterminate, asynchronous, higherorder computation based on the formulaasagent and proofascomputation interpretation of (higherorder) linear logic [Gir87]. The framework significantly refines and extends the scope of the concurrent constraint programming paradigm [Sar89] in two fundamental ways: (1) by allowing for the consumption of information by agents it permits a direct modelling of (indeterminate) state change in a logical framework, and (2) by admitting simplytyped terms as dataobjects, it permits the construction, transmission and application of (abstractions of) programs at runtime. Much more dramatically, however, the framework can be seen as presenting higherorder (and if desired, constraintenriched) versions of a variety of other asynchronous concurrent systems, including the asynchronous ("input guarded") fragment of the (firstorder) ßcalculus, Hewitt's actors formalism, (abstract forms of) Gelernter's Lin...