Cette correspondance a pris le nom d’isomorphisme de Curry-Howard. En effet, cette id´ee g´en´erale
(«programme = preuve ») s’est ´elabor´ee au fil de l’observations d’abord par Curry 2(en 1934 et 1958)
puis par Howard (en 1969) de la correspondance entre des syst`emes de preuves et des m´ecanismes de
calcul.
L’id´ee g´en´erale est qu’une fonction de type S→Test une fonction qui prend une preuve de Set produit
une preuve de T. Tous les autres constructeurs logiques s’expriment de la mˆeme fa¸con.
Assistants de preuve La poursuite de cette analogie «programme = preuve »a aboutit `a la mise
de points de langages de programmations sp´ecifiques, d´edi´es non pas `a la construction de programmes,
mais `a la construction de preuves math´ematiques (coq, d´evelopp´e `a l’INRIA, est l’un d’entre eux). L’id´ee
g´en´erale est que pour prouver un th´eor`eme ϕ, il suffit d’´ecrire dans ces langages un programme dont le
type correspond `a ϕ.
Ensuite, un type-checker v´erifie que votre programme a bien le type annonc´e. Si c’est oui, f´elicitation :
vous avez d´emontr´e ϕ. Si c’est non : votre «preuve »est fausse, et vous devez la r´eparer.
Ces programmes de v´erification des types sont des assistants de preuve. Leur nom est tr`es mal choisis
parce que la plupart du temps ils vous empˆechent de faire votre preuve en vous faisant remarquer tel ou
tel d´efaut. Mais ils vous aident `a faire des preuves correctes.
Du coup, on pourrait se demander laquelle des deux `a le plus de chances d’ˆetre «correcte »: une preuve
´ecrite en fran¸cais 3et approuv´ee par un petit comit´e d’experts de la bonne branche des math´ematiques ?
Ou bien une preuve ´ecrite dans un langage de programmation et v´erifi´ee par un algorithme sans ´etat
d’ˆame ?
En 2016, les assistants de preuve restent des outils difficiles `a utiliser. Formaliser dedans des math´ema-
tiques mˆeme peu sophistiqu´ees, par exemple le programme de Licence, pose des probl`emes et n´ecessite
un gros effort. D´emontrer n’importe quoi dedans n´ecessite une formation de plusieurs mois. En plus, la
quantit´e de travail humain n´ecessaire pour faire accepter une preuve `a un assistant de preuve est consi-
d´erablement plus ´elev´ee que celle qui est n´ecessaire pour faire accepter une preuve du mˆeme th´eor`eme `a
un comit´e de math´ematiciens.
Malgr´e tout, en 2005, une ´equipe de recherche a r´eussi un exploit : ils ont r´ealis´e une preuve compl`ete
du th´eor`eme des 4 couleurs dans un assistant de preuve. Ceci laisse finalement peu de doutes quand `a la
validit´e du th´eor`eme.
Quelle est la diff´erence avec la preuve de d´epart ? La preuve de d´epart consistait `a ex´ecuter un programme
ad hoc, et `a accepter l’id´ee que si ce programme renvoie «OK », alors le th´eor`eme est vrai. Le programme
est assez compliqu´e (´ecrit `a la main, en assembleur, manipule des graphes, des centaines de cas, etc.). Le
probl`eme c’´etait qu’il ´etait difficile de v´erifier si le programme est correct.
Dans un assistant de preuve moderne, la partie critique est le type-checker, mais c’est un programme plus
simple, et plus court. De m´emoire, celui de coq fait 3000 lignes de OCaml. En plus, il n’est pas sp´ecialis´e
pour chaque th´eor`eme : on peut le v´erifier une fois pour toute, et apr`es s’en servir pour d´emontrer tout
et n’importe quoi. En plus, le fait qu’il soit g´en´erique et qu’il serve beaucoup augmente la probabilit´e
qu’on trouve les bugs qu’il pourrait contenir.
On peut donc dire que le d´eveloppement de l’informatique a bouscul´e la notion de «v´erit´e math´ematique »
de deux fa¸cons. D’une part en posant le probl`eme des preuves g´en´er´ees par ordinateur, et non-v´erifiables
`a la main. D’autre part, avec les syst`emes de v´erification de preuves, on peut se demander si une «vraie »
preuve, ce n’est pas plutˆot celle qui est v´erifi´ee par ordinateur.
Mais avant de rentrer dans les d´etails, il faut «r´eviser »les bases.
1 Logique propositionnelle
Vous ˆetes familier avec la logique propositionnelle, c’est-`a-dire o`u les variables sont bool´eennes (les seules
valeurs possibles sont “vrai” ou “faux”). Le fameux probl`eme SAT que vous avez sˆurement ´etudi´e consiste
`a d´eterminer, ´etant donn´e un formule de la logique propositionnelle, une valuation qui la satisfait. Les
SAT-solver sont des programmes efficaces, optimis´es depuis des d´ecennies pour r´esoudre ce probl`eme.
2. Haskell Curry. Oui, oui.
3. Avec les formules habituelles : «les autres cas se traitent de la mˆeme fa¸con »,«il est ´evident que ... »,«Le soin de
v´erifier ces d´etails est laiss´e au lecteur », etc.
2