Contact English version

L'équipe ProVal s'est arrêtée à la fin août 2012, et renaît en une nouvelle équipe Toccata
Ces pages n'évoluent plus, suivez le lien ci-dessus pour les informations à jour sur notre équipe.

Preuve assistée par ordinateur et programmation fonctionnelle


Development of Coq libraries

Higher-order strongly typed programming languages such as Objective Caml help improving the quality of software development. Static typing automatically detects possible execution errors. Higher-order functions, polymorphism, modules and functors are powerful tools for the development of generic reusable libraries. Our general goal is to enrich such a software environment with a language of annotations as well as libraries for data types, abstract notions and associated theorems which can express logical properties of programs and ease the possibility to automatically and interactively develop proofs of correctness of the programs. In the past, we made contributions to the Coq proof assistant by adding features for improving the development of formally proved functional programs. A first contribution is a new method to extract Ocaml modular code from Coq proofs (P. Letouzey's PhD thesis). This extraction mechanism is an original feature for the Coq system, and has been used by several teams around the world in order to get efficient certified code. Another contribution (M. Sozeau's PhD thesis) is an extension of the Coq input language for building programs with strong specifications by writing only the computational part and generating proof obligations separately (which are usually solved by tactics) and also a mechanism generalizing Type Classes à la Haskell which gives overloading in programs and proofs and facilitates the development of generic tactics.

Our current activities mainly focus on using the capability of the Coq system to model both computation and deduction in order to explore different classes of applications. These examples involve the development of large reusable Coq libraries and suggest domain-specific specification and proof strategies.

Randomized algorithms

We proposed a method for modeling probabilistic programs in Coq. The method is based on a monadic interpretation of probabilistic programs as probability measures. It is available as a Coq library ALEA. This library has been used in an environment Certicrypt for the interactive development of formal proofs for computational cryptography.

Floating-point programs

A high-level of guarantee on floating-point computations is obtained by formal proofs in Coq. We maintain and develop large Coq libraries for floating-point arithmetic: core definitions, axiomatic and computational rounding operations, high-level properties. It provides a framework for developers to formally certify numerical applications. A new such library is described Flocq is under construction. These results are described here.

Certification of tools

alt-ergo as a reflexive tactic in Coq Certifying the result of tools for analysing programs is a good challenge in the domain of proofs of higher-order functional programs.

The proof assistant Coq can be used to certify the result of automated deduction tools. We developed a certified version of the kernel of the alt-ergo theorem prover (S. Lescuyer PhD thesis). We are also developing a library Coccinelle for reasoning on termination of term rewriting systems. These results are described here.

We are also currently developing a certified version the Frama-C/Jessie/Why verification chain.

Contribution to functional programming

We develop several advanced tools in Objective Caml, some specific to our research objectives but some of a more general purpose which we distribute as open-source libraries.


Romain Bardou, François Bobot, Sylvie Boldo, Evelyne Contejean, Jean-Christophe Filliâtre, Paolo Herms Claude Marché Guillaume Melquiond, Christine Paulin-Mohring Xavier Urbain

Anciens contributeurs

Johannes Kanig, Stéphane Lescuyer, Pierre Letouzey, Matthieu Sozeau

Développements de logiciels

Bibliothèques Coq

Bibliothèques Ocaml et outils

Collections de programmes prouvés


Publications de référence

  1. Philippe Audebaud and Christine Paulin-Mohring. Proofs of randomized algorithms in Coq. Science of Computer Programming, 74(8):568-589, 2009. [PDF]
  2. Sylvain Conchon, Évelyne Contejean, Johannes Kanig, and Stéphane Lescuyer. Lightweight Integration of the Ergo Theorem Prover inside a Proof Assistant. In John Rushby and N. Shankar, editors, AFM07 (Automated Formal Methods). ACM Press, 2007. [PDF]
  3. Évelyne Contejean, Pierre Courtieu, Julien Forest, Andrei Paskevich, Olivier Pons, and Xavier Urbain. A3PAT, an Approach for Certified Automated Termination Proofs. In Partial Evaluation and Program Manipulation, Madrid, Spain, january 2010. ACM Press.
  4. Pierre Letouzey. Programmation fonctionnelle certifiée: l'extraction de programmes dans l'assistant Coq. Thèse de doctorat, Université Paris-Sud, July 2004. [.ps.gz]
  5. Matthieu Sozeau. Un environnement pour la programmation avec types dépendants. Thèse de doctorat, Université Paris-Sud, December 2008. [bib]

Autres publications liées à la thématique

  1. Christine Paulin-Mohring. A constructive denotational semantics for Kahn networks in Coq. In Yves Bertot, Gérard Huet, Jean-Jacques Lévy, and Gordon Plotkin, editors, From Semantics to Computer Science: Essays in Honor of Gilles Kahn. Cambridge University Press, 2009. [PDF]