Separation Logic for Object-Oriented Programming

  • Matthew Parkinson
  • Gavin Bierman
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7850)


In this article we propose techniques based on separation logic to reason about object-oriented programs. This leads to a modular proof system that can deal with features considered core to object-oriented programming, including object encapsulation, subclassing, inheritance, and dynamic dispatch.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Ishtiaq, S., O’Hearn, P.W.: BI as an assertion language for mutable data structures. In: Proceedings of POPL, pp. 14–26 (2001)Google Scholar
  2. 2.
    Parkinson, M.J., Bierman, G.M.: Separation logic and abstraction. In: Proceedings of POPL, pp. 247–258 (2005)Google Scholar
  3. 3.
    Parkinson, M.J.: Local Reasoning for Java. PhD thesis, Computer Laboratory, University of Cambridge, UCAM-CL-TR-654 (2005)Google Scholar
  4. 4.
    Parkinson, M.J., Bierman, G.M.: Separation logic, abstraction and inheritance. In: Proceedings of POPL, pp. 75–86 (2008)Google Scholar
  5. 5.
    Clarke, D.G., Potter, J.M., Noble, J.: Ownership types for flexible alias protection. In: Proceedings of OOPSLA, pp. 48–64 (1998)Google Scholar
  6. 6.
    Dietl, W., Müller, P.: Universes: Lightweight ownership for JML. Journal of Object Technology 4(8), 5–32 (2005)CrossRefGoogle Scholar
  7. 7.
    Barnett, M., Leino, K.R.M., Schulte, W.: The Spec# Programming System: An Overview. In: Barthe, G., Burdy, L., Huisman, M., Lanet, J.-L., Muntean, T. (eds.) CASSIS 2004. LNCS, vol. 3362, pp. 49–69. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  8. 8.
    Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison Wesley (1994)Google Scholar
  9. 9.
    Kassios, I.: The dynamic frames theory. Formal Aspects of Computing 23, 267–288 (2011)MathSciNetMATHCrossRefGoogle Scholar
  10. 10.
    Igarashi, A., Pierce, B.C., Wadler, P.: Featherweight Java: A minimal core calculus for Java and GJ. ACM TOPLAS 23(3), 396–450 (2001)CrossRefGoogle Scholar
  11. 11.
    O’Hearn, P.W., Reynolds, J., Yang, H.: Local Reasoning about Programs that Alter Data Structures. In: Fribourg, L. (ed.) CSL 2001. LNCS, vol. 2142, pp. 1–19. Springer, Heidelberg (2001)Google Scholar
  12. 12.
    Distefano, D., Parkinson, M.J.: jStar: towards practical verification for Java. In: Proceedings of OOPSLA, pp. 213–226 (2008)Google Scholar
  13. 13.
    Reynolds, J.C.: Separation logic: A logic for shared mutable data structures. In: Proceedings of LICS, pp. 55–74 (2002)Google Scholar
  14. 14.
    Liskov, B.H., Wing, J.M.: A behavioral notion of subtyping. ACM TOPLAS 16(6), 1811–1841 (1994)CrossRefGoogle Scholar
  15. 15.
    Abadi, M., Cardelli, L.: A theory of objects. Springer (1996)Google Scholar
  16. 16.
    van Staden, S., Calcagno, C.: Reasoning about multiple related abstractions with MultiStar. In: Proceedings of OOPSLA, pp. 504–519 (2010)Google Scholar
  17. 17.
    Bierman, G., Parkinson, M., Noble, J.: UpgradeJ: Incremental Typechecking for Class Upgrades. In: Vitek, J. (ed.) ECOOP 2008. LNCS, vol. 5142, pp. 235–259. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  18. 18.
    O’Hearn, P.W., Yang, H., Reynolds, J.C.: Separation and information hiding. In: Proceedings of POPL, pp. 268–280 (2004)Google Scholar
  19. 19.
    Biering, B., Birkedal, L., Torp-Smith, N.: BI hyperdoctrines, higher-order separation logic and abstraction. ACM TOPLAS 29(5) (2007)Google Scholar
  20. 20.
    Krishnaswami, N.R., Aldrich, J., Birkedal, L., Svendsen, K., Buisse, A.: Design patterns in separation logic. In: Proceedings of TLDI, pp. 105–116 (2009)Google Scholar
  21. 21.
    Nanevski, A., Ahmed, A., Morrisett, G., Birkedal, L.: Abstract Predicates and Mutable ADTs in Hoare Type Theory. In: De Nicola, R. (ed.) ESOP 2007. LNCS, vol. 4421, pp. 189–204. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  22. 22.
    Petersen, R.L., Birkedal, L., Nanevski, A., Morrisett, G.: A Realizability Model for Impredicative Hoare Type Theory. In: Drossopoulou, S. (ed.) ESOP 2008. LNCS, vol. 4960, pp. 337–352. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  23. 23.
    Poetzsch-Heffter, A., Müller, P.O.: A Programming Logic for Sequential Java. In: Swierstra, S.D. (ed.) ESOP 1999. LNCS, vol. 1576, pp. 162–176. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  24. 24.
    Leavens, G.T., Baker, A.L., Ruby, C.: Preliminary design of JML: a behavioral interface specification language for Java. SIGSOFT Software Engineering Notes 31(3), 1–38 (2006)CrossRefGoogle Scholar
  25. 25.
    Chin, W.N., David, C., Nguyen, H.H., Qin, S.: Enhancing modular OO verification with separation logic. In: Proceedings of POPL, pp. 87–99 (2008)Google Scholar
  26. 26.
    Jacobs, B., Piessens, F.: The VeriFast program verifier. Technical report, Katholieke Universiteit Leuven (August 2008)Google Scholar
  27. 27.
    Smans, J., Jacobs, B., Piessens, F.: Implicit Dynamic Frames: Combining Dynamic Frames and Separation Logic. In: Drossopoulou, S. (ed.) ECOOP 2009. LNCS, vol. 5653, pp. 148–172. Springer, Heidelberg (2009)CrossRefGoogle Scholar
  28. 28.
    Smans, J.: Specification and Automatic Verification of Frame Properties for Java-like Programs. PhD thesis, FWO-Vlaanderen (May 2009)Google Scholar
  29. 29.
    Leino, K.R.M., Müller, P.: A Basis for Verifying Multi-threaded Programs. In: Castagna, G. (ed.) ESOP 2009. LNCS, vol. 5502, pp. 378–393. Springer, Heidelberg (2009)CrossRefGoogle Scholar
  30. 30.
    Luo, C., Qin, S.: Separation logic for multiple inheritance. ENTCS 212, 27–40 (2008)Google Scholar
  31. 31.
    Svendsen, K., Birkedal, L., Parkinson, M.: Verifying Generics and Delegates. In: D’Hondt, T. (ed.) ECOOP 2010. LNCS, vol. 6183, pp. 175–199. Springer, Heidelberg (2010)CrossRefGoogle Scholar
  32. 32.
    Hurlin, C.: Specification and Verification of Multithreaded Object-Oriented Programs with Separation Logic. PhD thesis, Universite de Nice Sophia Antipolis (2009)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2013

Authors and Affiliations

  • Matthew Parkinson
    • 1
  • Gavin Bierman
    • 1
  1. 1.Microsoft ResearchUK

Personalised recommendations