Results 1 
6 of
6
Algorithms from Theorems
 Programming Concepts and Methods
, 1990
"... In this paper we show how algorithms are derived from their specification in the BirdMeertens form,dl,m. The BirdMeertens 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 BirdMeertens form,dl,m. The BirdMeertens 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.
Solving Optimisation Problems with Catamorphisms
, 1992
"... . This paper contributes to an ongoing effort to construct a calculus for deriving programs for optimisation problems. The calculus is built around the notion of initial data types and catamorphisms which are homomorphisms on initial data types. It is shown how certain optimisation problems, which a ..."
Abstract

Cited by 11 (3 self)
 Add to MetaCart
. This paper contributes to an ongoing effort to construct a calculus for deriving programs for optimisation problems. The calculus is built around the notion of initial data types and catamorphisms which are homomorphisms on initial data types. It is shown how certain optimisation problems, which are specified in terms of a relational catamorphism, can be solved by means of a functional catamorphism. The result is illustrated with a derivation of Kruskal's algorithm for finding a minimum spanning tree in a connected graph. 1 Introduction Efficient algorithms for solving optimisation problems can sometimes be expressed as homomorphisms on initial data types. Such homomorphisms, which correspond to the familiar fold operators in functional programming, are called catamorphisms. In this paper, we give conditions under which an optimisation problem can be solved by a catamorphism. Our results are a natural generalisation of earlier work by Jeuring [5, 6], who considered the same problem ...
Generic Programming With Relations and Functors
 Journal of Functional Programming
, 1999
"... This paper explores the idea of generic programming in which programs are parameterised by data types. Part of the constructive theory of lists, specically the part dealing with properties of segments, is generalised in two ways: from lists to arbitrary inductive data types, and from functions to ..."
Abstract

Cited by 9 (6 self)
 Add to MetaCart
This paper explores the idea of generic programming in which programs are parameterised by data types. Part of the constructive theory of lists, specically the part dealing with properties of segments, is generalised in two ways: from lists to arbitrary inductive data types, and from functions to relations. The new theory is used to solve a generic problem about segments. 1 Introduction To what extent is it possible to construct programs without knowing exactly what data types are involved? At rst sight this may seem a strange question, but consider the case of pattern matching. Over lists, this problem can be formulated in terms of two strings, a pattern and a text; the object is to determine if and where the pattern occurs as a segment of the text. Now, pattern matching can be generalised to other data types, including arrays and trees of various kinds; the essential step is to be able to dene the notion of `segment' in these types. So the intriguing question arises: can one...
An InitialAlgebra Approach to Directed Acyclic Graphs
, 1995
"... . The initialalgebra approach to modelling datatypes consists of giving constructors for building larger objects of that type from smaller ones, and laws identifying di#erentways of constructing the same object. The recursive decomposition of objects of the datatype leads directly to a recursiv ..."
Abstract

Cited by 5 (0 self)
 Add to MetaCart
. The initialalgebra approach to modelling datatypes consists of giving constructors for building larger objects of that type from smaller ones, and laws identifying di#erentways of constructing the same object. The recursive decomposition of objects of the datatype leads directly to a recursive pattern of computation on those objects, whichisvery helpful for both functional and parallel programming. We showhow to model a particular kind of directed acyclic graph using this initialalgebra approach. Keywords. Graphs, data types, catamorphisms, initial algebras, BirdMeertens Formalism, program derivation. 1 Introduction It is now widely recognized that the traditional adhoc approaches to program construction do not yield reliable software; a more systematic and formal approach is required. One such approach consists of program veri#cationproving after the fact that a given program satis#es its formal speci#cation. This approach turns out to be di#cult to implement, not lea...
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 (4 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: BirdMeertens calculus for program construction, incremen...
Using underspecification in the derivation of some optimal partition algorithms
, 1990
"... Indeterminacy is inherent in the specification of optimal partition (and many more) algorithms, even though the algorithms themselves may be fully determinate. Indeterminacy is a notoriously hard phenomenon to deal with in a purely functional setting. In the paper “A Calculus Of Functions for Progra ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
Indeterminacy is inherent in the specification of optimal partition (and many more) algorithms, even though the algorithms themselves may be fully determinate. Indeterminacy is a notoriously hard phenomenon to deal with in a purely functional setting. In the paper “A Calculus Of Functions for Program Derivation ” R. S. Bird tries to handle it by using underspecified functions. (Other authors have proposed to use ‘indeterminate ’ functions, and to use relations instead of functions.) In this paper we redo Bird’s derivation of the Leery and Greedy algorithm while being very precise about underspecification, and still staying in the functional framework. It turns out that Bird’s theorems are not exactly what one would like to have, and what one might understand from his wording of the theorems. We also give a derivation in the BirdMeertens style of a (linear time) optimal partition algorithm that was originally found by J. C. S. P. van der Woude. 1