Skip to main content

Verification of concurrent programs: Temporal proof principles

  • Conference paper
  • First Online:
Logics of Programs (Logic of Programs 1981)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 131))

Included in the following conference series:

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 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.

    Google Scholar 

  2. Burstall, R.M., “Program proving as hand simulation with a little induction,” Proc. IFIP Congress, Amsterdam, The Netherlands (1974), North Holland, pp. 308–312.

    Google Scholar 

  3. 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.

    Article  Google Scholar 

  4. Dijkstra, E.W., “Cooperating sequential processes”, in Programming Languages and Systems (F. Genvys ed.), Academic Press, New York, NY, 1968, pp. 43–112.

    Google Scholar 

  5. Francez, N., “The analysis of cyclic programs,” Ph.D. Thesis, Applied Mathematics Dept., The Weizmann Institute of Science, Rehovot, Israel, July 1976.

    Google Scholar 

  6. Keller, R.M., “Formal verification of parallel programs,” CACM, Vol.19, No. 7 (July 1976), pp. 371–384.

    Google Scholar 

  7. Lamport, L., “Proving the correctness of multiprocess programs,” IEEE Transactions on Software Engineering, Vol. SE-3, No. 7 (March 1977), pp. 125–143.

    Google Scholar 

  8. Manna, Z., “Logics of programs,” Proc. IFIP Congress, Tokyo and Melbourne (October 1980), North Holland, pp. 41–51.

    Google Scholar 

  9. 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.

    Google Scholar 

  10. 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.

    Google Scholar 

  11. 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.

    Google Scholar 

  12. 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.

    Google Scholar 

  13. Owicki, S. and D. Gries, “An axiomatic proof technique for parallel programs,” Acta Informatica, Vol. 6 (1976), pp. 319–340.

    Article  Google Scholar 

  14. Owicki, S. and L. Lamport, “Proving liveness properties of concurrent programs,” unpublished report (october 1980).

    Google Scholar 

  15. Pnueli, A., “The temporal logic of programs,” Proc. 18th FOCS, Providence, RI (November 1977), pp. 46–57.

    Google Scholar 

  16. 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.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Dexter Kozen

Rights and permissions

Reprints 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

Publish with us

Policies and ethics