Sites Inria

Equipe de recherche PI.R2

Conception, étude et implémentation de langages pour les preuves et les programmes

Présentation de l'équipe

L'équipe π r² constituée au sein du laboratoire Preuves, Programmes et Systèmes (UMR 7126), couvre trois champs de recherche :
  • Un champ de recherche fondamentale autour de la correspondance entre preuves et programmes
  • Un champ de recherche théorique autour du formalisme sur lequel repose l'environnement de développement de preuves et de programmes Coq
  • Un champ implémentatoire avec le développement du logiciel Coq, notamment dans ses aspects langage de programmation à types « riches »

Axes de recherche

  • Fertilisation croisée entre la théorie de la démonstration et la théorie des programmes La correspondance syntaxique entre preuves et programmes, dite correspondance de Curry-Howard a été au cours des 30 dernières années un formidable moteur de la recherche tant pour la logique (la plupart des axiomes logiques sont calculatoires : par exemple, la preuve d'un énoncé existentiel est un procédé de calcul qui ultimement exhibe un témoin de cette existence) que pour la programmation (les types de données sont des formules spécifiant les propriétés des programmes et ces types peuvent être des formules arbitrairement complexes). Dans les 15 dernières années, de nouvelles étapes ont été franchies (mise en évidence d'une connexion entre raisonnement par l'absurde et opérateurs de contrôle, entre le formalisme logique dit « du calcul des séquents » et les structures des machines d'évaluation abstraites, rôle des effets de bord dans l'interprétation calculatoire de l'axiome du choix, ...). L'un des objectifs de π r² est alors d'explorer les conséquences et fondements de ces dernières avancées, notamment en étudiant le contenu logique des délimiteurs de continuations issus de la programmation fonctionnelle, et en étudiant les relations entre les mécanismes de réflexion/réification en programmation et de correction/complétude en logique.
  • Étude du Calcul des Constructions Inductives et de la théorie des types dans leurs aspects « langage de programmation » Le Calcul des Constructions Inductives est le nom du formalisme logique sur lequel repose Coq. Ce formalisme, qui dérive de la théorie des types de Martin-Löf, est à la fois un formalisme logique expressif (comparable en force à la théorie des ensembles) et un langage de programmation fonctionnelle fortement typé (type de formalisme que l'on range dans la famille des « théories des types »). Le Calcul des Constructions Inductives est un formalisme relativement jeune au sujet duquel plusieurs questions restent ouvertes. L'un des objectifs de π r² est d'explorer quelques unes de ces questions, certaines étant d'un abord assez technique : traitement plus primitif des contraintes dites d'« inversion » lors des constructions par cas avec application au typage de la programmation par filtrage en présence de types « riches », prise en compte d'une forme syntaxique d'extensionnalité des fonctions (« éta-conversion ») avec applications à la conception d'algorithmes d'unification et d'inférence de type en présence de types riches.
  • Développement du logiciel Coq, notamment dans ses aspects langage de programmation Le logiciel Coq est un outil de développement semi-interactif de preuves dans une logique expressive bâtie autour d'un langage de programmation fonctionnelle fortement typé. Développé conjointement par plusieurs équipes INRIA et hors INRIA, Coq est utilisé tant pour la formalisation des mathématiques que pour la certification de propriétés de programmes. Naturellemment doté de types « dépendants », Coq a une carte à jouer comme langage de programmation à type « riches ». Un des objectifs de π r² dans ce cadre est le développement de bibliothèques de programmation certifiés, la certification du processus d'« extraction « de programme Coq vers des langages fonctionnels comme Objective Caml, ainsi que le développement de nouvelles méthodes de preuves (des « tactiques ») pour Coq. L'équipe π r² développe aussi Pangolin qui est un outil spécifique de certification de programmes fonctionnels.
Logiciels

Relations industrielles et internationales

  • ANR Déduction et Certification (DeCert)
    • Action de Développement Technologique Coq (ADT Coq)

    Mots-clés : Environnement de développement de preuves Correspondance preuves/programmes Langages à types dépendants