Data Refinement of Predicate Transformers

Abstract Data refinement is the systematic substitution of one data type for another in a program. Usually, the new data type is more efficient than the old, but also more complex; the purpose of data refinement in that case is to make progress in a program design from more abstract to more concrete formulations. A particularly simple definition of data refinement is possible when programs are taken to be predicate transformers in the sense of Dijkstra. Central to the definition is a function taking abstract predicates to concrete ones, and that function, a generalisation of the abstraction function, therefore is a predicative transformers as well. Advantages of the approach are: proofs about data refinement are simplified; more general techniques of data refinement are suggested; and a style of program development is encouraged in which data refinements are calculated directly without proof obligation.

[1]  C. A. R. Hoare,et al.  The Weakest Prespecification , 1987, Information Processing Letters.

[2]  David Gries,et al.  A new notion of encapsulation , 1985, ACM SIGPLAN Notices.

[3]  Ralph-Johan Back,et al.  Correctness preserving program refinements: Proof theory and applications , 1980 .

[4]  M. Blattner,et al.  Language issues in programming environments , 1983 .

[5]  Ken Robinson,et al.  Specification statements and refinements , 1987 .

[6]  Tony Hoare,et al.  The Weakest Prespecification II , 1986 .

[7]  Carroll Morgan,et al.  The specification statement , 1988, TOPL.

[8]  Carroll Morgan,et al.  Auxiliary Variables in Data Refinement , 1988, Inf. Process. Lett..

[9]  C. A. R. Hoare,et al.  Proof of correctness of data representation , 1975, Language Hierarchies and Interfaces.

[10]  Cliff B. Jones,et al.  Systematic software development using VDM , 1986, Prentice Hall International Series in Computer Science.

[11]  C. A. R. Hoare,et al.  Prespecification in Data Refinement , 1987, Inf. Process. Lett..

[12]  Joseph M. Morris,et al.  A Theoretical Basis for Stepwise Refinement and the Programming Calculus , 1987, Sci. Comput. Program..

[13]  H. J. Boom A Weaker Precondition for Loops , 1982, TOPL.