![]()
Précédent : Sémantique de la mobilité Remonter :
Sémantique des langages concurrents d'ordre
Suivant : Esterel et la programmation réactive
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
-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
-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.