Abstract
In this paper, the second of a series on the application of temporal logic to concurrent programs, we present proof methods for establishing invariance (safety) and eventuality (liveness) properties.
The proof principle for establishing invariance properties is based on computational induction, and is a generalization of the inductive assertion method. For a restricted class of concurrent programs we present an algorithm for the automatic derivation of invariant assertions.
In order to establish eventuality properties we present several proof principles that translate the structure of the program into basic temporal statements about its behavior. These principles can be viewed as providing the temporal semantics of the program. The basic statements thus derived are then combined into temporal proofs for the establishment of eventuality properties. This method generalizes the intermittent assertion method.
The proof principles are amply illustrated by examples.
The first paper in this series, the temporal framework part, appears in The Correctness Problem in Computer Science (R. S. Boyer aod J S. Moore, eds.), International Lecture Series in Computer Science, Academic Press, London, 1981.
This research was supported in part by the National Science Foundation under grants MCS79-09495 and MCS80-06930, by the Office of Naval Research under Contract N00014-76-C-0687, and by the United States Air Force Office of Scientific Research under Grant AFOSR-81-0014.
Preview
Unable to display preview. Download preview PDF.
References
Ben-Ari, M., Z. Manna and A. Pnueli, “The temporal logic of branching time,” Proceedings of the Eighth ACM Symposium on Principles of Programming Languages, Williamsburg, VA, Jan. 1981, pp. 169–176.
Burstall, R.M., “Program proving as hand simulation with a little induction,” Proc. IFIP Congress, Amsterdam, The Netherlands (1974), North Holland, pp. 308–312.
Clarke, E.M., “Synthesis of resource invariants for concurrent programs,” ACM Trans. on Programming Languages and Systems, Vol. 2, No. 3 (July 1980), pp. 338–358.
Dijkstra, E.W., “Cooperating sequential processes”, in Programming Languages and Systems (F. Genvys ed.), Academic Press, New York, NY, 1968, pp. 43–112.
Francez, N., “The analysis of cyclic programs,” Ph.D. Thesis, Applied Mathematics Dept., The Weizmann Institute of Science, Rehovot, Israel, July 1976.
Keller, R.M., “Formal verification of parallel programs,” CACM, Vol.19, No. 7 (July 1976), pp. 371–384.
Lamport, L., “Proving the correctness of multiprocess programs,” IEEE Transactions on Software Engineering, Vol. SE-3, No. 7 (March 1977), pp. 125–143.
Manna, Z., “Logics of programs,” Proc. IFIP Congress, Tokyo and Melbourne (October 1980), North Holland, pp. 41–51.
Manna, Z., “Verification of sequential programs: Temporal axiomatization” in Theoretical Foundations of Programming Methodology (F.L. Bauer, ed.), NATO Scientific Series, D. Riedel Pub. Co., Dordrecht, Holland, 1981.
Manna, Z. and A. Pnueli, “The modal logic of programs,” Proc. 6th International Colloquium on Automata, Languages and Programming, Graz, Austria (July 1979). Lecture Notes in Computer Science, Vol. 71, Springer Verlag, pp. 385–409.
Manna, Z. and A. Pnueli, “Verification of concurrent programs: The temporal framework,” in The Correctness Problem in Computer Science (R.S. Boyer and J.S. Moore, eds.), International Lecture Series in Computer Science, Academic Press, London, 1981.
Manna, Z. and R. Waldinger, “Is 'sometime’ sometimes better than ‘Always'?: Intermittent assertions in proving program correctness,” CACM, Vol. 21, No. 2, pp. 159–172 (February 1978), pp. 159–172.
Owicki, S. and D. Gries, “An axiomatic proof technique for parallel programs,” Acta Informatica, Vol. 6 (1976), pp. 319–340.
Owicki, S. and L. Lamport, “Proving liveness properties of concurrent programs,” unpublished report (october 1980).
Pnueli, A., “The temporal logic of programs,” Proc. 18th FOCS, Providence, RI (November 1977), pp. 46–57.
Pnueli, A., “The temporal semantics of concurrent programs,” Proc. Symposium on Semantics of Concurrent Computations, Evian, France (July 1979), Lecture Notes in Computer Science, Vol. 70, Springer Verlag, pp. 1–20.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1982 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Manna, Z., Pnueli, A. (1982). Verification of concurrent programs: Temporal proof principles. In: Kozen, D. (eds) Logics of Programs. Logic of Programs 1981. Lecture Notes in Computer Science, vol 131. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0025785
Download citation
DOI: https://doi.org/10.1007/BFb0025785
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-11212-9
Online ISBN: 978-3-540-39047-3
eBook Packages: Springer Book Archive