Canonical Structures for the Working Coq User

This paper provides a gentle introduction to the art of programming type inference with the mechanism of Canonical Structures. Programmable type inference has been one of the key ingredients for the successful formalization of the Odd Order Theorem using the Coq proof assistant. The paper concludes comparing the language of Canonical Structures to the one of Type Classes and Unification Hints.

[1]  Ralf Hinze,et al.  Fun with phantom types , 2003 .

[2]  Philip Wadler,et al.  How to make ad-hoc polymorphism less ad hoc , 1989, POPL '89.

[3]  Herman Geuvers,et al.  A Constructive Algebraic Hierarchy in Coq , 2002, J. Symb. Comput..

[4]  François Garillot,et al.  Generic Proof Tools and Finite Group Theory , 2011 .

[5]  David Aspinall,et al.  Formalising Java's Data Race Free Guarantee , 2007, TPHOLs.

[6]  Amokrane Saibi Outils Génériques de Modélisation et de Démonstration pour la Formalisation des Mathématiques en Théorie des Types. Application à la Théorie des Catégories. , 1999 .

[7]  Ioana Pasca,et al.  Canonical Big Operators , 2008, TPHOLs.

[8]  Cyril Cohen,et al.  Formalized algebraic numbers: construction and first-order theory. (Formalisation des nombres algébriques : construction et théorie du premier ordre) , 2012 .

[9]  Enrico Tassi,et al.  A Small Scale Reflection Extension for the Coq system , 2008 .

[10]  Amokrane Saïbi Typing algorithm in type theory with inheritance , 1997, POPL '97.

[11]  Derek Dreyer,et al.  How to make ad hoc proof automation less ad hoc , 2011, ICFP '11.

[12]  Matthieu Sozeau,et al.  First-Class Type Classes , 2008, TPHOLs.

[13]  Enrico Tassi,et al.  A Modular Formalisation of Finite Group Theory , 2007, TPHOLs.

[14]  Georges Gonthier Point-Free, Set-Free Concrete Linear Algebra , 2011, ITP.

[15]  Bas Spitters,et al.  Type classes for mathematics in type theory† , 2011, Mathematical Structures in Computer Science.

[16]  Gérard P. Huet,et al.  Constructive category theory , 2000, Proof, Language, and Interaction.

[17]  Andrea Asperti,et al.  Hints in Unification , 2009, TPHOLs.

[18]  Assia Mahboubi,et al.  Packaging Mathematical Structures , 2009, TPHOLs.