Logique
Progression
#Logique propositionnelle
À quoi ça sert ?
À quoi ça sert: formaliser des arguments et raisonner correctement sur des prédicats. Comment: syntaxe/sémantique, tables de vérité, équivalences (pour transformer) et esquisse de preuves (modus ponens/tollens, contraposée).
Objectifs d’apprentissage
- Construire des tables de vérité et décider tautologie/contradiction/contingence.
- Utiliser des équivalences usuelles (De Morgan, implication, double négation) pour simplifier.
- Esquisser des preuves par déduction (modus ponens/tollens, contraposée).
#Tables de vérité (Python)
Chargement de l’éditeur...
#Animation: générer une table de vérité
Saisir une expression logique. Opérateurs: ¬ ! ~, ∧ & &&, ∨ | ||, ⊕ ^, → ->, ↔ <->. Parenthèses ( ).
Variables détectées: p, q, r
Étape 1 / 4
#Équivalences usuelles (rappel)
- Implication:
p → q ≡ ¬p ∨ q
- Contraposée:
p → q ≡ ¬q → ¬p
- De Morgan:
¬(p ∧ q) ≡ ¬p ∨ ¬q
,¬(p ∨ q) ≡ ¬p ∧ ¬q
- Double négation:
¬¬p ≡ p
- Distribution:
p ∧ (q ∨ r) ≡ (p ∧ q) ∨ (p ∧ r)
#Quantificateurs (pièges classiques)
Avec des prédicats sur des ensembles, l’ordre des quantificateurs change le sens.
Exemples courants:
∀x ∃y P(x,y)
ne dit pas la même chose que∃y ∀x P(x,y)
. Le premier autorise que y dépende de x; le second impose un y unique valable pour tous les x.- Nier un quantificateur inverse le symbole et nie le prédicat:
¬(∀x P(x)) ≡ ∃x ¬P(x)
et¬(∃x P(x)) ≡ ∀x ¬P(x)
.
Erreurs fréquentes chez les humains: oublier que l’implication P→Q
est vraie quand P est fausse; interpréter “pour tout” comme “il existe” et inversement. La table de vérité et ces équivalences évitent ces pièges.
#Mini‑quiz
Laquelle est une équivalence vraie ?
#Exercice : Vérification de validité d'arguments logiques
Implémentez un programme Python qui vérifie la validité d'un argument logique en utilisant les tables de vérité.
#Instructions
- Un argument est valide si, chaque fois que toutes les prémisses sont vraies, la conclusion est également vraie.
- Considérons l'argument suivant :
- Prémisse 1 : p → q
- Prémisse 2 : p
- Conclusion : q
- Ce type d'argument s'appelle le modus ponens.
- Écrivez un programme qui génère la table de vérité pour cet argument et vérifie sa validité.
#Exemple de code
pythonpython
1def modus_ponens_validity():2 vals = [False, True]3 print('p q | p->q | p | q | Valide?')4 valid = True5 6 for p in vals:7 for q in vals:8 premise1 = (not p) or q # p -> q9 premise2 = p10 conclusion = q11 12 # L'argument est invalide si les prémisses sont vraies et la conclusion fausse13 if premise1 and premise2 and not conclusion:14 valid = False
Chargement de l’éditeur...