Resources, Concurrency, and Local Reasoning

  • Peter W. O’Hearn
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2986)


In the 1960s Dijkstra suggested that, in order to limit the complexity of potential process interactions, concurrent programs should be designed so that different processes behave independently, except at rare moments of synchronization [3]. Then, in the 1970s Hoare and Brinch Hansen argued that debugging and reasoning about concurrent programs could be considerably simplified using compiler-enforceable syntactic constraints that preclude interference [4,1]; scope restrictions were described which had the effect that all process interaction was mediated by a critical region or monitor. Based on such restrictions Hoare described proof rules for shared-variable concurrency that were beautifully modular [4]: one could reason locally about a process, and simple syntactic checks ensured that no other process could tamper with its state in a way that invalidated the local reasoning.


Information Hiding Concurrent Program Proof Rule Separation Logic Operating System Principle 
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.


  1. 1.
    Brinch Hansen, P.: Operating System Principles. Prentice-Hall, Englewood Cliffs (1973)zbMATHGoogle Scholar
  2. 2.
    Brookes, S.D.: A semantics for concurrent separation logic. Draft of 7/25/03 (2003)Google Scholar
  3. 3.
    Dijkstra, E.W.: Cooperating sequential processes. In: Genuys, F. (ed.) Programming Languages, pp. 43–112. Academic Press, London (1968)Google Scholar
  4. 4.
    Hoare, C.A.R.: Towards a theory of parallel programming. In: Hoare, Perrot (eds.) Operating Systems Techniques. Academic Press, London (1972)Google Scholar
  5. 5.
    Jones, C.B.: Specification and design of (parallel) programs. In: IFIP Conference (1983)Google Scholar
  6. 6.
    O’Hearn, P., Reynolds, J., 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
  7. 7.
    O’Hearn, P.W., Pym, D.J.: The logic of bunched implications. Bulletin of Symbolic Logic 5(2), 215–244 (1999)zbMATHCrossRefMathSciNetGoogle Scholar
  8. 8.
    O’Hearn, P.W., Yang, H., Reynolds, J.C.: Separation and information hiding. In: 31st POPL, Venice, January 2004, pp. 268–280 (2004)Google Scholar
  9. 9.
    Owicki, S., Gries, D.: An axiomatic proof technique for parallel programs. Acta Informatica (19), 319–340 (1976)Google Scholar
  10. 10.
    Pnueli, A.: The temporal semantics of concurrent programs. Theoretical Computer Science 13(1), 45–60 (1981)zbMATHCrossRefMathSciNetGoogle Scholar
  11. 11.
    Reynolds, J.C.: Separation logic: a logic for shared mutable data structures. In: Invited Paper, LICS 2002 (2002)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2004

Authors and Affiliations

  • Peter W. O’Hearn
    • 1
  1. 1.Queen MaryUniversity of London 

Personalised recommendations