Results 1  10
of
12
Derivation of Data Intensive Algorithms by Formal Transformation: The SchorrWaite Graph Marking Algorithm
, 1996
"... In this paper we consider a particular class of algorithms which present certain difficulties to formal verification. These are algorithms which use a single data structure for two or more purposes, which combine program control information with other data structures or which are developed as a comb ..."
Abstract

Cited by 36 (25 self)
 Add to MetaCart
In this paper we consider a particular class of algorithms which present certain difficulties to formal verification. These are algorithms which use a single data structure for two or more purposes, which combine program control information with other data structures or which are developed as a combination of a basic idea with an implementation technique. Our approach is based on applying proven semanticspreserving transformation rules in a wide spectrum language. Starting with a set theoretical specification of "reachability" we are able to derive iterative and recursive graph marking algorithms using the "pointer switching" idea of Schorr and Waite. There have been several proofs of correctness of the SchorrWaite algorithm, and a small number of transformational developments of the algorithm. The great advantage of our approach is that we can derive the algorithm from its specification using only generalpurpose transformational rules: without the need for complicated induction arg...
Foundations for a Practical Theory of Program Refinement and Transformation
, 1994
"... A wide spectrum language is presented, which is designed to facilitate the proof of the correctness of refinements and transformations. Two different proof methods are introduced and used to prove some fundamental transformations, including a general induction rule (Lemma 3.9) which enables transfor ..."
Abstract

Cited by 21 (14 self)
 Add to MetaCart
A wide spectrum language is presented, which is designed to facilitate the proof of the correctness of refinements and transformations. Two different proof methods are introduced and used to prove some fundamental transformations, including a general induction rule (Lemma 3.9) which enables transformations of recursive and iterative programs to be proved by induction on their finite truncations. A theorem for proving the correctness of recursive implementations is presented (Theorem 3.21), which provides a method for introducing a loop, without requiring the user to provide a loop invariant. A powerful, general purpose, transformation for removing or introducing recursion is described and used in a case study (Section 5) in which we take a small, but highly complex, program and apply formal transformations in order to uncover an abstract specification of the behaviour of the program. The transformation theory supports a transformation system, called FermaT, in which the applicability conditions of each transformation (and hence the correctness of the result) are mechanically verified. These results together considerably simplify the construction of viable program transformation tools; practical consequences are briefly discussed.
Derivation of a Sorting Algorithm
, 1999
"... > nioj S. 2 An Example of an Algorithm Derivation In this section we sketch the derivation of a version of Hoare's Quicksort algorithm [3]. This illustrates the use of the join construct in writing concise abstract specications which can be transformed into ecient algorithms. It also illustrates t ..."
Abstract

Cited by 19 (16 self)
 Add to MetaCart
> nioj S. 2 An Example of an Algorithm Derivation In this section we sketch the derivation of a version of Hoare's Quicksort algorithm [3]. This illustrates the use of the join construct in writing concise abstract specications which can be transformed into ecient algorithms. It also illustrates the application of the theorem on recursive implementation of statements (Theorem 2) and the renement rules. 2.1 Notation We use a : : b to represent the sequence of integers from a to b inclusive. If A is an array then A[a : : b] represents the sequence of array elements A[a] to A[b] inclusive. On the left hand side of an assignment it indicates that A takes on a new value with only those elements changed. If m
Pigs from Sausages? Reengineering from Assembler to C via FermaT Transformations
 Science of Computer Programming, Special Issue on Program Transformation 52
, 2004
"... Software reengineering has been described as being "about as easy as reconstructing a pig from a sausage" [11]. But the development of program transformation theory, as embodied in the FermaT transformation system, has made this miraculous feat into a practical possibility. This paper describes the ..."
Abstract

Cited by 19 (5 self)
 Add to MetaCart
Software reengineering has been described as being "about as easy as reconstructing a pig from a sausage" [11]. But the development of program transformation theory, as embodied in the FermaT transformation system, has made this miraculous feat into a practical possibility. This paper describes the theory...
A Recursion Removal Theorem  Proof and Applications
, 1999
"... In this paper we briey introduce a Wide Spectrum Language and its transformation theory and describe a recent success of the theory: a general recursion removal theorem. This theorem includes as special cases the two techniques discussed by Knuth [12] and Bird [7]. We describe some applications of t ..."
Abstract

Cited by 11 (8 self)
 Add to MetaCart
In this paper we briey introduce a Wide Spectrum Language and its transformation theory and describe a recent success of the theory: a general recursion removal theorem. This theorem includes as special cases the two techniques discussed by Knuth [12] and Bird [7]. We describe some applications of the theorem to cascade recursion, binary cascade recursion, Gray codes, the Towers of Hanoi problem, and an inverse engineering problem. 1 Introduction In this paper we briey introduce some of the ideas behind the transformation theory we have developed over the last eight years at Oxford and Durham Universities and describe a recent result: a general recursion removal theorem. We use a Wide Spectrum Language (called WSL), developed in [19,20,21] which includes lowlevel programming constructs and highlevel abstract specications within a single language. Working within a single language means that the proof that a program correctly implements a specication, or that a specication correct...
Inverse Engineering a simple Real Time program
, 1999
"... Reverse engineering of interruptdriven realtime programs with timing constraints is a particularly challenging research area, because the functional behaviour of a program, and the nonfunctional timing requirements, are implicit and can be very difficult to discover. However, in this paper we pre ..."
Abstract

Cited by 10 (4 self)
 Add to MetaCart
Reverse engineering of interruptdriven realtime programs with timing constraints is a particularly challenging research area, because the functional behaviour of a program, and the nonfunctional timing requirements, are implicit and can be very difficult to discover. However, in this paper we present a significant advance in this area, which is achieved by modelling realtime programs with interrupts in the wide spectrum language WSL. A small example program is modelled in this way, and formal program transformations are used to derive various timing constraints and to inverse engineer a formal specification of the program. (We use the term inverse engineering to mean reverse engineering achieved by formal program transformations).
Recursion Removal/Introduction by Formal Transformation: An Aid to Program Development and Program Comprehension
 Comput. J
, 1999
"... ..."
A Recursion Removal Theorem
, 1993
"... In this paper we briefly introduce a Wide Spectrum Language and its transformation theory and describe a recent success of the theory: a general recursion removal theorem. Recursion removal often forms an important step in the systematic development of an algorithm from a formal specification. We us ..."
Abstract

Cited by 7 (3 self)
 Add to MetaCart
In this paper we briefly introduce a Wide Spectrum Language and its transformation theory and describe a recent success of the theory: a general recursion removal theorem. Recursion removal often forms an important step in the systematic development of an algorithm from a formal specification. We use semanticpreserving transformations to carry out such developments and the theorem proves the correctness of many different classes of recursion removal. This theorem includes as special cases the two techniques discussed by Knuth [13] and Bird [7]. We describe some applications of the theorem to cascade recursion, binary cascade recursion, Gray codes, and an inverse engineering problem.
Understanding Concurrent Programs using Program Transformations
 Proceedings of the 1993 2nd Workshop on Program Comprehension, 8th9th July
, 1993
"... Reverse engineering of concurrent realtime programs with timing constraints is a particularly challenging research area, because the functional behaviour of a program, and the nonfunctional timing requirements, are implicit and can be very difficult to discover. In this paper we present a signific ..."
Abstract

Cited by 4 (1 self)
 Add to MetaCart
Reverse engineering of concurrent realtime programs with timing constraints is a particularly challenging research area, because the functional behaviour of a program, and the nonfunctional timing requirements, are implicit and can be very difficult to discover. In this paper we present a significant advance in this area, which is achieved by modelling realtime concurrent programs in the wide spectrum language WSL. We show how a sequential program with interrupts can be modelled in WSL, and the method is then extended to model more general concurrent programs. We show how a program modelled in this way may subsequently be "inverse engineered" by the use of formal program transformations, to discover a specification for the program. (We use the term "inverse engineering" to mean "reverse engineering achieved by formal program transformations").
Iterative Procedures for Computing Ackerman's Function
, 1993
"... This paper uses Ackerman's function as a testbed to illustrate the operation of various program transformations which take recursive procedures to equivalent iterative forms. The transformations are taken from the author's DPhil thesis [19]. In this paper we illustrate that they can be successfully ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
This paper uses Ackerman's function as a testbed to illustrate the operation of various program transformations which take recursive procedures to equivalent iterative forms. The transformations are taken from the author's DPhil thesis [19]. In this paper we illustrate that they can be successfully applied to even the most convoluted recursion. For many programs a recursive function is the most natural and clear specification while an iterative (or tailrecursive) form is the most efficient implementation. This paper illustrates how an efficient iterative program can be developed and verified by starting with a simple recursive program and using proven transformations to remove the recursion. The resulting iterative program will be correct by construction, so the problem of a direct verification of the iterative algorithm is avoided. This process can also throw light on the nature of the recursive specification. Several interesting properties of Ackermann's function and the iterative algorithms are derived in the course of this development.