Skip to main content

A proof technique for rely/guarantee properties

  • Conference paper
  • First Online:

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

Abstract

A rely/guarantee specification for a program P is a specification of the form RG (R implies G), where R is a rely condition and G is a guarantee condition. A rely condition expresses the conditions that P relies on its environment to provide, and a guarantee condition expresses what P guarantees to provide in return. This paper presents a proof technique that permits us to infer that a program P satisfies a rely/guarantee specification RG, given that we know P satisfies a finite collection of rely/guarantee specifications R i G i , (iI). The utility of the proof technique is illustrated by using it to derive global liveness properties of a system of concurrent processes from a collection of local liveness properties satisfied by the component processes. The use of the proof rule as a design principle is also considered.

This research was supported in part by ARO grant DAAG29-84-K-0058, NSF grant DCR-83-02391, and DARPA grant N00014-82-K-0125.

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

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

Bibliography

  1. H. Barringer, R. Kuiper, “A Temporal Logic Specification Method Supporting Hierarchical Development,” Manuscript, University of Manchester Department of Computer Science, November, 1983.

    Google Scholar 

  2. H. Barringer, R. Kuiper, A. Pnueli, “Now You May Compose Temporal Logic Specifications,” Sixteenth ACM Symposium on Theory of Computing, 1984.

    Google Scholar 

  3. E. W. Dijkstra, A Discipline of Programming, Prentice Hall, 1976.

    Google Scholar 

  4. M. J. Fischer, N. D. Griffeth, L. J. Guibas, N. A. Lynch, “Probabilistic Analysis of a Network Resource Allocation Algorithm,” to appear in Information and Control.

    Google Scholar 

  5. R. W. Floyd, “Assigning Meanings to Programs,” in Mathematical Aspects of Computer Science, American Math. Soc., 1967.

    Google Scholar 

  6. B. T. Hailpern, S. S. Owicki, “Verifying Network Protocols Using Temporal Logic,” Technical Report No. 192, Computer Systems Laboratory, Stanford University, June, 1980.

    Google Scholar 

  7. C. A. R. Hoare, “An Axiomatic Basis for Computer Programming,” Comm. ACM, Vol. 21, October, 1969.

    Google Scholar 

  8. C. B. Jones, “Development Methods for Computer Programs Including a Notion of Interference,” Wolfson College, June, 1981.

    Google Scholar 

  9. C. B. Jones, “Specification and Design of (Parallel) Programs,” IFIP Conference, 1983.

    Google Scholar 

  10. L. Lamport, “'sometime’ is Sometimes ‘Not Never',” Seventh ACM Conference on Principles of Programming Languages, 1980.

    Google Scholar 

  11. L. Lamport, “Specifying Concurrent Program Modules,” ACM Transactions on Programming Languages and Systems, 5, 2 (April, 1983), 190–222.

    Article  Google Scholar 

  12. B. H. Liskov, “Modular Program Construction Using Abstractions,” MIT Computation Structures Group Memo 184, September, 1979.

    Google Scholar 

  13. Z. Manna, A. Pnueli, “Verification of Concurrent Programs: A Temporal Proof System,” Stanford University Report No. STAN-CS-83-967, June, 1983.

    Google Scholar 

  14. J. Misra, K. M. Chandy, “Proofs of Networks of Processes,” IEEE Trans. on Software Eng., SE-7, 4, (July, 1981).

    Google Scholar 

  15. J. Misra, K. M. Chandy, T. Smith, “Proving Safety and Liveness of Communicating Processes with Examples,” ACM Conf. on Principles of Distributed Computing, 1982.

    Google Scholar 

  16. S. S. Owicki, D. Gries, “Verifying Properties of Parallel Programs: An Axiomatic Approach,” Comm. ACM 15, 5 (1976).

    Google Scholar 

  17. S. S. Owicki, L. Lamport, “Proving Liveness Properties of Concurrent Programs,” ACM Transactions on Programming Languages and Systems, 4, 3 (July 1982), 455–495.

    Article  Google Scholar 

  18. A. Pnueli, “The Temporal Logic of Programs,” IEEE Symposium on Foundations of Computer Science, 1977.

    Google Scholar 

  19. R. L. Schwartz, P. M. Melliar-Smith, “Temporal Logic Specification of Distributed Systems,”, Second International Conference on Distributed Systems, INRIA, France, April, 1981.

    Google Scholar 

  20. E. W. Stark, “Foundations of a Theory of Specification for Distributed Systems,” M.I.T. Laboratory for Computer Science MIT/LCS/TR-342, August, 1984.

    Google Scholar 

  21. N. Wirth, “Program Development by Stepwise Refinement,” Comm. ACM 14, 4 (April, 1971), 221–227.

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

S. N. Maheshwari

Rights and permissions

Reprints and permissions

Copyright information

© 1985 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Stark, E.W. (1985). A proof technique for rely/guarantee properties. In: Maheshwari, S.N. (eds) Foundations of Software Technology and Theoretical Computer Science. FSTTCS 1985. Lecture Notes in Computer Science, vol 206. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-16042-6_21

Download citation

  • DOI: https://doi.org/10.1007/3-540-16042-6_21

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-16042-7

  • Online ISBN: 978-3-540-39722-9

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics