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

<doc url="research/russell" base="/" title="Russell">
  <para>
    Russell is a language for programming with dependent types in Coq.
    It uses an adaptation of the predicate subtyping feature of PVS to
    allow users to write only algorithmic code while using strong
    specifications. Proof obligations are generated automatically,
    and, once proved, permit to build a complete, valid Coq term.
    A <cite-paper key="sozeau.Coq/Russell/report">report</cite-paper>
    (in french) with full proofs is available as well as an
    <cite-paper key="sozeau.Coq/Russell/article">article</cite-paper>
    describing the theoretical development.
    I'm working on a complete formalization of this in Coq, <local-link
      url="research/russell/meta">here</local-link>'s the relevant page.
  </para>

  <para>
    As an example of using Russell to develop programs with dependent
    types, I implemented the <cite-paper key="hinze:FingerTrees">Finger
    Tree data structure</cite-paper> in Coq. It gives quite a few
    insights about the power of dependent types for specification and 
    their practical use <cite-paper key="sozeau.Coq/FingerTrees/article"/>.
    <local-link url="research/russell/fingertrees">Here</local-link>'s the relevant page.

    You can have a look at the <link url="repos/coq/misc/celebs/celebs.html">example</link>
    on celebrities in a party inspired by Richard Bird's article. 
    Yet a lighter example: <link url="repos/coq/misc/sort/quicksort.html">quicksort</link>. 		
  </para>

  <para>
    I developed a complete <cite-paper key="sozeau.Coq/lambda/notes">formalization</cite-paper>
    of simply-typed lambda calculus with constants in the dependently-typed style with the help of Program. 
    It includes a tait-style proof of weak normalization. The Coq file is <link url="repos/coq/misc/nbe/nbe.v">here</link>.
  </para>

  <para>
    Here are the <link url="research/publications/Program-ing_in_Coq-proval-090307.pdf">slides</link> of a
    talk i gave at the LRI on Program, Russell's incarnation in Coq. 
    The <link url="research/publications/Program-ing_in_Coq-gallium-160307.pdf">updated</link> version for another seminar at Gallium.
  </para>

</doc>
