Formal Aspects of Computing

, Volume 31, Issue 2, pp 133–163 | Cite as

A synchronous program algebra: a basis for reasoning about shared-memory and event-based concurrency

  • Ian J. HayesEmail author
  • Larissa A. Meinicke
  • Kirsten Winter
  • Robert J. Colvin
Original Article


In this paper we introduce an abstract algebra for reasoning about concurrent programs, that includes an abstract algebra of atomic steps, with sub-algebras of program and environment steps, and an abstract synchronisation operator. We show how the abstract synchronisation operator can be instantiated as a synchronous parallel operator with interpretations in rely-guarantee concurrency for shared-memory systems, and in process algebras CCS and CSP. It is also instantiated as a weak conjunction operator, an operator that is useful for the specification of rely and guarantee conditions in rely/guarantee concurrency. The main differences between the parallel and weak conjunction instantiations of the synchronisation operator are how they combine individual atomic steps. Lemmas common to these different instantiations are proved once using the axiomatisation of the abstract synchronous operator. Using the sub-algebras of program and environment atomic steps, rely and guarantee conditions, as well as Morgan-style specification commands, are defined at a high-level of abstraction in the program algebra. Lifting these concepts from rely/guarantee concurrency to a higher level of abstraction makes them more widely applicable. We demonstrate the practicality of the algebra by showing how a core law from rely-guarantee theory, the parallel introduction law, can be abstracted and verified easily in the algebra. In addition to proving fundamental properties for reasoning about concurrent shared-variable programs, the algebra is instantiated to prove abstract process synchronisation properties familiar from the process algebras CCS and CSP. The algebra has been encoded in Isabelle/HOL to provide a basis for tool support for concurrent program verification based on the rely/guarantee technique. It facilitates simpler, more general, proofs that allow a higher level of automation than what is possible in low-level, model-specific interpretations.


Refinement calculus Program algebra Rely/guarantee Concurrency Process algebra Synchronous parallel 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.



We would like to thank Cliff Jones, Kim Solin, Andrius Velykis and the anonymous referees for feedback on this research. This work was supported by Australian Research Council (ARC) Discovery Project DP130102901.


  1. Acz83.
    Aczel PHG (1983) On an inference rule for parallel composition. Private communication to Cliff Jones
  2. AGS14.
    Armstrong A, Gomes VBF, Struth G (2014) Algebras for program correctness in Isabelle/HOL. In: Höfner P et al. (eds) International conference on relational and algebraic methods in computer science (RAMiCS 2014), volume 8428 of Lecture notes in computer science. Springer, pp 49–64Google Scholar
  3. Bac81.
    Back, R.-J.R.: On correct refinement of programs. J Comput Syst Sci 23(1), 49–68 (1981)MathSciNetCrossRefzbMATHGoogle Scholar
  4. BK84.
    Bergstra, J.A., Klop, J.W.: Process algebra for synchronous communication. Inf Control 60(1–3), 109–137 (1984)MathSciNetCrossRefzbMATHGoogle Scholar
  5. Bli78.
    Blikle A (1978) Specified programming. In: Blum EK, Paul M, Takasu S (eds) Mathematical studies of information processing, volume 75 of Lecture notes in computer science. Springer, pp 228–251Google Scholar
  6. BvW98.
    Back, R.-J.R., von Wright, J.: Refinement calculus: a systematic introduction. Springer, New York (1998)CrossRefzbMATHGoogle Scholar
  7. CH09.
    Colvin RJ, Hayes IJ (2009) CSP with hierarchical state. In: Leuschel M, Wehrheim H (eds) Integrated formal methods (IFM 2009), volume 5423 of LNCS. Springer, pp 118–135Google Scholar
  8. CHM16.
    Colvin, R.J., Hayes, I.J., Meinicke, L.A.: Designing a semantic model for a wide-spectrum language with concurrency. Form Asp Comput 29, 853–875 (2016)MathSciNetCrossRefzbMATHGoogle Scholar
  9. CJ07.
    Coleman, J.W., Jones, C.B.: A structural proof of the soundness of rely/guarantee rules. J Log Comput 17(4), 807–841 (2007)MathSciNetCrossRefzbMATHGoogle Scholar
  10. dR01.
    de Roever, W.-P.: Concurrency verification: introduction to compositional and noncompositional methods. Cambridge University Press, Cambridge (2001)zbMATHGoogle Scholar
  11. GM93.
    Gardiner, P.H.B., Morgan, C.: A single complete rule for data refinement. Form Asp Comput 5, 367–382 (1993)CrossRefzbMATHGoogle Scholar
  12. Hay16.
    Hayes, I.J.: Generalised rely-guarantee concurrency: an algebraic foundation. Form Asp Comput 28(6), 1057–1078 (November 2016)Google Scholar
  13. HCM+16.
    Hayes IJ, Colvin RJ, Meinicke LA, Winter K, Velykis A (2016) An algebra of synchronous atomic steps. In: Fitzgerald J, Heitmeyer C, Gnesi S, Philippou A (eds) FM 2016: formal methods: 21st international symposium, proceedings, volume 9995 of LNCS.Springer International Publishing, Cham, pp 352–369Google Scholar
  14. HJC14.
    Hayes IJ, Jones CB, Colvin RJ (2014) Laws and semantics for rely-guarantee refinement. Technical Report CS-TR-1425, Newcastle UniversityGoogle Scholar
  15. HMSW11.
    Hoare, C.A.R., Möller, B., Struth, G., Wehrman, I.: Concurrent Kleene algebra and its foundations. J Log Algebr Program 80(6), 266–296 (2011)MathSciNetCrossRefzbMATHGoogle Scholar
  16. Hoa85.
    Hoare, C.A.R.: Communicating sequential processes. Prentice-Hall, Englewood-Cliffs (1985)zbMATHGoogle Scholar
  17. JH16.
    Jones CB, Hayes IJ (2016) Possible values: exploring a concept for concurrency. J Log Algebr Methods Program 85(5, Part 2):972–984Google Scholar
  18. JHC15.
    Jones, C.B., Hayes, I.J., Colvin, R.J.: Balancing expressiveness in formal approaches to concurrency. Form Asp Comput 27(3), 475–497 (2015)MathSciNetCrossRefzbMATHGoogle Scholar
  19. Jon81.
    Jones CB (1981) Development methods for computer programs including a notion of interference. Ph.D. thesis, Oxford University, June 1981. Available as: Oxford University Computing Laboratory (now Computer Science) Technical Monograph PRG-25Google Scholar
  20. Jon83a.
    Jones CB (1983) Specification and design of (parallel) programs. In: Proceedings of IFIP'83. North-Holland, pp 321–332Google Scholar
  21. Jon83b.
    Jones, C.B.: Tentative steps toward a development method for interfering programs. ACM ToPLaS 5(4), 596–619 (1983)CrossRefzbMATHGoogle Scholar
  22. Koz97.
    Kozen, D.: Kleene algebra with tests. ACM Trans Prog Lang Syst 19(3), 427–443 (1997)CrossRefzbMATHGoogle Scholar
  23. Mil82.
    Robin, Milner: A calculus of communicating systems. Springer, New York (1982)zbMATHGoogle Scholar
  24. Mil83.
    Milner, R.: Calculi for synchrony and asynchrony. Theor Comput Sci 25(3), 267–310 (1983)MathSciNetCrossRefzbMATHGoogle Scholar
  25. Mil89.
    Milner, A.J.R.G.: Communication and concurrency. Prentice-Hall, Englewood-Cliffs (1989)zbMATHGoogle Scholar
  26. Mor87.
    Morris, J.M.: A theoretical basis for stepwise refinement and the programming calculus. Sci Comput Program 9(3), 287–306 (1987)MathSciNetCrossRefzbMATHGoogle Scholar
  27. Mor88.
    Morgan, C.C.: The specification statement. ACM Trans Prog Lang Syst 10(3), 403–419 (1988)CrossRefzbMATHGoogle Scholar
  28. Mor94.
    Morgan, C.C.: Programming from specifications, 2nd edn. Prentice Hall, Englewood-Cliffs (1994)zbMATHGoogle Scholar
  29. NPW02.
    Nipkow T, Paulson LC, Wenzel M (2002) Isabelle/HOL: a proof assistant for higher-order logic, volume 2283 of LNCS. Springer, BerlinGoogle Scholar
  30. OG76.
    Owicki, S.S., Gries, D.: An axiomatic proof technique for parallel programs I. Acta Inform 6(4), 319–340 (1976)MathSciNetCrossRefzbMATHGoogle Scholar
  31. Pre03.
    Prensa Nieto L (2003) The rely-guarantee method in Isabelle/HOL. In: Proceedings of ESOP 2003, volume 2618 of LNCS. SpringerGoogle Scholar
  32. Pri10.
    Prisacariu, C.: Synchronous Kleene algebra. J Log Algebr Program 79(7), 608–635 (2010)MathSciNetCrossRefzbMATHGoogle Scholar
  33. Ros98.
    Roscoe, A.W.: The theory and practice of concurrency. Prentice-Hall, Englewood-Cliffs (1998)Google Scholar
  34. SLD08.
    Sun J, Liu Y, Dong JS (2008) Model checking CSP revisited: introducing a process analysis toolkit. In: Margaria T, Steffen B (eds) Leveraging applications of formal methods, verification and validation: third international symposium, ISoLA 2008, Porto Sani, Greece, October 13–15, 2008. Proceedings. Springer, Berlin, pp 307–322Google Scholar
  35. Sol07.
    Solin K (2007) Abstract algebra of program refinement. Ph.D. thesis, Turku Centre for Computer ScienceGoogle Scholar
  36. vW04.
    von Wright, J.: Towards a refinement algebra. Sci Comput Program 51, 23–45 (2004)MathSciNetCrossRefzbMATHGoogle Scholar
  37. WC02.
    Woodcock, J.C.P., Cavalcanti, A.L.C.: The semantics of Circus. In: Bert, D., Bowen, J.P., Henson, M.C., Robinson, K. (eds.) ZB 2002: formal specification and development in Z and B. Lecture notes in computer science, vol. 2272, pp. 184–203. Springer, Berlin (2002)CrossRefGoogle Scholar

Copyright information

© British Computer Society 2018

Authors and Affiliations

  1. 1.School of Information Technology and Electrical EngineeringThe University of QueenslandBrisbaneAustralia

Personalised recommendations