Abstraction as a Unifying Link for Formal Approaches to Concurrency

  • Cliff B. Jones
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7504)


Abstraction is a crucial tool in specifying and justifying developments of systems. This observation is recognised in many different methods for developing sequential software; it also applies to some approaches to the formal development of concurrent systems although there its use is perhaps less uniform. The rely/guarantee approach to formal design has, for example, been shown to be capable of recording the design of complex concurrent software in a “top down” stepwise process that proceeds from abstract specification to code. In contrast, separation logics were –at least initially– motivated by reasoning about details of extant code. Such approaches can be thought of as “bottom up”. The same “top down/bottom up” distinction can be applied to “atomicity refinement” and “linearisability”. Some useful mixes of these approaches already exist and they are neither to be viewed as competitive approaches nor are they irrevocably confined by the broad categorisation. This paper reports on recent developments and presents the case for how careful use of abstractions can make it easier to marry the respective advantages of different approaches to reasoning about concurrency.


Formal Approach Proof Obligation Concurrent System Data Race Separation Logic 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Abrial, J.-R.: The B-Book: Assigning programs to meanings. Cambridge University Press (1996)Google Scholar
  2. 2.
    Bornat, R., Amjad, H.: Inter-process buffers in separation logic with rely-guarantee (2010)Google Scholar
  3. 3.
    Bornat, R., Amjad, H.: Explanation of two non-blocking shared-variable communication algorithms. Formal Aspects of Computing, 1–39 (2011)Google Scholar
  4. 4.
    Brookes, S.D.: A semantics of concurrent separation logic. Theoretical Computer Science 375(1-3), 227–270 (2007)MathSciNetzbMATHCrossRefGoogle Scholar
  5. 5.
    Burckhardt, S., Gotsman, A., Musuvathi, M., Yang, H.: Concurrent Library Correctness on the TSO Memory Model. In: Seidl, H. (ed.) ESOP 2012. LNCS, vol. 7211, pp. 87–107. Springer, Heidelberg (2012)CrossRefGoogle Scholar
  6. 6.
    Burstall, R.M.: Some techniques for proving correctness of programs which alter data structures. Machine Intelligence 7, 23–50 (1972)zbMATHGoogle Scholar
  7. 7.
    Coleman, J.W., Jones, C.B.: A structural proof of the soundness of rely/guarantee rules. Journal of Logic and Computation 17(4), 807–841 (2007)MathSciNetzbMATHCrossRefGoogle Scholar
  8. 8.
    Collette, P., Jones, C.B.: Enhancing the tractability of rely/guarantee specifications in the development of interfering operations. In: Plotkin, G., Stirling, C., Tofte, M. (eds.) Proof, Language and Interaction, ch. 10, pp. 277–307. MIT Press (2000)Google Scholar
  9. 9.
    Cousot, P.: The Verification Grand Challenge and Abstract Interpretation. In: Meyer, B., Woodcock, J. (eds.) VSTTE 2005. LNCS, vol. 4171, pp. 189–201. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  10. 10.
    de Roever, W.P.: Concurrency Verification: Introduction to Compositional and Noncompositional Methods. Cambridge University Press (2001)Google Scholar
  11. 11.
    Dijkstra, E.W.: A Discipline of Programming. Prentice-Hall, Englewood Cliffs (1976)zbMATHGoogle Scholar
  12. 12.
    Dingel, J.: A refinement calculus for shared-variable parallel and distributed programming. Formal Aspects of Computing 14, 123–197 (2002)zbMATHCrossRefGoogle Scholar
  13. 13.
    Jürgen Dingel. Systematic Parallel Programming. PhD thesis, Carnegie Mellon University, CMU-CS-99-172 (2000)Google Scholar
  14. 14.
    Dodds, M., Feng, X., Parkinson, M., Vafeiadis, V.: Deny-Guarantee Reasoning. In: Castagna, G. (ed.) ESOP 2009. LNCS, vol. 5502, pp. 363–377. Springer, Heidelberg (2009)CrossRefGoogle Scholar
  15. 15.
    Feng, X.: Local rely-guarantee reasoning. In: Proceedings of the 36th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2009, pp. 315–327. ACM, New York (2009)Google Scholar
  16. 16.
    Floyd, R.W.: Assigning meanings to programs. In: Proc. Symp. in Applied Mathematics, vol. 19: Mathematical Aspects of Computer Science, pp. 19–32. American Mathematical Society (1967)Google Scholar
  17. 17.
    Gotsman, A., Yang, H.: Liveness-Preserving Atomicity Abstraction. In: Aceto, L., Henzinger, M., Sgall, J. (eds.) ICALP 2011, Part II. LNCS, vol. 6756, pp. 453–465. Springer, Heidelberg (2011)CrossRefGoogle Scholar
  18. 18.
    Hayes, I.J., Jones, C.B., Colvin, R.J.: Refining rely-guarantee thinking. Technical Report CS-TR-1334, Newcastle University (May 2012), submitted to Formal Aspects of Computing visible online,
  19. 19.
    Hayes, I. (ed.): Specification Case Studies, 2nd edn. Prentice Hall International, Englewood Cliffs (1993)zbMATHGoogle Scholar
  20. 20.
    Hayes, I.J., Burns, A., Dongol, B., Jones, C.B.: Comparing models of nondeterministic expression evaluation. Technical Report CS-TR-1273, School of Computing Science, University of Newcastle, Submitted to Computer Journal (September 2011) visible on-line,
  21. 21.
    Hayes, I.J., Colvin, R.J.: Integrated Operational Semantics: Small-Step, Big-Step and Multi-step. In: Derrick, J., Fitzgerald, J., Gnesi, S., Khurshid, S., Leuschel, M., Reeves, S., Riccobene, E. (eds.) ABZ 2012. LNCS, vol. 7316, pp. 21–35. Springer, Heidelberg (2012)CrossRefGoogle Scholar
  22. 22.
    Herlihy, M., Wing, J.M.: Linearizability: A correctness condition for concurrent objects. ACM Trans. Program. Lang. Syst. 12(3), 463–492 (1990)CrossRefGoogle Scholar
  23. 23.
    Hoare, C.A.R.: An axiomatic basis for computer programming. Communications of the ACM 12(10), 576–580, 583 (1969)Google Scholar
  24. 24.
    Hoare, C.A.R., Hayes, I.J., He, J., Morgan, C., Roscoe, A.W., Sanders, J.W., Sørensen, I.H., Spivey, J.M., Sufrin, B.A.: The laws of programming. Communications of the ACM 30, 672–687 (1987), see Corrigenda in ibid 30:770Google Scholar
  25. 25.
    Hoare, C.A.R.: Towards a theory of parallel programming. In: Operating System Techniques, pp. 61–71. Academic Press (1972)Google Scholar
  26. 26.
    Isthiaq, S., O’Hearn, P.W.: BI as an assertion language for mutable data structures. In: 28th POPL, pp. 36–49 (2001)Google Scholar
  27. 27.
    Jones, C.B.: Software Development: A Rigorous Approach. Prentice Hall International, Englewood Cliffs (1980)zbMATHGoogle Scholar
  28. 28.
    Jones, C.B.: Development Methods for Computer Programs including a Notion of Interference. PhD thesis, Oxford University, Printed as: Programming Research Group, Technical Monograph 25 (June 1981)Google Scholar
  29. 29.
    Jones, C.B.: Specification and design of (parallel) programs. In: Proceedings of IFIP 1983, pp. 321–332. North-Holland (1983)Google Scholar
  30. 30.
    Jones, C.B.: Tentative steps toward a development method for interfering programs. Transactions on Programming Languages and System 5(4), 596–619 (1983)zbMATHCrossRefGoogle Scholar
  31. 31.
    Jones, C.B.: Accommodating interference in the formal design of concurrent object-based programs. Formal Methods in System Design 8(2), 105–122 (1996)CrossRefGoogle Scholar
  32. 32.
    Jones, C.B.: Wanted: a compositional approach to concurrency. In: McIver, A., Morgan, C. (eds.) Programming Methodology, pp. 5–15. Springer (2003)Google Scholar
  33. 33.
    Jones, C.B.: Splitting atoms safely. Theoretical Computer Science 375(1-3), 109–119 (2007)MathSciNetzbMATHCrossRefGoogle Scholar
  34. 34.
    Jones, C.B.: The role of auxiliary variables in the formal development of concurrent programs. In: Jones, C.B., Roscoe, A.W., Wood, K. (eds.) Reflections on the Work of C.A.R. Hoare, ch. 8, pp. 167–188. Springer (2010)Google Scholar
  35. 35.
    Jones, C.B.: The early search for tractable ways of reasonning about programs. IEEE, Annals of the History of Computing 25(2), 26–49 (2003)MathSciNetCrossRefGoogle Scholar
  36. 36.
    Jones, C.B., Hayes, I.J., Jackson, M.A.: Deriving Specifications for Systems That Are Connected to the Physical World. In: Jones, C.B., Liu, Z., Woodcock, J. (eds.) Bjøorner/Zhou Festschrift. LNCS, vol. 4700, pp. 364–390. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  37. 37.
    Jones, C.B., Pierce, K.G.: Splitting Atoms with Rely/Guarantee Conditions Coupled with Data Reification. In: Börger, E., Butler, M., Bowen, J.P., Boca, P. (eds.) ABZ 2008. LNCS, vol. 5238, pp. 360–377. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  38. 38.
    Jones, C.B., Pierce, K.G.: Elucidating concurrent algorithms via layers of abstraction and reification. Formal Aspects of Computing 23(3), 289–306 (2011)MathSciNetzbMATHCrossRefGoogle Scholar
  39. 39.
    Leinenbach, D., Santen, T.: Verifying the Microsoft Hyper-V Hypervisor with VCC. In: Cavalcanti, A., Dams, D.R. (eds.) FM 2009. LNCS, vol. 5850, pp. 806–809. Springer, Heidelberg (2009)CrossRefGoogle Scholar
  40. 40.
    Liang, H., Feng, X., Fu, M.: A rely-guarantee-based simulation for verifying concurrent program transformations. In: Proceedings of the 39th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2012, pp. 455–468. ACM, New York (2012)CrossRefGoogle Scholar
  41. 41.
    Morgan, C.C.: Programming from Specifications, 2nd edn. Prentice Hall (1994)Google Scholar
  42. 42.
    Morgan, C.C., Vickers, T.N.: Types and invariants in the refinement calculus. In: Morgan, C.C., Vickers, T.N. (eds.) On the Refinement Calculus, pp. 127–154. Springer (1994)Google Scholar
  43. 43.
    Nipkow, T.: Non-deterministic data types: Models and implementations. Acta Informatica 22, 629–661 (1986)MathSciNetzbMATHCrossRefGoogle Scholar
  44. 44.
    O’Hearn, P.W., Reynolds, J.C., Yang, H.: Local Reasoning about Programs that Alter Data Structures. In: Fribourg, L. (ed.) CSL 2001 and EACSL 2001. LNCS, vol. 2142, pp. 1–19. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  45. 45.
    O’Hearn, P.W.: Resources, concurrency and local reasoning. Theoretical Computer Science 375(1-3), 271–307 (2007)MathSciNetzbMATHCrossRefGoogle Scholar
  46. 46.
    O’Hearn, P.W., Pym, D.J.: The logic of bunched implications. Bulletin of Symbolic Logic 5(2), 215–244 (1999)MathSciNetzbMATHCrossRefGoogle Scholar
  47. 47.
    O’Hearn, P.W., Yang, H., Reynolds, J.C.: Separation and information hiding. ACM TOPLAS 31(3) (April 2009); Preliminary version appeared in 31st POPL, pp. 268–280 (2004)Google Scholar
  48. 48.
    Parkinson, M., Bornat, R., Calcagno, C.: Variables as resource in Hoare logics. In: 2006 21st Annual IEEE Symposium on Logic in Computer Science, pp. 137–146 (2006)Google Scholar
  49. 49.
    Parkinson, M.: The Next 700 Separation Logics. In: Leavens, G.T., O’Hearn, P., Rajamani, S.K. (eds.) VSTTE 2010. LNCS, vol. 6217, pp. 169–182. Springer, Heidelberg (2010)CrossRefGoogle Scholar
  50. 50.
    Parkinson, M., Bierman, G.: Separation logic and abstraction. In: POPL 2005: Proceedings of the 32nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 247–258. ACM, New York (2005)CrossRefGoogle Scholar
  51. 51.
    Reynolds, J.C.: Intuitionistic reasoning about shared mutable data structure. In: Davies, J., Roscoe, B., Woodcock, J. (eds.) Millennial Perspectives in Computer Science, Houndsmill, Hampshire, pp. 303–321. Palgrave (2000)Google Scholar
  52. 52.
    Reynolds, J.: A logic for shared mutable data structures. In: Plotkin, G. (ed.) Proceedings of the Seventeenth Annual IEEE Symp. on Logic in Computer Science, LICS 2002. IEEE Computer Society Press (July 2002)Google Scholar
  53. 53.
    Sangiorgi, D.: Typed π-calculus at work: a correctness proof of Jones’s parallelisation transformation on concurrent objects. Theory and Practice of Object Systems 5(1), 25–34 (1999)MathSciNetCrossRefGoogle Scholar
  54. 54.
    Simpson, H.R.: Four-slot fully asynchronous communication mechanism. IEE Proceedings E Computers and Digital Techniques 137(1), 17–30 (1990)MathSciNetCrossRefGoogle Scholar
  55. 55.
    Stølen, K.: Development of Parallel Programs on Shared Data-Structures. PhD thesis, Manchester University, Available as UMCS-91-1-1 (1990)Google Scholar
  56. 56.
    Vafeiadis, V.: Modular fine-grained concurrency verification. PhD thesis, University of Cambridge (2007)Google Scholar
  57. 57.
    Vafeiadis, V., Parkinson, M.: A Marriage of Rely/Guarantee and Separation Logic. In: Caires, L., Vasconcelos, V.T. (eds.) CONCUR 2007. LNCS, vol. 4703, pp. 256–271. Springer, Heidelberg (2007)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2012

Authors and Affiliations

  • Cliff B. Jones
    • 1
  1. 1.School of Computing ScienceNewcastle UniversityUK

Personalised recommendations