Certaines informations figurant dans cet article ou cette section devraient être mieux reliées aux sources mentionnées dans les sections « Bibliographie », « Sources » ou « Liens externes » (février 2021).
Pour les articles homonymes, voir Algèbre de Boole.
L'algèbre de Boole, ou calcul booléen, est la partie des mathématiques qui s'intéresse à une approche algébrique de la logique, vue en termes de variables, d'opérateurs et de fonctions sur les variables logiques, ce qui permet d'utiliser des techniques algébriques pour traiter les expressions à deux valeurs du calcul des propositions. Elle fut lancée en 1854 par le mathématicien britannique George Boole.
L'algèbre de Boole trouve de nombreuses applications en informatique et dans la conception des circuits électroniques, développées notamment grâce au travail des universitaires Victor Shestakov (en), Akira Nakashima (en), Claude Shannon et Johanna Piesch[1]. Elle fut utilisée la première fois pour les circuits de commutation téléphonique par Claude Shannon.
L'algèbre de Boole des fonctions logiques permet de modéliser des raisonnements logiques, en exprimant un « état » en fonction de conditions. Par exemple, si nous étudions l'expression Communication et l'expression Décrocher :
L'algèbre de Boole étant un domaine commun à trois disciplines, on rencontre des notations différentes pour désigner un même objet. Dans le reste de l'article, on indiquera les diverses notations, mais on en privilégiera une pour conserver une certaine homogénéité.
On appelle B l'ensemble constitué de deux éléments appelés valeurs de vérité {VRAI, FAUX}. Cet ensemble est aussi noté
avec ⊤ {\displaystyle \top } pour 1 {\displaystyle 1} et ⊥ {\displaystyle \perp } pour 0 {\displaystyle 0} .
On privilégiera dans la suite la notation B = { 1 , 0 } {\displaystyle B=\{1,0\}} .
Sur cet ensemble on peut définir deux lois (ou opérations) binaires, les lois ET et OU, et une opération unaire, la négation (ou le complémentaire).
Pour l'ensemble des exemples et propriétés suivantes, { a , b , c } ⊂ B {\displaystyle \{a,b,c\}\subset B}
Elle est définie de la manière suivante : a ET b est VRAI si et seulement si a est VRAI et b est VRAI.
Cette loi est aussi notée :
On privilégiera dans la suite la notation « ⋅ {\displaystyle \cdot } ».
La table de cette loi (analogue à une table d'addition ou de multiplication) n'est pas une table de vérité.
Elle est définie de la manière suivante : a OU b est VRAI si et seulement si a est VRAI ou b est VRAI. (En particulier, si a est vrai et que b est vrai aussi, alors a OU b est vrai.)
On privilégiera dans la suite la notation + {\displaystyle +} mais on prendra garde du fait que cette loi n'est pas l'addition usuelle dans Z/2Z. C'est pourquoi, en mathématiques et en logique mathématique, la notation + {\displaystyle +} n'est pas utilisée pour désigner le « ou inclusif » : elle est réservée au « ou exclusif », opération qui (jointe au « et ») fait de toute algèbre de Boole un anneau de Boole, en particulier une Z/2Z-algèbre.
La négation de a est VRAIE si et seulement si a est FAUX.
La négation de a est notée :
On privilégiera dans la suite la notation a ¯ {\displaystyle {\bar {a}}} .
On obtient alors 0 ¯ = 1 {\displaystyle {\bar {0}}=1} et 1 ¯ = 0 {\displaystyle {\bar {1}}=0} .
Les opérateurs sont concernés par plusieurs propriétés communes :
Par ailleurs, chaque opérateur possède un élément neutre et un élément absorbant :
Des simplifications sont possibles comme :
le théorème du consensus s'applique aux opérateurs de l'algèbre de Boole :
Enfin, ils suivent le principe de complémentarité :
On retrouve alors toutes les propriétés qui confèrent à B une structure d'algèbre de Boole.
Pour alléger les écritures, il est d'usage que les opérations booléennes soient soumises aux mêmes règles de priorité que les opérations arithmétiques usuelles : la fonction ET (multiplication logique) est donc prioritaire par rapport à la fonction OU (somme logique). Ainsi :
Il reste possible de placer des parenthèses dans les calculs pour changer l'ordre de priorité des opérations.
Dans les deux cas, l'expression ne sera VRAIEque si a et b sont fausses.
Dans les deux cas, l'expression ne sera FAUSSEque si a et b sont vraies.
Mathématiquement, une fonction logique ou opérateur logique est une application de Bn dans B.
En électronique, une fonction logique est une boîte noire qui reçoit en entrée un certain nombre de variables logiques et qui rend en sortie une variable logique dépendant des variables d'entrée. L'article fonction logique précise comment construire les boîtes noires de quelques fonctions fondamentales.
Une table de vérité permet de préciser l'état de la sortie en fonction des états des entrées. Elle caractérise la fonction logique.
Toute table de vérité, et donc toute fonction logique, peut se décrire à l'aide des trois opérations de base :
On démontre aussi qu'il existe exactement 2 2 n {\displaystyle 2^{2^{n}}} fonctions logiques de n {\displaystyle n} paramètres. Il suffit en effet de considérer toutes les tables de vérités possibles, ou de considérer le développement d'une fonction de n {\displaystyle n} paramètres.
Elles sont issues des trois opérations de base et définissent alors
Ce sont les fonctions logiques à deux variables. Parmi celles-ci, on en dénombre certaines suffisamment intéressantes pour qu'on leur donne un nom.
Le OU étudié jusqu'à présent doit se comprendre de la manière suivante : « l'un ou l'autre ou les deux ». Il est également appelé « OU inclusif ». Le OU exclusif (ou XOR pour ' eXclusive OR') s'entend comme : « l'un ou l'autre, mais pas les deux ».
On peut également le définir avec un modulo sur une somme ordinaire :
Le « ou exclusif » est parfois noté par le signe arithmétique ≠ {\displaystyle \neq } (différent de). Fonctionnellement, on utilise aussi un + entouré : a ⊕ b {\displaystyle a\oplus b} .
Propriété - Toute table de vérité, toute fonction logique, peut se décrire à l'aide de la constante 1 et des deux opérations : disjonction exclusive et conjonction, car : a ¯ = a ⊕ 1 {\displaystyle {\bar {a}}=a\oplus \ 1} , et a + b = a ⊕ b ⊕ a ⋅ b {\displaystyle a+b=a\oplus \ b\oplus \ a\cdot b}
L'équivalence (notée EQV ou XNOR) est vraie si les deux entrées ont la même valeur et fausse sinon. C'est la négation du « ou exclusif ».
L'équivalence est souvent notée par le signe ⇔ {\displaystyle \Leftrightarrow } . Elle peut aussi être notée « == » dans certains langages (C++, PHP…) et « ⊙ » en électronique.
Cette opération n'est pas commutative. a est une condition suffisante pour b, qui, elle, est une condition nécessaire pour a.
Mais
a IMP b = b ¯ IMP a ¯ {\displaystyle a\ \operatorname {IMP} \ b={\overline {b}}\ \operatorname {IMP} \ {\overline {a}}}
De l'affirmation « SI j'habite en Allemagne, ALORS j'habite en Europe. », on peut déduire « SI je n'habite pas en Europe, ALORS je n'habite pas en Allemagne. » mais pas « SI je n'habite pas en Allemagne, ALORS je n'habite pas en Europe. » car je peux habiter en Europe ailleurs qu'en Allemagne, sans contredire l'énoncé initial.
Si a est VRAI, l'expression vaut VRAI, SAUF si b est VRAI.
Cette opération n'est pas commutative.
L'égalité Décrocher = (Sonnerie ET Décision de répondre) OU Décision d'appeler traduit la situation pratique suivante : On décroche un téléphone quand on décide d'appeler quelqu'un ou quand le téléphone sonne et qu'on décide de répondre.
Elle est constituée de trois variables :
la variable d = « Décrocher » est fonction logique des 3 précédentes et peut s'écrire d = a ⋅ b + c {\displaystyle d{=}a\cdot b+c}
La table de vérité de cette fonction d est alors la suivante (à droite) :
La table indique une situation absurde : quand on décide d'appeler quelqu'un et que le téléphone sonne sans qu'on ait envie de répondre, on décrocherait quand même. Une modification de la table comme ci-contre corrigerait cette absurdité. Cette table correspond à une fonction logique Décrocher d2 ou d2 qu'il est possible de déterminer et simplifier en d 2 = a ¯ ⋅ c + a ⋅ b {\displaystyle d2={\bar {a}}\cdot c+a\cdot b} .
Un bon élève s'interroge s'il est sage de sortir un soir. Il doit décider en fonction de quatre variables :
Cet élève pourra sortir si :
L'expression logique de sortir en fonction de l'état des variables a, b, c et d peut donc s'écrire ainsi :Sortir = a ⋅ b ⋅ ( c ¯ + d ) {\displaystyle a\cdot b\cdot ({\bar {c}}+d)}
Une fonction logique peut être déterminée
Exemple : Dans l'exemple de "Décrocher 2", la lecture de la table montre que d 2 {\displaystyle d2} égale 1 {\displaystyle 1} quand ( a , b , c ) = ( 0 , 0 , 1 ) {\displaystyle (a,b,c)=(0,0,1)} ou ( 0 , 1 , 1 ) {\displaystyle (0,1,1)} ou ( 1 , 1 , 0 ) {\displaystyle (1,1,0)} ou ( 1 , 1 , 1 ) {\displaystyle (1,1,1)} .Cela permet de définir d2 par d 2 = a ¯ ⋅ b ¯ ⋅ c + a ¯ ⋅ b ⋅ c + a ⋅ b ⋅ c ¯ + a ⋅ b ⋅ c {\displaystyle d2={\bar {a}}\cdot {\bar {b}}\cdot c+{\bar {a}}\cdot b\cdot c+a\cdot b\cdot {\bar {c}}+a\cdot b\cdot c}
Il est possible de trouver une expression minimisant le nombre de termes et le nombre de lettres dans chaque terme. C'est l'objectif de certaines techniques comme la méthode de Quine-Mc Cluskey, les diagrammes de Karnaugh, la méthode des consensus, la double dualisation…
Exemple (suite) : la somme précédente peut être réduite par factorisation des deux premiers termes par a ¯ ⋅ c {\displaystyle {\bar {a}}\cdot c} et factorisation des deux derniers termes par a ⋅ b {\displaystyle a\cdot b\,} d 2 = a ¯ ⋅ c + a ⋅ b {\displaystyle d2={\bar {a}}\cdot c+a\cdot b}
Les expressions logiques sont souvent représentées en informatique sous forme d'arborescence.
À un premier sommet (racine) sont rattachés différents sous-arbres (ou branches). Les sommets sans issue sont appelés feuilles.
Chaque sommet interne correspond à un sélecteur booléen S ( x , y , z ) = {\displaystyle S(x,y,z)=} « si x {\displaystyle x} alors y {\displaystyle y} sinon z {\displaystyle z} », qui ramène une question x {\displaystyle x} à deux sous-questions plus simples, éventuellement réduites à 1/vrai ou 0/faux.
L'évaluation d'une fonction f dépendant d'une variable q choisie pour la première question est alors f = S ( q , f ( q = 1 ) , f ( q = 0 ) ) {\displaystyle f=S(q,f(q=1),f(q=0))} , qui ramène à deux expressions indépendantes de q {\displaystyle q} .
Soit f = a ⋅ b + a ⋅ d ⋅ f + c ⋅ d + e ⋅ f {\displaystyle f=a\cdot b+a\cdot d\cdot f+c\cdot d+e\cdot f} ; on peut écrire f = S ( a , f ( a = 1 ) , f ( a = 0 ) ) = S ( a , b + c ⋅ d + d ⋅ f + e ⋅ f , c ⋅ d + e ⋅ f ) = S ( a , S ( b , 1 , d ⋅ f + c ⋅ d + e ⋅ f ) , S ( c , d + e ⋅ f , e ⋅ f ) ) … {\displaystyle f=S(a,f(a=1),f(a=0))=S(a,b+c\cdot d+d\cdot f+e\cdot f,c\cdot d+e\cdot f)=S(a,S(b,1,d\cdot f+c\cdot d+e\cdot f),S(c,d+e\cdot f,e\cdot f))\dots }
Les arbres dépendant de l'expression et de l'ordre des questions, pour une même expression certains questionnaires seront plus simples que d'autres.
Sur les autres projets Wikimedia :
Élémentaires + {\displaystyle +} Addition − {\displaystyle -} Soustraction × {\displaystyle \times } Multiplication ÷ {\displaystyle \div } Division ^ {\displaystyle {\hat {}}} Puissance
Arithmétiques d i v {\displaystyle \mathrm {div} } Quotient euclidien m o d {\displaystyle \mathrm {mod} } Reste euclidien p g c d {\displaystyle \mathrm {pgcd} } PGCD p p c m {\displaystyle \mathrm {ppcm} } PPCM
Combinatoires ( ) {\displaystyle ()} Coefficient binomial A {\displaystyle A} Arrangement
Ensembles de parties ∪ {\displaystyle \cup } Union ∖ {\displaystyle \backslash } Différence ∩ {\displaystyle \cap } Intersection Δ {\displaystyle \Delta } Différence symétrique
Ordre total min {\displaystyle \min } Minimum max {\displaystyle \max } Maximum
Treillis ∧ {\displaystyle \wedge } Borne inférieure ∨ {\displaystyle \vee } Borne supérieure
Ensembles × {\displaystyle \times } Produit cartésien ∪ ˙ {\displaystyle {\dot {\cup }}} Somme disjointe ^ {\displaystyle {\hat {}}} Puissance ensembliste
Groupes ⊕ {\displaystyle \oplus } Somme directe ∗ {\displaystyle \ast } Produit libre ≀ {\displaystyle \wr } Produit en couronne
Modules ⊗ {\displaystyle \otimes } Produit tensoriel H o m {\displaystyle \mathrm {Hom} } Homomorphisme T o r {\displaystyle \mathrm {Tor} } Torsion E x t {\displaystyle \mathrm {Ext} } Extension
Arbres ∨ {\displaystyle \vee } Enracinement
Variétés connexes # {\displaystyle \#} Somme connexe
Espaces pointés ∨ {\displaystyle \vee } Bouquet ∧ {\displaystyle \wedge } Smash-produit ∗ {\displaystyle \ast } Joint
Fonctionnelles ∘ {\displaystyle \circ } Composition de fonctions ∗ {\displaystyle \ast } Produit de convolution
Vectorielles ⋅ {\displaystyle \cdot } Produit scalaire ∧ {\displaystyle \wedge } Produit vectoriel × {\displaystyle \times \,} Produit vectoriel généralisé
Algébriques [ , ] {\displaystyle [,]} Crochet de Lie { , } {\displaystyle \{,\}} Crochet de Poisson ∧ {\displaystyle \wedge } Produit extérieur
Homologiques ⌣ {\displaystyle \smile } Cup-produit ⋅ {\displaystyle \cdot } Produit d'intersection
Séquentielles + {\displaystyle +} Concaténation