skip to main content
research-article

Reasoning about multiple related abstractions with MultiStar

Published:17 October 2010Publication History
Skip Abstract Section

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.

References

  1. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  2. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  3. }}L. Cardelli. A semantics of multiple inheritance. Inf. Comput., 76(2-3):138--164, 1988. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. }}ECMA International. Standard ECMA-367. Eiffel: Analysis, Design and Programming Language. 2nd edition, June 2006.Google ScholarGoogle Scholar
  9. }}M. A. Ellis and B. Stroustrup. The annotated C++ reference manual. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1990. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. }}EVE. The Eiffel Verification Environment. http://eve.origo.ethz.ch/.Google ScholarGoogle Scholar
  11. }}Gobosoft. The Gobo Eiffel Structure Library. http://www.gobosoft.com/eiffel/gobo/structure/index.html.Google ScholarGoogle Scholar
  12. }}B. Jacobs and F. Piessens. Inspector methods for state abstraction. Journal of Object Technology, 6(5):55--75, June 2007.Google ScholarGoogle ScholarCross RefCross Ref
  13. }}B. Jacobs and F. Piessens. The VeriFast program verifier. Technical Report CW-520, Katholieke Universiteit Leuven, August 2008.Google ScholarGoogle Scholar
  14. }}B. Jacobs, J. Smans, and F. Piessens. Verifying the composite pattern using separation logic. SAVCBS Composite pattern challenge track, 2008.Google ScholarGoogle Scholar
  15. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  16. }}I. T. Kassios. The dynamic frames theory. Formal Aspects of Computing, 2010. To appear. Google ScholarGoogle ScholarCross RefCross Ref
  17. }}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 ScholarGoogle Scholar
  18. }}G. T. Leavens and P. Muller. Information hiding and visibility in interface specifications. In ICSE, pages 385--395. IEEE Computer Society, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  20. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  21. }}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 ScholarGoogle Scholar
  22. }}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 ScholarGoogle Scholar
  23. }}C. Luo and S. Qin. Separation logic for multiple inheritance. Electr. Notes Theor. Comput. Sci., 212:27--40, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  25. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  26. }}M. J. Parkinson. Local reasoning for Java. PhD thesis. Technical Report UCAM-CL-TR-654, University of Cambridge, Computer Laboratory, November 2005.Google ScholarGoogle Scholar
  27. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  28. }}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 ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Reasoning about multiple related abstractions with MultiStar

                Recommendations

                Comments

                Login options

                Check if you have access through your login credentials or your institution to get full access on this article.

                Sign in

                Full Access

                PDF Format

                View or Download as a PDF file.

                PDF

                eReader

                View online with eReader.

                eReader
                About Cookies On This Site

                We use cookies to ensure that we give you the best experience on our website.

                Learn more

                Got it!