Aller au contenu principal

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 ?
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

  1. Un argument est valide si, chaque fois que toutes les prémisses sont vraies, la conclusion est également vraie.
  2. Considérons l'argument suivant :
    • Prémisse 1 : p → q
    • Prémisse 2 : p
    • Conclusion : q
  3. Ce type d'argument s'appelle le modus ponens.
  4. É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...