Abstract
The logic of Owicki and Gries is a well-known logic for verifying safety properties of concurrent programs. Using this logic, Feijen and van Gasteren describe a method for deriving concurrent programs based on safety. In this work, we explore derivation techniques of concurrent programs using progress-based reasoning. We use a framework that combines the safety logic of Owicki and Gries, and the progress logic of UNITY. Our contributions improve the applicability of our earlier techniques by reducing the calculational overhead in the formal proofs and derivations. To demonstrate the effectiveness of our techniques, a derivation of Dekker’s mutual exclusion algorithm is presented. This derivation leads to the discovery of some new and simpler variants of this famous algorithm.
Similar content being viewed by others
References
Alagarsamy K (2003) Some myths about famous mutual exclusion algorithms. SIGACT News 34(3):94–103
Bar-David Y, Taubenfeld G (2003) Automatic discovery of mutual exclusion algorithms. In: Proceedings of the international conference on distributed computing (DISC 2003), Vol 2848. LNCS. Springer, Heidelberg, pp 136–150
Chandy KM, Misra J (1988) Parallel program design: A foundation. Addison–Wesley Longman, USA
Dongol B, Goldson D (2006) Extending the theory of Owicki and Gries with a logic of progress. Logical Methods Comput Sci 2(1):1–25
Dongol B, Hayes IJ (2007) Trace semantics for the Owicki–Gries theory integrated with the progress logic from UNITY. Technical Report SSE-2007-02, Division of Systems and Software Engineering Research, School of Information Technology and Electrical Engineering, The University of Queensland, QLD 4072, Australia, April 2007
Dijkstra EW (1968) Cooperating sequential processes. In: Programming languages. Academic Press, New York, pp 43–112
Dijkstra EW (1976) A discipline of programming. Prentice Hall, Englewood Cliffs
Dijkstra EW (1982) A personal summary of the Gries–Owicki theory. In: Selected writings on computing: a personal perspective. Springer, Heidelberg, pp 188–199
Dongol B, Mooij AJ (2006) Progress in deriving concurrent programs: emphasizing the role of stable guards. In: Proceedings of the international conference on mathematics of program construction (MPC 2006), Vol 4014. LNCS. Springer, Heidelberg, pp 140–161
Dongol B (2006) Formalising progress properties of non-blocking programs. In: Proceedings of the international conference on formal engineering methods (ICFEM 2006), Vol 4260. LNCS. Springer, Heidelberg, pp 284–303
Feijen WHJ (2005) A method for avoiding total deadlock, courtesy Diethard Michaelis. Personal note WF284, June 2005
Francez N (1986) Fairness. Springer, Heidelberg
Feijen WHJ, van Gasteren AJM (1999) On a method of multiprogramming. Springer, Heidelberg
Goldson D, Dongol B (2005) Concurrent program design in the extended theory of Owicki and Gries. In: Proceedings of computing: the Australasian theory symposium (CATS 2005), Vol 41 of CRPIT. Australian Computer Society, pp 41–50
Misra J (1990) More on strengthening the guard. http://www.cs.utexas.edu/users/psp/unity/notes/19-90.pdf, July 1990
Mooij AJ (2006) Constructive formal methods and protocol standardization. PhD thesis, Technische Universiteit Eindhoven, October 2006
Manna Z, Pnueli P (1992) Temporal verification of reactive and concurrent systems: specification. Springer, New York
Mooij AJ, Wesselink JW (2003) A formal analysis of a dynamic distributed spanning tree algorithm. Computer Science Report 03–16, Department of Mathematics and Computer Science, Technische Universiteit Eindhoven, December 2003
Mooij AJ, Wesselink JW (2005) Incremental verification of Owicki/Gries proof outlines using PVS. In: Proceedings of the international conference on formal engineering methods (ICFEM 2005), Vol 3785 of LNCS. Springer, Heidelberg, pp 390–404
Nelson G (1989) A generalization of Dijkstra’s calculus. ACM Trans Programm Lang Syst 11(4):517–561
Owicki S, Gries D (1976) An axiomatic proof technique for parallel programs I. Acta Inf 6:319–340
Peterson GL (1981) Myths about the mutual exclusion problem. Inf Process Lett 12:115–116
Stølen K (1990) Development of parallel programs on shared data-structures. PhD thesis, University of Manchester
Author information
Authors and Affiliations
Corresponding authors
Additional information
Author Mooij performed this research at the Department of Mathematics and Computer Science of the Technische Universiteit Eindhoven, while being supported by the NWO under project 016.023.015: “Improving the Quality of Protocol Standards”.
E. C. R. Hehner
Rights and permissions
About this article
Cite this article
Dongol, B., Mooij, A.J. Streamlining progress-based derivations of concurrent programs. Form Asp Comp 20, 141–160 (2008). https://doi.org/10.1007/s00165-007-0037-4
Received:
Revised:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00165-007-0037-4