Results 1 
7 of
7
Refinement Calculus, Part I: Sequential Nondeterministic Programs
 STEPWISE REFINEMENT OF DISTRIBUTED SYSTEMS: MODELS, FORMALISMS, CORRECTNESS. PROCEEDINGS. 1989, VOLUME 430 OF LECTURE NOTES IN COMPUTER SCIENCE
, 1989
"... A lattice theoretic framework for the calculus of program refinement is presented. Specifications and program statements are combined into a single (infinitary) language of commands which permits miraculous, angelic and demonic statements to be used in the description of program behavior. The weakes ..."
Abstract

Cited by 55 (3 self)
 Add to MetaCart
A lattice theoretic framework for the calculus of program refinement is presented. Specifications and program statements are combined into a single (infinitary) language of commands which permits miraculous, angelic and demonic statements to be used in the description of program behavior. The weakest precondition calculus is extended to cover this larger class of statements and a gametheoretic interpretation is given for these constructs. The language is complete, in the sense that every monotonic predicate transformer can be expressed in it. The usual program constructs can be defined as derived notions in this language. The notion of inverse statements is defined and its use in formalizing the notion of data refinement is shown.
An Injective Language for Reversible Computation
 In Seventh International Conference on Mathematics of Program Construction (MPC 2004
, 2004
"... Erasure of information incurs an increase in entropy and dissipates heat. Therefore, informationpreserving computation is essential for constructing computers that use energy more ffectively. A more recent motivation to understand reversible transformations also comes from the design of editors whe ..."
Abstract

Cited by 9 (5 self)
 Add to MetaCart
Erasure of information incurs an increase in entropy and dissipates heat. Therefore, informationpreserving computation is essential for constructing computers that use energy more ffectively. A more recent motivation to understand reversible transformations also comes from the design of editors where editing actions on a view need to be reflected back to the source data. In this paper we present a pointfree functional language, with a relational semantics, in which the programmer is allowed to define injective functions only. Noninjective functions can be transformed into a program returning a history. The language is presented with many examples, and its relationship with Bennett's reversible Turing machine is explained. The language serves as a good model for program construction and reasoning for reversible computers, and hopefully for modelling bidirectional updating in an editor.
Encoding, Decoding, and Data Refinement
 FORMAL ASPECTS OF COMPUTING
, 1999
"... Data refinement is the systematic replacement of a data structure with another one in program development. Data refinement between program statements can on an abstract level be described as a commutativity property where the abstraction relationship between the data structures involved is represent ..."
Abstract

Cited by 7 (4 self)
 Add to MetaCart
Data refinement is the systematic replacement of a data structure with another one in program development. Data refinement between program statements can on an abstract level be described as a commutativity property where the abstraction relationship between the data structures involved is represented by an abstract statement (a decoding). We generalise the traditional notion of data refinement by defining an encoding operator that describes the least (most abstract) data refinement with respect to a given abstraction. We investigate the categorical and algebraic properties of encoding and describe a number of special cases, which include traditional notions of data refinement. The dual operator of encoding is decoding, which we investigate and give an intuitive interpretation to. Finally we show a number of applications of encoding and decoding.
Relational Programming, Program Inversion and the Derivation of Parsing Algorithms
, 1993
"... The spec calculus is a programming algebra that supports and even encourages the derivation of relational programs in a clear and calculational style. After a brief introduction of the spec calculus two particular uses are investigated. First, the notion of program inversion is introduced. This noti ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
The spec calculus is a programming algebra that supports and even encourages the derivation of relational programs in a clear and calculational style. After a brief introduction of the spec calculus two particular uses are investigated. First, the notion of program inversion is introduced. This notion from imperative programming allows one to construct from a given program R that satisfies fPg R fQg a program R 1 that satis es fQg R 1 fPg . It is shown that, as may be expected, a relational framework allows easy definition of and calculation with inverses of arbitrary programs. Several examples are discussed and used to introduce different methods to calculate implementable inverses. The second topic is the derivation of precedence parsing algorithms. A simple algorithm for the calculation of the inorder traversal of a tree is transformed in two steps into an algorithm for precedence parsing. The first transformation is the use of program inversion to obtain an algorithm that constru...
Constraints for scenariobased testing of objectoriented programs
, 2002
"... Abstract. Testing of a software system is always based on a contract between the system under test and its environment. Formal mathematical methods provide languages that allow defining such contracts unambiguously, soundly, and succinctly. Since objectoriented programs emphasise encapsulation of i ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
Abstract. Testing of a software system is always based on a contract between the system under test and its environment. Formal mathematical methods provide languages that allow defining such contracts unambiguously, soundly, and succinctly. Since objectoriented programs emphasise encapsulation of internal object state and interaction between objects through method calls, it is natural to base a testing strategy on scenarios of object usage. In this paper, we propose an original approach to generating test scenarios as contract models. We provide a formal foundation for this scenariobased method of testing. 1
Theory and Applications of Inverting Functions as Folds
"... This paper is devoted to the proof, applications, and generalisation of a theorem, due to Bird and de Moor, that gave conditions under which a total function can be expressed as a relational fold. The theorem is illustrated with three problems, all dealing with constructing trees with various proper ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
This paper is devoted to the proof, applications, and generalisation of a theorem, due to Bird and de Moor, that gave conditions under which a total function can be expressed as a relational fold. The theorem is illustrated with three problems, all dealing with constructing trees with various properties. It is then generalised to give conditions under which the inverse of a partial function can be expressed as a relational hylomorphism. The proof makes use of Doornbos and Backhouse's theory on wellfoundedness and reductivity. Possible applications of the generalised theorem is then discussed.
Extending the Generalised Substitution to Model Semidecidable Operations
, 1996
"... We consider an extension to the generalised substitution that allows us to specify semidecidable operations. We call this new form of substitution a hypersubstitution. We propose a new parallel composition operator on hypersubstitutions, for use when two processes are both searching for the ans ..."
Abstract
 Add to MetaCart
We consider an extension to the generalised substitution that allows us to specify semidecidable operations. We call this new form of substitution a hypersubstitution. We propose a new parallel composition operator on hypersubstitutions, for use when two processes are both searching for the answer to a problem, and which will terminate when either process finds the answer. This new parallel composition, which we call the concert operator, has the highly desirable property of being monotonic with respect to refinement. Thus we are able to use it not only in specifying, but also in implementing an operation in terms of a number of semidecidable suboperations working in concert together. 1 Introduction Imagine a prehistoric caveman who has just mastered the art of counting by pairs; thus he can generate an unbounded list of even numbers 0; 2; 4; 6; 8; : : : etc. He has a friend who, blessed with an even greater arithmetical prowess, can generate an unbounded list of odd numb...