Abstract
A rely/guarantee specification for a program P is a specification of the form R ⊃ G (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 R ⊃ G, given that we know P satisfies a finite collection of rely/guarantee specifications R i ⊃ G i , (i ∈ I). 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.
Bibliography
H. Barringer, R. Kuiper, “A Temporal Logic Specification Method Supporting Hierarchical Development,” Manuscript, University of Manchester Department of Computer Science, November, 1983.
H. Barringer, R. Kuiper, A. Pnueli, “Now You May Compose Temporal Logic Specifications,” Sixteenth ACM Symposium on Theory of Computing, 1984.
E. W. Dijkstra, A Discipline of Programming, Prentice Hall, 1976.
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.
R. W. Floyd, “Assigning Meanings to Programs,” in Mathematical Aspects of Computer Science, American Math. Soc., 1967.
B. T. Hailpern, S. S. Owicki, “Verifying Network Protocols Using Temporal Logic,” Technical Report No. 192, Computer Systems Laboratory, Stanford University, June, 1980.
C. A. R. Hoare, “An Axiomatic Basis for Computer Programming,” Comm. ACM, Vol. 21, October, 1969.
C. B. Jones, “Development Methods for Computer Programs Including a Notion of Interference,” Wolfson College, June, 1981.
C. B. Jones, “Specification and Design of (Parallel) Programs,” IFIP Conference, 1983.
L. Lamport, “'sometime’ is Sometimes ‘Not Never',” Seventh ACM Conference on Principles of Programming Languages, 1980.
L. Lamport, “Specifying Concurrent Program Modules,” ACM Transactions on Programming Languages and Systems, 5, 2 (April, 1983), 190–222.
B. H. Liskov, “Modular Program Construction Using Abstractions,” MIT Computation Structures Group Memo 184, September, 1979.
Z. Manna, A. Pnueli, “Verification of Concurrent Programs: A Temporal Proof System,” Stanford University Report No. STAN-CS-83-967, June, 1983.
J. Misra, K. M. Chandy, “Proofs of Networks of Processes,” IEEE Trans. on Software Eng., SE-7, 4, (July, 1981).
J. Misra, K. M. Chandy, T. Smith, “Proving Safety and Liveness of Communicating Processes with Examples,” ACM Conf. on Principles of Distributed Computing, 1982.
S. S. Owicki, D. Gries, “Verifying Properties of Parallel Programs: An Axiomatic Approach,” Comm. ACM 15, 5 (1976).
S. S. Owicki, L. Lamport, “Proving Liveness Properties of Concurrent Programs,” ACM Transactions on Programming Languages and Systems, 4, 3 (July 1982), 455–495.
A. Pnueli, “The Temporal Logic of Programs,” IEEE Symposium on Foundations of Computer Science, 1977.
R. L. Schwartz, P. M. Melliar-Smith, “Temporal Logic Specification of Distributed Systems,”, Second International Conference on Distributed Systems, INRIA, France, April, 1981.
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.
N. Wirth, “Program Development by Stepwise Refinement,” Comm. ACM 14, 4 (April, 1971), 221–227.
Author information
Authors and Affiliations
Editor information
Rights 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