Results 1  10
of
12
Proving congruence of bisimulation in functional programming languages
 Information and Computation
, 1996
"... Email: howe research.att.com We give a method for proving congruence of bisimulationlike equivalences in functional programming languages. The method applies to languages that can be presented as a set of expressions together with an evaluation relation. We use this method to show that some genera ..."
Abstract

Cited by 106 (1 self)
 Add to MetaCart
Email: howe research.att.com We give a method for proving congruence of bisimulationlike equivalences in functional programming languages. The method applies to languages that can be presented as a set of expressions together with an evaluation relation. We use this method to show that some generalizations of Abramsky's applicative bisimulation are congruences whenever evaluation can be specified by a certain natural form of structured operational semantics. One of the generalizations handles nondeterminism and diverging computations.] 1996 Academic Press, Inc. 1.
Reasoning about local variables with operationallybased logical relations
 In LICS
, 1996
"... A parametric logical relation between the phrases of an Algollike language is presented. Its definition involves the structural operational semantics of the language, but was inspired by recent denotationallybased work of O’Hearn and Reynolds on translating Algol into a predicatively polymorphic l ..."
Abstract

Cited by 32 (3 self)
 Add to MetaCart
A parametric logical relation between the phrases of an Algollike language is presented. Its definition involves the structural operational semantics of the language, but was inspired by recent denotationallybased work of O’Hearn and Reynolds on translating Algol into a predicatively polymorphic linear lambda calculus. The logical relation yields an applicative characterisation of contextual equivalence for the language and provides a useful (and complete) method for proving equivalences. Its utility is illustrated by giving simple and direct proofs of some contextual equivalences, including an interesting equivalence due to O’Hearn which hinges upon the undefinability of ‘snapback ’ operations (and which goes beyond the standard suite of ‘MeyerSieber ’ examples). Whilst some of the mathematical intricacies of denotational semantics are avoided, the hard work in this operational approach lies in establishing the ‘fundamental property’ for the logical relation—the proof of which makes use of a compactness property of fixpoint recursion with respect to evaluation of phrases. But once this property has been established, the logical relation provides a verification method with an attractively low mathematical overhead. 1.
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 32 (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...
Semantic Foundations for Embedding HOL in Nuprl
 ALGEBRAIC METHODOLOGY AND SOFTWARE TECHNOLOGY
, 1996
"... We give a new semantics for Nuprl's constructive type theory that justifies a useful embedding of the logic of the HOL theorem prover inside Nuprl. The embedding gives Nuprl effective access to most of the large body of formalized mathematics that the HOL community has amassed over the last dec ..."
Abstract

Cited by 29 (2 self)
 Add to MetaCart
We give a new semantics for Nuprl's constructive type theory that justifies a useful embedding of the logic of the HOL theorem prover inside Nuprl. The embedding gives Nuprl effective access to most of the large body of formalized mathematics that the HOL community has amassed over the last decade. The new semantics is dramatically simpler than the old, and gives a novel and general way of adding settheoretic equivalence classes to untyped functional programming languages.
A Tutorial on Coinduction and Functional Programming
 IN GLASGOW FUNCTIONAL PROGRAMMING WORKSHOP
, 1994
"... Coinduction is an important tool for reasoning about unbounded structures. This tutorial explains the foundations of coinduction, and shows how it justifies intuitive arguments about lazy streams, of central importance to lazy functional programmers. We explain from first principles a theory based ..."
Abstract

Cited by 27 (1 self)
 Add to MetaCart
Coinduction is an important tool for reasoning about unbounded structures. This tutorial explains the foundations of coinduction, and shows how it justifies intuitive arguments about lazy streams, of central importance to lazy functional programmers. We explain from first principles a theory based on a new formulation of bisimilarity for functional programs, which coincides exactly with Morrisstyle contextual equivalence. We show how to prove properties of lazy streams by coinduction and derive Bird and Wadler's Take Lemma, a wellknown proof technique for lazy streams.
Reasoning about Functions with Effects
 See Gordon and Pitts
, 1997
"... ing and using (Lunif) we have that any two lambdas that are everywhere undefined are equivalent. The classic example of an everywhere undefined lambda is Bot 4 = x:app(x:app(x; x); x:app(x; x)) In f , another example of an everywhere undefined lambda is the "doforever" loop. Do 4 = f:Yv(Dox ..."
Abstract

Cited by 13 (1 self)
 Add to MetaCart
ing and using (Lunif) we have that any two lambdas that are everywhere undefined are equivalent. The classic example of an everywhere undefined lambda is Bot 4 = x:app(x:app(x; x); x:app(x; x)) In f , another example of an everywhere undefined lambda is the "doforever" loop. Do 4 = f:Yv(Dox:Do(f(x)) By the recursive definition, for any lambda ' and value v Do(')(v) \Gamma!Ø Do(')('(v)) Reasoning about Functions with Effects 21 In f , either '(v) \Gamma!Ø v 0 for some v 0 or '(v) is undefined. In the latter case the computation is undefined since the redex is undefined. In the former case, the computation reduces to Do(')(v 0 ) and on we go. The argument for undefinedness of Bot relies only on the (app) rule and will be valid in any uniform semantics. In contrast the argument for undefinedness of Do(') relies on the (fred.isdef) property of f . Functional Streams We now illustrate the use of (Lunifsim) computation to reason about streams represented as functions ...
A Note on Logical Relations Between Semantics and Syntax
, 1997
"... This note gives a new proof of the `operational extensionality' property of Abramsky's lazy lambda calculusnamely the coincidence of contextual equivalence with a coinductively defined notion of `applicative bisimilarity'. This purely syntactic result is here proved using a logical relation (due ..."
Abstract

Cited by 9 (0 self)
 Add to MetaCart
This note gives a new proof of the `operational extensionality' property of Abramsky's lazy lambda calculusnamely the coincidence of contextual equivalence with a coinductively defined notion of `applicative bisimilarity'. This purely syntactic result is here proved using a logical relation (due to Plotkin) between the syntax and its denotational semantics. The proof exploits a mixed inductive/coinductive characterisation of the logical relation recently discovered by the author.
Monadic Type Systems: Pure Type Systems for Impure Settings (Preliminary Report)
 In Proceedings of the Second HOOTS Workshop
, 1997
"... Pure type systems and computational monads are two parameterized frameworks that have proved to be quite useful in both theoretical and practical applications. We join the foundational concepts of both of these to obtain monadic type systems. Essentially, monadic type systems inherit the parameteriz ..."
Abstract

Cited by 8 (2 self)
 Add to MetaCart
Pure type systems and computational monads are two parameterized frameworks that have proved to be quite useful in both theoretical and practical applications. We join the foundational concepts of both of these to obtain monadic type systems. Essentially, monadic type systems inherit the parameterized higherorder type structure of pure type systems and the monadic term and type structure used to capture computational effects in the theory of computational monads. We demonstrate that monadic type systems nicely characterize previous work and suggest how they can support several new theoretical and practical applications. A technical foundation for monadic type systems is laid by recasting and scaling up the main results from pure type systems (confluence, subject reduction, strong normalisation for particular classes of systems, etc.) and from operational presentations of computational monads (notions of operational equivalence based on applicative similarity, coinduction proof techni...
A Classical SetTheoretic Model of Polymorphic Extensional Type Theory
, 1997
"... . We give a new semantic foundation for type theories in the lineage of MartinLof's "polymorphic extensional" type theory, and use it to give a model of the constructive type theory of the interactive theorem proving system Nuprl. These type theories are based on an operational semantics of an unty ..."
Abstract

Cited by 5 (1 self)
 Add to MetaCart
. We give a new semantic foundation for type theories in the lineage of MartinLof's "polymorphic extensional" type theory, and use it to give a model of the constructive type theory of the interactive theorem proving system Nuprl. These type theories are based on an operational semantics of an untyped programming language. We show how to integrate classical settheoretic objects, such as functionsasgraphs and equivalence classes, into this operational framework. The new semantics is dramatically simpler than the previous ones, and enables direct reasoning about classical mathematics. A practical consequence is that it justifies a useful embedding of the logic of the HOL theorem prover that gives Nuprl effective access to most of the large body of formalized mathematics that the HOL community has amassed over the years. 1 Introduction The socalled "polymorphic extensional" type theory of MartinLof (MartinLof, 1982) has two features that set it apart from other constructive type t...
Full Abstraction by Translation
 Proc., 3rd Workshop in Theory and Formal Methods
, 1996
"... This paper shows how a fully abstract model for a rich metalanguage like FPC can be used to prove theorems about other languages. In particular, we use results obtained from a game semantics of FPC to show that the natural translation of the lazy calculus into the metalanguage is fully abstract, th ..."
Abstract

Cited by 5 (0 self)
 Add to MetaCart
This paper shows how a fully abstract model for a rich metalanguage like FPC can be used to prove theorems about other languages. In particular, we use results obtained from a game semantics of FPC to show that the natural translation of the lazy calculus into the metalanguage is fully abstract, thus obtaining a new full abstraction result from an old one. The proofs involved are very easyall the hard work was done in giving the original games model. So far we have been unable to prove the completeness of our translation without recourse to the denotational model; we therefore have an indication of the worth of such fully abstract models. 1 Introduction Plotkin, in his CSLI notes [18], showed how denotational semantics can be viewed as a twostage process. First one defines a metalanguage which describes elements of the intended semantic model, usually some category of domains. Then to give semantics to a language L it suffices to translate it into the metalanguage. While this is ...