Design, verification and documentation of concurrent systems
The concept of invariant is the basis of most formal methods for the design and verification of concurrent systems. It can be noticed that invariants can also be used to give clear and concise descriptions of correct programs. As invariants are concerned only with the safety properties of systems, other formal objects have to be used to deal with liveness properties. Unfortunately, the formal objects generally used for liveness properties are somewhat inadequate, especially from the documentation point of view, A new family of formal objects, called proof graphs, is introduced. These graphs can be designed together with the corresponding program by stepwise refinement. They turn to be useful for specification, verification and documentation, but only the last point is emphasized in this paper and illustrated by an elementary example.
Unable to display preview. Download preview PDF.
- K.M. CHANDY and J. MISRA, “Parallel Program Design: A Foundation”, Addison-Wesley, 1988.Google Scholar
- E.P. GRIBOMONT, “Development of concurrent systems by incremental transformation”, Internal report, 30 p.; short version in LNCS, 432, pp. 161–176, Springer, 1990.Google Scholar
- E.P. GRIBOMONT, “A programming logic for formal concurrent systems”, LNCS, 458, pp. 298–313, Springer, 1990.Google Scholar
- L. LAMPORT, “Proving the correctness of a multiprocess program”, IEEE Trans. on Soft. Eng., SE-3, pp. 125–143, 1977.Google Scholar
- S. OWICKI and L. LAMPORT, “Proving liveness properties of concurrent programs”, ACM Trans. on Prog. Lang. and Syst., 3, 1982.Google Scholar
- N.V. STENNING, “A data transfer protocol”, Computer Networks, 1, pp. 99–110, 1976.Google Scholar