Oracle de vérité en Lisp : une histoire curieuse sur la théorie des types, l'isomorphisme de Curry-Howard et call/cc

2025-06-14

Cet article tente d'écrire un « oracle de vérité » en Lisp, un programme qui détermine la vérité ou la fausseté d'énoncés mathématiques arbitraires. L'auteur introduit l'isomorphisme de Curry-Howard, expliquant comment les preuves logiques correspondent aux expressions en programmation fonctionnelle typée. En utilisant la fonction call/cc de Racket (isomorphe à la loi de Peirce), une tentative est faite pour implémenter un programme isomorphe à la loi du tiers exclu. De manière inattendue, l'oracle renvoie toujours faux jusqu'à ce qu'il tente d'accéder à une valeur de type impossible, révélant les différences entre la logique classique et la logique constructive, et le mécanisme de flux de contrôle non standard de call/cc. Enfin, l'auteur utilise une métaphore d'un « pacte avec le diable » pour expliquer ce comportement étrange, mettant en lumière le mécanisme semblable à un voyage dans le temps derrière call/cc.

Lire plus
Développement théorie des types