Vérification automatique de protocoles. Un "Model-Checker" pour CCS

On donne ici des compléments au projet informatique.

Exemple de code CCS


On s'intéresse ici à un protocole de communication entre deux agents, supposés permettre le bon acheminement des messages même lorsque les lignes de communications ne sont pas parfaites. On doit quand même supposer un certain nombre de choses concernant ces lignes: elles peuvent simplement perdre ou dupliquer un message, mais pas le corrompre. On va représenter nos deux agents par des termes CCS Send et Reply, dont le seul but est pour l'un d'envoyer des messages sur une ligne (un buffer \`a capacité infinie), également représentée par un terme CCS Trans, vers Reply, qui lui, va renvoyer un reçu \`a Send, par la ligne Ack. Ces deux lignes sont censées être imparfaites dans le sens explicité plus haut. Pour communiquer, Send et Reply vont utiliser le protocole du bit alterné. Le nom du protocole vient du fait que chaque message va être taggé, alternativement par un 1 et par un 0: Pour écrire les termes CCS correspondants, on paramètre Send et Reply par l'état courant du bit. On écrira ainsi Send(b) pour Send dans lequel le bit est à la valeur b. De plus, on écrira ici bar(a) pour l'envoi sur le canal a. Les codes CCS correspondants sont: Pour les lignes Ack et Trans, il faut paramétrer les termes CCS correspondants par les bits encore en circulation sur les lignes. Ils sont donc paramétrés par des chaînes de bits. On a ainsi: