Section: New Results
Decidable fragment of array theory
Participants : Fei He, Bow-Yaw Wang, Min Zhou.
Array theory is very useful in program verification. The most popular technique for deciding array theory is to reduce to the theory of uninterpreted functions. Although the technique is widely used in SMT solvers, it has several drawbacks. In program verification, one often needs array theory with quantified indices. Enriching the theory of uninterpreted functions with quantifiers leads to undecidability easily. Recently, a new technique that applies counter automata allows more general quantification in array theory  . But its algorithm requires two reductions: one from array theory to the reachability of counter automata; the other from counter automata to Presburger arithmetic. In this project, we reduce array theory to the logic of weakly monadic second-order with one successor (WS1S). We have developed an equi-satisfiable reduction and conducted preliminary experiments with Mona.
Participant : Pierre-Yves Strub.
For the use of CoqMT (or SMT), we need the availability of decision procedures either certified or generating certificates. We studied the certification of decision procedures for the case of (integer or rational) linear arithmetic. For that purpose, we developed in Coq the theory related to the simplex method, a well known linear optimization algorithm over linear constraints. This development [?] includes:
i) the definition and proof of basic properties of the ordered rings and fields,
ii) the definition and proof of basic properties of polytopes (weak Krein-Milman theorem),
iii) the correction of the simplex algorithm steps and
iv) the correction and completeness of the halting conditions.
This work is based of the SsReflect tactic language and libraries developed in the team Mathematical Components of the Microsoft Research-INRIA Joint Centre. It is done in cooperation with Assia Mahboubi, from the TypiCal group at INRIA Saclay - Ile de France.
Certificates of a small size for linear arithmetic
Participant : Pierre-Yves Strub.
For solving large problems, the use of decision procedures using complex optimizations and heuristics is necessary. Proving correctness of such programs can be very tedious. Moreover, proofs have to be updated each time the decision procedure algorithm is modified. A workaround is to write non verified algorithm generating certificates at each run. These certificates must be small and easily verifiable.
We studied  this problem for the case of linear arithmetic. We instrumented a general simplex algorithm so that it can generate certificates. Our certificates for the harder case (non-satisfiable problems) are i) linear in the number of involved equations in the rational case, ii) linear in the number of involved equations and number of Gomory cuts in the integer case: the better your cutting heuristic, the smallest your certificate. Certificates can then be checked by using very simple, inexpensive computations.
This implementation is currently used in the CoqMT kernel to check conversion goals involving arithmetic constraints. We also wrote a new Coq tactic for the resolution of arithmetic goals. We expect far better results than the current tactics of Coq.
This work is done in cooperation with Assia Mahboubi, from the TypiCal group at INRIA Saclay - Ile de France.