Précédent : Logiciels Remonter : Projet COQ, Spécifications et
preuves Suivant : Actions industrielles
Résumé : Nous étudions la formalisation de preuves provenant des domaines informatique ou mathématique qui permettent de valider les choix faits dans l'environnement de preuve, de proposer de nouvelles fonctionnalités et de construire des bibliothèques générales.
- Le développement de preuves de protocoles cryptographiques est le sujet principal de l'action VIP développée dans le cadre du GIE Dyade.
- La formalisation d'un système de preuve a pour objectif d'aboutir à un assistant à la démonstration auto-certifié.
- Les exemples de développement de preuves sur les réels et les flottants s'inscrivent dans un projet d'applications de preuves formelles aux problèmes d'analyse numérique.
- Les preuves de calcul formel s'inscrivent dans une collaboration avec l'équipe CROAP à Sophia Antipolis et les équipes de Th. Hardin et D. Lazar à l'université Paris 6 pour le développement d'un environnement de Calcul Formel intégrant des spécifications et des preuves.
Bootstrap d'un système logique: formalisation d'un
système logique dans ce même système, une fois admise la
cohérence. L'extraction permet alors d'engendrer un programme
équivalent à celui qui l'a engendré.
B. Barras a poursuivi la formalisation de systèmes de types, avec comme but le bootstrap du Calcul des Constructions Inductives, et la vérification d'un système de preuves autonome.
La classe de systèmes formalisés jusqu'à présent, les Systèmes
de Types Purs munis de sous-typage abstrait, a été étendue avec
de nouvelles constructions. Premièrement, une construction
letin, autorisant des définitions locales
a été rajoutée, ce qui augmente l'utilisabilité du système. Puis,
ce système a été étendu avec le type inductif des entiers
naturels. B. Barras a alors commencé la formalisation d'un
système comportant des types mutuellement inductifs, voisins de
ceux implantés dans Coq. Ceux-ci ne sont pas des objets de
première classe, mais des constantes introduites dans une
signature globale.
Un deuxième axe de recherche a été la formalisation de l'interface d'un petit système de preuves [25], qui était jusque là réduit à une fonction de typage. Cela a compris notamment la formalisation des messages d'erreur, pour s'assurer que ceux-ci sont corrects et pertinents vis-à-vis de leur spécification.
Mots-clés : Protocoles cryptographiques, Méthodes
formelles, Commerce électronique
Résumé : L'action VIP du G.I.E. Dyade, s'intéresse à la modélisation et vérification de protocoles intervenants dans le commerce électronique. Les techniques utilisées ont été développées par Dominique Bolignano (G.I.E. Dyade) [Bol96,Bol97]. Coq est utilisé comme outil pour formaliser ces preuves. Les principales difficultés concernent la recherche de représentations des problèmes dans Coq qui facilitent les preuves et la conception de techniques et d'outils de preuves permettant une automatisation partielle de la tâche.
Le projet de langage de spécification minimaliste pour décrire les protocoles cryptographiques, Clap, commencé en 1996 (il s'appelait alors Slap) est en bonne voie. Le but est de pouvoir décrire une spécification suffisamment abstraite d'un protocole cryptographique, de décrire quelques scénarios (modèles de sécurité, et en général hypothèses faites sur le monde extérieur), et de vérifier le plus automatiquement possible, la correction des protocoles vis-à-vis des propriétés de sécurité désirées. Ultimement, le prouveur de Clap devrait pouvoir sortir une démonstration formelle en Coq.
En 1997, le travail s'est principalement porté sur la définition du langage lui-même, syntaxe, système de types et sémantique. Le design de Clap est décrit dans [37].
Un prouveur automatique pour les spécifications Clap est en
cours de réalisation, et un certain nombre de problèmes de
recherche sont encore à résoudre, notamment liés à l'utilisation
très répandue du ``ou exclusif'' pour combiner deux messages en
un. L'automatisation de certains aspects plus simples, et
notamment du calcul du prédicat de
Dominique Bolignano, est achevée `sur le papier' dans le cas où
le ``ou exclusif'' n'est pas utilisé, et un étudiant de DEA,
Karim Gam, en a commencé la preuve formelle en Coq durant les
trois mois de son stage. Une tactique de décision de ce prédicat,
par réflexion en Coq, est en cours de réalisation.
A. Saïbi étudie depuis septembre la possibilité d'automatiser certaines parties des preuves de protocoles cryptographiques. Plusieurs possibilités sont envisagées:
Micaela Mayero, dans le cadre de son stage de DEA sous la
direction de Gérard Huet et Gilles Dowek s'est attachée à
spécifier et démontrer [56] en Coq un théorème des
mathématiques ``le théorème des trois intervalles'' qui est la
preuve (1986) de la conjecture de Steinhaus (1950).
Ce travail a nécessité, entre autres choses, le développement d'une théorie axiomatique des nombres réels. Il est précurseur de son travail de thèse, dirigé par Gilles Dowek sur les méthodes formelles pour l'analyse numérique.
En janvier 1997, Jean-Christophe Filliâtre a repris et amélioré la formalisation de la théorie des automates finis qu'il avait réalisée dans la version 5.8 du système Coq de mai à juillet 1993, dans le cadre d'un stage de maîtrise. Le développement a été porté dans la version 6.1 du système Coq et un programme Caml a été extrait de la preuve constructive du théorème de Kleene. Ce travail est décrit dans [51].
Eduardo Giménez a continué ses recherches autour de l'utilisation de types co-inductifs pour la modélisation de protocoles de communication et de processus concurrents. En particulier, il s'est attaqué au problème de vérifier l'algorithme d'exclusion mutuelle de Petersson et sa généralisation à un nombre arbitraire de processus.
La théorie des types utilisée dans Coq est constructive ce qui
permet à partir d'une preuve mathématique d'existence de pouvoir
effectivement calculer un objet. Cependant, il est parfois plus
adapté de raisonner de manière classique en utilisant un
raisonnement par l'absurde ou le principe de tiers exclu.
L'axiome du tiers exclu, dans toute sa généralité, est
incompatible avec d'autres principes du Calcul des Constructions
Inductives et rend le système incohérent. On peut transformer
chaque proposition que l'on veut démontrer de
manière classique en une propriété classiquement équivalente qui
pourra être montrée sans avoir recours au tiers exclu. C. Paulin
a proposé une méthode de définition de propriétés inductives
classiques, celles-ci s'obtiennent par l'ajout d'un constructeur
indiquant que la définition est équivalente à sa double négation.
On peut ainsi définir un ``type des propositions classiques'' qui
est l'ensemble des formules equivalentes à leur double négation.
En utilisant les coercions développées par A. Saïbi, ce type peut
être vu comme une nouvelle ``sorte '' des propositions classiques
ce qui permet des notations très concises tout en garantissant la
cohérence.
On sait aussi que pour une certaine classe de formule
( avec
sans quantificateur), la prouvabilité classique
implique la prouvabilité intuitionniste. Le mécanisme permettant
de transformer la preuve classique en preuve intuitioniste est
non trivial, cependant la méthode de représentation de formules
classiques précédemment décrite peut être adaptée de manière à
utiliser des techniques de
-traduction qui
permettent de développer une preuve effectivement intuitionniste
mais en suivant un raisonnement classique.
Résumé : Coq a acquis une communauté d'utilisateurs académiques et industriels. L'utilisation de cet environnement pour des preuves de grosse taille a posé des problèmes d'efficacité qui ont été partiellement résolus par l'adoption d'une technique de réduction des termes plus efficaces. L'utilisation de Coq à des fins de spécification de logiciel rend nécessaire une réflexion sur le langage de spécification afin de le rendre plus naturel et d'en donner une définition et une interprétation indépendante de l'implantation particulière de Coq utilisée. Un problème crucial est également l'automatisation des preuves. Des procédures de preuves par réécriture sont maintenant proposées. L'utilisateur doit pouvoir construire lui-même des tactiques sophistiquées adaptées à son problème. Ceci nécessite de donner accès aux fonctions élémentaires permettant la manipulation des termes ainsi qu'à des stratégies de preuves élémentaires. Une modification essentielle apportée au code cette année est la gestion des notations. Nous utilisions un système de grammaires extensibles ad-hoc qui a été réécrit à l'aide de l'outil camlp4 développé dans le projet Cristal.
Daniel de Rauglaudre du projet Cristal a réécrit la partie "analyse syntaxique" du système Coq, en utilisant Camlp4, un système de grammaires extensibles qu'il a développé. Il en résulte une meilleure compréhension de cette partie de Coq, une accélération de l'analyse syntaxique (6 à 7 fois plus rapide), et une amélioration de son interface en particulier par des messages d'erreur plus explicites. Bruno Barras a poursuivi cet effort et a restructuré également le système d'affichage. Celui-ci apparaît maintenant mieux comme le procédé inverse de l'analyse syntaxique.
Patrick Loiseleur a développé une grammaire spécifique pour les expressions arithmétiques permettant l'usage des notations infixes usuelles.
Deux stratégies ont été implantées:
David Delahaye, dans le cadre de son stage de DEA sous la
direction de Benjamin Werner (INRIA) et Roberto Di Cosmo (ENS) a
conçu et réalisé un outil de recherche dans une bibliothèque de
preuves Coq en utilisant le type comme motif et ``modulo
isomorphismes''. Il a ainsi développé une théorie pour Coq qui
est essentiellement une généralisation de l'axiomatisation pour
le -calcul typé associé aux Catégories
Cartésiennes Fermées (CCC) en prenant en compte le polymorphisme
et les types dépendants. De là, il a montré quelques propriétés
de base telles que la correction, l'incomplétude (par rapport au
calcul inductif des constructions), la décidabilité et a mis en
évidence la nécessité de propager les termes de conversion dans
les preuves d'isomorphismes (au niveau du passage au contexte).
Ainsi, son implémentation caractérise, dans un souci de
performances, le sous-ensemble congruent de cette théorie
permettant d'ignorer les convertisseurs. Elle est constituée de
deux outils. Le premier est interne à Coq et effectue la
recherche dans l'environnement courant. Le deuxième est
indépendant et importe, sous une forme allégée, toute la
bibliothèque de Coq.
La réécriture est le processus qui consiste à utiliser des équations comme des règles de transformation afin de simplifier des termes. Elle peut aussi être utilisée pour démontrer des égalités. Plusieurs difficultés rendent l'automatisation du raisonnement équationnel délicate:
Pour répondre à toutes ces exigences, A. Saïbi a adapté au système Coq le langage de conversions et de conversionals introduit par L. Paulson dans LCF, dans le même esprit que celui des tactiques et tacticals. Ce langage consiste en un package modulaire de fonctions ML pouvant être combinées de différentes manières, permettant ainsi à l'utilisateur de définir ses propres stratégies de réécriture (éventuellement très sophistiquées). Cette technique a été adoptée dans les systèmes HOL, Isabelle et Nuprl.
Eduardo Giménez a travaillé à la restructuration et la modularisation du code existant, notamment en ce qui concerne l'implantation des tactiques de démonstration de Coq. L'objectif était de rendre cette partie du code plus accessible à l'utilisateur, de manière à ce qu'il puisse implanter des procédures de démonstration adaptées à son application particulière. De nouveaux combinateurs de tactiques (``tacticals'') ont aussi été implantés, et devraient faciliter le développement de stratégies de démonstration dans le futur. Comme résultat de cette réorganisation, la taille du code et le nombre total de modules ont été sensiblement réduits. Le noyau du système a été isolé par rapport aux structures de données utilisées par la machinerie de l'éditeur de preuves.
Une boîte à outils contenant diverses fonctions d'utilité pour la manipulation de termes et l'implantation de tactiques est actuellement en construction.
Profitant des foncteurs de O'Caml, Hugo Herbelin a abstrait la structure de certaines des tables globales utilisées dans Coq. Cela a permis de comparer in situ l'efficacité de tables impératives (tables de hachage) et de tables fonctionnelles (arbres balancés). La question est d'importance pour se diriger vers un système auto-certifié correct : la preuve de certification est, a priori, plus simple pour les structures fonctionnelles que pour les structures impératives.
Les tables impératives pour lesquelles la suppression des effets de bord n'a pas entraîné de baisse de performance du système ont été rendues fonctionnelles. Certaines tables d'identificateurs, supposées accélérer le système, se sont avérées le ralentir. Elles ont été supprimées.
Mots-clés : Coq, Gallina
Gallina: Gallina est le sous-langage de Coq qui permet la
spécification des fonctions et de leurs propriétés
Hugo Herbelin s'est chargé de la réactualisation du manuel de référence et du tutorial de Coq V6.1. Il a en particulier remanié la présentation générale de la théorie. Il a mis en place une version HTML pour ce manuel et dirige actuellement les discussions autour de la définition formelle de Gallina qui doit servir de référence pour la spécification des fonctions et propriétés écrites en Coq.
Eduardo Giménez prépare un document décrivant comment implanter une nouvelle tactique dans Coq. Destiné à l'utilisateur, il devra remplacer l'actuel chapitre 13 du manuel.
Gilles Dowek et Benjamin Werner ont entrepris l'implémentation
de noyau d'un nouveau système de traitement de démonstrations,
permettant le traitement de démonstrations partielles, en
utilisant le formalisme développé par César Muñoz dans sa thèse
(cf ).
L'objectif est que ce système soit suffisamment simple et petit
pour pouvoir être spécifié et certifié, suivant la méthode
développée par Bruno Barras (cf
).
Participants : Jean-Christophe Filliâtre
Mots-clés : Validation de programmes, Logique de Hoare,
Réalisabilité, Théorie des Types
Coq offre un cadre puissant pour le développement de programmes purement fonctionnels certifiés corrects. Cependant, pour des raisons d'efficacité évidentes, il est également nécessaire de pouvoir raisonner sur des programmes impératifs, c'est-à-dire comprenant aussi des références, des tableaux ou des exceptions. L'idée est alors d'exprimer la sémantique du programme comme une expression purement fonctionnelle à laquelle on peut appliquer les techniques connues.
Dans le cadre de son travail de thèse, Jean-Christophe Filliâtre s'intéresse aux preuves de programmes mélangeant des traits impératifs et des traits fonctionnels (dans le but de prouver des programmes Caml, mais les résultats s'appliquent à la preuve de programmes purement impératifs, tels que des programmes C ou Pascal). Il a défini une traduction des programmes impératifs vers des programmes fonctionnels de même sémantique. Il devient ainsi possible de manipuler ces programmes dans le Calcul des Constructions en conservant leur caractère calculatoire. Une telle traduction s'inspire des travaux autour des monades (Wadler, Moggi) mais en raffinant cette notion : on détermine quels sont les effets de chaque sous-expression du programme afin d'en faire une traduction la plus proche possible du programme fonctionnel que l'on pourrait écrire à la main.
L'étape suivante consiste à comprendre comment spécifier des programmes impératifs et comment en construire des preuves d'une façon modulaire par rapport à leur structure. En ce qui concerne les programmes purement impératifs, la logique de Hoare constitue un cadre bien défini et abondamment étudié d'un point de vue théorique. Il s'avère en fait que la traduction fonctionnelle de programmes impératifs précédemment décrite associée à la technologie de preuve de programmes fonctionnels partiellement annotés développée par Catherine Parent donne les mêmes obligations de preuves que la logique de Hoare traditionnelle. Mais surtout, cette technique de preuve de programmes peut être facilement étendue aux principaux traits de programmation tels que les tableaux, les fonctions récursives et les exceptions, ce qui n'est pas le cas de la logique de Hoare traditionnelle. Ce rapport entre logique de Hoare et réalisabilité a fait l'objet d'un rapport de recherche [52].
Un autre avantage de cette méthodologie est qu'elle permet de parler dans un même langage (ici le Calcul des Constructions Inductives) d'un programme, de sa spécification, de sa formule de correction et de sa preuve de correction. En particulier, pour faire la preuve d'un programme, on pourra utiliser un autre principe de récurrence que celui basé sur la syntaxe. Jean-Christophe Filliâtre implante actuellement un module de preuve de programmes impératifs dans le système Coq.
Participante : Cristina Cornes
Mots-clés : types inductifs, analyse par cas,
récurrence
problème d'unification: équation où certaines variables de
et/ou de
peuvent dénoter des valeurs inconnues à
trouver.
problème de filtrage: problème d'unification
où
ne contient pas de
variable à résoudre.
Dans le but d'automatiser les preuves de terminaison de
fonctions récursives définies équationnellement, C. Cornes a
étudié la gestion des principes de récurrence et d'analyse par
cas dans une théorie des types avec types inductifs primitifs. À
partir de la méthode de synthèse de preuves proposée par Gilles
Dowek pour les Systèmes de Types du Cube, et celle
proposée par Hassan Saïdi pour le Système T de Gödel, C.
Cornes a proposé une méthode de synthèse de preuves pour le
Calcul des Constructions Inductives. Cette méthode est
complète et fournit un cadre général où définir des stratégies de
recherche de preuves. Malgré la complétude, cette méthode n'est
pas intéressante pour une implantation car elle ne termine pas.
C. Cornes a donc étudié des restrictions qui permettent de
résoudre une certaine classe de problèmes de filtrage et de
problèmes d'unification du second ordre dans .
Ce travail a permis d'incorporer au système Coq les
définitions de fonctions par filtrage de motifs, dans une syntaxe
proche de celle des langages de programmation à la ML.
L'implantation de la stratégie d'unification permettra à terme
d'ajouter au système Coq des heuristiques pour prouver la
terminaison des fonctions récursives définies par équations; en
particulier, elle permettra d'étendre la commande Recursive
Definition
proposée par Pascal Manoury dans le système
Coq.
F. Prost a étudié les caractéristiques à donner aux systèmes
de typages pour éviter de tels inconvénients. Il a développé une
analogie entre l'utilisation des types conjonctifs et le
polymorphisme à la ML. Il est en effet apparu que les
différents types attribués pour un même morceau de code se
conforment tous à un schéma précis et n'apparaissent que dans des
-redexes. Cette nouvelle approche
permet notamment de transformer des algorithmes compliqués de
type Data-Flow en un algorithme de typage semblable à
celui de Milner pour ML, puis en une substitution de variable de
marques par des marques. Cette réflexion est l'objet de [43]. F. Prost a, en collaboration
avec F. Damiani développé un autre angle d'approche basé sur
l'utilisation de types intersection (voir [30]).
Résumé : Le langage utilisé par Coq pour la spécification des problèmes et pour la représentation interne des preuves n'est pas figé. Au contraire, celui-ci évolue pour pouvoir intégrer des notations de haut niveau essentielles pour les spécifications comme par exemple les modules ou bien les définitions récursives de fonctions. Ces extensions nécessitent des travaux théoriques afin d'assurer la préservation des propriétés fondamentales de cohérence et décidabilité.
La lourdeur du formalisme est l'un des problèmes majeurs lors de la manipulation formelle de preuves. En particulier, il est très difficile de réaliser des bibliothèques de preuves qui soient à la fois utilisables et génériques. L'approche des systèmes de modules des langages de programmation à la SML semble de ce fait intéressante. Les avancées récentes en la matière, en particulier les travaux de Leroy, Harper et Lillibridge, permettaient d'envisager une adaptation de ces systèmes de modules aux langages de preuves. J. Courant s'est attaché à améliorer ces systèmes, de façon à ce qu'ils possèdent la propriété de préservation des types par le calcul (appelée propriété d'auto-réduction) sans perdre leur capacité d'abstraction. La propriété d'auto-réduction a permis d'étudier ces systèmes de modules sous l'angle des réductions. En particulier, J. Courant a montré que la réduction des modules était fortement normalisante et possédait la propriété de confluence. Le calcul ainsi obtenu s'adapte aux Systèmes de Types Purs (PTS). En particulier, il fournit une extension conservative du Calcul des Constructions, qui devrait permettre de mieux modulariser les développements Coq, ainsi que la vérification séparée des différents modules les composant. Les deux aspects -- preuve et programmation -- de ce travail ont notamment fait l'objet de deux communications [27,28].
Calcul avec substitutions explicites: Calcul dans
lequel l'opération de substitution fait partie du langage
formel.
Preuves partielles: Preuve contenant des parties restant à
construire.
Métavariables: Expression du -calcul
permettant de nommer un trou dans un terme.
Afin de voir la construction de preuves comme un processus
incrémental de construction de termes, il est nécessaire
d'étendre le -calcul avec de nouvelles
constructions. On considère, d'une part, des métavariables typées
pour représenter les parties d'une preuve restant à construire,
et, d'autre part, on rend explicite l'opération de substitution
afin de gérer les problèmes de capture de variables liées dans un
terme contenant des métavariables.
Malheureusement, la théorie des calculs avec substitutions
explicites et métavariables typées est plus
complexe que celle du -calcul. Et, plus
grave encore, en général elle ne jouit pas des mêmes
propriétés.
C. Muñoz propose un calcul avec substitutions explicites et métavariables typées pour les systèmes avec types dépendants, et notamment pour le calcul des constructions, permettant de représenter les preuves partielles. Il démontre que ces systèmes vérifient les propriétés essentielles des calculs typés : l'unicité du type, la préservation du type par réduction, la confluence, la normalisation faible et la décidabilité du typage.
Il donne enfin une application de ce formalisme à la synthèse de preuves dans le calcul des constructions. La méthode présentée combine une procédure d'énumération des termes avec une technique d'unification d'ordre supérieur à l'aide de substitutions explicites où les variables d'unification sont codées comme des métavariables. ce travail est décrit dans sa thèse [20].
Les travaux des années précédentes sur une interprétation à la
Curry-Howard de la logique modale S4 intuitionniste [GL96a,GL96b,GL96c], utilisant une tour de
-calculs avec substitutions
explicites et donnant une explication mathématiquement élégante
de mécanismes d'évaluation et de citation à la Lisp, se sont
poursuivis cette année par un rapport [53] prouvant les dernières
propriétés intéressantes des calculs des rapports précédents:
terminaison faible dans le cas typé, et confluence du calcul avec
la règle
-modale. L'extension à la logique
modale S4 classique est en cours.
Une retombée de ce travail est la preuve de terminaison faible
de ces calculs dans le cas simplement typé, qui s'adapte aux cas
plus simples des -calculs avec
substitutions explicites [35].
Ce travail a conduit à l'examen des traductions connues de la
logique intuitionniste en S4, ce qui devrait fournir a priori de
nouveaux calculs par réécriture implémentant le -calcul. Le plus prometteur provient des calculs
ci-dessus, par un examen de la sémantique de Kripke comparée des
deux logiques, et fournit apparemment un calcul du premier ordre
ayant toutes les propriétés du
-calcul:
confluence, standardisation, existence d'étiquetages gardant
trace des rédex à travers les réductions (à la Lévy),
normalisation forte dans le cas simplement typé, caractérisation
des termes fortement normalisants (resp. normalisants, resp.
résolubles) comme étant les termes typables dans certains
systèmes de types conjonctifs ...mais il n'implémente pas le
-calcul. On peut en fait montrer
qu'il implémente un calcul strictement compris entre le
-calcul par valeur de Plotkin et le
-calcul complet (par nom). Pour
implémenter le
-calcul complet, il suffit de
passer par une traduction supplémentaire du
-calcul complet vers le
-calcul
par valeur, ce qui peut se faire de nombreuses façons
différentes. Il reste à examiner si ce calcul est intéressant, ou
utilisable pour implémenter une machine à réduction pour le noyau
d'un prouveur comme Coq.
Il suffirait aussi pour que ce calcul implémente le
-calcul complet de lui ajouter une
règle, et on obtient alors un calcul proposé par Healfdene Goguen
à TYPES'96 en décembre 1996; malheureusement, ce dernier ne
termine pas même dans le cas typé, et même sans faire de
-contraction (contre-exemple communiqué
à H. Goguen en juillet 1997).
Plus précisément, il a vérifié que les univers de Coq étaient équivalents à l'existence des cardinaux inaccessibles dans ZF. Ces travaux sont exposés dans [46].
Benjamin Werner a également proposé une nouvelle formulation de l'axiome du choix dans CCI. Il a montré que cette formulation était suffisante pour vérifier l'axiome du choix ensembliste dans le codage de ZF. Il a également montré que cet axiome permettait de dériver la loi du tiers-exclu dans Coq, proposant ainsi une transcription en théorie des types du paradoxe de Diaconescu [58].
Toujours dans le but de simplifier la formulation de la théorie de base de Coq, E. Giménez a continué à travailler sur une extension de cette théorie par des types inductifs et co-inductifs. Cette extension intègre le calcul proposé dans sa thèse et les règles de typage des définitions récursives proposées par Mendler pour le système Nuprl. Un article sur ce sujet est en préparation.
Participant : Gilles Dowek
Gilles Dowek a achevé la rédaction d'un article consacré à la reformulation du Calcul des constructions dans un cadre non typé, cet article a été publié dans les actes du symposium Types [34].
Participants : Gilles Dowek , Thérèse Hardin , Claude
Kirchner
Mots-clés : élimination des coupures, réécriture,
résolution d'ordre supérieur
Gilles Dowek, Thérèse Hardin (de l'Université Pierre et Marie Curie (Paris 6) et du projet Para) et Claude Kirchner (du projet Protheo) ont poursuivi leur collaboration consacrée à l'application à la logique d'ordre supérieur de techniques de preuves de logique du premier ordre.
Gilles Dowek a proposé une notion de coupure associée aux axiomes de la présentation au premier ordre de la logique d'ordre supérieur et a adapté la démonstration du théorème d'élimination des coupures dans ce cadre. Ces travaux ont été publiés dans les actes de la conférence Theorem proving in higher order logics [33].
Gilles Dowek, Thérèse Hardin et Claude Kirchner ont entrepris la rédaction d'un article consacré à la recherche de démonstrations modulo un système de réécriture transformant des propositions atomiques en des propositions quelconques.
Pour un -calcul typé, la propriété de
normalisation forte correspond à la terminaison des calculs;
c'est aussi la partie logiquement la plus complexe de la preuve
de cohérence du formalisme logique correspondant. En
collaboration avec Paul-André Melliès, de l'université
d'Edinburgh, Benjamin Werner a proposé une nouvelle technique de
preuve [40], qui
permet de prouver cette propriété syntaxique en s'appuyant sur la
construction d'un modèle. On illustre mieux ainsi les liens entre
syntaxe et sémantique.
Participant : Gérard Huet
Les ``zippers'' sont des structures de données applicatives permettant la représentation de structures mutables, avec accès et mutation en temps constant. Il y a une manière uniforme de transformer la signature d'une algèbre libre en l'algèbre de ``zippers'' correspondante. Ce travail peut servir de base à la conception d'un éditeur structuré de structures arborescentes, l'espace de navigation et d'édition étant le zipper approprié.
Ce travail, présenté l'an dernier à FLoC'96, a été accepté pour publication cette année [21].
Participants : Gérard Huet , Henri Laulhère
Les arbres de Böhm, formes normales à l'infini des -termes, peuvent être présentés par des systèmes
récursifs de combinateurs. Un tel système fini présente un arbre
de Böhm rationnel, au sens d'avoir un nombre fini de sous-arbres
distincts. L'égalité extensionnelle de ces arbres (ou égalité
dans le modèle
)est décidable par un
algorithme de mémorisation d'équivalences rationnelles. Ce
travail a fait l'objet d'un article accepté dans Math. Struct. in
Comp. Science [22].
Les arbres de Böhm rationnels permettent de représenter des algorithmes réactifs sur des structures de données co-inductives. En particulier, on peut y coder les primitives du langage de programmation réactif Lustre. Henri Laulhère investigue cette traduction, ainsi que les problèmes algorithmiques liés à l'implémentaion efficace de l'algorithme de décision, dans le cadre de sa thèse. Un premier résultat, montrant comment représenter les transducteurs rationnels fidèlement dans les arbres de Böhm rationnels, a fait l'objet d'une conférence invitée au congrès TACS'97 à Sendai (Japon) [39].
Les arbres de Böhm rationnels sont la structure fonctionnelle correspondant aux transducteurs finis. Il reste à comprendre quels sont les formalismes fonctionnels à mettre en correspondance avec d'autre types d'automates. En particulier, il faut comprendre comment les problèmes de décidabilité de chacune des approches se correspondent. Henri Laulhère explore des extensions du formalisme pour définir des arbres de Böhm algébriques.