Projet : COQ

previous up next contents
Précédent : Modélisation et formalisation dans Coq Remonter : Résultats nouveaux Suivant : Développement de l'assistant Coq


Sous-sections


   
Preuves par réflection

Résumé :

La réflection est une technique de preuve qui exploite l'expressivité calculatoire de la théorie des types et qui permet la construction de preuves particulièrement efficaces. Elle a fait l'objet, au sein du projet Coq, de la thèse de Samuel Boutin, ainsi que d'une implémentation dans Coq, ensuite améliorée par Patrick Loiseleur.

Preuves d'égalités sur les polynômes



Participants : Patrick Loiseleur, Christine Paulin.

Patrick Loiseleur a repris le travail de Samuel Boutin sur des preuves d'égalité dans les anneaux abéliens. Pour cela il a formalisé et prouvé une procédure de décision d'égalité sur les polynômes abstraits dans Coq qui peut ensuite être directement appliquée à prouver des égalités dans des modèles particuliers, aboutissant à une méthode sûre et efficace de preuve. Il a développé des outils permettant une application aisée de ce résultat dès qu'une structure d'anneau est identifiée. Plus généralement, Patrick Loiseleur étudie la combinaison de preuves interactives et automatiques.

Traces de preuves égalitaires



Participant : Benjamin Werner.

Pour étendre le domaine d'application de la technique de réflection, ainsi que pour réduire le temps de calcul nécessaire, B. Werner a suggéré d'expliciter les étapes de réécriture dans le terme de preuve, sous forme de trace. Il a implanté un prototype dont les performances sont intéressantes. Ce travail donne lieu à une collaboration avec le projet Prothéo (U.R. de Nancy), dont le logiciel ELAN est bien adapté à la construction des traces.

Preuves sur les strutures finies



Participant : Jean Goubault-Larrecq.

Dans le but de développer des preuves de protocoles cryptographiques courtes et puissantes, J. Goubault-Larrecq a codé et prouvé un algorithme de recherche d'un circuit de poids négatif dans des graphes. Ceci lui a permis de construire une procédure de vérification de l'insatisfiabilité d'un système de contraintes de la forme x $ \leq$ y + k (k constante dans un groupe ordonné, par exemple Z) . Ceci a nécessité la réalisation d'une bibliothèque de définitions, algorithmes et lemmes concernant les mappes (fonctions de domaine fini, en particulier ensembles finis, tables de symboles, tableaux, graphes, etc). Cette bibliothèque est déjà utilisée par Henri Fraïssé (Dyade) pour la spécification de machines virtuelles Java et a été intégrée à la distribution de Coq.

Exécution efficace de termes de preuve



Participants : Henri Laulhère, Gérard Huet.

Les preuves par réflection mettent en jeu la réduction de termes de preuves représentant des procédures de décision complexes. Cette exécution doit rester compétitive par rapport à une exécution de la procédure de décision dans un langage de programmation classique. Même avec un algorithme de réduction efficace, comme celui développé dans Coq par B. Barras, les performances restent limitées car la réduction est interprétée. Henri Laulhère étudie la possibilité de traduire les lambda-termes de Coq en des fonctions de Ocaml qui sont ensuite exécutées. La difficulté est d'implanter une réduction forte qui travaille également sur des termes comportant des variables libres. Il a construit un prototype montrant un gain significatif dans les temps d'exécution.


previous up next contents
Précédent : Modélisation et formalisation dans Coq Remonter : Résultats nouveaux Suivant : Développement de l'assistant Coq