## Section: New Results

### Automated Deduction

Participants : Sylvain Conchon, Évelyne Contejean, Jean-Christophe Filliâtre, Mohamed Iguernelala, Stéphane Lescuyer, Claude Marché, Alain Mebsout, Guillaume Melquiond, Xavier Urbain.

#### Formalization of an efficient SAT-solver

In an attempt to improve automation capabilities in the Coq proof assistant, Conchon and Lescuyer developed a tactic for the propositional fragment based on the DPLL procedure. Although formulas naturally arising in interactive proofs do not require a state-of-the-art SAT solver, the conversion to clausal form required by DPLL can strongly damage the performance of the procedure. In [26] , we have presented a reflexive DPLL algorithm formalized in Coq which outperforms the existing tactics. It is tightly coupled with a lazy CNF conversion scheme which, unlike Tseitin-style approaches, does not disrupt the procedure. This conversion relies on a lazy mechanism which requires slight adaptations of the original DPLL. As far as we know, this is the first formal proof of this mechanism and its Coq implementation raised interesting challenges.

#### Matching

Arthur Milchior did an undergraduate internship under the supervision
of Sylvain Conchon and Jean-Christophe Filliâtre from June to August
2009. He improved a matching algorithm from L. de Moura and
N. Bjørner and implemented it in the *Alt-Ergo* theorem
prover [41] . More precisely, the improvement consisted in
handling types in the matching compilation to take polymorphism into
account. The experimental results showed a 30% speed-up with respect
to the current matching implementation.

#### Integration of associative-commutative symbols in
*Alt-Ergo*

Associative and commutative (AC) symbols are ubiquitous in mathematics
and in the modelling of data structures (*e.g.*
multisets). Handling AC via axiomatization, as done in *Alt-Ergo*
before the internship of Iguernelala, is hightly inefficient and
incomplete. Iguernelala, together with Conchon and Contejean, has
proposed an extension of the congruence closure modulo an arbitrary
theory at the core of *Alt-Ergo* to handle also (arbitrarily
used-defined) AC symbols [39] . This extension is
integrated to the distributed version of *Alt-Ergo* and enables, for
instance, the combination of AC, linear arithmetics, and the theory of
equality (congruence closure).

#### The *Alt-Ergo* theorem prover

Based on our experience with the development of *Alt-Ergo* , we have
shown a small number of modifications needed to bring parametric
polymorphism to our SMT solver [56] . The first one
occurs in the typing module where unification is now necessary for
solving polymorphic constraints over types. The second one consists in
extending triggers' definition in order to deal with both term and
type variables. Last, the matching module must be modified to account
for the instantiation of type variables.

Concerning the prover itself, we fully formalized the core decision
procedure CC(X) of *Alt-Ergo* in the *Coq* proof assistant. Moreover
we provided a formal proof of soundness and completeness [71] .

#### Data structures

S. Conchon and J.-C. Filliâtre generalized an idea present in the
work described in
[73] , [72] and introduced
the new notion of *semi-persistence* . A data structure is said to
be semi-persistent when only the most recent version and its ancestors
can be accessed or updated. Making a data structure semi-persistent
may improve its time and space complexity. This is of particular
interest in backtracking algorithms manipulating persistent data
structures, where this property is usually satisfied. In particular,
this is the case for the union-find data structure used internally by
*Alt-Ergo* . S. Conchon and J.-C. Filliâtre proposed a proof system
to statically check the valid use of semi-persistent data structures.
It requires a few annotations from the user and then generates VCs
that are automatically discharged by a dedicated decision
procedure. An article was presented at
ESOP'08 [74] .

#### Automated proofs and certificates

##### Coccinelle and CiME's traces

The powerful subterm criterion for termination of term rewriting
systems is now part of the certified criteria in CiME\Coccinelle. In addition to providing its first *Coq* formalisation,
É. Contejean, A. Paskevich, and X. Urbain extended the subterm criterion by weakening its
premises [78] . This is a joint work with
J. Forest (ENSIIE), P. Courtieu, and O. Pons (CNAM).

To facilitate interactions between other provers and certifying engines, the CiME\Coccinelle team was involved in the definition of a certification problem format (CPF, http://cl-informatik.uibk.ac.at/software/cpf/ ) the major design of which was done in collaboration with the CeTA\IsaFoR group in Innsbruck, and with additional comments from the CoLoR group in Beijin.

##### Proofs of bounds on real-valued expressions

G. Melquiond has built a library for automatically proving bounds on
expressions in the *Coq* system [99] , [100] . This library
performs automatic differentiation and interval arithmetic (with
floating-point bounds). Its purpose is to help the user with the
mathematical part of the certification of numerical programs.