Preuve en Coq d`un algorithme distribué auto-stabilisant

publicité
Preuve en Coq d’un algorithme distribué auto-stabilisant de
recherche du centre d’un graphe acyclique
Niveau Magistère M1
Possibilité d’étendre le sujet pour un Magistère M2
Possibilité de poursuivre sur ce thème en Magistère M2 et thèse.
Mots-clefs
Algorithmique distribuée, modélisation, preuve en Coq
Sujet
Contexte scientifique
Les réseaux modernes sont de plus en plus grands (environ 100 000 noeuds). Ceci augmente la
probabilité qu’une défaillance se produise, soit au niveau des noeuds qui peuvent être sujets à des
pannes, soit au niveau des communications entre les noeuds qui ne sont pas complétement fiables.
Dans ce contexte, la tolérance aux fautes est cruciale pour les concepteurs de systèmes distribués.
En particulier, l’auto-stabilisation est une propriété souhaitable pour un algorithme distribué.
L’auto-stabilisation signifie le retour automatique à un état stable. Cette propriété permet de
contrer les fautes transitoires dans un réseau. Après l’occurrence d’une faute (corruption de la
mémoire, perte de message, changement topologique. . .), une solution auto-stabilisante garantit
que le réseau se comportera de nouveau correctement au bout d’un temps fini et cela, sans
intervention extérieure.
Les propriétés des algorithmes auto-stabilisants sont habituellement étudiées par les chercheurs par simulation et prouvées à l’aide d’un papier, une gomme et un crayon. Or, on dispose
maintenant de logiciels permettant de vérifier les preuves mathématiques. Le logiciel COQ est
un assistant de preuve semi-automatique : il permet d’exprimer formellement les propriétés logiques d’un algorithme, puis le logiciel et l’utilisateur interagissent pour construire la preuve
de ces propriétés. L’utilisation de Coq améliore nettement la confiance qu’on peut avoir dans
une preuve par rapport à une preuve sur papier. Le logiciel Coq garantit la validité des preuves
(en particulier l’absence d’erreurs logiques ou de calcul). Les preuves réalisées avec Coq atteignent un niveau d’assurance inégalé à tel point que Coq est aujourd’hui utilisé en avionique,
en cryptographie pour certifier des applications critiques.
Au delà de la vérification des preuves, la mécanisation des preuves permet d’espérer la réutilisation de schémas récurrents et à terme de faciliter les preuves. On constate en effet que les algorithmes auto-stabilisants partagent des schémas de preuves basés sur des arguments inductifs.
L’idée de ce projet est de participer à la certification d’algorithmes distribués auto-stabilisants
et l’automatisation partielle des preuves Un premier pas dans ces directions consistant à faire
durant le stage la preuve en Coq d’un algorithme simple.
1
Travail à faire :
– Etude bibliographique : comprendre le modèle de calcul, l’algorithme à étudier et sa preuve
manuelle.
– Définition en Coq de la sémantique du modèle à mémoire localement partagée.
– Implantation de l’algorithme dans ce modèle (hypothèse, commandes gardées).
– Preuve de théorèmes en Coq :
1. Correction de l’algorithme : définir la notion de centre, l’algorithme calcule-t-il effectivement le centre ?
2. Auto-stabilisation : convergence et fermeture
Compétences attendues :
– Avoir fait du Caml ;
– Avoir des compétences importantes en algorithmique séquentielle, en particulier preuves
(manuelles) d’algorithmes et calculs de complexité ;
– Avoir si possible suivi un enseignement d’algorithmique distribuée ;
Langage de programmation/preuve :
Le langage utilisé est Coq (un parent de Caml)
Lieu du stage
– Laboratoire : Verimag
– Équipe : DCS / Synchrone
– Encadrants : Karine ALTISEN, Stéphanes DEVISMES, Pierre CORBINEAU, Michaël
PÉRIN (email : pré[email protected])
2
Téléchargement