Results 1 
8 of
8
A Theory of Program Refinement
, 1998
"... We give a canonical program refinement calculus based on the lambda calculus and classical firstorder predicate logic, and study its proof theory and semantics. The intention is to construct a metalanguage for refinement in which basic principles of program development can be studied. The idea is t ..."
Abstract

Cited by 7 (1 self)
 Add to MetaCart
(Show Context)
We give a canonical program refinement calculus based on the lambda calculus and classical firstorder predicate logic, and study its proof theory and semantics. The intention is to construct a metalanguage for refinement in which basic principles of program development can be studied. The idea is that it should be possible to induce a refinement calculus in a generic manner from a programming language and a program logic. For concreteness, we adopt the simplytyped lambda calculus augmented with primitive recursion as a paradigmatic typed functional programming language, and use classical firstorder logic as a simple program logic. A key feature is the construction of the refinement calculus in a modular fashion, as the combination of two orthogonal extensions to the underlying programming language (in this case, the simplytyped lambda calculus). The crucial observation is that a refinement calculus is given by extending a programming language to allow indeterminate expressions (or ‘stubs’) involving the construction ‘some program x such that P ’. Factoring this into ‘some x...’
Algebraic Methods for Optimization Problems
"... We argue for the benefits of relations over functions for modelling programs, and even more so for modelling specifications. To support this argument, we present an extended case study for a class of optimization problems, deriving efficient functional programs from concise relational specificatio ..."
Abstract

Cited by 5 (2 self)
 Add to MetaCart
We argue for the benefits of relations over functions for modelling programs, and even more so for modelling specifications. To support this argument, we present an extended case study for a class of optimization problems, deriving efficient functional programs from concise relational specifications.
Specificational Functions
"... this paper, and nothing of substance in what follows depends on it. Note that (2x:T j true) differs from ? T in that ? T is refined even by a "nonterminating" expression such as an application of the recursive function f where f = x:T ffl f x. There is a bottom for each type, indicated by ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
this paper, and nothing of substance in what follows depends on it. Note that (2x:T j true) differs from ? T in that ? T is refined even by a "nonterminating" expression such as an application of the recursive function f where f = x:T ffl f x. There is a bottom for each type, indicated by subscripting, but we nearly always omit the type, either because it is not significant in the context, or it can be easily inferred. In refinement calculi, partial operations such as 3=0 are commonly equated with ?, and similarly for nonterminating expressions. It is also customary to use ? as a "don't care" term by which the customer indicates that she has no interest in the outcomes. Although it may be useful in other contexts to distinguish these various roles for ?, in program derivation they are similar in that they represent error situations in which the outcome is unpredictable and unconstrained.
Towards a ML extension with Refinement: a Semantic Issue
, 2006
"... Abstract. Refinement is a method to derive correct programs from specifications. A rich type language is another way to ensure program correctness. In this paper, we propose a widespectrum language mixing both approaches for the ML language. Mainly, base types are simply included into expressions, ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
(Show Context)
Abstract. Refinement is a method to derive correct programs from specifications. A rich type language is another way to ensure program correctness. In this paper, we propose a widespectrum language mixing both approaches for the ML language. Mainly, base types are simply included into expressions, introducing underdeterminism and dependent types. We focus on the semantic aspects of such a language. We study three different semantics: a denotational, a deterministic operational and a nondeterministic operational semantics. We prove their equivalence. We show that this language is a conservative extension of ML. 1
91405 ORSAY Cedex (France) Towards a ML Extension with Refinement: a Semantic Issue
"... Abstract. Refinement is a method to derive correct programs from specifications. A rich type language is another way to ensure program correctness. In this paper, we propose a widespectrum language mixing both approaches for the ML language. Mainly, base types are simply included into expressions, ..."
Abstract
 Add to MetaCart
(Show Context)
Abstract. Refinement is a method to derive correct programs from specifications. A rich type language is another way to ensure program correctness. In this paper, we propose a widespectrum language mixing both approaches for the ML language. Mainly, base types are simply included into expressions, introducing underdeterminism and dependent types. We focus on the semantic aspects of such a language. We study three different semantics: a denotational, a deterministic operational and a nondeterministic operational semantics. We prove their equivalence. We show that this language is a conservative extension of ML. 1
Intuitionistic Refinement Calculus An extended version of [Bou07a] examplified on the game of Nim
, 2007
"... Refinement calculi are program logics which formalize the “topdown ” methodology of software development promoted by Dijkstra and Wirth in the early days of structured programming. I present here the shallow embedding of a refinement calculus into Coq constructive type theory. This embedding involv ..."
Abstract
 Add to MetaCart
(Show Context)
Refinement calculi are program logics which formalize the “topdown ” methodology of software development promoted by Dijkstra and Wirth in the early days of structured programming. I present here the shallow embedding of a refinement calculus into Coq constructive type theory. This embedding involves monad transformers and the computational reflexion of weakestpreconditions, using a continuation passing style. It should allow to reason about many ML programs combining nonfunctional features (state, exceptions, etc) with purely functional ones (higherorder functions, structural recursion, etc). The interest of combining higherorder functions and imperative state modifications is examplified here on the modelization of the game of Nim. 1
I Went Down To The Crossroads:
"... Abstract. This paper attempts to address software specification, design and implementation reuse by bringing together work from a number of areas of program development. Refinement calculi are based on widespectrum languages that include abstract, logical specifications, which are transformed into e ..."
Abstract
 Add to MetaCart
(Show Context)
Abstract. This paper attempts to address software specification, design and implementation reuse by bringing together work from a number of areas of program development. Refinement calculi are based on widespectrum languages that include abstract, logical specifications, which are transformed into executable programs. Functional and relational calculi allow programs and specifications to be manipulated using higherorder operations in powerful algebraic setting. Promotion is used in the Z specification notation to allow simple operations to be reused within a more complex framework. Specification conjunction has also been used in refinement calculi as an aid to reuse. We provide a series of examples that bring various elements of these areas together. Our examples centre on programs that can be elegantly specified by a calculation of all permutations of an input list, combined with some restriction on these permutations. This paper represents work in progress, so some of the examples are incomplete and, therefore, do not serve as convincing positive examples of the method. Also, much of the work has not been completely formalised. Our main contribution is to show that the combined approach can work in some cases and, when it does work, it is extremely profitable.