Handcrafted Inversions Made Operational on Operational Semantics
When reasoning on formulas involving large-size inductively defined relations, such as the semantics of a real programming language, many steps require the inversion of a hypothesis. The built-in “inversion” tactic of Coq can then be used, but it suffers from severe controllability, maintenance and efficiency issues, which makes it unusable in practice in large applications.
To circumvent this issue, we propose a proof technique based on the combination of an antidiagonal argument and the impredicative encoding of inductive data-structures. We can then encode suitable helper tactics in LTac, yielding scripts which are much shorter (as well as corresponding proof terms) and, more importantly, much more robust against changes in version changes in the background software. This is illustrated on correctness proofs of non-trivial C programs according to the operational semantics of C defined in CompCert.
KeywordsOperational Semantic Memory State Dependent Type Proof Assistant Inductive Type
Unable to display preview. Download preview PDF.
- 1.ARM. ARM Architecture Reference Manual DDI 0100I. ARM (2005)Google Scholar
- 2.Bertot, Y., Castéran, P.: Interactive Theorem Proving and Program Development. Coq’Art: The Calculus of Inductive Constructions. Texts in Theoretical Computer Science. Springer (2004)Google Scholar
- 3.Blanqui, F., Helmstetter, C., Joloboff, V., Monin, J.-F., Shi, X.: Designing a CPU model: from a pseudo-formal document to fast code. In: Proceedings of the 3rd Workshop on Rapid Simulation and Performance Evaluation: Methods and Tools, Heraklion, Greece (January 2011)Google Scholar
- 4.Chlipala, A.: Certified Programming with Dependent Types (2012), http://adam.chlipala.net/cpdt
- 9.Monin, J.-F.: Proof Trick: Small Inversions. In: Bertot, Y. (ed.) Second Coq Workshop, Royaume-Uni Edinburgh. Yves Bertot (July 2010)Google Scholar
- 10.Monin, J.-F., Shi, X.: Coq Examples for Handcrafted Inversions (2013), http://www-verimag.imag.fr/~monin/Proof/hc_inversion/
- 12.Pierce, B.C., Casinghino, C., Greenberg, M.: Software Foundations (2009), http://www.cis.upenn.edu/~bcpierce/sf
- 13.Ricciotti, W.: Theoretical and Implementation Aspects in the Mechanization of the Metatheory of Programming Languages. PhD thesis, Università di Bologna (2011)Google Scholar
- 15.The Coq Development Team. The Coq Proof Assistant Reference Manual – Version V8.3 (2010), http://coq.inria.fr