Awali

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 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: efficiency, genericity, and accessibility.

Introduction

Awali is written in C++ and is organised into three layers: 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 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. A graphic user interface is under development.

Download Téléchargement

The last Awali 1.0 tarball may be downloaded here. Other tarballs for this version may be found here. Subsequent versions of Awali are listed here.

Requirements Prérequis

  • A linux or MacOSX environment
  • A modern C++ compiler (allowing c++11 standard)
  • CMake
  • Graphviz
  • NCurses development library (else Cora won't be compiled)
  • Cython (else Python layer won't be available)
  • Python (Awali works with Python 2 and 3; Python 3 is recommended)

Compilation and Installation Compilation et installation

The recommended process to compile and install Awali is the following. We assume that the downloaded tarball is called awali-all-vX.Y.Z-YYMMDD.tgz and located in /some/directory.
  $ cd /some/directory
  $ tar xzvf awali-all-vX.Y.Z-YYMMDD.tgz
  $ cd awali-all-vX.Y.Z-YYMMDD
  $ mkdir _build
  $ cd _build
  $ cmake ..
  $ make
  $ make b
  $ sudo make install
Command make b is not required but allows to enjoy Awali without suffering multiple on-the-fly compilation at the execution of each command. It may be parallelized by make -j8 b (for instance if one's computer has 8 cores).

Documentation

Documentation of Awali is a bit sparse at the moment. We focused on getting started exaining how to use Awalipy and Cora, which are the most user-friendly.

Getting Started

All aforementioned documents may be found in the the tarball, in subdirectory awalidoc/GettingStarted.

Examples

Aside from the one given in the previous section, we provide with each layer a few example on how to use it; they are located in directories:
  • awalipy/examples,
  • awali/dyn/examples, and
  • awali/sttc/examples.

Doxygen API documentation (C++ layers)

We use Doxygen to document the C++ API of Awali; it is available online at http://doxygen.vaucanson-project.org.
Note that this API is almost empty at the moment and mostly serves as a list of the available functions.

Doxygen API may also be generated locally by executing command make doxygen in directory _build (created as in section Compilation and Installation); off course Doxygen must then be installed.

Python API

In the Python layer, each function is documented with a docstring. This help may be displayed thanks to the built-in function help; for instance, the help for the function load may be displayed as follows.
  help(awalipy.load)

Contact

N'hésitez pas à nous contacter si vous rencontrez des problèmes ou trouvez des bugs dans Awali.

Do not hesitate to contact us in case of trouble or if you find bugs in Awali.

  • Victor Marsault (python, dyn, installation)
  • Sylvain Lombardy (sttc, cora)
  • Jacques Sakarovitch (cora, algorithms)

Soutiens financiers Support

D'avril 2011 à septembre 2014, le projet Vaucanson2 a été financé par la convention ANR 2010 INTB 0203.

D'octobre 2016 à septembre 2017, Victor Marsault a été financé par une bourse Marie Skłodowska-Curie,

Le projet Awali est financé par le Département Informatique et Réseaux de Télécom ParisTech.
From April 2011 to September 2014, Vaucanson2 project has been supported by contract ANR 2010 INTB 0203.

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.

Awali project is supported by the Department Computer Science and Networking of Telecom ParisTech.


Dernière Last modification: 14 Février February 2019