previous up next top index
Précédent : Sémantique de la mobilité Remonter : Sémantique des langages concurrents d'ordre Suivant : Esterel et la programmation réactive


Mobilité et vérification

Comme nous l'avons dit, les modèles d'ordre supérieur pour le parallélisme posent des problèmes nouveaux et difficiles en ce qui concerne la vérification. On peut, dans certains cas, se ramener à une approche similaire à celle qui utilise les systèmes de transition finis comme modèle de base (voir la section 3.4 ). C'est ce qui a été fait par D. Sangiorgi, dans un travail commun avec M. Pistore [17], pour les agents « à contrôle fini » du tex2html_wrap_inline627 -calcul. On doit rappeler ici que, en raison du fait que ces agents peuvent recevoir des noms arbitraires, ils déterminent des systèmes de transitions qui ont en général une infinité d'états. Néanmoins, en exploitant le fait que les états ne diffèrent que par les noms reçus en paramètre, D. Sangiorgi et M. Pistore ont montré qu'on peut adapter l'algorithme classique de réduction à un modèle minimal pour vérifier la bisimulation pour ces agents particuliers. Une implémentation prototype a été réalisée en CAML-Light.

Les articles [7] et [20] mentionnés ci-dessus relèvent aussi de l'activité de vérification, mais ne peuvent conduire à des procédures de décision que dans des cas très particuliers. Constatant que les méthodes « énumératives » classiques en vérification ne sont plus adaptées au cas de l'ordre supérieur, on peut essayer de généraliser les méthodes « logiques » qui se prêtent mieux au traitement d'objets infinis. Dans cet esprit, R. Amadio, dans un travail commun avec M. Dam [8], a étendu la logique modale usuelle (Hennesssy-Milner) avec point-fixe au tex2html_wrap_inline627 -calcul, montrant qu'elle est suffisamment expressive pour caractériser les agents modulo [une approximation quelconque de la bisimulation. Il s'est ensuite particulièrement intéressé au problème de la vérification du fait qu'un agent satisfait une spécification donnée (par une formule). Deux méthodes sont envisagées : une méthode algorithmique, qui termine si l'agent considéré satisfait une certaine propriété de finitude, et une méthode déductive (système de preuve formel), qui est complète pour les agents sans récursion.

Un autre travail représentatif de la recherche sur les moyens de raisonner sur le parallélisme d'ordre supérieur est celui qu'a fait D. Sangiorgi avec B. Pierce [23]. Une méthode bien établie dans les langages de programmation pour offrir un mode de « raisonnement » élémentaire sur les programmes et éviter des erreurs consiste à utiliser un système de types. Un type est une spécification, ou une propriété certes très grossière du comportement d'un programme, mais qui, du fait de sa simplicité, peut être effectivement vérifiée. De plus, l'usage de types permet d'écarter certaines constructions comme illégales, et ceci permet de démontrer des propriétés ou des équivalences qui ne vaudraient pas autrement. Cette approche du raisonnement et de la vérification dans un cadre typé, et plus généralement dans le cadre d'une logique « simplifiée », semble très prometteuse (et assez proche de l'activité de programmation), et le travail de D. Sangiorgi et B. Pierce est un premier pas dans ce sens.



previous up next top index Précédent : Sémantique de la mobilité Suivant : Esterel et la programmation réactive Remonter : Sémantique des langages concurrents d'ordre