Skip to main content
Log in

A single complete rule for data refinement

  • Published:
Formal Aspects of Computing

Abstract

One module is said to be refined by a second if no program using the second module can detect that it is not using the first; in that case the second module can replace the first in any program. Data refinement transforms the interior pieces of a module — its state and consequentially its operations — in order to refine the module overall.

A method for data refinement is sound if applying it actually does refine the module; a method is complete if any refinement of modules can be realised by its application.

It has been known for some time that there are two methods of data refinement which are jointly complete for boundedly-nondeterministic programs: any refinement can be realised by applying one method then the other. Those two methods are formulated in terms of relations between states. Here it is shown that using predicate transformers, instead, allows a single complete method.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. Abadi, M. and Lamport, M.: The existence of refinement mappings. Technical Report 29, Digital Systems Research Center, August 1988.

  2. Back, R.-J.R.: On the correctness of refinement steps in program development. Report A-1978-4, Department of Computer Science, University of Helsinki, 1978.

  3. Back, R.-J.R.: Data refinement in the refinement calculus. InProceedings 22nd Hawaii International Conference of System Sciences, Kailua-Kona, January 1989.

  4. Back, R.-J.R. and von Wright, J.: Refinement calculus i: Sequential nondeterministic programs. In J.W. de Bakker, W.P. de Roever, and G Rozenberg, editors,Stepwise refinement of distributed systems, volume 430, pages 42–66. LNCS, 1990.

  5. Wei Chen and Udding, J.T.: Towards a calculus of data refinement. In J.L.A. van de Snepsheut, editor,Lecture Notes in Computer Science 375: Mathematics of Program Construction. Springer, June 1989.

  6. Dijkstra, E.W.:A Discipline of Programming. Prentice-Hall, Englewood Cliffs, 1976.

    Google Scholar 

  7. Gardiner, P.H.B.: Data refinement of maps. Technical Report — Oxford University Programming Research Group, August 1990.

  8. Gardiner, P.H.B. and Morgan, C.C.: A single complete rule for data refinement. Technical Report PRG-TR-7-89, Programming Research Group, Oxford University, November 1989.

  9. Gardiner, P.H.B. and Morgan, C.C.: Data refinement of predicate transformers.Theoretical Computer Science, 87:143–162, 1991. Reprinted in [MRG88].

    Google Scholar 

  10. Gries, D. and Prins, J.: A new notion of encapsulation. InSymposium on Language Issues in Programming Environments. SIGPLAN, June 1985.

  11. He, J.F., Hoare, C.A.R. and Sanders, J.W.: Data refinement refined. InLecture Notes in Computer Science 213, pages 187–196. Springer, 1986.

  12. Hoare, C.A.R., He, J.F. and Sanders, J.W.: Prespecification in data refinement.Information Processing Letters, 25(2), May dy1987.

  13. Hoare, C.A.R.: Proof of correctness of data representations.Acta Informatica, 1:271–281, 1972.

    Google Scholar 

  14. Hitchcock P. and Park, D.: Induction rules and termination proofs. InAutomata, languages and programming (Proc. Sympos., Rocquencourt, 1972), pages 225–251. North Holland, 1972.

  15. Jones, C.B.:Systematic Software Development using VDM. Prentice-Hall, 1986.

  16. Lambek, J. and Scott, P.J.:Introduction to higher order categorical logic. Cambridge University Press, 1986.

  17. Lucas, P.: Two constructive realizations of the block concept and their equivalence. Technical Report TR 25.085, IBM Laboratory Vienna, 1968.

  18. Morgan, C.C. and Gardiner, P.H.B.: Data refinement by calculation.Acta Informatica, 27:481–503, 1990. Reprinted in [MRG88].

    Google Scholar 

  19. Morgan, C.C.: Auxiliary variables in data refinement.Information Processing Letters, 29(6):293–296, December 1988. Reprinted in [MRG88].

    Google Scholar 

  20. Morgan, C.C.: The specification statement.ACM Transactions on Programming Languages and Systems, 10(3), July 1988. Reprinted in [MRG88].

  21. Morris, J.M.: Laws of data refinement.Acta Informatica, 26:287–308, 1989.

    Google Scholar 

  22. Morgan, C.C., Robinson, K.A. and Gardiner, P.H.B.: On the refinement calculus. Technical Report PRG-70, Programming Research Group, 1988.

  23. Nipkow, T.: Non-deterministic data types.Acta Informatica, 22:629–661, 1986.

    Google Scholar 

  24. Reynolds, J.C.:The Craft of Programming. Prentice-Hall, London, 1981.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to P. H. B. Gardiner.

Rights and permissions

Reprints and permissions

About this article

Cite this article

Gardiner, P.H.B., Morgan, C. A single complete rule for data refinement. Formal Aspects of Computing 5, 367–382 (1993). https://doi.org/10.1007/BF01212407

Download citation

  • Received:

  • Revised:

  • Issue Date:

  • DOI: https://doi.org/10.1007/BF01212407

Keywords

Navigation