Introducing Functional Programmers to Interactive Theorem Proving and Program Verification Teaching Experience Report

作者: Aleksandar Nanevski , Ilya Sergey

DOI:

关键词: Computer scienceDecidabilityFunctional programmingData structureProof assistantSeparation logicRewritingType theoryMathematical proofProgramming languageTheoretical computer science

摘要: We report on the design and preliminary evaluation of a short introductory course interactive theorem proving program verification using Coq proof assistant, targeted at students with background in functional programming software engineering. The builds concepts familiar from to develop understanding logic mechanized by means Curry-Howard isomorphism. A particular emphasis is made computational nature decidable properties various data structures. This approach practical importance, as Coq’s normalization can automatically simplify or discharge such properties, thus reducing burden constructing proofs hand. As basis for teaching this style mechanization, we use Gonthier et al.’s Ssreflect extension its associated libraries. In course, minimize exposure ad-hoc automation via tactics, request that only small set proof-building primitives they should clearly understand. addition introducing an application programming, topics covered include: implementation custom rewriting principles instances indexed type families, boolean reflection, algebraic structures inheritance between them, imperative programs separation Hoare Type Theory.

参考文章(30)
Assia Mahboubi, Enrico Tassi, Canonical Structures for the Working Coq User Interactive Theorem Proving. ,vol. 7998, pp. 19- 34 ,(2013) , 10.1007/978-3-642-39634-2_5
Martin Henz, Aquinas Hobor, Teaching experience: logic and formal methods with coq certified programs and proofs. pp. 199- 215 ,(2011) , 10.1007/978-3-642-25379-9_16
Aleksandar Nanevski, Ruy Ley-Wild, Ilya Sergey, Germán Andrés Delbianco, Communicating State Transition Systems for Fine-Grained Concurrent Resources european symposium on programming. pp. 290- 310 ,(2014) , 10.1007/978-3-642-54833-8_16
François Garillot, Generic Proof Tools and Finite Group Theory Ecole Polytechnique X. ,(2011)
François Garillot, Georges Gonthier, Assia Mahboubi, Laurence Rideau, Packaging Mathematical Structures theorem proving in higher order logics. ,vol. 5674, pp. 327- 342 ,(2009) , 10.1007/978-3-642-03359-9_23
Matthieu Sozeau, Subset coercions in Coq types for proofs and programs. pp. 237- 252 ,(2006) , 10.1007/978-3-540-74464-1_16
Yves Bertot, Pierre Castran, Interactive Theorem Proving and Program Development: Coq'Art The Calculus of Inductive Constructions Springer Publishing Company, Incorporated. pp. 470- ,(2010)
Benjamin C. Pierce, Types and Programming Languages ,(2002)
Jean-Christophe Filliâtre, Hugo Herbelin, Bruno Barras, Bruno Barras, Samuel Boutin, Eduardo Giménez, Samuel Boutin, Gérard Huet, César Muñoz, Cristina Cornes, Cristina Cornes, Judicaël Courant, Judicael Courant, Chetan Murthy, Chetan Murthy, Catherine Parent, Catherine Parent, Christine Paulin-mohring, Christine Paulin-mohring, Amokrane Saibi, Amokrane Saibi, Benjamin Werner, Benjamin Werner, The Coq proof assistant : reference manual, version 6.1 INRIA. pp. 214- ,(1997)