Verification and refinement of distributed programs in a fair framework
In this paper, we present a technique to prove progress properties of non-terminating concurrent programs and to refine them in such a way that these properties are preserved. We rely on strong fairness assumptions about the language implementation.
We define a simple language based on Hoare-78 CSP. A program denotes a set of finite and infinite traces corresponding to all its possible computations. The semantics of a program is defined as the set of its fair traces. We also give a liveness-preserving implementation notion. Proof rules concerning progress properties and correction of refinements are given. We show that these proof rules are consistent with the given fair semantics. Finally, we verify and refine a non-trivial case study.
Unable to display preview. Download preview PDF.
- [AO91]K. R. Apt and E.-R. Olderog. Verification of Sequential and Concurrent Programs. Springer-Verlag, 1991.Google Scholar
- [CM90]K.M. Chandy and J. Misra. Proof of Distributed Algorithms: An Exercise. In C.A.R. Hoare, editor, Development in Concurrency and Communication, pages 305–332. Addison Wesley, 1990.Google Scholar
- [Fra86]N. Francez. Fairness. Springer-Verlag, 1986.Google Scholar
- [Fra92]N. Francez. Program Verification. Addison-Wesley, 1992.Google Scholar
- [GP97]L.A. Galán and R. Peña. Verification and Refinement of Distributed Programs in a Fair Framework. Technical Report DIA-UCM 97/47, Universidad Complutense de Madrid, 1997.Google Scholar
- [Par86]J. Parrow. Fairness Properties in Process Algebra. Ph.D. thesis. Department of Computer Science, Uppsala University, Sweden, 1986.Google Scholar
- [Pnu77]A. Pnueli. The Temporal Logic of Programs. In 18th Symp. on the Foundations of Computer Science, pages 46–47, November 1977.Google Scholar