PATRICK B ELLOT É COLE N ATIONALE S UPÉRIEURE DES T ÉLÉCOMMUNICATIONS relu et corrigé par A KIM D EMAILLE É COLE POUR L’I NFORMATIQUE ET LES T ECHNIQUES AVANCÉES 2 Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 3 L ICENCE DES DROITS D ’ USAGE DE CE DOCUMENT Par le téléchargement ou la consultation de ce document, l’utilisateur accepte la licence d’utilisation qui y est attachée, telle que détaillée dans les dispositions suivantes, et s’engage à la respecter intégralement. La licence confère à l’utilisateur un droit d’usage sur le document consulté ou téléchargé, totalement ou en partie, dans les conditions définies ci-après, et à l’exclusion de toute utilisation commerciale. Le droit d’usage défini par la licence autorise un usage dans un cadre académique, par un utilisateur donnant des cours dans un établissement d’enseignement secondaire ou supérieur et à l’exclusion expresse des formations commerciales et notamment de formation continue. Ce droit comprend : – le droit de reproduire tout ou partie du document sur support informatique ou papier, – le droit de diffuser tout ou partie du document à destination des élèves ou étudiants. Aucune modification du document dans son contenu, sa forme ou sa présentation n’est autorisé. Les mentions relatives à la source du document et/ou à son auteur doivent être conservées dans leur intégralité. Le droit d’usage défini par la licence est personnel, non exclusif et non transmissible. Tout autre usage que ceux prévus par la licence est soumis à autorisation préalable et expresse de l’auteur : [email protected]. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 4 Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 5 Liste des chapitres Chapitre I I NTRODUCTION À LA LOGIQUE . . . . . . . . . . . . Chapitre II F ORMALISMES LOGIQUES . . . . . . . . . . . . . . . 25 Chapitre III É LIMINATION DES COUPURES . . . . . . . . . . . . . 57 Chapitre IV T HÉORIE DES TYPES . . . . . . . . . . . . . . . . . . 67 Chapitre V L’ ISOMORPHISME DE C URRY-H OWARD . . . . . . . 87 Chapitre VI R ÉALISABILITÉ . . . . . . . . . . . . . . . . . . . . . 101 Chapitre VII L E SYSTÈME AF2 . . . . . . . . . . . . . . . . . . . . 117 Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 7 6 Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 7 I I NTRODUCTION À LA LOGIQUE Citons LOGIQUE ET INFORMATIQUE, UNE INTRODUCTION B. Courcelle ed. INRIA, Collection Didactique 1991 et LOGIC : FORM AND FUNCTIONS J.A. Robinson Edinburgh University Press, Edinburgh, Écosse 1979 La logique est la théorie qui tente de mathématiser le raisonnement, c’est-à-dire d’en faire un objet mathématique comme un autre sur lequel on puisse démontrer des théorèmes. Elle s’occupe principalement du raisonnement mathématique, beaucoup plus que du raisonnement courant qui est plus difficilement appréhendable. En ce sens, la logique fait partie des méta-mathématiques, i.e. des mathématiques à propos des mathématiques. Jusqu’à l’apparition des ordinateurs et de l’informatique, elle était fort peu utile car les mathématiciens non-logiciens font peu de cas de l’étude du raisonnement. Lorsqu’au début du siècle, Bertrand Russel commença à découvrir le Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 8 CHAPITRE I. INTRODUCTION À LA LOGIQUE paradoxe qui porte son nom, Henri Poincaré déclara en 1906 : ... La logique n’est plus stérile ! Elle engendre des contradictions ... Cela en dit long sur certaines mentalités. Pourtant, mathématiser le raisonnement permet d’en discuter et de se convaincre sur des bases posées par la logique. Encore faut-il que ces bases soient admises par tous ! 1 La logique est déclarative Comme nous venons de le dire, la logique étudie les raisonnements qui sont composés de déductions faites sur des propositions. Comme le remarque le professeur André Chauvin, logicien français spécialisé dans l’étude du calculable, on distingue trois usages des propositions : – l’usage déclaratif : la proposition est appelée déclaration ou assertion ; – l’usage interrogatif : la proposition est appelée question ; – l’usage impératif : la proposition est appelée instruction ou commandement. Même si l’informatique nous a appris la nécessité de ces trois usages, la logique classique s’est attachée à l’usage déclaratif des propositions. Les raisons sur lesquelles nous reviendrons peuvent être explicitées comme suit. Tout d’abord, les mathématiques assimilent implicitement les objets de leur discours à des êtres matériels tous présents. Nous n’avons pas à les créer mais seulement à les découvrir. André Chauvin cite l’exemple des nombres réels et du sous-ensemble des nombres transcendants 1 . Les mathématiques les considèrent comme présents. De sorte qu’une question telle que La constante C d’Euler 2 est-elle un nombre transcendant ? possède une réponse même si nous le la connaissons pas aujourd’hui. Toute question possède une réponse, à nous de la découvrir. On peut se passer des questions au bénéfice des déclarations dont on démontre la vérité ou la fausseté. De même, on peut se passer des commandements puisque les mathématiques travaillent dans un univers pré-existant. 1. Un nombre est transcendant si et seulement si il n’est racine d’aucun polynôme à coefficients rationnels. 2. C = lim 1 + 21 + 13 + · · · + n1 − ln n n→∞ Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 2 Les schémas hilbertiens des propositions 9 Le point de vue qui vient d’être expliqué régnera sans partage sur la logique théorique : toute proposition se ramène à une déclaration. Si questions et commandements figurent dans les traités de logique, ils sont exprimés dans la langue naturelle et non dans le langage de la logique. Cette logique déclarative est appelée logique de Hilbert qui en a donné une définition axiomatique rigoureuse et élégante. 2 Les schémas hilbertiens des propositions Les propositions logiques sont des déclarations à propos d’objets. Quand ces objets ne sont pas spécifiés, on peut les représenter par des variables libres. Une variable libres est une lettre représentant un objet non spécifié dans un contexte et il s’agit du même objet quelle que soit l’occurrence de la variable libre. Lorsque nous ne voulons pas spécifier la proposition, nous utilisons des symboles tels que P (x) ou Q(x, y). P (x) désigne une proposition parlant d’un objet x tandis que Q(x, y) désigne une proposition parlant de deux objets x et y. Ce type d’écriture est appelé un schéma de proposition. Les lettres P ou Q sont appelés des lettres de proposition ou des propositionlettre. H.B. Curry les appelle des prédicateurs. Hilbert propose de continuer en prenant une proposition précise R0 (x, y). R0 (x, y) peut être par exemple l’égalité x = y. Pour deux objets x0 et y0 spécifiés, R0 (x0 , y0 ) est vraie ou fausse (principe du tiers-exclu). On peut choisir de lui associer un symbole v si la proposition est vraie et un symbole f si la proposition est fausse. On peut donc considérer R0 comme une fonction à deux arguments et à valeur dans {v, f }. On voit immédiatement l’analogie entre le prédicat vu par Hilbert et la fonction caractéristique d’une ensemble, celui des couples (x0 , y0 ) tel que R0 (x0 , y0 ) est vrai. Mais..., et c’est très important, la logique est antérieure à la théorie des ensembles qui la suppose connue pour formaliser ses axiomes. Aussi les prédicats sont des fonctions «plus générales» que les fonctions ensemblistes définie par des graphes, elles ont le même caractères que les fonctions processus définies par exemple avec les combinateurs. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 10 3 CHAPITRE I. INTRODUCTION À LA LOGIQUE Naissance de la logique mathématique On peut faire remonter les premiers pas de la logique à Aristote puisqu’on lui doit le syllogisme « Tous les hommes sont mortels, les Athéniens sont des hommes, donc ils sont mortels ». C’est peut-être la première mise en évidence d’une règle de déduction formelle : « tous les B sont des C, les A sont des B, donc tous les A sont des C ». Au 17ème siècle, Gottfried Leibniz, alors plus philosophe que mathématicien, proposait la recherche d’une Characteristica Universalis, i.e. une langue à vocation universelle qui permettrait une vision particulièrement claire de la vérité des propositions, et celle d’un Calculus Ratiocinator, méthode de manipulation des propositions qui permettrait de déterminer leurs vérités. Le logicien J.A. Robinson ne fait-il pas remarquer que ce qui a rendu célèbre Isaac Newton n’est pas tant les faits qu’il découvre concernant la gravitation ou l’optique mais bien plus le formalisme qu’il a créé pour les étudier avec principalement les calculs différentiel et intégral ? Ce que recherche Leibniz n’est rien moins que la même chose pour le raisonnement. La création d’un formalisme logique du raisonnement était selon le philosophe Thomas Hobbes l’objet même de la logique. Il publie en 1655 un traité, De Corpore, où il avance que la raisonnement n’est rien d’autre qu’un calcul comme un autre. L’histoire raconte que Hobbes fut séduit par la logique du raisonnement de la démonstration du théorème de Pythagore dans les Éléments d’Euclide, démonstration qu’il lut à rebours découvrant les propositions utilisées par celle-ci, puis les propositions utilisées pour démontrer les premières propositions et ainsi de suite... jusqu’à atteindre les axiomes. Il fut tellement séduit par la rigueur et l’infaillibilité du discours mathématiques qu’il passa le reste de sa vie à rechercher une sorte d’alchimie du raisonnement permettant de combiner des concepts vrais en nouveaux concepts vrais. Dans Computatio Sive Logica, il écrivait qu’il ne fallait pas penser que le calcul se faisait uniquement avec des nombres. G. Leibniz qui n’avait que 8 ans quand Hobbes formula ses idées commença à travailler les concepts de Hobbes en 1666 à l’âge de 19 ans. Dans son De Arte Combinatoria, il rend grâce à Hobbes de lui avoir insufflé l’idée d’un système de calcul pour le raisonnement. Il tenta de développer ce type de calcul en représentant les concepts par des nombres. La période moderne, i.e. non plus seulement philosophique, de la loPatrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 4 Naissance de la logique formelle 11 gique commence probablement avec Gottlob Frege quand il publia en 1879 le Begriffsschrift, i.e. Écriture de concepts. Il y définit une syntaxe graphique pour représenter les notions logiques d’implication, de négation,... clamant que la représentation textuelle, que nous connaissons bien, n’était pas la plus confortable. On lui doit les quantificateurs universel (∀) et existentiel (∃) et le symbole d’assertion (`). 4 Naissance de la logique formelle C’est à Bertrand Russel et Alfred Whitehead que l’on doit la forme moderne de la logique mathématique. Dans les Principia Mathemtica en 1910, ils donnent le cadre formalisé de développement dont la logique mathématique n’est pratiquement pas sortie : un langage rigoureux définissant des expressions appelées formules et des règles formelles de manipulations des expressions de ce langage. Dans ces règles, on trouve des axiomes disant que certaines formules sont vraies et l’on trouve des règles de déduction affirmant la véracité d’une certaine formule, la conclusion, pourvu que certaines autres formules, les hypothèses, soient vraies. Ces règles sont formelles, ce qui signifie qu’elles sont basées sur la forme des formules concernées et non sur leur sens. D’un point de vue informatique cela est intéressant puisque les ordinateurs sont eux-aussi des machines formelles. On répertorie plusieurs façons de présenter un système logique : déduction naturelle, systèmes hilbertien et calcul des séquents. Celles-ci seront abordées plus loin. 5 La fin d’un rêve Le rêve de ce début de 20ème siècle était de faire de la logique un calcul et donc de mécaniser le raisonnement, puis par suite toutes les mathématiques et puisque toutes les sciences sont plus ou moins basées sur les mathématiques, on aurait fini par mécaniser toutes les sciences... C’était le rêve de David Hilbert et l’objectif du trop fameux Programme de Hilbert, témoin d’une époque scientifiquement conquérante et positiviste. D. Hilbert ne déclarait-il pas lors d’un colloque à l’université de Königsberg en 1930 : ... Nous devons savoir, nous saurons ... Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 12 CHAPITRE I. INTRODUCTION À LA LOGIQUE Las, deux jours auparavant, dans le même lieu mais dans le cadre d’un autre colloque scientifique, Kurt Gödel avait présenté son résultat d’incomplétude selon lequel il n’était pas possible d’axiomatiser formellement, et surtout récursivement, les vérités de l’arithmétique. Le rêve de la mécanisation des mathématiques avait pris l’eau abîmé par deux icebergs : – celui de la complétude : on ne peut pas axiomatiser convenablement toutes les vérités d’un système mathématique dès lors que celui-ci intègre la simple arithmétique des entiers naturels ; – celui de la décidabilité : il n’existe par de procédure automatisable permettant de savoir dans le cas général si un énoncé est vrai ou pas. 6 L’hérésie intuitionniste Toujours en ce début de siècle, et peut-être par réaction au courant positiviste des sciences, est née une école mathématique et logique entraînée par Luitzen Brouwer et connue sous le nom d’école intuitionniste. Les intuitionnistes ont créé une logique, la logique intuitionniste, qui est celle qui intéresse les informaticiens. Les intuitionnistes remarquent tout d’abord que la logique classique, classique par opposition à la logique intuitionniste, ne construit pas les vérités qu’elle démontre, elle les découvre. Elle pré-suppose que les choses sont soit vraies, soit fausses. Les mathématiques se placent dans un univers platonicien. Cela se traduit par l’axiome du tiers-exclu : A ∨ ¬A (tertium non datur) Cet axiome dont le sens littéral est qu’étant donnée une proposition, celleci est vraie ou bien sa négation est vraie. Il justifie de nombreux raisonnements comme le raisonnement par l’absurde, reductio ad absurdum : pour prouver A, je suppose ¬A, j’en déduis une contradiction et donc A est vraie. Mais présupposer que toute chose est soit vraie soit fausse est une croyance philosophique, voire théologique comme le soutient le grand logicien Haskell Curry. Peut-on raisonnablement construire les mathématiques sur une base théologique ? Un autre aspect de la logique classique inconvenant pour le logicien intuitionniste est le fait que l’on peut montrer classiquement l’existence de quelque chose vérifiant une propriété, une formule du type ∃x · A(x), sans Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 6 L’hérésie intuitionniste 13 être pour autant capable d’exhiber le x en question. Clairement, la logique classique n’est pas constructive car elle ne construit pas ce dont elle prétend l’existence. Les livres mathématiques sont pleins de démonstrations de la rationalité de certains nombres sans pour autant être capable d’exhiber les deux membres de la fraction. Exemple. Démontrons qu’il existe des nombres réels irrationnels et posi√ √2 √ b tifs a et b tels que a soit rationnel. On considère 2 sachant que 2 est irrationnel√: √ 2 √ – si 2√ est rationnel, on choisit a = b = √2 ; √ 2 √ 2 √ – si 2 est irrationnel, on choisit a = 2 et b = 2 car ab = 2. La rédaction formelle et rigoureuse de la démonstration oblige à écrire à un √ moment ou à un autre que l’on a A ∨ ¬A avec A étant la proposition √ 2 « 2 est rationnel ». Exemple. Soit le nombre σ construit comme suit : j’écris le développement du nombre π en base 10. En dessous de chaque chiffre du développement de π, j’écris le chiffre 3 et je ne m’arrête que si je trouve la séquence de chiffres 0 1 2 3 4 5 6 7 8 9 dans le développement décimal de π. Deux cas peuvent se présenter : – il existe une séquence 0 1 2 3 4 5 6 7 8 9 dans le développement décimal de π, le nombre σ sera donc 0.33....3 où k, le nombre de chiffres 3, est égal au rang du chiffre 9 de la séquence dans le développement k −1 décimal de π ; alors σ = 10 ; 3.10k – soit une telle séquence n’existe pas et σ est égal à 0.33333.... soit 13 . Dans les deux cas, on peut démontrer que σ est rationnel mais on n’en possède pas de paire numérateur-dénominateur. Le type de raisonnement précédent est basé sur le tiers-exclu puisque l’on suppose formellement que soit la séquence 0 1 2 3 4 5 6 7 8 9 existe dans le développement décimal de π, soit elle n’y existe pas. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 14 CHAPITRE I. INTRODUCTION À LA LOGIQUE Un autre aspect des mathématiques classiques, qui ne concerne pas véritablement la logique, celui de l’infini actuel est aussi rejeté par les intuitionnistes. Ce principe accepte l’idée de pouvoir considérer comme actuellement présents tous les éléments d’un ensemble infini comme celui des nombres réels. On parle d’infini-actuel de Platon-Cantor. Avec par exemple l’axiome du choix qui stipule grossièrement que si l’on possède une infinité d’ensembles (Ei )i≥0 , il est possible de sélectionner instantanément un élément dans chacun des ensembles : il existe une fonction f telle que f (i) ∈ Ei pour tout i ≥ 0. Effectivement, si je prends une infinité de paires de chaussures, je peux choisir par exemple toutes les chaussures gauches et mon choix est instantané. Je peux aussi choisir la chaussure gauche quand i est pair, la chaussure droite quand i est impair. Mais prenons un autre exemple : celui d’une infinité de paires de chaussettes. Dans une paire de chaussettes, les deux chaussettes sont entièrement semblables mais cependant distinctes. Comment décrire instantanément un choix d’une chaussette dans chacune des paires ? Les intuitionnistes refusent cet état de fait et se proposent de reconstruire les mathématiques sur de nouvelles bases. Ils rejettent le caractère non constructif de la logique classique qui est matérialisé par l’axiome du tiers-exclu. Ils refusent aussi la notion d’infini actuel, c’est-à-dire le fait que l’on puisse considérer les nombres réels (où tout autre ensemble ayant le même caractère) comme étant tous présents. En fait, ils rejettent la vision platonicienne des mathématiques où une preuve est un moyen de découvrir une vérité pré-existante. Luitzen Brouwer en 1923 a même comparé les mathématiques classiques à une activité criminelle : « Une théorie incorrecte qui n’est pas arrêtée par une contradiction n’en est pas moins incorrecte, exactement comme une politique criminelle qui n’est pas réprimée par une cour de justice n’en est pas moins criminelle ». 7 Les fondements intuitionnistes Quels sont les fondements proposés par les intuitionnistes ? D’un point de vue mathématiques, on rejette ce qui pourrait être qualifié de croyance et l’on se base sur ce qui est intuitivement accepté par tous les individus pensants : la suite des nombres naturels 0, 1, 2, 3,. . . Le reste n’existe pas ! D’un point de vue logique, on ne place plus la vérité au centre de la logique mais plutôt la preuve. La vérité ne se trouve plus dans un univers extérieur mais dans les preuves et la combinaison des preuves entre elles. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 7 Les fondements intuitionnistes 15 La vérité n’est pas découverte grâce à la preuve mais construite avec la preuve. Sans preuve, il n’est pas de vérité. Ainsi dire qu’une formule A est soit vraie soit fausse n’a de sens que si l’on a prouvé qu’elle était vraie ou bien si l’on a prouvé qu’elle était fausse. D’où le rejet de l’axiome du tiers-exclu. Par ailleurs, les intuitionnistes font la supposition fondamentale suivante : le fait qu’une preuve p prouve une proposition A doit être décidable. D’un point de vue solipsiste 3 , cela apparaît clairement : si l’on n’est pas capable de décider si p est une preuve de A alors p ne peut pas être considérée comme une preuve de A. De plus, les preuves intuitionnistes ne sont pas des preuves ordinaires, elles doivent être constructives. En fait, ce sont toutes les mathématiques intuitionnistes qui sont constructives. Pour pouvoir parler d’un objet mathématique, il faut être capable de le construire intuitivement. C’est-à-dire qu’il doit exister un processus mental de construction de cet objet. Ce processus n’a pas besoin d’être réaliste en terme de temps d’exécution ou de ressources nécessaires à sa réalisation. Il lui suffit d’exister et d’être communicable à quelqu’un d’autre qui pourrait le reproduire. On peut ainsi construire mentalement la suite des entiers naturels et tout le monde est capable de le faire. En revanche, une définition comme : L= le plus grand nombre premier tel que L − 2 est aussi premier 1 si un tel nombre premier n’existe pas n’a de sens qui si l’on peut trancher entre les deux alternatives, c’est-àdire si l’on dispose d’une preuve qu’un tel nombre premier existe ou bien si l’on dispose d’une preuve qu’il n’existe pas. En l’absence de l’une de ces deux preuves, la définition ci-dessus n’a pas de sens. Le côté constructif des preuves se retrouve dans les deux propriétés suivantes : Propriété d’existence. Si une formule ∃x·A(x) est prouvable, la preuve de cette formule doit permettre de retrouver le témoin x0 tel que A(x0 ) est aussi prouvable. Propriété de disjonction. Si une formule A ∨ B est prouvable alors soit A est prouvable soit B est prouvable et l’examen de la preuve de A ∨ B doit permettre de savoir lequel des deux est prouvable. 3. Rien n’existe hors de la pensée individuelle. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 16 CHAPITRE I. INTRODUCTION À LA LOGIQUE Ces deux propriétés sont obtenues d’une part en refusant l’axiome du tiers-exclu et d’autre part par des artifices syntaxiques, le mot est peut-être un peu fort, dans la présentation de la logique. 7.1 Une démonstration classique troublante En logique classique, i.e. non intuitionniste, on peut démontrer le théorème suivant : ((F ∧ G) ⇒ H) =⇒ ((F ⇒ H) ∨ (G ⇒ H)) On peut montrer ce résultat en se servant des équivalences logiques, dites lois de Morgan. Le symbole ≡ se lit ici « · · · est logiquement équivalent à · · · » : – ¬(A ∧ B) ≡ (¬A) ∨ (¬B) ; – ¬(A ∨ B) ≡ (¬A) ∧ (¬B). On se sert également de : – A ⇒ B ≡ (¬A) ∨ B ; – ¬¬A ≡ A. Notons que cette dernière équivalence n’est pas vraie en logique intuitionniste. Nous nous servons également des propriétés d’associativité, de commutativité et d’idempotence de la disjonction ∨. On a : (F ∧ G) ⇒ H ≡ ≡ ≡ ≡ ≡ ≡ (¬(F ∧ G)) ∨ H ((¬F ) ∨ (¬G)) ∨ H (¬F ) ∨ (¬G) ∨ H (¬F ) ∨ (¬G) ∨ H ∨ H ((¬F ) ∨ H) ∨ ((¬G) ∨ H) (F ⇒ H) ∨ (G ⇒ H) Donc, de (F ∧ G) ⇒ H, on peut déduire (F ⇒ H) ∨ (G ⇒ H). Prenons pour F , G, et H les propositions suivantes : – x = 0 pour F , – y = 0 pour G et – (x, y) = (0, 0) pour H. On a bien : (x = 0) ∧ (y = 0) ⇒ (x, y) = (0, 0) D’après le théorème, on a aussi : (x = 0 ⇒ (x, y) = (0, 0)) ∨ (y = 0 ⇒ (x, y) = (0, 0)) Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 8 La sémantique des preuves 17 et cela semble pour le moins bizarre... N.B. Notons qu’aucune astuce n’a été utilisée et que ce théorème peut être rigoureusement démontré en logique classique (cf. section~10). La solution de l’énigme réside, comme nous le verrons, dans l’interprétation classiques des symboles de la logique. 8 La sémantique des preuves Les intuitionnistes vont plus loin encore dans l’expression de leurs concepts puisqu’ils définissent également ce qu’est une preuve. Cette définition des preuves est appelée la sémantique des preuves intuitionnistes de Heyting-Kolmogorov. Les preuves sont définies en termes de processus effectivement calculables, notion qui recouvre toutes les notions de processus automatisables d’une manière ou d’une autre : Logique Combinatoire, λ-calcul, machines de Turing, algorithmes, etc. et dont la thèse de Church affirme qu’elle est une notion identifiable à celle de fonction λ-définissable, i.e. de fonction définissable dans le λ-calcul. C’est cet aspect des preuves qui reliera fortement, nous le verrons, logique et informatique. La sémantique des preuves intuitionnistes se définit comme suit. – La preuve d’une formule atomique est une méthode automatisable permettant de vérifier que la formule atomique est vraie. Par exemple, une preuve de 99 + 102 = 201 peut être un algorithme qui calcule la somme de 99 et 102 et vérifie que le résultat est bien 201. – La preuve d’une conjonction A ∧ B, i.e. A et B, est formée d’une preuve de A et d’une preuve de B. – La preuve d’un disjonction A∨B, i.e. A ou B, est formée d’une preuve de A ou bien d’une preuve de B plus une indication permettant de savoir lequel a été prouvé. – La preuve d’une négation ¬A, i.e. non A, est la donnée d’un processus effectivement calculable qui transforme toute preuve de A en une preuve d’une contradiction, 0 = 1 par exemple. – La preuve d’une implication, A ⇒ B, i.e. A implique B, est un processus effectivement calculable transformant toute preuve de A en une preuve de B. – La preuve d’une quantification existentielle, ∃x·A(x), est formée d’un élément t du domaine de quantification et d’une preuve de A(t). – La preuve d’une quantification existentielle, ∀x · A(x), est la donnée d’un processus effectivement calculable qui transforme tout élément Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 18 CHAPITRE I. INTRODUCTION À LA LOGIQUE t du domaine de quantification en une preuve de A(t). Quelques remarques s’imposent. 8.1 Implication et quantification universelle Dans la définition des preuves de formules A ⇒ B et ∀x · A(x), nous avons fait intervenir un « processus effectivement calculable qui transforme · · · en · · · ». Il manque un élément dans cette description : il faut prouver que le processus effectivement calculable fait bien ce qui est annoncé. Ainsi, dans le cas de l’implication, il faudrait prouver que la preuve transforme bien toute preuve de A en une preuve de B. C’est un élément pas très clair de cette sémantique des preuves qui fut utilisé par les opposants à l’intuitionnisme. 8.2 La négation intuitionniste Il ne faut pas confondre la définition de la négation avec le raisonnement par l’absurde. En logique intuitionniste, pour montrer ¬A, il faut montrer A ⇒⊥ où ⊥ est une contradiction, 0 = 1 par exemple. La logique intuitionniste dit donc « de A ⇒⊥, déduire ¬A ». Le raisonnement par l’absurde dit « de (¬A) ⇒⊥, déduire A » et il est une conséquence de l’axiome du tiers-exclu qui rend logiquement équivalent ¬¬A et A. 8.3 Jusqu’au dogmatisme... La dogmatisme de certains logiciens intuitionnistes alla très loin. Ainsi, G.F. Griss, rejetait-il même la négation intuitionniste avec le raisonnement suivant. Si je veux démontrer qu’il n’existe pas de cercle carré, je vais supposer qu’il en existe un, aboutir à une contradiction et déduire mon résultat. Mais puisqu’un carré circulaire est une absurdité, comment puis-je raisonnablement supposer qu’il en existe un ? Comment puis-je avoir une vision claire de ce qu’est un carré circulaire pour pouvoir en déduire une contradiction ? Cela est contradictoire avec l’idée que tout objet manipulé par les mathématiciens intuitionnistes doit pouvoir être construit mentalement. Griss propose donc de faire reposer les mathématiques sur des raisonnements exclusivement positifs. Ainsi pour montrer qu’il n’existe pas de carré circulaire, on peut démontrer qu’un carré n’est pas un cercle Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 9 Que reste-t-il de l’intuitionnisme ? 19 en ce sens qu’on ne peut lui trouver un centre : quelque soit le point P du plan que je choisisse, je peux toujours trouver deux points Q et R du carré tels que la distance |P Q| soit différente de la distance |P R|. 9 Que reste-t-il de l’intuitionnisme ? Il va de soi qu’en prenant comme base les seules constructions mentales intuitives et communicables et en rejetant des raisonnements comme celui par l’absurde, on se limite vraiment. David Hilbert en 1928 déclarait : «. . . Ôter la loi du tiers-exclu au mathématicien reviendrait à priver l’astronome de son télescope et le boxeur de son poing . . .». Si, en plus, on décide de rejeter la négation comme le fait Griss, on a encore moins de puissance d’expression. Néanmoins, l’école a reconstruit inutilement mais avec des méthodes très différentes la plupart des résultats mathématiques connus. Ce fut un travail long, extrêmement fastidieux, difficile et réalisé en marge de la communauté mathématique internationale. Ainsi, l’école intuitionniste n’a pratiquement pas eu droit de citer en France où le pragmatisme l’a emporté. 9.1 Le raisonnement intuitionniste Il reste alors la logique intuitionniste. Celle-ci est certes moins puissante que la logique classique. Les résultats intuitionnistes peuvent être obtenus par la logique classique mais la réciproque n’est pas vraie. En revanche, les démonstrations intuitionnistes sont constructives : pour savoir si un résultat classique est aussi intuitionniste, on peut et on doit bien sûr le redémontrer avec l’axiomatisation intuitionniste mais on peut aussi préalablement vérifier que ce résultat est intuitivement valable vis-à-vis de la sémantique des preuves de Heyting. Par exemple, on peut déduire classiquement (A ∧ B ⇒ C) de (A ⇒ B ⇒ C). Ce résultat a-t-il un sens en terme de sémantique de Heyting ? Si p est un processus effectivement calculable prenant un argument x, on note p(x) l’application du processus p à l’argument x et son résultat. Une preuve de (A ⇒ B ⇒ C) est un processus p qui transforme une preuve a en une preuve p(a) de (B ⇒ C). Et p(a) est un processus qui transforme une preuve b de B en une preuve p(a)(b) de C. Supposons à présent que j’aie une preuve x de A ∧ B, alors x est une paire formée Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 20 CHAPITRE I. INTRODUCTION À LA LOGIQUE de π1 (x), preuve de A, et π2 (x), preuve de B. Je définis le processus q(x) par « calculer a = π1 (x), calculer y = p(a), calculer b = π2 (x), calculer y(b) ». Clairement puisque p et les deux projections π1 , π2 sont calculables alors q est aussi calculable. Par ailleurs, puisque a est une preuve de A, y est une preuve de (B ⇒ C). Puisque b est une preuve de B, y(b) est une preuve de C. On a donc q, processus effectivement calculable défini par q(x) = p(π1 (x))(π2 (x)), qui transforme toute preuve de A ∧ B en preuve de C. On peut donc raisonnablement penser que le résultat de départ est aussi un résultat intuitionniste. Un exemple de théorème classique mais non intuitionniste cité par J-Y. Girard est la formule suivante ∃x · (∀y · A(x) ⇒ A(y)). Cette formule peut sembler paradoxale, elle dit qu’il existe un x tel que si cet objet x possède une propriété A alors tous les autres objets la possèdent. Par exemple, il existe un homme sur la terre tel que s’il porte un chapeau tous les autres hommes portent aussi un chapeau. La justification classique est la suivante : si tous les hommes portent un chapeau, prenons-en un au hasard et il sera cet x pour qui le résultat est évidemment vrai puisque tous les hommes y portent un chapeau. Si au moins un homme ne porte pas de chapeau, prenons cet homme pour x et de nouveau tout se passe bien puisque l’on peut toujours écrire A(x) ⇒ A(y) puisque A(x) n’est pas vrai. On peut bien sûr démontrer rigoureusement ce résultat avec les axiomes de la logique classique. Un examen de cette formule en terme de sémantique des preuves de Heyting permet de constater qu’il ne peut exister de preuve intuitionniste de cette formule. Il reste, et nous le verrons plus loin, que l’on peut transformer toute preuve intuitionniste d’existence d’un objet vérifiant certaines propriétés en un programme calculant un objet ayant ces propriétés. Bien évidemment, les preuves intuitionnistes sont plus difficiles à construire que les preuves classiques. 10 Différents ordres de logique On distingue différents ordres dans les logiques. Seuls les trois premiers semblent présenter un intérêt. Nous verrons des systèmes de chacun d’eux. – La logique d’ordre 0, ou Logique des propositions, est la logique s’occupant uniquement de la combinaison des propositions indépendamPatrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 11 La logique linéaire 21 ment de leurs sens. La combinaison se fait à l’aide des connecteurs classiques ∧ (conjonction), ∨ (disjonction), ⇒ (implication), etc. – La logique d’ordre 1, ou Logique des prédicats, suppose un domaine formé d’objets constants, des fonctions sur les objets de ce domaine et des prédicats concernant les objets du domaine. Elle introduit des variables d’individus qui parcourent le domaine et les deux quantifications universelle ∀x · A(x) et existentielle ∃x · A(x). – La logique d’ordre 2 introduit des variables de prédicats ou variable de relations parcourant l’ensemble des relations entre objets. Il est bien entendu possible de quantifier sur les relations. Sa puissance d’expression est bien supérieure à celle de la logique des prédicats. Elle permet par exemple d’exprimer l’axiome de récursivité : ∀P · [P (0) ∧ (∀x · P (x) ⇒ P (x + 1)) ⇒ ∀x · P (x)] – La logique d’ordre 3 permet de quantifier sur les relations entre relations, celle d’ordre 4 sur les relations entre relations de relations, et ainsi de suite. Elles n’ont pas d’utilité évidente. 11 La logique linéaire La Logique Linéaire est le résultat des travaux au long cours du logicien français Jean-Yves Girard. Celui-ci poursuit des buts divers qui sont exposés dans les sections introductives de ses différents articles et livres. Ses études très profondes des mécanismes de la logique et de la démonstration valent indépendamment de la Logique Linéaire. 11.1 Intensionalité et extensionalité Un objet mathématique est défini en intention s’il est défini par un processus de type algorithmique dans chacun de ses détails. Un objet mathématique est défini en extension s’il est défini globalement par des considérations extérieures, c’est-à-dire que la définition ne permet pas d’exhiber directement l’objet. Exemple. L’exemple le plus simple de ces deux notions apparaît avec les fonctions. On peut écrire différents algorithmes qui calculeront, de manières différentes, une même fonction. Ainsi : Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 22 CHAPITRE I. INTRODUCTION À LA LOGIQUE – (λ+ n·(/(× n (s n))2) calcule la somme des n premiers entiers naturels lorsque n est un entier de Church ; – mais on peut également se baser sur la définition récursive : f (n) ≡ si n = 0 alors 0 sinon n + f (n − 1) finSi pour obtenir le terme Y (λ+ f · (λ+ n · (z n 0 (+ n (f (p n)))))). Ces deux définitions sont des définitions en intention de la fonction qui calcule la somme des n premiers entiers naturels car, en plus de désigner cette fonction, chacune de ces définitions donne un moyen déterminé de la calculer. Lorsque l’on dit «la fonction qui calcule la somme de n premiers entiers», on désigne la même fonction mais on ne donne aucun moyen de la calculer. C’est une définition en extension mais qui reste informelle. La définition mathématique en extension de la même fonction est la définition de son graphe, c’est-à-dire de l’ensemble des couples (x, y) où x est un argument possible de la fonction et y le résultat pour cet argument. 11.2 Logique et intentionnalité Pour J-Y. Girard, la logique en général, par ses aspects syntaxiques et formels, est intentionnelle. Ainsi prouver (A ∨ B) ∨ C et prouver A ∨ (B ∨ C), c’est prouver deux formules logiquement équivalentes mais qui conservent dans leur syntaxe des traces de leurs preuves : les parenthèses. J-Y. Girard remarque que «la syntaxe représente un objet et une manière de le décomposer». Dans le cas de logique, la syntaxe d’une formule, cf. l’exemple ci-dessus, garde la trace de la manière dont on a prouvé cette formule. Mais une fois réussie la démonstration de cette formule, on devrait pouvoir «oublier sa preuve» et considérer de manière simple A ∨ B ∨ C car cette formule est bien celle que l’on a prouvée. Mais même ainsi, la syntaxe conserve un ordre dans la formule : A puis B puis C. Là aussi se dissimule une trace de la preuve. La logique lie donc de manière très forte l’histoire de la formule, c’est-à-dire la manière dont on l’a prouvée, et sa syntaxe. La même remarque s’applique aussi bien à la logique intuitionniste. Nous verrons lors de l’étude du calcul des séquents intuitionnistes que Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 11 La logique linéaire 23 le caractère intuitionniste de la logique est obtenu par des artifices syntaxiques. L’un des buts de J-Y. Girard est d’essayer de faire disparaître ces informations redondantes au caractère évidemment intentionnel «en recherchant des régularités derrière l’arbitraire apparent de la syntaxe». Pour cela, il développera sa Géométrie de l’interaction permettant de donner une sémantique nouvelle aux preuves des systèmes logiques et plus précisément à la Logique Linéaire. Citons pour le plaisir cette phrase de J-Y. Girard : «. . . Les intuitionnistes ont conservé la distinction intentionnel/extensionel avec le manque d’imagination d’un copiste du moyen-âge . . .» 4 . Nous en citerons d’autres tant la manière d’argumenter de J-Y. Girard est empreinte d’originalité. 11.3 Actions et situations J-Y. Girard remarque que la logique mathématique, aussi bien classique qu’intuitionniste, raisonne dans un monde de vérités éternelles et immuables. Ainsi, si l’on a A ⇒ B et A qui sont prouvés, on peut en déduire B mais... A est toujours vraie. Cela est parfait en mathématiques où une vérité telle que «2 est pair» est vraie et restera vraie. Cela ne l’est pas dans la vie courante où l’implication est causale. En logique mathématique, A ⇒ B est une proposition vraie si B est vraie lorsque A est vraie. Il n’y a aucune relation de causalité. Mais pour tout un chacun, l’implication doit être causale et son utilisation modifie généralement l’hypothèse A dans un processus appelé réaction. 11.4 En résumé... En résumé, la logique linéaire prend en compte la notion d’hypothèse consommable. Cela s’obtient en supprimant des règles de la logique classique. Cependant, le but ultime de J-Y. Girard est d’ordre plus théorique : il veut une logique débarrassée de ses tares héréditaires. Nous avons exposé une de ces tares : l’intentionnalité. L’exposé complet du point de vue de J-Y. Girard prendrait des dizaines de pages. 4. L’une de mes amies, historienne, m’a fait la remarque que, pour bien tournée que soit cette phrase, les copistes du moyen-âge avaient beaucoup trop d’imagination quand ils recopiaient les manuscrits . . . Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 24 Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 25 II F ORMALISMES LOGIQUES Citons INTRODUCTION TO METAMATHEMATICS S.C. Kleene Biblioteca Mathematica, North Holland 1952 et PROOFS AND TYPES J.Y. Girard & Y. Lafont & P. Taylor Cambridge Tracts in T.C.S., Cambridge, Angleterre 1989 et LOGIQUE, RÉDUCTION, RÉSOLUTION R. Lalement Études et recherches en Informatique, Masson, Paris 1990 La logique étant ce qu’elle est avec ses connecteurs et ses quantificateurs, on la présente en tant que système formel. Mais il existe différents types de systèmes formels, l’important étant que les règles soient de nature purement syntaxique. Nous allons passer en revue différentes manières de présenter une théorie logique. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 26 1 CHAPITRE II. FORMALISMES LOGIQUES Formules et syntaxe Le langage de la logique des prédicats comprend et étend celui de la logique des propositions. C’est un langage du premier ordre qui fut introduit par Frege en 1879. Un langage du premier ordre permet de décrire un domaine dans lequel des objets atomiques sont représentés par des constantes et où l’on peut exprimer d’autres objets par des termes fonctionnels. Des prédicats permettent de décrire des propriétés de ces objets. 1.1 Vocabulaire Le langage de la logique du premier ordre utilise : – un ensemble dénombrable de constantes notées avec les lettres a, b, c, . . . éventuellement indicées par des entiers ; – un ensemble dénombrable de fonctions ayant une arité, nombre d’arguments, et notées avec les lettres f, g, h, . . . éventuellement indicées par des entiers ; – un ensemble dénombrable de variables d’individus notées avec les lettres x, y, z, . . . éventuellement indicées par des entiers ; – un ensemble dénombrable de prédicats ayant une arité, nombre d’arguments, et notés p, q, r, . . . éventuellement indicées par des entiers ; – un ensemble dénombrable de variables propositionnelles notées avec les lettres A, B, C, . . . éventuellement indicées par des entiers ; – le connecteur unaire de négation noté ¬ ; – les connecteurs binaires de conjonction noté ∧, de disjonction noté ∨, d’implication noté ⇒ ; – le quantificateur universel noté ∀, le quantificateur existentiel noté ∃ ; – les parenthèses ( et ) ou bien [ et ], le point · ; – éventuellement d’autres connecteurs. 1.2 Les termes Les termes désignent les objets du langage : – toute variable d’individu est un terme ; – toute constante est un terme ; – si f est une fonction d’arité n ≥ 0 et si t1 , . . . , tn sont des termes alors Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 1 Formules et syntaxe 27 l’application f (t1 , . . . , tn ) est un terme ; – (règle de fermeture). 1.3 Les formules propositionnelles Les formules de la logique des propositions ou logique d’ordre zéro sont définies par induction : – toute variable propositionnelle est une formule ; – si A est une formule, (¬A) est une formule ; – si A et B sont des formules, (A ∧ B), (A ∨ B) et (A ⇒ B) sont des formules. La logique des propositions étudie simplement les relations entre les propositions indépendamment du sens des propositions. On ne considère pas de domaine particulier. 1.4 Les formules du premier ordre Les formules de la logique des prédicats sont définies par induction : – toute variable propositionnelle est une formule ; – si p est un prédicat d’arité n ≥ 0 et si t1 , . . . , tn sont des termes alors l’application p(t1 , . . . , tn ) est une formule ; – si A est une formule, (¬A) est une formule ; – si A et B sont des formules, (A ∧ B), (A ∨ B) et (A ⇒ B) sont des formules ; – si x est une variable d’individu et si A est une formule, (∀x · A) et (∃x · A) sont des formules ; – (règle de fermeture). 1.5 Conventions syntaxiques Afin de supprimer certaines paires de parenthèses dans l’écriture des formules, on admet les conventions syntaxiques suivantes : – les connecteurs ∧ et ∨ ont associatifs à gauche. Donc : A ∧ B ∧ C ≡ ((A ∧ B) ∧ C) ; Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 28 CHAPITRE II. FORMALISMES LOGIQUES – le connecteur ⇒ est associatif à droite. Donc : A ⇒ B ⇒ C ≡ (A ⇒ (B ⇒ C)) ; – le connecteur de négation ¬ est syntaxiquement plus prioritaire que les connecteurs binaires ∧ et ∨ qui sont eux-mêmes plus prioritaires que ⇒, lui-même plus prioritaire que les quantificateurs. Donc : ¬A ∧ B ≡ ((¬A) ∧ B) ; A ∧ B ⇒ ¬C ∨ D ≡ ((A ∧ B) ⇒ ((¬C) ∨ D)). Par ailleurs on autorisera d’utiliser les crochets [ et ] en lieu et place des parenthèses pour rendre une formule plus lisible. 1.6 Variables libres et liées Les variables libres et liées dans une formule sont définies comme en λcalcul pour les termes. Les opérateurs liants sont les quantificateurs ∀ et ∃. On notera F V (A) l’ensemble des variables libres d’une formule A. F V (A) est défini par induction : – F V (X) = ∅ si X est une variable propositionnelle ; – F V (p(t1 , . . . , tn )) = {x1 , · · · , xm } où x1 , · · · , xm sont les variables ayant au moins une occurrence dans t1 , · · · , tn ; – F V (¬A) = F V (A) ; – F V (A ∧ B) = F V (A ∨ B) = F V (A ⇒ B) = F V (A) ∪ F V (B) ; – F V (∀x · A) = F V (∃x · A) = F V (A) − {x}. Une variable qui possède une occurrence dans une formule et n’est pas libre dans cette formule est dite liée. Dans une même formule, une même variable peut avoir des occurrences libres et des occurrences liées. Par exemple, dans la formule (x = 0) ∧ (∀x · x + 0 = 0), la première occurrence de x est libre et la deuxième occurrence est liée. Une occurrence libre de x dans A devient liée dans ∀x · A, on dit qu’elle est liée par le quantificateur ∀. La même remarque s’applique avec le quantificateur ∃. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 1 Formules et syntaxe 1.7 29 Renommage des variables liées La principale caractéristique des variables liées est que l’on peut les renommer sans changer le sens de la formule à condition de prendre comme nouveau nom une nouvelle variable. Exemple II.1 Les formules ∀x · x + 0 = x et ∀y · y + 0 = y ont le même sens. Pour obtenir la deuxième, il faut renommer x en y. Contre exemple II.2 Prenons la formule vraie suivante : ∀x · ∃y · (y + y = x) ∨ (y + y + 1 = x). Si nous renommons x en y, nous obtenons la formule fausse : ∀y · ∃y · (y + y = y) ∨ (y + y + 1 = y). Cela montre qu’on ne peut pas renommer une variable aussi simplement qu’on le souhaite. Terminologie II.3 Le renommage de variable est appelé α-conversion dans la terminologie du λ-calcul. 1.8 Substitution La substitution d’un terme t aux occurrences libres d’une variable d’individu x dans une formule A est définie à la manière du λ-calcul. Elle est notée [t/x]A, à lire t à la place de x dans A. La substitution, étendue aux termes, est définie par les règles suivantes : – [t/x]x ≡def t ; – [t/x]a ≡def a si a est un atome, variable ou constante, différent de x ; – [t/x]f (t1 , . . . , tn ) ≡def f ([t/x]t1 , . . . , [t/x]tn ) si f est une fonction d’arité n et t1 , . . . , tn sont des termes ; – [t/x]p(t1 , . . . , tn ) ≡def p([t/x]t1 , . . . , [t/x]tn ) si p est un prédicat d’arité n et t1 , . . . , tn sont des termes ; – [t/x]X ≡def X si X est une variable propositionnelle ; – [t/x](¬A) ≡def ¬([t/x]A) si A est une formule ; – [t/x](A ∧ B) ≡def ([t/x]A) ∧ ([t/x]B) si A et B sont des formules ; – [t/x](A ∨ B) ≡def ([t/x]A) ∨ ([t/x]B) si A et B sont des formules ; – [t/x](A ⇒ B) ≡def ([t/x]A) ⇒ ([t/x]B) si A et B sont des formules ; Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 30 CHAPITRE II. FORMALISMES LOGIQUES – [t/x](∀y · A) ≡def ∀y · [t/x]A si y est une variable et A une formule et si x ∈ / F V (∀y · A) ou si y ∈ / F V (t) ; – [t/x](∀y · A) ≡def ∀z · ([t/x][z/y]A) si y est une variable et A une formule et où z est une nouvelle variable introduite pour renommer y (α-conversion) ; – [t/x](∃y · A) ≡def ∃y · [t/x]A si y est une variable et A une formule et si x ∈ / F V (∃y · A) ou si y ∈ / F V (t) ; – [t/x](∃y · A) ≡def ∃z · ([t/x][z/y]A) si y est une variable et A une formule et où z est une nouvelle variable introduite pour renommer y (α-conversion). La substitution, dans le cas général, est une opération complexe comme le montrent les quatre dernières règles que l’on retrouve également dans la substitution du λ-calcul : – [t/x](λy · A) ≡def λy · [t/x]A si y est une variable et A une formule et si x ∈ / F V (∃y · A) ou si y ∈ / F V (t) ; – [t/x](λy · A) ≡def λz · ([t/x][z/y]A) si y est une variable et A une formule et où z est une nouvelle variable introduite pour renommer y (α-conversion). Sans les gardes-fous introduits par ces deux règles, la substitution ne fonctionne pas. Il est utile de rappeler que des logiciens, et parmi les meilleurs se sont cassés les dents sur la substitution. Notation II.4 La substitution de t à x dans une formule ou un terme A que nous avons notée [t/x]A, en suivant les notations de J.R. H INDLEY, est parfois notée A[t/x] ou [x/t]A. 2 Systèmes de preuves Une fois le langage défini, il existe plusieurs manières de présenter les axiomes et les preuves d’un système logique et ceci, indépendamment de la nature de la logique : classique, intuitionniste, linéaire, etc. Nous allons examiner les systèmes suivants : – – – – les systèmes hilbertiens ; les systèmes de déduction naturelle ; les calculs des séquents ; les systèmes de déduction naturelle en calcul des séquents. qui sont énumérés dans l’ordre chronologique de leurs apparitions. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 2 Systèmes de preuves 31 Dans un système de preuve, on prouve certaines formules. Elles sont appelées des jugements. Un jugement prouvé est un théorème. Ces formules peuvent être les formules de la logique ou d’autres formules. Ainsi le calcul des séquents ne prouve pas directement des formules de la logique mais des séquents qui sont des objets légèrement plus complexes. Pour prouver ces formules, le système propose un ensemble d’axiomes ou de schémas d’axiomes et des règles d’inférence. Les preuves ont la forme d’arbres. 2.1 Axiomes Les axiomes sont des formules considérées comme vraies a priori. Exemple II.5 La formule : ∀x · x + 0 = x peut être un axiome de l’arithmétique. 2.2 Schémas d’axiomes Dans un schéma d’axiomes, on utilise des méta-variables qui sont définies par leurs noms et leurs domaines qui doivent être dénombrables. On donne alors une formule utilisant ces méta-variables. Cette formule désigne en fait la famille des formules obtenues en donnant aux métavariables toutes les valeurs de leurs domaines. Toutes ces formules sont alors considérées comme des axiomes. Exemple II.6 Ainsi le schéma d’axiomes : X +Y =Y +X où X et Y sont des méta-variables parcourant l’ensemble des entiers naturels pourrait être un schéma d’axiomes de l’arithmétique. Ce schéma d’axiomes désigne comme axiomes l’ensemble des formules obtenues en donnant à X et Y toutes les valeurs qu’elles peuvent prendre. Ce schéma d’axiomes désigne donc l’infinité d’axiomes : 0+0=0+0 1+0=0+1 2+0=0+2 .. . 0+1=1+0 1+1=1+1 2+1=1+2 .. . 0+2=2+0 1+2=2+1 2+2=2+2 .. . 0+3=3+0 1+3=3+1 2+3=3+2 .. . Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 0 + 4 = 4 + 0 ··· 1 + 4 = 4 + 1 ··· 2 + 4 = 4 + 2 ··· .. . 32 CHAPITRE II. FORMALISMES LOGIQUES Les méta-variables sont usuellement notées avec des lettres majuscules pour les distinguer des variables. Les variables font partie du langage de la théorie tandis que les méta-variables font partie du méta-langage de la théorie, c’est-à-dire du langage qui permet de parler de la théorie. De fait, le schéma d’axiomes n’est pas un élément de la théorie mais il permet de désigner un certain nombre d’axiomes, une infinité dans l’exemple cidessus, qui eux font partie de la théorie. On introduit des schémas d’axiomes plutôt que des axiomes lorsqu’on ne veut pas introduire d’opérateurs liants comme les quantificateurs. C’est le cas avec la Logique Combinatoire où l’on se donne les deux schémas d’axiomes (S) et (K) où := est le symbole de réduction : (S) (K) S X Y Z := X Z (Y Z) K X Y := X On peut également rajouter I avec l’axiome : (I) I X := X mais ce n’est pas absolument nécessaire puisque l’on peut définir I par I ≡def S K K. On introduit aussi des schémas d’axiomes plutôt que des axiomes lorsqu’il se créerait des interférences entre différents opérateurs liants. C’est le cas en λ-calcul entre un éventuel quantificateur sur les termes et l’opérateur λ. Enfin, on introduit des schémas d’axiomes lorsqu’on ne peut pas quantifier sur le domaine des méta-variables. C’est le cas en logique classique où l’on introduira le schéma d’axiomes : A ∨ ¬A (tiers − exclu) où A est une méta-variable parcourant l’ensemble des formules sur lequel on ne peut pas quantifier en logique du premier ordre. 2.3 Règles d’inférence Une règle d’inférence s’écrit sous la forme : H1 ··· H2 Hn C (r) Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 2 Systèmes de preuves 33 où (r) est le nom de la règle, H1 , H2 , . . . , Hn sont des hypothèses ou prémisses et C est la conclusion. Une telle règle signifie que si H1 , H2 , . . . , Hn sont toutes prouvées alors la conclusion C est aussi prouvée. Exemple II.7 Dans une axiomatisation de l’arithmétique avec un prédicat d’égalité, on pourra avoir les règles d’inférence suivantes exprimant la symétrie et la transitivité de l’égalité : X=Y Y =X 2.4 (sym) X=Y Y =Z X=Z (tr) Démontrer un théorème Dans un système ayant des axiomes et des règles d’inférence, une preuve se présente normalement sous la forme d’un arbre. L’arbre est présenté racine en bas et feuilles en haut. La racine de l’arbre est le théorème démontré. Les feuilles de l’arbre sont des axiomes. On passe des fils d’un nœud au nœud père par l’utilisation de l’une des règles d’inférence. Exemple. Pour démontrer que S S (K I) f x Combinatoire, on écrit l’arbre suivant : := f x x en Logique (K) K I f := I (al) (S) S S (K I) f := S f (K I f ) S f (K I f ) := S f I (I) I x := x (tr) S S (K I) f := S f I (al) (S) S f I x := f x (I x) f x (I x) := f x x (ar) S S (K I) f x := S f I x (tr) S f I x := f x x (tr) S S (K I) f x := f x x Ceci est une preuve rigoureuse et formelle de S S (K I) f x := f x x. Une autre preuve rigoureuse mais non formelle est obtenue en écrivant : S S (K I) f x := S f (K I f ) x := S f I x := f x (I x) := f x x mais cette preuve n’est pas réalisée dans le système formel. N.B. L’intérêt de cette formalisation des preuves sous forme d’arbre est en partie qu’elle permet des raisonnements sur les preuves : raisonnement Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 34 CHAPITRE II. FORMALISMES LOGIQUES par récurrence sur la hauteur de l’arbre, raisonnement par induction sur la structure de l’arbre, raisonnement sur la dernière règle utilisée (la règle utilisée pour obtenir la racine de l’arbre). 2.5 Extensions d’une théorie Le système formel est constitué d’un certain nombre d’axiomes et de règles d’inférences. On peut vouloir considérer d’autres règles. Étant donnée une autre règle, plusieurs cas peuvent se produire. a) Extensions inconsistantes La nouvelle règle peut être incompatible avec les règles existantes. C’est-à-dire que l’ajout de cette nouvelle règle rend toutes les formules vraies. Exemple. Si l’on rajoute à la théorie un axiome S = K, la théorie devient inconsistante. En effet : X = = = = = = = IX KIIX K I I (K X I) S (K I) (K X) I K (K I) (K X) I car S = K KII I Ce qui montre qu’alors tout terme X est égal à I. Donc tous les termes sont deux à deux égaux et toutes les formules X = Y sont des théorèmes. b) Extensions dérivables La nouvelle règle n’apporte pas de nouveaux théorèmes. Les formules qui étaient vraies le restent. Les formules qui étaient fausses le restent aussi. Cela signifie que toute utilisation de la nouvelle règle peut être remplacée par un bout d’arbre utilisant les anciennes règles. On parle alors d’extension dérivables. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 2 Systèmes de preuves 35 Exemple. Si on rajoute à la Logique Combinatoire une règle : M = N N := L M = L (eq − red − tr) alors on n’apporte aucun nouveau théorème. Pour se rendre compte que l’extension est dérivable, il suffit de montrer que toute utilisation de la nouvelle règle peut être remplacée par des utilisations des anciennes règles. On dit que la nouvelle règle est dérivable à partir des anciennes. Exemple. La règle donnée ci-dessus peut être dérivée : N := L M = N N =L M =L c) (eq − red) (eq − tr) Extensions consistantes Si l’ajout de la règle amène de nouveaux théorèmes sans introduire d’inconsistance alors la nouvelle théorie est dite consistante. Exemple. Si on rajoute à la Logique Combinatoire la règle : Mx = Nx M = N (ext) x ∈ / F V (M ) ∪ F V (N ) on obtient une nouvelle théorie, la Logique Combinatoire extensionnelle, dans laquelle les anciens théorèmes restent vrais mais qui possède de nouveaux théorèmes. Ainsi dans cette nouvelle théorie on aura le théorème S (K I) I = S K K obtenu par (ext) puisque S (K I) I x = S K K x. Mais ce théorème n’est pas vrai sans la règle (ext) puisque S (K I) I et S K K sont deux formes normales syntaxiquement différentes. d) Extensions conservatives On peut étendre la théorie en en augmentant également le langage. Exemple. Ainsi, on peut considérer la Logique Combinatoire avec uniquement l’opération de réduction et donc uniquement les formules de la forme M := N . C’est une théorie. On peut l’étendre avec le symbole Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 36 CHAPITRE II. FORMALISMES LOGIQUES d’égalité et considérer les formules de la forme M = N . On ajoutera les trois axiomes relatifs à l’égalité. On obtient alors une nouvelle théorie. Une telle extension est dite conservative si toute formule de la théorie non étendue démontrable dans la théorie étendue l’est aussi dans la théorie non étendue. Exemple. La Logique Combinatoire avec égalité est une extension conservative de la Logique Combinatoire avec uniquement la réduction car toute formule M := N démontrable dans la Logique Combinatoire avec égalité peut l’être dans la Logique Combinatoire avec uniquement la réduction. N.B. Notons que toute extension conservative d’une théorie consistante est elle-même consistante. 2.6 a) Systèmes formels et logiques Système formel Ce dont nous avons parlé jusqu’à présent dépasse le cadre de la logique. Nous avons en fait décrit ce qu’est un système formel. Un système formel est la donnée d’un alphabet, d’un procédé de construction de formules, ou jugements, et d’un ensemble d’axiomes et de règles d’inférence permettant de déterminer lesquelles parmi les formules sont des théorèmes. Un aspect important est que ces axiomes et ces règles sont formels, c’està-dire que leurs contenus ne reposent que sur la forme des formules ou, plus précisément, sur leur syntaxe. b) Vérification des preuves Que les axiomes et règles soient formels ne rend pas plus simple ni automatique la recherche de preuves, sauf quelques cas particuliers que nous verrons plus loin. En revanche, cet aspect formel rend possible la vérification automatique d’une preuve. Étant donné un arbre de preuve et des axiomes et règles, il est possible de déterminer par des procédés purement syntaxiques, donc automatisables, pour savoir si cet arbre de preuve est bien construit en respectant les axiomes et les règles. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 3 Déduction naturelle c) 37 Logiques Les théories logiques sont, sauf exception, des systèmes formels particuliers. Selon J-Y. Girard, père de la Logique Linéaire, un système formel peut être appelé une logique s’il possède la règle de coupure, cut rule, (ou son équivalent) et la propriété d’élimination des coupures, connue sous le nom savant de Hauptsatz, (ou son équivalent) que nous verrons plus loin. 3 Déduction naturelle La présentation axiomatique de la logique par Hilbert tire des conséquences d’axiomes mais ce n’est pas ainsi que raisonne l’homme. Jan Lukasiewicz, dès 1929, fait remarquer que les hommes ignorent les axiomes de la logique de Hilbert mais que cela ne les empêche pas de raisonner. Ils procèdent par des déductions faites à partir d’hypothèses et leurs énoncés sont de la forme : La conclusion C se déduit des hypothèses H1 , . . . , Hn Lukasiewicz suggéra de formaliser cette logique naturelle du discours et cela fut fait par Stanislas Jaskowski (1934) et surtout Gerhard Gentzen (1933). Le résultat de cette formalisation mathématique s’appelle un système de déduction naturelle. Par la suite, il s’avéra que cette logique « naturelle » formalisée était plus commode que la logique axiomatique de Hilbert même si elle n’apporte pas de théorèmes supplémentaires. De plus, elle permettait d’obtenir des résultats importants à propos de la logique tels que le Hauptzatz de Gentzen que nous verrons au chapitre~III. Ce type de résultat est une propriété des systèmes logiques et non un théorème démontré dans le système logique. Il s’agit d’une branche des mathématiques appelée théorie de la preuve. 3.1 La preuve en déduction naturelle Un système de déduction naturelle est un formalisme présentant les preuves de manière plutôt naturelle en ce sens qu’il est relativement intuitif de rédiger une preuve. Une preuve est une déduction composée Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 38 CHAPITRE II. FORMALISMES LOGIQUES de formules positionnées en arbre, les unes en dessous des autres. Une formule est une conséquence des formules qui sont au-dessus d’elles. On les sépare par un trait horizontal. La forme générale d’une preuve d’une formule A est donc : .. . A La présence du trait horizontal n’est pas nécessaire lorsqu’il n’y a qu’une seule formule au-dessus de A mais il peut cependant faciliter la relecture de la preuve. 3.2 Axiomes dans une déduction La ou les formules en haut des déductions sont des axiomes ou des hypothèses. Si une formule est un axiome, cela signifie qu’une des règles du système l’a donnée comme étant vraie a priori. Exemple. Si l’on se place en logique classique, un axiome est celui du tiers exclu, tertium non datur pour faire beau, qui dit qu’une formule est soit vraie soit fausse, hypothèse de l’infini actuel de Platon-Cantor, soit : A ∨ ¬A. 3.3 Hypothèses dans une déduction La ou les formules en haut des déductions sont être des hypothèses. Ainsi, on démontre qu’une formule est vraie à la condition que les hypothèses le soient. Une formule entre crochets est dite déchargée, elle ne compte plus parmi les hypothèses actives. Une même hypothèse peut avoir plusieurs occurrences dans la preuve. Par exemple, une démonstration de la formule A sous l’hypothèse A s’écrira : A A voire tout simplement A (l’hypothèse A établit A). Par contre la démonstration de A ⇒ A ne compte plus d’hypothèse active : Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 3 Déduction naturelle 39 [A] A A⇒A 3.4 Les règles d’un système de déduction naturelle En dehors des axiomes, chaque connecteur est pourvu de plusieurs règles classées en règles d’introduction et règles d’élimination. Une règle d’introduction est une règle dont la formule conclusion contient ce connecteur. Une règle d’élimination est une règle prenant en hypothèse au moins une formule contenant ce connecteur et produisant en conclusion une formule où ce connecteur a disparu. 3.5 Règles de la logique des propositions Voici les règles des connecteurs de la logique des propositions. a) Conjonction .. . A .. . B A∧B .. . A∧B A b) ∧elim1 ∧intro .. . A∧B B ∧elim2 Disjonction .. . A A∨B ∨intro1 .. . B A∨B ∨intro2 Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 40 CHAPITRE II. FORMALISMES LOGIQUES .. . A∨B [A] .. . [B] .. . C C ∨elim C c) Implication [A] .. . .. . A⇒B B A⇒B ⇒intro .. . A B ⇒elim N.B. Dans le règle ⇒intro , on dit que l’on décharge l’hypothèse A. En fait, toutes les hypothèses A ayant servi à la démonstration de B sont déchargées. Pour savoir par quelles règles les hypothèses sont déchargées, on a souvent recours à un marqueur, exposant numérique que l’on ajoute à l’hypothèse et au nom de l’occurrence de la règle qui décharge ces hypothèses. On obtient alors quelque chose qui ressemble à ceci : [A]k · · · [A]k .. . B ⇒kintro A⇒B d) Négation classique En logique classique, on peut utiliser au choix l’une des trois règles suivantes qui sont deux à deux équivalentes : A ∨ ¬A tiers-exclu .. . ¬¬A A ¬¬ [¬A] .. . [¬A] .. . B ¬B à laquelle on rajoute les règles suivantes : Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 A (A) 3 Déduction naturelle 41 [A] .. . [A] .. . B ¬B .. . A ¬intro ¬A .. . ¬A B ¬elim On remarquera que (A) est une forme du raisonnement par l’absurde : en supposant que A est faux (¬A), on arrive à une contradiction car on a prouvé B et ¬B, d’où on en conclut A. Exemple. Montrons que l’on peut dériver la règle du tiers-exclu à partir de la troisième règle (A) : [¬A] [¬(A ∨ ¬A)] [¬A] ¬(A ∨ ¬A) A ∨ ¬A ∨intro2 (A) [¬(A ∨ ¬A)] A ¬(A ∨ ¬A) A ∨ ¬A ∨intro1 (A) A ∨ ¬A N.B. Relire cette démonstration n’est pas évident. La présence d’exposant pour marquer les hypothèses déchargées et les règles qui les déchargent améliorerait sûrement les choses. Nous verrons plus loin une autre présentation de ces déductions naturelles. e) Négation intuitionniste On se rappelle que la négation intuitionniste est définie par ¬A ≡def A ⇒⊥ où ⊥ est un symbole représentant la contradiction. Il n’y a pas de règle d’introduction de ⊥ mais une règle d’élimination appelée ex falso quodlibet sequitur, soit «du faux on peut tout déduire» : .. . ⊥ A On peut également choisir alternativement d’introduire le connecteur de négation ¬ avec une règle d’introduction et une règle d’élimination : Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 42 CHAPITRE II. FORMALISMES LOGIQUES [A] .. . [A] .. . B ¬B ¬A 3.6 .. . A ¬intro .. . ¬A B ¬elim Règles de la logique des prédicats Ces règles concernent les quantificateurs existentiel (∃) et universel (∀). a) Quantification universelle .. . A ∀x · A ∀intro .. . ∀x · A [t/x]A ∀elim Dans la règle ∀intro , il faut que la variable x ne soit pas libre dans les hypothèses servant à démontrer la formule A. b) Quantification existentielle .. . [t/x]A ∃x · A ∃intro .. . ∃x · A [A] .. . B B ∃elim Dans la règle ∃elim , la variable x ne doit pas être libre dans B. 3.7 Autre formulation des preuves On peut présenter les preuves avec des dessins de la forme donnée par la figure suivante. On peut réécrire les règles suivant ce format. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 3 Déduction naturelle 43 Hypothèse Déductions où on peut utiliser l’hypothèse Conclusion où l’hypothèse est déchargée La preuve donnée au sujet de la négation peut donc se réécrire de manière plus lisible, voir figure suivante. ¬(A ∨ ¬A) ¬A ¬A (hyp) ∨intro2 ¬(A ∨ ¬A) A ∨ ¬A ¬e A ∨intro1 ¬(A ∨ ¬A) (hyp) A ∨ ¬A ¬e A ∨ ¬A Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 44 4 CHAPITRE II. FORMALISMES LOGIQUES Les systèmes hilbertiens On appelle système hilbertien un système dans lequel il n’y a que des axiomes et une seule règle, la règle du modus ponens qui est en fait la règle ⇒elim : A⇒B B A (modus ponens) Dans le cas de la logique des prédicats, on ajoutera deux nouvelles règles nécessaires pour des raisons syntaxiques. Un système hilbertien ressemble à un système de déduction naturelle dans lequel on n’utiliserait pas la notion d’hypothèse. 4.1 a) Axiomes pour la logique des propositions Conjonction A⇒B ⇒A∧B b) B ⇒A∨B A ∨ B ⇒ (A ⇒ C) ⇒ (B ⇒ C) ⇒ C Implication A⇒B⇒A d) A∧B ⇒B Disjonction A⇒A∨B c) A∧B ⇒A (A ⇒ (B ⇒ C)) ⇒ (A ⇒ B) ⇒ A ⇒ C Négation classique A ∨ ¬A A ⇒ ¬A ⇒ B Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 4 Les systèmes hilbertiens e) 45 Négation intuitionniste Si l’on décide d’introduire un connecteur de négation ¬ : (A ⇒ B) ⇒ (A ⇒ ¬B) ⇒ ¬A A ⇒ ¬A ⇒ B Si l’on décide d’introduire la contradiction ⊥ et de définir la négation par ¬A ≡def A ⇒⊥ : ⊥⇒A 4.2 Exemple de preuve L’exemple suivant, très classique, est là pour montrer que les démonstrations dans un système hilbertien peuvent devenir rapidement fastidieuses : (A ⇒ (A ⇒ A) ⇒ A) ⇒ (A ⇒ A ⇒ A) ⇒ A ⇒ A A ⇒ (A ⇒ A) ⇒ A (A ⇒ A ⇒ A) ⇒ A ⇒ A A⇒A⇒A A⇒A Pour comparaison, la même preuve en déduction naturelle : [A] A A⇒A ⇒intro On pourrait ajouter l’axiome A ⇒ A mais cela ne changerait rien. On trouverait toujours des formules simples avec des preuves complexes. 4.3 Axiomes pour la logique des prédicats Dans le cas des quantificateurs, nous sommes obligés de rajouter deux nouvelles règles à cause des restrictions sur les variables libres. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 46 a) CHAPITRE II. FORMALISMES LOGIQUES Quantification universelle A⇒B A ⇒ ∀x · B b) x∈ / F V (A) ∀x · A ⇒ [t/x]A Quantification existentelle [t/x]A ⇒ ∃x · A A⇒B ∃x.A ⇒ B 5 x∈ / F V (B) Le calcul des séquents Le calcul des séquents, dû à Gentzen dans les années 1930, est une manière de présenter la logique bien plus lourde que la déduction naturelle mais elle permet en contre-partie de raisonner sur les preuves et possède des qualités de symétrie que l’on ne retrouve pas ailleurs. Le résultat fondamental de la théorie de la preuve, le théorème d’élimination des coupures, a été obtenu à l’aide d’un calcul des séquents. 5.1 Les séquents Les jugements démontrés en calcul des séquents ne sont plus de simples formules de la logique mais des séquents. Un séquent est une expression de la forme : A1 , . . . , An ` B1 , . . . , Bm où A1 , . . . , An et B1 , . . . , Bm sont des formules. Intuitivement, un tel séquent signifie que si les formules A1 , . . . , An sont toutes vraies alors au moins l’une des formules B1 , . . . , Bm est vraie. On pourrait signifier cela par une formule : A1 ∧ . . . ∧ An ⇒ B1 ∨ . . . ∨ Bm disant que la conjonction des formules A1 , . . . , An implique la disjonction des formules B1 , . . . , Bm mais cette analogie doit être prise avec précaution comme l’explique J-Y. Girard avec la Logique Linéaire. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 6 Le calcul des séquents classique 47 Notation. Dans la suite, Γ, ∆, Θ,. . . désignent des séquences éventuellement vides de formules du type A1 , . . . , An . 5.2 Les axiomes et les règles d’inférence Les axiomes et règles d’inférence sont divisés en deux groupes : – les règles structurelles qui ont pour fonction de déterminer le comportement des séquents ; c’est en jouant sur ces règles que l’on introduit la Logique Linéaire ; – les règles logiques qui déterminent les connecteurs et les quantificateurs de la logique. J-Y. Girard prétend que c’est le groupe des règles structurelles qui détermine la presque-totalité du système. En particulier, c’est lui qui détermine certaines propriétés des connecteurs comme la commutativité ou la distributivité. 5.3 La structure des règles Alors que les systèmes de déduction naturelle utilise des règles d’introduction et d’élimination, les règles du calcul des séquents utilisent des règles à gauche et des règles à droite. Une règle à gauche est une règle qui permet d’introduire quelque chose, connecteur ou quantificateur par exemple, dans la partie gauche d’un séquent. Plus précisément on aura dans la partie gauche du séquent conclusion de la règle quelque chose qui n’y était pas. Une règle à droite est une règle qui permet d’introduire quelque chose, connecteur ou quantificateur par exemple, dans la partie droite d’un séquent. Plus précisément on aura dans la partie droite du séquent conclusion de la règle quelque chose qui n’y était pas. 6 Le calcul des séquents classique Les présentations en calcul des séquents des différentes logiques ont des particularités importantes, c’est pourquoi il faut les présenter séparément. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 48 6.1 CHAPITRE II. FORMALISMES LOGIQUES Les règles structurelles La première des règles structurelles est la règle d’identité qui dit qu’on peut déduire une formule d’elle-même : A`A La règle de coupure (cut) dont nous verrons qu’elle est redondante (Hauptsatz de Gentzen, 1934) mais cependant bien pratique s’écrit : Γ ` ∆, A Γ0 , A ` ∆0 Γ, Γ0 ` ∆, ∆0 Les deux règles suivantes sont les règles d’affaiblissement qui disent que l’on peut rajouter une hypothèse inutile à gauche du séquent ou une conclusion inutile à droite du séquent : Γ`∆ Γ, A ` ∆ (af fg ) Γ`∆ Γ ` ∆, A (af fd ) Les règles suivantes sont les règles de contraction qui disent que l’on peut supprimer les formules dupliquées soit à gauche du séquent soit à droite du séquent : Γ, A, A ` ∆ Γ, A ` ∆ (cong ) Γ ` ∆, A, A Γ ` ∆, A (cond ) Enfin, les règles d’échange permettent de permuter deux formules soit à gauche du séquent soit à droite du séquent : Γ, A, B, ∆ ` Θ Γ, B, A, ∆ ` Θ (echg ) Γ ` ∆, A, B, Θ Γ ` ∆, B, A, Θ Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 (echd ) 6 Le calcul des séquents classique 6.2 49 Règles structurelles et linéarité J-Y. Girard prétend que le comportement global d’un système logique est entièrement contenu dans ses règles structurelles et ceci, presque indépendamment des règles définissant les connecteurs et les quantificateurs de la logique. Ainsi, par exemple, ce sont les règles d’échange qui définissent la commutativité des connecteurs. Supprimer les règles d’échange revient à supprimer cette commutativité. On se retrouve alors avec une logique non-commutative. Par ailleurs, la règle (af fg ) revient en quelque sorte à rajouter des hypothèses inutiles comme si elles n’avaient pas de valeurs. La règle (cong ) revient à pouvoir dupliquer librement une hypothèse. Tandis que les règles (af fd ) et (cond ) reviennent à pouvoir traiter tout aussi librement les conclusions des séquents en les dupliquant ou en en introduisant d’inutiles. En remarquant ceci après quelques autres, J-Y. Girard en a conclu que la logique classique, et c’est aussi vrai pour la logique intuitionniste, ne conçoit aucune valeur pour les formules. Cela est indubitablement vrai pour les formules mathématiques comme « 2 est pair » qui, une fois qu’elle a été démontrée, peut être dupliquée librement ou effacée puis retrouvée. Mais dans la vie courante, dans les ordinateurs, les formules ont une valeur. « Je dispose d’un K-octets de mémoire » ne peut être dupliquée : si j’ai un K-octets de mémoire, je n’en ai pas deux. Elle ne peut être effacée car sinon je perds cette information. Et si je l’utilise pour prouver que je peux ranger un tableau en mémoire par exemple, je dois la détruire puisqu’elle a été utilisée pour ranger le tableau. Donc la logique classique et la logique intuitionniste ne considèrent pas les formules comme des ressources et sont donc inapplicables à des problèmes informatiques par exemple. Si la logique intuitionniste est applicable aux programmes fonctionnels, c’est parce que ces programmes se contentent de faire des calculs et ne réalisent aucune action. Les programmes fonctionnels peuvent eux être dupliqués à volonté. Ils possèdent la propriété de transparence référentielle signifiant qu’on peut les exécuter quand on veut et autant de fois qu’on le veut sans que le résultat ne change. Il n’ont pas d’effets de bord. C’est en remarquant cette inadéquation des logiques classiques et intuitionnistes aux problèmes « réels » que J-Y. Girard a créé la Logique Linéaire qui est obtenue principalement en « oubliant » les règles d’affaiblissement Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 50 CHAPITRE II. FORMALISMES LOGIQUES et de contraction. 6.3 a) Les règles logiques de la logique des propositions Conjonction Γ, A ` ∆ Γ, A ∧ B ` ∆ b) Γ, B ` ∆ ∧g1 Γ, A ∧ B ` ∆ Γ, Γ0 ` ∆, ∆0 , A ∧ B ∧d Disjonction Γ, A ` ∆ Γ0 , B ` ∆ 0 0 0 Γ, Γ , A ∨ B ` ∆, ∆ c) Γ ` ∆, A ∨g Γ ` ∆, A ∨ B Γ, Γ0 , A ⇒ B ` ∆, ∆0 d) Γ ` ∆, A ∨ B ⇒g Γ, A ` ∆, B Γ ` ∆, A ⇒ B Négation Γ ` ∆, A Γ, ¬A ` ∆ 6.4 Γ ` ∆, B ∨d1 Implication Γ ` ∆, A Γ0 , B ` ∆0 a) Γ ` ∆, A Γ0 ` ∆0 , B ∧g2 ¬g Γ, A ` ∆ Γ ` ∆, ¬A ¬d Les règles logiques de la logique des prédicats Quantification universelle Γ, [t/x]A ` ∆ Γ, ∀x · A ` ∆ ∀g Γ ` ∆, A Γ ` ∆, ∀x · A ∀d Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 ⇒d ∨d2 7 Le calcul des séquents intuitionniste b) 51 Quantification existentielle Γ, A ` ∆ Γ, ∃x · A ` ∆ Γ ` ∆, [t/x]A ∃g Γ ` ∆, ∃x · A ∃d Dans les règles ∀d et ∃g , on suppose que x ∈ / F V (Γ) ∪ F V (∆). 6.5 Exemple de démonstration Démontrons formellement la règle du tiers-exclu : A`A [id] ` A, ¬A (¬d ) ` A , A ∨ ¬A ` A ∨ ¬A , A (∨d2 ) (echd ) ` A ∨ ¬A , A ∨ ¬A ` A ∨ ¬A 7 (∨d1 ) (cond ) Le calcul des séquents intuitionniste Dans le calcul des séquents intuitionniste, on ne considère que des séquents ayant au plus une formule dans la partie droite. De fait certaines règles du calcul des séquents classiques ne sont plus applicables et certaines doivent être modifiées pour des raisons de lisibilité. N.B. La raison de cette restriction sur le nombre de formules dans la partie droite d’un séquent sera explicitée plus loin dans la section~8, La logique intuitionniste est constructive. 7.1 Les règles structurelles intuitionnistes La règle identité est conservée : A`A Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 52 CHAPITRE II. FORMALISMES LOGIQUES La règle de coupure (cut) dont nous verrons qu’elle est redondante (Hauptsatz de Gentzen, 1934) mais cependant bien pratique s’écrit : Γ0 , A ` B Γ`A Γ, Γ0 ` B Γ`B Γ, A ` B Γ` (af fg ) Γ`A Γ, A, A ` B Γ, A ` B (af fd ) (cong ) La règle de contraction à droite a disparu car elle supposait plus d’une formule à droite du séquent. Γ, A, B, ∆ ` C Γ, B, A, ∆ ` C (echg ) La règle d’échange à droite a disparu car elle supposait plus d’une formule à droite du séquent. 7.2 a) Les règles logiques de la logique des propositions Conjonction Γ, A ` C Γ, A ∧ B ` C b) Γ, B ` C ∧g1 Γ, A ∧ B ` C Γ`A ∧g2 Γ0 ` B Γ, Γ0 ` A ∧ B ∧d Disjonction Γ, A ` C Γ0 , B ` C Γ, Γ0 , A ∨ B ` C ∨g Γ`A Γ`A∨B ∨d1 Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 Γ`B Γ`A∨B ∨d2 8 La logique intuitionniste est constructive c) Implication Γ`A Γ0 , B ` C Γ, Γ0 , A ⇒ B ` C d) Γ, ¬A ` a) ¬g Γ, A ` B Γ`A⇒B ⇒d Γ, A ` Γ ` ¬A ¬d Les règles logiques de la logique des prédicats Quantification universelle Γ, [t/x]A ` B Γ, ∀x · A ` B b) ⇒g Négation Γ`A 7.3 53 ∀g Γ`A Γ ` ∀x · A ∀d Quantification existentielle Γ, A ` B Γ, ∃x · A ` B ∃g Γ ` [t/x]A Γ ` ∃x · A ∃d Dans les règles ∀d et ∃g , on suppose que x ∈ / F V (Γ). 8 La logique intuitionniste est constructive Une logique est dite constructive si elle supporte l’isomorphisme de CurryHoward. L’isomorphisme de Curry-Howard est une correspondance entre les preuves et des termes du λ-calcul ou de la Logique Combinatoire. Une preuve qui n’utilise pas la règle de coupure est associée à un terme du λ-calcul ou de la Logique Combinatoire en forme normale. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 54 CHAPITRE II. FORMALISMES LOGIQUES L’algorithme d’élimination des coupures dans une preuve, que nous verrons dans un prochain chapitre, procède par étape. A partir d’une preuve avec coupures, on procède étape par étape jusqu’à avoir éliminé les coupures. Si l’on examine ce qui se passe pour les termes associés par l’isomorphisme de Curry-Howard, on s’aperçoit que chaque étape de transformation de la preuve correspond à une réduction sur le terme associé. Ces transformations se poursuivent jusqu’à ce que la preuve ne contienne plus aucune coupure et à ce moment-là, le terme associé a été complètement réduit, il est en forme normale. Ceci témoigne d’une analogie extrêmement forte entre les preuves et les termes du λ-calcul ou de la Logique Combinatoire et d’une analogie similaire entre le processus d’élimination des coupures dans les preuves et le processus de réduction en λ-calcul ou en Logique Combinatoire. Encore faut-il que cet isomorphisme soit supporté par la théorie logique associée. 8.1 La logique classique n’est pas constructive Supposons deux preuves sans coupures π et π 0 d’une même formule B. Supposons que ces deux preuves soient obtenues de manière totalement différentes de telle sorte que les termes associés par l’isomorphisme de Curry-Howard soient des formes normales différentes. On a donc M 6= M 0 . Puis construisons la preuve suivante de B qui utilise la règle de coupure, elle est due à J-Y. Girard : π0 .. . π .. . `B ` C, B (af fd ) ` B, B `B `B (af fg ) C`B (cut) (cond ) Soit P le terme associé à cette preuve par l’isomorphisme de CurryHoward. Nous verrons qu’il existe alors deux manières d’éliminer la coupure de cette preuve, l’une en la faisant remonter par la gauche, l’autre en la faisant remonter par la droite. Selon, on obtiendra deux preuves totalement différentes puisque l’une repose sur π et l’autre sur π 0 : Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 9 Déduction naturelle en calcul des séquents π0 .. . π .. . `B B 55 (af f + ech + con) `B B (af f + ech + con) La mention (af f + ech + con) fait référence à une suite éventuelle d’une application de la règle d’affaiblissement, suivie d’une application de la règle d’échange, suivie d’une application de la règle de contraction. Les termes N et N 0 associés à ces deux preuves par l’isomorphisme de CurryHoward sont en forme normale et différents, donc N 6= N 0 . Mais on a cependant P := N et P := N 0 , et par le théorème de Church-Rosser, on a N = N 0 , ce qui contredit N 6= N 0 . Pour pallier ce problème, les logiciens intuitionnistes ont réduit le nombre de formules dans la partie droite d’un séquent en le majorant par 1. De cette manière, le problème mentionné ne peut pas apparaître. De fait, la logique intuitionniste est constructive. 9 Déduction naturelle en calcul des séquents On se rappelle que la déduction naturelle utilise des règles d’introduction et d’élimination tandis que le calcul des séquents utilise des règles à gauche et à droite. La déduction naturelle peut s’exprimer sous la forme d’un calcul des séquents. Par exemple, le connecteur ∧ peut être alors introduit et éliminé : Γ`A Γ`B Γ`A∧B (∧intro ) Γ`A∧B Γ`A (∧elim1 ) Γ`A∧B Γ`B (∧elim2 ) On imagine qu’il est possible de rédiger de telles règles pour les autres connecteurs et les quantificateurs, que ce soit en logique classique ou en logique intuitionniste. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 56 10 CHAPITRE II. FORMALISMES LOGIQUES Une démonstration classique La démonstration suivante démontre le théorème déjà vu en section~7.1. C’est un résultat de la logique classique qui n’est pas intuitionniste : id F ` F id G ` G ∧d F, G ` F ∧ G id H ` H ⇒g F, G, (F ∧ G) ⇒ H ` H af fd F, G, (F ∧ G) ⇒ H ` H, H ⇒d F, (F ∧ G) ⇒ H ` H, G ⇒ H ⇒d (F ∧ G) ⇒ H ` F ⇒ H, G ⇒ H (F ∧ G) ⇒ H ` (F ⇒ H) ∨ (G ⇒ H), G ⇒ H ∨d1 (F ∧ G) ⇒ H ` (F ⇒ H) ∨ (G ⇒ H), (F ⇒ H) ∨ (G ⇒ H) ∨d2 cond (F ∧ G) ⇒ H ` (F ⇒ H) ∨ (G ⇒ H) Cette démonstration utilise des règles, (cond ) et (af fd ), qui n’apparaissent pas dans l’axiomatisation intuitionniste, ce n’est pas une démonstration intuitionniste. N.B. Pour montrer informellement que ce résultat n’est pas intuitionniste, on peut se baser sur la sémantique des preuves de Heyting-Kolmogorov. On pourra également se baser sur les résultats du chapitre suivant. 11 Déduction naturelle et calcul des séquents Il va de soi que les théorèmes sont les mêmes dans les deux présentations d’une logique : – on peut associer à la preuve d’un séquent A1 , . . . , An ` B en calcul des séquents, une preuve de B sous les hypothèses A1 , . . . , An en déduction naturelle ; – inversement, on peut associer à une preuve de B sous les hypothèses A1 , . . . , An en déduction naturelle, une preuve du séquent A1 , . . . , An ` B dans le calcul des séquents correspondant. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 57 III É LIMINATION DES COUPURES Citons PROOFS AND TYPES J.Y. Girard & Y. Lafont & P. Taylor Cambridge Tracts in T.C.S., Cambridge, Angleterre 1989 On rappelle la règle de coupure ou cut rule qui est une règle du calcul des séquents intuitionniste : Γ`A Γ0 , A ` B Γ, Γ0 ` B Son analogue en calcul des séquents classique est : Γ ` ∆, A Γ0 , A ` ∆0 Γ, Γ0 ` ∆, ∆0 Cette règle peut sembler essentielle dans un calcul des séquents puisqu’elle dit grosso modo que si une formule A est une conséquence dans un séquent et que la même formule A est hypothèse dans un autre séquent, il est possible de combiner ces deux séquents pour n’en faire qu’un dans lequel A a disparu ! Cependant, cette règle est redondante au sens de la section sur les extensions dérivables. En effet, toute preuve utilisant des coupures peut être remplacée par une preuve n’utilisant pas de coupures. C’est l’objet Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 58 CHAPITRE III. ÉLIMINATION DES COUPURES du résultat suivant dont nous ébaucherons la démonstration un peu plus loin. 1 Le Hauptsatz de Gentzen Le résultat suivant est valable dans le calcul des séquents classique, dans le calcul des séquents intuitionniste et dans la plupart des calculs des séquents. J-Y. Girard affirme même qu’un système formel de logique qui n’a pas cette propriété ne peut être qualifié de logique. Théorème d’élimination des coupures (Hauptsatz de Gentzen, 1934). Si un séquent est prouvable alors il existe une preuve de ce séquent qui n’utilise pas la règle de coupure. Ce résultat est LE résultat de la théorie des preuves. J-Y. Girard affirme même que c’est le seul résultat d’importance mais, comme nous le verrons, ses conséquences sont importantes. Par ailleurs, et nous allons le voir, il est obtenu par des moyens purement formels, i.e. syntaxiques. Nous allons examiner les conséquences de ce théorème qui sont très importantes. En effet, une preuve n’utilisant pas la règle de coupure possède des propriétés particulières, spécialement en logique intuitionniste. 2 La dernière règle en logique intuitionniste N.B. Attention ! On se place en Logique Intuitionniste. Définition. Lorsque l’on considère une preuve sous forme d’arbre, on peut s’intéresser à la dernière règle utilisée, c’est-à-dire à celle utilisée pour produire la racine de l’arbre. Nous avons le résultat suivant : Propriété. Si un séquent ` A est prouvable en logique intuitionniste alors il existe une preuve de ` A où la dernière règle est une règle logique à droite. Démonstration. Si le séquent ` A est prouvable, d’après le Hauptsatz, il existe une preuve sans coupures de ce séquent. On remarque que la conclusion de la dernière règle est un séquent qui n’a pas d’hypothèses dans sa partie gauche. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 3 Propriété de disjonction (DP) 59 Si l’on examine les règles structurelles du calcul des séquents intuitionniste, on remarque que toutes les règles sauf la règle d’affaiblissement à droite (af fd ) ont des hypothèses dans le séquent conclusion. Aucune d’entre elles ne peut donc être la dernière règle utilisée dans la preuve. Si l’on examine (af fd ), la seule application de cette règle fournissant un séquent conclusion sans hypothèse à gauche serait : ` mais le séquent vide ` (af fd ) `A n’est pas prouvable. Maintenant, si l’on examine les règles logiques à gauche, par construction elles ont toutes des hypothèses dans leur séquent conclusion. La dernière règle ne peut donc pas être une règle logique à gauche. Ayant éliminé les règles structurelles et les règles logiques à gauche, la dernière règle utilisée ne peut être qu’une règle logique à droite. Propriété de consistance. Le séquent `⊥ n’est pas démontrable en logique intuitionniste. Démonstration. Si le séquent est prouvable, il existe une preuve de ce séquent dont la dernière règle est une règle logique à droite. Il n’existe pas de règle à droite ayant ⊥ comme conclusion. N.B. Cette démonstration était inutile puisque les règles du calcul des séquents intuitionniste sont un cas particulier des règles du calcul des séquents classique. Donc tout théorème intuitionniste est aussi un théorème classique. La consistance de la logique classique entraîne donc celle de la logique intuitionniste. 3 Propriété de disjonction (DP) N.B. Attention ! On se place en Logique Intuitionniste. Propriété de disjonction. Si un séquent ` A ∨ B est prouvable en logique intuitionniste alors soit le séquent ` A, soit le séquent ` B soit les deux sont prouvables. Démonstration. Si le séquent est prouvable, il existe une preuve de ce séquent dont la dernière règle est une règle logique à droite. Or les seules Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 60 CHAPITRE III. ÉLIMINATION DES COUPURES règles logiques à droite ayant une formule de la forme A ∨ B dans la partie droite de leur séquent conclusion sont les règles ∨d1 et ∨d2 et la dernière étape de la démonstration est forcément l’une des deux suivantes : `A `B ∨d2 `A∨B `A∨B et donc, soit ` A dans le premier cas, soit ` B dans le deuxième cas, sont prouvables. 4 ∨d1 Propriété d’existence (EP) N.B. Attention ! On se place en Logique Intuitionniste. Propriété d’existence. Si un séquent ` ∃x · A est prouvable en logique intuitionniste, alors il existe au moins un terme t tel que le séquent ` [t/x]A soit prouvable. Démonstration. Si le séquent est prouvable, il existe une preuve de ce séquent dont la dernière règle est une règle logique à droite. Or le seule règle logique à droite ayant une formule de la forme ` ∃x · A est la règle ∃d . La dernière étape de la démonstration est donc : ` [t/x]A ∃d ` ∃x · A on y voit un terme t tel que ` [t/x]A est prouvable. N.B. Les deux dernières propriétés, propriétés de disjonction et d’existence, sont caractéristiques d’un système de logique intuitionniste. 5 Propriété de la sous-formule N.B. Attention ! On se place en Logique Intuitionniste mais cela est valable également en logique classique. Définition. On définit la notion de sous-formule d’une formule A par induction sur la structure de la formule A. Plus précisément, on définit SF (A) l’ensemble des sous-formules de A. Attention ! Sous-formule est pris au sens large, ce n’est pas la définition habituelle d’une sous-formule d’une formule A. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 5 Propriété de la sous-formule 61 – Si A est une formule atomique, SF (A) = {A}. – Si A ≡ ¬B, SF (A) = {A} ∪ SF (B). – Si A ≡ B ∨ C ou si A ≡ B ∧ C ou si A ≡ B ⇒ C alors : S(A) = {A} ∪ SF (B) ∪ SF (C). – Si A ≡ ∀x · B ou si A ≡ ∃x · B alors : S SF (A) = {A} ∪ SF (B) ∪ t terme SF ([t/x]B). Si l’on cherche à démontrer un séquent Γ ` A, on possède la conclusion, i.e. le futur théorème, et l’on recherche la dernière règle de la preuve. Dans tous les cas, cette dernière règle pourrait être la règle de coupure : Γ`A Γ0 , A ` B Γ, Γ0 ` B mais cette règle pose un problème : pour déterminer ses prémisses, il faut déterminer la formule A qui a servi à faire la coupure et cela n’est pas évident même pour un humain censé être intelligent. Mais si l’on sait qu’il existe une preuve sans coupure, on possède la propriété suivante : Propriété. Si un séquent Γ ` A est prouvable en logique intuitionniste alors il existe une preuve de ce séquent dont la dernière règle n’est pas une règle de coupure et dont les prémisses ne contiennent que des sousformules de A et des formules dans Γ. Démonstration. On sait qu’il existe une preuve sans utilisation de la règle de coupure. Puis on examine chacune des autres règles du calcul des séquents intuitionniste et on vérifie aisément que chacune de ces règles possède la propriété annoncée. Propriété de la sous-formule. Si un séquent Γ ` A est prouvable en logique intuitionniste alors il existe une preuve de ce séquent qui ne contient aucune utilisation de la règle de coupure et telle que toutes les formules apparaissant dans cette preuve soient des sous-formules de A ou des formules dans Γ. Démonstration. La démonstration ne pose pas de problème et se fait par récurrence sur la hauteur de l’arbre de preuve. Si l’arbre de preuve est de hauteur 0, le séquent démontré est l’identité A ` A. Si la preuve est de hauteur n + 1, sa dernière règle vérifie la propriété précédente et on applique l’hypothèse de récurrence à chacune des prémisses de la règle pour conclure. Démonstration automatique. En appliquant le résultat précédent, on automatise la recherche de preuve puisque pour chaque résultat à démonPatrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 62 CHAPITRE III. ÉLIMINATION DES COUPURES trer, il y a un nombre fini de règles applicables et que la manière de les appliquer est déterminée par la propriété de la sous-formule. Seul le cas des quantificateurs peut amener à faire des choix intelligents si l’ensemble des termes est infini, ce qui est le cas dès qu’il y a au moins un symbole de fonction. D’où le discours enthousiaste de certains selon lequel la propriété de la sous-formule est la clé de la démonstration automatique. Mais ce discours idéaliste est bien loin des réalités. En effet, comme nous allons le voir, la preuve sans coupure est obtenue par transformations successives de la preuve originale et sa hauteur au pire est hyper-exponentielle : 4 44 ·· 4 4 n en fonction n, la hauteur de la preuve avec coupures. Le nombre de niveaux de 4 est le degré de la preuve défini dans la section suivante. Autrement dit, pour une preuve de degré 3, la hauteur de la preuve sans coupure pourrait dépasser les capacités de l’univers puisqu’elle serait de l’ordre de 10150 alors que le nombre de protons pouvant être contenus dans l’univers est estimé inférieur à 10130 . La recherche de preuves sans coupures est donc surtout destinée aux démonstrateurs « jouets » pour la démonstration de quelques identités remarquables de l’algèbre des connecteurs. Cependant, elle peut être utilisée de manière non-exclusive, avec des heuristiques. 6 La démonstration du Hauptsatz de Gentzen La transformation procède par transformations successives qui réduisent strictement une certaine mesure de la preuve. Lorsque cette mesure devient nulle, c’est que la preuve ne contient plus de coupures. Pour définir cette mesure, on introduit la notion de degré. 6.1 Degrés d’une formule, d’une coupure, d’une preuve Définition. Le degré d’une formule A, noté δ(A), est défini inductivement par : – si A est atomique, δ(A) = 1 ; – δ(A ∧ B) = δ(A ∨ B) = δ(A ⇒ B) = max(δ(A), δ(B)) + 1 ; – δ(¬A) = δ(∀x · A) = δ(∃x · A) = δ(A) + 1 ; où A et B sont des formules. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 6 La démonstration du Hauptsatz de Gentzen 63 Propriété. Si A est une formule, t un terme et x une variable, on a : δ([t/x]A) = δ(A) Démonstration. Induction évidente. À faire. Définition. Le degré d’une coupure intuitionniste (cas où ∆ et ∆0 sont des séquences vides de formules) ou classique : Γ ` ∆, A Γ0 , A ` ∆0 Γ, Γ0 ` ∆, ∆0 est le degré de la formule A qui a servi à faire la coupure. Définition. Le degré d’une preuve est le maximum des degrés des coupures utilisées dans la preuve. Remarque. Le degré d’une formule n’est jamais nul. Donc le degré d’une coupure n’est jamais nul. Donc une preuve est de degré zéro si et seulement si elle est sans coupure. 6.2 La proposition principale Lemme. Soit d ≥ 0, soit A une formule de degré d, soit Γ ` ∆, A un séquent dont la preuve est de degré strictement inférieur à d, soit Γ0 , A ` ∆0 un autre séquent dont la preuve est aussi de degré strictement inférieur à d, on peut construire une preuve de Γ, Γ0 ` ∆, ∆0 de degré strictement inférieur à d. Proposition. La preuve en est très longue et procède par examen des dernières règles des preuves de chacun des deux séquents. Il y a de nombreux cas. On se reportera à PROOFS AND TYPES, chapitre 13, cité en tête de ce chapitre. On distingue plusieurs cas : – le cas où la dernière règle de la preuve du séquent Γ ` ∆, A est une règle à droite créant A et la dernière règle du séquent Γ0 , A ` ∆0 est unes règles à gauche correspondante ; Exemple. Supposons que A ≡ B ∧ C, que A dans le séquent de gauche est créé par ∧d , que A dans le séquent de droite est construits à gauche par ∧g1 , on remplace alors la preuve : Γ1 ` ∆1 , B Γ 2 ` ∆2 , C Γ1 , Γ2 ` ∆1 , ∆2 , B ∧ C ∧d Γ3 , B ` ∆3 Γ3 , B ∧ C ` ∆3 Γ1 , Γ2 , Γ3 ` ∆1 , ∆2 , ∆3 Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 ∧g1 (cut) 64 CHAPITRE III. ÉLIMINATION DES COUPURES par la preuve : Γ 1 ` ∆1 , B Γ3 , B ` ∆3 Γ1 , Γ3 ` ∆1 , ∆3 Γ1 , Γ2 , Γ3 ` ∆1 , ∆3 Γ1 , Γ2 , Γ3 ` ∆1 , ∆2 , ∆3 (cut) (af fg∗ , ch∗g ) (af fd∗ , ch∗d ) où (af fd∗ , ch∗d ) signifie une suite d’affaiblissements à droite pour introduire ∆2 et une suite d’échanges à droite pour le placer au bon endroit. Et similairement pour (af fg∗ , ch∗g ) avec ∆2 . On a remplacé une coupure de degré d = δ(B ∧ C) par une coupure de degré δ(B) < d mais la hauteur de l’arbre a augmenté. – le cas où l’un des deux séquents est un axiome, i.e. A ` A ; – les autres cas où la dernière règle de l’un des deux séquents est une règle structurelle ; – les cas non principaux où l’on se contente d’effectuer une permutation pour obtenir l’un des deux séquents. Pour une visions détaillée de la preuve, on pourra se reporter à l’ouvrage PROOFS AND TYPES mentionné en tête de chapitre. Proposition. Si π est la preuve d’un séquent de degré d > 0, on peut construire une preuve ω(π) du même séquent mais de degré strictement inférieur à d. Démonstration. La démonstration se fait par induction sur la hauteur de la preuve π. On considère la dernière règle r de la preuve π. Si ce n’est pas une coupure, on applique l’hypothèse d’induction aux preuves de ses prémisses et le résultat est immédiat. Si c’est une coupure de degré strictement inférieur à d, ici aussi on applique l’hypothèse d’induction aux preuves de ses prémisses et le résultat est immédiat. Si r est une coupure de degré d, l’hypothèse d’induction nous assure qu’on peut trouver des preuves de ses prémisses de degré strictement inférieur à d de sorte que r est la seule coupure de degré au moins d. On a donc une coupure : Γ ` ∆, A Γ0 , A ` ∆0 Γ, Γ0 ` ∆, ∆0 avec A de degré d. Le lemme ci-dessus permet immédiatement de conclure. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 6 La démonstration du Hauptsatz de Gentzen 6.3 65 Le théorème Le théorème d’élimination des coupures se démontre en itérant la proposition de la section précédente jusqu’à obtenir un degré nul. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 66 Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 67 IV T HÉORIE DES TYPES Citons INTRODUCTION TO COMBINATORS AND λ-CALCULUS Roger Hindley & Jonathan P. Seldin London Mathematical Society, Student Text I Cambridge University Press, London, Angleterre 1986 et LOGIC : FORM AND FUNCTIONS J.A. Robinson Edinburgh University Press, Edinburgh, Écosse 1979 Nous avons beaucoup répété que les combinateurs ou les λ-termes ne sont pas des fonctions des mathématiques classiques, ne serait-ce que parce que l’on autorise l’auto-application qui est interdite par la théorie des ensembles. D’autre part, les combinateurs et les λ-termes n’ont ni ensemble de départ ni ensemble d’arrivée. Ils peuvent prendre n’importe quoi en argument et il est possible que leurs résultats soient indéfinis. Ce chapitre présente un point de vue différent, principalement dû au Paradoxe de Curry. Il s’agit de l’introduction de types qui permettent ou ne permettent pas certaines applications d’un terme à un autre et qui rapprochent le comportement des combinateurs et les λ-termes de celui des fonctions de la théorie des ensembles. La théorie des types est parfois appelée théorie de la fonctionnalité. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 68 1 CHAPITRE IV. THÉORIE DES TYPES Le paradoxe de Curry L’intention première du logicien H.B. Curry au début du siècle était de mécaniser la logique en en faisant un calcul comme un autre en utilisant les combinateurs, d’où le nom premier de la théorie : Logique Combinatoire. 1.1 Note historique L’idée de mécaniser la logique et donc le raisonnement n’est pas nouvelle. En 1655, dans son traité De Corpore, le philosophe Thomas Hobbes consacre un chapitre intitulé Computation Sive Logica dans lequel il émet l’idée que le raisonnement peut être réduit à une espèce de calcul. G.W. Leibniz, co-inventeur avec Newton du calcul différentiel et intégral, avait huit ans quand Hobbes a publié son traité. Hobbes n’essaya pas de mettre en pratique ses idées sur la logique. Leibniz rédigeait en 1679 ce qu’il appelait le Calculus Ratiocinator. À chaque concept, on associait un nombre entier appelé son nombre caractéristique. Ce nombre était premier si le concept était primitif, divisible sinon. La conjonction logique était alors le fait d’une multiplication. Par exemple, si le concept d’animal avait le code numérique 2 et celui de bipède avait le code numérique 3 alors le concept d’humain avait le code 2.3 = 6 puisque qu’un humain est à la fois un animal ET un bipède. On remplaçait ainsi des opération logiques par des opérations arithmétiques. Il va de soi que cette approche se trouva très vite limitée. Mais c’est à Frege dans les années 1870, que l’on doit la logique moderne. Plutôt que de chercher une contre-partie numérique au raisonnement, il se dit que l’on peut calculer avec autre chose que des nombres. D’ailleurs, les mathématiques ne travaillent pas avec des nombres, « quoi » que puissent être les nombres, mais avec des représentations symboliques des nombres que l’on appelle des numéraux. 0, 1, 2, . . . ne sont pas des nombres mais des numéraux. Frege découvrit qu’il pouvait faire de la logique un calcul symbolique. Il inventa même une notation graphique maintenant inutilisée, le Begriffsschrift. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 1 Le paradoxe de Curry 1.2 69 L’approche de Curry L’approche de Curry consistait à supprimer les variables liées dans les formules grâce à l’utilisation des combinateurs comme nous l’avons déjà vu. Il faut bien comprendre que les variables sont un outil particulièrement complexe et que la définition de la substitution [t/x]A d’un terme t à une variable x dans une formule A fut longtemps mal définie et que des logiciens parmi les meilleurs se trompèrent à essayer de la définir. Curry introduit des combinateurs, constantes atomiques, pour représenter les différents connecteurs et quantificateurs de la logique du premier ordre. Il introduit en particulier P tel que (P A B) représente l’implication logique (A ⇒ B). Curry donne la règle d’égalité : Si A est vrai et si A = B alors B est vrai (Règle d’égalité) (1.1) Avec cette règle, on pourra déduire une proposition d’une autre par un simple calcul dans la théorie des combinateurs, calcul qui montrera que les deux propositions sont égales. L’idée est belle ! Puis Curry introduit les deux règles essentielles suivantes : De (P X Y ) et X déduire Y (Modus Ponens) (1.2) P (P A (P A B)) (P A B) (1.3) et : Ces deux règles sont des règles de la logique propositionnelle toute simple. La première règle est la classique modus ponens nécessaire à toute déduction. La deuxième est un schéma d’axiomes vrai pour toutes les formules A et B. C’est un exemple de l’une des nombreuses axiomatisations possibles de la logique propositionnelle. N’importe quelle autre axiomatisation permettrait de déduire cet axiome pour toutes les formules A et B comme un théorème. Même en se restreignant à ce cadre tout simple, un paradoxe apparaît, c’est le paradoxe de Curry. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 70 CHAPITRE IV. THÉORIE DES TYPES 1.3 Le paradoxe Soit Z une proposition, nous allons démontrer que Z est un théorème. Considérons le terme : FZ ≡def Y (λ+ z · P z (P z Z)) (1.4) où z ∈ / F V (Z) et où Y est l’opérateur de point-fixe que nous avons déjà vu. On a : = (λ+ z · P z (P z Z)) FZ (propriété du point-fixeur Y ) = P FZ (P FZ Z) (substitution) = P (P FZ (P FZ Z)) (P FZ Z) (remplacement du 1er FZ par sa valeur) (1.5) FZ On effectue à présent une déduction : (a) (b) (c) (d) (e) P (P FZ (P FZ Z)) (P FZ Z) (axiome 1.3) P FZ (P FZ Z) (règle d’égalité 1.1) FZ (règle d’égalité 1.1) P FZ Z (modus ponens avec (b) et (c)) Z (modus ponens avec (d) et (c)) (1.6) On en arrive donc à l’absurdité suivante qui constitue le paradoxe de Curry : toute proposition Z est vraie. 1.4 La solution proposée On ne peut remettre en cause l’algorithme λ+ , théorème de complétude, ni l’existence de l’opérateur de point-fixe Y , théorème du point-fixe. Donc, si l’on veut continuer dans cette voie, il faut autre chose. La solution trouvée, qui conduit naturellement à la théorie des types, consiste à dire que tous les termes ne représentent pas des propositions. Les termes représentant des propositions seront appelés des termes canoniques. La théorie des types est constituée de règles permettant d’autoriser ou d’interdire l’application d’un terme à un autre et donc d’interdire certains termes. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 2 La théorie des types en Logique Combinatoire 1.5 71 Théorie des ensembles et théorie des types Un examen attentif des paradoxes montre qu’ils semblent avoir tous la même source : l’auto-référence, que ce soit le paradoxe du Crétois qui dit « Les Crétois ne racontent que des mensonges », que ce soit le paradoxe de Russel « L’ensemble de tous les ensembles qui ne se contiennent pas eux-mêmes » ou le paradoxe de Curry que nous venons de voir. Dans le premier cas, le Crétois parle de lui-même. Dans le deuxième cas, la définition de l’ensemble fait référence à lui-même. Dans le troisième cas, c’est l’opérateur de point-fixe Y qui provoque une auto-référence. Les origines des paradoxes se trouvent dans la conjonction de ces deux principes : – tout prédicat peut être considéré pour définir un ensemble ; – un prédicat peut être appliqué à n’importe quoi. Il y a alors deux solutions pour empêcher le paradoxe d’apparaître. La première est la solution ensembliste qui consiste à dire que tout prédicat ne définit pas un ensemble. On différenciera donc les prédicats bien définis qui définissent des ensembles et les autres. Par exemple, le prédicat x ∈ /x ne définit pas un ensemble, parce qu’il n’est pas bien défini, de telle sorte que l’ensemble de Russel n’est pas un ensemble mais une vague collection que l’on appelle une classe et pour laquelle le prédicat d’appartenance ne s’utilise pas. La théorie moderne des ensembles choisit d’abandonner le premier des deux principes. La deuxième solution est celle de la théorie des types qui choisit d’abandonner le deuxième principe. On empêche arbitrairement, ou presque, certaines applications de fonctions ou de prédicats. Nous allons décrire la théorie des types dans le cas de la théorie des combinateurs. Puis nous montrerons comment elle s’adapte au λ-calcul. 2 La théorie des types en Logique Combinatoire La théorie des types que nous présentons a été développée par Curry en 1934 et 1936. Elle fut développée indépendamment par J.H. Morris et R. Milner dans le cadre des langages de programmation fonctionnelle dans les années 1970. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 72 CHAPITRE IV. THÉORIE DES TYPES 2.1 Les types en informatique Le plus simple des contrôles de type est celui qui contrôle uniquement le nombre des arguments. Le pas suivant est franchi lorsque l’on contrôle en plus la nature des arguments, ce que font la plupart des langages de programmation. Enfin, certains langages fonctionnels comme ML infèrent le type des objets qu’ils manipulent. Le résultat, comme nous allons le voir est un schéma de types. 2.2 L’approche de Curry Pour Curry, les types des termes sont inférés grâce à un ensemble de règles. Chaque terme possède un ensemble de types possibles et non un seul. Si un terme M possède un type α, on notera cela ` M : α. Parmi tous les types que possède un terme, lorsqu’il en possède, l’un d’entre eux est le plus général en ce sens que les autres peuvent se déduire du type principal en substituant d’autre schémas de types aux variables de types qu’il contient. 2.3 Définition des types On se donne un ensemble de constantes de types et un ensemble de variables de types. Les variables de types sont notées à l’aide des minuscules grecques α, β, γ, . . . éventuellement indicées par des entiers naturels. Définition IV.1 (Schémas de types) Les schémas de types sont définis par induction : – – – – toute constante de type est un schéma de type ; toute variable de type est un schéma de type ; si α et β sont des schémas de types, (α → β) est un schéma de types ; règle de fermeture. Définition IV.2 Un type est un schéma de types dans lequel ne figure aucune variable. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 3 Affectation de type 73 Définition IV.3 Un schéma de types qui contient le symbole → est dit complexe. Syntaxe IV.4 On suppose que l’opération → de formation de types est associative à droite. Donc α → β → γ et α → (β → γ) dénotent la même expression. 3 Affectation de type L’idée principale est de dire que si un terme M a le type α → β et si N a le type α alors (M N ) est bien défini et a le type β. 3.1 Les formules L’affectation de type est présentée sous la forme d’un système formel où les formules démontrées sont de la forme ` M : α où M est un terme de la Logique Combinatoire et α un schéma de types. Ce système possède une règle d’inférence donnant le type d’une application et deux axiomes donnant les types des combinateurs S et K. 3.2 Le type d’une application Cette règle reprend ce qui a été dit ci-dessus : `M :α→β `N :α ` (M N ) : β 3.3 Le type de K La première règle donne un schéma de types au combinateur K : `K:α→β→α Ce schéma de types signifie informellement que K prend un premier argument X de type α, un deuxième argument Y de type β et l’application Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 74 CHAPITRE IV. THÉORIE DES TYPES se réduit à un terme de type α, ce qui est normal puisque la règle de réduction de K est K X Y := X. α et β sont des variables de types. On peut leur substituer n’importe quel schéma de types pour obtenir un nouveau schéma de types pour K. Ainsi , le schéma de types (γ → γ) → β → γ → γ est aussi un schéma de types pour K obtenu en remplaçant α par γ → γ. 3.4 Le type de S La deuxième règle donne un schéma de types à S : ` S : (α → β → γ) → (α → β) → α → γ En raisonnant comme pour K, supposons que : `X:α→β→γ `Y :α→β `Z:α on peut alors intuitivement déduire successivement : `XZ:β→γ `Y Z:β puis enfin : ` X Z (Y Z) : γ Et c’est bien ce que dit le schéma de types donné pour S : le type de (S X Y Z) est alors γ. Comme pour le schéma de types de K, on peut substituer dans le schéma de types de S des schémas de types aux variables α, β et γ et obtenir un nouveau schéma de types pour S. 3.5 Non unicité du schéma de types d’un terme Puisque S et K n’ont pas pas un type unique, il est en général possible de déduire plusieurs schémas de types différents pour un même terme. Comme dans le case de S et K, ces schémas de types différents ne sont pas Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 4 Exemple : déduction d’un schéma de types de I 75 sans rapport entre eux et correspondent à différentes utilisations possibles du terme. Par ailleurs, nous verrons qu’il existe un schéma de type appelé le schéma de types principal et duquel tous les autres se déduisent par substitution de schéma de types aux variables qu’ils contiennent. 3.6 Schéma de types d’une application Proposition IV.5 Soient M et N deux termes, soit α un schéma de types tel que ` (M N ) : α alors il existe un schéma de type β tel que ` M : β → α et ` N : β. Preuve. La démonstration se fait en examinant la déduction qui a permis de conclure ` (M N ) : α. La dernière règle utilisée est forcément celle qui donne le type d’une application. En effet, toutes les autres règles donnent les types de termes atomiques. La dernière étape de la démonstration est donc de la forme : `M :β→α `N :β ` (M N ) : α On retrouve ainsi β. 4 Exemple : déduction d’un schéma de types de I En appliquant les règles du système. Donnons-nous une variable de type ρ, on a la déduction suivante : type-schéma de S avec α≡ρ β ≡ρ→ρ γ ≡ρ type-schéma de K avec α≡ρ β ≡ρ→ρ ` S : (ρ → (ρ → ρ) → ρ) → (ρ → ρ → ρ) → ρ → ρ ` K : ρ → (ρ → ρ) → ρ ` (S K) : (ρ → ρ → ρ) → ρ → ρ type-schéma de K avec α≡ρ β ≡ρ `K :ρ→ρ→ρ ` (S K K) : ρ → ρ `I :ρ→ρ Il est rassurant de constater que ρ → ρ est un schéma de types pour I puisque sa règle de réduction est I X := X. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 76 CHAPITRE IV. THÉORIE DES TYPES Exercice IV.6 Commencer par donner intuitivement les schémas de types des combinateurs B, C, C∗ et W . Puis vérifier qu’on les obtient bien à l’aide du système formel d’affectation de types donnés ci-dessus. théorème~IV.26. Exercice IV.7 Vous convaincre intuitivement que le combinateur (λ+ x · xx) n’a pas de type. théorème~IV.27. 5 Introduction aux variables Pour l’instant, les seuls termes que nous typons sont des termes ne contenant pas de variable. On peut typer un terme contenant des variables à condition de supposer des types pour ces variables. Définition IV.8 Une base de typage ou contexte est un suite de formules : x1 : α1 , . . . , x n : αn , . . . où {x1 , . . . , xn , . . .} est un ensemble qui peut être infini de variables deux à deux différentes et où {α1 , . . . , αn , . . .} est un ensemble de schémas de types 5.1 Nouvelles formules On choisit de démontrer à présent des formules de la forme : x1 : α1 , . . . , x n : αn , . . . ` M : α signifiant que M a le type α sous des hypothèses concernant les types des variables x1 , . . . , xn : x1 : α1 , . . . , xn : αn , . . . 5.2 Nouveaux axiomes Pour cela, on ajoute l’axiome suivant : x1 : α1 , . . . , x n : αn , . . . ` xi : αi et l’on réécrit les trois règles déjà vues en ajoutant une base représentée par le symbole B à gauche du symbole ` dans chacune des règles déjà présentées. Soit : B`M :α→β B`N :α B ` (M N ) : β Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 6 Abstraction et typage 77 B`K:α→β→α B ` S : (α → β → γ) → (α → β) → α → γ Exercice IV.9 Démontrer : f : β1 → β2 → γ, g : α → β1 , h : α → β2 , x : α ` f (g x) (h x) : γ 5.3 Schéma de types d’une application Proposition IV.10 Soit B une base de typage, soient M et N deux termes, soit α un schéma de types tel que B ` (M N ) : α alors il existe un schéma de types β tel que B ` M : β → α et B ` N : β. Preuve. La même qu’en section~3.6. 6 Abstraction et typage Le théorème suivant montre l’intérêt de typer les variables comme nous venons de le faire : Théorème IV.11 Soit x : α, . . . une base de typage, soit β un schéma de types et M un terme tel que : x : α, . . . ` M : β, alors on a : . . . ` (λ+ x · M ) : α → β. Preuve. La démonstration se fait classiquement par induction sur la structure du terme M : – Si M ≡ x, alors β ≡ α et l’on a bien (λ+ x · x) ≡ I dont le schéma de types est α → α. – Si M ≡ y une variable différente de x ou une constante, alors (λ+ x · y) ≡ K y est bien de type α → β. – Si M ≡ P Q alors on a : ` P : γ → β et ` Q : γ. Par hypothèse d’induction, on a : ` λ+ x · P : α → γ → β et ` λ+ x · Q : α → γ. On vérifie alors que : (λ+ x · M ) ≡ S (λ+ x · P ) (λ+ x · Q) est bien de type α → β. Exercice IV.12 Compléter la démonstration ci-dessus. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 78 7 CHAPITRE IV. THÉORIE DES TYPES Réduction et typage On peut démontrer que la réduction := respecte les schémas de types. Théorème IV.13 Soit B une base de typage, soit M et N des termes tels que M := N , soit α un schéma de types tels que B ` M : α, alors on a : B ` N : α. Preuve. La démonstration se fait par récurrence sur la hauteur de la preuve de M := N . Il faut démontrer que la propriété est vraie pour chacun des axiomes. Puis pour chacune des règles d’inférences, il faut démontrer que si la propriété est vraie pour les prémisses de la règle, elle est aussi vraie pour la conclusion de la règle. La démonstration ne pose pas de difficulté particulière et se sert de la propriété de la section~5.3. Exercice IV.14 Rédiger la démonstration de ce théorème. Proposition IV.15 On n’a pas le résultat « inverse » du théorème ci-dessus, ce n’est pas parce que N a un schéma de type que M a le même. Preuve. Prenons M ≡ S K S I et N ≡ K I (S I). On a M := N . On a ` N : α → α mais on n’a pas ` M : α → α. On peut démontrer que le schéma de types principal de (S K S I) est (α → β) → (α → β). Un exemple encore plus significatif est M ≡ S I I I et N ≡ I I (I I). On a aussi M := N . On a ` N : β → β mais M n’a pas de type car (S I I) n’a pas de type. 8 Substitution et typage Théorème IV.16 Soit x : α, . . . une base de typage, soit β un schéma de types et M un terme tel que : x : α, . . . ` M : β, alors si . . . ` N : α, on a . . . ` [N/x]M : β. Preuve. La démonstration se fait par induction sur la structure du terme M . Si M ≡ x, le résultat est évident. Si M ≡ y, une variable différente de x, le résultat est évident. Si M ≡ (P Q), on s’appuie sur l’hypothèse d’induction et sur la propriété de la section~5.3. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 9 Schéma de types principal 9 79 Schéma de types principal Définition IV.17 Soient α et β deux schémas de types, on dit que β est une instance de α s’il existe des variables de type α1 , . . . , αn et des schémas de types β1 , . . . , βn tels que β ≡ [β1 /α1 , . . . , βn /αn ]α. Exemple IV.18 (α → β) → (α → β) est une instance de α → α. Définition IV.19 Soient M un terme, soit α un schéma de types, B une base de typage, on dit que α est le schéma de type principal de M si pour tout schéma de type β tel que B ` M : β on a que β est une instance de α. Théorème IV.20 Tout terme possédant un schéma de types pour une base de typage possède un schéma de type principal pour cette base. Ce schéma de type principal est unique au renommage des variables près. Preuve. (Curry & Hindley 1969). 10 Typage et normalisation forte Théorème IV.21 Tout terme possédant un schéma de types est fortement normalisable, i.e. il est normalisable et toutes les stratégies de réduction le normalisent. Autrement dit, l’arbre de réduction d’un terme typable est fini. Preuve. (Curry et al. 1958). 11 L’isomorphisme de Curry-Howard On remarque que si l’on enlève les termes dans les règles de typage des termes, on obtient les règles suivantes : α1 , . . . , αn , . . . ` αi B`α→β B`α B`β B`α→β→α B ` (α → β → γ) → (α → β) → α → γ Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 80 CHAPITRE IV. THÉORIE DES TYPES Or ces règles sont celles d’un calcul pour la logique des propositions avec l’unique connecteur d’implication →. On peut vérifier sans difficulté le résultat suivant : Proposition IV.22 Soit F une formule de la logique des propositions avec l’unique connecteur d’implication noté →, alors F est un théorème si et seulement s’il existe un terme M tel que ` M : F . Ce résultat qui témoigne d’une analogie très forte entre la logique des propositions et les systèmes de typage est ce que l’on appelle l’isomorphisme de Curry-Howard. Nous le prolongerons plus tard en étendant l’ensemble des types et les règles de typage pour que l’analogie se fasse avec la logique du premier ordre. 12 L’algorithme de Morris L’algorithme de Morris permet de déterminer le schéma de types principal d’un terme lorsque ce type existe ou de savoir si ce schéma de types n’existe pas. – Si le terme est S, son schéma de types principal est donné par l’axiome correspondant dans lequel on aura pris soin de renommer les variables de types en de nouvelles variables. – Si le terme est K, son schéma de type principal est donné par l’axiome correspondant dans lequel on aura pris soin de renommer les variables de types en de nouvelles variables. – Si le terme est une variable, son schéma de type est donné par la base de typage. Si son schéma de types n’est pas donné par la base de typage, le typage échoue. – Si le terme est de la forme (M N ), on calcule récursivement α schéma de type principal de M et β schéma de type principal de N . Si l’un des deux calculs échoue, (M N ) n’a pas de type. Puis : – Si α est une variable de type, on introduit une nouvelle variable de type γ, on remplace partout α par β → γ et le schéma de type principal de (M N ) est γ. – Si α ≡ δ → γ, on pose l’équation β = δ. Cette équation va être résolue. La résolution peut échouer et dans ce cas, le typage échoue. La résolution peut réussir et dans ce cas, elle remplace partout des variables de types par des schémas de types. Le schéma Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 12 L’algorithme de Morris 81 de types principal de (M N ) est alors γ dans lequel des variables de types auront été remplacées. La résolution se décrit ainsi : – si β est une variable de type et si β apparaît dans δ, il n’y a pas de solution et la résolution échoue ; – sinon, si β est une variable de type et si β n’apparaît pas dans δ, on remplace partout β par δ ; – sinon, si δ est une variable de type, on remplace l’équation par δ = β et on continue la résolution sur cette nouvelle équation ; – sinon, on a β ≡ β1 → β2 et δ ≡ δ1 → δ2 , on commence par résoudre β1 = δ1 : si cette résolution échoue, alors toute la résolution échoue ; si cette résolution réussit, on résout ensuite β2 = δ2 , résolution qui peut réussir ou échouer. Présenté ainsi, l’algorithme peut sembler complexe. On peut le résumer ainsi. Si ` M : α → β et ` N : γ, on pose l’équation α = γ. Si cette équation peut être résolue sans circularité, on remplace les variables par leurs valeurs dans β et on obtient le type de (M N ). 12.1 Exemple d’application On considère W ≡def S S (K I). On a : – Schéma de type de W . W ≡ (S S) ( K I), on doit donc calculer les schémas de types principaux de (S S) et (K I) : – Schéma de type de (S S). On doit calculer deux fois le schéma de types de S : – Schéma de type de S. ` S : (α1 → β1 → γ1 ) → (α1 → β1 ) → α1 → γ1 . – Schéma de type de S. ` S : (α2 → β2 → γ2 ) → (α2 → β2 ) → α2 → γ2 . – Résolution de : α1 → β1 → γ1 = (α2 → β2 → γ2 ) → (α2 → β2 ) → α2 → γ2 . qui donne : α1 = α2 → β2 → γ2 β1 → γ1 = (α2 → β2 ) → α2 → γ2 puis : α1 = α2 → β2 → γ2 β1 = α2 → β2 γ1 = α2 → γ2 Il n’y a aucune circularité. On remplace donc les trois variables par leurs valeurs dans (α1 → β1 ) → α1 → γ1 pour obtenir le schéma de type de (S S) : ` (S S) : ((α2 → β2 → γ2 ) → α2 → β2 ) → (α2 → β2 → γ2 ) → α2 → γ2 . – Schéma de type de (K I). On doit calculer les schémas de types de K et I : Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 82 CHAPITRE IV. THÉORIE DES TYPES – Schéma de type de K. ` K : α3 → β3 → α3 . – Schéma de type de I. ` I : α4 → α4 . On l’avait calculé plus haut. – La résolution de α3 = α4 → α4 est immédiate et fournit le type de (K I) : ` (K I) : β3 → (α4 → α4 ). – Résolution de : (α2 → β2 → γ2 ) → α2 → β2 = β3 → (α4 → α4 ). Qui donne : β3 = α2 → β2 → γ2 α4 → α4 = α2 → β2 Puis : β3 = α2 → β2 → γ2 α4 = α2 α4 = β2 Après remplacement du premier α4 par α2 : β3 = α2 → β2 → γ2 α2 = β2 Après remplacement de α2 par sa valeur dans la première équation : β3 = β2 → β2 → γ2 α2 = β2 Comme il n’y a pas de circularité, on remplace β3 et α2 dans : (α2 → β2 → γ2 ) → α2 → γ2 pour obtenir le type de (S S (K I)) : ` W : (β2 → β2 → γ2 ) → β2 → γ2 On obtient donc le schéma de types principal de W : ` W : (β → β → γ) → β → γ Exercice IV.23 Vérifier à l’aide de l’algorithme de Morris que (S I I) n’a pas de schéma de types. Exercice IV.24 Vérifier à l’aide de l’algorithme de Morris que Y n’a pas de schéma de types. Pour Y , on prendra le schéma de types de W calculé ci-dessus. théorème~IV.28. N.B. IV.25 Les deux exercices précédents montrent donc que si l’on ne considère que des termes typables alors la récursivité et l’auto-application sont interdites. 13 Des variantes dans le typage Supposons que l’on introduise qu’un seul type de base alors le contrôle de type ne contrôle plus la nature des arguments mais seulement leurs nombres et leurs qualités fonctionnelles. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 14 Des systèmes de typage plus expressifs 83 On peut vérifier que de nombreux termes n’ont pas de types dans le système présenté. En particulier, la récursivité sous toutes ses formes en est bannie. Seuls certains algorithmes itératifs passent la barrière du typage grâce aux entiers de Church. Il existe d’autres systèmes de typage plus laxistes qui tolèrent la récursivité sous certaines formes mais ils ne garantissent plus alors la propriété de normalisation forte de la section~10. Le problème est de savoir jusqu’où on désire aller dans le contrôle. Entre un système qui contrôle même la terminaison des réductions, et un système qui ne contrôle que le nombre des arguments dans une application, il y a une marge énorme. Pour un mathématicien, la normalisation forte fait partie des propriétés qu’il recherchera. Pour un informaticien, elle n’a aucun intérêt puisqu’elle suppose l’absence de récursivité générale et la limitation des boucles aux répétitions statiquement finies. 14 Des systèmes de typage plus expressifs Il existe des systèmes de typage bien plus expressifs que celui présentés. Ces systèmes ont été conçus pour pallier à la pauvreté des théories typées. – Les systèmes avec types dépendants. Un type dépendant est un type paramétré par une donnée (un terme) à l’instar du type tableau qui est paramétré par un entier, sa longueur. On introduit alors deux nouveaux types : Y – B(x) qui est intuitivement le type des fonctions prenant un x:A argument x de type A et dontY le résultat est de type B(x). Ainsi, A → B n’est autre que le type B où x ne figure pas dans B. x:A – X B(x) qui est le type des couples formés d’un élément x de type x:A A et d’un X élément y de type B(x). Ainsi, A × B n’est autre que le type B où x ne figure pas dans B. x:A – Les systèmes avec types polymorphes. Un type polymorphe est un type paramétré par un autre type. Ainsi le type tableau est-il normalement paramétré par le type des éléments qu’il contient. – Les systèmes avec types inductifs. Un type inductif est la donnée Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 84 CHAPITRE IV. THÉORIE DES TYPES d’un procédé inductif de construction des objets de ce type, procédé qui permet aussi de définir par induction des fonctions ayant des arguments de ce type. Par exemple, le type N des entiers naturels peut être défini par une constante 0 : N et un symbole de fonction S : N → N. Une fonction f sur les entiers naturels peut alors être inductivement définie par f (0) et par le procédé de calcul permettant d’obtenir f (n + 1) à partir de f (n). 15 Présentation à la Church La présentation de la théorie des types que nous avons donnée est celle de Curry : un terme possède un schéma de type principal, tous ses autres schémas de types et tous ses types sont des instances de ce schéma de types principal. Chaque type d’un terme correspond à une utilisation particulière du terme avec des arguments ayant un type particulier. Dans une présentation à la Church, on introduit un combinateur K différent pour chacune des instances γ de son schéma de type, ce combinateur particulier est alors noté K γ . De ce fait, chaque combinateur et chaque variable se retrouve marqué par son type. La notation est donc beaucoup plus lourde mais les types sont uniques. Les résultats sont les mêmes mais les démonstrations sont beaucoup plus simples. 16 Le typage en λ-calcul Pour obtenir le système de typage du λ-calcul, on supprime les axiomes donnant des types à S et K et on les remplace par la règle : x : α, . . . ` M : β . . . ` λx.M : α → β On a alors sensiblement les mêmes résultats en Logique Combinatoire et en λ-calcul. On a également les deux présentations : à la Curry et à la Church. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 17 Solution des exercices 17 85 Solution des exercices Solution IV.26 (théorème~IV.6) ` B : (β → γ) → (α → β) → α → γ ` C : (β → α → γ) → (α → β → γ) ` C∗ : α → (α → β) → β ` W : (α → α → β) → α → β Solution IV.27 (théorème~IV.7) Si (λ+ x · xx) avait un type, celui-ci serait de la forme α → β puisque (λ+ x · xx) doit prendre un argument. Donnons-lui alors un argument X de type α, on a (λ+ x · xx)X := XX qui est de type β. Considérons la première occurrence de X dans (X X) comme une fonction et la deuxième comme son argument. Pour que (X X) soit de type β, il faudrait que X soit à la fois de type α pour la deuxième occurrence de X, et de type α → β pour la première occurrence de X. Il faudrait α = α → β. Solution IV.28 (théorème~IV.24) On a : ` S : (α1 → β1 → γ1 ) → (α1 → β1 ) → α1 → γ1 ` I : α2 → α2 On pose l’équation : α1 → β 1 → γ1 = α2 → α2 qui donne : α1 = α2 α2 = β 1 → γ1 On effectue les substitutions de variables et on obtient : ` (S I) : ((β1 → γ1 ) → β1 ) → (β1 → γ1 ) → γ1 On a : ` I : α3 → α3 On pose l’équation : α3 → α3 = (β1 → γ1 ) → β1 qui donne : α3 = β 1 → γ1 α3 = β 1 et donc : β1 = β1 → γ1 qui est circulaire. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 86 Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 87 V L’ ISOMORPHISME DE C URRY-H OWARD Citons TO H.B. CURRY : ESSAYS ON COMBINATORY LOGIC J.R. Hindley & J.P. Seldin ed. Academic Press 1980 et PROOFS AND TYPES J.Y. Girard & Y. Lafont & P. Taylor Cambridge Tracts in T.C.S., Cambridge, Angleterre 1989 Le résultat décrit dans cette section porte le nom d’isomorphisme mais ce n’est pas véritablement un isomorphisme car un isomorphisme suppose des structures de part et d’autre. L’isomorphisme de Curry-Howard est une identité de fonctionnement entre la Logique Combinatoire typée de Curry et la logique intuitionniste. Il se traduit par des identifications : – une preuve est identifiée à un terme fortement normalisable de la Logique Combinatoire typée ; – une formule est identifiée à un type ; – si une formule est un théorème, le terme associé à sa preuve est typable et son type est la formule ; – enfin, le processus d’élimination des coupures que nous avons vu précédemment procède par transformation de preuves, ces transformations de preuves se traduisent par des réductions sur les termes Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 88 CHAPITRE V. L’ISOMORPHISME DE CURRY-HOWARD associées aux preuves si bien qu’une preuve sans coupures correspond à un terme en forme normale. L’isomorphisme de Curry-Howard concerne la logique intuitionniste en déduction naturelle et non en calcul de séquents. Et nous venons de parler de coupures... Examinons tout d’abord comment une démonstration en calcul des séquents se traduit en déduction naturelle. Puis voyons ce que l’application d’une règle de coupure devient lors de cette traduction. Nous décrirons ensuite l’isomorphisme de Curry-Howard. 1 Traduire le calcul des séquents Une preuve en calcul des séquents peut être traduite en preuve en déduction naturelle. Inversement, une preuve en déduction naturelle peut être traduite en une preuve en calcul des séquents mais pas de manière unique. Une preuve en déduction naturelle d’une formule B sous des hypothèses A1 , . . . , An est traduite en la preuve en calcul des séquents du séquent A1 , . . . , An ` B. Et réciproquement. 1.1 La traduction Examinons la traduction du calcul des séquents intuitionniste en déduction naturelle. Cette traduction est définie par induction sur la hauteur de la preuve du séquent. – L’axiome d’identité A ` A est transforme en la déduction : [A] A – Si la dernière règle de la preuve en calcul des séquents est une règle de coupure : Γ ` A ∆, A ` B (cut) Γ, ∆ ` B Par hypothèse d’induction, il existe des preuves en déduction naturelle : [Γ] [∆] [A] .. .. .. . . . A B Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 1 Traduire le calcul des séquents 89 Pour obtenir la preuve en déduction naturelle du séquent conclusion de la règle de coupure, il suffit de prendre la deuxième preuve donnée ci-dessus et de remplacer toutes les occurrences de [A] par la première preuve. On obtient alors une preuve de la forme : [Γ] .. . [∆] .. . A .. . B – La règle d’échange ne correspond à rien de particulier en déduction naturelle car une preuve en déduction naturelle sous des hypothèses A et B est aussi une preuve en déduction naturelle sous des hypothèses B et A. – La règle d’affaiblissement à gauche se traduit en déduction naturelle par l’ajout d’une hypothèse inutile dans une déduction. – La règle de contraction à gauche ne correspond à rien de précis non plus car une preuve sous des hypothèses A et A est aussi une preuve sous l’hypothèse A. – Concernant les règles des connecteurs logiques : – Une règle à droite en calcul des séquents correspond à une règle d’introduction en déduction naturelle. Par exemple : Γ`A ∆`B Γ, ∆ ` A ∧ B devient la déduction : [Γ] .. . [∆] .. . A B A∧B – Une règle à gauche en calcul des séquents se traduit de manière évidente en une règle d’élimination en déduction naturelle. Par exemple, pour traduire : Γ, A ` C Γ, A ∧ B ` C Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 90 CHAPITRE V. L’ISOMORPHISME DE CURRY-HOWARD On considère la preuve en déduction naturelle correspondant au séquent hypothèse de la règle : [Γ] .. . [A] .. . C et on remplace cette preuve par : [A ∧ B] [Γ] .. . A .. . C 2 Propriétés de la traduction Cette traduction associe à chaque preuve d’un séquent A1 , . . . , An ` B la preuve en déduction naturelle de la formule B sous les hypothèses A1 , . . . , An . Il est possible que des preuves différentes d’un même séquent soit traduites en la même preuve en déduction naturelle. Par exemple, la preuve : A`A B`B A, B ` A ∧ B A ∧ C, B ` A ∧ B A ∧ C, B ∧ D ` A ∧ B et la preuve : A`A B`B A, B ` A ∧ B A, B ∧ D ` A ∧ B A ∧ C, B ∧ D ` A ∧ B sont toutes les deux traduites en la preuve en déduction naturelle : [A ∧ C] [B ∧ D] A B A∧B Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 3 La coupure en déduction naturelle 91 Donc pour une même preuve en déduction naturelle, on pourrait trouver plusieurs preuves en calcul des séquents. C’est ce que montre l’exemple ci-dessus. Il n’y a pas correspondance bi-univoque entre le calcul des séquents et la déduction naturelle. En un sens, on pourrait admettre que la déduction naturelle présente l’essence de la preuve alors que le calcul des séquents présente des preuves avec beaucoup de manipulations syntaxiques qui sont représentées par les règles structurelles et par l’ordre d’application des règles. 3 La coupure en déduction naturelle Lorsque nous parlons de preuves sans coupures, nous supposons que nous sommes en calcul des séquents puisque la règle du cut est une règle d’inférence de ce type de calcul. L’équivalent de la coupure en déduction naturelle est un bout de preuve où une règle d’introduction introduit une formule qui est éliminée un peu plus bas. En effet, la règle de coupure du calcul des séquents s’énonce : Γ`A ∆, A ` B Γ, ∆ ` B Pour obtenir la preuve en déduction naturelle de B sous les hypothèses Γ, ∆ : – On considère d’abord la preuve et sa traduction en déduction naturelle de Γ ` A. À moins d’être une preuve triviale, celle-ci a utilisé une règle à droite qui a produit la formule A. Cette règle est éventuellement suivie de quelques règles structurelles qui ne sont que du méta-sucre pour un système de déduction naturelle. Cette preuve se traduit en déduction naturelle par une preuve avec une introduction de la formule A. – Maintenant, considérons la preuve et sa traduction en déduction naturelle de ∆, A ` B. Celle-ci utilisera tôt ou tard une règle à gauche qui fera apparaître A dans une séquent. Nous avons vu que les règles à gauche devenaient des règles d’élimination en déduction naturelle. – La combinaison de ces deux preuves comme il a été expliqué plus haut fournit une preuve en déduction naturelle où une règle d’introduction fournissant la formule de la coupure est suivie d’une règle d’élimination. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 92 4 CHAPITRE V. L’ISOMORPHISME DE CURRY-HOWARD L’isomorphisme, version simple Considérons une logique des propositions intuitionniste avec le seul connecteur d’implication noté ⇒. Son axiomatisation hilbertienne est : A⇒B A B A ⇒ (B ⇒ A) (A ⇒ B ⇒ C) ⇒ (A ⇒ B) ⇒ A ⇒ C C’est une des axiomatisations possibles mais rappelons qu’elles sont toutes équivalentes en ce sens qu’une démonstration avec une axiomatisation peut être refaite différemment avec une autre car les règles de l’une sont dérivables dans l’autre. Considérons à présent la Logique Combinatoire typée avec une présentation à la Curry : `M :α→β `N :α ` (M N ) : β ` K : α → (β → α) ` S : (α → β → γ) → (α → β) → α → γ 4.1 Correspondance formule-type On peut établir de manière triviale une fonction bijective Π des formules vers les types : – à chaque variable propositionnelle on associe une variable de type distincte ; par exemple : Π(A) ≡def α, Π(B) ≡def β, Π(C) ≡def γ, etc. – puis Π(A ⇒ B) ≡def Π(A) → Π(B). 4.2 Correspondance preuve-inférence de type De manière tout aussi triviale, on peut associer de manière bijective les preuves en déduction naturelle et les inférences de type. Plus précisément, à toute preuve d’une formule A, on peut associer de manière bijective un terme fermé M de la Logique Combinatoire et une preuve de ` M : Π(A). Cette bijection qui est définie par induction sur la hauteur de la preuve : Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 5 Quelles conséquences ? 93 – Si la preuve est de hauteur strictement supérieure à 0, c’est qu’elle se termine par une application de la règle du modus ponens : A⇒B A B Par hypothèse, il existe un terme M et une inférence de ` M : Π(A ⇒ B), c’est-à-dire une inférence de ` M : Π(A) → Π(B). Toujours par hypothèse d’induction, il existe aussi une terme N et une inférence de ` N : Π(A). On prolonge ces deux inférences par : ` M : Π(A) → Π(B) ` N : Π(A) ` (M N ) : Π(B) pour obtenir une inférence de ` (M N ) : Π(B). – Si la preuve est de hauteur 0, c’est qu’elle n’est constituée que de l’un des deux axiomes. On vérifie alors de manière triviale qu’il suffit de prendre le terme K pour le premier axiome et le terme S pour le deuxième. Inversement, si l’on possède une inférence de type ` M : α, il suffit de remplacer toutes les expressions de la forme ` X : T figurant dans cette inférence par Π−1 (T ) pour obtenir une preuve en déduction naturelle de Π−1 (α). 5 Quelles conséquences ? À toute preuve en déduction naturelle correspond de manière bijective un terme typable de la Logique Combinatoire. Ce terme caractérise la preuve, il peut être considéré comme étant la preuve tout autant que la preuve elle-même. On peut reconstruire la preuve en inférant le type du terme. Le terme est une syntaxe particulière de la preuve. Comme ce terme est typable, il est fortement normalisable. 6 Étendons l’isomorphisme à la conjonction Considérons à présent la conjonction déterminée par les axiomes suivants que nous ajoutons à notre système hilbertien : A ⇒ B ⇒ (A ∧ B) (A ∧ B) ⇒ A (A ∧ B) ⇒ B Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 94 CHAPITRE V. L’ISOMORPHISME DE CURRY-HOWARD Étendons également la Logique Combinatoire avec un combinateur de formation de paires π tel que (π A B) représente la paire des deux éléments A et B. Ajoutons également les deux combinateurs projections πk , k ∈ {1, 2} tels que π1 (π A B) = A et π2 (π A B) = B. Cela ne pose aucun problème puisque nous savons modéliser ces trois nouveaux combinateurs. Étendons aussi la théorie des types avec une nouvelle opération de construction de types : si α et β sont des schémas de types alors (α × β) est un schéma de types. Intuitivement, (α × β) est le produit cartésien de α et β, c’est-à-dire l’ensemble des paires formées d’un élément de type α et d’un élément de type β. On se donne également les règles concernant ce nouveau schéma de types : ` π : α → β → (α × β) ` π1 : (α × β) → α ` π2 : (α × β) → β Ces règles sont intuitivement évidentes si l’on considère les significations intuitives des éléments qu’elles contiennent. On peut ainsi étendre de manière évidente l’isomorphisme de CurryHoward. 7 Étendons l’isomorphisme à la disjonction Les axiomes de la disjonction que nous devons rajouter à notre système hilbertien sont : A ⇒ (A ∨ B) B ⇒ (A ∨ B) (A ⇒ C) ⇒ (B ⇒ C) ⇒ (A ∨ B) ⇒ C On appelle union disjointe de deux ensembles, un ensemble contenant à la fois les éléments des deux ensembles mais en gardant artificiellement les duplicatas générés par cette union. On pose en général la définition : A ⊕ B ≡def {[0, a], a ∈ A} ∪ {[1, b], b ∈ B} qui permet de représenter l’union disjointe de deux ensembles A et B. Alors soit [x, y] ∈ A ⊕ B, si x = 0 alors y ∈ A et si x 6= 0 alors y ∈ B. Les Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 8 Étendons l’isomorphisme à la négation 95 entiers 0 et 1 sont modélisés en Logique Combinatoire par les numéraux de Church 0 et 1. Le test d’égalité à zéro est modélisé par le terme z. On peut modéliser l’opération inl telle que inl (x) = [0, x] et l’opération inr (x) = [1, x]. On peut aussi modéliser l’opération choice telle que : f (a) si x = [0, a] choice(f )(g)(x) = g(b) si x = [1, b] Ces trois fonctions étant modélisables en Logique Combinatoire, on les ajoute à l’ensemble des constantes. On ajoute également le schéma de types α ⊕ β où α et β sont des schémas de types. Et on ajoute les trois règles de typage suivantes : ` inl : α → (α ⊕ β) ` inr : β → (α ⊕ β) ` choice : (α → γ) → (β → γ) → (α ⊕ β) → γ Ici aussi la justification de ces règles est relativement évidentes si l’on en a compris les éléments constituants. On prolonge ainsi l’isomorphisme de Curry-Howard à une logique intuitionniste pour les connecteurs ⇒, ∧ et ∨. 8 Étendons l’isomorphisme à la négation On choisit la négation définie par ¬A ≡def A ⇒⊥. L’axiome intuitionniste Hilbertien de la négation peut être choisi comme étant : ⊥⇒ A mais nous lui préférerons la règle : ⊥ A On introduit en Logique Combinatoire le type qui est le type vide. Aucun terme ne peut posséder le type . On ajoute alors la règle de typage : `M : `M :α On voit tout de suite que l’isomorphisme de Curry-Howard se prolonge à la logique intuitionniste propositionnelle tout entière. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 96 9 CHAPITRE V. L’ISOMORPHISME DE CURRY-HOWARD Les types dépendants Afin de pouvoir étendre l’isomorphisme de Curry-Howard à la logique du premier ordre, il est nécessaire d’introduire des types dépendants. En logique du premier ordre, on a un domaine avec des constantes appartenant au domaine, des fonctions à arguments et résultats dans le domaine et de prédicats à arguments dans le domaine. Un type dépendant est un type paramétré par une donnée, par exemple un terme de la Logique Combinatoire. Ainsi, un type « tableau » est au moins paramétré par un entier qui est leur longueur 1 . N.B. On peut bien entendu formaliser la notion de type dépendant en donnant des règles de formation de type et des règles de typage mais cela nous entraînerait trop loin. Nous nous contenterons d’une approche informelle. 10 L’isomorphisme et la quantification universelle N.B. Cette section reste informelle. Q Soit β(x) un type dépendant, on introduit x:α β(x) le type des fonctions qui ont un résultat de type β(x) lorsque leur argument x est de type α. Q N.B. Alors α → β est équivalent à x:α β où x n’apparaît pas dans β. Il est alors possible de trouver des règles logiques pour ∀x · A(x) et des Q règles de typages pour x:α β(x) qui prolonge l’isomorphisme de CurryHoward à la quantification universelle. 11 L’isomorphisme et la quantification existentielle N.B. Cette section reste informelle. P Soit β(x) un type dépendant, on introduit x:α β(x) le type des couples formés d’un élément x de type α et d’un élément y de type β(x). 1. Un type tableau est aussi paramétré par un autre type : on dit un tableau de longueur N contenant des objets de types T . On entre alors dans le domaine des types polymorphes. Les types polymorphes peuvent aussi être formalisés. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 12 Utilisation informelle 97 N.B. Alors α × β est équivalent à P où x n’apparaît pas dans β. x:α β Il est alors possible de trouver des règles logiques pour ∃x · α(x) et des P règles de typages pour x:α β(x) qui prolonge l’isomorphisme de CurryHoward à la quantification existentielle. 12 Utilisation informelle Imaginons que l’on prouve en déduction naturelle une formule de la forme : ∀x · (P (x) ⇒ ∃y · Q(x, y)) Cette formule est identifiée au type : ! Y x:α 0 P (x) → X 0 Q (x, y) y:α où P 0 (x) et Q0 (x, y) sont les types correspondant respectivement à P (x) et Q(x, y). Le terme F associé à la preuve de la formule par l’isomorphisme de Curry-Howard possède ce type. Donnons-nous un x normalisable tel que P (x) alors : X ` F (x) : P 0 (x) → Q0 (x, y) y:α Si z est le terme associé à une preuve de P (x), on a ` z : P 0 (x) et : X ` F (x)(z) : Q0 (x, y) y:α Donc F (x)(z) est un couple (πyp) où p est un terme associé à une preuve de Q(x, y). On peut donc calculer le y associé à un x tel que P (x) par π1 (F (x)(z)). N.B. Nous verrons dans le chapitre suivant un système complet, l’arithmétique fonctionnelle du second ordre AF2 , entièrement basé sur l’isomorphisme de Curry-Howard. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 98 13 CHAPITRE V. L’ISOMORPHISME DE CURRY-HOWARD L’isomorphisme en table Côté logique Côté fonctionnel Côté informatique preuve terme fortement normalisable programme qui se termine coupure réduction étape d’exécution preuve sans coupures forme normale valeur formule type spécification conjonction (∧) produit cartésien (×) enregistrement (record) disjonction (∨) union disjointe (⊕) type variant (union) implication (⇒) type fonctionnel (→) Q quant. universelle (∀) produit dépendant ( quant. existentielle (∃) P somme dépendante ( ) contradiction (⊥) type vide () 14 ) Conclusions L’isomorphisme de Curry-Howard — la logique doit beaucoup à H.B. Curry et à son souci de rester simple — montre une analogie très forte, presque une identité, entre le système de typage de la Logique Combinatoire, théorie des fonctions calculables, et la logique intuitionniste, logique des preuves constructives. Nous avons montré cet isomorphisme avec la Logique Combinatoire mais il se montre de la même manière avec le λ-calcul. Certains préféreront une théorie des types à la Church ou encore considérer un λ-calcul typé mais ce n’est absolument pas nécessaire. On voit même des ouvrages qui présentent la théorie typée comme étant LA THÉORIE alors que la théorie Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 14 Conclusions 99 non typée a précédé les besoins de typage qui étaient rendus nécessaires dans certains buts précis. Devant le manque d’expressivité de la théorie typée, Logique Combinatoire ou λ-calcul, on a développé des systèmes de types plus expressifs (types dépendants, types inductifs, types polymorphes) qui sont présentés comme des solutions pour rendre la théorie plus expressive d’un point de vue fonctionnel. Mais n’oublions pas que la théorie était pleinement expressive sans l’introduction du typage : toutes les fonctions calculables y sont représentables. L’introduction du typage concernant les fonctions est une aberration car on restreint fortement le pouvoir d’expression de la théorie à moins de la complexifier outrageusement et on n’y apporte rien de plus qu’un vague contrôle sémantique sans intérêt comme l’ont si bien démontré les langages LISP et Scheme. De même, nous avons montré l’isormorphisme en utilisant un système hilbertien de déduction naturelle mais on aurait pu le montrer avec tout autre système de déduction naturelle. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 100 Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 101 VI R ÉALISABILITÉ Citons FOUNDATIONS OF CONSTRUCTIVE MATHEMATICS METAMATHEMATICAL STUDIES M.J. Beeson Springer Verlag, 1985 et INTRODUCTION TO METAMATHEMATICS S.C. Kleene Biblioteca Mathematica, North Holland 1952 et INTUITIONNISM, AN INTRODUCTION A. Heyting Studies in Logic, North Holland 1956 On rappelle que la notion de preuve est au centre de la logique intuitionniste. En cela, elle se distingue de la logique classique pour qui seule la notion de vérité est importante. La théorie de la réalisabilité de Kleene fait le lien entre l’aspect constructif de la logique intuitionniste et la notion de processus calculable. Elle permet d’extraire des programmes à partir de preuves d’existence. Elle est à la base de plusieurs systèmes de synthèse de programmes. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 102 CHAPITRE VI. RÉALISABILITÉ Dans ce chapitre, nous allons illustrer la réalisabilité à travers la théorie EON 1 de M.J. Beeson. 1 La réalisabilité de Kleene La théorie de la réalisabilité associe des objets aux formules prouvées. Ces objets sont construits tout au long de la preuve de la formule et sont appelés des réalisations. Kleene avait associé des entiers, codage de God̈el oblige, aux formules. Ces entiers étaient les codages de structures de données ou de fonctions calculables. On peut également associer, et ce n’est pas fondamentalement différent, des objets de plus haut niveau comme des λ-expressions ou des termes de la Logique Combinatoire. Le type et la forme des objets que l’on associe aux formules prouvées dépend de ce que l’on veut démontrer avec la réalisabilité. C’est ce que nous allons faire avec la théorie EON de M. Beeson en associant aux formules prouvables des termes de la Logique Combinatoire. Il est préférable d’utiliser les combinateurs plutôt que les λ-expressions afin de ne pas mélanger l’opérateur de liaison de variable λ avec les quantificateurs logiques (∀ et ∃) qui lient également les variables. La définition de la substitution, cf. section~1.8, devient alors insurmontable. 2 Le langage d’EON Syntaxe. Dans cette section, on notera parfois l’application (M N ) sous la forme plus classique M (N ). Les réalisations d’EON sont des termes de la Logique Combinatoire auxquels on aura rajouté une opération primitive permettant de fabriquer des paires d’objets, ainsi que les deux projections associées. On notera la paire de deux objets a et b par [a, b]. On se rappelle que la paire [a, b] est construite avec le combinateur π ≡def λ+ a · λ+ b · λ+ x · x a b. On a π a b = [a, b]. Les deux projections sont notées π1 et π2 . On a π1 ([a, b]) = a et π2 ([a, b]) = b. On a π1 ≡def λ+ p·p K et π2 ≡def λ+ p·p (K I). 1. Elementary theory of Operations and Numbers Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 3 La partialité 103 On ajoute également les entiers, les booléens et leurs opérations tels qu’on les avaient définis lors de l’étude de la Logique Combinatoire. N.B. Nous avons vu que l’on pouvait modéliser tous ces objets en Logique Combinatoire, cela ne pose donc pas de problèmes de les considérer comme primitifs. Les formules sont des formules du langage de la logique du premier ordre intuitionniste. N.B. En particulier la négation est définie par ¬A ≡def (A ⇒⊥) où ⊥ est une contradiction, 0 = 1 par exemple. 3 La partialité Un terme M de la Logique Combinatoire peut avoir ou ne pas avoir de forme normale. On introduit la notion « le terme M a une valeur » qui est une notion plus forte que celle de normalisabilité, que l’on note M ↓ et qui est définie par : – les constantes et les variables ont une valeur ; – si (M N ) ↓ alors M ↓ et N ↓ ; – (λ+ x · M ) ↓ ; – si M ↓ et N ↓ alors [M, N ] ↓ . 4 4.1 La logique Les termes Les termes de la logique sont les termes de notre Logique Combinatoire. 4.2 Les prédicats On ajoute le prédicat M ↓ , signifiant M a une valeur, où M est un terme. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 104 4.3 CHAPITRE VI. RÉALISABILITÉ Le système formel Le système est un système de déduction naturelle intuitionniste dont on retrouvera les règles en section~3.4 du chapitre~II « Formalismes logiques». 4.4 De nouvelles règles On reprend les règles usuelles de la logique intuitionniste du premier ordre à l’exception de la règle d’introduction du quantificateur existentiel qui devient : .. . A(M ) ∧ M ↓ ∃x · A(x) ∃intro et la règle d’élimination du quantificateur universel qui devient : .. . [∀x · A(x)] ∧ M ↓ A(M ) 4.5 ∀elim L’égalité On ajoute à la logique un prédicat d’égalité tel que si M = N alors M et N ont une valeur et ont la même valeur. On a l’axiome : M ↓⇒M =M 4.6 L’égalité faible On ajoute un prédicat d’égalité faible M ' N qui est vraie si M = N ou bien si ni M ni N n’ont de valeur. On admet l’axiome suivant : M ' N ⇒ (A(M ) ⇒ A(N )) Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 5 Les entiers 5 105 Les entiers On introduit un prédicat M ∈ N signifiant que M est un entier naturel. On introduit la notation : ∀x ∈ N · A(x) ≡def ∀x · (x ∈ N ⇒ A(x)) On se donne l’axiome de récurrence sur les entiers : [A(0) ∧ ∀x ∈ N · (A(x) ⇒ A(x + 1))] =⇒ ∀x ∈ N · A(x) On se donne l’axiome de cohérence : ∀x ∈ N · ¬(x + 1 = 0) 6 Définition de la réalisabilité On associe à toute formule A un autre formule (e : A) de la même logique où e est une variable n’apparaissant pas dans A. (e : A) est une méta-notation désignant une formule que l’on peut construire avec les définitions qui suivent. On dit que e est la réalisation ou la justification de A. Si M est un terme alors (M : A) représente la formule (e : A) dans laquelle on a substitué M à e. Définition. Soit A une formule et e ∈ / F V (A), on définit (e : A) par induction sur la formule A : – – – – – – si A est atomique alors e : A ≡def A ; e : A ∧ B ≡def π1 (e) : A ∧ π2 (e) : B ; e : A ⇒ B ≡def ∀x · [x : A ⇒ e(x) ↓ ∧e(x) : B] ; e : ∀x · A(x) ≡def ∀y · [e(y) ↓ ∧e(y) : A(y)] ; e : ∃x.A(x) ≡def π2 (e) : A(π1 (e)) ; e : A ∨ B ≡def [π1 (e) ∈ N ] ∧ [π1 (e) = 0 ⇒ π2 (e) : A; π2 (e) : B]. où [A ⇒ B; C] ≡def [A ⇒ B] ∧ [¬A ⇒ C] est une méta-notation. N.B. Si l’on décide de prononcer (e : A) «e est une preuve intuitionniste Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 106 CHAPITRE VI. RÉALISABILITÉ de A», on retrouve approximativement la définition des preuves intuitionniste de Heyting-Kolmogorov donnée en section~8 du chapitre~I «Introduction à la logique». On peut donc voir cette définition de la réalisabilité comme une manière d’internaliser la notion de preuve intuitionniste, c’est-à-dire de la décrire en utilisant le langage de la logique elle-même. Définition. On dit qu’une formule A est réalisable s’il existe un terme M ayant les mêmes variables libres que A tel que l’on puisse prouver M ↓ ∧M : A. Le terme M est appelé une réalisation de A. Exemple. Calculons e : ∀x · [P (x) ⇒ ∃y · Q(x, y)] où P (x) et Q(x, y) sont deux formules quelconques. On a : e : ∀x · [P (x) ⇒ ∃y · Q(x, y)] ≡ ∀x · [e(x) ↓ ∧(e(x) : P (x) ⇒ ∃y · Q(x, y))] ≡ ∀x · [e(x) ↓ ∧∀z · [z : P (x) ⇒ e(x)(z) ↓ ∧e(x)(z) : ∃y · Q(x, y)]] ≡ ∀x · [e(x) ↓ ∧∀z · [z : P (x) ⇒ e(x)(z) ↓ ∧π2 (e(x)(z)) : Q(x, π1 (e(x)(z))]] N.B. On remarque donc que s’il existe e réalisant la formule et si l’on se donne un x et une réalisation z de P (x) alors y = π1 (e(x)(z)) vérifie Q(x, y). C’est cette propriété qui va être utilisée pour obtenir un programme à partir d’une preuve. Réalisabilité et négation. Calculons (e : ¬A) où A est une formule quelconque. On a : e : ¬A ≡ e : A ⇒⊥ ≡ ∀x · [x : A ⇒ e(x) ↓ ∧e(x) :⊥] ≡ ∀x · [x : A ⇒ e(x) ↓ ∧ ⊥] ⇒ ∀x · [x : A ⇒⊥] car e(x) ↓ ∧ ⊥ ⇒ ⊥ ≡ ∀x · [¬(x : A)] Donc e : ¬A ⇒ (∀x · ¬(x : A)), c’est-à-dire que si A est réalisable, ¬A ne peut pas l’être. Exercice. Vérifier : e : ∀n ∈ N · A(n) ≡ ∀n ∈ N · e(n) ↓ ∧e(n) : A(n) Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 7 Réalisabilité des formules négatives 107 Exercice. Vérifier : e : ∃n ∈ N · A(n) ≡ π1 (e(n)) ∈ N ∧ π2 (e(n)) : A(π1 (e(n))) Propriété. On a : [M/x](e : A) ≡ e : [M/x]A si x 6= e. Démonstration. Par induction. La démonstration est longue car il faut traiter tous les cas mais elle ne pose pas de difficultés particulières. À faire en exercice. 7 Réalisabilité des formules négatives Définition. Une formule négative est une formule ne contenant ni le connecteur de disjonction ∨ ni le quantificateur existentiel ∃. Exemple. Par construction, toutes les formules (e : A) sont négatives. Théorème. Une formule négative prouvable est réalisable. Plus précisément, si A est une formule négative alors : – il existe un terme M ayant les mêmes variables libres que A et tel que A ⇒ [M ↓ ∧(M : A)] ; – (Q : A) ⇒ A pour tout Q. Démonstration. La démonstration se fait par induction sur la structure de la formule (Beeson 1985). – Si A est atomique, on choisit M ≡def (λ+ x1 , . . . , xn .K), où {x1 , . . . , xn } = F V (A) alors : A ⇒ [K ↓ ∧A] car K ↓ ≡ [K ↓ ∧(K : A)] car K : A ≡ A ≡ A ⇒A – Si A ≡ B ∧ C, alors : A ≡ B∧C ⇒ (MB ↓ ∧MB : B) ∧ C ⇒ (MB ↓ ∧MB : B) ∧ (MC ↓ ∧MC : C) ⇒ (MB ↓ ∧MC ↓ ) ∧ (MB : B ∧ MC : C) ⇒ [MB , MC ] ↓ ∧[MB , MC ] : (B ∧ C) ≡ M ↓ ∧(M : A) Q:A hyp. d’induction sur B hyp. d’induction sur C ≡ Q : (B ∧ C) ≡ π1 (Q) : B ∧ π2 (Q) : C ⇒ B∧C hyp. d’induction ≡ A – Si A ≡ B ⇒ C, supposons une variable q telle que q : B, par hyp. d’induction, on a (q : B) ⇒ B, si on suppose A, alors on en déduit C. Puisque C, toujours Q:A Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 108 CHAPITRE VI. RÉALISABILITÉ par hypothèse d’induction, il existe MC tel que MC ↓ ∧(MC : C). On choisit M ≡def λ+ q.MC . On a M ↓ par définition. Et l’on vient de construire M pour que si q : B alors M (q) : C ≡ (λ+ q.MC )(q) : C = MC : C soit vrai. Maintenant, si Q : (B ⇒ C), supposons B, par hyp. d’induction, il existe MB tel que MB : B. On a donc Q(MB ) : C et donc C par hyp. d’induction. Soit B ⇒ MB : C ⇒ Q(MB ) : C ⇒ C. Donc B ⇒ C est vrai. – Si A ≡ ∀x · B. Par hypothèse, il existe MB tel que le résultat soit vrai pour B. On choisit M ≡def λ+ x · MB . On a : A ≡ ∀x · B ⇒ B ⇒ MB ↓ ∧MB : B par hyp. d’induction ≡ (λ+ x · MB ) ↓ ∧MB : B ≡ (λ+ x · MB ) ↓ ∧(λ+ x · MB ) : (∀x · B) Q:A ≡ ⇒ ⇒ ⇒ ≡ Q : ∀x · A ∀x · Q(x) ↓ ∧Q(x) : B ∀x · Q(x) : B ∀x · B A par hyp. d’induction Remarque. La réalisation d’une formule négative est construite à partir de la formule. On n’a pas besoin de la preuve de la formule pour cela. 8 Réalisabilité et prouvabilité Théorème. Une formule prouvable sous des hypothèses réalisables est elle-même réalisable. Démonstration. La démonstration se fait par induction sur la structure de la preuve intuitionniste de A. Elle est longue mais ne pose pas de difficultés particulières. Application. Une formule prouvable est réalisable. Démonstration. Une formule prouvable est prouvable sans hypothèse donc elle est prouvable sous des hypothèses réalisables. Application. Une formule qui n’est pas réalisable n’est pas prouvable. Démonstration. Si elle était prouvable alors elle serait réalisable. Application. Une formule réalisable est cohérente avec la théorie. Démonstration. Si elle n’était pas cohérente alors il existerait une preuve de la contradiction ⊥ sous l’hypothèse A, donc une preuve de ¬A ≡ A ⇒⊥. Mais si ¬A est prouvable, alors elle est réalisable et l’on a vu que Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 9 q-Réalisabilité 109 dans ce cas A ne pouvait pas être réalisable. Propriété. Il existe des formules réalisables mais non prouvables. Démonstration. (Beeson) D’après le résultat de la section~7, de telles formules doivent contenir soit le connecteur de disjonction, soit le quantificateur existentiel, soit les deux. Par exemple, le principe de Markov : [∀n ∈ N · A(n) ∨ ¬A(n)] ⇒ [¬¬∃n ∈ N · A(n) ⇒ ∃n ∈ N · A(n)] 9 q-Réalisabilité Nous ouvrons une parenthèse avec la q-réalisabilité. Cette notion de réalisabilité est très peu différente de la réalisabilité que nous avons vue jusqu’à présent. Elle est utile pour démontrer qu’EON est un système intuitionniste, c’est-à-dire qu’il possède la propriété de disjonction (DP) et la propriété d’existence (EP). Définition. La q-réalisabilité est définie comme la réalisabilité sauf pour ⇒, ∨ et ∃, par (les différences sont soulignées) : – e : A ⇒ B ≡def ∀x · [A ∧ x : A =⇒ e(x) ↓ ∧e(x) : B] ; – e : ∃x · A(x) ≡def A(π1 (e)) ∧ π2 (e) : A(π1 (e)) ; – e : A ∨ B ≡def [π1 (e) ∈ N ] ∧ [π1 (e) = 0 ⇒ A ∧ π2 (e) : A; B ∧ π2 (e) : B]. La notion de q-réalisabilité peut être utilisée comme la réalisabilité et on a les mêmes résultats. La q-réalisabilité permet de démontrer les deux résultats suivants qui caractérisent une logique dite intuitionniste. Propriété de disjonction. Si A ∨ B est prouvable alors A est prouvable ou bien B est prouvable. Démonstration. Si A ∨ B est prouvable, alors A ∨ B est q-réalisable. Donc, il existe M tel que (M : A ∨ B). C’est-à-dire [π1 (M ) ∈ N ] ∧ [π1 (M ) = 0 ⇒ A ∧ π2 (M ) : A; B ∧ π2 (M ) : B] d’où il est facile de déduire que A est prouvable ou bien B est prouvable. Propriété d’existence. Si ∃x · A(x) est prouvable alors il existe un terme M tel que M ↓ et tel que A(M ) est prouvable. Démonstration. Même type de raisonnement que pour la propriété de disjonction. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 110 10 CHAPITRE VI. RÉALISABILITÉ Synthèse de programmes fonctionnels Un programme fonctionnel, de type LISP ou ML, peut être spécifié par deux prédicats. En effet, il associe un résultat y en fonction d’un argument x. La spécification prend la forme : ∀x · [P (x) ⇒ ∃y · Q(x, y)] et signifie que si l’argument x vérifie la propriété P (x), la pré-condition, alors le résultat y existe et vérifie la propriété Q(x, y), la post-condition. Exemple. La division entière par 2 peut être spécifiée avec : P (x) ≡def Q(x, y) ≡def x∈N (x = 2 ∗ y) ∨ (x = 2 ∗ y + 1) Pour obtenir un programme calculant la fonction spécifiée, il faut démontrer la formule ∀x · [P (x) ⇒ ∃y · Q(x, y)]. On obtient alors une réalisation e de la formule. Cette réalisation vérifie, cf. section~6 : ∀x · [e(x) ↓ ∧∀z · [z : P (x) ⇒ e(x)(z) ↓ ∧π2 (e(x)(z)) : Q(x, π1 (e(x)(z))]] Le programme f (x, z) = π1 (e(x)(z)) prend en argument x et une réalisation de P (x) et renvoie le résultat y qui vérifie Q(x, y). Le problème est évidemment ce z qui réalise P (x). L’idéal est bien sûr que cet argument ne soit pas utilisé. On peut alors l’éliminer artificiellement. Dans le système CoQ de l’Inria, on distingue deux types de propositions : celles qui ont un contenu calculatoire et celles qui n’en ont pas. Si P (x) n’a pas de contenu calculatoire, on peut négliger z qui ne sera pas utilisé dans les calculs. 11 Exemple de synthèse Nous allons démontrer : ∀x · [x ∈ N =⇒ ∃y · (x = 2 × y) ∨ (x = 2 × y + 1)] pour obtenir le programme de division entière par deux. On omettra certaines étapes formelles de la preuve. On tiendra à jour la construction de la réalisation en même temps que la preuve. Les réalisations seront en caractères gras. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 11 Exemple de synthèse 11.1 111 Axiome de récurrence On se sert de l’axiome de récurrence : [A(0) ∧ ∀x ∈ N · (A(x) ⇒ A(x + 1))] =⇒ ∀x ∈ N · A(x) A(x) ≡ ∃y · (x = 2 × y) ∨ (x = 2 × y + 1). avec 11.2 Réalisation de l’axiome de récurrence On vérifiera que la fonction R qui suit est une bonne réalisation de l’axiome de récurrence. Si x=0 λ+ e · λ+ x · λ+ z · Alors π1 (e) Sinon π2 (e)(x − 1)(z)(R(e)(x − 1)(z)) R ≡def où e doit être une réalisation de [A(0) ∧ ∀x ∈ N · (A(x) ⇒ A(x + 1))], x doit être un entier naturel et z une réalisation de x ∈ N. On se convaincra que la fonction suivante exprimée impérativement conviendrait aussi : local c = 0; local r = π (e); 1 TantQue c < x Faire + + + λ e · λ x · λ z · r := π2 (e)(c)(z)(r); c := c + 1; FinTant; Rsultat := r; 11.3 Réalisation des formules atomiques Pour les formules atomiques qui sont des axiomes, on prendra K comme réalisation. 11.4 La preuve (presque formelle) Base de la récurrence. De : K : 0 = 2 × 0, Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 112 CHAPITRE VI. RÉALISABILITÉ on déduit : [0, K] : (0 = 2 × 0) ∨ (0 = 2 × 0 + 1), puis : [0, [0, K]] : ∃y · (x = 2 × y) ∨ (x = 2 × y + 1). Soit : [0, [0, K]] : A(0) Base de la récurrence. Supposons e : x ∈ N et f : A(x). On a : f : ∃y · (x = 2 × y) ∨ (x = 2 × y + 1). Donc : π2 (f ) : (x = 2 × π1 (f )) ∨ (x = 2 × π1 (f ) + 1). (1a) (1b) Supposons : u : (x = 2 × y) Alors : u : (x + 1 = 2 × y + 1) Puis : [1, u] : (x + 1 = 2 × y) ∨ (x + 1 = 2 × y + 1). Puis : [y, [1, u]] : ∃y · (x + 1 = 2 × y) ∨ (x + 1 = 2 × y + 1). Donc : [y, [1, u]] : A(x + 1). (2) Supposons : u : (x = 2 × y + 1) Alors : u : (x + 1 = 2 × (y + 1)) Puis : [0, u] : (x + 1 = 2 × (y + 1)) ∨ (x + 1 = 2 × (y + 1) + 1). Puis : [y + 1, [0, u]] : ∃y · (x + 1 = 2 × y) ∨ (x + 1 = 2 × y + 1). Donc : [y + 1, [0, u]] : A(x + 1). (3) De (1a), (1b), (2) et (3), on déduit : Si π1 (π2 (f )) = 0 Alors [π1 (f ), [1, π2 (π2 (f ))]] : A(x + 1). Sinon [π1 (f ) + 1, [0, π2 (π2 (f ))]] Puis : U0 : A(x) =⇒ A(x + 1). Si π1 (π2 (f )) = 0 . avec : U0 ≡def λ+ f · Alors [π1 (f ), [1, π2 (π2 (f ))]] Sinon [π1 (f ) + 1, [0, π2 (π2 (f ))]] Enfin : U : ∀x · (A(x) =⇒ A(x + 1)) Si π1 (π2 (f )) = 0 . avec : U ≡def λ+ x, z, f · Alors [π1 (f ), [1, π2 (π2 (f ))]] Sinon [π1 (f ) + 1, [0, π2 (π2 (f ))]] dans lequel x est l’entier naturel, z est la preuve que x ∈ N. On voit clairement que ce programme traite beaucoup d’informations inutiles. Une solution est d’éliminer ces informations comme le font Nuprl, PX et CoQ. L’autre solution est de considérer que la preuve de x ∈ N pour un entier naturel x est simplement K. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 11 Exemple de synthèse 113 C’est l’axiome de récurrence permet de conclure : F : ∀x ∈ N · ∃y · (x = 2 × y) ∨ (x = 2 × y + 1) avec : Si x=0 λ+ x, z · Alors [0, [0, K]] Sinon U (x, z, F (x − 1, K)) F ≡def et la fonction spécifiée est : f (x) = π1 (F (x, K)) Le programme LISP correspondant est : (defun pi(x y) (cons x y)) (defun pi1(x) (car x)) (defun pi2(x) (cdr x)) (defun U(x z f) (if (eq (pi1 (pi2 f)) 0) (pi (pi1 f) (pi 1 (pi2 (pi2 f)))) (pi (+ 1 (pi1 f)) (pi 0 (pi2 f))) ) ) (defun F(x z) (if (eq x 0) (pi 0 (pi 0 ’K)) (U x z (F (- x 1) ’K)) ) ) (defun d2(x) (pi1 (F x ’K)) ) Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 114 CHAPITRE VI. RÉALISABILITÉ N.B. Dans la réalisation de la règle de récursivité, on aurait pu choisir une boucle plutôt qu’une récursivité. N.B. Ce type de programme est bien entendu inefficace mais il peut être amélioré en supprimant les informations logiques non indispensables au calcul, c’est le cas des arguments z dans nos programmes. On obtiendrait : (defun U(x f) (if (eq (pi1 (pi2 f)) 0) (pi (pi1 f) (pi 1 (pi2 (pi2 f)))) (pi (+ 1 (pi1 f)) (pi 0 (pi2 f))) ) ) (defun F(x) (if (eq x 0) (pi 0 (pi 0 ’K)) (U x (F (- x 1))) ) ) (defun d2(x) (pi1 (F x)) ) N.B. L’efficacité du programme obtenu dépend étroitement de la preuve utilisée pour le synthétiser. Une preuve mal tournée peut changer la complexité algorithmique du programme. N.B. Même si ces programmes ne sont pas très efficaces, quand ils sont synthétisés formellement avec un système informatique, ils deviennent prouvés conformes à leurs spécifications. 12 Lien avec le langage PROLOG L’exemple que nous avons développé dans ce chapitre, la division entière par 2, repose sur une spécification : ∀x · [x ∈ N ⇒ ∃y · ((x = 2 ∗ y) ∨ (x = 2 ∗ y + 1))] Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 12 Lien avec le langage PROLOG 115 Or, une telle spécification est directement exécutable dans un PROLOG avec contraintes : f(x,y) :- x = 2*y . f(x,y) :- x = 2*y + 1 . Mais toutes les spécifications ne sont pas directement exécutables. Il suffit pour cela que l’espace de recherche du programme PROLOG soit infini. C’est le cas par exemple de les spécification du maximum de deux entiers comme étant le plus petit des majorants : ∀x1 · ∀x2 · [x1 ∈ N ∧ x2 ∈ N ⇒ ∃y · (∀z ∈ N · (z > x1 ∧ z > x2 =⇒ z > y)] Avec une telle spécification, PROLOG serait obligé de rechercher le plus petit des éléments dans un ensemble infini, celui des majorants des deux entiers et cela PROLOG ne sait pas le faire... Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 116 Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 117 VII L E SYSTÈME AF2 Citons LAMBDA-CALCUL, TYPES ET MODELÉS J-L. Krivine Masson, Paris 1990 Le système AF2 , Arithmétique Fonctionnelle du second ordre, est une logique du second ordre. Une logique du second ordre se définit comme une logique du premier ordre mais on y ajoute des variables du second ordre. Une variable du second ordre est à valeur dans l’ensemble des prédicats. On peut donc quantifier sur les prédicats. N.B. Le système AF2 est une application de l’isomorphisme de CurryHoward. N.B. Ce système illustre également l’utilisation de modèles. L’utilisation de modèle est un moyen complémentaire pour démontrer des résultats sans rester dans le système lui-même. 1 L’alphabet L’alphabet comprend : – des variables d’individus (variable du premier ordre) : x, y, z, . . . éventuellement indicées par des entiers ; – des symboles de constantes a, b, c . . . éventuellement indicés par des entiers ; Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 118 CHAPITRE VII. LE SYSTÈME AF2 – des symboles de fonctions f, g, h, . . . éventuellement indicés par des entiers ; – des variables de prédicats (variables du second ordre) : X, Y, Z, . . . éventuellement indicées par des entiers ; – des symboles de prédicats p, q, r, . . . éventuellement indicés par des entiers ; – le connecteur ⇒ ; – le quantificateur universel ∀ ; – les parenthèses ( et ) ainsi que le caractère point. N.B. Chaque symbole de fonction ou de prédicat et chaque variable de prédicat possède sa propre arité qui est son nombre d’arguments. Convention. On conviendra de considérer les constantes a, b, c, . . . comme des fonctions d’arité zéro a(), b(), c(), . . . 2 Les termes Ils sont définis inductivement par : – les variables d’individus sont des termes ; – les constantes sont des termes ; – si f est une fonction d’arité n ≥ 0 et si t1 , . . . , tn sont des termes, f (t1 , . . . , tn ) est un terme ; – (règle de fermeture) 3 Les formules atomiques Elles sont définies par : – si p est un prédicat d’arité n ≥ 0 et si t1 , . . . , tn sont des termes, p(t1 , . . . , tn ) est une formule atomique ; – si X est une variable de prédicat d’arité n ≥ 0 et si t1 , . . . , tn sont des termes, X(t1 , . . . , tn ) est une formule atomique. 4 Les formules Elles sont définies inductivement par : – toute formule atomique est une formule ; Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 4 Les formules 119 – si A est une formule et x une variable d’individu, (∀x · A) est une formule ; – si A est une formule et X une variable de prédicat, (∀X · A) est une formule ; – si A et B sont des formules, (A ⇒ B) est une formule ; – (règle de fermeture). Convention. On s’autorisera à oublier certaines paires de parenthèses lorsqu’aucune ambiguïté n’en résulte. Définition. Un terme est dit clos s’il ne contient pas de variable. Définition. Une formule est dite close si elle ne contient pas d’occurrences de variables libres. Définition. Si F est une formule dont les variables ayant au moins une occurrence libre sont x1 , . . . , xn , la clôture de F est la formule ∀x1 , . . . , xn · F. Définition. Deux formules sont α-équivalentes si l’une peut être obtenue à partir de l’autre par le renommage de certaines de ses variables liées. Définition. Si n ≥ 0, si x1 , . . . , xn sont des variables, si t1 , . . . , tn sont des termes et F une formule, [t1 /x1, . . . , tn /xn ]F désigne le résultat de la substitution simultanée des termes t1 , . . . , tn aux variables x1 , . . . , xn dans la formule F . La définition exacte est similaire à celle de la substitution en λ-calcul. Définition. Si n ≥ 0, si x1 , . . . , xn sont des variables, si t1 , . . . , tn sont des termes, si F et A sont des formules, si X est une variable de prédicat d’arité n, on définit la substitution de la formule F à X(x1 , . . . , xn ) dans G, notée [F/X(x1 , . . . , xn )]G par induction sur G : – – – – – – – [F/X(x1 , . . . , xn )]X(t1 , . . . , tn ) ≡def [t1 /x1 , . . . , tn /xn ]F ; [F/X(x1 , . . . , xn )]Y (t1 , . . . , tn ) ≡def Y (t1 , . . . , tn ) si Y 6= X ; [F/X(x1 , . . . , xn )]p(t1 , . . . , tn ) ≡def p(t1 , . . . , tn ) ; [F/X(x1 , . . . , xn )](G ⇒ H) ≡def [F/X(x1 , . . . , xn )]G ⇒ [F/X(x1 , . . . , xn )]H ; [F/X(x1 , . . . , xn )](∀x · H) ≡def ∀x · [F/X(x1 , . . . , xn )]H ; [F/X(x1 , . . . , xn )](∀X · H) ≡def ∀X · H ; [F/X(x1 , . . . , xn )](∀Y · H) ≡def ∀Y · [F/X(x1 , . . . , xn )]H si Y 6= X. Définition. Une formule est dite universelle si elle est de la forme ∀x1 , . . . , xn · F où F ne contient pas de quantificateur ∀. Notation. On notera A1 ⇒ A2 ⇒ · · · An ⇒ B par A1 , A2 , . . . , An ⇒ B. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 120 5 CHAPITRE VII. LE SYSTÈME AF2 Méta-définitions On adopte les méta-définitions suivantes : ⊥ ¬F F ∧G F ∨G F ⇔G ∃x.A ∃X.A 6 ≡def ≡def ≡def ≡def ≡def ≡def ≡def ∀X · X F ⇒⊥ ∀X · ((F, G ⇒ X) ⇒ X) ∀X · (F ⇒ X, G ⇒ X ⇒ X) (F ⇒ G) ∧ (G ⇒ F ) ∀Y · ((∀x · (A ⇒ Y )) ⇒ Y ) ∀Y · ((∀X · (A ⇒ Y )) ⇒ Y ), Y 6= X Modèles de la logique du second ordre Définition. Un modèle M de la logique du second ordre est composé de : – un ensemble de base |M| appelé le domaine ; – à chaque constante a, on associe un élément aM ∈ |M| ; aM est l’interprétation de a ; – pour tout entier n ≥ 0 la donnée d’un ensemble |M|n ⊆ P(|M|n ) l’ensemble des partie de |M|n l’ensemble des n-uplets d’éléments du domaine ; |M|n est appelé le domaine de variation des relations n-aires ; N.B. On suppose que |M|0 = {0, 1} = P(|M|0 ). – à chaque symbole de fonction f d’arité n ≥ 0, on associe une fonction fM : |M|n → |M| ; fM est l’interprétation de f ; – à chaque symbole de prédicat p d’arité n ≥ 0, on associe une relation pM ∈ |M|n ; pM est l’interprétation de p. Définition. Soit M un modèle de la logique du second ordre, l’interprétation tM d’un terme t est définie par induction : – si t est une constante a, tM ≡def aM ; – si t = f (t1 , . . . , tn ) où f est un symbole de fonction d’arité n ≥ 0 et t1 , . . . , tn sont des termes alors tM ≡def fM (t1M , . . . , tnM ). Définition. Une relation n-aire avec n ≥ 0 appartient au modèle M de la logique du second ordre si et seulement si elle appartient à |M|n . Définition. Un modèle M de la logique du second ordre est dit plein si et seulement si ∀n ∈ N · |M|n = P(|M|n ). Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 7 Modèle et satisfaction 121 Définition. Soit M un modèle de la logique du second ordre, on note LM le langage obtenu en rajoutant à la logique les éléments suivants : – chaque élément de |M| est ajouté en tant que symbole de constante ; – pour tout entier n ≥ 0, chaque élément de P(|M|n ) est ajouté en tant que symbole de prédicat. Un modèle M de la logique du second ordre peut être étendu trivialement en un modèle de LM : chaque nouvelle constante est interprétée par ellemême, chaque nouveau prédicat est interprété par lui-même. N.B. On dira simplement un modèle plutôt qu’un modèle de la logique du second ordre (ouf !). 7 Modèle et satisfaction Définition. Un modèle M de la logique du second ordre satisfait une formule close F de LM , on note cela M |= F , si : – – – – 8 si F ≡ p(t1 , . . . , tn ) alors M |= F si (t1M , . . . , tnM ) ∈ pM ; si F ≡ G ⇒ H alors M |= F si M |= G implique M |= H ; si F ≡ ∀x · G alors M |= F si M |= [a/x]G pour tout a ∈ |M| ; si F ≡ ∀X · G, X d’arité n ≥ 0 alors M |= F si M |= [R/X]G pour tout R ∈ |M|n . Conséquence et validité Définition. On appelle système d’axiomes un ensemble de formules closes. Définition. Un modèle satisfait un système d’axiomes s’il satisfait chacune des formules qu’il contient. Remarque. Un système d’axiomes vide est satisfait par tout modèle. Définition. Une formule close F est dite une conséquence (valide) d’un système d’axiome A, on note cela A ` F si tout modèle satisfaisant le système d’axiomes A satisfait aussi la formule F . Définition. Une formule close F est dite valide si elle est satisfaite par le système d’axiomes vide. On note cela ` F . Proposition. La formule ⊥ n’est satisfaite par aucun modèle. Démonstration. ⊥≡ ∀X ·X est satisfaite par un modèle M si M satisfait [R/X]X ≡ R Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 122 CHAPITRE VII. LE SYSTÈME AF2 est satisfaite pour tout R ∈ |M|0 = {0, 1}. Mais 0 étant une relation vide, elle ne peut être satisfaite. Proposition. Soit A et F deux formules de LM n’ayant comme variables libres respectivement F V (A) = {X}, X d’arité n ≥ 0, et F V (F ) = {x1 , . . . , xn }. On pose : Φ = {(a1 , . . . , an ) ∈ |M|n tels que M |= [a1 /x1 , . . . , an /xn ]F } alors : M |= [F/X(x1 , . . . , xn )]A si et seulement si M |= [Φ/X]A Démonstration. Une fois compris l’énoncé, la difficulté se fait sans difficultés particulières par induction sur la formule A : – si A ≡ X(t1 , . . . , tn ) alors : ssi ssi ssi ssi M |= [F/X(x1 , . . . , xn )]A M |= [t1 /x1 , . . . , tn /xn ]F (t1 , . . . , tn ) ∈ Φ M |= Φ(t1 , . . . , tn ) M |= [Φ/X]A – si A ≡ ∀x · B alors : ssi ssi ssi ssi ssi M |= [F/X(x1 , . . . , xn )](∀x · B) pour touta ∈ |M|, M |= [a/x]([F/X(x1 , . . . , xn )]B) pour tout a ∈ |M|, M |= [F/X(x1 , . . . , xn )]([a/x]B) pour touta ∈ |M|, M |= [Φ/X]([a/x]B) pour touta ∈ |M|, M |= [a/x]([Φ/X]B) M |= ∀x · [Φ/X]B – etc. Exercice. Compléter la démonstration précédente. 9 Le schéma de compréhension Le schéma de compréhension (comprehension scheme) est le schéma d’axiome composé de la clôture de toutes les formules de la forme : (SC) (∀X · A) ⇒ [F/X(x1 , . . . , xn )]A où X est une variable de prédicat d’arité n ≥ 0. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 9 Le schéma de compréhension 123 Proposition. Tout modèle plein satisfait le schéma de compréhension. Démonstration. Soit M un modèle plein satisfaisant ∀X · A. Supposons que X soit d’arité n ≥ 0 et soit F une formule, on pose : Φ = {(a1 , . . . , an ) ∈ |M|n tels que M |= [a1 /x1 , . . . , an /xn ]F } On a Φ ∈ |M|n = |M|n puisque le modèle est plein. On a donc M |= [Φ/X]A puisque M |= ∀ · XA. Et donc M |= [F/X(x1 , . . . , xn )]F par le résultat de la section précédente. Proposition. Le schéma de compréhension est équivalent au schéma d’axiomes : (SC 0 ) ∃Y · ∀x1 , . . . xn · [Y (x1 , . . . , yn ) ⇔ F ] Autrement dit, toute formule est équivalente à une relation. Démonstration. Soit A la formule ∃Y · ∀x1 , . . . xn · [Y (x1 , . . . , yn ) ⇔ X(x1 , . . . , xn )] On a ∀X ·A car il suffit de prendre Y = X. Si on applique (SC) à la formule A, on déduit : [F/X(x1 , . . . , xn )]A c’est-à-dire : ∃Y · ∀x1 , . . . xn · [Y (x1 , . . . , yn ) ⇔ F ] Réciproquement, soit M un modèle de (SC 0 ). Supposons que M |= ∀X · A où X est d’arité n ≥ 0. Soit F une formule, posons : Φ = {(a1 , . . . , an ) ∈ |M|n tels que M |= [a1 /x1 , . . . , an /xn ]F } D’après (SC 0 ), il existe une relation Ψ ∈ |M|n telle que : M |= ∀x1 , . . . , xn · [Ψ(x1 , . . . , xn ) ⇔ F ] Soit : M |= [F/Z(x1 , . . . , xn )](∀x1 , . . . , xn · [Ψ(x1 , . . . , xn ) ⇔ Z(x1 , . . . , xn )]) Par la proposition de la section~8 : M |= [Φ/Z](∀x1 , . . . , xn · [Ψ(x1 , . . . , xn ) ⇔ Z(x1 , . . . , xn )]) Donc : M |= ∀x1 , . . . , xn · [Ψ(x1 , . . . , xn ) ⇔ Φ(x1 , . . . , xn )] D’où Ψ = Φ et Φ ∈ |M|n . Donc si M |= ∀X · A, on a M |= [Φ/X]A et, toujours par la proposition de la section~8, on a : M |= [F/X(x1 , . . . , xn )]A. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 124 10 CHAPITRE VII. LE SYSTÈME AF2 Formules équationnelles Définition. L’égalité est définie par : x = y ≡def ∀X · [X(x) ⇒ X(y)] Proposition. On a : |= x = x |= x = y, y = z ⇒ x = z (SC) |= x = y ⇒ y = x (SC), x = y |= X(x) ⇒ X(y) Démonstration. Les deux derniers résultats ont besoin du schéma de compréhension. Montrons le troisième. Soit M un modèle satisfaisant x = y, donc M |= ∀X · [X(x) ⇒ X(y)]. Par (SC), on a M |= [F/X(y)](X(x) ⇒ X(y)) pour toute formule F . On choisit la formule F ≡ (y = x). On a donc M |= [x = y/X(y)]X(x) ⇒ [[x = y/X(y)]X(y) soit : M |= [y/x](y = x) ⇒ [y/y](y = x) et donc : M |= (y = y) ⇒ (y = x). Et comme M |= y = y, on en déduit : M |= y = x. Exercice. Compléter la démonstration ci-dessus. Définition. Une équation ou formule équationnelle est la clôture d’une formule t = u où t et u sont deux termes. Définition. Un système équationnel (d’axiomes) est un système d’axiomes dont les formules sont toutes des équations. Proposition. Soit E un système équationnel, pour que (SC) ∪ E |= u = v où u et v sont deux termes, il faut et il suffit que l’on puisse démontrer la formule |=E u = v à l’aide des règles suivantes : – si (u = v) ∈ E alors |=E u = v ; – si |=E u = v et |=E v = w alors |=E u = w ; – si |=E ui = vi pour i ∈ [1, n] alors |=E f (u1 , . . . , un ) = f (v1 , . . . , vn ) pour toute fonction f d’arité n. Démonstration. Si |=E u = v alors on a a (SC) ∪ E |= u = v de manière relativement évidente. Inversement, on vérifie que |=E u = v est une relation d’équivalence : réflexive, symétrique et transitive sur les termes. D’après le troisième point elle est compatible avec l’interprétation des symboles fonctionnels. Donc Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 11 Axiomes et règles d’inférences 125 l’ensemble quotienté par cette relation d’équivalence est un modèle. Ce modèle satisfait E par le premier point. En prenant le modèle plein, on satisfait (SC). On a donc un modèle de (SC) ∪ E. Soient alors deux termes u et v tels que (SC) ∪ E |= u = v. Le modèle satisfait (SC) ∪ E donc il satisfait u = v. On a donc bien u = v dans le modèle et donc |=E u = v. Remarque. (SC) ∪ E n’est jamais contradictoire car on trouve toujours un modèle : le modèle à un élément. 11 Axiomes et règles d’inférences On considère : – L, un langage du second ordre ; – E, un système équationnel d’axiomes ; – A = {A1 , . . . , An }, un ensemble de formules ; On dit qu’une formule A est une conséquence de (SC) ∪ E ∪ A et on note cela A `E A si et seulement si on peut le prouver à l’aide des règles de démonstration suivantes : D0 – A, ¬¬A `E A ; D1 – A, A `E A ; D2 – de A, A `E B déduire A `E A ⇒ B ; D3 – de A `E A et A `E A ⇒ B déduire A `E B ; D4 – de A `E ∀x · A déduire A `E [t/x]A ; D5 – de A `E A déduire A `E ∀x · A si x ∈ / F V (A) ; D6 – de A `E ∀X · A déduire A `E [F/X(x1 , . . . , xn )]A ; D7 – de A `E A déduire A `E ∀X · A si X ∈ / F V (A) ; D8 – de A `E [u/x]A déduire A `E [v/x]A si (u = v) ∈ E. Axiomatisation classique. Les règles D0 à D8 ci-dessus forment l’axiomatisation classique de la logique du second ordre. Axiomatisation intuitionniste. Les règles D1 à D8 ci-dessus forment l’axiomatisation intuitionniste de la logique du second ordre. Il suffit de Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 126 CHAPITRE VII. LE SYSTÈME AF2 supprimer D0. Si A est une conséquence de (SC) ∪ E ∪ A, on notera cela A `iE A 12 Le système AF2 Le système AF2 est un λ-calcul typé du second ordre. On se rappelle l’isomorphisme de Curry-Howard qui identifie types et formules de la logique du premier ordre, inférences de types et preuves de théorèmes. Dans le système AF2 , les types sont les formules de la logique du second ordre. On considère L un langage du second ordre et E un système équationnel d’axiomes. Définition. Un contexte Γ s’écrit x1 : A1 , . . . , xn : An où x1 , . . . , xn sont des variables deux à deux distinctes du λ-calcul et A1 , . . . , An sont des formules de L. On dira qu’une variable est libre ou non libre dans ce contexte si elle l’est dans les formules A1 , . . . , An . 12.1 Les règles de typages Soit Γ un contexte et t un terme du λ-calcul, on dit que le terme t est typable à l’aide des axiomes de E dans le contexte Γ et que son type est A, on note cela Γ `E t : A si on peut le déduire à l’aide des règles de typage qui suivent : T1 – Γ, x : A `E x : A T2 – de A, x : A `E t : B déduire A `E λx · t : A ⇒ B ; T3 – de A `E t : A et A `E u : A ⇒ B déduire A `E u(t) : B ; T4 – de A `E u : ∀x · A déduire A `E u : [t/x]A ; T5 – de A `E t : A déduire A `E t : ∀x · A si x ∈ / F V (Γ) ; T6 – de A `E t : ∀X · A déduire A `E t : [F/X(x1 , . . . , xn )]A ; T7 – de A `E t : A déduire A `E t : ∀X · A si X ∈ / F V (A) ; T8 – de A `E t : [u/x]A déduire A `E t : [v/x]A si (u = v) ∈ E. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 13 Isomorphisme de Curry-Howard 127 Proposition. Si Γ ≡ x1 : A1 , . . . , xn : An et si Γ `E t : A alors F V (t) ⊆ {x1 , . . . , xn }. Démonstration. Évidente par l’examen des règles de typage. 13 Isomorphisme de Curry-Howard Théorème. Pour qu’il existe un terme typé à l’aide du système équationnel E dans le contexte Γ ≡ x1 : A1 , . . . , xn : An , il faut et il suffit que A1 , . . . , An `iE A. Démonstration. Ce résultat s’obtient en remarquant l’analogie entre les règles D1 à D8 et les règles T1 à T8. La démonstration s’effectue par induction sur la hauteur de l’arbre de preuve ou de l’arbre d’inférence de type. Exercice. Rédiger la démonstration du théorème. 14 Réalisabilité dans AF2 Nous allons utiliser la technique de la réalisabilité pour montrer des résultats intéressants concernant le système AF2 . Définition. On se donne un langage L du second ordre. On étend alors le langage L en un langage L+ de la manière suivante : – pour chaque variable de prédicat X d’arité n ≥ 0, on introduit une nouvelle variable de prédicat X + d’arité n + 1 ; – pour chaque symbole de prédicat R d’arité n ≥ 0, on introduit un nouveau symbole de prédicat R+ d’arité n+1. Définition. A chaque formule A ∈ L, on associe la formule x :: A ∈ L+ où x est une variable d’individu n’apparaissant pas dans A. Cette formule se lit x réalise A et est définie par induction sur la formule A : – – – – – x :: X(t1 , . . . , tn ) ≡def X + (t1 , . . . , tn , x) ; x :: R(t1 , . . . , tn ) ≡def R+ (t1 , . . . , tn , x) ; x :: B ⇒ C ≡def ∀y · [y :: B ⇒ x(y) :: C] ; x :: ∀y · B ≡def ∀y · [x :: B] ; x :: ∀Y · B ≡def ∀Y + · [x :: B]. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 128 CHAPITRE VII. LE SYSTÈME AF2 Proposition. Soit x, x1 , . . . , xn des variables d’individus deux à deux distinctes, alors : x :: [t1 /x1 , . . . , tn /xn ]A ≡ [t1 /x1 , . . . , tn /xn ](x :: A) Autrement dit, réalisabilité et substitution des variables d’individus commutent. Démonstration. Par induction sur la structure de A. Exercice. Réaliser la démonstration de la proposition. Proposition. Soit x, x1 , . . . , xn des variables d’individus deux à deux distinctes, alors : x :: [F/X(x1 , . . . , xn )]A ≡ [(x :: F )/X + (x1 , . . . , xn , x)](x :: A) Autrement dit, réalisabilité et substitution de variables de prédicats commutent. Démonstration. Par induction sur la structure de A. Exercice. Réaliser la démonstration de la proposition. 15 Théorème d’extension Théorème d’extension. Soit E un système équationnel d’un langage L du second ordre et soit t un terme du λ-calcul et A ∈ L tels que : x1 : A1 , . . . , xn : An `E t : A alors x1 : (x1 :: A1 ), . . . , xn : (xn :: An ) `E t : (t :: A) et en particulier (SC) ∪ E ` ∀x1 , . . . , xn · [x1 :: A1 , . . . , xn :: An ⇒ t :: A] Démonstration. La premier résultat se démontre pare induction sur la preuve de x1 : A1 , . . . , xn : An `E t : A. C’est long à rédiger mais ne pose pas de difficultés particulières. Le deuxième résultat découle du premier par application du théorème sur l’isomorphisme de Curry-Howard. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 16 Modèle standard 16 129 Modèle standard Définition. On appelle égalité extensionnelle du λ-calcul, normalement notée =η , l’égalité définie par les axiomes du λ-calcul auxquels on rajoute l’axiome d’extensionnalité : Mx=Nx si x ∈ / F V (M ) ∪ F V (N ) M =N Définition. Soit L un langage du second ordre. On appelle modèle standard de L+ un modèle plein de L+ dont le domaine est l’ensemble des λ-terme modulo l’égalité extensionnelle =η . 17 Type de données dans AF2 Définition. Soit L un langage du deuxième ordre, soit M un modèle standard de L+ , soit D[x] une formule de L+ ayant x comme seule variable libre, on dit que D[x] définit un type de données si et seulement si les deux conditions suivantes sont remplies : – tout a ∈ M tel que M |= D[a] est un terme clos ; – M |= ∀x, y · [y :: D[x] ⇔ x = y ∧ D[x]]. Autrement dit, un type de donnée est un prédicat D[x] qui n’est satisfait dans le modèle standard que par des termes clos et tel que si D[x] est satisfait dans le modèle standard alors toute réalisation de D[x] est égale à x dans le modèle standard, et inversement. 18 Programmation dans AF2 Nous allons nous servir des définitions et des résultats précédents pour montrer comment on peut se servir de preuves, i.e. d’inférence de types, dans le système AF2 pour synthétiser des programmes fonctionnels, i.e. des termes du λ-calcul, grâce à l’isomorphisme de Curry-Howard. Théorème principal. Soit L un langage du second ordre, soit E un système équationnel d’axiomes, soit M un modèle standard de L+ , soit f un symbole de fonction d’arité n ≥ 0, soit D1 [x], . . . , Dn [x] et E[y] des types de données, alors si t est un terme du λ-calcul tel que : `E t : ∀x1 , . . . , xn · [D1 [x1 ], . . . , Dn [xn ] ⇒ E[f (x1 , . . . , xn )]] Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 130 CHAPITRE VII. LE SYSTÈME AF2 alors, en notant Di le sous-ensemble des λ-termes satisfaisant le prédicat Di [x] pour i ∈ [1, n], on a pour tous u1 ∈ D1 , . . . , un ∈ Dn : M |= t u1 · · · un = f (u1 , . . . , un ) Autrement dit, t se comporte dans le modèle comme f a été spécifiée par E. Démonstration. D’après le théorème d’extension (TE) et l’isomorphisme de Curry-Howard (CW), on a : implique (TE) implique (CW) `E `E `E ≡ `E t : ∀x1 , . . . , xn · [D1 [x1 ], . . . , Dn [xn ] ⇒ E[f (x1 , . . . , xn )]] t : (t :: ∀x1 , . . . , xn · [D1 [x1 ], . . . , Dn [xn ] ⇒ E[f (x1 , . . . , xn )]]) t :: ∀x1 , . . . , xn · [D1 [x1 ], . . . , Dn [xn ] ⇒ E[f (x1 , . . . , xn )]] y1 :: D1 [x1 ], . . . , yn :: Dn [xn ] ∀x1 , . . . , xn · ∀y1 , . . . , yn · ⇒ (t y1 · · · yn ) ::: E[f (x1 , . . . , xn )] Mais pour tout type de données D[x], on a par définition d’un type de données : y :: D[x] ⇔ x = y ∧ D[x]. Donc : `E y1 = x1 ∧ D1 [x1 ], . . . , yn = xn ∧ Dn [xn ] ∀x1 , . . . , xn · ∀y1 , . . . , yn · ⇒ (t y1 · · · yn = f (x1 , . . . , xn ) ∧ E[f (x1 , . . . , xn )] En prenant yi = xi pour i ∈ [1, n], on peut montrer : `E D1 [x1 ], . . . , Dn [xn ] ∀x1 , . . . , xn · ⇒ t x1 · · · xn = f (x1 , . . . , xn ) ∧ E[f (x1 , . . . , xn )] Et en particulier : `E 19 ∀x1 , . . . , xn · [D1 [x1 ], . . . , Dn [xn ] ⇒ (t x1 · · · xn = f (x1 , . . . , xn )] Les booléens On introduit deux constantes v, pour vrai, et f , pour faux, dans un langage L du deuxième ordre. On définit : B[x] ≡def ∀X · [X(v), X(f ) ⇒ X(x)] Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 20 Les entiers 131 alors B[x] définit un type de données dans tout modèle standard de L+ dans lequel v est interprété par v ≡def λx, y.x et f est interprété par f ≡def λx, y.y. En prenant X(x) ≡def (x = v) ∨ (x = f ) dans B[x], on a bien X(v) et X(f ). Par conséquence, si B[x], on doit avoir X(x) et donc x = v ou bien x = f qui sont tous les deux des termes fermés. Puis, considérons y :: B[x] : ≡ ≡ ≡ ≡ y :: B[x] y :: ∀X · [X(v), X(f ) ⇒ X(x)] ∀X + · y :: [X(v), X(f ) ⇒ X(x)] ∀X + · ∀u, v · [u :: X(v), v :: X(f ) ⇒ (t u v) :: X(x)] ∀X + · ∀u, v · [X + (v, u), X + (f , v) ⇒ X + (x, t u v)] Prenons alors X + (a, b) ≡def (a = v ∧ b = u) ∨ (x = f ∧ b = v), on a : y :: B[x] ≡ ∀a, b · [(x = v ∧ y a b = a) ∨ (x = f ∧ y a b = b)] ⇔ ∀a, b · [(x = v ∧ y = λa, b · a) ∨ (x = f ∧ y = λa, b · b)] ⇔ ∀a, b · [(x = v ∧ y = v) ∨ (x = f ∧ y = f )] ⇐ x=y En prenant X + (a, b) ≡def Y (b) où Y est une variable de prédicat quelconque, on peut également montrer : y :: B[x] ⇒ ∀Y · [Y (v), Y (f ) ⇒ Y (x)] ≡ B[x] On a donc bien : y :: B[x] ⇒ x = y ∧ B[x] Réciproquement, supposons x = y ∧ B[x]. On a soit x = y = v soit x = y = f . Dans les deux cas, il est très facile de démontrer que y :: B[x]. N.B. Dans la suite, on confondra v et son interprétation v ainsi que f et son interprétation f . 20 Les entiers On introduit la constante 0 et la fonction s dans un langage L du deuxième ordre. Pour n ≥ 0, on note n le terme sn (0). Puis, on définit : N[x] ≡def ∀X · [∀y · (X(y) ⇒ X(s(y))) , X(0) =⇒ X(x)] Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 132 CHAPITRE VII. LE SYSTÈME AF2 alors N[x] est un type de donnée dans tout modèle standard de L+ où 0 est interprété par l’entier de Church 0 ≡def λf, x · x et où s est interprété par la fonction successeur de Church s ≡def λn, f, x · f (n f x). Notons que pour tout n ≥ 0, n est interprété par l’entier de Church n ≡def λf, x · f n x. Exercice. Démontrer ce résultat en procédant comme dans le cas des booléens. Proposition. On a : ` 0 : N[0] Démonstration. x : ∀y · X(y) ⇒ X(s(y)), y : X(0) ` y : X(0) x : ∀y · X(y) ⇒ X(s(y)) ` λy · y : X(0) ⇒ X(0) ` λx, y · y : ∀y · X(y) ⇒ X(s(y)), X(0) ⇒ X(0) 0 : N[0] ≡ Proposition. On a : x : N[y] ` s(x) : N[s(y)] Démonstration. À faire en exercice. N.B. Dans la suite, on confondra 0 et son interprétation 0 ainsi que s et son interprétation s. 21 Produit cartésien de types de données On introduit un symbole de fonction binaire π dans un langage L du second ordre. Soit A[x] et B[x] deux types de données dans un modèle standard M de L+ , on définit : A × B ≡def ∀X · [∀y, z · (A[y], B[z] ⇒ X(π(y, z))) ⇒ X(x)] alors A × B définit un type de données pour M si π est interprété dans ce modèle par la paire de Church π ≡def λx, y, z · z x y. Démonstration. À faire en exercice. N.B. Dans la suite on confondra pi et son interprétation π. On introduira aussi les deux projections π1 et π2 . Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 22 Union disjointe de types de données 22 133 Union disjointe de types de données On introduit deux symboles de fonctions unaires il et ir dans un langage L du second ordre. Soit A[x] et B[x] deux types de données dans un modèle standard M de L+ , on définit : A ⊕ B ≡def ∀X · [∀y · (A[y] ⇒ X(il (y))) , ∀z · (B[z] ⇒ X(ir (z))) ⇒ X(x)] alors A × B définit un type de données pour M si il est interprété dans ce modèle par il ≡def λx, f, g · f x et ir est interprété dans ce modèle par ir ≡def λx, f, g · g x. Démonstration. À faire en exercice. N.B. Dans la suite on confondra il et son interprétation il ainsi que ir et son interprétation ir . 23 Résultats utiles Proposition. x : A, y : B ` (π x y) : A ∧ B x : A ∧ B ` (π1 x) : A x : A ∧ B ` (π2 x) : B Démonstration. À faire en exercice. Proposition. x : A ` (il x) : A ∨ B y : B ` (ir y) : A ∨ B x : A ∨ B, y : A ⇒ C, z : B ⇒ C ` (x y z) : C Démonstration. À faire en exercice. Proposition. x : [t/z]A ` (λf · f x) : ∃x · A Démonstration. À faire en exercice. Proposition. x : ([t/z]A) ⇒ B ` (λu · x u) : (∀x · A) ⇒ B Démonstration. À faire en exercice. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 134 CHAPITRE VII. LE SYSTÈME AF2 24 La fonction prédécesseur On utilise à présent le système AF2 pour trouver la fonction prédécesseur pour le type de donnée N[x]. Pour cela, on introduit un symbole de fonction unaire p et on se donne le système équationnel suivant : E ≡def p(0) = 0 p(s(x)) = x et l’on démontre : `E p : ∀x · N(x) ⇒ N(s(x)) pour un certain p. La réalisation de cette formule sera la fonction recherchée. Supposons donc un x et N[x], soit : N[x] ≡def ∀X · [∀y · (X(y) ⇒ X(s(y))) , X(0) =⇒ X(x)] et prenons : X(x) ≡def N[x] ∧ N[p(x)] Montrons informellement que l’on a X(0) : `E `E `E `E ≡ 0 : N[0] 0 : N[0], 0 : N[0] 0 : N[0], 0 : N[p(0)] (π 0 0) : N[0] ∧ N[p(0)] (π 0 0) : X(0) démontré plus haut en dupliquant car 0 = p(0) ∈ Een dupliquant propriété de la conjonction Montrons informellement que l’on a ∀y · X(y) ⇒ X(s(y)) : ≡ `E `E `E `E `E `E u : X(y) u : N[y] ∧ N[p(y)] (π1 u) : N[y] (π1 u) : N[y], (π1 u) : N[y] (π1 u) : N[y], s(π1 u) : N[s(y)] (π1 u) : N[p(s(y))], s(π1 u) : N[s(y)] (π s(π1 u) (π1 u)) : N[s(y)] ∧ N[p(s(y))] (π s(π1 u) (π1 u)) : X(s(y)) propriété de la disjonction duplication ! montré plus haut car p(s(y)) = y ∈ E propriété de la conjonction Donc : (λu · π s(π1 u) (π1 u)) : ∀y · X(y) ⇒ X(s(y)) Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 25 Remarques 135 Maintenant, si n : N[x] alors : `E n (λu · π s(π1 u) (π1 u)) (π 0 0) : X(x) Soit : `E π2 (n (λu · π s(π1 u) (π1 u)) (π 0 0)) : N[p(x)] Puis : `E λn · π2 (n (λu · π s(π1 u) (π1 u)) (π 0 0)) : N[x] ⇒ N[p(x)] Et enfin : `E λn · π2 (n (λu · π s(π1 u) (π1 u)) (π 0 0)) : ∀x · N[x] ⇒ N[p(x)] D’après le théorème principal, la fonction : λn · π2 (n (λu · π s(π1 u) (π1 u)) (π 0 0)) est la fonction prédécesseur sur les entiers de Church ou plus exactement sur les modèles des données du type de données N[x]. 25 Remarques Pour des raisons pratiques, nous avons fini par ne pas être rigoureux sur deux points : 1. nous avons volontairement confondu les termes du langage du second ordre avec leurs modèles en λ-calcul ; 2. nous n’avons pas rédigé formellement les preuves. Le premier point aurait pu facilement être évité en alourdissant légèrement le formalisme. Un autre moyen aurait été de se placer directement dans le modèle standard qui aurait eu lui-même comme interprétation. Le deuxième point est plus délicat car la rédaction d’une preuve formelle et, de plus, intuitionniste peut être particulièrement fastidieuse et longue. Les résultats obtenus sont justes mais n’ont pas été obtenus avec la rigueur nécessaire. Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 136 Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 137 Index M ↓ , 103 M ' N , 104 ⇒, 26 α-conversion, 29 α → β, 73 ∃, 26 ∀, 26 ¬, 26 ∨, 26 ∧, 26 f (t1 , . . . , tn ), 27 p(t1 , . . . , tn ), 27 (DP) propriété de la disjonction, 60, 109 (EP) propriété d’existence, 60, 109 AF2 , 117 K type de · · · , 73 S type de · · · , 74 abstraction typage et abstraction, 77 AF2, 117 affaiblissement règle d’· · · , 48 règle d’· · · intuitionniste, 52 application type d’une · · · , 74 arbre de preuve, 33 arithmétique fonctionnelle, 117 associativité des connecteurs, 27 axiome, 31 règle d’inférence, 33 schéma d’axiomes, 31 base de typage, 76 Beeson M.J., 102 Brouwer L.E.J., 12 calcul des séquents, 30, 46 calculus ratiocinator, 68 Church A., 17 commutative logique · · · , 49 complétude théorème de · · · , 70 conjonction, 26 connecteur associativité, 27 conjonction, 26 disjonction, 26 implication, 26 négation, 26 priorité syntaxique, 27 connecteur binaire, 26 connecteur unaire, 26 consistance, 35 constantes, 26 constructive logique · · · , 53 contexte · · · en théorie des types, 76 contraction règle de · · · , 48 règle de · · · intuitionniste, 52 conventions syntaxiques, 27 coupure élimination des · · · , 57, 58 degré d’une · · · , 62 règle d’· · · , 48, 57 règle d’· · · intuitionniste, 52, 57, 61 Curry logique combinatoire, 68 paradoxe de · · · , 67 Curry H.B., 67, 87 Curry-Howard isomorphisme de · · · , 87 Curry H.B., 12 cut elimination, 57, 58 cut rule, 58 décharger une hypothèse, 40 Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 138 déduction naturelle, 30, 37 définition en extension, 21 définition en intention, 21 démonstration, 33 dérivabilité, 34 dérivation d’une règle, 34 degré · · · d’une coupure, 62 · · · d’une formule, 62 · · · d’une preuve, 62 disjonction, 26 (DP) propriété de la · · · , 60, 109 droite règle à · · · , 47 échange règle d’· · · , 48 règle d’· · · intuitionniste, 52 égalité (EON), 104 égalité faible (EON), 104 élimination règle d’· · · , 39 élimination des coupures, 57, 58 ensembles théorie des · · · , 71 EON, 102 Euclide, 10 existence (EP) propriété d’existence, 60, 109 extension définition en · · · , 21 extension conservative, 35 extension consistante, 35 extension d’une théorie, 34 extension dérivable, 34 extension inconsistante, 34 extensionalité, 21 fonctionnalité théorie de · · · , 67 fonctions, 26 formalisme logique, 25 formel système · · · , 36 formule · · · négative (EON), 107 degré d’une · · · , 62 justification d’une · · · , 105 réalisation d’une · · · , 105 formules, 26 du premier ordre, 27 propositionnelles, 27 Frege, 68 Frege G., 11 Gödel K., 12 gauche règle à · · · , 47 Gentzen, 46, 58 Gentzen G., 37 Girard J-Y., 48 Girard J-Y., 21 Griss G.F., 18 Hauptsatz, 58 Heyting A., 102 Heyting A., 17 Hilbert D., 44 Hilbert D., 11 Hobbes T., 68 Hobbes T., 10 Howard W.A., 87 hypothèse décharger une · · · , 40 identité règle d’· · · intuitionniste, 51 implication, 26 inconsistance, 34 intention définition en · · · , 21 intentionnalité, 21 introduction règle d’· · · , 39 intuitionnisme (DP) propriété de la · · · , 60, 109 (EP) propriété d’existence, 60, 109 propriété de la sous-formule, 61 intuitionniste logique · · · , 109 isomorphisme de Curry-Howard, 87 Jaskowski S., 37 jugement, 31 justification d’une formule, 105 Kleene S.C., 102 Krivine J-L., 117 langage · · · du premier ordre, 26 Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 139 conjonction, 26 connecteur binaire, 26 connecteur unaire, 26 constantes, 26 conventions syntaxiques, 27 d’ordre un, 27 d’ordre zéro, 27 disjonction, 26 fonctions, 26 formules d’ordre un, 27 formules d’ordre zéro, 27 formules du premier ordre, 27 formules propositionnelles, 27 implication, 26 négation, 26 prédicats, 26 quantificateur, 26 quantificateur existentiel, 26 quantificateur universel, 26 termes, 26 variables d’individus, 26 variables propositionnelles, 26 vocabulaire, 26 Leibniz calculus ratiocinator, 68 Leibniz G.W., 68 linéaire logique · · · , 21 linéarité, 49 logique · · · combinatoire, 68 · · · commutative, 49 · · · constructive, 53 · · · d’ordre 1, 42 · · · des prédicats, 42 · · · du premier ordre, 42 · · · du second ordre, 117 · · · intuitionniste, 109 · · · non-commutative, 49 déduction naturelle, 37 mécanisation de la · · · , 68 système formel, 36 logique linéaire, 21 Lukasiewicz J., 37 méta-mathématiques, 7 méta-variable, 31 Milner R., 71 modus ponens, 69 Morris J.H., 71 négation, 26 · · · classique, 40 · · · intuitionniste, 41 Newton, 68 Newton I., 10 non-commutative logique · · · , 49 paradoxes, 71 partialité, 103 Poincaré H., 8 point-fixe théorème du · · · , 70 prédicats, 26 premier ordre, 26 preuve, 30, 33 degré d’une · · · , 62 vérification de · · · , 36 priorité syntaxique des des connecteurs, 27 priorité syntaxique des des quantificateurs, 28 programme synthèse de ·, 110 propriété d’existence (EP), 60, 109 propriété de la disjonction (DP), 60, 109 propriété de la sous-formule, 61 Pythagore, 10 q-réalisabilité, 109 quantificateur, 26 existentiel, 26 priorité syntaxique, 28 universel, 26 réalisabilité, 102 · · · et prouvabilité, 108 q-réalisabilité, 109 réalisation, 102 réalisation d’une formule, 105 réduction typage et réduction, 78 règle · · · à droite, 47 · · · à gauche, 47 · · · d’échange, 48 · · · d’échange intuitionniste, 52 · · · d’affaiblissement, 48 · · · d’affaiblissement intuitionniste, 52 · · · d’identité intuitionniste, 51 · · · de contraction, 48, 52 Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 140 · · · de coupure, 48, 57 · · · de coupure intuitionniste, 52, 57, 61 · · · logique, 47 · · · structurelle, 47 dérivation d’une règle, 34 règle d’élimination, 39 règle d’inférence, 33 règle d’introduction, 39 renommage de variables liées, 29 Robinson J.A., 10 Russell B., 11 Russel B., 7, 71 séquent calcul des séquents, 46 schéma d’axiomes, 31 schéma de types, 79 · · · principal, 79 second ordre, 117 sous-formule définition de la · · · , 61 propriété de la sous-formule, 61 substitution, 29 typage et substitution, 78 syntaxe conventions syntaxiques, 27 syntaxe des formules, 26 synthèse de programme, 110 système de preuve, 30 système formel, 25, 36 système hilbertien, 30, 44 termes, 26 théorème, 33 · · · de complétude, 70 · · · du point-fixe, 70 théorie · · · de la fonction-alité, 67 · · · des ensembles, 71 · · · des types, 67 déduction naturelle, 37 EON, 102 extension conservative d’une · · · , 35 extension consistante d’une · · · , 35 extension d’une · · · , 34 extension dérivable d’une · · · , 34 extension inconsistante d’une · · · , 34 système formel, 36 théorie logique, 25 tiers-exclu, 12–16, 51 transparence référentielle, 49 typage · · · et abstraction, 77 · · · et réduction, 78 · · · et substitution, 78 type · · · complexe, 73 · · · d’une application, 74 · · · d’une variable, 76 · · · dépendant, 96 · · · de K, 73 · · · de S, 74 affectation de · · · , 73 base de typage, 76 contexte, 76 schéma de types, 79 typage et abstraction, 77 typage et réduction, 78 typage et substitution, 78 types théorie des · · · , 67 vérification de preuve, 36 variable · · · liée, 28 · · · libre, 28 méta-variable, 31 substitution, 29 type d’une · · · , 76 variable liée α-conversion, 29 renommage, 29 variables d’individus, 26 variables propositionnelles, 26 Whitehead A., 11 Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 141 Table des matières Liste des chapitres I 5 I NTRODUCTION À LA LOGIQUE La logique est déclarative . . . . . . . . . . . . . Les schémas hilbertiens des propositions . . . . Naissance de la logique mathématique . . . . . Naissance de la logique formelle . . . . . . . . . La fin d’un rêve . . . . . . . . . . . . . . . . . . L’hérésie intuitionniste . . . . . . . . . . . . . . Les fondements intuitionnistes . . . . . . . . . . 7.1 Une démonstration classique troublante 8 La sémantique des preuves . . . . . . . . . . . . 8.1 Implication et quantification universelle 8.2 La négation intuitionniste . . . . . . . . 8.3 Jusqu’au dogmatisme... . . . . . . . . . . 9 Que reste-t-il de l’intuitionnisme ? . . . . . . . . 9.1 Le raisonnement intuitionniste . . . . . . 10 Différents ordres de logique . . . . . . . . . . . 11 La logique linéaire . . . . . . . . . . . . . . . . . 11.1 Intensionalité et extensionalité . . . . . . 11.2 Logique et intentionnalité . . . . . . . . 11.3 Actions et situations . . . . . . . . . . . . 11.4 En résumé... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 8 9 10 11 11 12 14 16 17 18 18 18 19 19 20 21 21 22 23 23 F ORMALISMES LOGIQUES Formules et syntaxe . . . . . . . . . . . 1.1 Vocabulaire . . . . . . . . . . . . 1.2 Les termes . . . . . . . . . . . . 1.3 Les formules propositionnelles 1.4 Les formules du premier ordre . 1.5 Conventions syntaxiques . . . . 1.6 Variables libres et liées . . . . . 1.7 Renommage des variables liées 1.8 Substitution . . . . . . . . . . . 2 Systèmes de preuves . . . . . . . . . . 2.1 Axiomes . . . . . . . . . . . . . 2.2 Schémas d’axiomes . . . . . . . 2.3 Règles d’inférence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 26 26 26 27 27 27 28 29 29 30 31 31 32 1 2 3 4 5 6 7 II 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 142 3 4 5 6 7 8 9 10 11 III 1 2 3 4 5 6 IV 1 2.4 Démontrer un théorème . . . . . . . . . . . . . . 2.5 Extensions d’une théorie . . . . . . . . . . . . . . 2.6 Systèmes formels et logiques . . . . . . . . . . . . Déduction naturelle . . . . . . . . . . . . . . . . . . . . . 3.1 La preuve en déduction naturelle . . . . . . . . . 3.2 Axiomes dans une déduction . . . . . . . . . . . 3.3 Hypothèses dans une déduction . . . . . . . . . . 3.4 Les règles d’un système de déduction naturelle . 3.5 Règles de la logique des propositions . . . . . . . 3.6 Règles de la logique des prédicats . . . . . . . . . 3.7 Autre formulation des preuves . . . . . . . . . . Les systèmes hilbertiens . . . . . . . . . . . . . . . . . . . 4.1 Axiomes pour la logique des propositions . . . . 4.2 Exemple de preuve . . . . . . . . . . . . . . . . . 4.3 Axiomes pour la logique des prédicats . . . . . . Le calcul des séquents . . . . . . . . . . . . . . . . . . . . 5.1 Les séquents . . . . . . . . . . . . . . . . . . . . . 5.2 Les axiomes et les règles d’inférence . . . . . . . 5.3 La structure des règles . . . . . . . . . . . . . . . Le calcul des séquents classique . . . . . . . . . . . . . . 6.1 Les règles structurelles . . . . . . . . . . . . . . . 6.2 Règles structurelles et linéarité . . . . . . . . . . . 6.3 Les règles logiques de la logique des propositions 6.4 Les règles logiques de la logique des prédicats . . 6.5 Exemple de démonstration . . . . . . . . . . . . . Le calcul des séquents intuitionniste . . . . . . . . . . . . 7.1 Les règles structurelles intuitionnistes . . . . . . 7.2 Les règles logiques de la logique des propositions 7.3 Les règles logiques de la logique des prédicats . . La logique intuitionniste est constructive . . . . . . . . . 8.1 La logique classique n’est pas constructive . . . . Déduction naturelle en calcul des séquents . . . . . . . . Une démonstration classique . . . . . . . . . . . . . . . . Déduction naturelle et calcul des séquents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 34 36 37 37 38 38 39 39 42 42 44 44 45 45 46 46 47 47 47 48 49 50 50 51 51 51 52 53 53 54 55 56 56 É LIMINATION DES COUPURES Le Hauptsatz de Gentzen . . . . . . . . . . . . . . . . . . . . La dernière règle en logique intuitionniste . . . . . . . . . . Propriété de disjonction (DP) . . . . . . . . . . . . . . . . . . Propriété d’existence (EP) . . . . . . . . . . . . . . . . . . . . Propriété de la sous-formule . . . . . . . . . . . . . . . . . . La démonstration du Hauptsatz de Gentzen . . . . . . . . . 6.1 Degrés d’une formule, d’une coupure, d’une preuve 6.2 La proposition principale . . . . . . . . . . . . . . . . 6.3 Le théorème . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 58 58 59 60 60 62 62 63 65 T HÉORIE DES TYPES Le paradoxe de Curry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1 Note historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 L’approche de Curry . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 68 68 69 Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 V 1.3 Le paradoxe . . . . . . . . . . . . . . . . . . 1.4 La solution proposée . . . . . . . . . . . . . 1.5 Théorie des ensembles et théorie des types . La théorie des types en Logique Combinatoire . . . 2.1 Les types en informatique . . . . . . . . . . 2.2 L’approche de Curry . . . . . . . . . . . . . 2.3 Définition des types . . . . . . . . . . . . . . Affectation de type . . . . . . . . . . . . . . . . . . 3.1 Les formules . . . . . . . . . . . . . . . . . . 3.2 Le type d’une application . . . . . . . . . . . 3.3 Le type de K . . . . . . . . . . . . . . . . . . 3.4 Le type de S . . . . . . . . . . . . . . . . . . 3.5 Non unicité du schéma de types d’un terme 3.6 Schéma de types d’une application . . . . . Exemple : déduction d’un schéma de types de I . . Introduction aux variables . . . . . . . . . . . . . . 5.1 Nouvelles formules . . . . . . . . . . . . . . 5.2 Nouveaux axiomes . . . . . . . . . . . . . . 5.3 Schéma de types d’une application . . . . . Abstraction et typage . . . . . . . . . . . . . . . . . Réduction et typage . . . . . . . . . . . . . . . . . . Substitution et typage . . . . . . . . . . . . . . . . . Schéma de types principal . . . . . . . . . . . . . . Typage et normalisation forte . . . . . . . . . . . . L’isomorphisme de Curry-Howard . . . . . . . . . L’algorithme de Morris . . . . . . . . . . . . . . . . 12.1 Exemple d’application . . . . . . . . . . . . Des variantes dans le typage . . . . . . . . . . . . . Des systèmes de typage plus expressifs . . . . . . . Présentation à la Church . . . . . . . . . . . . . . . Le typage en λ-calcul . . . . . . . . . . . . . . . . . Solution des exercices . . . . . . . . . . . . . . . . . L’ ISOMORPHISME DE C URRY-H OWARD Traduire le calcul des séquents . . . . . . . . . . . 1.1 La traduction . . . . . . . . . . . . . . . . . 2 Propriétés de la traduction . . . . . . . . . . . . . 3 La coupure en déduction naturelle . . . . . . . . . 4 L’isomorphisme, version simple . . . . . . . . . . 4.1 Correspondance formule-type . . . . . . . 4.2 Correspondance preuve-inférence de type 5 Quelles conséquences ? . . . . . . . . . . . . . . . 6 Étendons l’isomorphisme à la conjonction . . . . 7 Étendons l’isomorphisme à la disjonction . . . . . 8 Étendons l’isomorphisme à la négation . . . . . . 9 Les types dépendants . . . . . . . . . . . . . . . . 10 L’isomorphisme et la quantification universelle . 11 L’isomorphisme et la quantification existentielle . 12 Utilisation informelle . . . . . . . . . . . . . . . . 13 L’isomorphisme en table . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 70 71 71 72 72 72 73 73 73 73 74 74 75 75 76 76 76 77 77 78 78 79 79 79 80 81 82 83 84 84 85 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 88 88 90 91 92 92 92 93 93 94 95 96 96 96 97 98 Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 144 14 VI Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . R ÉALISABILITÉ La réalisabilité de Kleene . . . . . . . . . . . Le langage d’EON . . . . . . . . . . . . . . . La partialité . . . . . . . . . . . . . . . . . . . La logique . . . . . . . . . . . . . . . . . . . 4.1 Les termes . . . . . . . . . . . . . . . 4.2 Les prédicats . . . . . . . . . . . . . . 4.3 Le système formel . . . . . . . . . . . 4.4 De nouvelles règles . . . . . . . . . . 4.5 L’égalité . . . . . . . . . . . . . . . . 4.6 L’égalité faible . . . . . . . . . . . . . 5 Les entiers . . . . . . . . . . . . . . . . . . . 6 Définition de la réalisabilité . . . . . . . . . . 7 Réalisabilité des formules négatives . . . . . 8 Réalisabilité et prouvabilité . . . . . . . . . . 9 q-Réalisabilité . . . . . . . . . . . . . . . . . 10 Synthèse de programmes fonctionnels . . . 11 Exemple de synthèse . . . . . . . . . . . . . 11.1 Axiome de récurrence . . . . . . . . . 11.2 Réalisation de l’axiome de récurrence 11.3 Réalisation des formules atomiques . 11.4 La preuve (presque formelle) . . . . . 12 Lien avec le langage PROLOG . . . . . . . . 1 2 3 4 VII L E SYSTÈME AF2 1 L’alphabet . . . . . . . . . . . . . . . . 2 Les termes . . . . . . . . . . . . . . . . 3 Les formules atomiques . . . . . . . . . 4 Les formules . . . . . . . . . . . . . . . 5 Méta-définitions . . . . . . . . . . . . . 6 Modèles de la logique du second ordre 7 Modèle et satisfaction . . . . . . . . . . 8 Conséquence et validité . . . . . . . . . 9 Le schéma de compréhension . . . . . 10 Formules équationnelles . . . . . . . . 11 Axiomes et règles d’inférences . . . . . 12 Le système AF2 . . . . . . . . . . . . . 12.1 Les règles de typages . . . . . . 13 Isomorphisme de Curry-Howard . . . 14 Réalisabilité dans AF2 . . . . . . . . . . 15 Théorème d’extension . . . . . . . . . . 16 Modèle standard . . . . . . . . . . . . . 17 Type de données dans AF2 . . . . . . . 18 Programmation dans AF2 . . . . . . . 19 Les booléens . . . . . . . . . . . . . . . 20 Les entiers . . . . . . . . . . . . . . . . 21 Produit cartésien de types de données . 22 Union disjointe de types de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 102 102 103 103 103 103 104 104 104 104 105 105 107 108 109 110 110 111 111 111 111 114 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 117 118 118 118 120 120 121 121 122 124 125 126 126 127 127 128 129 129 129 130 131 132 133 Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 145 23 24 25 Résultats utiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 La fonction prédécesseur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 Remarques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 I NDEX 137 Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3 146 Patrick Bellot, ENST — Akim Demaille, EPITA Licence des droits d’usage en page 3