Cours n°7 AFFINER LA LOGIQUE : DE LA LOGIQUE INTUITIONNISTE A LA LOGIQUE LINEAIRE 1 - Le calcul des séquents classique 1.1. Le calcul des séquents comme méthode de décision Bien que la méthode des tables de vérité ne puisse pas s’y appliquer, on peut démontrer que la logique propositionnelle intuitionniste est décidable. La méthode de décision repose alors sur une nouvelle présentation de la logique (nouvelle par rapport aux deux que nous avons vues jusqu’à présent : une axiomatisation « à la Hilbert » et une présentation de type « déduction naturelle »), due à Gerhart Gentzen dans les années trente, que l’on appelle le « calcul des séquents ». Ce calcul fut en réalité inventé par Gentzen dans le cadre de la démonstration de la complétude de la logique des prédicats du premier ordre. Intuitivement, pour prouver la complétude d’un système, il faut prouver que toute thèse est démontrable, donc montrer que connaissant une thèse, on peut construire sa démonstration. La bonne méthode pour y arriver consiste à se munir d’un système général de recherche de preuves. Gentzen travaille sur des relations de déduction entre séries de formules. Prenons l’exemple suivant. On sait qu’il est possible de déduire B de la suite de formules C, C ⇒ A, ¬A ∨ B. On peut écrire cette relation déductive entre une suite de formules et une formule sous la forme : C, C ⇒ A, ¬A ∨ B → B où la flèche (→) sépare la suite de prémisses de la conclusion. Si on nous demande de prouver, en logique classique, cette relation de déduction, nous pouvons utiliser une méthode à base de valeurs de vérité en raisonnant de la manière suivante : supposons que ce ne soit pas le cas, c’est-à-dire que C, C ⇒ A, ¬A ∨ B ne permette pas de déduire B, alors cela signifierait qu’il existe au moins une assignation de valeurs de vérité aux propositions atomiques A, B, C telle que : • C, C ⇒ A, ¬A ∨ B soient vraies (= 1) • B soit fausse (= 0) Alors cela entraînerait que, en ce qui concerne la formule C ⇒ A : • ou bien C est fausse (0) • ou bien A est vraie (1) Mais étant donné que C est vraie, la première éventualité nous conduit à une contradiction : nous stoppons la recherche de démonstration sur cette voie. Il reste l’éventualité que A soit vraie. En ce cas, pour ce qui concerne la formule ¬A ∨ B, puisqu’elle est vraie, cela ne peut être que parce que : • ou bien ¬A est vraie, donc A est fausse, • ou bien B est vraie Dans la première éventualité, nous stoppons la recherche de preuve également puisqu’on obtient une contradiction entre A vraie et A fausse. Reste la dernière éventualité : B vraie, mais au début de notre raisonnement, nous avons supposé que B était fausse, donc là encore, nous stoppons la recherche de démonstration. Il n’y a plus alors d’autre voie à explorer. Toutes les voies nous ayant ainsi conduit à une contradiction, c’est que l’hypothèse d’où nous sommes partis conduit à une absurdité, et nous devons conclure que la suite de formules C, C ⇒ A, ¬A ∨ B permet bien de déduire B. Nous pouvons représenter l’ensemble de ce raisonnement par un tableau, ou plutôt une suite de lignes, que nous lisons en remontant de la dernière ligne (racine d’un arbre) vers les premières (feuilles en même temps qu’axiomes). Dans cette représentation, la flèche « → » n’a pas d’autre rôle que de séparer les formules vraies (à gauche) des formules fausses (à droite). Ax. A, C, C ⇒ A, ¬A ∨ B → A, B Ax. ¬A, A, C, C ⇒ A, ¬A ∨ B → B B, A, C, C ⇒ A, ¬A ∨ B → B Ax. C, C ⇒ A, ¬A ∨ B → B, C A, C, C ⇒ A, ¬A ∨ B → B C, C ⇒ A, ¬A ∨ B → B Dans ce tableau, nous avons mis en gras à chaque ligne: une formule (par exemple C ⇒ A à la dernière ligne, ¬A ∨ B à l’avant-dernière à droite et ¬A à l’avant-avant-dernière à gauche) ainsi que des formules émanant de la ligne antérieure (en partant du bas). D’autre part, nous avons surligné les séquents au moyen d’une ligne marquée « Ax » chaque fois qu’une même formule (atomique) figure à la fois à gauche et à droite. Ceci a un sens puisque nous avons vu que cela signifie qu’on a une contradiction. Autre remarque : à l’avant-dernière ligne, à gauche, nous avons un séquent qui possède deux formules à droite séparées par une virgule. Cela signifie que notre « calcul des séquents » admet des séquents avec plus d’une formule en partie droite, donc des séquents de la forme générale : (1) A1, …, Ak → B1, …, Bm Quelle est alors l’interprétation de cette virgule en partie droite ? si la virgule en partie gauche s’interprète de manière évidente comme une conjonction, par quoi s’interprète-t-elle en partie droite ? Noter que dire que B et C sont faux est équivalent à dire que B ou C est faux. La virgule en partie droite s’interprète donc comme une disjonction. Un séquent tel que (1) peut donc se lire comme une relation de déduction : « de A1 ∧ …∧ Ak on peut déduire B1∨ …∨ Bm ». Nous verrons plus loin que la spécificité de la logique intuitionniste sera justement d’interdire qu’il y ait en partie droite d’un séquent plus d’une formule. 1.2 Le calcul des séquents classique Cet exemple nous montre encore que chaque passage d’une ligne inférieure à une ligne immédiatement supérieure obéit à une règle définie strictement, qui dépend de la formule qu’on a sélectionnée dans la ligne inférieure. Si cette formule (dite « formule active ») est une implication ϕ ⇒ ψ, alors on a deux lignes immédiatement au-dessus (nous les appellerons prémisses), l’une pour laquelle ϕ est faux et l’autre pour laquelle ψ est vrai. Schématiquement, cela conduit à : ∆ → Λ, A B, Γ → Θ A ⇒ B, ∆, Γ → Λ, Θ On remarquera ici que ce schéma n’est pas exactement conforme aux pas mentionnés dans l’exemple : on a supprimé l’occurrence de A ⇒ B dans les prémisses afin d’éviter de refaire plusieurs fois le même pas dans la preuve (ce qui serait très improductif et conduirait pour rien à des déductions infiniment longues !) et d’autre part, on a scindé le contexte de la formule en quatre parties ∆, Γ, Λ, Θ. On fait alors l’hypothèse que seules les formules de ∆ sont utilisées pour prouver A ainsi que celles de Λ et que seules les formules de Γ sont utilisées pour faire la preuve de Θ. On peut démontrer qu’une telle partition est toujours possible et qu’elle ne restreint en rien la généralité. Elle va nous permettre de donner une formulation plus simple du système. Le schéma précédent sera appelé « règle d’introduction à gauche du symbole ⇒ ». On peut le lire : pour que la suite de formules A ⇒ B, ∆, Γ permette de déduire la suite Λ, Θ, il suffit que ∆ permette de déduire Λ, A et que B, Γ permette de déduire Θ. Noter que si on ne veut pas procéder à cette séparation des contextes, on peut tout aussi bien prendre comme règle : Γ → Θ, A B, Γ → Θ A ⇒ B, Γ → Θ (la formulation des feuilles en sera simplement changée) L’exemple précédent nous a également montré que, dans le cas d’une disjonction sur le côté gauche d’un séquent, nous avions : A,∆→Λ B, Γ → Θ A∨B, ∆, Γ → Λ, Θ ou : (règle d’introduction à gauche du “ou”) A, Γ → Θ B, Γ → Θ A∨B, Γ → Θ A la suite de ces exemples, on peut facilement deviner ce que seront les autres règles. Règle d’introduction à gauche du « et » : A, B, Γ → Θ A∧B, Γ → Θ Passons maintenant aux règles d’introduction à droite. Règle d’introduction à droite de l’implication : A, Γ → Θ, B Γ → Θ, A⇒ B Règle d’introduction à droite du « ou » : Γ → A, B, Θ Γ → A∨B, Θ Règle d’introduction à droite du « et » : ∆→A,Λ Γ → B, Θ ∆, Γ → A∧B, Λ, Θ ou, tout aussi bien : Γ → A, Θ Γ → B, Θ Γ → A∧B, Θ Nous avons aussi des règles évidentes pour la négation : Introduction à droite : A, Γ → Θ Γ → Θ, ¬A Introduction à gauche : Γ → Θ, A ¬A, Γ → Θ Ces règles donnent tous les pas possibles à l’intérieur d’une déduction dans le cadre du calcul des séquents, mais elles ne suffisent pas : il faut indiquer quand on s’arrête, autrement dit définir les feuilles de nos arbres de preuves. Si nous retenons la version qui ne sépare pas les contextes, comme dans le cas de l’exemple ci-dessus, nous devons considérons comme instance de l’axiome tout séquent de la forme : A, Γ → Θ, A Autrement dit tout séquent où figure une même formule à gauche et à droite. Si nous adoptons la version qui sépare les contextes, nous pouvons nous contenter de l’axiome dit « d’identité » : A→A 1.3 Les règles structurelles Il est important de noter aussi que le calcul des séquents manipule des suites de formules et qu’en logique classique, on admet que les formules sont des entités « idéales », qu’on peut aussi bien réutiliser à volonté que mettre à l’écart : la monotonie est en effet une propriété importante de la logique classique. Si nous pouvons prouver une formule B à partir d’une suite de formules Γ, a fortiori nous pourrons encore prouver B si nous ajoutons d’autres hypothèses à Γ, même si nous ne les utilisons pas dans la démonstration ! On appelle cela une règle « d’affaiblissement ». Le fait quant à lui qu’une formule puisse être utilisée plusieurs fois ressortira d’une règle dite « de contraction ». Enfin, il n’y a bien sûr aucune contrainte sur l’ordre des formules dans notre calcul : on peut les permuter à volonté sans qu’il en résulte quelque inconvénient que ce soit. D’où les règles dites « structurelles » à gauche et à droite : Affaiblissement : Γ→Θ Γ, A → Θ Γ→Θ Γ → A, Θ Contraction : Γ, A, A → Θ Γ, A → Θ Γ → A, A, Θ Γ → A, Θ Permutation : Γ, A, B → Θ Γ, B, A → Θ Γ → A, B, Θ Γ → B, A, Θ 1.4 La règle de coupure Enfin, Gentzen introduit une règle fondamentale qui permet de composer les preuves et qui intuitivement est assez évidente : Γ → Λ, A A, ∆ → Θ Γ, ∆ → Λ, Θ Ou, sans la séparation des contextes : Γ→A A, Γ → Θ Γ→Θ C’est ce qu’on appelle la règle de coupure (cut en anglais). Intuitivement, si on peut prouver A à partir de Γ et si, en utilisant A on peut prouver Θ, alors on peut prouver Θ directement à partir de Γ. On remarquera la parfaite symétrie de cet ensemble de règles. C’est cette symétrie qui est à l’origine d’un des théorèmes les plus importants de la logique, dû à Gentzen (en 1934), qui est le théorème d’élimination de la coupure. Thèorème de Gentzen (Hauptsatz) : le système sans la règle de coupure possède également les mêmes conséquences que le système avec la règle de coupure. On remarquera également cette propriété étonnante, dite « propriété de la sous-formule », qui réside en ceci que lorsqu’on prend toutes les règles, sauf celle de coupure, il se trouve que la ligne supérieure ne contient que des sous-formules de la ligne inférieure. Plus précisément, à chaque pas d’une déduction dans le calcul des séquents, une ligne supérieure contient toutes les sous-formules (et rien que les sous-formules) de la ligne qui est juste inférieure sauf une : celle qu’on a prise comme « formule active » et qui, par l’application d’une règles associée à un connecteur, s’est retrouvée décomposée. Ceci conduit à un autre algorithme que la méthode des tables de vérité pour décider de la validité d’une formule de la logique propositionnelle : on part du séquent →ϕ à démontrer et on essaie toutes les règles logiques applicables (si ϕ est une formule, le choix de la règle à appliquer est déterminé par son connecteur principal). A chaque application de règle, on tombe sur un ou deux nouveaux séquents à démontrer, qui n’ont pas plus d’ingrédients que n’en avait le premier séquent (et même moins), alors on recommence sur chaque séquent et ainsi de suite jusqu’à ce qu’on trouve (ou qu’on ne puisse pas trouver) une instance d’axiome d’identité. Etant donné que les formules se déstructurent à chaque pas, il arrive nécessairement un moment où il n’y a plus que des formules atomiques et où on est obligé de s’arrêter. En ce cas, on voit si on a stoppé toutes les branches de la démonstration par des axiomes ou si ce n’est pas le cas. La théorème d’élimination de la coupure nous permet d’être sûr que tous les séquents démontrables sont bien obtenus de cette manière : la règle de coupure n’en ajouterait pas d’autres. L’intérêt du calcul de séquents va être que, grâce à lui, la logique intuitionniste va posséder elle aussi une procédure de décision. 2- La logique intuitionniste revisitée 2.1. Le calcul des séquents intuitionniste Le calcul des séquents intuitionniste s’obtient simplement à partir du calcul classique en restreignant les séquents à la forme : A1, …, Ak → B ou A1, …, Ak → Comme on le voit immédiatement, le premier schéma appelle une interprétation fonctionnelle : les Ai (A1, …, Ak) sont des « inputs » et B est un « output » : nous y reviendrons plus loin. Quant au deuxième schéma, la place vide à droite de la flèche signifie une disjonction vide de formules, or une telle disjonction vide est nécessairement équivalente à l’élément neutre de la disjonction, lequel comme on le sait, n’est autre que la constante qui signifie le faux, quelque chose que nous noterons « ⊥ » (on peut dire aussi : l’absurde). D’où les deux formes de séquents intuitionnistes : A1, …, Ak → B A1, …, Ak → ⊥ A cause de cette restriction, certaines règles du calcul classique disparaissent. Evidemment la contraction et la permutation à droite n’ont plus lieu d’être. La seule règle structurelle qui demeure à droite est celle d’affaiblissement. Elle signifie alors que si, à partir d’une suite de formules, on peut déduire l’absurde, alors on peut déduire n’importe quelle formule : quelque chose que nous savions déjà dans la logique classique. La règle d’introduction de « ∨ » à droite ne peut plus exister. Elle est remplacée par deux règles : Introduction de ∨ à droite : 1) Γ→A Γ → A∨B 2) Γ→B Γ → A∨B On perd alors la symétrie qui existait en logique classique, entre les règles du « et » et celles du « ou ». De même, les règles pour la négation deviennent : Introduction à droite : A, Γ → ⊥ Γ → ¬A Introduction à gauche : Γ→A ¬A, Γ → ⊥ La règle d’introduction à gauche de « ⇒ » devient : ∆→A B, Γ → C A ⇒ B, ∆, Γ → C Pour la droite, bien entendu : A, Γ → B Γ → A⇒ B On remarquera bien que dans ce système, il est impossible de démontrer le tiers-exclu, c’està-dire le séquent → A∨¬A. En effet, si on essaie de prouver ce séquent, on va essayer de lui appliquer les règles logiques ci-dessus. Comme la seule règle utilisable est l’une des deux « demi »-règles pour l’introduction de ∨ à droite, on a le choix de faire provenir ce séquent du séquent → A ou bien du séquent → ¬A, mais évidemment aucun de ces deux séquents n’est prouvable. Il n’est pas davantage possible de prouver le séquent → ¬¬A ⇒ A, car il ne pourrait provenir que du séquent ¬¬A → A, auquel ne s’applique pas la règle d’introduction de ¬ à gauche (puisque celle-ci ne peut s’appliquer qu’à un séquent ayant ⊥ en partie droite). D’autres théorèmes de la logique classique propositionnelle ne sont plus démontrables en logique intuitionniste. On vérifiera ainsi que si, en logique propositionnelle, on peut prouver le théorème selon lequel quelles que soient les propositions P et Q, on a toujours (P ⇒ Q) ∨ (Q ⇒ P) (ce qui est assez étrange, avouons-le !), on ne peut plus le faire en logique intuitionniste. [Remarque : en logique propositionnelle, on a |= (P ⇒ Q) ∨ (Q ⇒ P) simplement à partir de |= ¬(¬(P ⇒ Q)∧¬(Q ⇒ P)) c’est-à-dire : |= ¬((P∧¬Q) ∧ (Q∧¬P)). En logique intuitionniste, on ne peut pas le démontrer parce qu’on ne dispose pas de la partie des lois de De Morgan selon laquelle de ¬(A ∧ B), on peut déduire ¬A∨¬B. En effet, là encore, pour avoir ce dernier théorème, il faudrait pouvoir utiliser une des règles d’introduction du ∨ à droite, il faudrait donc, soit que ¬(A ∧ B) permette de déduire ¬A, soit que ¬(A ∧ B) permette de déduire ¬B. Or, aucun des deux n’est possible.] Un exemple de preuve en logique intuitionniste : [Axiome] p→p [Affaiblissement] p, q → p [⇒ D] p → q ⇒ p [⇒ D] → p ⇒ (q ⇒ p) 2.2. Quelle sémantique pour un tel calcul ? Nous avons déjà vu une sémantique de la logique intuitionniste : celle de Kripke. C’est une sémantique des « formules ». Autrement dit, une formule de la logique intuitionniste est vraie si et seulement si elle est vraie dans tous les modèles arborescents, c’est-à-dire tous les (e0, K, ≤), où e0 est l’état initial (« racine ») et où K est un ensemble d’états muni de la relation ≤ qui structure K en arborescence. Nous avons aussi suggéré qu’un séquent intuitionniste ressemblait beaucoup à une fonction à n variables. Nous allons maintenant développer ce second aspect en nous centrant sur les preuves, davantage que sur les formules. Les deux points de vue ne sont toutefois pas contradictoires : l’interprétation dite « BHK » (interprétation de Brouwer – Heyting – Kolmogorov) considère en effet que le sens d’une formule, c’est l’ensemble de ses preuves. A condition bien entendu qu’on ait de ces preuves un calcul effectif. Un tel calcul doit nous indiquer comment obtenir une preuve d’une certaine formule à partir des preuves de ses composantes, d’où finalement : comment combiner des preuves élémentaires pour obtenir des preuves plus complexes ? • Qu’est-ce qu’une preuve de A ∧ B ? C’est, « naturellement », un couple formé d’une preuve de A et d’une preuve de B. • Qu’est-ce qu’une preuve de A ∨ B ? en logique intuitionniste, si on veut prouver une telle formule (une disjonction) il faut qu’on puisse prouver soit A soit B (nous avons vu plus haut que nous n’avons pas la règle de De Morgan qui fait que, parfois, en logique classique, on prouve A ∨ B en montrant que ¬A et ¬B sont impossibles), autrement dit : une preuve de A ∨ B est une construction particulière qui consiste soit en une preuve de A ∨ B sous l’hypothèse A si A est prouvable soit en une preuve de A ∨ B sous l’hypothèse B si c’est B qui est prouvable (ce qu’on appelle une définition par cas en informatique). • Qu’est-ce qu’une preuve de A ⇒ B ? C’est un moyen systématique d’associer, à une preuve de A, une preuve de B, autrement dit : c’est une fonction ! • Il n’y a pas de preuve de l’absurde (⊥). • Evidemment s’il y a une preuve de A, il ne peut pas y avoir de preuve de ¬A (sans quoi, étant donné que ¬A est équivalent à A ⇒ ⊥, il y aurait une preuve de l’absurde : il suffirait en effet d’appliquer la fonction associée à la preuve de l’implication à la preuve de A). On peut maintenant aller plus loin et donner une signification aux règles elles-mêmes par lesquelles sont construites les preuves. Etant données les associations qu’on vient de faire, on voit qu’utiliser la règle d’élimination de l’implication ([e ⇒]), c’est-à-dire le modus ponens, revient à appliquer la fonction associée à la preuve de A ⇒ B, à une preuve de A : on obtient alors une preuve de B. On peut ainsi « décorer » la règle : a:A f:A⇒B f(a) : B Utiliser la règle d’introduction de l’implication revient au contraire à « fabriquer » la fonction associée à la preuve de A ⇒ B. Comment la fabrique-t-on ? On suppose obtenue une preuve de B, cette preuve utilise quelque part (ou n’utilise pas, dans certains cas particuliers) une variable, qui renvoie à une hypothétique preuve de A : elle est telle en effet que si nous avions une preuve de A en bonne et due forme, alors nous pourrions utiliser cette preuve dans la preuve de B et ainsi obtenir une preuve de B sans l’hypothèse A, mais lorsqu’on démontre A ⇒ B, on fait l’hypothèse A pour pouvoir démontrer B, on n’a donc pas de preuve tangible de A, on a seulement l’hypothèse d’une telle preuve, représentée par une variable. La fonction associée à la preuve de A ⇒ B est donc le processus abstrait par lequel en remplaçant la variable représentant une preuve de A dans la preuve de B, on obtient une authentique preuve de B Soit donc f la preuve de B, obtenue avec l’hypothèse représentée par x, on note ce processus abstrait : λx. f. C’est l’abstraction de x dans ϕ. La règle décorée est : [x : A]i f:B λx. f : A ⇒ B - Pour la conjonction, nous aurons : Elimination : (a, b) : A ∧ B |-- a : A (a, b) : A ∧ B |-- b : B Il s’agit des projections d’un couple Introduction : a : A, b : B |-- (a, b) : A ∧ B Il s’agit de la formation d’un couple - Pour la disjonction : Elimination : de Γ, x : A |-- c(x) : C et Γ, y : B |-- c(y) : C on peut déduire : Γ, z : A ∨ B |-- cas(z, [x].x, [y].y) : C Introduction : x: A |-- ι1(x) : A ∨ B x : B |-- ι2(x) : A ∨ B où ι1 et ι2 sont les « injections » de respectivement A et B dans « l’union » de A et de B. Si on se restreint aux seules règles concernant l’implication, on retrouve le λ-calcul, inventé par A. Church dans les années trente afin de régler rigoureusement le problème de la substitution des variables dans des expressions fonctionnelles, un calcul suffisamment puissant pour donner un modèle général équivalent aux machines de Turing, autrement dit un modèle grâce auquel on peut effectivement calculer tout ce qui est calculable par une machine. 2.3 La correspondance de Curry-Howard En chemin, nous avons découvert une correspondance fondamentale entre la logique et le calcul, que l’on appelle « correspondance de Curry-Howard », et qu’on peut résumer par le tableau suivant : Logique (intuitionniste) preuve hypothèse élimination de ⇒ introduction de ⇒ hypothèse déchargée formule (lambda) calcul λ-terme variable (libre) application abstraction variable liée type Regardons un exemple de preuve en logique intuitionniste, faite dans le système de la déduction naturelle. [x : A]1 [y : A ⇒ B]3 [z : B ⇒ C]2 y(x) : B z(y(x)) : C 1 λx. z(y(x)) : A ⇒ C 2 3 λz.λx. z(y(x)) : (B ⇒ C) ⇒ (A ⇒ C) λy. λz.λx. z(y(x)) : (A ⇒ B) ⇒ ((B ⇒ C) ⇒ (A ⇒ C)) La preuve est représentée par le λ-terme λy. λz.λx. z(y(x)). Que fait ce λ-terme ? si on l’applique à deux fonctions f et g, on obtient : [[λy. λz.λx. z(y(x))](f)](g) → [λz.λx. z(f(x))](g) → λx. g(f(x)) soit la fonction qui, à toute valeur de x, associe la valeur correspondante de g(f(x)), autrement dit la fonction composée g o f. Or, comme on sait, une telle composition de fonctions n’a de sens que si l’ensemble d’arrivée de f est inclus dans l’ensemble de définition de g, mais cela est justement ce qu’exprime la formule, qu’on peut interpréter comme : à toute fonction de A dans B et à toute fonction de B dans C, on peut associer une fonction de A dans C. Ainsi la formule exprime-t-elle une contrainte de typage. Si on appelle « type » d’un objet son ensemble de référence, alors la formule représente le type du λ-terme λy. λz.λx. z(y(x)), d’où l’idée que dans la correspondance ci-dessus, la notion de formule corresponde à celle de type. On notera d’autre part que le λ-terme obtenu est bien aussi une sorte de « programme » : le programme qui accomplit la composition de deux fonctions. Une autre présentation de cette correspondance repose sur le calcul des séquents. On y retrouve évidemment les mêmes idées, mais avec en plus une interprétation pour la fameuse élimination des coupures. Limitons-nous à la logique implicationnelle intuitionniste. Elle consiste dans les règles suivantes, que nous allons décorer, elles aussi, avec des λ-termes : Règles logiques : ∆→x:A y : B, Γ → γ: C f : A ⇒ B, ∆, Γ → γ[f(x)/y] : C x : A, Γ → α : B Γ → λx. α : A⇒ B Axiome d’identité : x:A→x:A Règle de coupure : ∆→x:A y : A, Γ → γ: C ∆, Γ → γ[x/y] : C L’élimination de la règle de coupure dans une déduction a pour corollaire la réduction du λterme associé. Ainsi non seulement cette correspondance est-elle une sorte de dictionnaire entre le langage des preuves (langage de la logique) et celui des calculs (langage du λ-calcul), mais encore les structures se transportent et les procédures se correspondent également, c’est la raison pour laquelle on parle d’un isomorphisme : l’isomorphisme de Curry-Howard. Celuici a été beaucoup utilisé en informatique dans la conception communément appelée « preuves comme programmes » (proofs as programs). L’enjeu est de pouvoir écrire en même temps un programme informatique et la preuve de sa correction : on commence par spécifier le problème dans un langage basé sur la logique intuitionniste (en fait un langage bien plus vaste, comme dans la théorie des types de Martin-Löf ou la théorie des constructions de T. Coquand), on fait la preuve dans ce système que la spécification est correcte (par exemple que la somme ainsi spécifiée de deux entiers est bien un entier) et on extrait un programme correspondant à la spécification. Cette conception est la réalisation concrète de l’idée que les preuves en logique peuvent avoir un contenu constructif, ou encore algorithmique. Désormais, on ne s’intéresse plus aux preuves que pour leur contenu algorithmique. La rencontre avec l’informatique est ainsi un second choc pour la logique, dans son histoire, après le choc de la rencontre avec les mathématiques. Le premier avait entraîné une mathématisation de la logique et la mise en avant de grands métathéorèmes concernant les possibilités et les limites des systèmes logiques, en tant que représentant (plus ou moins fidèlement) l’activité mathématique. Le second introduit une dynamisation de la logique par le fait qu’on se centre désormais sur les preuves en tant que programmes. Une telle évolution entraîne avec elle de nombreuses conséquences, mais aussi des questions. 1- peut-on étendre l’isomorphisme de Curry-Howard à d’autres logiques que la logique intuitionniste ? à la logique classique en particulier ? 2- pouvons-nous en déduire des logiques qui, de même que la logique intuitionniste recèle en elle-même implicitement une interprétation en termes de processus d’évolution des connaissances, recèleraient une interprétation d’un autre type ? en termes d’actions par exemple, voire en termes d’interactions ? La recherche de réponse à ces questions va d’abord permettre de mettre le doigt sur de nouvelles logiques pouvant avoir elles aussi des interprétations intéressantes d’un point de vue informatique, il s’agit d’abord de la logique linéaire de J. Y. Girard. 3. La logique linéaire 3.1 Qu’est-ce que la logique linéaire ? Reprenons le calcul des séquents, dans sa conception classique cette fois, et non intuitionniste. Nous avons, au début de ce chapitre, que l’on pouvait donner des formulations diverses de la même règle. Par exemple, pour le « ou » à gauche : A,∆→Λ B, Γ → Θ A∨B, ∆, Γ → Λ, Θ admet la variante : A, Γ → Θ A∨B, Γ → Θ B, Γ → Θ De même que la règle d’introduction à droite du « et » : ∆→A,Λ Γ → B, Θ ∆, Γ → A∧B, Λ, Θ admet la variante : Γ → A, Θ Γ → A∧B, Θ Γ → B, Θ Or la preuve de l’équivalence de ces règles, à l’intérieur de chaque couple, repose, comme on pourra le vérifier, sur l’utilisation des règles d’affaiblissement et de contraction. Supposons donc une logique privée de ces deux règles structurelles : les formulations données ne seraient plus équivalentes ! Ce qui signifie que, pour le « ou », on aurait deux variantes différentes, l’une ayant pour règle d’introduction à gauche : A,∆→Λ B, Γ → Θ A∨B, ∆, Γ → Λ, Θ et l’autre ayant pour règle : A, Γ → Θ A∨B, Γ → Θ B, Γ → Θ Idem pour le « et ». Il y aurait un « et » dont la règle d’introduction à droite serait : ∆→A,Λ Γ → B, Θ ∆, Γ → A∧B, Λ, Θ Et un autre dont la règle correspondante serait : Γ → A, Θ Γ → A∧B, Θ Γ → B, Θ Appelons opérateurs multiplicatifs ceux qui sont introduits avec des règles qui séparent les contextes, et opérateurs additifs ceux qui sont introduits par des règles qui identifient les contextes. Le « ∨ » classique se scinde en deux instances, une multiplicative : ℘, et une additive : ⊕. Le « ∧ » classique se scinde également en deux instances, une multiplicative : ⊗, et une additive : &. D’où les règles : [℘ G] : A,∆→Λ B, Γ → Θ A℘B, ∆, Γ → Λ, Θ [⊕ G] : A, Γ → Θ B, Γ → Θ A ⊕ B, Γ → Θ [⊗ D] : ∆→A,Λ Γ → B, Θ ∆, Γ → A ⊗ B, Λ, Θ [& D] : Γ → A, Θ Γ → B, Θ Γ → A & B, Θ [℘D] : Γ → A, B, Θ Γ → A℘B, Θ [⊗ G] : A, B, Γ → Θ A ⊗ B, Γ → Θ [& G] : A, Γ → Θ A & B, Γ → Θ [⊕ D] : Γ → A, Θ Γ → A ⊕ B, Θ B, Γ → Θ A & B, Γ → Θ Γ → B, Θ Γ → A ⊕ B, Θ Négation : A, Γ → Θ Γ → Θ, A⊥ Γ → Θ, A A⊥, Γ → Θ En définissant un nouveau connecteur (“implication linéaire”), au moyen de : A –o B ≡ A⊥ ℘ B on trouve les règles suivantes : [--o G] : ∆ → Θ, A B, Γ → Λ A –o B, ∆, Γ → Θ, Λ [ --o D] : A, Γ → Θ, B Γ → Θ, A –o B On peut commenter [--o G] en disant : si la partie des formules ∆ permet de fournir un A, conjointement avec les formules de Θ, et si B, conjointement avec les formules de Γ, permet d’obtenir la suite de formules Λ, alors A –o B, mis avec ∆ et Γ, donnera la suite de formules Θ, Λ. Comme les règles d’affaiblissement et de contraction sont absentes du système, chaque occurrence de formule dans les listes indiquées par des capitales grecques compte. Lorsque les occurrences de formules dans ∆ ont été utilisées pour prouver A, elles ne sont plus disponibles pour prouver Λ en compagnie de B, puisqu’en effet ∆ et Γ contiennent par définition des suites différentes d’occurrences de formules. On dit alors que la suite ∆ a été “consommée” par A –o B. On voit alors que les éléments des suites en question peuvent être interprétées comme des ressources plutôt que comme d’ordinaires formules. Une formule implicative, comme A –o B, ne représente ainsi plus seulement une fonction (comme en logique intuitionniste) mais un processus consommateur de ressources, et bien entendu, une formule ne peut plus être interprétée en termes de valeurs de vérité. On peut poursuivre l’interprétation des connecteurs introduits et on va voir émerger une nouvelle conception de la logique, sensible cette fois au contexte, c’est-à-dire aux ressources disponibles : d’abord à leur quantité (interdiction de compter une ressource pour deux, à cause de l’absence de la règle de contraction, interdiction aussi de « négliger » une ressource, à cause de l’absence de la règle d’affaiblissement), puis même à leur ordre, si on supprime aussi la règle de permutation, ce qui s’avèrera crucial dans des applications linguistiques. Des processus consommateurs de ressources sont justement à la base de l’action. Ainsi pourra-t-on interpréter la logique linéaire comme une logique de l’action, de la même façon que nous avons interprété la logique intuitionniste comme une logique de la connaissance. Qui plus est, on peut même interpréter la logique linaire en termes d’interactions. 3.2. Les exponentielles de la logique linéaire La logique linéaire limitée aux règles du paragraphe précédent appartient à la famille des logiques dites « sous-structurelles » (obtenues en restreignant l’emploi des règles structurelles du calcul des séquents). Cette famille contient aussi la logique dite « pertinente » (Relevance Logic) de Belnap et Anderson et les « display logics » (R. Goré). La logique pertinente, en particulier, a été spécialement conçue pour répondre aux questions sur l’implication posées au début du chapitre sur les modalités : elle a pour but d’empêcher qu’une formule n’entrant pas de manière active dans la construction d’une preuve puisse apparaître comme prémisse d’un raisonnement. Typiquement, en logique pertinente, on ne peut pas prouver une loi logique comme : p ⇒ (q ⇒ p) . Cela s’explique de la manière suivante. Supposons que nous voulions démontrer cette loi en logique propositionnelle dans le formalisme de la déduction naturelle. Nous procéderions comme suit : hypothèse : p hypothèse : q p q⇒p p ⇒ (q ⇒ p) 1 2 3 4 5 - par simple réitération de la ligne 1 – - par introduction de ⇒ à partir de la sous-déduction 2-3- par introduction de ⇒ à partir de la sous-déduction 1-4- mais au pas 3, p provient simplement de l’hypothèse posée au pas 1, q n’est pas utilisée pour prouver p. C’est cela qu’interdit la logique pertinente. En logique linéaire, on a la même chose, qui peut s’exprimer par la déduction suivante en calcul des séquents : p, q → p p → (q ⇒ p) → p ⇒ (q ⇒ p) mais p, q → p n’est pas prouvable : il ne correspond à aucune règle logique, aucune règle structurelle (puisqu’on a supprimé la règle d’affaiblissement) et aucun axiome. Ceci dit, les pouvoirs d’une logique sous-structurelle sont limités. Il y a des cas notamment où l’on a besoin d’utiliser des « ressources » plus d’une fois, voire de manière quasi infinie. Dans un problème de planification d’actions par exemple, on peut évidemment recourir à des ressources vite épuisables (l’argent dont on dispose, le carburant etc.) mais aussi, pourquoi pas, à d’autres qui peuvent être admises comme inépuisables (l’air qu’on respire…). D’autre part, il est utile de pouvoir retrouver la logique intuitionniste, voire classique, à partir d’une logique sous-structurelle. On pourrait dire évidemment qu’il suffit de réintroduire les règles structurelles éliminées, mais alors les gains obtenus par leur suppression seraient annulés. Il est plus intéressant de les réintroduire seulement localement. Qu’est-ce qui indiquera la possibilité d’une telle ré-introduction ? Un connecteur unaire affectant une formule. De tels connecteurs sont, en logique linéaire, appelés des exponentielles. Ils ressemblent aux modalités S4. Comme elles, ils forment une paire : ! et ?. Si certaines de leurs lois sont communes avec celles des modalités S4, d’autres expriment simplement leur sensibilité aux règles structurelles. On peut donc aussi les appeler des « modalités structurelles »1. 1 C’est le terme utilisé dans les grammaires catégorielles multimodales, qui sont une variante de ce genre de logique élaborée à des fins de représentation de phénomènes linguistiques, en particulier par M. Moortgat et son école.