Alors on va commencer par un petit tour des vraies et fausses bonnes idées que j'ai eues au cours de cette passionnante exploration.
Systèmes formels
Toutes les logiques existantes reposent sur la notion de système formel : traduit en langage simple, il s'agit d'un système qui repose sur des axiomes et des règles, à partir desquels on construit des théorèmes. Un exemple de règle ultra connu, en logique classique, est la règle du modus ponens : si A est vrai, et si "A implique B" est vrai, alors B est vrai. Le terme "A Est vrai", dans un système formel, signifie : soit A est un axiome (c'est à dire qu'on suppose qu'il est vrai sans avoir besoin de le démontrer), soit A est un théorème (il a été démontré précédemment à partir des axiomes et théorèmes déjà connus).Le système formel le plus connu est celui de la théorie des ensembles. Les systèmes formels constituent des constructions impressionnantes, car ils peuvent s'emboîter les uns dans les autres : il suffit de rajouter des axiomes ou des règles à un système formel pour un créer un autre. Ainsi le système formel de l'arithmétique peut être créé à partir de celui de la théorie des ensembles, mais on peut aussi le créer de toutes pièces à partir de ce que l'on appelle les axiomes de Peano. Les systèmes formel sont un outil formidable, car ils permettent de formaliser (d'où leur nom) les démonstrations et d'en donner des preuves rigoureuses (tant que l'on accepte les axiomes et règles du dit système).
Les systèmes formels sont pourtant frappés d'une malédiction, le théorème de Gödel, qui dit que tout système formel qui contient au moins l'arithmétique élémentaire et qui est non contradictoire est nécessairement incomplet, c'est à dire qu'il existe des énoncés vrais qui ne pourront jamais être démontrés dans le cadre de ce système formel. Le théorème de Gödel a anéanti le rêve des mathématiciens de "trouver tout ce qui est vrai" : ils savent qu'ils pourront s'approcher de la Vérité ultime, en créant de nouvelles règles et de nouveaux axiomes, mais ils savent aussi qu'ils ne pourront jamais "trouver tout ce qui est vrai" (ou faux, d'ailleurs).
Il semble impossible de raisonner mathématiquement sans un système formel, au moins implicite. Mais est-ce bien sûr ? Ne s'agit-il pas plutôt d'une sorte de blocage mental ? Mon exploration de la logique montre que des pistes existent pour "outrepasser le théorème de Gödel" et faire des mathématiques rigoureuses sans système formel ! Mais patience, lisez d'abord la suite...
La logique classique ou booléenne
Dans la logique classique, on considère seulement deux valeurs de vérité : "Vrai", et "Faux". Les règles de cette logique existent depuis l'antiquité, elle est très intuitive et tout le monde la connaît. Pourtant, savez-vous qu'on distingue en fait plusieurs logiques classiques ?La logique d'ordre zéro, encore appellée logique des propositions, raisonne à partir des propositions. Une proposition est un énoncé qui est supposé être vrai ou faux, et qui ne contient pas de variables
Par exemple :
"1+1 = 2" est une proposition,
"f(3) < 2" est aussi une proposition (si on connaît la fonction f),
mais "f(x) < 2" n'est pas une proposition si l'on ne connaît pas explicitement x.
la logique des propositions est complète : elle n'est pas assujettie au théorème de Gödel, parce qu'elle n'est pas assez puissante pour décrire l'arithmétique élémentaire.
La logique d'ordre 1, ou logique des prédicats, permet de raisonner à partir de formules qui peuvent contenir des variables et des quantificateurs, comme "∀x, 1-x2 < 2"
Ainsi "si f(x) > 2 alors g(x) < 2" est une formule qui peut être vraie ou fausse même si l'on ne connaît pas x. Par exemple si f(x)=x et g(x) = 4-x alors la formule précédente est toujours vraie. La logique des prédicats permet de décrire tout ce que nous savons sur l'arithmétique ; elle est donc (hélas) incomplète.
La logique d'ordre 2, elle, permet de raisonner directement sur les fonctions (de les mettre dans des quantificateurs) Par exemple le célèbre théorème du point fixe : "pour toute fonction f continue d'un intervalle I dans ce même intervalle I et telle que f(I) = I, alors il existe un x de I tel que f(x) = x" est un théorème qui fait appel à la logique d'ordre 2.
Ce théorème est intéressant car c'est un théorème d'existence : il démontre l'existence d'un objet mathématique (ici le nombre x) sans dire lequel il s'agit exactement. Les "constructivistes" ont contesté les théorèmes d'existence, arguant qu'ils n'étaient pas intuitifs, plus précisément "constructifs". Nous y reviendrons, car les arguments constructivistes sont pour moi très forts. Avec les théorème d'existence, on peut démontrer des énoncés qui nous paraissent bizarres, comme le théorème qui veut qu'il existe un bon ordre sur l'ensemble R des nombres réels (un bon ordre est une relation d'ordre sur un ensemble telle que toute partie de cet ensemble possède un plus petit élément). Or la relation d'ordre naturelle sur R ('≤') n'est pas un bon ordre car par exemple l'intervalle ouvert ]0, 1] n'a pas de plus petit élément pour cette relation d'ordre. Jusqu'à présent, on n'a jamais pu trouver un bon ordre sur R, on démontre pourtant qu'il en existe un ! Bizarre....
Encore plus bizarre, le théorème de Banach-Tarski, qui démontre que, dans l'espace à trois dimensions, on peut découper une sphère en un ensemble fini de parties, puis réarranger ces parties pour former une sphère d'un volume double ! Vous comprendrez ma méfiance vis à vis des démonstrations d'existence non constructives...
Notons aussi que la logique classique ne permet pas de traiter les propositions autoréférentielles, celles qui font référence (même indirectement) à elles-même, comme la célèbre proposition du menteur : "cette phrase est fausse", ou bien le couple de propositions suivantes :
(a) : la proposition (b) est vraie
(b) : la proposition (a) est fausse
Pour la logique classique, ces propositions ne sont ni vraies ni fausses : elles ne sont tout simplement pas des propositions.
Les logiques modales
Les logiques modales (je met le terme au pluriel, car à la différence de la logique classique, il en existe plusieurs formulations différentes, sans qu'aucune ne puisse être considéré comme plus intuitive que les autres) sont une extension de la logique classique : elles ajoutent aux propositions et formules logiques la notion de modalité, qui permet de dire dans quel contexte la formule est vraie. Les deux plus connues sont la logique épistémique ou logique de la connaissance, et la logique aléthique dite aussi "logique du nécessaire et du possible".Voici une formule de logique de la connaissance : sav(André): P => P
elle signifie que si l'agent "André"' sait que P est vraie, alors P est vraie. Cette logique permet de raisonner un peu comme un groupe d'humains qui échangeraient leurs connaissances, en considérant ce qu'ils savent, ce qu'ils savent qu'ils savent (ou que les autres savent), etc.
La logique modale permet de résoudre d'intéressants casse-tête, dont celui-ci :
le sage et les chapeaux
Trois sages sont dans une pièce, chacun portant sur la tête un chapeau noir ou blanc. Ils savent qu’un chapeau au moins est blanc. Ils peuvent voir les chapeaux des autres, mais non celui qui est sur leur tête.
Au bout de quelques secondes, le premier sage dit : ”Je ne connais pas la couleur de mon
chapeau”. Puis le second sage dit : ”Je ne connais pas non plus la couleur de mon chapeau”. Alors le troisième sage peut conclure : ”Mon chapeau est blanc”.
Comment a-t-il fait ?
Je ne résiste pas au plaisir de vous donner un autre casse-tête, dont la résolution fait appel à la fois à la logique modale et à l'arithmétique :
Pierre et Paul
Pierre et Paul sont deux mathématiciens, qui habitent dans le même immeuble. La concierge de l'immeuble, également matheuse, aime bien leur poser des "colles". Un jour, elle les croise dans l'escalier, et leur dit :
"Bonjour Pierre et Paul, j'ai choisi deux nombres entre un et cent, à vous de deviner lesquels. Voici leur produit", dit elle en donnant un papier à Pierre, "et voici leur somme", dit-elle en donnant un autre papier à Paul.
"Je ne sais pas quels sont ces nombres", dit Pierre après avoir regardé son papier.
"Je ne le sais pas non plus", dit Paul à son tour.
"Ah, maintenant je connais les deux nombres !" dit Pierre
"Ah ? Eh bien moi aussi finalement je les connais !", s'exclame Paul.
Et vous, pouvez-vous trouver ces deux nombres ?Aussi incroyable que cela paraisse, il y a bien une unique solution !
La logique Modale est certes intéressante, mais son automatisation est très compliquée et assez inefficace : tous les programmes d'ordinateur que l'on a pu créer pour démontrer automatiquement des théorèmes de cette logique se heurtent à une explosion combinatoire et sont très, très lents. (Signalons que pour la logique classique d'ordre 0 et 1, on a par contre des algorithme efficaces). Enfin la logique modale, comme tout système formel, n'échappe pas au piège de Gödel...
Logiques temporelles
Aristote disait déjà qu'une proposition qui peut être vraie aujourd'hui, comme "il fait beau", ne le sera pas forcément demain, et vice-versa. La logique temporelle peut être considérée comme une sorte de logique modale dont les modalités sont des valeurs temporelles. Les propositions sont donc vraies ou fausses, mais seulement sur un certain intervalle de temps.Il existe plusieurs logiques temporelles, avec des noms barbares : logique non monotonique, logique synchronique, logique diachronique...
Je n'ai pas trop étudié ces logiques, qui ne me semblent pas rajouter grand chose..
Logique trivalente
Dans la logique trivalente, inventée par le polonais Jan Lukasiewicz, on permet aux propositions d'avoir trois valeur de vérité, et non plus seulement deux : "Vrai", "Faux" et "Indéterminé" (ou "probable", cela dépend des interprétations). On peut ainsi donner une valeur logique à un énoncé du genre "Pierre viendra peut-être", ou encore mieux, "le chat de Schrödinger est vivant" (pour ceux qui connaissant la mécanique quantique).On construit alors les tables de vérité des fonctions "et", "ou", et par extension "implique", "équivalence", etc. (en général on s'arrange toujours pour que "P => Q" soit équivalent à "(non P) ou Q". L'intérêt de cette logique est qu'elle refuse le principe du tiers exclu, qui dit que "P ou non P" est toujours vrai. En logique trivalente, cette proposition peut aussi être indéterminée.
Sincèrement, j'ai du mal à considérer les logiques trivalentes comme autre chose que des artifices de calcul. Cela ne me semble pas rajouter grand chose aux logiques booléennes (bi-valentes). Par contre cela peut faciliter l'analyse des langues naturelles.
Ainsi par exemple dans l'étude des relations entre les humains on apprend que l'amour et la haine sont opposées, ce qu'on peut formaliser par "hait(x,y) <=> non aime(x,y)"
Mais en réalité on peut avoir à la fois de l'amour et de la haine pour une personne. La formalisation ci-dessus n'est donc pas toujours vraie. C'est ici que les logiques multivaluées peuvent être utile. Sauf que en réalité ce genre de situation se traite bien mieux avec des logiques dynamiques (dont nous parlerons plus loin).
Logique tétravalente
Dans la logique tétravalente, on considère quatre valeurs de vérité. Le problème consiste à donner un sens à ces quatre valeurs de vérité. Le plus courant est de les nommer "vrai", "faux", "inconnaissable" (indéterminable), et "connaissable" (déterminable). Mais les deux dernières peuvent aussi être "ni vrai ni faux" (indéterminé, inconnu, etc.), et "contradictoire".En construisant les tables de vérité de "et", "ou", "implique", etc., on s'aperçoit qu'on peut créer un grand nombre de logiques tétravalentes. Je ne les détaillerai pas ici.
Les logiques tétravalentes font partie de la classe encore plus grande des logiques multivaluées, dans lesquelles les fonctions logiques ont plus de deux valeurs. Mon intérêt pour les logiques tétravalentes en particulier vient de ce qu'elles apparaissent dans les "textes ummites", qui sont (soit-disant) d'origine extra-terrestre. Mais à mon avis la logique tétravalente dont il est question dans ces textes (quelle que soit leur origine) n'a rien à voir avec une logique multivaluée à quatre valeurs telles que je l'ai décrite plus haut. Elle part d'un conception différente de l'univers, tout simplement. Nous en reparlerons.
L'inconvénient majeur, pour moi, de toutes ces logiques multivaluées, c'est que tant que certaines de leurs valeurs logiques seront considérées comme identiques au "vrai" et au "faux" de la logique classique, les logiques multivaluées ne permettent rien de plus que ces logiques classiques, ou si l'on préfère elles n'apportent aucun nouveau théorème dont les variables ont les seules valeurs "vrai" et "faux". Savoir que "P est indéterminé implique que Q est indéterminé" ne nous dit rien de plus sur le cas où P est vraie ou fausse.
En outre, étant des systèmes formels contenant l'arithmétique, elles sont toujours incomplètes...
Les logiques floues
L'idée de base des logiques floues (fuzzy logic, en anglais), c'est que dans nombre de situations de la vie courante, il n'est pas possible de donner une valeur "vraie" ou "fausse" à une phrase, par exemple "il y a dix blonds dans cette classe" : tout dépend de ce qu'on entend par "blond".On va donc permettre aux propositions d'avoir une valeur continue, comprise dans l'intervalle [0, 1], avec le zéro signifiant "faux" et 1 signifiant "vrai". Quand au 1/2, il signifiera donc "à moitié vrai", ou "à moitié faux", ce qui revient au même (hmm... est-ce bien sûr ?).
La logique floue a nombre d'applications, mais la principales est la commande de processus. Par exemple dans une batterie d'ascenseurs, il peut y avoir un calcul renvoyant l'information "il faudrait monter", avec une certaine valeur de vérité, disons 0,3, un autre renvoyant l'info "il faut ralentir", avec une valeur de vérité de 0,7, et un autre signalant "il faut revenir au rez-de-chaussée", avec la valeur 0,1. Comment alors calculer la puissance à donner aux moteurs et aux freins ? Ce genre d'application est très important de nos jours. Par exemple les métros automatiques sont dirigés par des automates à logique floue...
Là encore, il existe plusieurs logiques floues, qui se distinguent par la manière dont on va calculer les fonctions "ou", "et", et "implique". En général comme pour les autres logiques, on s'arrange toujours pour que "P => Q" soit définie par "(non P) ou Q", et on s'arrange aussi pour retrouver la logique classique lorsqu'on ne considère que les valeurs extrèmes 0 et 1. Considérons par exemple la logique floue dite de Zadeh :
non(a) = 1 - a
ou(a, b) = max (a, b)
et(a, b) = min(a,b)
Mais plein d'autres choix sont possibles. En fait il faut s'interroger sur les propriétés qu'on veut attendre du "ET" et du "OU". Mathématiquement, on considère que toute t-norme peut servir à représenter le ET, et toute t-conorme peut servir à représenter le OU. Qu'est ce que ça veut dire ?
Une t-norme est une application T de deux variables satisfaisant les contraintes suivantes :
1 est l'élément neutre : T(1,x) = T(x,1) = x
Commutative : T(x,y) = T(y,x)
Associative : T(x, T(y,z)) = T(T(x,y), z)
Monotone : si x ≤ y et y ≤ z alors T(x,y) ≤ T(y,z).
Une t-conorme est une application S de deux variables satisfaisant les contraintes suivantes :
0 est l'élément neutre : S(0,x) = S(x,0) = x
Commutative : S(x,y) = S(y,x)
Associative : S(x, S(y,z)) = S(S(x,y), z)
Monotone : si x ≤ y et y ≤ z alors S(x,y) ≤ S(y,z).
Et cela donne lieu à une foultitude de logiques floues :
ET(x,y) OU(x,y)
En logique floue, le principe du tiers exclu est contredit : "A ou (non A)" n'a pas toujours pour valeur logique 1, et de plus "A et (non A)" n'a pas toujours pour valeur logique zéro ! Mais après tout, pourquoi pas, comme je l'ai dit plus haut, on peut aimer et haïr en même temps !
Personnellement la logique de Zadeh, qui semble la plus simple, ne me plaît pas parce qu'elle introduit une non-dérivabilité des fonctions logiques (min et max ne sont pas dérivables) : Quand on trace les graphes de ces fonctions, il y a des "points anguleux", qui ne me semblent pas compatibles avec un raisonnement logique que je souhaiterais "continu".
La logique floue dite probabiliste me plaît beaucoup plus, parce qu'elle est continue (Les logiques de Dombi et Hamacher sont également continues, mais quelle complexité !) Mais alors une autre chose me gène : si P est une proposition dont la valeur logique est p, alors "P et P" a pour valeur logique p2, et "P ou P" a pour valeur logique 2p - p2, ce qui fait que "P et P", "P ou P" et P n'ont pas les mêmes valeurs logiques !
Cela me semble bizarre... Est-il possible de trouver une t-norme sans "points anguleux" qui respecte T(x,x) = x ? (idempotence). Il me semble que non, hélas (mais je n'ai pas pu le démontrer). Il semble toutefois que la non-idempotence puisse être un avantage dans certains cas :
Logique linéaire
Supposons que A signifie "j'ai un euro", B signifie 'je peux acheter un coca" et C signifie "je peux acheter un ticket de bus". En logique classique, nous avons A => B ET A => C, d'où nous pouvons conclure "A => (B et C)". Mais avec un euro, nous ne pouvons pas acheter un coca ET un ticket de bus ! Il nous faut deux euros pour cela, ce qui peut s'exprimer par "A et A => B et C". On voit que la valeur logique (et financière !) de "A et A" est différente de celle de A seul. Cette idée est utilisée dans ce que l'on appelle la logique linéaire.Pourquoi linéaire ? Parce que en logique classique on peut utiliser la proposition A aussi souvent qu'on veut dans une preuve (dans notre exemple A est utilisé pour prouver B et C). La preuve est donc un arbre. En logique linéaire, on n'a le droit de n'utiliser A qu'une seule fois dans la preuve et donc celle-ci devient linéaire. On peut aussi considérer la valeur logique de A comme un dégré de certitude que nous avons a propos de sa vérité ; si nous avons un certain degré de croyance d dans le fait que tous les oiseaux volent, nous avons un certain degré de croyance (probablement également d) dans le fait qu'un oiseau "pris au hasard" vole, mais surement la même certitude qu'un million d'oiseaux dans un même espace volent simultanément.
En fait en logique linéaire on considère deux opérateurs "ET" différents ! : Le "et en plus" et le "et ", avec "A et en plus A ≠ A" mais "A et A = A"
Mais revenons à nos moutons. Lorsqu'on veut utiliser la logique floue, on doit faire deux choses :
- Trouver comment représenter la valeur logique de la relation d'appartenance à ensemble : c'est ce que l'on appelle le problème de la "fuzzyfication".
- Choisir une logique, et plus particulièrement un moyen de calcul pour l'implication ou l'inférence floue.
Si pierre mesure 1,62m, alors "pierre est petit" à une valeur logique de 0,75, "pierre est moyen" a une valeur logique de 0,25, et "pierre est grand" à une valeur logique de 0.
Naturellement on peut choisir d'autres fonctions, par exemple des fonctions sans points anguleux comme 1/(1+(x-1,7)2) pour "pierre est moyen" (par exemple).
Autre exemple (mais ce n'est pas un hasard), le domaine des nombres réels. On cherche à donner une valeur logique floue à la proposition "x = 0". Il est évident que la fonction :
f(x) = (x==0) ? 1 : 0
répond à la question (j'ai utilisé une notation informatique commune aux langages C, C++, java, javascript, php, perl... si vous ne la connaissez pas, cela signifie "si x vaut 0 alors 1, sinon 0").
Logique des propositions valuées
Mais on peut faire mieux, à condition de changer un peu la sémantique des valeurs logiques : si on convient que "1" signifie vrai et que "tout ce qui est différent de 1" signifie faux, alors une fonction comme :f(x) = 1/(1+x2)
convient aussi ! (en effet cet expression ne vaut 1 que si x=0)
J'ai eu alors l'idée folle que l'on pouvait réécrire toute l'arithmétique, et en fait toutes les mathématiques, à l'aide de la logique floue. L'idée, c'est qu'à toute proposition mathématique on associerait une valeur logique floue, et en général différente de 1 ou de 0. Cette valeur logique dépendrait toujours d'une ou plusieurs variables. Seuls les cas ou cette valeur logique vaudraient 1 seraient considérés comme des démonstrations de "vérité".
On va en fait créer un nouveau système formel dans lequel toutes les formules seront de la forme :
P :: v
où P est une proposition syntaxiquement correcte de la théorie des ensembles, et v est une valeur logique. L'expression ci-dessus signifie "P est vraie avec la valeur logique v" (ou le degré de vérité v).
L'extraordinaire avantage de cette approche, c'est qu'elle permet enfin de définir l'égalité. En effet, dans aucun système formel, on ne définit l'égalité ! On dit seulement que "x = x" est vrai pour tout x. Mais l'égalité entre deux objets a priori potentiellement différents n'est pas définie ! Avec mon système, il n'est pas impossible que l'on arrive à trouver une formule du genre :
x = y :: 1/(1+(x-y)2)
qui définit précisément l'égalité de deux nombres réels. Voyez donc l'inversion de sens : au lieu de calculer la valeur logique de l'expression "x = y", je définis l'égalité par l'expression ci dessus. (Et naturellement, elle ne prend la valeur "1" que si x = y intuitivement)
D'autres expressions que 1/(1+(x-y)2) conviennent naturellement pour cela ; il conviendra donc de trouver une formulation "naturelle" et simple de la théorie des nombres, reformulée à l'aide de ces formules du type P :: v, ce que j'appelle la logique des propositions valuées.
Je me suis alors demandé s'il serait possible de différencier "graphiquement" des propositions comme "x < 0" et "x ≤ 0". La réponse tient peut-etre à la forme des graphes. Il existe en effet trois manières dont une courbe peut atteindre une valeur extrémale, et trois façons pour une fonction de croiser une certaine valeur :
Des trois figures du haut, laquelle pourrait représenter le mieux l'expression "x = y" ? A priori cela ne peut être celle de gauche (tangente) car si l'on se place infiniment prés de y (en x + dx), la valeur de vérité (x + dx2) est quasi indiscernable de "vrai"... Ce genre de considération me fait demander si, pour modéliser au mieux les valeurs logiques des propositions concernant les nombres réels, il ne faut pas en réalité considérer les nombres surréels au sens de Conway, qui sont sans doute bien plus "simples"... Mais je m'égare (peut-être).
Et comment définir la valeur logique de "x≠y" ? La valeur devrait être à 1 partout, sauf en y, et si nous voulons conserver la continuité, (voire même, rêve, ne considérer que des fonctions de classe C∞), que faire ?
Mais ne perdons pas espoir, car d'autres extensions sont possibles a priori : par exemple en permettant aux valeurs logiques d'être des nombres complexes compris dans le disque unité, et pas seulement des réels dans [0,1], on pourrait définir pour chaque expression une "valeur de vérité" par la partie réelle de la valeur logique, et une "valeur de fausseté" par la partie imaginaire.
Ainsi l'expression "x < y" aurait une valuation simple :
x < y :: sqrt(y - x)
Qui est réelle si x < y et imaginaire pure si y < x (sqrt est la fonction racine carrée).
Quelle est donc la bonne formulation du calcul mathématique ? Faut-il, ou pas, utiliser les nombres complexes ? Nous allons y revenir. Mais auparavant il nous faut parler un peu de la logique floue complexe.
Logique floue complexe
C'est un domaine assez peu connu et exploré, assez nouveau il faut le dire. L'idée (due à G Spencer-Brown) consiste donc à donner une valeur logique complexe aux propositions logiques, ce qui permet de considérer des propositions qui seraient contradictoires en logique classique. Or l'être humain raisonne bien comme cela ! Nous considérons parfois certaines situations comme étant à la fois vraies et fausses (à un certain degré), ou alors nous sommes incertains de la vérité de certains faits, car nous avons des arguments plausibles qui vont dans les deux sens.La découverte de la logique floue complexe a en fait commencé "par la bande", par celle des logiques floues en réseau : dans ces logiques, les valeurs de vérité consituent un réseau d'ensembles disjoints ou inclus les uns dans les autres. En général on choisit comme ensemble des sous-intervalles de l'intervalle [0,1] Il se trouve que la logique floue en réseau (interval or lattice-valued logic) est reliée à la logique tétravalente par le théorème suivant :
Pour toutes les logiques floues pour lesquelles "P ou P" et "P et P" ont la même valeur logique que P, et quel que soient les intervalles qu'on choisit pour leurs variables, deux formules P et Q sont équivalentes si et seulement si elles le sont aussi quand on choisit les quatre intervalles [0,0], [0.5, 0.5], [1,1] et [0,1]. En d'autres termes, deux propositions sont équivalentes dans la logique floue en réseau si et seulement si elles le sont aussi en logique tétravalente, avec [0,0] = "faux", [0.5, 0.5] = "contradictoire", [1,1] = "vrai" et [0,1] = "inconnu".
L'idée de donner des valeurs logiques complexes aux propositions logique suit naturellement celle de leur donner des valeurs dans un intervalle. Cette idée est naturelle en méanique quantique, où l'on considère des fonctions d'onde complexes, et des objets qui sont à la fois ondes et particules.
Dans le formalisme de Spencer Brown, inspiré par la manière dont on utilise les complexes en electricité (quand on analyse un réseau éléectrique par les complexes, la partie imaginaire correspond à la dérivée du signal), on utilise donc des valeurs complexes, mais encore liées à la logique tétravalente : en effet Spencer Brown pose que les parties réelles et imaginaires de la valeur logique sont soit 0, soit 1 (ce n'est pas une logique floue). La partie réelle signifie "vrai" (pour 1) et "faux" (pour 0), et la partie imaginaire signifie "ca ne change pas" (0) ou "ça a changé" (1). Par conséquent il y a quatre valeurs logiques :
(0,0) = 0 : faux
(1,0) = 1 : vrai
(0,1) = i : rendu faux
(1,1) = 1+i : rendu vrai.
Cette sémantique permet de retrouver facilement les valeurs logiques du ET et du OU pour les nouvelles valeurs : on a en particulier (0,1) OU (1,1) = (1,0) et (0,1) ET (1,1) = (0,0). On remarquera cette dernière expression, qui signifie qu'un énoncé ne peut pas à la fois être devenu vrai et faux.
L'étape suivante consiste donc à donner aux valeurs logiques non plus quatre valeurs complexes, mais une infinité. Une première idée consiste à chercher à représenter les paradoxes, (ces situations ou l'on a à la fois A et non A) en logique floue. Par exemple en logique floue probabiliste, on a (A::a et B::b) :: a.b et (A::a ou B::b) :: a+b - a.b
(j'ai utilisé la formulation décrite ci-dessus où A::a signifie "la proposition A possède la valeur logique a"). Si nous considérons l'expression "A et non A", sa valeur logique est donc a(1-a).
Essayons alors de voir ce qui se passe si l'on veut que "A et non A" soit vraie (et ce serait donc un vrai paradoxe) : on doit donc résoudre l'équation a(1-a) = 1, dont les solutions sont les deux nombres complexes a = (1 ± i√3 ) / 2, qui sont d'ailleurs aussi solution de "A ou non A est faux".
En permettant des valeurs logiques complexes, cependant, on perd une chose importante : il n'est plus possible de trouver un ordre total entre elles, mais seulement un ordre partiel. Notons que l'on a également cela en logique tétravalente, puisque si l'on représente graphiquement les quatre valeurs de cette logique, on obtient un losange...
Bien, alors quelles logiques complexes peut-on utiliser ?
En fait on peut démontrer que (A::a et B::b) :: a.b est la seule fonction analytique (entière) possible qui étende sur C la logique floue sur [0..1]. Et de plus, les seuls domaines de validité des variables logiques clos dans cette logique sont [0,1], R et C. Donc si l'on a besoin d'un nombre complexe non réel, alors on aura besoin de tous.
Mais la logique qu'on obtient a quelque chose de déroutant, car on ne voit pas la signification intuitive de ces valeurs complexes. OK, 0 signifie "faux", 1 signifie "vrai", et j = (1 + i√3 ) / 2 signifie "vrai et faux (contradictoire)", ou "ni vrai ni faux". Mais quelle est la signification de -1, ou de i, par exemple ? Pourquoi a-t-on deux valeurs (j et j2), solutions de "(A et non A) est Vrai" ?
j2 signifie "j et j". Quant à "j et j et j" ou j3, c'est -1, que l'on pourrait interpéter comme "triplement contradictoire". Or "i et i" vaut aussi -1, mais lorsqu'on connecte par ET deux propositions "triplement contradictoires", on obtient la proposition j6 = 1... donc vraie. Tout cela me parait très étrange.
Logique floue ternaire
D'où l'idée que j'ai eu de définir une nouvelle logique complexe en étendant la logique trivalente à l'intervalle [-1, 1], (j'ai appellé ça la "logique floue ternaire") puis en l'étendant dans un second temps à nouveau aux complexes.Quand on veut créer une logique dont les valuations sont dans l'intervalle [-1, 1], il y a deux options naturelles :
- -1 = faux, 1 = vrai, 0 = indéterminé
- 1 ou -1 = vrai, 0 = faux (et seule la valeur absolue à un sens a priori)
La seconde option semble elle aussi n'apporter pas grand chose par rapport à la logique floue classique, ceci dit si on pouvait démontrer par exemple que la valeur logique de "x est entier" est cos(pi.x), ça aurait de la gueule... Comme on a
et et que "x est entier" signifie en fait "x=0 ou x = 1 ou x =-1 ou x=2 ou x=-2 ou....", on serait tenté de croire que la fonction OU se traduit par la multiplication de termes de la forme 1 - 4 x2 / (2(n-1)2 qui seraient donc la valeur logique de "x = n ou x = -n", sauf que cela ne marche pas pour n = 0 ! De plus traduire le OU par la multiplication n'est pas du tout naturel, puisque en logique floue probabiliste, par exemple, c'est le ET que l'on traduit par la multiplication !
D'où le choix d'une troisième option :
- 0 = vrai, 1 ou -1 = faux (et seule la valeur absolue à un sens a priori).
Quant au NON, si on a P::p, sa valeur logique serait 1-|p| ou bien 1-p2, transformant 0 en 1, 1 en 0 et aussi -1 en 0
Nous pouvons alors chercher la valeur logique du ET :
puisque P ET Q = ¬(¬ P OU ¬ Q), et si P::p et Q::q,
"P ET Q":: |p| + |q| - |pq|
Quelque part, j'ai l'intuition que la proposition "x est entier" devrait alors avoir pour valeur logique sin(pi.x), ce que dans ma notion j'écrirai "x est entier"::sin(pi.x)
Pour que ce résultat merveilleux de simplicité soit vrai, et d'après la décomposition du sinus en produit infini, il faudrait que OU soit le produit, que "x = n ou x=-n"::1-(x/n)2 si n>0, et que "x=0"::x
par conséquent puisque 1-(x/n)2 = (1-x/n)(1+x/n), on est tenté de définir ainsi l'égalité de deux nombres :
- "x=n ET n>0"::1-x/n (ou bien est-ce "x=n ET n≠0" ?)
- "x=0"::x
La fonction f doit etre symétrique : f(x,y)=f(y,x).
remarquons que 1-x/n = (n-x)/n