previous up next contents
Précédent : Outils de preuve Remonter : Vérification formelle de Suivant : Utilisation de Coq.

Utilisation de Lp.

Dans la lignée du travail réalisé au cours des années précédentes, Boutheina Chetali a continué son investigation dans le cadre de la vérification formelle de programmes concurrents spécifiés en UNITY [35]. Plus précisément, cette recherche s'est concentrée sur la preuve d'un protocole de communication à travers des canaux défectueux [34], telle qu'elle a été proposée par Chandy et Misra.

Du point de vue méthodologique, B. Chetali a montré que les preuves des propriétés de vivacité diffèrent de celles des propriétés de sûreté. En effet, une propriété de sûreté représente un fait (un invariant par exemple) qui doit être vérifié pour n'importe quelle exécution du programme. La preuve d'une telle propriété consiste à raisonner sur toutes les instructions (actions) du programme, en d'autres termes à vérifier la stabilité. Par contre, une propriété de vivacité exprime un fait qui doit être vrai à un certain moment du processus (ou de l'exécution), mais cet instant n'est pas défini. Une des propriétés de sûreté que doit vérifier le protocole de communication est que les données qui transitent dans le canal de transmission doivent faire partie du message initial que l'émetteur devait transmettre. Une propriété de vivacité est de la forme suivante : si l'émetteur envoie le message n, le récepteur finira par le recevoir.

Par conséquent, prouver une propriété de sûreté revient à vérifier la propriété pour toutes les actions du programme. Pour prouver une propriété de vivacité, nous essayons de décomposer la propriété en propriétés de base, qui sont généralement des propriétés de sûreté, dans le but d'utiliser les règles d'inférence du système, comme la transitivité ou l'induction. Cette décomposition n'est possible qu'avec une bonne compréhension du programme, sans toutefois raisonner sur toutes les séquences d'exécution possibles. Cette stratégie est plus facile à mettre en oeuvre quand le problème a un contenu mathématique restreint comme c'est le cas dans la plupart des problèmes que l'on rencontre en réseaux ou en temps réel. Il devrait en être différemment pour des problèmes à contenu mathématique fort comme des calculs matriciels distribués.

Ce travail de recherche a permis de mettre en évidence certaines perspectives intéressantes. Pour affiner son expertise, B. Chetali s'est intéressée à la vérification de la correction d'un programme UNITY spécifiant le fonctionnement d'un ascenseur, et ceci dans le but d'une comparaison avec d'autres démonstrateurs traitant des preuves UNITY. Le but de ce travail était une première comparaison entre les deux démonstrateurs à savoir LP et HOL. Plus précisément, elle a étudié d'une part les limitations imposées par la logique du premier ordre de LP sur ce type de preuve et d'autre part les avantages de l'ordre supérieur offert par HOL. Le résultat de cette recherche fut de montrer que les résultats de la mécanisation obtenus avec LP sont sensiblement les mêmes que ceux obtenus avec HOL.

Enfin, un autre aspect intéressant de l'investigation menée par B. Chetali est l'automatisation et la réutilisation des preuves. En effet, les preuves de propriétés de sûreté ont la même structure et cette uniformité permet d'obtenir un squelette réutilisable pour toute preuve de sûreté. Cela n'est pas le cas pour les preuves de propriétés de vivacité, dont l'automatisation semble improbable du fait du caractère temporel des propriétés à prouver. La démarche suivie pour construire une preuve de propriété de vivacité repose sur des critères opérationnels et utilise généralement un ensemble de règles d'inférence. L'objectif est d'identifier les règles les plus ``utiles'' afin de réduire cet ensemble.


previous up next contents
Précédent : Outils de preuve Remonter : Vérification formelle de Suivant : Utilisation de Coq.