Overall Objectives
Application Domains
New Results
Contracts and Grants with Industry
Other Grants and Activities
Inria / Raweb 2003
Project: VASY

Project : vasy

Section: Software

The CADP Toolbox

Participants : Damien Bergamini, David Champelovier, Nicolas Descoubes, Hubert Garavel [correspondent], Christophe Joubert, Frédéric Lang, Radu Mateescu, Wendelin Serwe.

We maintain and enhance Cadp (Construction and Analysis of Distributed Processes– formerly known as Cæsar /Aldébaran Development Package), a toolbox for engineering of protocols and distributed systems (see In this toolbox, we develop the following tools:

  • Cæsar.adt [1] is a compiler that translates Lotos abstract data types into C types and C functions. The translation involves pattern-matching compiling techniques and automatic recognition of usual types (integers, enumerations, tuples, etc.), which are implemented optimally.

  • Cæsar [8] is a compiler that translates Lotos processes into either C code (for rapid prototyping and testing purposes) or finite graphs (for verification purpose). The translation is done using several intermediate steps, among which the construction of a Petri net extended with typed variables, data handling features, and atomic transitions.

  • Open/Cæsar [2] is a generic software environment for developing tools that explore graphs on the fly (for instance, simulation, verification, and test generation tools). Such tools can be developed independently from any particular high level language. In this respect, Open/Cæsar plays a central role in Cadp by connecting language-oriented tools with model-oriented tools. Open/Cæsar provides a set of libraries with their programming interfaces, as well as various tools, such as:

    • Evaluator [17], which evaluates regular alternation-free μ -calculus formulas,

    • Executor, which performs random execution,

    • Exhibitor, which searches for execution sequences matching a given regular expression,

    • Generator and Reductor, which construct the graph of reachable states,

    • Simulator, Xsimulator, and Ocis, which allow interactive simulation, and

    • Terminator, which searches for deadlock states.

  • Bcg (Binary Coded Graphs) is both a file format for storing very large graphs on disk (using efficient compression techniques) and a software environment for handling this format. Bcg also plays a key role in Cadp as many tools rely on this format for their inputs/outputs. The Bcg environment consists of various libraries with their programming interfaces, and of several tools, such as:

    • Bcg_Draw, which builds a two-dimensional view of a graph,

    • Bcg_Edit, which allows to modify interactively the graph layout produced by Bcg_Draw,

    • Bcg_Info, which displays various statistical information about a graph,

    • Bcg_Io, which performs conversions between Bcg and many other graph formats,

    • Bcg_Labels, which hides and/or renames (using regular expressions) the transition labels of a graph,

    • Bcg_Min, which minimizes a graph modulo strong or branching equivalences (and can also deal with probabilistic and stochastic systems), and

    • Bcg_Open, which allows to apply all Open/Cæsar tools to any Bcg graph.

  • Xtl (eXecutable Temporal Language) is a high level, functional language for programming algorithms that explore Bcg graphs. Xtl provides primitives to handle states, transitions, labels, successor and predecessor functions, etc. For instance, one can define recursive functions on sets of states, which allows to specify in Xtl evaluation and diagnostic generation fixpoint algorithms for usual temporal logics (such as Hml [45], Ctl [41], Actl [46], etc.)

  • Svl (Script Verification Language[4] is a scripting language to build complex verification scenarios that will, upon execution, invoke the appropriate Cadp tools automatically.

The Cadp toolbox also includes additional tools, such as those developed by the Verimag laboratory (Grenoble) and the Vertecs team of Inria Rennes:

  • Aldébaran compares and minimizes graphs modulo various equivalence and preorder relations,

  • Exp.Open 1.0 and Projector 1.0 compute products and abstractions of communicating automata, and

  • Tgv (Test Generation based on Verification) generates conformance tests according to user-defined test purposes.

All tools are integrated within the Eucalyptus graphical interface, which provides users with an easy, uniform access to the tools by hiding file formats and command-line syntax specific to each tool.