Team π.r²

Overall Objectives
Scientific Foundations
Application Domains
New Results
Other Grants and Activities

Section: Software


Participants : Bruno Barras [ TypiCal team, Saclay ] , Yves Bertot [ Marelle team, Sophia ] , Frédéric Besson [ Lande team, Rennes ] , Frédéric Blanqui [ Formes team, Beijing ] , Pierre Corbineau [ University Joseph Fourier, Grenoble ] , Pierre Courtieu [ CNAM ] , Jean-Christophe Filliâtre [ ProVal team, Saclay ] , 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 ] , Claude Marché [ ProVal team, Saclay ] , Julien Narboux [ University of Strasbourg ] , Jean-Marc Notin [ TypiCal team, Saclay ] , Russell O'Connor [ University of Nijmegen ] , Christine Paulin [ Proval team, Saclay ] , Loïc Pottier [ Marelle team, Sophia ] , Matthias Puech, Vincent Siles, Élie Soubiran, Matthieu Sozeau [ ProVal team and Harvard University ] , Arnaud Spiwack [ TypiCal team, Saclay ] , Pierre-Yves Strub [ Formes team, Beijing ] , Laurent Théry [ Marelle team, Sophia ] , Benjamin Werner [ TypiCal team, Saclay ] .

Version 8.2

The version 8.2 of the Coq system was released in February 2009. This version, coordinated by Hugo Herbelin, results from a collective work involving the INRIA teams $ \pi$r2 , TypiCal, ProVal, and Marelle (with some help of Celtique, ex-Lande) and individuals from CNAM, University of Nijmegen, University Joseph Fourier and University of Strasbourg. It brings several significant extensions, most notably the “type classes”, a powerful tool for inheriting structure and type inference borrowed from Haskell and extended to Coq by Matthieu Sozeau. The other main novelties concern arithmetics: development of a binary arithmetics (Spiwack), large numbers (Théry, Grégoire), abstract arithmetics (Besson). The proof-checker has been made autonomous (Barras).

The specific involvement of the team in this version concerns the integration work (Herbelin), the extension of the module system (Soubiran), the enrichment of the specification language and of the language of tactics (Herbelin, Letouzey, Sozeau), and the design and implementation of a more powerful type inference algorithm.

Towards version 8.3

Version 8.3 is planned for the beginning of 2010. The main purpose of version 8.3 is to make available to users various improvements of the features of Coq 8.2: an extended and generally more efficient module system (Soubiran), more tactics (Herbelin, Letouzey), more robust and efficient type classes (Sozeau), more efficient and comprehensive libraries (revision of the library of finite sets and of the library of abstract arithmetic by Pierre Letouzey, revision of the sorting library by Hugo Herbelin).

Graphical interface

The integrated graphical interface of Coq (CoqIDE) is under revision: Vincent Gross started to implement a new communication model based on process interaction rather than on threading (the reasons are: ability to support multiple Coq sessions, ability to interrupt Coq asynchronously, better robustness on non Unix-compliant operating systems, definition of a communication protocol reusable by other Coq interfaces).

Internal architecture of the Coq software

Pierre Letouzey's activities concerning the internal architecture of Coq includes the isolation of “plugins” parts that can now be dynamically loaded, the simplification of the current build infrastructure via Makefile, attempts to propose an alternative build infrastructure based on ocamlbuild, and code auditing via the Oug tool for finding useless or badly shaped code. Hopefully, these efforts (among which some are still in progress) contribute to having a software with a better design, more efficient, easier to maintain and extend.

The Technological Development Action Coq

This “Action de Développement Technologique”, whose responsible is Hugo Herbelin, gathers the teams and individuals listed above.

Two national-level meetings have been organised as part of the ADT Coq. The first meeting has been organised by $ \pi$r2 in March 2009 and it gathered about 25 persons on the topic of automation in Coq. The second meeting has been organised by TypiCal in June 2009 and it gathered about 15 persons on the question of tactic languages in Coq. The minutes of the meeting can be found at URL .

The ADT Coq supported the first Coq Asian summer school that Jean-Pierre Jouannaud (Formes team) organised in August in Beijing. The ADT Coq also supported the first Coq workshop help in August in Munich. Chaired by Hugo Herbelin, the workshop, though announced lately, attracted 7 submissions of which the 9-persons program committee retained 6. About 25 persons attended. The web page of the workshop is .

Modules in Coq

Participant : Élie Soubiran.

During the first part of the year, Élie Soubiran has worked on an evolution of the Coq module system. In this work, he proposes a new framework where both module implementations and module types are unified into a single concept of theory. This new module system is equipped with three theory combinators that are inclusion, refinement and application. He also enriches this system with a new notion of $ \upper_delta$ -equivalence that characterises in a decidable way the exact equalities between names. Hence by quotienting the name-space with this new equivalence, he provides to Coq a transparent name-space both for users and for the proof writing machinery (notations, proof search tactics, rewriting...). This work has been published in the proceedings of the MLPA workshop [16] . This module system is implemented in the development branch of Coq and will be available in the next public release. One can check the improvements brought by the new module system by looking at the new Structures, MSet and Numbers libraries.

Since October 2009, Élie Soubiran works on two improvements of the new module system. In the first one, he splits the primitive notion of theory into two atomic constructions of name-space and structure. This leads to a more general system where one can define not only modules but also extensible name-spaces or section(Section is a mechanism that allows to define local definitions and local parameters for a given set of proofs.) like name-spaces. His second improvement deals with a new merging of structure combinator that subsumes inclusion and refinement. This combinator helps, among others, to handle “diamond like” modular constructions.

Formalisation in Coq

Vincent Siles has done some Coq formalisation work on untyped PTS's and Sequent Calculus PTS's, which can be found at .

Stéphane Glondu is working with Mehdi Dogguy on the formalization in Coq of a type system for a timed $ \pi$ -calculus that guarantees confluence.

Hugo Herbelin implemented a few extensions of the proof language and certification language of the system. He also contributed the specification of a “mergesort” for the Coq library.

Matthias Puech integrated a record-inference mechanism in Coq for the recognition of mathematical structures.


Logo Inria