skip to main content
10.1145/2048066.2048113acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Product lines of theorems

Published:22 October 2011Publication History

ABSTRACT

Mechanized proof assistants are powerful verification tools, but proof development can be difficult and time-consuming. When verifying a family of related programs, the effort can be reduced by proof reuse. In this paper, we show how to engineer product lines with theorems and proofs built from feature modules. Each module contains proof fragments which are composed together to build a complete proof of correctness for each product. We consider a product line of programming languages, where each variant includes metatheory proofs verifying the correctness of its semantic definitions. This approach has been realized in the Coq proof assistant, with the proofs of each feature independently certifiable by Coq. These proofs are composed for each language variant, with Coq mechanically verifying that the composite proofs are correct. As validation, we formalize a core calculus for Java in Coq which can be extended with any combination of casts, interfaces, or generics.

References

  1. Paul Bassett. Frame-based software engineering. IEEE Software, 4(4), 1987. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. D. Batory and E. Borger. Modularizing theorems for software product lines: The jbook case study. Journal of Universal Computer Science, 14(12):2059--2082, 2008.Google ScholarGoogle Scholar
  3. D. Batory, Rich Cardone, and Y. Smaragdakis. Object-oriented frameworks and product-lines. In SPLC, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. D. Batory, J. Kim, and P. Hofner. Feature interactions, products, and composition. In GPCE, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. D. Batory, J.N. Sarvela, and A. Rauschmayer. Scaling Step-Wise Refinement. IEEE TSE, 30, June 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Don Batory. Feature models, grammars, and propositional formulas. Software Product Lines, pages 7--20, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Don Batory, Rich Cardone, and Yannis Smaragdakis. Object-oriented framework and product lines. In SPLC, pages 227--247, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Yves Bertot and Pierre Casteran. Interactive Theorem Proving and Program Development. Springer-Verlag, Berlin, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Olivier Boite. Proof reuse with extended inductive types. In Theorem Proving in Higher Order Logics, pages 50--65, 2004.Google ScholarGoogle ScholarCross RefCross Ref
  10. Adam Chlipala. A verified compiler for an impure functional language. In POPL 2010, January 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. David Delahaye. A tactic language for the system coq. In Proceedings of Logic for Programming and Automated Reasoning (LPAR), Reunion Island, volume 1955 of LNCS}, pages 85--95. Springer, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Feature oriented programming. http://en.wikipedia.org/wiki/Feature_Oriented_Programming, 2008.Google ScholarGoogle Scholar
  13. Georges Gonthier. In Deepak Kapur, editor, Computer Mathematics, chapter The Four Colour Theorem: Engineering of a Formal Proof, pages 333--333. Springer-Verlag, Berlin, Heidelberg, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Atsushi Igarashi, Benjamin C. Pierce, and Philip Wadler. Featherweight java: a minimal core calculus for java and gj. ACM Trans. Program. Lang. Syst., 23(3):396--450, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. K.C. Kang. Private Correspondence, 2005.Google ScholarGoogle Scholar
  16. Xavier Leroy. Formal verification of a realistic compiler. Commun. ACM, 52:107--115, July 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Michael Y. Levin and Benjamin C. Pierce. Tinkertype: A language for playing with formal systems. Journal of Functional Programming, 13(2), March 2003. A preliminary version appeared as an invited paper at the Logical Frameworks and Metalanguages Workshop (LFM), June 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. M. D. McIlroy. Mass-produced software components. Proc. NATO Conf. on Software Engineering, Garmisch, Germany. 1968.Google ScholarGoogle Scholar
  19. R. Monson-Haefel. Enterprise Java Beans. O'Reilly, 3rd edition, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Peter D. Mosses. Modular structural operational semantics. J. Log. Algebr. Program.}, 60--61:195--228, 2004.Google ScholarGoogle Scholar
  21. Anne Mulhern. Proof weaving. In Proceedings of the First Informal ACM SIGPLAN Workshop on Mechanizing Metatheory, September 2006.Google ScholarGoogle Scholar
  22. J. Neighbors. The draco approach to constructing software from reusable components. IEEE TSE, September 1984.Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. D.L. Parnas. On the design and development of program families. IEEE TSE, SE-2(1):1 -- 9, March 1976. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Benjamin C. Pierce. Types and Programming Languages. MIT Press, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Y. Smaragdakis and D. Batory. Mixin Layers: An Object-Oriented Implementation Technique for Refinements and Collaboration-Based Designs. ACM TOSEM, December 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Yannis Smaragdakis and Don Batory. Implementing reusable object-oriented components. In the 5th Int. Conf. on Software Reuse (ICSR 98), pages 36--45. Society Press, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Robert Stark, Joachim Schmid, and Egon Borger. Java and the java virtual machine - definition, verification, validation, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Rok Strnisa, Peter Sewell, and Matthew J. Parkinson. The {Java} module system: core design and semantic definition. In OOPSLA, pages 499--514, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. T. Thum, I. Schaefer, M. Kuhlemann, and S. Apel. Proof composition for deductive verification of software product lines. In Software Testing, Verification and Validation Workshop. (ICSTW) 2011}, pages 270--277, March 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Michael VanHilst and David Notkin. Decoupling change from design. SIGSOFT Softw. Eng. Notes}, 21:58--69, October 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Product lines of theorems

      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
      • Published in

        cover image ACM Conferences
        OOPSLA '11: Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
        October 2011
        1104 pages
        ISBN:9781450309400
        DOI:10.1145/2048066
        • cover image ACM SIGPLAN Notices
          ACM SIGPLAN Notices  Volume 46, Issue 10
          OOPSLA '11
          October 2011
          1063 pages
          ISSN:0362-1340
          EISSN:1558-1160
          DOI:10.1145/2076021
          Issue’s Table of Contents

        Copyright © 2011 ACM

        Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 22 October 2011

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • research-article

        Acceptance Rates

        Overall Acceptance Rate268of1,244submissions,22%

        Upcoming Conference

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader