On Correct Refinement of Programs

Abstract The stepwise refinement technique is studied from a mathematical point of view. A relation of correct refinement between programs is defined, based on the principle that refinement steps should be correctness preserving. Refinement between programs will therefore depend on the criterion of program correctness used. The application of the refinement relation in showing the soundness of different techniques for refining programs is discussed. Special attention is given to the use of abstraction in program construction. Refinement with respect to partial and total correctness will be studied in more detail, both for deterministic and nondeterministic programs. The relationship between these refinement relations and the approximation relation of fixpoint semantics will be studied, as well as the connection with the predicate transformers used in program verification.

[1]  M. Broy,et al.  On Relations Between Programs , 1980, Symposium on Programming.

[2]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[3]  Joseph A. Goguen,et al.  Initial Algebra Semantics and Continuous Algebras , 1977, J. ACM.

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

[5]  Manfred Broy,et al.  Semantics of Nondeterministic and Noncontinuous Constructs , 1978, Program Construction.

[6]  Lambert Meertens Abstracto 84: The next generation , 1979, ACM '79.

[7]  Edsger W. Dijkstra,et al.  Notes on structured programming , 1970 .

[8]  Niklaus Wirth,et al.  Program development by stepwise refinement , 1971, CACM.

[9]  J. W. de Bakker,et al.  Mathematical theory of program correctness , 1980, Prentice-Hall international series in computer science.

[10]  Edsger W. Dijkstra,et al.  A constructive approach to the problem of program correctness , 1968 .

[11]  Robert D. Tennent,et al.  The denotational semantics of programming languages , 1976, CACM.

[12]  Claus H. Correll Proving programs correct through refinement , 1978 .

[13]  Susan L. Gerhart,et al.  Correctness-preserving program transformations , 1975, POPL '75.

[14]  Friedrich L. Bauer,et al.  Systematics of Transformation Rules , 1978, Program Construction.

[15]  Ben Wegbreit Goal-Directed Program Transformation , 1976, IEEE Trans. Software Eng..

[16]  John Darlington,et al.  Some transformations for developing recursive programs , 1975 .

[17]  David B. Loveman,et al.  Program Improvement by Source-to-Source Transformation , 1977, J. ACM.

[18]  John Darlington,et al.  A Transformation System for Developing Recursive Programs , 1977, J. ACM.

[19]  Gordon D. Plotkin,et al.  A Powerdomain Construction , 1976, SIAM J. Comput..