Pour étudier l'équivalence entre deux expressions
logiques on utilise souvent les tables de vérité.
Une table de vérité permet d'établir la valeur
de vérité qui prend une expression logique, et ceci pour toutes
les valeurs possibles des symboles qui en font partie.
Pour construire une table de vérité on dessine
une colonne pour chaque variable qui apparaît dans
l'expression, et une ligne pour chaque valeur possible
qu'on peut donner aux variables. La dernière
colonne correspond à à l'expression qui nous intresse
et à la valeur de vérité.
Nous notons true par t, et false
par f.
Table de vérité du and:
p | q | p and q |
t | t | t |
t | f | f |
f | t | f |
f | f | f |
Table de vérité du or:
p | q | p or q |
t | t | t |
t | f | t |
f | t | t |
f | f | f |
Pour établir l'équivalence entre deux expressions e1 et
e2 on construit une table de vérité
où figurent toutes les variables présentes dans
les deux expressions, plus une colonne pour chacune des expressions
e1,e2. Si pour toutes les lignes de la table les valeurs données
à e1 et e2 sont à chaque fois les mêmes, alors,
les deux expression sont équivalentes. En effet,
cela veut dire que e1, e2 prennent la valeur vrai ou faux,
exactement dans les mêmes cas.
Exemple: établissons l'équivalence suivante:
not(p or q)
not(p) and not(q)
p | q | not(p or q) | not(p) and not(q) |
t | t | f | f |
t | f | f | f |
f | t | f | f |
f | f | t | t |
Chaque ligne dans cette table donne la même valeur aux
deux expressions. En conclusion: elles
sont équivalentes.
Quelques équivalences utiles:
Exercices:
Utilisez les lois d'équivalence
logique et/ou de factorisation,
pour simplifier les conditionnelles et/ou les conditions suivantes.
Indiquez à chaque fois la loi utilisée.
Signalez des problèmes éventuels (p.e: des intructions
jamais exécutées).
if a or not(a) then B; else C; end if;
if a = true then p:=true; else p:= false; end if;
if a = false then p:=true; else p:= false; end if;
if x >= a or x < a then B; else C; end if;
if a and not(a) then B; else C; end if;
if x >= a and x < a then B; else C; end if;
if a and not(a) then B; end if;
if a or not(a) then B; end if;