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)$
Commentaires