Results 1  10
of
22
Biorthogonality, StepIndexing and Compiler Correctness
, 2009
"... We define logical relations between the denotational semantics of a simply typed functional language with recursion and the operational behaviour of lowlevel programs in a variant SECD machine. The relations, which are defined using biorthogonality and stepindexing, capture what it means for a piec ..."
Abstract

Cited by 25 (10 self)
 Add to MetaCart
We define logical relations between the denotational semantics of a simply typed functional language with recursion and the operational behaviour of lowlevel programs in a variant SECD machine. The relations, which are defined using biorthogonality and stepindexing, capture what it means for a piece of lowlevel code to implement a mathematical, domaintheoretic function and are used to prove correctness of a simple compiler. The results have been formalized in the Coq proof assistant.
Notions of computability at higher types I
 In Logic Colloquium 2000
, 2005
"... We discuss the conceptual problem of identifying the natural notions of computability at higher types (over the natural numbers). We argue for an eclectic approach, in which one considers a wide range of possible approaches to defining higher type computability and then looks for regularities. As a ..."
Abstract

Cited by 12 (5 self)
 Add to MetaCart
(Show Context)
We discuss the conceptual problem of identifying the natural notions of computability at higher types (over the natural numbers). We argue for an eclectic approach, in which one considers a wide range of possible approaches to defining higher type computability and then looks for regularities. As a first step in this programme, we give an extended survey of the di#erent strands of research on higher type computability to date, bringing together material from recursion theory, constructive logic and computer science. The paper thus serves as a reasonably complete overview of the literature on higher type computability. Two sequel papers will be devoted to developing a more systematic account of the material reviewed here.
Constructive Data Refinement in Typed Lambda Calculus
, 2000
"... . A new treatment of data refinement in typed lambda calculus is proposed, based on prelogical relations [HS99] rather than logical relations as in [Ten94], and incorporating a constructive element. Constructive data refinement is shown to have desirable properties, and a substantial example of ..."
Abstract

Cited by 12 (7 self)
 Add to MetaCart
. A new treatment of data refinement in typed lambda calculus is proposed, based on prelogical relations [HS99] rather than logical relations as in [Ten94], and incorporating a constructive element. Constructive data refinement is shown to have desirable properties, and a substantial example of refinement is presented. 1 Introduction Various treatments of data refinement in the context of typed lambda calculus, beginning with Tennent's in [Ten94], have used logical relations to formalize the intuitive notion of refinement. This work has its roots in [Hoa72], which proposes that the correctness of a concrete version of an abstract program be verified using an invariant on the domain of concrete values together with a function mapping concrete values (that satisfy the invariant) to abstract values. In algebraic terms, what is required is a homomorphism from a subalgebra of the concrete algebra to the abstract algebra. A strictly more general method is to take a homomorphic relatio...
Duality between CallbyName Recursion and CallbyValue Iteration
 IN PROC. COMPUTER SCIENCE LOGIC, SPRINGER LECTURE NOTES IN COMPUT. SCI
, 2001
"... We investigate the duality between callbyname recursion and callbyvalue iteration on the λµcalculi. The duality between callbyname and callbyvalue was first studied by Filinski, and Selinger has studied the categorytheoretic duality on the models of the callbyname λµcalculus and the cal ..."
Abstract

Cited by 9 (4 self)
 Add to MetaCart
(Show Context)
We investigate the duality between callbyname recursion and callbyvalue iteration on the λµcalculi. The duality between callbyname and callbyvalue was first studied by Filinski, and Selinger has studied the categorytheoretic duality on the models of the callbyname λµcalculus and the callbyvalue one. We extend the callbyname λµcalculus and the callbyvalue one with a fixedpoint operator and an iteration operator, respectively. We show that the dual translations constructed by Selinger can be expanded into our extended λµcalculi, and we also discuss their implications to practical applications.
A Logic for Probabilities in Semantics
, 2003
"... Probabilistic computation has proven to be a challenging and interesting area of research, both from the theoretical perspective of denotational semantics and the practical perspective of reasoning about probabilistic algorithms. On the theoretical side, the probabilistic powerdomain of Jones and Pl ..."
Abstract

Cited by 9 (1 self)
 Add to MetaCart
Probabilistic computation has proven to be a challenging and interesting area of research, both from the theoretical perspective of denotational semantics and the practical perspective of reasoning about probabilistic algorithms. On the theoretical side, the probabilistic powerdomain of Jones and Plotkin represents a significant advance. Further work, especially by AlvarezManilla, has greatly improved our understanding of the probabilistic powerdomain, and has helped clarify its relation to classical measure and integration theory. On the practical side, many researchers such as Kozen, Segala, Desharnais, and Kwiatkowska, among others, study problems of verification for probabilistic computation by defining various suitable logics for the classes of processes under study. The work reported here begins to bridge the gap between the domain theoretic and verification (model checking) perspectives on probabilistic computation by exhibiting sound and complete logics for probabilistic powerdomains that arise directly from given logics for the underlying domains. The category in which the construction is carried out generalizes Scott’s Information Systems by taking account of full classical sequents. Via Stone duality, following Abramsky’s Domain Theory in Logical Form, all known interesting categories of domains are embedded as subcategories. So the results reported here properly generalize similar constructions on specific categories of domains. The category offers a promising universe of semantic domains characterized by a very rich structure and good preservation properties of standard constructions. Furthermore, because the logical constructions make use of full classical sequents, the morphisms have a natural nondeterministic interpretation. Thus the category is a natural one in which to investigate the relationship between probabilistic and nondeterministic computation. We discuss the problem of integrating probabilistic and nondeterministic computation after presenting the construction of logics for probabilistic powerdomains.
RZ: A tool for bringing constructive and computable mathematics closer to programming practice
 CiE 2007: Computation and Logic in the Real World, volume 4497 of LNCS
, 2007
"... Abstract. Realizability theory can produce code interfaces for the data structure corresponding to a mathematical theory. Our tool, called RZ, serves as a bridge between constructive mathematics and programming by translating specifications in constructive logic into annotated interface code in Obje ..."
Abstract

Cited by 6 (3 self)
 Add to MetaCart
(Show Context)
Abstract. Realizability theory can produce code interfaces for the data structure corresponding to a mathematical theory. Our tool, called RZ, serves as a bridge between constructive mathematics and programming by translating specifications in constructive logic into annotated interface code in Objective Caml. The system supports a rich input language allowing descriptions of complex mathematical structures. RZ does not extract code from proofs, but allows any implementation method, from handwritten code to code extracted from proofs by other tools. 1
Program Logics for Sequential HigherOrder Control
"... We introduce a Hoare logic for higherorder functional languages with control operators such as callcc. The key idea is to build the assertion language and proof rules on the basis of types that generalise the standard types for control operators (for ’jumpingto’) with dual types (for ’beingjumpe ..."
Abstract

Cited by 5 (3 self)
 Add to MetaCart
(Show Context)
We introduce a Hoare logic for higherorder functional languages with control operators such as callcc. The key idea is to build the assertion language and proof rules on the basis of types that generalise the standard types for control operators (for ’jumpingto’) with dual types (for ’beingjumpedto’). This enables the assertion language to capture precisely the intensional and extensional effects of jumps by internalising rely/guarantee reasoning, leading to simple proof rules for callbyvalue PCF with callcc and/or nameabstraction. All new operators come with powerful associated axioms. We show that the logic allows specification and reasoning about nontrivial examples of using callcc. The logic matches exactly with the operational semantics of the target language (observational completeness), is relatively complete in Cook’s sense and allows efficient generation of characteristic formulae.
What is a pure functional
 of Lecture
"... Abstract. Given an ML function f: (int>int)>int how can we rigorously specify that f is pure, i.e., produces no sideeffects other than those arising from calling its functional argument? We show that existing methods based on preservation of invariants and relational parametricity are ins ..."
Abstract

Cited by 3 (3 self)
 Add to MetaCart
(Show Context)
Abstract. Given an ML function f: (int>int)>int how can we rigorously specify that f is pure, i.e., produces no sideeffects other than those arising from calling its functional argument? We show that existing methods based on preservation of invariants and relational parametricity are insufficient for this purpose and thus define a new notion that captures purity in the sense that for any functional F that is pure in this sense there exists a corresponding questionanswer strategy. This research is motivated by an attempt to prove algorithms correct that take such supposedly pure functionals as input and apply them to stateful arguments in order to inspect intensional aspects of their behaviour. 1
An Implementation of Parallel Patternmatching via Concurrent Haskell
 Australian Computer Science Communications
, 2002
"... Parallel patternmatching offers the maximum laziness for programs written in lazy functional languages. Function arguments are evaluated concurrently and all arguments are given equal precedence, so functions can return results whenever possible in the presence of errors or infinite computations. W ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
Parallel patternmatching offers the maximum laziness for programs written in lazy functional languages. Function arguments are evaluated concurrently and all arguments are given equal precedence, so functions can return results whenever possible in the presence of errors or infinite computations. We describe the motivation for and the semantics of parallel patternmatching. We also describe the first available implementation of Haskell with parallel patternmatching. The implementation works via a sourcetosource translation into Concurrent Haskell, using the existing facilities of GHC to provide the required concurrency. Various transformation techniques are outlined which can help to reduce the degree and cost of the concurrency required to satisfy the semantics.