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.
Similar content being viewed by others
References
Abadi, M. and Lamport, M.: The existence of refinement mappings. Technical Report 29, Digital Systems Research Center, August 1988.
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.
Back, R.-J.R.: Data refinement in the refinement calculus. InProceedings 22nd Hawaii International Conference of System Sciences, Kailua-Kona, January 1989.
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.
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.
Dijkstra, E.W.:A Discipline of Programming. Prentice-Hall, Englewood Cliffs, 1976.
Gardiner, P.H.B.: Data refinement of maps. Technical Report — Oxford University Programming Research Group, August 1990.
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.
Gardiner, P.H.B. and Morgan, C.C.: Data refinement of predicate transformers.Theoretical Computer Science, 87:143–162, 1991. Reprinted in [MRG88].
Gries, D. and Prins, J.: A new notion of encapsulation. InSymposium on Language Issues in Programming Environments. SIGPLAN, June 1985.
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.
Hoare, C.A.R., He, J.F. and Sanders, J.W.: Prespecification in data refinement.Information Processing Letters, 25(2), May dy1987.
Hoare, C.A.R.: Proof of correctness of data representations.Acta Informatica, 1:271–281, 1972.
Hitchcock P. and Park, D.: Induction rules and termination proofs. InAutomata, languages and programming (Proc. Sympos., Rocquencourt, 1972), pages 225–251. North Holland, 1972.
Jones, C.B.:Systematic Software Development using VDM. Prentice-Hall, 1986.
Lambek, J. and Scott, P.J.:Introduction to higher order categorical logic. Cambridge University Press, 1986.
Lucas, P.: Two constructive realizations of the block concept and their equivalence. Technical Report TR 25.085, IBM Laboratory Vienna, 1968.
Morgan, C.C. and Gardiner, P.H.B.: Data refinement by calculation.Acta Informatica, 27:481–503, 1990. Reprinted in [MRG88].
Morgan, C.C.: Auxiliary variables in data refinement.Information Processing Letters, 29(6):293–296, December 1988. Reprinted in [MRG88].
Morgan, C.C.: The specification statement.ACM Transactions on Programming Languages and Systems, 10(3), July 1988. Reprinted in [MRG88].
Morris, J.M.: Laws of data refinement.Acta Informatica, 26:287–308, 1989.
Morgan, C.C., Robinson, K.A. and Gardiner, P.H.B.: On the refinement calculus. Technical Report PRG-70, Programming Research Group, 1988.
Nipkow, T.: Non-deterministic data types.Acta Informatica, 22:629–661, 1986.
Reynolds, J.C.:The Craft of Programming. Prentice-Hall, London, 1981.
Author information
Authors and Affiliations
Corresponding author
Rights 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
Received:
Revised:
Issue Date:
DOI: https://doi.org/10.1007/BF01212407