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.
- Paul Bassett. Frame-based software engineering. IEEE Software, 4(4), 1987. Google ScholarDigital Library
- 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 Scholar
- D. Batory, Rich Cardone, and Y. Smaragdakis. Object-oriented frameworks and product-lines. In SPLC, 2000. Google ScholarDigital Library
- D. Batory, J. Kim, and P. Hofner. Feature interactions, products, and composition. In GPCE, 2011. Google ScholarDigital Library
- D. Batory, J.N. Sarvela, and A. Rauschmayer. Scaling Step-Wise Refinement. IEEE TSE, 30, June 2004. Google ScholarDigital Library
- Don Batory. Feature models, grammars, and propositional formulas. Software Product Lines, pages 7--20, 2005. Google ScholarDigital Library
- Don Batory, Rich Cardone, and Yannis Smaragdakis. Object-oriented framework and product lines. In SPLC, pages 227--247, 2000. Google ScholarDigital Library
- Yves Bertot and Pierre Casteran. Interactive Theorem Proving and Program Development. Springer-Verlag, Berlin, 2004. Google ScholarDigital Library
- Olivier Boite. Proof reuse with extended inductive types. In Theorem Proving in Higher Order Logics, pages 50--65, 2004.Google ScholarCross Ref
- Adam Chlipala. A verified compiler for an impure functional language. In POPL 2010, January 2010. Google ScholarDigital Library
- 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 ScholarDigital Library
- Feature oriented programming. http://en.wikipedia.org/wiki/Feature_Oriented_Programming, 2008.Google Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- K.C. Kang. Private Correspondence, 2005.Google Scholar
- Xavier Leroy. Formal verification of a realistic compiler. Commun. ACM, 52:107--115, July 2009. Google ScholarDigital Library
- 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 ScholarDigital Library
- M. D. McIlroy. Mass-produced software components. Proc. NATO Conf. on Software Engineering, Garmisch, Germany. 1968.Google Scholar
- R. Monson-Haefel. Enterprise Java Beans. O'Reilly, 3rd edition, 2001. Google ScholarDigital Library
- Peter D. Mosses. Modular structural operational semantics. J. Log. Algebr. Program.}, 60--61:195--228, 2004.Google Scholar
- Anne Mulhern. Proof weaving. In Proceedings of the First Informal ACM SIGPLAN Workshop on Mechanizing Metatheory, September 2006.Google Scholar
- J. Neighbors. The draco approach to constructing software from reusable components. IEEE TSE, September 1984.Google ScholarDigital Library
- D.L. Parnas. On the design and development of program families. IEEE TSE, SE-2(1):1 -- 9, March 1976. Google ScholarDigital Library
- Benjamin C. Pierce. Types and Programming Languages. MIT Press, 2002. Google ScholarDigital Library
- Y. Smaragdakis and D. Batory. Mixin Layers: An Object-Oriented Implementation Technique for Refinements and Collaboration-Based Designs. ACM TOSEM, December 2001. Google ScholarDigital Library
- 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 ScholarDigital Library
- Robert Stark, Joachim Schmid, and Egon Borger. Java and the java virtual machine - definition, verification, validation, 2001. Google ScholarDigital Library
- Rok Strnisa, Peter Sewell, and Matthew J. Parkinson. The {Java} module system: core design and semantic definition. In OOPSLA, pages 499--514, 2007. Google ScholarDigital Library
- 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 ScholarDigital Library
- Michael VanHilst and David Notkin. Decoupling change from design. SIGSOFT Softw. Eng. Notes}, 21:58--69, October 1996. Google ScholarDigital Library
Index Terms
- Product lines of theorems
Recommendations
Product lines of theorems
OOPSLA '11Mechanized 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 ...
Higher-order representation of substructural logics
ICFP '10We present a technique for higher-order representation of substructural logics such as linear or modal logic. We show that such logics can be encoded in the (ordinary) Logical Framework, without any linear or modal extensions. Using this encoding, ...
Higher-order representation of substructural logics
ICFP '10: Proceedings of the 15th ACM SIGPLAN international conference on Functional programmingWe present a technique for higher-order representation of substructural logics such as linear or modal logic. We show that such logics can be encoded in the (ordinary) Logical Framework, without any linear or modal extensions. Using this encoding, ...
Comments