Awali est la dernière génération d'une suite de plateformes logicielles: Vaucanson (2003--2012) and Vaucanson2 (2012--2014); elle est développée en parallèle avec VCSN qui est issue d'un fork à partir du même Vaucanson2.
Nous avons utilisé cette expérience pour mettre en place les méthodes et les concepts qui permettent d'atteindre les objectifs d'efficacité, de généricité et d'accessibilité que nous nous sommes fixés.

Awali is a software platform for computing with finite automata, in the broadest meaning of the term: "classical" finite automata (rather called here Boolean automata), finite weighted automata with the instantiation of a large panel of weight semirings, finite (weighted) transducers, that is, automata over tuples of words rather than over words.

Awali is the last generation of a series of platforms: Vaucanson (2003--2012) and Vaucanson2 (2012--2014); it is written in parallel with VCSN which results from a fork from the same Vaucanson2.

We have used this long experience to set up the methods and concepts necessary to achieve our main goals: accessibility, efficiency, and genericity.


Awali is is a free software: you can redistribute it and/or modify it under the terms of the GNU General Public License, version 3 as published by the Free Software Foundation.


Awali is written in C++ and is organised into three layers or levels: the 'static', the 'dynamic', and the 'interface' layers.

The core of the platform is the static level, which provides the data structures and a library of algorithms. The type of a weighted automaton is determined by the type of weights and the type of labels. Every algorithm is implemented via template functions working on template classes, and is compiled for the type of automata that are used. Efficiency is partly based upon this generic programming which is anyway essential when dealing with weighted automata.

The dynamic level allows both the call of functions of the static level and genuine C++ programming with the use of a kind of 'universal' type of automata. This type is an abstraction of template (static) types of automata; it gives access to a complete template-free API for weighted automata. A remarkable feature of the dynamic level is the `on request' compilation of modules (data structures and algorithms) from the static level. Even written at the dynamic level, programs are compiled and not interpreted at execution time.

The interface level offers for the time being two kinds of access to the lower layers: a command-line interface, called Cora, which allows the call to most of the algorithms of the static level, and a Python interface to both the dynamic and the static levels.

Citing Awali

If you use Awali in your research, please consider citing it in your publications. You can use this bibtex entry or use a format based on the following.

Sylvain Lombardy, Victor Marsault, and Jacques Sakarovitch. Awali, a library for weighted automata and transducers (version ), 2021. Software available at

Soutiens financiers Support

The team gratefully acknowledges the constant support of the Awali project by the Computer Science and Networking Department of Telecom Paris (IPP).

Par ailleurs, le projet a bénéficié des soutiens suivants. Moreover, the project has benefited from the following supports.

D'avril 2011 à septembre 2014, le projet Vaucanson2 a été financé par la convention ANR 2010 INTB 0203. From April 2011 to September 2014, Vaucanson2 project has been supported by contract ANR 2010 INTB 0203.

D'octobre 2016 à septembre 2017, Victor Marsault a été financé par une bourse Marie Skłodowska-Curie, cofinancée par l'Union européenne et l'Université de Lège, Belgique. From October 2016 to September 2017, Victor Marsault has been supported by a Marie Skłodowska-Curie fellowship, co-funded by the European Union and the University of Liège, Belgium.

Dernière Last modification: 11 Janvier January 2022