Logique propositionnelle

Modélisation

Florent Capelli

14 Janvier 2025

Rappels

  • Propositions : “Bob porte un pull rouge”, “Alice marche”…
  • Propositions atomiques (p, q, …)
  • Formules : F := (pq) ∨ ¬(rq)
    • différents connecteurs possibles ∧,∨,⇒,¬,⊕,NAND, NOR etc.
    • {∧,∨,¬} fonctionnellement complet
  • Sémantique d’une formule :
    • interprétation : ω: PROP → {0, 1} fixe la valeur de vérité des propositions atomiques
    • F⟧(ω) ∈ {0, 1}
  • Table de vérité de F
  • Vocabulaire :
    • Valide
    • Satisfiable
    • Contradictoire

Formes normales

Exemple (semaine dernière)

Trouver F qui a cette table de vérité :

x y z F⟧(ω)
0 0 0 1
0 0 1 0
0 1 0 1
0 1 1 0
1 0 0 1
1 0 1 0
1 1 0 0
1 1 1 0

F1 := (¬x∧¬y∧¬z) ∨ (¬xy∧¬z) ∨ (x∧¬y∧¬z)

Forme Normale Disjunctive (FND) ⋁⋀(¬)v :

disjonction de termes (= conjonction de littéraux).

F2 := (xy∨¬z) ∧ (x∨¬y∨¬z) ∧ (¬xy∨¬z) ∧ (¬x∨¬yz) ∧ (¬x∨¬y∨¬z)

Forme Normale Conjonctive (FNC) ⋀⋁(¬)v :

conjonction de clauses (= disjonction de littéraux).

Mise sous forme normale

  • Faire la table de vérité :
    • chaque modèle donne un terme de la FND
    • chaque contre-modèle donne une clause de la FNC
    • exponentiel dans le meilleur des cas
  • Utiliser la distributivité après avoir poussé les négations aux feuilles (grâce à De Morgan)
    • ¬(ab) ≡ (¬a∧¬b)
    • ¬(ab) ≡ (¬a∨¬b)
    • a ∧ (bc) ≡ (ab) ∨ (ac)
    • a ∨ (bc) ≡ (ab) ∧ (ac)

Exemple

Mettre ¬(ab) ∨ ¬(b∨¬d) en CNF.

  • Pousser les négations en bas: a∧¬b) ∨ (¬b∨¬¬d)
  • Enlever les doubles négations: a∧¬b) ∨ (¬bd)
  • Distributivité :
    • ((¬a∧¬b)∨(¬b)) ∧ ((¬a∧¬b)∨d)
    • ((¬a∨¬b)∧(¬b∨¬b)) ∧ ((¬ad)∧(¬bd))
  • C’est bon après un peu de nettoyage : a∨¬b) ∧ (¬b) ∧ (¬ad) ∧ (¬bd)

Forme Normale Conjonctive

iCi

  • Entrée par défaut des SAT solvers (outils pour résoudre SAT)
  • Format simple et “facile” à traiter algorithmiquement (voir séance 3)
  • Naturelle : on modélise le monde comme un ensemble de contraintes
    • Clauses : contraintes les plus simples possibles (voir cours CSP/Contraintes pour langage plus riche)
    • Permet quand même de coder (xyz) ⇒ (x′∨y′∨z′)
    • (colorRedcolorGreencolorBlue) ∧ (isReptilecolorGreen) ∧ ...
  • Permet de coder des circuits Booléens en général : la transformation de Tseitin

Transformation de Tseitin

(a∧(bc)) ⇒ (¬(ab)∧d)

g N0 N1 N0->N1 N6 N0->N6 N2 a N1->N2 N3 N1->N3 N4 b N3->N4 N5 c N3->N5 N7 ¬ N6->N7 N11 d N6->N11 N8 N7->N8 N9 a N8->N9 N10 b N8->N10 g z0 z0 z1 z1 z0->z1 z6 z6 z0->z6 z2 a z1->z2 z3 z3 z1->z3 z4 b z3->z4 z5 c z3->z5 z7 z7 z6->z7 z11 d z6->z11 z8 z8 z7->z8 z9 a z8->z9 z10 b z8->z10
Circuit Encodage CNF
z0 ⇔ (z1⇒z6) z0∨¬z1∨z6) ∧ (z1∨z0) ∧ (¬z6∨z0)
z6 ⇔ (z7∧z11) z6∨z7) ∧ (¬z6∨z11) ∧ (¬z7∨¬z11∨z6)
z8 ⇔ a ⊕ b (z8∨a∨¬b) ∧ (z8∨¬ab) ∧ (¬z8∨¬a∨¬b) ∧ (¬z8∨ab)

Transformation de Tseitin II

F une formule Booléenne sur les propositions atomiques X.

On construit G sur les variables X ∪ Z telle que :

  • Tout modèle ω de F peut être étendu en un unique modèle ω de G.
  • Tout modèle ω de G vérifie ω′ ⊨ F.
  • Marche aussi avec les circuits (formules avec partage).

Les modèles de F et de G sont isomorphes.

Modélisation

Qu’est-ce que la modélisation

  1. On modélise un problème qu’on a besoin de résoudre avec une formule propositionnelle.
  2. On trouve un modèle (ou pas) de notre formule.
  3. On extrait de ce modèle une solution à notre problème.
Raymond Smullyan, The Lady or the Tiger? And Other Logic Puzzles: Including a Mathematical Novel that Features Gödel’s Great Discovery.

Il y deux portes. Derrière chacune d’elle se trouve soit un tigre soit de l’or. Voulez-vous tenter votre chance et en ouvrir une ?

  • Si la porte 1 mène à de l’or, alors son inscription est vraie et sinon, elle est fausse.
  • Si la porte 2 mène à un tigre, alors son inscription est vraie et sinon, elle est fausse.

Sur la porte 1, il est écrit : derrière chacune des portes se cache de l’or.

Sur la porte 2, il est écrit : derrière cette porte se trouve de l’or ou derrière l’autre se trouve un tigre.

Schéma général

  1. Bien définir les propositions atomiques qu’on va utiliser et leur sémantique.
  2. S’assurer qu’une interprétation de ces propositions atomiques est suffisante pour conclure.
  3. Écrire une proposition qui modélise le problème c’est-à-dire dont les modèles permettent de résoudre le problème.
  4. Trouver un modèle de la proposition.
  5. Conclure!

Choix des propositions atomiques

Exemples possible :

  • T1: il y a un tigre derrière la porte 1, T2: il y a un tigre derrière la porte 2
  • O1: il y a de l’or derrière la porte 1, O2: il y a de l’or derrière la porte 2
  • V1: l’inscription de la porte 1 est vraie, V2: l’inscription de la porte 2 est vraie
  • WTF: il y a un tigre derrière la porte 1 et il y a un tigre derrière la porte 2.

Sont-elles toutes utiles ?

  • Certaines sont des conséquences directes d’autres de part la nature du problème:
    • Ti ⇔ ¬Oi, WTF ⇔ (T1T2), V1 ⇔ O1 etc.
    • Doit-on garder les deux ?
      • Moins de variables donne en générale une formule plus “simple” à résoudre
      • Plus de variables rendent parfois le problème plus facile à modéliser

Modélisation du problème I

On va utiliser les propositions T1, T2, O1, O2, V1, V2 pour commencer :

  • Il y deux portes. Derrière chacune d’elle se trouve soit un tigre soit de l’or.
    • T1 ⇔ ¬O1
    • T2 ⇔ ¬O2
  • Si la porte 1 mène à de l’or, alors son inscription est vraie et sinon, elle est fausse.
    • V1 ⇔ O1
  • Si la porte 2 mène à un tigre, alors son inscription est vraie et sinon, elle est fausse.
    • V2 ⇔ T2
  • Sur la porte 1, il est écrit : derrière chacune des portes se cache de l’or.
    • V1 ⇔ (O1O2)
  • Sur la porte 2, il est écrit : derrière cette porte se trouve de l’or ou derrière l’autre se trouve un tigre.
    • V2 ⇔ (O2T1)

Modélisation du problème II

On a donc un problème équivalent à la formule suivante :

(T1⇔¬O1) ∧ (T2⇔¬O2) ∧ (V1O1) ∧ (V2T2) ∧ (V1⇔(O1O2)) ∧ (V2⇔(O2T1))

On peut voir qu’il y a une seule solution :

T1 = 1, O1 = 0, T2 = 1, O2 = 0, V1 = 0, V2 = 1

Donc il vaut s’abstenir d’ouvrir une porte…

Modélisation du problème III

On n’a pas vraiment besoin de tant de propositions atomiques vu qu’elles dépendent toutes de T1, T2.

  • Il y deux portes. Derrière chacune d’elle se trouve soit un tigre soit de l’or.
    • T1 ∨ ¬T1, T2 ∨ ¬T2, mais ce sont des formules valides, on n’en a pas besoin.
  • Si la porte 1 mène à de l’or, alors son inscription est vraie et sinon, elle est fausse.
  • Sur la porte 1, il est écrit : derrière chacune des portes se cache de l’or.
    • ¬T1 ⇔ (¬T1∧¬T2)
  • Si la porte 2 mène à un tigre, alors son inscription est vraie et sinon, elle est fausse.
  • Sur la porte 2, il est écrit : derrière cette porte se trouve de l’or ou derrière l’autre se trouve un tigre.
    • T2 ⇔ (¬T2T1)

On a donc une autre modélisation T1⇔(¬T1∧¬T2)) ∧ (T2⇔(¬T2T1))

Sudoku

Remplir la grille avec des nombres de 1 à 9 tel que :

  • une ligne ne peut contenir deux fois le même nombre
  • une colonne ne peut contenir deux fois le même nombre
  • un des carrées 3 × 3 délimités en gras dans le dessin ne peut contenir deux fois le même nombre
. . . . 3 . 6 4 .
. 3 . 7 . 5 8 . .
8 2 . . 9 6 . 7 .
. . . . 7 . 2 9 6
. . 3 4 2 9 . 1 .
2 9 8 5 6 1 4 . 7
7 . 2 9 . . . . .
. . . . . . . 6 4
4 5 9 . . . 7 . .

Modélisation du Sudoku

Propositions : ci, j, k = “la case i, j contient la valeur k” pour 0 ≤ i, j ≤ 8 et 1 ≤ k ≤ 9.

  • Chaque case contient un nombre de 1 à 9
    • Pour chaque i, j : ci, j, 1 ∨ … ∨ ci, j, 9
    • Exactement un nombre ? ci, j, k ⇒ ¬ci, j, ℓ pour tout k ≠ ℓ
  • Une ligne ne peut contenir deux fois le même nombre
    • Pour chaque i, j, k : ci, j, k ⇒ ⋀j′ ≠ j¬ci, j′, k
  • Une colonne ne peut contenir deux fois le même nombre
    • Pour chaque i, j, k : ci, j, k ⇒ ⋀i′ ≠ i¬ci′, j, k
  • Un carré ne peut contenir deux fois le même nombre
    • Carré autour de i, j: Ki, j = {(⌊i/3⌋ + a, ⌊j/3⌋ + b ∣ 0 ≤ a, b ≤ 2} \ {(i,j)}
    • Pour chaque i, j, k : ci, j, k ⇒ ⋀i′, j′ ∈ Ki, j¬ci′, j, k
  • Case préremplies
    • Si la case i, j est déjà rempli avec le nombre k, on ajoute la clause ci, j, k pour forcer cette valeur à vrai

Exercice Sudoku

Écrire un sudoku solver en utilisant cette modélisation et un sat solver!