Abstract
We describe two techniques for the refinement calculus that facilitate goal-directed development. The techniques achieve this by allowing the deferring of decisions about the precise form of refinement steps, so high-level choices can be expressed as soon as those choices are appropriate. Metavariables are place-holders for components of partly developed programs that will be instantiated when they are suitably constrained by later refinements. The conditional refinements technique allows the development of alternative refinements of a specification, and the collection of those alternative refinements into a guarded command set.
We think that programmers developing programs using the refinement calculus make use of both of these techniques informally, but the written derivation does not usually reflect their use. We describe and illustrate a rigorous way to apply these techniques and record their use.
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Carroll C. Morgan and Ken Robinson. Specification statements and refinement. IBM Journal of Research and Development, 31 (5): 546–555, September 1987.
R. J. R. Back. A calculus of refinements for program derivations. Acta Inform atica, 25: 593–624, 1988.
Carroll Morgan. Programming from Specifications. Prentice Hall, 1990.
Lindsay Groves, Raymond Nickson and Mark Utting. A tactic driven refinement tool. In Cliff B. Jones, Roger C. Shaw and Tim Denvir, editors, Fifth Refinement Workshop, Workshops in Computing, pages 272–297. BCS FAGS, Springer-Verlag, 1992.
David Gries. The Science of Programming. Springer-Verlag, 1981.
E. W. Dijkstra. A Discipline of Programming. Academic Press, 1976.
Lindsay J. Groves and Raymond G. Nickson. An intelligent editor for constructing correct programs. In Proceedings of the Third New Zealand Conference on Expert Systems. New Zealand Expert Systems Special Interest Group, 1988.
Carroll Morgan. The specification statement. ACM Transactions on Programming Languages and Systems, 10 (3): 403–419, July 1988.
Greg Nelson. A generalization of Dijkstra’s calculus. ACM Transactions on Programming Languages and Systems, 11 (4): 517–561, October 1989.
Lindsay Groves. Deriving language recognition algorithms: A case study in combining program specialisation and data refinement. In David Till and Roger C. F. Shaw, editors, Sixth Refinement Workshop, Workshops in Computing. BCS FACS, Springer-Verlag, 1994.
L. Naish. Negation and quantifiers in NU-Prolog. In Proceedings of the Third International Conference on Logic Programming, 1986.
Tim Clement. Using metavariables in natural deduction proofs. In Cliff B. Jones, Roger C. Shaw and Tim Denvir, editors, Fifth Refinement Workshop, Workshops in Computing. BCS FACS, Springer-Verlag, 1992.
C. B. Jones, K. D. Jones, P. A. Lindsay and R. Moore. mural: A Formal Development Support System. Springer-Verlag, 1991.
Joseph M. Morris. A theoretical basis for stepwise refinement and the programming calculus. Science of Computer Programming, 9: 287–306, 1987.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1994 British Computer Society
About this paper
Cite this paper
Nickson, R.G., Groves, L.J. (1994). Metavariables and Conditional Refinements in the Refinement Calculus. In: Till, D. (eds) 6th Refinement Workshop. Workshops in Computing. Springer, London. https://doi.org/10.1007/978-1-4471-3240-0_9
Download citation
DOI: https://doi.org/10.1007/978-1-4471-3240-0_9
Publisher Name: Springer, London
Print ISBN: 978-3-540-19886-4
Online ISBN: 978-1-4471-3240-0
eBook Packages: Springer Book Archive