Reasoning about multiple related abstractions with MultiStar

Encapsulated abstractions are fundamental in object-oriented programming. A single class may employ multiple abstractions to achieve its purpose. Such abstractions are often related and combined in disciplined ways. This paper explores ways to express, verify and rely on logical relationships between abstractions. It introduces two general specification mechanisms: export clauses for relating abstractions in individual classes, and axiom clauses for relating abstractions in a class and all its descendants. MultiStar, an automatic verification tool based on separation logic and abstract predicate families, implements these mechanisms in a multiple inheritance setting. Several verified examples illustrate MultiStar's underlying logic. To demonstrate the flexibility of our approach, we also used MultiStar to verify the core iterator hierarchy of a popular data structure library.

[1]  Ioannis T. Kassios Dynamic Frames: Support for Framing, Dependencies and Sharing Without Restrictions , 2006, FM.

[2]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Inf. Comput..

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

[4]  Johan Dovland,et al.  Incremental Reasoning for Multiple Inheritance , 2009, IFM.

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

[6]  Matthew J. Parkinson,et al.  jStar: towards practical verification for java , 2008, OOPSLA.

[7]  Michael D. Ernst,et al.  An overview of JML tools and applications , 2003, International Journal on Software Tools for Technology Transfer.

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

[9]  Gary T. Leavens,et al.  Information Hiding and Visibility in Interface Specifications , 2007, 29th International Conference on Software Engineering (ICSE'07).

[10]  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.

[11]  Gavin M. Bierman,et al.  Separation logic and abstraction , 2005, POPL '05.

[12]  K. Rustan M. Leino,et al.  Object Invariants in Dynamic Contexts , 2004, ECOOP.

[13]  K. Rustan M. Leino,et al.  A Verifying Compiler for a Multi-threaded Object-Oriented Language , 2007 .

[14]  Ioannis T. Kassios The dynamic frames theory , 2010, Formal Aspects of Computing.

[15]  Bjarne Stroustrup,et al.  The Annotated C++ Reference Manual , 1990 .

[16]  Frank Piessens,et al.  Inspector Methods for State Abstraction , 2007, J. Object Technol..

[17]  Peter W. O'Hearn,et al.  Local Reasoning about Programs that Alter Data Structures , 2001, CSL.

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

[19]  Frank Piessens,et al.  Verifying the Composite pattern using separation logic , 2008 .

[20]  Frank Piessens,et al.  The VeriFast program verifier , 2008 .

[21]  K. Rustan M. Leino,et al.  Verification of Object-Oriented Programs with Invariants , 2003, J. Object Technol..

[22]  F. Petrus Cuperus,et al.  Eiffel Analysis, Design and Programming Language , 2005 .

[23]  Shengchao Qin,et al.  Enhancing modular OO verification with separation logic , 2008, POPL '08.

[24]  Sophia Drossopoulou,et al.  A Unified Framework for Verification Techniques for Object Invariants , 2008, ECOOP.

[25]  Lars Birkedal,et al.  Idealized ML and Its Separation Logic , 2006 .

[26]  Shengchao Qin,et al.  Separation Logic for Multiple Inheritance , 2008, Electron. Notes Theor. Comput. Sci..

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