projet :
CROAP

Précédent : Environnement interactif de preuve
Remonter : Résultats nouveaux Suivant :
Contrats
industriels (nationaux, européens et
Sous-sections
Calcul formel et Déduction
Participants : Pierre Letouzey, François Maurel, Loïc
Pottier, Laurence Rideau, Laurent Théry.
Dans le cadre de l'action incitative CFC nous
avons travaillé sur la certification d'un des algorithmes les
plus efficaces pour la détection de tautologies : l'algorithme de
Stålmarck. Une première version de l'algorithme a été entièrement
prouvée en utilisant CtCoq. Un travail d'optimisation de
l'algorithme reste à faire pour rendre cette expérience
réellement concluante.
Dans le cadre de l'action incitative CFC, le
travail sur l'algorithme de Buchberger entrepris l'année
précédente a été poursuivi. Cette année, on s'est attaché à
prouver certaines optimisations de l'algorithme. Le résultat est
que l'algorithme certifié ainsi obtenu se compare favorablement
avec l'algorithme présent dans le système de calcul formel Maple.
Ce travail a fait l'objet d'une publication dans la conférence
Cade-15 [[16]] et de
la distribution d'une librairie certifiée de calcul de base de
Gröbner.
Francois Maurel, stagiaire de maîtrise
de l'ENS Ulm, a réalisé une preuve de l'algorithme de
Cantor-Zassenhaus pour la factorisation des polynômes dans les
corps finis. Le code extrait (avec l'extraction de Type, voir
section 6.6.6)
est très raisonnable en efficacité, et permet de traiter des
exemples importants (polynômes de Shup). Il arrive qu'il soit
plus rapide que Mupad. Une page de test se trouve à l'URL
http://www.inria.fr/croap/CFC/FFFC/facto.html.
Benjamin Blanc et Benjamin
Grégoire, stagiaires de la maîtrise MASF de Nice ont certifié la
cohérence entre des fonctions d'analyse syntaxique et d'affichage
de polynômes à plusieurs variables. Le théorème principal dit que
lorsque l'on imprime un polynôme et qu'on le relit, on le
retrouve identique.
La bibliothèque Coq de structures mathématiques s'est
étoffée. Elle est maintenant indépendante du développement des
catégories d'A. Saïbi, qui n'a pas été encore portée dans la
dernière version de Coq, à cause de problèmes d'incompatibilité
d'univers. Ses parties les plus développées concernent la théorie
des ensembles (inspirée par les développements de G. Huet et G.
Kahn), la théorie des groupes, la théorie des anneaux
commutatifs, et les corps. Cette bibliothèque a été utilisée dans
le stage de F. Maurel. Elle va servir de base à une thèse
co-encadrée par A. Hirschowitz et L. Pottier sur la formalisation
en Coq de la géométrie algébrique et de la méthode d'Horace pour
l'interpolation en plusieurs variables. Mais elle est destinée à
servir plus largement d'outil de référence pour les preuves à
caractère très mathématique, comme celles d'algorithmes de calcul
formel. Un soin important a été apporté à la lisibilité grâce à
Ctcoq, de façon à rendre ce travail intelligible à une personne
étrangère au domaine de la preuve sur machine. Il est prévu
d'utiliser et de tester ce développement dans le cadre d'un cours
d'algèbre de DEUG 1re année à Nice. Ce travail a été
présenté par L.Pottier au workshop Calculemus/UITP à Eindhoven en
juillet.
Extraction de Type
L'extraction de Coq ne fonctionne qu'avec
les sortes Prop et Set. Mais la formalisation
des mathématiques même élémentaires nécessite l'utilisation de la
sorte Type. Aussi a-t-on développé une technique
d'extraction de tous les termes Coq en OCaml. Essentiellement, on
extrait vers un lambda-calcul non typé, avec pattern matching et
récursion, en effondrant tous les termes de la sorte
Prop vers une constante. Le code généré est du OCaml,
dans lequel on élimine le typage par l'utilisation systématique
de la fonction Obj.magic. L'extraction de Type a des
performances raisonnables : sur l'algorithme de Buchberger, elle
est au pire deux fois plus lente que l'extraction standard de
Coq. Mais elle a encore de gros défauts : pas de modularité, code
extrait illisible, choix d'expansion des fonctions.

Précédent : Environnement interactif de preuve
Remonter : Résultats nouveaux Suivant :
Contrats
industriels (nationaux, européens et