A Separation Logic for OO Programs

We present a general storage model that reflects features of object oriented (OO) languages with pure reference semantics. Based on this model, we develop an OO Separation Logic (OOSL) to specify and verify OO programs. Many inference rules in the Separation Logic still hold in OOSL. Additionally, OOSL has certain properties important to OO reasoning. We introduce HoareTriple for a small OO language, and use the Schorr-Waite Marking Algorithm as a verification example.

[1]  J. Sanders,et al.  A Pointer Logic for Object Diagrams , 2007 .

[2]  James Noble,et al.  Towards a Model of Encapsulation , 2003 .

[3]  Matthew J. Parkinson,et al.  Local reasoning for Java , 2005 .

[4]  Gary T. Leavens Modular specification and verification of object-oriented programs , 1991, IEEE Software.

[5]  Liang Zhao,et al.  A Graph-Based Operational Semantics of OO Programs , 2009, ICFEM.

[6]  Gavin M. Bierman,et al.  Separation logic, abstraction and inheritance , 2008, POPL '08.

[7]  Carroll Morgan,et al.  Programming from specifications , 1990, Prentice Hall International Series in computer science.

[8]  Gary T. Leavens,et al.  Specification and verification challenges for sequential object-oriented programs , 2007, Formal Aspects of Computing.

[9]  C. A. R. Hoare,et al.  A Trace Model for Pointers and Objects , 1999, ECOOP.

[10]  Yassine Lakhnech,et al.  On Logics of Aliasing , 2004, SAS.

[11]  K. Rustan M. Leino,et al.  The Spec# Programming System: An Overview , 2004, CASSIS.

[12]  Liang Zhao,et al.  Graph Transformations for Object-Oriented Refinement , 2007 .

[13]  John C. Reynolds,et al.  Separation logic: a logic for shared mutable data structures , 2002, Proceedings 17th Annual IEEE Symposium on Logic in Computer Science.

[14]  Albert L. Baker,et al.  Preliminary design of JML: a behavioral interface specification language for java , 2006, SOEN.

[15]  Hongseok Yang,et al.  Local reasoning for stateful programs , 2001 .

[16]  Peter W. O'Hearn,et al.  BI as an assertion language for mutable data structures , 2001, POPL '01.