Abstract
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.
- }}M. Barnett, K. R. M. Leino, and W. Schulte. The Spec# programming system: An overview. In CASSIS '05, volume 3362 of LNCS, pages 49--69. Springer, 2005. Google Scholar
Digital Library
- }}L. Burdy, Y. Cheon, D. R. Cok, M. D. Ernst, J. R. Kiniry, G. T. Leavens, K. R. M. Leino, and E. Poll. An overview of JML tools and applications. International Journal on Software Tools for Technology Transfer (STTT), 7(3):212--232, 2005. Google Scholar
Digital Library
- }}L. Cardelli. A semantics of multiple inheritance. Inf. Comput., 76(2-3):138--164, 1988. Google Scholar
Digital Library
- }}W.-N. Chin, C. David, H. H. Nguyen, and S. Qin. Enhancing modular OO verification with separation logic. In POPL '08: Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 87--99, New York, NY, USA, 2008. ACM. Google Scholar
Digital Library
- }}D. Distefano and M. J. Parkinson J. jStar: towards practical verification for Java. In OOPSLA '08: Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications, pages 213--226, New York, NY, USA, 2008. ACM. Google Scholar
Digital Library
- }}J. Dovland, E. B. Johnsen, O. Owe, and M. Steffen. Incremental reasoning for multiple inheritance. In IFM '09, pages 215--230, Berlin, Heidelberg, 2009. Springer. Google Scholar
Digital Library
- }}S. Drossopoulou, A. Francalanza, P. M¨uller, and A. J. Summers. A unified framework for verification techniques for object invariants. In J. Vitek, editor, ECOOP, volume 5142 of LNCS, pages 412--437. Springer, 2008. Google Scholar
Digital Library
- }}ECMA International. Standard ECMA-367. Eiffel: Analysis, Design and Programming Language. 2nd edition, June 2006.Google Scholar
- }}M. A. Ellis and B. Stroustrup. The annotated C++ reference manual. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1990. Google Scholar
Digital Library
- }}EVE. The Eiffel Verification Environment. http://eve.origo.ethz.ch/.Google Scholar
- }}Gobosoft. The Gobo Eiffel Structure Library. http://www.gobosoft.com/eiffel/gobo/structure/index.html.Google Scholar
- }}B. Jacobs and F. Piessens. Inspector methods for state abstraction. Journal of Object Technology, 6(5):55--75, June 2007.Google Scholar
Cross Ref
- }}B. Jacobs and F. Piessens. The VeriFast program verifier. Technical Report CW-520, Katholieke Universiteit Leuven, August 2008.Google Scholar
- }}B. Jacobs, J. Smans, and F. Piessens. Verifying the composite pattern using separation logic. SAVCBS Composite pattern challenge track, 2008.Google Scholar
- }}I. T. Kassios. Dynamic frames: Support for framing, dependencies and sharing without restrictions. In J. Misra, T. Nipkow, and E. Sekerinski, editors, FM, volume 4085 of LNCS, pages 268--283. Springer, 2006. Google Scholar
Digital Library
- }}I. T. Kassios. The dynamic frames theory. Formal Aspects of Computing, 2010. To appear. Google Scholar
Cross Ref
- }}N. R. Krishnaswami, L. Birkedal, J. Aldrich, and J. C. Reynolds. Idealized ML and Its Separation Logic. Draft available online at http://www.cs.cmu.edu/~neelk/idealized-ml-draft.pdf. 2006.Google Scholar
- }}G. T. Leavens and P. Muller. Information hiding and visibility in interface specifications. In ICSE, pages 385--395. IEEE Computer Society, 2007. Google Scholar
Digital Library
- }}G. T. Leavens, A. L. Baker, and C. Ruby. Preliminary design of JML: a behavioral interface specification language for Java. SIGSOFT Softw. Eng. Notes, 31(3):1--38, 2006. Google Scholar
Digital Library
- }}G. T. Leavens, K. R. M. Leino, and P. Muller. Specification and verification challenges for sequential object-oriented programs. Formal Aspects of Computing, 19(2):159--189, 2007. Google Scholar
Digital Library
- }}K. R. M. Leino and P. M¨uller. Object invariants in dynamic contexts. In M. Odersky, editor, ECOOP, volume 3086 of LNCS, pages 491--516. Springer, 2004.Google Scholar
- }}K. R. M. Leino and W. Schulte. A verifying compiler for a multi-threaded object-oriented language. Software System Reliability and Security, 9:351--416, 2007.Google Scholar
- }}C. Luo and S. Qin. Separation logic for multiple inheritance. Electr. Notes Theor. Comput. Sci., 212:27--40, 2008. Google Scholar
Digital Library
- }}P. W. O'Hearn, J. C. Reynolds, and H. Yang. Local reasoning about programs that alter data structures. In CSL '01, volume 2142 of LNCS, pages 1--19. Springer, 2001. Google Scholar
Digital Library
- }}M. Parkinson and G. Bierman. Separation logic and abstraction. In POPL '05: Proceedings of the 32nd annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 247--258, New York, NY, USA, 2005. ACM. Google Scholar
Digital Library
- }}M. J. Parkinson. Local reasoning for Java. PhD thesis. Technical Report UCAM-CL-TR-654, University of Cambridge, Computer Laboratory, November 2005.Google Scholar
- }}M. J. Parkinson and G. M. Bierman. Separation logic, abstraction and inheritance. In POPL '08: Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 75--86, New York, NY, USA, 2008. ACM. Google Scholar
Digital Library
- }}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, pages 55--74, Washington, DC, USA, 2002. IEEE Computer Society. Google Scholar
Digital Library
Index Terms
Reasoning about multiple related abstractions with MultiStar
Recommendations
Reasoning about multiple related abstractions with MultiStar
OOPSLA '10: Proceedings of the ACM international conference on Object oriented programming systems languages and applicationsEncapsulated 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, ...
Separation Logic for Multiple Inheritance
As an extension to Floyd-Hoare logic, separation logic has been used to facilitate reasoning about imperative programs manipulating shared mutable data structures. Recently, it has also been extended to support modular reasoning in Java-like object-...
COQ mechanization of featherweight fortress with multiple dispatch and multiple inheritance
CPP'11: Proceedings of the First international conference on Certified Programs and ProofsIn object-oriented languages, overloaded methods with multiple dispatch extend the functionality of existing classes, and multiple inheritance allows a class to reuse code in multiple classes. However, both multiple dispatch and multiple inheritance ...







Comments