Formal derivation of strongly correct concurrent programs

SummaryA method is described for deriving concurrent programs which are consistent with the problem specifications and free from deadlock and from starvation. The programs considered are expressed by nondeterministic repetitive selections of pairs of synchronizing conditions and subsequent actions. An iterative, convergent calculus is developed for synthesizing the invariant and synchronizing conditions which guarantee strong correctness. These conditions are constructed as limits of recurrences associated with the specifications and the actions. An alternative method for deriving starvationfree programs by use of auxiliary variables is also given. The applicability of the techniques presented is discussed through various examples; their use for verification purposes is illustrated as well.

[1]  Susan Owicki,et al.  An axiomatic proof technique for parallel programs I , 1976, Acta Informatica.

[2]  Edsger W. Dijkstra A class of allocation strategies inducing bounded delays only , 1971, AFIPS '72 (Spring).

[3]  Robert W. Floyd,et al.  Assigning Meanings to Programs , 1993 .

[4]  Raymond R. Devillers,et al.  A General Mechanism for Avoiding Starvation with Distributed Control , 1978, Inf. Process. Lett..

[5]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[6]  Michel Sintzoff,et al.  Eliminating Blind Alleys from Backtrack Programs , 1976, ICALP.

[7]  Rod M. Burstall,et al.  Program Proving as Hand Simulation with a Little Induction , 1974, IFIP Congress.

[8]  Robert M. Keller,et al.  Formal verification of parallel programs , 1976, CACM.

[9]  Lawrence Flon,et al.  Nondeterminism and the Correctness of Parallel Programs , 1977, Formal Description of Programming Concepts.

[10]  Michel Sintzoff,et al.  Ensuring Correctness by Arbitrary Postfixed-Points , 1978, MFCS.

[11]  Michel Sintzoff,et al.  Constructing correct and efficient concurrent programs , 1975 .

[12]  Edsger W. Dijkstra,et al.  Hierarchical ordering of sequential processes , 1971, Acta Informatica.

[13]  Leslie Lamport,et al.  Proving the Correctness of Multiprocess Programs , 1977, IEEE Transactions on Software Engineering.

[14]  Willem P. de Roever,et al.  A Calculus for Recursive Program Schemes , 1972, ICALP.

[15]  Axel van Lamsweerde,et al.  From Verifying Termination to Guaranteeing it: A Case Study , 1977, Formal Description of Programming Concepts.

[16]  Richard C. Holt,et al.  Comments on prevention of system deadlocks , 1971, Commun. ACM.

[17]  Amir Pnueli,et al.  A proof method for cyclic programs , 1978, Acta Informatica.