# Project : vasy

## Section: Software

### The CADP Toolbox

Participants : Damien Bergamini, David Champelovier, Nicolas Descoubes, Hubert Garavel [contact person], 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 protocols and distributed systems engineering (see http://www.inrialpes.fr/vasy/cadp).
In this toolbox, we develop the following tools:*

*Cæsar.adt [2] 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 [9] 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 [3] 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:**Bisimulator [19], which checks bisimulation equivalences and preorders on the fly,**Determinator, which eliminates nondeterminism in normal, probabilistic, or stochastic systems,**Evaluator [14], 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,**Projector, which computes abstractions of communicating systems,**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_Graph, which generates various forms of practically useful graphs,**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),**Bcg_Steady, which performs steady-state numerical analysis of (extended) continuous-time Markov chains,**Bcg_Transient, which performs transient numerical analysis of (extended) continuous-time Markov chains, and**Xtl (**eXecutable Temporal Language*), which is a high level, functional language for programming exploration algorithms on 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 allow to specify in Xtl evaluation and diagnostic generation fixed point algorithms for usual temporal logics (such as Hml[48], Ctl[42], Actl[53], etc.).

*The connection between explicit models (such as Bcg graphs) and implicit models (explored on the fly) is ensured by Open/Cæsar-compliant compilers, e.g.:**Cæsar.Open, for models expressed as Lotos descriptions,**Bcg_Open, for models represented as Bcg graphs,**Exp.Open, for models expressed as communicating automata, and**Seq.Open, for models represented as sets of execution traces.*

*The Cadp toolbox also includes additional tools, such as Aldébaran and Tgv ( Test Generation based on Verification) developed by the Verimag laboratory (Grenoble) and the Vertecs team of Inria Rennes.*

*The Cadp tools are well-integrated and can be accessed easily using either the Eucalyptus graphical interface or the Svl [5] scripting language. Both Eucalyptus and Svl provide users with an easy, uniform access to the Cadp tools by performing file format conversions automatically whenever needed and by supplying appropriate command-line options as the tools are invoked.
*