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