Skip to main content
Log in

Streamlining progress-based derivations of concurrent programs

  • ORIGINAL ARTICLE
  • Published:
Formal Aspects of Computing

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. Alagarsamy K (2003) Some myths about famous mutual exclusion algorithms. SIGACT News 34(3):94–103

    Article  Google Scholar 

  2. 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

  3. Chandy KM, Misra J (1988) Parallel program design: A foundation. Addison–Wesley Longman, USA

    MATH  Google Scholar 

  4. 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

    MathSciNet  Google Scholar 

  5. 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

  6. Dijkstra EW (1968) Cooperating sequential processes. In: Programming languages. Academic Press, New York, pp 43–112

  7. Dijkstra EW (1976) A discipline of programming. Prentice Hall, Englewood Cliffs

    MATH  Google Scholar 

  8. Dijkstra EW (1982) A personal summary of the Gries–Owicki theory. In: Selected writings on computing: a personal perspective. Springer, Heidelberg, pp 188–199

  9. 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

  10. 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

  11. Feijen WHJ (2005) A method for avoiding total deadlock, courtesy Diethard Michaelis. Personal note WF284, June 2005

  12. Francez N (1986) Fairness. Springer, Heidelberg

    MATH  Google Scholar 

  13. Feijen WHJ, van Gasteren AJM (1999) On a method of multiprogramming. Springer, Heidelberg

    MATH  Google Scholar 

  14. 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

  15. Misra J (1990) More on strengthening the guard. http://www.cs.utexas.edu/users/psp/unity/notes/19-90.pdf, July 1990

  16. Mooij AJ (2006) Constructive formal methods and protocol standardization. PhD thesis, Technische Universiteit Eindhoven, October 2006

  17. Manna Z, Pnueli P (1992) Temporal verification of reactive and concurrent systems: specification. Springer, New York

    Google Scholar 

  18. 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

  19. 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

  20. Nelson G (1989) A generalization of Dijkstra’s calculus. ACM Trans Programm Lang Syst 11(4):517–561

    Article  Google Scholar 

  21. Owicki S, Gries D (1976) An axiomatic proof technique for parallel programs I. Acta Inf 6:319–340

    Article  MATH  MathSciNet  Google Scholar 

  22. Peterson GL (1981) Myths about the mutual exclusion problem. Inf Process Lett 12:115–116

    Article  MATH  Google Scholar 

  23. Stølen K (1990) Development of parallel programs on shared data-structures. PhD thesis, University of Manchester

Download references

Author information

Authors and Affiliations

Authors

Corresponding authors

Correspondence to Brijesh Dongol or Arjan J. Mooij.

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

Reprints 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

Download citation

  • Received:

  • Revised:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s00165-007-0037-4

Keywords

Navigation