Vous êtes sur la page 1sur 2

Modlisation et spcication Master 2 LC e e TP 2 : Cadp

Peter Habermehl (www.liafa.jussieu.fr/~haberm/cours/modspec/)

Manuel concis de CADP

Cadp (www.inrialpes.fr/vasy/cadp) est un environnement de modlisation et vrication qui foure e nit, parmi dautres outils, les moyens pour modliser, spcier et vrier en utilisant les syst`mes de e e e e transitons tiquets (STE). e e Loutil Cadp est install sur le serveur cunillet dans le rpertoire /usr/local/cadp. Pour lutiliser, e e il faut aecter des variables denvironnement suivantes (on utilise la syntaxe bash) : # .bashrc CADP=/usr/local/cadp export CADP PATH=$PATH:/usr/local/bin:$CADP/bin.macOS:$CADP/com export PATH

1.1

Formats de description de STE

Cadp ore plusieurs formats de description des STE : aut et dot sont des formats textuels, bcg est un format binaire. Format aut La premi`re ligne du chier .aut spcie le numro de ltat initial du STE, le nombre e e e e de transitions et le nombre dtats. Les tats sont numrots ` partir de 0, sans discontinuit. Apr`s e e e e a e e cette ligne sont numres toutes les transitions ; le format utilis est tat source, tiquette (cha de e e e e e e ne caract`res en majuscules ou "i" pour laction interne ) et tat cible. e e Par exemple, un tampon ` une place buf.aut est dcrit comme suit en format aut : a e des(0,2,2) (0, "IN", 1) (1, "OUT", 0) Loutil bcg_io permet de transformer ce format vers les autres formats pour sa visualisation ou son analyse. La visualisation des STE peut tre faite : e en utilisant le format bcg et loutil bcg_draw ou en utilisant le format dot et loutil Graphviz.

1.2

Composition des STE et SVL

Le langage de script svl (Script Verication Language) permet de composer les STE dcrits en e dirents formats avec les oprateurs de composition parall`le, de renommage ou dabstraction. e e e Renommage des actions Il est eectu en utilisant la construction rename. On doit spcier la liste e e des actions ` renommer et leur nouveaux noms, ainsi que le STE sur lequel lopration est faite. Le rsultat a e e peut tre mis dans un chier au format souhait (indiqu par lextension du chier). Par exemple : e e e "buf_1.aut" = rename OUT -> A in "buf.aut" ; ou "buf_2.aut" = rename IN -> A in "buf.aut" ; Abstraction ou renommage des actions vers laction interne ("i" pour Cadp) est faite en utilisant loprateur hide. Par exemple, la construction ci-dessous permet de abstraire (rendre interne) laction A e du STE buf 2.aut : "out.aut" = hide A in "buf_2.aut" ;

Composition parall`le est un oprateur binaire ayant direntes variantes en fonction du nombre des e e e actions ` synchroniser : a Si on veut synchroniser sur toutes les actions (non-internes) des deux STE oprandes, alors on e utilise loprateur ||. e Si aucune synchronisation doit tre faite, on utilise loprateur |||. e e Si on doit synchroniser les deux STE sur les actions dune liste L, on utilise loprateur |[L]|. e An de obtenir le STE rsultant de cette composition, il faut utiliser la construction generation of. e Par exemple, pour composer deux STE reprsentant chacun un tampon ` une place an dobtenir un e a tampon ` deux places, on utilise le script svl suivant : a "buf2.aut" = generation of ("buf_1.aut" |[A]| "buf_2.aut"); Ensuite, on peut abstraire (rendre interne) laction A : "buf2i.aut" = hide A in "buf2.aut"; La composition parall`le est un oprateur binaire, mais elle peut se transformer en un oprateur n-aire e e e en encha nant les compositions parall`les. Par exemple, pour que laction A soit eectu en mme temps e e e par trois STE, on crira : e ("ste1.aut" |[A]| "ste2.aut") |[A]| "ste3.aut" Toutefois, si on souhaite navoir que des synchronisation binaires sur la mme action, il faut bien e sparer les STE qui sont synchroniss des STE qui le sont pas. Par exemple, la synchronisation entre les e e travailleurs de latelier de Milner et les outils est binaire : ("perso1.aut" ||| "perso2.aut") |[PUTM,GETM]| "marteau.aut"

1.3

Minimisation et comparaison de STE

Cadp fournit plusieurs outils pour la minimisation et la comparaison des STE par des relations dquivalence et de pr-ordre. Les relations vues en cours ont la syntaxe suivante : e e trace pour quivalence ou inclusion de traces, e weaktrace pour quivalence ou inclusion de traces avec actions internes, e strong pour bisimulation ou simulation forte, observational pour bisimulation ou simulation faibles. La minimisation est faite par la construction reduction et elle doit spcier la relation dquivalence e e utilise. Par exemple : e "buf2min.aut" = observational reduction of "buf2i.aut"; La comparaison est faite de faon similaire par la construction comparison qui doit spcier le type c e de comparaison (quivalence ==, inclusion <=) et la relation ` utiliser. Par exemple : e a "diag_buf.seq" = strong comparison "buf.aut" == "buf2min.aut"; teste lquivalence des deux STE en utilisant la bisimulation forte ; en cas de non satisfaction de la relation e propose (ici lgalit), une squence de contre-exemple est donne dans le chier .seq. e e e e e Exercice 1 : Dcrire puis visualiser les STE de base des exercices faits au TD 1. e Exercice 2 : Dcrire puis visualiser toutes les compositions des STE des exercices faits au TD 1. e e e e Exercice 3 : Montrer, en utilisant Cadp, les direntes relation dquivalence demandes dans le TD prcdent. e e