An Exercise in the Verification of Multi-Process Programs
We present an approach to the verification of a multi-process program consisting of a fixed but unbounded number of processes executing an identical program. The approach is illustrated on an algorithm for mutual exclusion that contains tests that refer to many shared variables at the same time. We analyze the algorithm first under the assumption that these tests are atomic. We then consider the more realistic assumption that they are molecular, i.e. performed by several steps, each reading a single shared variable. We show that the algorithm is correct only for the limited implementation in which the variables are checked in ascending order of indices.
KeywordsShared Variable Transition Relation Molecular Test Critical Section Mutual Exclusion
Unable to display preview. Download preview PDF.
- Z. Manna and A. Pnueli. Adequate proof principles for invariance and liveness properties of concurrent programs. Sci. Comp. Prog., 32:257– 289, 1984.Google Scholar
- Z. Manna and A. Pnueli. Tools for the practicing verifier. Technical Report, Dept. of Computer Science, Stanford University, 1990.Google Scholar
- B. K. Szymanski. A simple solution to Lamport’s concurrent programming problem with linear wait. In Proc. 1988 International Conference on Supercomputing Systems, St. Malo, France, July 1988, pages 621– 626, 1988.Google Scholar