Mots clés : formalisation,
mathématiques .
Le but de ce thème est d'étudier comment des théories
mathématiques où interviennent de nombreux types d'objets
peuvent être représentées dans le calcul des constructions
inductives (CCI en abrégé), de faÇon à être aussi lisibles et
utilisables que possible par quelqu'un qui en a une
connaissance scolaire ou académique.
Ce thème est très lié aux autres, en ce sens qu'il doit
fournir des fondements sémantiques aux objets des
environnements de preuves, et des bibliothèques d'objets,
lemmes et théorèmes de base pour alléger le travail de preuve
des algorithmes mathématiques, dont la preuve nécessite
souvent de connaître et de manipuler de larges pans des
mathématiques classiques.
Le CCI est assez puissant pour formaliser des
mathématiques complexes : structures algébriques avec leurs
dépendances et leurs opérations (comme le système de calcul
formel Axiom l'a fait), mais aussi, et surtout puisqu'on veut
faire des démonstrations, toutes leurs propriétés logiques,
ce qui reste très marginal dans les systèmes de calcul
scientifique. Le CCI permet aussi d'écrire des algorithmes,
sous forme de programmes fonctionnels récursifs, avec des
structures de données riches. Enfin, avec l'isomorphisme de
Curry-Howard, le CCI est un langage de manipulation des
preuves mathématiques. Mais ce langage est difficile d'accès,
un peu comme un assembleur, bien que sa concision et sa
puissance le rendent très élégant pour l'initié.
Le système Coq, les interfaces CtCoq et Pcoq offrent des
outils qui permettent souvent une formalisation satisfaisante
: les ``record'', les coercions, le
pretty-printer PPML, la syntaxe extensible de Coq par
exemple. Mais de nombreux problèmes restent à résoudre :
héritage multiple, complexité de l'empilement des coercions
et du typage entre structures algébriques, manipulation
difficile des types dépendants dans les preuves et les
constructions d'objets, absence de sous-typage et de quotient
dans le CCI.