Epigram reloaded: a standalone typechecker for ETT

Epigram, a functional programming environment with dependent types, interacts with the programmer via an extensible high level language of programming constructs which elaborates incrementally into Epigram’s Type Theory, ETT, a rather spartan λ-calculus with dependent types, playing the rôle of a ‘core language’. We implement a standalone typechecker for ETT in Haskell, allowing us to reload existing libraries into the system safely without re-elaboration. Rather than adopting a rewriting approach to computation, we use a glued representation of values, pairing first-order syntax with a functional representation of its semantics, computed lazily. This approach separates β-reduction from βηconversion. We consequently can not only allow the η-laws for λ-abstractions and pairs, but also collapse each of the unit and empty types.

[1]  James McKinna,et al.  Why dependent types matter , 2006, POPL '06.

[2]  Zhaohui Luo,et al.  Computation and reasoning - a type theory for computer science , 1994, International series of monographs on computer science.

[3]  George C. Necula,et al.  Proof-carrying code , 1997, POPL '97.

[4]  Thierry Coquand,et al.  Untyped Algorithmic Equality for Martin-Löf's Logical Framework with Surjective Pairs , 2005, Fundam. Informaticae.

[5]  Conor McBride,et al.  Inductive Families Need Not Store Their Indices , 2003, TYPES.

[6]  Martin Hofmann,et al.  Categorical Reconstruction of a Reduction Free Normalization Proof , 1995, Category Theory and Computer Science.

[7]  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 .

[8]  Thorsten Altenkirch,et al.  Towards Observational Type Theory , 2006 .

[9]  Benjamin Grégoire,et al.  A compiled implementation of strong reduction , 2002, ICFP '02.

[10]  Thorsten Altenkirch Extensional equality in intensional type theory , 1999, Proceedings. 14th Symposium on Logic in Computer Science (Cat. No. PR00158).

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

[12]  Conor McBride,et al.  Functional pearl: i am not a number--i am a free variable , 2004, Haskell '04.

[13]  Conor McBride,et al.  A Few Constructions on Constructors , 2004, TYPES.

[14]  Thierry Coquand,et al.  An Analysis of Girard's Paradox , 1986, LICS.

[15]  Edwin Brady,et al.  Practical implementation of a dependently typed functional programming language , 2005 .

[16]  Hugo Herbelin,et al.  The Coq proof assistant : reference manual, version 6.1 , 1997 .

[17]  Per Martin-Löf,et al.  Intuitionistic type theory , 1984, Studies in proof theory.

[18]  Thierry Coquand,et al.  Intuitionistic model constructions and normalization proofs , 1997, Mathematical Structures in Computer Science.

[19]  Ulrich Berger,et al.  An inverse of the evaluation functional for typed lambda -calculus , 1991, [1991] Proceedings Sixth Annual IEEE Symposium on Logic in Computer Science.

[20]  Conor McBride,et al.  The view from the left , 2004, Journal of Functional Programming.

[21]  Christine Paulin-Mohring,et al.  The coq proof assistant reference manual , 2000 .

[22]  Conor McBride,et al.  Elimination with a Motive , 2000, TYPES.

[23]  Rod M. Burstall,et al.  Deliverables: A Categorial Approach to Program Development in Type Theory , 1993, MFCS.

[24]  T. Coquand An algorithm for testing conversion in type theory , 1991 .