A proof technique for rely/guarantee properties

  • Eugene W. Stark
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 206)


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.


Temporal Logic Critical Section Process Node Proof Technique Guarantee Condition 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [BK83]
    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. [BKP84]
    H. Barringer, R. Kuiper, A. Pnueli, “Now You May Compose Temporal Logic Specifications,” Sixteenth ACM Symposium on Theory of Computing, 1984.Google Scholar
  3. [Dij76]
    E. W. Dijkstra, A Discipline of Programming, Prentice Hall, 1976.Google Scholar
  4. [FLG83]
    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. [Flo67]
    R. W. Floyd, “Assigning Meanings to Programs,” in Mathematical Aspects of Computer Science, American Math. Soc., 1967.Google Scholar
  6. [HO80]
    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. [Hoa69]
    C. A. R. Hoare, “An Axiomatic Basis for Computer Programming,” Comm. ACM, Vol. 21, October, 1969.Google Scholar
  8. [Jon81]
    C. B. Jones, “Development Methods for Computer Programs Including a Notion of Interference,” Wolfson College, June, 1981.Google Scholar
  9. [Jon83]
    C. B. Jones, “Specification and Design of (Parallel) Programs,” IFIP Conference, 1983.Google Scholar
  10. [Lam80]
    L. Lamport, “'sometime’ is Sometimes ‘Not Never',” Seventh ACM Conference on Principles of Programming Languages, 1980.Google Scholar
  11. [Lam83]
    L. Lamport, “Specifying Concurrent Program Modules,” ACM Transactions on Programming Languages and Systems, 5, 2 (April, 1983), 190–222.CrossRefGoogle Scholar
  12. [Lis79]
    B. H. Liskov, “Modular Program Construction Using Abstractions,” MIT Computation Structures Group Memo 184, September, 1979.Google Scholar
  13. [MP83]
    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. [MC81]
    J. Misra, K. M. Chandy, “Proofs of Networks of Processes,” IEEE Trans. on Software Eng., SE-7, 4, (July, 1981).Google Scholar
  15. [MCS82]
    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. [OG76]
    S. S. Owicki, D. Gries, “Verifying Properties of Parallel Programs: An Axiomatic Approach,” Comm. ACM 15, 5 (1976).Google Scholar
  17. [OL82]
    S. S. Owicki, L. Lamport, “Proving Liveness Properties of Concurrent Programs,” ACM Transactions on Programming Languages and Systems, 4, 3 (July 1982), 455–495.CrossRefGoogle Scholar
  18. [Pnu77]
    A. Pnueli, “The Temporal Logic of Programs,” IEEE Symposium on Foundations of Computer Science, 1977.Google Scholar
  19. [SM81]
    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. [Sta84]
    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. [Wir71]
    N. Wirth, “Program Development by Stepwise Refinement,” Comm. ACM 14, 4 (April, 1971), 221–227.CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1985

Authors and Affiliations

  • Eugene W. Stark
    • 1
  1. 1.Department of Computer ScienceState University of New York at Stony BrookStony BrookUSA

Personalised recommendations