Abstract
This paper discusses some fundamental issues related to the construction of semantically based axiomatic proof systems for reasoning about program behavior. We survey foundational work in this area, especially early work of Hoare and Cook on while-programs, and we try to pinpoint the principal ideas contained in this work and to suggest criteria for an appropriate generalization (faithful to these ideas) to a wider variety of programming languages. We argue that the adoption of a mathematically clean semantic model should lead to a natural choice of assertion language(s) for expressing properties of program terms, and to syntax-directed proof systems with clear and simple rules for program constructs. Hoare's ideas suggest that in principle syntax-directed reasoning is possible for all syntactic categories (declarations, commands, even expressions) and all semantic attributes (partial correctness of commands, aliasing properties of declarations, L- or R-values of expressions, proper use of variables, and so on). Semantic insights may also influence assertion language design by suggesting the need for certain logical connectives at the assertion level. This point is obscured by the fact that Hoare's logic for while-programs needed no assertion connectives (although of course the usual logical connectives are permitted inside pre- and post-conditions), but an application of our method to a class of parallel programming languages brings out the idea well: semantic analysis suggests the use of conjunctions at the assertion level. We argue that this method can lead to proof systems which avoid certain inelegant features of some earlier systems: specifically, we avoid the need for “extralogical” and “non-compositional” notions such as interference checks and auxiliary variables. We also discuss the author's applications of these techniques to other programming languages, and point to some future research directions continuing this work. Although we do not have a completely satisfactory general theory of semantically based axiomatization, and consequently some of our techniques may seem rather ad hoc to the reader, we hope that our ideas have some merit.
Preview
Unable to display preview. Download preview PDF.
References
Abramsky, S., Domain Theory in Logical Form, Proc. Symposium on Logic in Computer Science, Ithaca, NY, IEEE Computer Society Press (1987) 47–53.
Apt, K. R., Ten Years of Hoare's Logic: A Survey, ACM TOPLAS, Vol. 3 (1981) 431–483.
Apt, K. R., Bergstra, J. A., and Meertens, G. L. T., Recursive Assertions are not enough—or are they?, TCS 8 (1979) 73–87.
de Bakker, J. W., Mathematical Theory of Program Correctness, Prentice-Hall (1980).
Boehm, H.-J., Side-effects and Aliasing can have Simple Axiomatic Descriptions, ACM TOPLAS, vol. 7, no. 4 (1985) 637–655.
Brookes, S. D., An Axiomatic Treatment of a Parallel Language, Proc. Symposium on Logics of Programs, Springer LNCS 193 (1985) 41–60.
Brookes, S. D., A Semantically Based Proof System for Deadlock and Partial Correctness in CSP, Proc. Symposium on Logic in Computer Science, IEEE Computer Society Press (1986) 58–65.
Brookes, S. D., A Fully Abstract Semantics and a Proof System for an ALGOL-like Language with Aliasing, Proc. Conference on Mathematical Foundations of Programming Semantics, Manhattan, Kansas, Springer LNCS 239 (1985) 59–100.
Clarke, E. M., The Characterization Problem for Hoare's Logic, in: Mathematical Logic and Programming Languages, eds. C. A. R. Hoare and J. C. Shepherdson, Prentice-Hall (1986) 89–103.
Clarke, E. M., Programming Language Constructs For Which It Is Impossible To Obtain Good Hoare Axiom Systems, JACM Vol. 26 No. 1 (January 1979) 129–147.
Cook, S., Soundness and Completeness of an Axiom System for Program Verification, SIAM J. Comput 7 (1978) 70–90.
Dijkstra, E. W., A Discipline of Programming, Prentice-Hall (1976).
Floyd, R., Assigning Meanings to Programs, in: J. T. Schwartz, ed., Mathematical Aspects of Computer Science, Proc. Symp. Applied Math. (American Math. Soc. Providence) Vol. 19 (1967) 19–32.
Hoare, C. A. R., An Axiomatic Basis for Computer Programming, CACM 12 (1969) 576–580).
Hennessy, M. C. B., and Plotkin, G. D., Full Abstraction for a Simple Parallel Language, Proc. MFCS 1979, Springer LNCS 74 (1979) 108–120.
Milner, R., A Calculus of Communicating Systems, Springer LNCS 92 (1980).
Milner, R., Fully Abstract Models of Typed Lambda-Calculi, Theoretical Computer Science vol. 4 no. 1 (1977) 1–22.
O'Donnell, M., A Critique of the Foundations of Hoare-style Programming Logic, CACM vol. 25 no. 12 (December 1982) 927–934
Owicki, S. S., Axiomatic proof techniques for parallel programming, Ph.D. thesis, Cornell University (1975).
Owicki, S. S., and Gries, D., An Axiomatic Proof Technique for Parallel Programs, Acta Informatica 6 (1976) 319–340.
Robinson, E., Axiomatic Aspects of Denotational Semantics, preprint, Cambridge University (1986).
Stirling, C., A Compositional Reformulation of Owicki-Gries's Partial Correctness Logic for a Concurrent While Language, Proc. ICALP 1986, Springer LNCS 226 (1986) 407–415.
Stoughton, A., Fully Abstract Models of Programming Languages, Ph. D. thesis, Department of Computer Science, Edinburgh University (1986).
Stoy, J., Denotational Semantics, MIT Press (1977).
Strachey, C., The Varieties of Programming Language, Proceedings of International Computing Symposium, Cini Foundation, Venice (1972) 222–233.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1988 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Brookes, S.D. (1988). Semantically based axiomatics. In: Main, M., Melton, A., Mislove, M., Schmidt, D. (eds) Mathematical Foundations of Programming Language Semantics. MFPS 1987. Lecture Notes in Computer Science, vol 298. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-19020-1_16
Download citation
DOI: https://doi.org/10.1007/3-540-19020-1_16
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-19020-2
Online ISBN: 978-3-540-38920-0
eBook Packages: Springer Book Archive