Author: Christophe Reutenauer