Polytypic programming in COQ

The aim of our work is to provide an infrastructure for formal proofs over Generic Haskell-style polytypic programs. For this goal to succeed, we must have a definition of polytypic programming which is both fully formal and as close as possible to the definition in Generic Haskell. In this paper we show a formalization in the proof assistant Coq of type and term specialization. Our definition of term specialization can be interpreted as a formal proof that the result of term specialization has the type computed by type specialization.

[1]  Conor McBride,et al.  Dependently typed functional programs and their proofs , 2000 .

[2]  Peter Morris,et al.  Exploring the Regular Tree Types , 2004, TYPES.

[3]  Johan Jeuring,et al.  PolyP—a polytypic programming language extension , 1997, POPL '97.

[4]  de Ng Dick Bruijn,et al.  Lambda calculus notation with nameless dummies, a tool for automatic formula manipulation, with application to the Church-Rosser theorem , 1972 .

[5]  Andreas Abel Type-based termination of generic programs , 2009, Sci. Comput. Program..

[6]  Simon L. Peyton Jones,et al.  Scrap your boilerplate with class: extensible generic functions , 2005, ICFP '05.

[7]  Simon L. Peyton Jones,et al.  Derivable Type Classes , 2001, Haskell.

[8]  Ralf Hinze,et al.  Comparing Approaches to Generic Programming in Haskell , 2006, SSDGP.

[9]  Thorsten Altenkirch,et al.  Generic Programming within Dependently Typed Programming , 2002, Generic Programming.

[10]  Ralf Hinze,et al.  Generic Programs and Proofs , 2000 .

[11]  Peter Dybjer,et al.  Universes for Generic Programs and Proofs in Dependent Type Theory , 2003, Nord. J. Comput..

[12]  Pierre Castéran,et al.  Interactive Theorem Proving and Program Development , 2004, Texts in Theoretical Computer Science An EATCS Series.

[13]  Ralf Hinze Generics for the masses , 2004, ICFP '04.

[14]  Ralf Hinze,et al.  Generic Programming, Now! , 2006, SSDGP.

[15]  Artem Alimarine,et al.  Generic functional programming conceptual design, implementation and applications , 2005 .

[16]  Andres Löh,et al.  Exploring generic Haskell , 2004 .

[17]  Peter Morris,et al.  Constructing Strictly Positive Families , 2007, CATS.

[18]  Simon L. Peyton Jones,et al.  Scrap your boilerplate: a practical design pattern for generic programming , 2003, TLDI '03.

[19]  Ulf Norell Functional generic programming and type theory , 2002 .

[20]  Harald Ruess,et al.  Polytypic Abstraction in Type Theory , 1998 .

[21]  Simon L. Peyton Jones,et al.  Simple unification-based type inference for GADTs , 2006, ICFP '06.

[22]  Antonius J. C. Hurkens A Simplification of Girard's Paradox , 1995, TLCA.

[23]  de Ng Dick Bruijn Lambda calculus notation with nameless dummies, a tool for automatic formula manipulation, with application to the Church-Rosser theorem , 1972 .

[24]  Robert Harper,et al.  Type Checking with Universes , 1991, Theor. Comput. Sci..

[25]  Alexander A. Stepanov,et al.  Generic Programming , 1988, ISSAC.

[26]  Thierry Coquand,et al.  The Calculus of Constructions , 1988, Inf. Comput..

[27]  Ralf Hinze Polytypic Values Possess Polykinded Types , 2000, MPC.

[28]  Ralf Hinze,et al.  "Scrap Your Boilerplate" Revolutions , 2006, MPC.

[29]  Bruno C. d. S. Oliveira,et al.  "Scrap Your Boilerplate" Reloaded , 2006, FLOPS.

[30]  Simon L. Peyton Jones,et al.  Scrap Your Boilerplate , 2003, APLAS.

[31]  Harald Ruess,et al.  Polytypic Proof Construction , 1999, TPHOLs.

[32]  Tim Sheard,et al.  Generic Programming in Ωmega , 2006, SSDGP.