Section: Software

http://coq.inria.fr COQ

Participants : Bruno Barras [TypiCal team, Saclay] , Yves Bertot [Marelle team, Sophia] , Frédéric Besson [Lande team, Rennes] , Pierre Boutillier, Xavier Clerc [SED team] , Pierre Corbineau [University Joseph Fourier, Grenoble] , Pierre Courtieu [CNAM] , Julien Forest [CNAM] , Stéphane Glondu, Benjamin Grégoire [Marelle team, Sophia] , Vincent Gross, Hugo Herbelin [correspondant] , Stéphane Lescuyer [ProVal team, Saclay] , Pierre Letouzey, Assia Mahboubi [TypiCal team, Saclay] , Julien Narboux [University of Strasbourg] , Jean-Marc Notin [TypiCal team, Saclay] , Christine Paulin [Proval team, Saclay] , Loïc Pottier [Marelle team, Sophia] , Matthias Puech, Yann Régis-Gianas, Vincent Siles, Élie Soubiran, Matthieu Sozeau, Arnaud Spiwack, Pierre-Yves Strub [Formes team, Beijing] , Laurent Théry [Marelle team, Sophia] , Benjamin Werner [TypiCal team, Saclay] .

Version 8.4

Version 8.4 beta was released in December 2011. It introduces a new proof engine designed and implemented by Arnaud Spiwack and a new extensive modular library of arithmetic contributed by Pierre Letouzey. It also includes an extension of the underlying logic with “η-conversion” by Hugo Herbelin and “commutative-cuts compliant guard condition” by Pierre Boutillier, an extension of the pattern-matching compilation algorithm by Hugo Herbelin, an extension of the procedure of simplication of polynomial expressions by Loïc Pottier, a refinement of the type classes mechanism by Matthieu Sozeau, a new communication model by Vincent Gross for the graphical user interface CoqIDE, that Pierre Letouzey, Pierre Boutillier and Pierre-Marie Pédrot further extended.

Several users gracefully contributed improvements of various features (Tom Prince, Enrico Tassi, Daniel Grayson, Hendrik Tews, ...).

Graphical user interface

Pierre Letouzey has finalized the work initiated by Vincent Gross (former ADT engineer) concerning the CoqIDE user interface : CoqIDE and Coq are now separate unix processes, enhancing the reliability and improving the user experience.

Type inference, tactics, unification and type classes

Matthieu Sozeau corrected important issues with the unification algorithm and enhanced it to support universes. He improved the type-class implementation, adding support for forward-reasoning instances.

To improve the power of induction tactics, Hugo Herbelin added new heuristics for second-order pattern-matching based on ideas from Chung-Kil Hur's Heq plugin.

Pierre Letouzey extended the pattern-matching feature of the tactic language.

Internal architecture of the Coq software

Pierre Letouzey also initiated a large reorganization of the internal components of Coq, since these components are currently too much interdependent. This work aims at better isolating components and explicitating the interfaces between them. In addition to the initial goal of simplifying the compilation of Coq, having a clearer architecture is also expected to help new contributors when they discover and interact with this large and complex code-base. It also brings new prospects in direct communications between tools developed around Coq. This is a long-term effort that extends beyond the Coq 8.4 release.

Pierre Boutillier worked on the build system generator for Coq users contributions. It now handles correctly developments involving ML files. Files to build developments are also used by CoqIDE to infer the required arguments when it opens a file of a development.


Pierre Letouzey has pursued his effort concerning the improvement of many aspects of the internals of Coq. In particular, with Yann Régis-Gianas, he enabled a faster load of libraries by default, thanks to laziness, and also a better sharing of structures in memory (via better hash-consing), with lower memory footprint and some speedup as visible result. Many bugs have also been addressed.

Starting from September, Xavier Clerc has worked on the codebase in order to profile typical executions. Some hotspots were identified, most notably in comparison functions: some minor modifications led to a gain of a few percents on average. Some tests led to envision the use of a Coq-specialized version of comparison functions, superseding the generic OCaml ones.

General maintenance

Hugo Herbelin, Pierre Letouzey, Pierre Boutillier, Stéphane Glondu and Matthieu Sozeau worked on the general maintenance of the system.

Development Action

A new “Action de Développement Technologique” about Coq has started September 2011. It gathers the πr 2 team, the Marelle team and the CPR team from CNAM, Hugo Herbelin acting as the coordinator. It supports visits and meetings between developers and aims at strengthening the community of Coq users and contributors.

Formalisation in Coq

Stéphane Glondu is working with Mehdi Dogguy on the formalisation in Coq of a type system for a timed asynchronous π-calculus that guarantees confluence.