ΠΣ : A Core Language for Dependently Typed Programming

We introduce ΠΣ, a core language for dependently typed programming. Our intention is that ΠΣ should play the role extensions of System F are playing for conventional functional languages with polymorphism, like Haskell. The core language incorporates mutual dependent recursive definitions, Type : Type, Πand Σ-types, finite sets of labels and explicit constraints. We show that standard constructions in dependently typed programming can be easily encoded in our language. We address some important issues: having an equality checker which unfolds recursion only when needed, avoiding looping when typechecking sensible programs; the simplification of type checking for eliminators like case by using equational constraints, allowing the flexible use of case expressions within dependently typed programming and the representation of dependent datatypes using explicit constraints.

[1]  Benjamin C. Pierce,et al.  Local type inference , 1998, POPL '98.

[2]  John Launchbury,et al.  Structuring depth-first search algorithms in Haskell , 1995, POPL '95.

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

[4]  Thierry Coquand,et al.  An Algorithm for Type-Checking Dependent Types , 1996, Sci. Comput. Program..

[5]  Thorsten Altenkirch,et al.  Monadic Presentations of Lambda Terms Using Generalized Inductive Types , 1999, CSL.

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

[7]  Peyton Jones,et al.  Haskell 98 language and libraries : the revised report , 2003 .

[8]  Wouter Swierstra,et al.  The power of Pi , 2008, ICFP.

[9]  U. Norell,et al.  Towards a practical programming language based on dependent type theory , 2007 .

[10]  Thorsten Altenkirch,et al.  Observational equality, now! , 2007, PLPV.

[11]  Albert Oliveras,et al.  Proof-Producing Congruence Closure , 2005, RTA.

[12]  Conor McBride,et al.  Simply Easy! An Implementation of a Dependently Typed Lambda Calculus , 2007 .

[13]  Hongwei Xi,et al.  ATS: A Language That Combines Programming with Theorem Proving , 2005, FroCoS.

[14]  Lars Birkedal,et al.  Polymorphism and separation in hoare type theory , 2006, ICFP '06.

[15]  P. Medawar A view from the left , 1984, Nature.

[16]  L. Cardelli A Polymorphic Lambda Calculus with Type:Type , 1986 .

[17]  Conor McBride,et al.  Epigram: Practical Programming with Dependent Types , 2004, Advanced Functional Programming.

[18]  Thorsten Altenkirch,et al.  Epigram reloaded: a standalone typechecker for ETT , 2005, Trends in Functional Programming.

[19]  SheardTim Type-level Computation Using Narrowing in Ωmega , 2007 .

[20]  Hongwei Xi,et al.  Proceedings of the 2007 workshop on Programming languages meets program verification , 2007, ICFP 2007.

[21]  Lennart Augustsson,et al.  Cayenne—a language with dependent types , 1998, ICFP '98.

[22]  Adam PoswolskyCarsten Schurmann Extended Report on Delphin: A Functional Programming Language with Higher-Order Encodings and Dependent Types , 2005 .