Summary
Hoare's logical system for specifying and proving partial correctness properties of sequential programs is generalized to concurrent programs. The basic idea is to define the assertion {P} S {Q} to mean that if execution is begun anywhere in S with P true, then P will remain true until S terminates, and Q will be true if and when S terminates. The predicates P and Q may depend upon program control locations as well as upon the values of variables. A system of inference rules and axiom schemas is given, and a formal correctness proof for a simple program is outlined. We show that by specifying certain requirements for the unimplemented parts, correctness properties can be proved without completely implementing the program. The relation to Pnueli's temporal logic formalism is also discussed.
Similar content being viewed by others
References
Ashcroft, E.A.: Proving assertions about parallel programs. J. Comput. Systm. Sci. 10, 110–135 (1975)
Floyd, R.W.: Assigning meanings to programs. Proc. A.M.S. Symp. in Applied Math., Amer. Math. Soc. pp. 19–31, 1967
Hoare, C.A.R.: An axiomatic basis for computer programming. Comm. ACM 12, 576–583 (1969)
Lamport, L.: Proving the correctness of multiprocess programs. IEEE Trans. Soft. Engrg. SE-3, 2, 125–143 (1977)
Lamport, L.: Sometime is sometimes not never: On the temporal logic of programs. Proceedings of the Seventh Annual Symposium on Principles of Programming Languages, ACM SIGACTSIGPLAN, January 1980
Owicki, S., Gries, D.: An axiomatic proof technique for parallel programs. Acta Informat. 6, 319–340 (1976)
Pnueli, A.: The temporal logic of programs. Proc. of the 18th Symposium on the Foundations of Computer Science, ACM, November 1977
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Lamport, L. The ‘Hoare logic’ of concurrent programs. Acta Informatica 14, 21–37 (1980). https://doi.org/10.1007/BF00289062
Received:
Revised:
Issue Date:
DOI: https://doi.org/10.1007/BF00289062