Advertisement

Separation Logic and Concurrency

  • Richard BornatEmail author
Chapter

Abstract

Concurrent separation logic is a development of Hoare logic adapted to deal with pointers and concurrency. Since its inception, it has been enhanced with a treatment of permissions to enable sharing of data between threads, and a treatment of variables as resource alongside heap cells as resource. An introduction to the logic is given with several examples of proofs, culminating in a treatment of Simpson’s 4-slot algorithm, an instance of racy non-blocking concurrency.

Keywords

Critical Section Transactional Memory Separation Logic Hoare Logic Exclusive Ownership 
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.

References

  1. 1.
    H. Barringer, R. Kuiper, and A. Pnueli. Now you may compose temporal logic specifications. In STOC ’84: Proceedings of the Sixteenth Annual ACM Symposium on Theory of Computing, pp. 51–63, New York, 1984. ACM Press.Google Scholar
  2. 2.
    J. Berdine, C. Calcagno, and P. W. O’Hearn. Smallfoot: Modular automatic assertion checking with separation logic. In Proceedings of FMCO’05, Lecture Notes in Computer Science, vol. 4111, pp. 115–137, Berlin, 2006. Springer.Google Scholar
  3. 3.
    R. Bornat. Proving pointer programs in Hoare logic. In R. C. Backhouse and J. N. Oliveira, editors, Mathematics of Program Construction, 5th International Conference, Lecture Notes in Computer Science, pp. 102–126, New York, 2000. Springer.CrossRefGoogle Scholar
  4. 4.
    R. Bornat, C. Calcagno, P. O’Hearn, and M. Parkinson. Permission accounting in separation logic. In POPL ’05: Proceedings of the 32nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 259–270, New York, January 2005. ACM Press.Google Scholar
  5. 5.
    R. Bornat, C. Calcagno, and H. Yang. Variables as resource in Separation Logic. In Proceedings of MFPS XXI. Elsevier ENTCS, May 2005.Google Scholar
  6. 6.
    J. Boyland. Checking interference with fractional permissions. In R. Cousot, editor, Static Analysis: 10th International Symposium, Lecture Notes in Computer Science, vol. 2694, pp. 55–72, Berlin, Heidelberg, New York, 2003. Springer.Google Scholar
  7. 7.
    P. Brinch Hansen, editor. The Origin of Concurrent Programming. New York, 2002. Springer.Google Scholar
  8. 8.
    S. Brookes. A semantics for concurrent separation logic. Theoretical Computer Science, 375(1–3):227–270, 2007.MathSciNetzbMATHCrossRefGoogle Scholar
  9. 9.
    R. M. Burstall. Some techniques for proving correctness of programs which alter data structures. Machine Intelligence, 7:23–50, 1972.zbMATHGoogle Scholar
  10. 10.
    J. Burton. The Theory and Practice of Refinement-After-Hiding. Ph.D. thesis, University of Newcastle upon Tyne, 2005. Available as technical report CS-TR-904.Google Scholar
  11. 11.
    P. J. Courtois, F. Heymans, and D. L. Parnas. Concurrent control with “readers” and “writers”. Communication of the ACM, 14(10):667–668, 1971.CrossRefGoogle Scholar
  12. 12.
    E. W. Dijkstra. Cooperating sequential processes. In F. Genuys, editor, Programming Languages, pp. 43–112. New York, 1968. Academic Press.Google Scholar
  13. 13.
    D. Gries. An exercise in proving parallel programs correct. Communication of the ACM, 20(12):921–930, 1977.MathSciNetzbMATHCrossRefGoogle Scholar
  14. 14.
    T. Harris, S. Marlowe, S. Peyton-Jones, and M. P. Herlihy. Composable Memory Transactions. In PPoPP ’05: Proceedings of the Tenth ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, pp. 48–60, New York, 2005. ACM Press.Google Scholar
  15. 15.
    C. A. R. Hoare. An axiomatic basis for computer programming. Communication of the ACM, 12(10):576–580, 1969.zbMATHCrossRefGoogle Scholar
  16. 16.
    C. A. R. Hoare. Towards a theory of parallel programming. In C. A. R. Hoare and R. H. Perrott, editors, Operating System Techniques, pp. 61–71, New York, 1972. Academic Press.Google Scholar
  17. 17.
    C. A. R. Hoare. Hints on programming language design. Technical Report CS-TR-73-403, Stanford University, Computer Science Department, 1973. Keynote address to ACM SIGPLAN Conference, pp. 193–216.Google Scholar
  18. 18.
    C. B. Jones. Specification and design of (parallel) programs. In IFIP Congress, pp. 321–332, North Holland, 1983. Amsterdam.Google Scholar
  19. 19.
    C. B. Jones, editor. Essays in Computing Science. Upper Saddle River, NJ, 1989. Prentice-Hall.Google Scholar
  20. 20.
    M. M. Michael and M. L. Scott. Simple, fast, and practical non-blocking and blocking concurrent queue algorithms. In PODC ’96: Proceedings of the Fifteenth Annual ACM Symposium on Principles of Distributed Computing, pp. 267–275, New York, 1996. ACM Press.Google Scholar
  21. 21.
    P. O’Hearn, J. Reynolds, and H. Yang. Local reasoning about programs that alter data structures. In L. Fribourg, editor, CSL 2001, Lecture Notes in Computer Science, vol. 2142, pp. 1–19, Berlin, 2001. Springer.Google Scholar
  22. 22.
    P. W. O’Hearn. Resources, concurrency, and local reasoning. Theoretical Computer Science, 375(1–3):271–307, 2007.MathSciNetzbMATHCrossRefGoogle Scholar
  23. 23.
    S. S. Owicki. Axiomatic Proof Techniques for Parallel Programs. Ph.D. thesis, Cornell, 1975. Technical report TR75-251.Google Scholar
  24. 24.
    S. Owicki and D. Gries. An axiomatic proof technique for parallel programs. Acta Informatica, 19:319–340, 1976.MathSciNetCrossRefGoogle Scholar
  25. 25.
    S. Owicki and D. Gries. Verifying properties of parallel programs: An axiomatic approach. Communication of the ACM, 19(5):279–285, 1976.MathSciNetzbMATHCrossRefGoogle Scholar
  26. 26.
    S. Owicki and L. Lamport. Proving liveness properties of concurrent programs. ACM Transactions on Programming Languages and Systems, 4(3):455–495, 1982.zbMATHCrossRefGoogle Scholar
  27. 27.
    M. Parkinson, R. Bornat, and C. Calcagno. Variables as resource in Hoare logics. In Proceedings of LICS, pp. 137–146, Seattle, WA, 2006. IEEE.Google Scholar
  28. 28.
    M. Parkinson, R. Bornat, and P. O’Hearn. Modular verification of a non-blocking stack. Proceedings of the 34th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 297–302, New York, 2007. ACM.Google Scholar
  29. 29.
    A. Pnueli. The temporal semantics of concurrent programs. Theoretical Computer Science, 13(1):45–60, 1981.MathSciNetzbMATHCrossRefGoogle Scholar
  30. 30.
    J. C. Reynolds. Separation logic: A logic for shared mutable data structures. In LICS ’02: Proceedings of the 17th Annual IEEE Symposium on Logic in Computer Science, pp. 55–74, Washington, DC, 2002. IEEE Computer Society.Google Scholar
  31. 31.
    H. Simpson. Four-slot fully asynchronous communication mechanism. IEE Proceedings, 137(1):17–30, 1990.Google Scholar
  32. 32.
    H. R. Simpson. Role model analysis of an asynchronous communication mechanism. IEE Proceedings of Computer Digital Technology, 144:232–240, 1997.CrossRefGoogle Scholar

Copyright information

© Springer-Verlag London Limited 2010

Authors and Affiliations

  1. 1.School of Information and Engineering SciencesMiddlesex UniversityMiddlesexUK

Personalised recommendations