Abstract
Predicates are a popular tool for specification. Unfortunately, they are less well suited to defining the semantics of programming languages. As as result, program refinement techniques are usually based on predicate transformers. This paper proposes a three-valued logic with a richer kind of predicate that is suitable for both specification and defining programming language semantics.
The other contribution of this work is a method of refining specifications into recursive programs. It has been suggested that it is more difficult to develop recursive programs than iterative ones. We sidestep the difficulties by using an approximation to the meaning of recursive specifications. We prove that once the refinement process is complete, our approximation is refined by the true meaning.
The author is supported by DSTO Australia.
Preview
Unable to display preview. Download preview PDF.
References
Barringer, H., et al.: A logic covering undefinedness in program proofs. Acta Inf. 21 (1984) 251–269
Bekič, H.: Definable operations in general algebras, and the theory of automata and flowcharts. In Jones, C. (ed.), Programming Languages and Their Definition, volume 177 of Lecture Notes in Computer Science. Springer-Verlag, Berlin, Germany (1984) 30–55
Bočvar, D.: Ob odnom trexznačnom isčislenii i ego primenenii k analizu paradoksov klassičeskogo rasširennogo funkcional'nogo isčislenija [on a three-valued calculus and its application to the analysis of contraditions of expanded functional calculus]. Mathematičeskij sbornik 4 (1938) 287–308
Dijkstra, E.: A Discipline of Programming. Prentice Hall Series in Automatic Computation. Prentice Hall, Englewood Cliffs, United States (1976)
Grundy, J.: A window inference tool for refinement. In Jones, C., et al. (eds), Proceedings of the 5th Refinement Workshop, Workshops in Computer Science, Lloyd's Register, London, England (1992). BCS-FACS, Springer-Verlag, London, England 230–254
Grundy, J.: Predicative programming — a survey. In Sabelfeld, V. (ed.), Proceedings of the International Conference on Formal Methods in Programming and Their Applications, Lecture Notes in Computer Science, Novosibirsk, Russia (1993). Springer-Verlag, Berlin, Germany
Kleene, S.: On notation for ordinal numbers. J. Symbolic Logic 3 (1938) 150–155
Łukasiewicz, J.: On the notion of possibility. In McCall [10] 15–16
Łukasiewicz, J.: On three-valued logic. In McCall [10] 16–18
McCall, S. (ed.) Polish Logic 1920–1939. Oxford University at the Clarendon Press, Oxford, England (1967)
Nelson, G.: A generalization of Dijkstra's calculus. ACM Trans. Programming Languages & Syst. 11 (1989) 517–561
Scott, D., Strachey, C.: Towards a mathematical semantics for computer languages. In Fox, J. (ed.), Proceeding of the Symposium on Computers and Automata, volume 21 of Microwave Research Institute Symposia Series, Brooklyn, United States (1971). Polytechnic Institute of Brooklyn, Microwave Research Institute, Wiley-Interscience 19–46
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1993 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Grundy, J. (1993). A three-valued logic for refinement. In: Bjørner, D., Broy, M., Pottosin, I.V. (eds) Formal Methods in Programming and Their Applications. Lecture Notes in Computer Science, vol 735. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0039698
Download citation
DOI: https://doi.org/10.1007/BFb0039698
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-57316-6
Online ISBN: 978-3-540-48056-3
eBook Packages: Springer Book Archive