Vous êtes sur la page 1sur 9

Ecole supérieure en informatique

Année 2022-2023
2ème Année CPI Logique mathématique

TD 4 : Corrigé

Il peut y avoir des erreurs de frappe ou d’inattention, nous serons reconnaissants aux lecteurs de bien
vouloir nous avertir par e-mail: righi ali@yahoo.fr, helalnacera@yahoo.fr. .

Exercice 1 . Les ensembles suivants sont insatisfaisables.

• {a, a ⇒ b, b̄}
¯ d + c̄, b̄ + a}
• {a + b, ā + c, ā + d,
• {a + b + c, ā + b, b̄ + c, c̄ + a, ā + b̄ + c̄}.
En donner une preuve par résolution.
Réponse:

1.
2. 3.
(1) a Hyp
(2) ā + b Hyp
(1) a+b Hyp
(3) b̄ Hyp (1) a+b+c Hyp
(2) ā + c Hyp
(4) ā Res (2,3) (2) ā + b Hyp
(3) ā + d¯ Hyp
(5) ⊥ Res (1,4) (3) b̄ + c Hyp
(4) d + c̄ Hyp
(4) c̄ + a Hyp
(5) b̄ + a Hyp
(5) ā + b̄ + c̄ Hyp
(6) a Res (1,5)
(6) b+c Res (1,2)
(7) c Res (6,2)
(7) a+c Res (1,3)
(8) d¯ Res (6,3)
(8) a+b Res (1,4)
(9) c̄ Res (8,4)
(9) a Res (4,7)
(10) ⊥ Res (7,9)
(10) b̄ + c̄ Res (5,9)
(11) b Res (2,8)
(12) c Res (11,3)
(13) b̄ Res (10,12)
(14) ⊥ Res (11,13)

La question est donner une preuve par résolution, ce n’est pas donner la preuve la plus
courte. La stratégie là est libre.

Exercice 2 . Montrer, à l’aide d’une preuve par résolution, la correction du raisonnement suivant
:
r + q ⇒ t, t · q ⇒ r, q  t ⇔ r.

1 /9
Réponse: Comme la résolution n’est pas complète pour la déduction et elle est complète
pour la réfutation, on va remplacer la question par une question équivalente.
On sait (Cours sémantique) que

Γ  C ssi Γ ∪ ¬C  ⊥.

r + q ⇒ t, t q ⇒ r, q  t ⇔ r ssi r + q ⇒ t, t q ⇒ r, q, ¬(t ⇔ r)  ⊥

On va utiliser la résolution pour la prouver. D’abord on transforme les formules en clauses


ou produit de clauses.
1. (r + q) ⇒ t ≡ (r̄q̄ + t) = (r̄ + t)(q̄ + t).
2. tq ⇒ r ≡ t̄ + q̄ + r.
3. ¬(t ⇔ r) ≡ tr + t̄r̄ ≡ (t + r)(t̄ + r̄)
Comme le système de résolution est correct et complet pour la réfutation, prouver le raison-
nement correct revient à prouver

r̄ + t, q̄ + t, t̄ + q̄ + r, q, t + r, t̄ + r̄ `res ⊥.
Preuve formelle
(1) r̄ + t Hyp
(2) q̄ + t Hyp
(3) t̄ + q̄ + r Hyp
(4) q Hyp
(5) t+r Hyp
(6) t̄ + r̄ Hyp
(7) t Res (4,2)
(8) q̄ + r Res (7,3)
(9) r̄ Res (7,6)
(10) q̄ Res (8,9)
(11) ⊥ Res (4,10)

Preuve formelle sous forme d’arbre Les feuilles sont les hypothèses et les sommets in-
ternes sont obtenus par construction des résolvants.


q q̄

r̄ q̄ + r

t̄ + r̄ t t̄ + q̄ + r t

q̄ + t q q̄ + t q

Figure 1: Résolution sous forme d’arbre

2 /9
Exercice 3 . Appliquer les stratégies positive, négative et linéaire sur ces ensembles de clauses.

1. {ā + b̄ + c, a, c̄, b}
2. {ā + b̄ + c, ā + b, a, c̄}
3. {ā + b̄, c̄ + a, c, d¯ + b, d + b}
4. {ā + b̄ + c + d, c̄ + ē + f¯, ā + d,
¯ b + c, a + c, c̄ + e, c̄ + f }

Réponse:
Stratégie positive.
1.

(1) ā + b̄ + c Hyp
(2) a Hyp 3. 4.
(3) c̄ Hyp
(4) b Hyp (1) ā + b̄ Hyp (1) ā + b̄ + c + d Hyp
(5) b̄ + c Res (1,2) (2) c̄ + a Hyp (2) c̄ + ē + f¯ Hyp
(6) c Res (5,4) (3) c Hyp (3) ā + d¯ Hyp
(7) ⊥ Res (6,3) . (4) d¯ + b Hyp (4) b+c Hyp
(5) d+b Hyp (5) a+c Hyp
2. (6) a Res (2,3) (6) c̄ + e, Hyp
(7) b̄ Res (6,1) (7) c̄ + f Hyp
(1) ā + b̄ + c Hyp (8) d Res (7,5) (8) b̄ + c + d Res (1,5)
(2) ā + b Hyp (9) b Res (8,4) (9) c+d Res (8,4)
(3) a Hyp (10) ⊥ Res (9,7) (10) ā + c Res (9,3)
(4) c̄ Hyp (11) c Res (10,5)
(5) b̄ + c Res (1,3) (12) e Res (11,6)
(6) b Res (2,3) (13) f Res (11,7)
(7) c Res (6,5) (14) c̄ + f¯ Res (12,2)
(8) ⊥ Res (7,4) . (15) c̄ Res (13,14)
(16) ⊥ Res (11,15)

3 /9
Réponse:
Stratégie négative.
1.

(1) ā + b̄ + c Hyp
(2) a Hyp 3. 4.
(3) c̄ Hyp
(4) b Hyp (1) ā + b̄ Hyp (1) ā + b̄ + c + d Hyp
(5) ā + b̄ Res (1,3) (2) c̄ + a Hyp (2) c̄ + ē + f¯ Hyp
(6) ā Res (5,4) (3) c Hyp (3) ā + d¯ Hyp
(7) ⊥ Res (6,2) . (4) d¯ + b Hyp (4) b+c Hyp
(5) d+b Hyp (5) a+c Hyp
2. (6) b̄ + c̄ Res (1,2) (6) c̄ + e, Hyp
(7) b̄ Res (6,3) (7) c̄ + f Hyp
(1) ā + b̄ + c Hyp (8) d¯ Res (7,4)
(2) ā + b Hyp (8) c̄ + f¯ Res (2,6)
(9) b Res (8,5) (9) c̄ Res (7,8)
(3) a Hyp (10) ⊥ Res (9,7)
(4) c̄ Hyp (10) ā + b̄ + c Res (1,3)
(5) ā + b̄ Res (1,4) (11) ā + b̄ Res (9,10)
(6) b̄ Res (5,3) (12) b Res (9,4)
(7) ā Res (6,2) (13) a Res (9,5)
(8) ⊥ Res (7,3) . (14) ā Res (11,12)
(15) ⊥ Res (14,13)

Réponse:
Stratégie linéaire.
1. 3. 4.

(1) ā + b̄ + c Hyp (1) ā + b̄ Hyp (1) ā + b̄ + c + d Hyp


(2) a Hyp (2) c̄ + a Hyp (2) c̄ + ē + f¯ Hyp
(3) c̄ Hyp (3) c Hyp (3) ā + d¯ Hyp
(4) b Hyp (4) d¯ + b Hyp (4) b+c Hyp
(5) b̄ + c Res (1,2) (5) d+b Hyp (5) a+c Hyp
(6) b̄ Res (5,3) (6) ā + d Res (1,5) (6) c̄ + e, Hyp
(7) ⊥ Res (6,4) . (7) c̄ + d Res (6,2) (7) c̄ + f Hyp
(8) d Res (7,3) (8) ā + b̄ + d + ē + f¯ Res (1,2)
2. (9) b Res (8,4) (9) ā + b̄ + ē + f¯ Res (8,3)
(10) ā Res (9,1) (10) ā + ē + f¯ + c Res (9,4)
(1) ā + b̄ + c Hyp (11) c̄ Res (10,2)
(2) ā + b Hyp (11) ā + ē + f¯ Res (10,2)
(12) ⊥ Res (11,3) (12) c + ē + f¯ Res (11,5)
(3) a Hyp
(4) c̄ Hyp (13) ē + f¯ Res (12,2)
(5) ā + c Res (1,2) (14) ē + c̄ Res (13,7)
(6) c Res (5,3) (15) c̄ Res (14,6)
(7) ⊥ Res (6,4) . (16) b Res (15,4)
(17) ā + c + d Res (16,1)
(18) ā + c Res (17,3)
(19) c Res (18,5)
(20) ⊥ Res (19,15)

4 /9
Remarque. La stratégie linéaire est complète pour la réfutation veut dire que si l’ensemble est
insatisfaisable il existe une réfutation linéaire. (Preuve par résolution en respectant la stratégie linéaire.)
Donc si vous avez 4 clauses au départ et vous choisissez de commencer par faire la résolution entre (1)
et (2), puis poursuivre en utilisant la stratégie linéaire et si vous vous trouvez devant l’impossibilité de
continuer. Ca ne veut pas dire que l’ensemble est satisfaisable. C’est possible qu’il existe un autre chemin
(une autre réfutation linéaire) par exemple qui commence par faire la résolution entre (2) et (3).

Γ = {c + d, c̄, d¯ + f, a + b, ā, b̄.}


Cet ensemble est clairement insatisfaisable.
(1) c+d Hyp
(2) c̄ Hyp
(3) d¯ + f Hyp
(4) a+b Hyp
(5) ā Hyp
(6) b̄, Hyp
(7) d Res(1,2)
(8) f Res(7,2)
Avec f on ne peut plus faire de résolution. Ce chemin échoue. Mais il existe un autre chemin, si on
commence par faire la résolution entre (4) et (5) ...
Les stratégies de résolution ne sont pas des algorithmes.

Exercice 5 . (Réduction) Soit l’ensemble de clauses

{p + q, p̄ + r + q̄ + p, p + r̄, q + p̄ + q̄, q + r̄ + p, r + q + p̄ + r̄, r̄ + q}


1. Réduire cet ensemble.
2. Indiquez si l’ensemble réduit est ou non satisfaisable
Réponse: 1. On supprime les clauses valides(rouge) et les clauses qui contiennent
d’autres clauses (noir)

p + q, p̄ + r + q̄ + p, p + r̄, q + p̄ + q̄, q + r̄ + p, r + q + p̄ + r̄, r̄ + q

On obtient par RE 
p + q, p + r̄, r̄ + q
2. Par RI, on élimine les clauses qui contiennent des littéraux isolés. qui sont r̄, p, q.
En fait, dans ce cas, on va éliminer toutes les clauses. On obtient l’ensemble vide.
Conclusion l’ensemble est satisfaisable.

Exercice 6.
Utilisez l’algorithme DP pour déterminer si l’ensemble suivant de clauses est satisfaisable ou insatisfais-
able:

{a + b + c + d + e + f, ā + b, b̄ + a, c̄ + d, d¯ + c, b̄ + c̄, b̄ + c, b + c̄, ē, f¯}


On donnera une trace de l’algorithme.

5 /9
{a + b + c + d + e + f , ā + b, b̄ + a, c̄ + d, d¯ + c, b̄ + c̄, b̄ + c, b + c̄, ē, f¯}

RU

{a + b + c + d, ā + b, b̄ + a, c̄ + d, d¯ + c, b̄ + c̄, b̄ + c, b + c̄}

a=0 a=1

{b + c + d, b̄, c̄ + d, d¯ + c, b̄ + c̄, b̄ + c, b + c̄} {b, c̄ + d, d¯ + c, b̄ + c̄, b̄ + c, b + c̄}

RU RU

{c + d, c̄ + d, d¯ + c, c̄} {c̄ + d, d¯ + c, c̄, c}

RU RU

¯
{d, d} ⊥

RU

Figure 2: Trace de l’algorithme Davis-Putnam

Solution de l’exercice 6.
L’ensemble des clauses est insatisfaisable.

Exercice 7 . Utilisez l’algorithme DP pour déterminer si l’ensemble suivant de clauses est satis-
faisable ou insatisfaisable:

{a + b + c + d + f, ā + b, b̄ + a, c̄ + d, d¯ + c}
Donner une trace de l’algorithme. Indiquer la réponse de l’algorithme (E satisfaisable ou insatisfaisable).
Si E est satisfaisable, déduire un modèle de E à partir de la trace de l’exécution de l’algorithme .

Solution de l’exercice 7.
On aurait pu arrêter l’algorithme sur une seule branche c = 1, puisque nous avons l’ensemble vide. Conclusion:
L’ensemble des clauses est satisfaisable. Le modèle correspondant à la branche gauche: d = 1, c = 1, b = 0(b̄ =
1), a = 0, f = 1. Si on a Fait RU ou RI sur un littéral(f, b̄) on le considère comme 1. Le déroulement de l’algorithme
de Davis-Putnam est simple.
1. Il faut comprendre pourquoi il est correct, et plus efficace que la transformation en somme de monômes pour
dire si un produit de clause est satisfaisable ou non!
2. Un Tp intéressant aurait été de le programmer en un langage adéquat.

6 /9
{a + b + c + d + f, ā + b, b̄ + a, c̄ + d, d¯ + c}
RI
{ā + b, b̄ + a, c̄ + d, d¯ + c}
a=0 a=1
{b̄, c̄ + d, d¯ + c}
RU
{c̄ + d, d¯ + c}
c=1 c=0
{d} ¯
{d}
RU RU
∅ ∅

Exercice 8.

1. Montrez que si A est une fonction en CNF alors la fonction DP termine.

2. Montrez que DP(A) retourne true (false) si et seulement si A est satisfaisable (ne l’est pas).

3. Rappelons que toute formule peut être transformée en CNF. Expliquez comment utiliser la méthode
de Davis-Putnam pour décider la validité d’une formule.

4. Modifiez DP (A) pour que, si A est satisfaisable, elle retourne une assignation v qui satisfait A.

5. Réfléchissez aux structures de données et aux opérations nécessaires à la mise en oeuvre de l’algorithme
dans votre langage préféré et adéquat.

Réponse:
1. L’ensemble de clauses est fini et le nombre de variables est fini. Donc chaque étape
de l’algorithme se termine. Chaque retour(appel récursif ) s’applique en diminuant soit le
nombre de clauses soit le nombre de variables. D’où le programme doit se terminer.
En effet, les réductions RE,RU,RI diminue forcément le nombre de clauses, et l’affectation
d’une variable soit à x = 1 ou x = 0 diminue le nombre de variables.
2. Il suffit de démontrer que les étapes de l’algorithme garde la satisfaisabilité de l’ensemble
des formules du départ.
RE . Si on applique la réduction, on garde l’équivalence même. Puisque c’est une appli-
cation des équivalences remarquables 1 · x ≡ x et x · (x + y) ≡ x.
RI . RI consiste à remplacer dans le cas le plus simple (F + L)G par G où L̄ n’apparaı̂t
pas dans G. On ne perd pas en généralité si on prend L = x. En fait supposons que G a un
modèle v. ([G]v = 1). On construit alors une assignation w telle que w(y) = v(y) si y 6= x et
w(x) = 1. Alors [F + x]w = 1 et [G]w = [G]v = 1. Donc [(F + L)G]v = 1.
L’autre sens est évident. En effet on a pour toute assignation v : Si [(F + L)G]v = 1 alors
[G]v = 1. Si (F + L)G a un modèle G a un modèle.
Le cas général est de remplacer

(F1 + L)(F2 + L) · · · (Fm + L)G1 G2 · · · Gn par G1 G2 · · · Gn ,

7 /9
où les Gi ne contiennent pas L̄. La preuve est analogue au cas simple.
RU. On prend la clause unitaire L = x sans perte de généralité La réduction unitaire dans
le cas général c’est remplacer
A = x(x + F1 )(x + F2 ) · · · (x + Fm )(G1 + x̄)(G2 + x̄) · · · (Gn + x̄) par G = G1 G2 · · · Gn .
avec les Gi ne contiennent pas la variable x.
Si v est un modèle de A ([A]v = 1). Alors [x]v = 1 et [Gi + x̄]v = 1 pour 1 ≤ i ≤ n. Donc v(x) = 1
et [Gi ]v = 1 pour 1 ≤ i ≤ n. Il vient v est un modèle de la formule G.
L’autre sens . Supposons que G a un modèle v. Donc [Gi ]v = 1 pour 1 ≤ i ≤ n. On construit
l’assignation w(y) = v(y) si y 6= x et w(x) = 1. Alors [x]w = 1 et [x + Fi ]w = 1 pour tout 1 ≤ i ≤ m.
En même temps, [x̄ + Gi ]w = max([x̄]w , [Gi ]w ) = max(0, [Gi ]w ) = [Gi ]w = [Gi ]v = 1.
Donc w est un modèle de A.
3. Soit une formule F qu’on veut étudier la validité. Questions  F ?
Comme D.P ne garde que la satisfaisabilité, on répond plutôt à la question ¬F est-elle sati-
safaisable? Les deux questions sont équivalente. (F est valide ssi ¬F est insatisfaisable).
Donc on transforme ¬F en produit de clauses (FNC). On étudie la satisfaisabilité de
l’ensemble des clauses obtenu par Davis-Putnam. Si l’ensemble est insatisfaisable alors
F est valide. Si l’ensemble est satisfaisable alors F n’est pas valide.
4.
bool fonction DP ( Γ ensemble de clauses non valides, v assignation) La
fonction retourne vrai si et seulement si Γ est satisfaisable avec v modèle
de Γ s’il est satisfaisable.

1. Si ⊥ ∈ Γ , retourner(faux). Si Γ = ∅, retourner (vrai).

2. Réduire Γ (RE):il suffit d’enlever toute clause contenant une autre


clause.

3. Enlever de Γ les clauses comportant des littéraux isolés (RI). Si x


est isolé mettre v[x] = 1. Si x̄ est isolé mettre v[x] = 0. Si l’ensemble
Γ a été modifié, aller en 1.

4. Appliquer à Γ la résolution unitaire(RU).


Si x(resp x̄) est une clause unitaire sur laquelle on a appliqué RU,
mettre v[x] = 1.(resp v[x] = 0)
Si l’ensemble Γ a été modifié, aller en 1.

5. Soit x une variable quelconque de Γ


Si (DP (G[x := 0]) alors v[x] = 0 et retourner Vrai.
Si DP (G[x := 1])) alors v[x] = 1 et retourner Vrai.
Retourner Faux.

Exercice 9 . (***)
Montrez que la règle de résolution est complète pour la réfutation, autrement dit que pour tout ensemble
contradictoire de clauses Γ, il existe une preuve de l’absurde (la clause vide ) à partir des clauses de Γ
n’utilisant que la règle de résolution.

Exercice 10 .
Montrez que la règle de résolution n’est pas complète pour la déduction, c’est-à-dire qu’il existe un ensemble
Γ d’hypothèses et une conclusion C telles que Γ  C, mais C ne s’obtient pas en conclusion de résolution.

8 /9
Réponse:
Il faut donne un contre exemple, pour montrer que la résolution n’est pas complète. C’est
à dire donner un ensemble Γ et C tels que Γ  C mais Γ 6` C.
Tout simplement si on prend Γ = {a, b} et C = a + b, on a bien évidement

a, b  a + b.

Tout modèle de l’ensemble {a, b} est modèle de a + b.


Par contre on ne peut pas appliquer de résolution entre les clauses a et b. Donc {a, b 6` a + b}.

Exercice 11 .
Proposez un algorithme simple qui, étant donné un ensemble fini Γ d’hypothèses et une conclusion C,
décide si Γ ` C, en utilisant la règle de résolution.

Réponse:
Fonction Résolution : Répondre Vrai ssi Γ ` C où Γ est un ensemble de clauses et C est
une clause.

Booléen fonction RESOLUTION(Γ,C)


Si C ∈ Γ retourner Vrai.
Tant que Vrai (Boucle à l’infini)
aaaaaaaaa new = {}
aaaaaaaaa Pour tout Ci , Cj dans Γ Faire
aaaaaaaaa aaaaaaaaaaaaaa resolvantes = RES(Ci , Cj )
aaaaaaaaaaaaaa SI resolvantes contient C Alors retourner Vrai
aaaaaaaaaaaaaa new = new ∪ resolvantes
aaaaaaaaa SI new ⊂ Γ Alors retourner Faux
aaaaaaaaa Γ = Γ ∪ new

Réponse: (à une question supplémentaire)


Supposons qu’on veut répondre à la question Γ  C où Γ un ensembles de formules et C une
formules.

Booléen fonction CONSEQUENCE(Γ,C)


clauses = F N C(Γ) ∪ F N C(¬C)
Si ⊥ ∈ clauses retourner Vrai.
Tant que Vrai (Boucle à l’infini)
aaaaaaaaa new = {}
aaaaaaaaa Pour tout Ci , Cj dans clauses Faire
aaaaaaaaaaaaaa resolvantes = RES(Ci , Cj )
aaaaaaaaaaaaaa SI resolvantes contient ⊥ Alors retourner Vrai
aaaaaaaaaaaaaa new = new ∪ resolvantes
aaaaaaaaa SI new ⊂ clauses Alors retourner Faux
aaaaaaaaa clauses = clauses ∪ new

9 /9

Vous aimerez peut-être aussi