Les ordinateurs sont-ils logiques ? 1 : Logique propositionnelle

lundi 7 décembre 2009
par  Alain BUSSER

En logique propositionnelle, on peut vérifier la validité d’une proposition (savoir si elle est vraie ou fausse) en remplissant un tableau de ce type (exemple de la commutativité de $\vee$, le "ou inclusif") :

$_q \fbox{(p \vee q) \Leftrightarrow (q \vee p)} ^p$ 0 1
0 1 1
1 1 1

Comme il n’y a que des "1" dans le tableau, $(p \vee q)\Leftrightarrow (q \vee p)$ est toujours vrai (c’est une tautologie) indépendamment des valeurs de vérité de $p$ et $q$. Tester la validité d’une proposition ayant $n$ variables propositionnelles nécessite de remplir un tableau ayant $2^n$ cases (sans les bords) ce qui risque d’être long [1]. Mais un ordinateur peut le faire en un temps raisonnable, et le logiciel de calcul formel Yacas était muni d’une fonction CanProve qui faisait quelque chose d’équivalent à ce remplissage automatique du tableau (dans l’exemple ci-dessus, elle répond "True"). Et comme Yacas a été incorporé à MathRider [2], MathRider permet d’explorer le calcul propositionnel comme on va le faire dans cet article.

On suppose donc MathRider téléchargé, installé et démarré. Pour entrer une question sur une proposition, on doit faire "shift+Entrée" et pas "Entrée" seul.


Négation

Une proposition $p$ peut-elle être vraie et fausse en même temps ?

CanProve(p And Not p)

La réponse False signifie non pas que $p \wedge \neg p$ n’est pas vraie (sous-entendu : pas tout le temps) mais qu’elle est totalement et irrémédiablement fausse. C’est une antilogie notée $\bot$.

Une proposition peut-elle être autre chose que vraie ou fausse ?

CanProve(p Or Not p)

La réponse True signifie que non, ce qui s’appelle le principe du tiers exclu.


Lois de DeMorgan (hors programme)

Avec

PrettyForm(CanProve(Not(p Or q)))

la réponse Not( p ) And Not( q ) signifie que $\neg(p \vee q)$ est logiquement équivalente à $\neg p \wedge \neg q$ :

$$\neg(p \vee q) \Leftrightarrow \neg p \wedge \neg q$$

C’est la première des deux lois de De Morgan. La seconde

$$\neg(p \wedge q) \Leftrightarrow \neg p \vee \neg q$$

s’explique de la même manière :

PrettyForm(CanProve(Not(p And q)))

donne Not( p ) Or Not( q ) comme réponse.

Quel est le contraire de $p \Rightarrow q$ ?

PrettyForm(CanProve(Not(p => q)))

répond p And Not( q ) : Le contraire de $p \Rightarrow q$ est donc $p \wedge \neg q$. La seule manière pour qu’une implication soit fausse est que sa prémisse soit vraie mais pas sa conclusion. Par exemple $2+2=4 \Rightarrow 0=1$ est fausse (mais pas sa réciproque ; voir à l’onglet "Implication" pour plus de détails).

Quel est le contraire du contraire de $p$ ?

CanProve(Not Not p)

répond juste p, alors que

CanProve(Not Not p =>p)

répond True, ainsi que

CanProve(p => Not Not p)

Tout ceci se résume par l’équivalence logique entre une proposition $p$ et la négation de sa négation : $p \Leftrightarrow \neg \neg p$.

La double négation est souvent considérée comme une figure de style lourde et donc à éviter [3]. Si un professeur d’anglais déconseille à ses étudiants de dire "she’s not ugly" d’une fille qu’il trouve belle, c’est bien parce que celle-ci risque de n’entendre qu’une seule négation et de mal comprendre le message.

Lorsque Raymond Smullyan fait son cours de logique sur la double négation comme affirmation, il termine par :

Par contre je ne connais aucune langue où, au contraire, la double affirmation équivaut à une négation.

ce à quoi, un jour, un étudiant du fond de l’amphi lui a répondu irrévérencieusement mais avec humour

Ouais, ouais, cause toujours...

On peut coder le discours de Smullyan par $\neg(p \wedge p \Leftrightarrow \neg p)$


[1Une version dynamique, en JavaScript, se trouve dans ce cours de Seconde.

[2sous le nom de MathPiper qui n’est rien d’autre qu’un portage Java de Yacas

[3pas pour Corneille chez qui « je ne te hais point » est un mot d’amour.


Commentaires