Université Joseph Fourier
Département Licence Sciences & Technologie
RAPPORT DE STAGE
CONCEPTION ET VÉRIFICATION D'ALGORITHMES
DISTRIBUÉS : PREUVE À L'AIDE DU PROUVEUR
INTERACTIF COQ
Anaïs CHENON
Laboratoire d'accueil : Verimag
Directeur du laboratoire : Nicolas HALBWACHS
Responsable de stage : Karine ALTISEN et Pierre CORBINEAU
Licence MIN – 2e année
Année Universitaire : 2014-2015
Rapport de stage Anaïs CHENON
Sommaire
Remerciements.........................................................................................................................................3
Introduction.............................................................................................................................................4
I. Définitions............................................................................................................................................5
1. Coq......................................................................................................................................................5
2. Algorithmes distribués, auto-stabilisants et silencieux........................................................................6
3. Spécification de l'algorithme en coq...................................................................................................9
II. Exemple de composition....................................................................................................................12
1. Problème..............................................................................................................................................12
2. Algorithme..........................................................................................................................................13
3. Implémentation....................................................................................................................................14
III. Composition.......................................................................................................................................15
1. Paramétrage de l'utilisateur.................................................................................................................15
2. Run_algo............................................................................................................................................17
3. Partial_correctness.............................................................................................................................18
Conclusion...............................................................................................................................................20
2/16
Rapport de stage Anaïs CHENON
Remerciements
En premier lieu j'aimerais remercier mes tuteurs de stage Karine ALTISEN et Pierre
CORBINEAU qui m'ont très bien accueillie, qui m'ont guidée à travers les différentes étapes de mon
stage et qui m'ont permis de vivre l'expérience enrichissante qu'est de travailler au sein d'une équipe de
recherche. Ils m'ont non seulement permis de découvrir des notions d'informatiques très intéressants
mais également d'apporter une réelle contribution à leur projet.
Je souhaiterais ensuite remercier Stéphane DEVISMES qui m'a présenté les notions
d'algorithmes distribués et apporté son aide lors de mon stage.
Enfin je remercie Nicolas HALBWACHS, directeur de Verimag, ainsi que le DLST pour
m'avoir donné l'opportunité d'effectuer ce stage.
3/16
Rapport de stage Anaïs CHENON
Introduction
Un algorithme distribué permet d'organiser la coopération de plusieurs machines dans le but de
calculer un résultat. Chaque machine exécute le même protocole et l'ensemble des machines est capable
d'échanger des informations pour parvenir à un résultat général. La problématique de mon stage
concernait la composition de deux algorithmes et la justesse des résultats obtenus grâce à cette
composition.
Grâce au logiciel Coq, mes maîtres de stage avaient pu spécifié et implémenté la théorie des
algorithmes distribués, et ma mission était de, à partir de cette base, développer la composition
d'algorithmes distribués en respectant les caractérisations déjà définies.
Pour effectuer cette mission, je me suis tout d'abord familiarisé avec le logiciel Coq, les
algorithmes distribués et l'implémentation déjà effectuée. Ensuite, j'ai travaillé avec un exemple
basique que j'ai développé et avec lequel j'ai réfléchi sur la composition. Enfin, j'ai pu définir des
spécifications pour la composition d'algorithmes distribués.
4/16
Rapport de stage Anaïs CHENON
I. Définitions
1. Coq
Le logiciel Coq est un assistant de preuve développé par le CNRS, qui fournit un langage permettant de
formaliser des définitions et des théorèmes mathématiques et de les prouver.
Ce langage, proche du Caml, permet par exemple de définir des
constantes telles que des entiers naturels ou des booléens.
On peut aussi définir des fonctions comme la fonction
addition, ici renommée f
Un outil développé en plus par mes maîtres de stage permet de définir deux résultats possibles à une
fonction, ce qui est notamment utile par exemple lorsqu'on applique un algorithme à un état : si l'état
change, le résultat apparaît sous la forme Some s, sinon sous la forme None.
2. Algorithmes distribués, auto-stabilisants et silencieux
Comme présenté succinctement dans l'introduction, un algorithme distribué est un ensemble d'unité de
traitement autonomes inter-connectées entre elles. Chaque unité, chaque machine est un processus, qui
peut être représenté par un nœud dans un réseau. L'autonomie provient du fait que chaque unité de
traitement est pourvue de son propre contrôle ; les machines sont aussi capables de s'échanger des
informations.
L'algorithme est exécuté simultanément sur plusieurs machines différentes ce qui permet d'effectuer un
seul calcul ; à chaque « pas », chaque « étape », chaque processus effectue l'algorithme dont il est
pourvu
5/16
Definition n : nat := 3
Definition B : bool := true
Definition f (n1 n2 : nat) : nat := n1+n2
Definition l : list nat := 5::4::3::2::1::nil
1 / 16 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !