Contact Version française

The ProVal team was stopped at the end of August 2012, and reborn into a new team Toccata
These pages do not evolve anymore, please follow the link above for up-to-date informations about our team.

Computer-Assisted Proof and Functional Programming


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

Former contributors

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

Software developments

Coq libraries

Ocaml libraries and general tools

Series of verified programs

Related Grants

Main Publications

  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]

Other Related Publications

  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]