  We present a reflexive tactic for deciding the equational theory of Kleene
algebras in the Coq proof assistant. This tactic relies on a careful
implementation of efficient finite automata algorithms, so that it solves
casual equations instantaneously and properly scales to larger expressions. The
decision procedure is proved correct and complete: correctness is established
w.r.t. any model by formalising Kozen's initiality theorem; a counter-example
is returned when the given equation does not hold. The correctness proof is
challenging: it involves both a precise analysis of the underlying automata
algorithms and a lot of algebraic reasoning. In particular, we have to
formalise the theory of matrices over a Kleene algebra. We build on the recent
addition of firstorder typeclasses in Coq in order to work efficiently with the
involved algebraic structures.
