Summary
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 possibly more complex; the purpose of the data refinement in that case is to make progress in program construction from more abstract to more concrete formulations. A recent trend in program construction is to calculate programs from their specifications; that contrasts with proving that a given program satisfies some specification. We investigate to what extent the trend can be applied to data refinement.
Article PDF
Similar content being viewed by others
Avoid common mistakes on your manuscript.
References
Back, R.-J.: On the correctness of refinement steps in program development. Report A-1978-4, Department of Computer Science, University of Helsinki, 1978
Back, R.-J.: Correctness preserving program refinements: Proof theory and applications. Tract 131, Mathematisch Centrum, Amsterdam, 1980
Back, R.-J.: Procedural abstraction in the refinement calculus. Report Ser. A 55, Departments of Information Processing and Mathematics, Swedish University of Åbo, Åbo, Finland, 1987
Back, R.-J.: A calculus of refinements for program derivations. Acta Inf. 25, 593–624 (1988)
Bird, R.S.: An introduction to the theory of lists. Technical monograph PRG-56, Programming Research Group, 8-11 Keble Road, Oxford OX1 3QD, UK, October 1986
Boom, H.: A weaker precondition for loops. Thrans. Prog. Lang. Syst. 4, 668–677 (1982)
Dijkstra, E.W.: A Discipline of Programming. Englewood Cliffs: Prentice-Hall 1976
Gardiner, P.H.B., Morgan, C.C.: Data refinement of predicate transformers. Theor. Comput. Sci. (to appear). Reprinted in [21]
Gries, D., Prins, J.: A new notion of encapsulation. In: Symp. Language Issues in Programming Environments, SIGPLAN, June 1985
Hoare, C.A.R.: An axiomatic basis for computer programming. Commun. ACM 12, 576–580 (1969)
Hoare, C.A.R.: Proof of correctness of data representations. Acta Inf. 1, 271–281 (1972)
Hoare, C.A.R., He, J.F., Sanders, J.W.: Prespecification in data refinement. Inf. Proc. Lett. 25, 71–76 (1987)
Jones, C.B.: Systematic Software Development using VDM. Prentice Hall, 1986
Josephs, M.B.: The data refinement calculator for Z specifications. Inf. Process. Lett. 27, 29–33 (1988)
Lucas, P.: Two constructive realizations of the block concept and their equivalence. Technical Report TR 25.085, IBM Laboratory Vienna, 1968
Morgan, C.C.: Auxiliary variables in data refinement. Inf. Process. Lett. 29, 293–296 (1988) Reprinted in [21])
Morgan, C.C.: Data refinement using miracles. Inf. Process. Lett. 26, 243–246 (1988) (Reprinted in [21])
Morgan, C.C.: Procedures, parameters, and abstraction: Separate concerns. Sci. Comput. Progr. 11, 17–28 (1988) (Reprinted in [21])
Morgan, C.C.: The specification statement. Trans. Prog. Lang. Syst. 10 (1988) (Reprinted in [21])
Morgan, C.C., Robinson, K.A.: Specification statements and refinement. IBM J. Res. Dev. 31 (1987) (Reprinted in [21])
Morgan, C.C., Robinson, K.A., Gardiner, P.H.B.: On the refinement calculus. Technical Report PRG-70, Programming Research Group, 1988
Morris, J.M.: Invariance theorems for recursive procedures. (In draft)
Morris, J.M.: Laws of data refinement. Acta Inf. (to appear)
Morris, J.M.: A theoretical basis for stepwise refinement and the programming calculus. Sci.Comput. Progr. 9, 298–306 (1987)
Nelson, G.: A generalization of Dijkstra's calculus. Technical Report 16, Digital Systems Research Center, April 1987
Author information
Authors and Affiliations
Additional information
Supported by British Petroleum Ltd.
Rights and permissions
About this article
Cite this article
Morgan, C., Gardiner, P.H.B. Data refinement by calculation. Acta Informatica 27, 481–503 (1990). https://doi.org/10.1007/BF00277386
Received:
Issue Date:
DOI: https://doi.org/10.1007/BF00277386