# Logique ternaire

La logique ternaire, ou logique 3 états (parfois abrégée 3VL), également appelé logique trinaire , trivalente , ou triléenne ) (en anglais three-valued logic, trinary logic, trivalent, ternary, or trilean), est une branche du calcul des propositions qui étend l'algèbre de Boole, en considérant, en plus des états VRAI (en anglais TRUE→ T), et FAUX (en anglais FALSE→ F), l'état INCONNU (en anglais UNKNOW→ U). Cela la différencie des logiques bivalentes plus connues (telles que la logique classique ou la logique booléenne ) qui ne fournissent que vrai et faux.
Emil Leon Post est reconnu pour avoir introduit pour la première fois des degrés de vérité logique supplémentaires dans sa théorie des propositions élémentaires de 1921. La forme conceptuelle et les idées de base de la logique à trois valeurs ont été initialement publiées par Jan Łukasiewicz et Clarence Irving Lewis . Celles-ci ont ensuite été reformulées par Grigore Moisil sous une forme algébrique axiomatique, et également étendues à la logique à n valeurs en 1945.

## Pré-découverte

Vers 1910, Charles Sanders Peirce a défini un système logique à valeurs multiples. Il ne l'a jamais publié. En fait, il n'a même pas numéroté les trois pages de notes où il définissait ses opérateurs à trois valeurs. Peirce a fermement rejeté l'idée que toutes les propositions doivent être vraies ou fausses, les propositions limites, écrit-il, sont « à la limite entre P et non P ». Cependant, aussi confiant qu'il était que « la logique triadique est universellement vraie », il a également noté que « tout cela est très proche du non-sens ». Ce n'est qu'en 1966, lorsque Max Fisch et Atwell Turquette commencèrent à publier ce qu'ils avaient redécouvert dans ses manuscrits inédits, que les idées triadiques de Peirce devinrent largement connues.

## Les différentes Logiques
### Tables de vérité Kleene et Priest

Ci-dessous, un ensemble de tables de vérité montrant les opérations logiques de la « logique forte de l'indétermination » de Stephen Cole Kleene et de la « logique du paradoxe » de Graham Priest.
(F, faux; U, inconnu; T, vrai) :
NON A NOT(A) :
| A | ¬A |
| F | T |
| U | U |
| T | F |
A ET B AND(A, B) :
| A ∧ B | A ∧ B | B | B | B |
| A ∧ B | A ∧ B | F | U | T |
| A | F | F | F | F |
| A | U | F | U | U |
| A | T | F | U | T |
A OU B OR(A, B) :
| A ∨ B | A ∨ B | B | B | B |
| A ∨ B | A ∨ B | F | U | T |
| A | F | F | U | T |
| A | U | U | U | T |
| A | T | T | T | T |
OU exclusif(A, B) XOR(A, B) :
| A ⊕ B | A ⊕ B | B | B | B |
| A ⊕ B | A ⊕ B | F | U | T |
| A | F | F | U | T |
| A | U | U | U | U |
| A | T | T | U | F |
D'une certaine manière, ces propriétés correspondent à l'intuition : par exemple, si on ignore si A est vrai ou faux, son inverse est tout aussi incertain.
Dans ces tables de vérité, l' état inconnu peut être considéré comme ni vrai ni faux dans la logique de Kleene, ou comme à la fois vrai et faux dans la logique de Priest. La différence réside dans la définition des tautologies. Là où la seule valeur de vérité désignée par la logique de Kleene est vrai, les valeurs de vérité désignées par la logique de Priest sont à la fois vrai et inconnu. Dans la logique de Kleene, il n'est pas possible de savoir si un état inconnu particulier représente secrètement vrai ou faux à tout moment. Cependant, certaines opérations logiques peuvent donner un résultat sans ambiguïté, même si elles impliquent un opérande inconnu . Par exemple, parce que vrai OU vrai est égal à vrai et que vrai OU faux est également égal à vrai , alors vrai OU inconnu est également égal à vrai. Dans cet exemple, étant donné que l’un ou l’autre état bivalent pourrait être sous-jacent à l’état inconnu et que l’un ou l’autre état donne également le même résultat, les résultats sont vrais dans les trois cas.
Si des valeurs numériques, par exemple des valeurs ternaires équilibrées (en), sont affectées à faux , inconnu et vrai de telle sorte que faux soit inférieur à inconnu et inconnu inférieur à vrai (F < U < T) , alors A ET B ET C... = MIN(A, B, C .. .) et A OU B OU C ... = MAX(A, B, C...).
en notation ternaire équilibré (−1, false; 0, unknown; +1, true) :
NEG(A) :
| A | ¬A |
| −1 | +1 |
| 0 | 0 |
| +1 | −1 |
MIN(A, B) :
| A ∧ B | A ∧ B | B | B | B |
| A ∧ B | A ∧ B | −1 | 0 | +1 |
| A | −1 | −1 | −1 | −1 |
| A | 0 | −1 | 0 | 0 |
| A | +1 | −1 | 0 | +1 |
MAX(A, B) :
| A ∨ B | A ∨ B | B | B | B |
| A ∨ B | A ∨ B | −1 | 0 | +1 |
| A | −1 | −1 | 0 | +1 |
| A | 0 | 0 | 0 | +1 |
| A | +1 | +1 | +1 | +1 |
MIN(MAX(A, B), NEG(MIN(A, B))) :
| A ⊕ B | A ⊕ B | B | B | B |
| A ⊕ B | A ⊕ B | −1 | 0 | +1 |
| A | −1 | −1 | 0 | +1 |
| A | 0 | 0 | 0 | 0 |
| A | +1 | +1 | 0 | −1 |
L'implication matérielle pour la logique de Kleene peut être définie comme :
$A\rightarrow B\ {\overset {\underset {\mathrm {def} }}{=}}\ {\mbox{OR}}(\ {\mbox{NOT}}(A),\ B)$, et la table de vérité de « A implique B » est:
IMP$_K$(A, B), OR(¬A, B) :
| A $\Rightarrow$ B | A $\Rightarrow$ B | B | B | B |
| A $\Rightarrow$ B | A $\Rightarrow$ B | F | U | T |
| A | F | T | T | T |
| A | U | U | U | T |
| A | T | F | U | T |
qui diffère de celle de la logique de Łukasiewicz (décrite dans ce sous-chapitre).
La logique de Kleene n'a pas de tautologies (formules valides) car chaque fois que tous les composants atomiques d'une formule bien formée se voient attribuer la valeur Inconnu, la formule elle-même doit également avoir la valeur Inconnu. (Et la seule valeur de vérité désignée pour la logique de Kleene est Vrai.) Cependant, le manque de formules valides ne signifie pas qu’elle manque d’arguments et/ou de règles d’inférence valides. Un argument est sémantiquement valide dans la logique de Kleene si, chaque fois (pour n'importe quelle interprétation/modèle) toutes ses prémisses sont vraies, la conclusion doit également être vraie. (La Logique du Paradoxe (LP) a les mêmes tables de vérité que la logique de Kleene, mais elle a deux valeurs de vérité désignées au lieu d'une ; ce sont : Vrai et Les deux (l'analogue d'Inconnu), de sorte que LP a des tautologies mais elle a moins de règles d'inférence valides).

### Logique de Łukasiewicz

La logique de Łukasiewicz (noté Ł3) a les mêmes tables pour ET, OU et NON que la logique de Kleene donnée ci-dessus, mais diffère dans sa définition de l'implication en ce sens que « inconnu implique inconnu » est vrai . Cette section fait suite à la présentation du chapitre de Malinowski du Handbook of the History of Logic , vol 8.
La table de vérité d'implication matèrielle pour la logique de Łukasiewicz est :
IMP$_Ł$(A, B) :
| A → B | A → B | B | B | B |
| A → B | A → B | F | U | T |
| A | F | T | T | T |
| A | U | U | T | T |
| A | T | F | U | T |
IMP$_Ł$(A, B), MIN(1, 1−A+B) :
| A → B | A → B | B | B | B |
| A → B | A → B | −1 | 0 | +1 |
| A | −1 | +1 | +1 | +1 |
| A | 0 | 0 | +1 | +1 |
| A | +1 | −1 | 0 | +1 |
En utilisant l'implication et la négation de Łukasiewicz, les autres portes logiques habituelles peuvent être dérivées comme suit :
* ${\begin{matrix}A\lor B=(A\rightarrow B)\rightarrow B\end{matrix}}$
* ${\begin{matrix}A\land B=\lnot (\lnot A\lor \lnot B)\end{matrix}}$
* ${\begin{matrix}A\leftrightarrow B=(A\rightarrow B)\land (B\rightarrow A)\end{matrix}}$ ($\leftrightarrow$ = équivalence logique )
Il est également possible de dériver quelques autres opérateurs unaires utiles (dérivés pour la première fois par Tarski en 1921):
* M A = ¬A → A
* L A = ¬M¬A
* I A = MA ∧ ¬LA
Qui ont les tables de vérités suivantes:
| A | MA |
| F | F |
| U | T |
| T | T |
| A | LA |
| F | F |
| U | F |
| T | T |
| A | IA |
| F | F |
| U | T |
| T | F |
Ces opérateurs signifient:
* M se lit comme "il n'est pas faux que..." ou dans la tentative (infructueuse) de Tarski-Łukasiewicz d'axiomatiser la logique modale en utilisant une logique à trois valeurs "il est possible que...",
* L se lit "c'est vrai que... ou "il faut que...",
* I se lit "on ne sait pas que..." ou "il est contingent que...".
Dans le Ł3 de Łukasiewicz, la valeur désignée est Vrai, ce qui signifie que seule une proposition ayant cette valeur partout est considérée comme une tautologie . Par exemple, $A\rightarrow A$ et $A\leftrightarrow A$ sont des tautologies en Ł3 et aussi en logique classique. Toutes les tautologies de la logique classique ne s'applique pas "tel quel" en Ł3. Par exemple, la loi du tiers exclu , $A\lor \lnot A$, et la loi de non-contradiction , $\lnot (A\land \lnot A)$ ne sont pas des tautologies dans Ł3. Cependant, en utilisant l'opérateur I défini ci-dessus, il est possible d'énoncer des tautologies qui sont leurs analogues :
* A ∨ (I A) ∨ ¬A (équivalent à la loi du tiers exclu)
* ¬(A ∧ ¬(I A) ∧ ¬A) (équivalent à la loi de non-contradiction).

### Logique RM3

La table de vérité pour l’implication matérielle de R-Mingle 3 (RM3) est:
IMP$_{RM3}$(A, B) :
| A → B | A → B | B | B | B |
| A → B | A → B | F | U | T |
| A | F | T | T | T |
| A | U | F | U | T |
| A | T | F | F | T |
Une caractéristique déterminante du RM3 est l’absence de l’axiome d’affaiblissement :
* (A → (B → A))
ce qui, par adjoint, équivaut à la projection du produit (XOR):
* (A ⊗ B) → A
RM3 est une catégorie fermée monoïdale symétrique non cartésienne; le produit, qui est adjoint à gauche à l'implication, manque de projections valides et a U comme identité monoïde. Cette logique équivaut à une logique paraconsistante « idéale » qui obéit également à la contrapositive.

### Logique HT

La logique d'ici et là ( HT , également appelée logique de Smetanov SmT ou logique de Gödel G3), introduite par Heyting en 1930 comme modèle pour l'étude de la logique intuitionniste , est une logique intermédiaire à trois valeurs où la troisième valeur de vérité NF (pas faux) a la sémantique d'une proposition dont on peut prouver intuitivement qu'elle n'est pas fausse, mais n'a pas de preuve intuitionniste de son exactitude.
(F, false; NF, not false; T, true) :
NOT$_{HT}$(A) :
| A | ¬A |
| F | T |
| NF | F |
| T | F |
IMP$_{HT}$(A, B) :
| A → B | A → B | B | B | B |
| A → B | A → B | F | NF | T |
| A | F | T | T | T |
| A | NF | F | T | T |
| A | T | F | NF | T |
Il peut être défini soit en ajoutant l'un des deux axiomes équivalents (¬ q → p ) → ((( p → q ) → p ) → p ) ou de manière équivalente p ∨(¬ q )∨( p → q ) aux axiomes de logique intuitionniste , ou par des tables de vérité explicites pour ses opérations. En particulier, la conjonction et la disjonction sont les mêmes que dans la logique de Kleene et Łukasiewicz, tandis que la négation est différente.
La logique HT est l'unique couche dans le réseau des logiques intermédiaires. En ce sens, elle peut être considérée comme la « deuxième logique intermédiaire la plus forte » après la logique classique.

### Logique Post Ternaire

not(a) = (a + 1) mod 3, ou not(a) = (a + 1) mod (n), où (n) est une valeur logique.

### Algèbres modulaires

Certaines arithmétiques modulaires 3VL ont été introduites plus récemment, motivées par des problèmes de circuit plutôt que par des problèmes philosophiques:
* Algèbre de Cohn,
* Algèbre de Pradhan Dubrova,
* algèbre de Muzio.

## En électronique

En électronique numérique, une sortie vaut 0 quand elle est connectée à la masse, 1 quand elle est connectée à la source de tension.
En cas de panne d'un composant ou d'une liaison, un ou plusieurs composants peut délivrer un résultat qui ne répond pas à l’algèbre booléenne. L’objectif d'un système fiable est de réussir a identifier ce problème et faire qu'il n'ait pas de conséquence sur le résultat final en introduisant, entre autres des redondances. Ceci est particulièrement vrai en aéronautique avec les commandes de vol électriques et d'autant plus dans les avions militaires.

## En informatique

En SQL, les variables de type booléen peuvent prendre, en plus des valeurs vrai et faux, la valeur NULL. Une variable booléenne non initialisée, ou une opération avec une variable numérique elle-même non initialisée (dont la valeur est aussi appelée NULL) renvoient le booléen NULL. L'évaluation des prédicats admet donc trois valeurs possibles : true, false et unknown.
Exemples d'évaluation d'une formule en informatique (équation ou inéquation mathématique) :
| Équation | Typage de données | Résultat | Typage de résultat |
| 4 < NULL | NULL est ici le NULL des nombres | renvoie la valeur NULL | NULL est ici le NULL des booléens |
Quand on manipule un NULL booléen dans les opérations logiques, la logique ternaire s'applique. L'alternative « IF A THEN [instructions] » conduit à ne pas exécuter les instructions si A est NULL.