First-Class Type Classes for programs and proofs

October 20, 2011

Matthieu Sozeau


First-Class Type Classes for programs and proofs

Time:   11:00am
Location:   IMDEA conference room

Type Classes have met a large success in Haskell and Isabelle, as a solution for sharing notations by overloading and for specifying with abstract structures by quantification on contexts. However, both systems are limited by second-class implementations of these constructs, and these limitations are only overcomed by ad-hoc extensions to the respective systems. We propose an embedding of type classes into a dependent type theory that is first-class and supports some of the most popular extensions right away. The implementation is correspondingly cheap, general and very well integrated inside the system, as we have experimented in Coq. We show how it can be used to help structured programming and proving by way of examples.

This feature has been extensively used in formalization projects about mathematics (algebra, equational theories) and programming languages. I’ll give an overview of its current applications and the current research directions: improvements of unification and the relation of type classes and logic programming.