<?xml version="1.0" encoding="UTF-8"?>

<doc url="research/coq/classes" base="/" title="Type classes in Coq">
  <para>
    <link url="http://haskell.org/haskellwiki/Research_papers/Type_systems#Type_classes">
      Type classes</link> are a very useful mechanism to write programs on
    abstract structures and support notational abuse by
    overloading. That's ample good reason to have them in a
    proof-assistant like Coq. I implemented with Nicolas Oury
    a port of type classes in Coq <cite-paper key="sozeau.Coq/classes/fctc"/> 
    and some libraries using the system:
    a <link url="repos/coq/prelude">port</link> of the Haskell prelude,
    a <link url="repos/coq/cat">development</link> of category theory
    and the beginning of <link url="repos/coq/order">order
    theory</link>.
    If you would like to take any of these to the next step or have any
    kind of reaction after seeing them I will gladly answer your mail.
    I've also given some talks about classes and setoid rewriting
    <cite-paper key="sozeau.Coq/classes/proval08"/>, <cite-paper key="sozeau.Coq/classes/Gallium08"/>.
  </para>
</doc>

