Results 1  10
of
10
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 p ..."
Abstract

Cited by 43 (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 BirdMeertens 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 BirdMeertens 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 32 (3 self)
 Add to MetaCart
(Show Context)
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 BirdMeertens 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...
Calculating A Path Algorithm
 Science of Computer Programming
, 1992
"... . A calculational derivation is given of an abstract path algorithm, one instance of the algorithm being Dijkstra's shortestpath algorithm, another being breadthfirst/depthfirst search of a directed graph. The basis for the derivation is the algebra of regular languages. 1 Problem Statem ..."
Abstract

Cited by 9 (2 self)
 Add to MetaCart
(Show Context)
. A calculational derivation is given of an abstract path algorithm, one instance of the algorithm being Dijkstra's shortestpath algorithm, another being breadthfirst/depthfirst search of a directed graph. The basis for the derivation is the algebra of regular languages. 1 Problem Statement Given is a (nonempty) set N and a j N j \Theta j N j matrix A, the rows and columns of which are indexed by elements of N . It is assumed that the matrix elements are drawn from a regular algebra 1 (S; +; \Delta; ; 0; 1) having the two additional properties that the ordering induced 2 by + is a total ordering (1) on the elements of S; and 1 is the largest element in the ordering: (2) In addition to N and A, one is given a 1\Theta j N j matrix b. Hereafter 1\Theta j N j matrices will be called "vectors", 1 \Theta 1 matrices will be called "elements" and j N j \Theta j N j matrices will be called "matrices". The problem is to derive an algorithm to compute the vector b \Delta A wher...
(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 socalled "BirdMee ..."
Abstract

Cited by 9 (1 self)
 Add to MetaCart
(Show Context)
. 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 socalled "BirdMeertens formalism" (see [22]) and the "DijkstraFeijen 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 socalled crossproduct. 1 Introduction The "BirdMeertens 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...
Making Formality Work For Us
 EATCS Bulletin
, 1989
"... Formal reasoning is notoriously long and arduous; in order to use it to reason effectively in the construction of programs it is, therefore, paramount that we design our notations to be both clear and economical. Taking examples from AI, from imperative programming, from the use of the BirdMeer ..."
Abstract

Cited by 7 (2 self)
 Add to MetaCart
(Show Context)
Formal reasoning is notoriously long and arduous; in order to use it to reason effectively in the construction of programs it is, therefore, paramount that we design our notations to be both clear and economical. Taking examples from AI, from imperative programming, from the use of the BirdMeertens formalism and from category theory we demonstrate how the right choice of what to denote and how it is denoted can make significant improvements to formal calculations. Brief mention is also made of the connection between economical notation and properties of type. 1 2 Foreword Earlier this year I was an invited speaker at the 5th British Computer Society Theoretical Computer Science Colloquium held at Royal Holloway and Bedford New College, London. Before you is the text of my lecture, almost but not quite as given at the conference. (Perhaps the best way to describe the present paper is as the lecture that I should have given.) The publication of the text of the lecture will, ...
Inductive Datatypes with Laws and Subtyping – A Relational Model
 Faculty of Mathematics and Computing
"... ..."
(Show Context)
Formal Feasibility Conditions for Earliest Deadline First Scheduling
, 1994
"... A practical condition is presented for feasibility of dynamic scheduling without preemption in uniprocessor realtime systems. For a task b, let r:b, d:b, and e:b be the release time, the deadline, and the maximal execution time, respectively. Let ub be an upper bound for the execution times of all ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
(Show Context)
A practical condition is presented for feasibility of dynamic scheduling without preemption in uniprocessor realtime systems. For a task b, let r:b, d:b, and e:b be the release time, the deadline, and the maximal execution time, respectively. Let ub be an upper bound for the execution times of all tasks under consideration. For a set of tasks B, and for numbers R and D, let w(B;R;D) be the sum åe:b where b ranges over the elements b 2 B with R r:b and d:b D. Task set B is said to have load fraction u if w(B;R;D) u (D \Gamma R \Gamma ub) holds for all R and D with w(B;R;D) ? 0. It is formally proved that, if B is a task set with load fraction 1, the earliest deadline first schedule without preemption is such that all tasks meet their deadlines. It is shown that the load fractions of practical task sets can often be estimated. 1 Introduction The general scheduling problem is to determine for a given set of tasks an order according to which the tasks are to be executed such that ...
Deriving the AhoCorasick Algorithms: A Case Study into the Synergy of Programming Methods
, 1993
"... Imperative programs can be derived using methods like stepwise refinement, but they do not lend themselves very well to transformational programming. The BirdMeertens approach offers a powerful transformation calculus for functional programs, but it pays little or no attention to imperative algorit ..."
Abstract
 Add to MetaCart
(Show Context)
Imperative programs can be derived using methods like stepwise refinement, but they do not lend themselves very well to transformational programming. The BirdMeertens approach offers a powerful transformation calculus for functional programs, but it pays little or no attention to imperative algorithms. In this paper we will show how the two approaches can be combined by giving a transformational derivation of some efficient and practical imperative programs, viz. the AhoCorasick string pattern matching algorithms.
A Hardware Supported Operating System Kernel for Embedded Hard Real Time Applications
"... In this paper a concept of the kernel, i.e., the time critical part of a real time operating system and its dedicated coprocessor, especially tailored for embedded applications, are presented. The coprocessor acts as a system controller and operates in conjunction with one or more conventional pro ..."
Abstract
 Add to MetaCart
In this paper a concept of the kernel, i.e., the time critical part of a real time operating system and its dedicated coprocessor, especially tailored for embedded applications, are presented. The coprocessor acts as a system controller and operates in conjunction with one or more conventional processors in hard real time environments. It is composed of three physically and clearly separated layers which vary with regard to implementation, speed, and complexity. Correspondingly, the model of the operating system kernel is hierarchically structured, and functions are mapped to these layers, observing the inherent parallelism of recognition and handling of different kinds of events expected in such environments and higher level kernel functions like tasking operations. The operating system functions are supported by the high level real time programming language constructs. Since many embedded systems are safety related, the software employed must be highly dependable. Therefore, the ke...
ModelBased Specification
, 2000
"... Introduction Procedures in an imperative programming language are specified by means of a precondition and a postcondition, expressed in the procedure's parameters and any global variables that are referenced. A simple way of looking at methods in objectoriented languages, suggested by early ..."
Abstract
 Add to MetaCart
(Show Context)
Introduction Procedures in an imperative programming language are specified by means of a precondition and a postcondition, expressed in the procedure's parameters and any global variables that are referenced. A simple way of looking at methods in objectoriented languages, suggested by early implementations, is to regard these as procedures with one special parameter that is written before the method name in method calls. This parameter is not explicitly present in the method's definition, but can be retrieved via the keyword this or self. The specification style suggested by this view is the use of pre and postconditions expressed in both this and the method's explicit parameters. Here the question arises what kind of assertions are permitted about the state of this and other objects among the parameters. The simplest way to view object types, as made explicit in Oberon2 [13], is as a special kind of record t