Results 1 -
8 of
8
Elements of a Relational Theory of Datatypes
- Formal Program Development, volume 755 of Lecture Notes in Computer Science
, 1993
"... The "Boom hierarchy" is a hierarchy of types that begins at the level of trees and includes lists, bags and sets. This hierarchy forms the basis for the calculus of total functions developed by Bird and Meertens, and which has become known as the "BirdMeertens formalism". This paper describes a hie ..."
Abstract
-
Cited by 33 (0 self)
- Add to MetaCart
The "Boom hierarchy" is a hierarchy of types that begins at the level of trees and includes lists, bags and sets. This hierarchy forms the basis for the calculus of total functions developed by Bird and Meertens, and which has become known as the "BirdMeertens formalism". This paper describes a hierarchy of types that logically precedes the Boom hierarchy. We show how the basic operators of the Bird-Meertens formalism (map, reduce and filter) can be introduced in a logical sequence by beginning with a very simple structure and successively refining that structure. The context of this work is a relational theory of datatypes, rather than a calculus of total functions. Elements of the theory necessary to the later discussion are summarised at the beginning of the paper. 1 Introduction This paper reports on an experiment into the design of a programming algebra. The algebra is an algebra of datatypes oriented towards the calculation of polymorphic functions and relations. Its design d...
An Exploration of the Bird-Meertens Formalism
- In STOP Summer School on Constructive Algorithmics, Abeland
, 1989
"... Two formalisms that have been used extensively in the last few years for the calculation of programs are the Eindhoven quantifier notation and the formalism developed by Bird and Meertens. Although the former has always been applied with ultimate goal the derivation of imperative programs and th ..."
Abstract
-
Cited by 31 (3 self)
- Add to MetaCart
Two formalisms that have been used extensively in the last few years for the calculation of programs are the Eindhoven quantifier notation and the formalism developed by Bird and Meertens. Although the former has always been applied with ultimate goal the derivation of imperative programs and the latter with ultimate goal the derivation of functional programs there is a remarkable similarity in the formal games that are played. This paper explores the Bird-Meertens formalism by expressing and deriving within it the basic rules applicable in the Eindhoven quantifier notation. 1 Calculation was an endless delight to Moorish scholars. They loved problems, they enjoyed finding ingenious methods to solve them, and sometimes they turned their methods into mechanical devices. (J. Bronowski, The Ascent of Man. Book Club Associates: London (1977).) 1 Introduction Our ability to calculate --- whether it be sums, products, differentials, integrals, or whatever --- would be woefull...
Algorithms from Theorems
- Programming Concepts and Methods
, 1990
"... In this paper we show how algorithms are derived from their specification in the Bird-Meertens form,dl,m. The Bird-Meertens formalism is a programming methodology which provides a concise functional notation for algorithms and for every data structure a promotion theorem for proving equalities of ..."
Abstract
-
Cited by 11 (5 self)
- Add to MetaCart
In this paper we show how algorithms are derived from their specification in the Bird-Meertens form,dl,m. The Bird-Meertens formalism is a programming methodology which provides a concise functional notation for algorithms and for every data structure a promotion theorem for proving equalities of functions.
(Relational) Programming Laws in the Boom Hierarchy of Types
- Mathematics of Program Construction
, 1992
"... . In this paper we demonstrate that the basic rules and calculational techniques used in two extensively documented program derivation methods can be expressed, and, indeed, can be generalised within a relational theory of datatypes. The two methods to which we refer are the so-called "Bird-Meertens ..."
Abstract
-
Cited by 8 (1 self)
- Add to MetaCart
. In this paper we demonstrate that the basic rules and calculational techniques used in two extensively documented program derivation methods can be expressed, and, indeed, can be generalised within a relational theory of datatypes. The two methods to which we refer are the so-called "Bird-Meertens formalism" (see [22]) and the "Dijkstra-Feijen calculus" (see [15]). The current paper forms an abridged, though representative, version of a complete account of the algebraic properties of the Boom hierarchy of types [19, 18]. Missing is an account of extensionality and the so-called crossproduct. 1 Introduction The "Bird-Meertens formalism" (to be more precise, our own conception of it) is a calculus of total functions based on a small number of primitives and a hierarchy of types including trees and lists. The theory was set out in an inspiring paper by Meertens [22] and has been further refined and applied in a number of papers by Bird and Meertens [8, 9, 11, 12, 13]. Its beauty deriv...
Incremental Algorithms on Lists
- Proceedings SION Computing Science in the Netherlands
, 1991
"... Incremental computations can improve the performance of interactive programs such as spreadsheet programs, program development environments, text editors, etc. Incremental algorithms describe how to compute a required value depending on the input, after the input has been edited. By considering the ..."
Abstract
-
Cited by 4 (3 self)
- Add to MetaCart
Incremental computations can improve the performance of interactive programs such as spreadsheet programs, program development environments, text editors, etc. Incremental algorithms describe how to compute a required value depending on the input, after the input has been edited. By considering the possible different edit actions on the data type lists, the basic data type used in spreadsheet programs and text editors, we define incremental algorithms on lists. Some theory for the construction of incremental algorithms is developed, and we give an incremental algorithm for a more involved example: formatting a text. CR categories and descriptors: D11 [Software]: Programming Techniques --- Applicative Programming, D43 [Software]: Programming Languages --- Language constructs, I22 [Artificial Intelligence]: Automatic Programming --- Program transformation. General terms: algorithm, design, theory. Additional keywords and phrases: Bird-Meertens calculus for program construction, incremen...
Bridging the Algorithm Gap: A Linear-time Functional Program for Paragraph Formatting
- Science of Computer Programming
, 1997
"... In the constructive programming community it is commonplace to see formal developments of textbook algorithms. In the algorithm design community, on the other hand, it may be well known that the textbook solution to a problem is not the most efficient possible. However, in presenting the more eff ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
In the constructive programming community it is commonplace to see formal developments of textbook algorithms. In the algorithm design community, on the other hand, it may be well known that the textbook solution to a problem is not the most efficient possible. However, in presenting the more efficient solution, the algorithm designer will usually omit some of the implementation details, thus creating an algorithm gap between the abstract algorithm and its concrete implementation. This is in contrast to the formal development, which usually presents the complete concrete implementation of the less efficient solution. We claim that the algorithm designer is forced to omit some of the details by the relative expressive poverty of the Pascal-like languages typically used to present the solution; the greater expressiveness provided by a functional language allows the whole story to be told in a reasonable amount of space. We therefore hope to bridge the algorithm gap between ab...
Relative Specification and Transformational Reuse of Functional Programs
- Lisp and Symbolic Computation
, 1990
"... A relative specification is a collection of laws relating the behaviour of a required new program to that of one or more existing programs. A two stage method for transforming such relative specifications into effective functional programs is described and illustrated. The inversion stage re-arrang ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
A relative specification is a collection of laws relating the behaviour of a required new program to that of one or more existing programs. A two stage method for transforming such relative specifications into effective functional programs is described and illustrated. The inversion stage re-arranges the specifying laws to obtain a collection of partial definitions for each unknown function, typically involving non-deterministic operators. The subsequent fusion stage combines each set of partial definitions into a single complete definition, thereby eliminating non-deterministic operators. Keywords: semantics and reasoning about programs, program transformations, specifications. 1 Introduction The first assumption of this paper is a preference for mathematical precision in the development of computer programs. Ideal program development begins with a formal specification of required behaviour, and proceeds by way of conjectures, laws, proofs, transformations, calculi and the like unti...

