Section: Software
CoLoR and Rainbow
Participants : Frédéric Blanqui [ correspondant ] , Pierre-Yves Strub, Qian Wang, Lianyi Zhang.
CoLoR is a Coq [31] library on rewriting theory and termination [17] . It is intended to serve as a basis for certifying the output of automated termination provers like AProVE, MatchBox, TTT2, Torpa, TPA, etc. It contains libraries on:
-
Mathematical structures: relations, (ordered) semi-rings.
-
Data structures: lists, vectors, integer polynomials with multiple variables, finite multisets, matrices.
-
Term structures: strings, algebraic terms with symbols of fixed arity, algebraic terms with varyadic symbols, simply typed lambda-terms.
-
Transformation techniques: conversion from strings to algebraic terms, conversion from algebraic to varyadic terms, arguments filtering, rule elimination, dependency pairs, dependency graph decomposition.
-
Termination criteria: polynomial interpretations, multiset ordering, lexicographic ordering, first and higher order recursive path ordering, matrix interpretations.
Rainbow is a tool for automatically certifying termination proofs expressed in a given XML format. Termination proofs are translated and checked in Coq by using the CoLoR library.
Rainbow was the best certification back-end in the 2007 and 2008 editions of the international competition of certified termination provers(http://termination-portal.org/wiki/Termination_Competition ).
Since then, we improved the efficiency of proof checking and extended Rainbow and CoLoR with syntactic first-order matching, the verification of loops in term and string rewrite systems (to certify non-termination), and semantic labelling [53] .
We also started to formalize the termination of Haskell programs [37] (internship of Julien Bureaux, ENS Paris, from June 1st to July 31), and to formalize Rainbow itself in order to certify it and improve the efficiency of proof checking by using the extraction mechanism of Coq to OCaml.
CoLoR and Rainbow are distributed under the CeCILL license on http://color.inria.fr/ . Various European people participated to its development (see the website for more information).