Vous êtes sur la page 1sur 21

Ministère de l’Enseignement Supérieur et de recherche scientifique

Université de Sousse

Séance de Cours

Chap. :
Preuve par réfutation en utilisant le
principe de résolution

Enseignant : MR Kamel Garrouch AU : 2020-2021


Plan du cours
1. Processus d’inférence
2. Règles d'inférence
3. Principe de résolution
4. Preuve par réfutation en utilisant le principe de résolution
4.1 Cas de la logique des propositions
4.2 Cas de la logique de prédicats
4.2.1 Preuve par réfutation cas de la logique de prédicats: exemple 1
4.2.2Preuve par réfutation cas de la logique de prédicats: exemple 2
4.3 Preuve par réfutation cas de la logique de prédicats: Répondre à des questions

2
1. Processus d’inférence
 Les algorithmes d’inférence sont des algorithmes qui permettent de déduire des formules
qui sont des conséquences logiques d’autres formules
 On note classiquement ├ la notion de dérivation par un système d'inférence.

 un algorithme d’inférence doit être correcte (sound), c-à-d.,

 toute formule déduite d’un ensemble de formules doit être une conséquence
logique de ces formules

 un algorithme d’inférence doit idéalement être complet


 il est capable de déduire toute formule qui est une conséquence logique d’autres
formules

• Les algorithmes d’inférences sont à la base d’application de raisonnement automatique.

3
2. Règles d'inférence
 Une règle d'inférence permet de produire une formule à partir d'une ou de plusieurs formules

Les règles d'inférence fournissent un moyen de faire des démonstrations ou des déductions
logiques.
Le problème est le suivant : étant donné un ensemble d'énoncés {s1, s2, ...sn} les prémices,
prouver la vérité des ( conclusion).

 L'utilisation de la table de vérité est un moyen de démonstration(sémantique).

 D'autres méthodes reposent uniquement sur les transformations syntaxiques.


Elles utilisent alors les règles d'inférences suivantes :
Modus Ponens, Modus tollens,
Chaînage, Substitution,
Conjonction, contraposée…

4
2. Règles d'inférence
Règles clés utilisées dans les démonstrateurs :
Modus ponens : De P et P → Q, on déduit Q, qui s'exprime
P
P→Q
---------Modus Ponens
Q

Modus Tollens : De  Q et P → Q, on déduit  P, qui s'exprime


Q
P→Q
----------Modus Tollens
P

Chaînage : De P → Q et Q → R, on déduit P → R, qui s'exprime


P→Q
Q→R
----------
P→R

5
3. Principe de résolution
Résolvante de deux clauses :
soit deux clauses, s1 et s2, telles que le littéral L figure dans l'une et le littéral ¬ L
figure dans l'autre (on écrira par exemple L s1, ¬ L s2),
on appelle résolvante de s1 et s2 la clause obtenu en supprimant le littéral L de l'une
et le littéral ¬ L de l'autre et en réunissant tout ce qui reste en une seules clause.

Exemple:
si s1 = ¬p ˅ q ˅ r et s2 = p q s, alors Res(s1, s2) = q r s
(on supprimera aussi en même temps les littéraux redondants).

s2 = p q s
S1 = ¬p ˅ q ˅ r

Res(s1, s2) = q r s
6
3. Principe de résolution
 C’est une règle d’inférence qui s’applique aux clauses
 Principe sur des clauses concrètes :
◦ G = G1 G2  …  Gn
◦ H = G1  H2  …  Hm
◦ K = G2  …  Gn  H2  …  Hm
K est le résolvant de G et H
 G1 et  G1 sont des littéraux complémentaires

Cette règle travaille uniquement sur des clauses.


 Il faut donc commencer par tout mettre en forme normale conjonctive

Le schéma suivant est bien une règle d'inférence :


{X A, ¬X B} |= A B (règle de résolution)

La virgule signifie

7
3. Principe de résolution
Cas particuliers

 P et P  Q se résolvent en Q (modus ponens)


 G  H et H  K se résolvent en G  K (enchaînement)
 Q et  P  Q se résolvent en P (modus tollens)

 Le principe de résolution est une règle d’inférence saine, i.e. tout résolvant est une
conséquence logique des deux clauses parentes

La résolution permet de prouver si oui ou non, une formule f2 est une


conséquence logique d’une autre formule f1

8
4.Preuve par réfutation en utilisant le principe de résolution (Robinson 1965)
Cas de la logique des propositions
Principe :
Pour montrer qu'une formule F est inconsistante, il faut et il suffit de produire la clause
vide par résolution à partir de l'ensemble des clauses issues de F mise sous forme
causale.

Le processus à utiliser pour pour montrer que KB |= A:

1) Construire la formule de réfutation


2) La mettre sous forme clausale : F
3) Construire une résolvante (tant que c'est possible) et l'ajouter à F jusqu'à
obtenir la clause vide
4) Si la clause vide est obtenue alors KB |= A

9
Preuve par réfutation en utilisant le principe de résolution
(Robinson 1965)
Cas de la logique des propositions

Pour prouver que f1 implique f2


transformer f1 en un ensemble de clauses en forme normale conjonctive
y ajouter les clauses pour ¬f2 (comme dans preuve par contradiction)
appliquer répétitivement la règle de résolution jusqu'à aboutir à la clause vide
noté  (on a prouvé que f1 implique f2)
s'il n'est plus possible d'appliquer la règle de résolution, f1 n'implique pas f2

10
Preuve par réfutation en utilisant le principe de résolution
(Robinson 1965)
Cas de la logique des propositions

…..

11
Preuve par réfutation en utilisant le principe de résolution
Cas de la logique de prédicats
Comme en logique des propositions mais en passant par l'unification

 Pour appliquer le principe de résolution à des clauses non concrètes, on définit


l’unification, afin de rechercher des littéraux complémentaires

Unification

 Deux termes t1 et t2 sont unifiables s’il existe une substitution s des variables de
t1 et t2 telle que s(t1) = s(t2)

 Exemples :

◦ pere(X,jean) s’unifie avec pere(Y,Z) si X|Y et jean|Z

◦ pere(jean,mere(X)) s’unifie avec pere(Y,mere(pierre) )si jean|Y et X|pierre

12
Preuve par réfutation en utilisant le principe de résolution
Cas de la logique de prédicats

Soit deux clauses parents L = L1  … Ln et M = M1  …  Mm:

1. Trouver un littéral Lk et un littéral Mj tel qu'il existe un UPG  tel que


Lk  = Mj 
2. la clause résolvante de L1  … Ln et M1  …  Mm est

Exemple
Clauses parents : L = chien(x)  animal(x), M = animal(y)  mourir(y)
Clause résolvante : chien(x)  mourir(x) (UPG = {y = x})

Deux clauses parents peuvent avoir plusieurs résolvants selon le choix Lk et Mj


13
Preuve par réfutation cas de la logique de prédicats: exemple 1
Tous les chiens sont des animaux

 x chien(x) animal (x)

Tous les animaux vont mourir

 y animal(y) mourir(y)

Fido est un chien

chien (Fido)

Prouver que Fido va mourir

mourir(Fido)

14
Exemple 1
Formules Forme normale conjonctive
1.  x chien(x) animal (x) 1. chien(x)  animal (x)
2.  y animal (y) mourir (y) 2.  animal (y) v mourir (y)
3. Chien (Fido) 3. Chien (Fido)
4.  mourir(Fido)

Niez la conclusion que Fido va mourir 5. chien(y)  mourir (y)


4.  mourir(Fido) 1,2 {x = y}
6. mourir (Fido)
3,5 { y= Fido}
7. 
4,6

15
Preuve par réfutation cas de la logique de prédicats: exemple 2 énoncé

1. Marcus est une personne.


 Forme logique du premier ordre :
2. Marcus est un pompéien. 1. personne(Marcus)
2. pompeien(Marcus)
3. Tous les pompéiens sont des romains.
3.  x pompeien(x)  romain(x)
4. César est un dirigeant.
4. dirigeant(Cesar)
5. Tout le monde est loyal à quelqu’un.
5.  x  y loyal(x,y)
6. Tous les romains sont loyaux à César ou
6.  x romain(x)  loyal(x,Cesar) 
le haïssent.
hait(x,Cesar)
7. Les seuls dirigeants qu’une personne 7.  x  y personne(x)  dirigeant(y) 
assassiner(x,y)   loyal(x,y)
essaie d’assassiner sont ceux auxquels
elle n’est pas loyal 8. assassiner(Marcus,Cesar)
8. Marcus a essayé d’assassiner César. Prouver hait ( Marcus, César)
Prouver que Marcus hait César
16
Preuve par réfutation cas de la logique de prédicats: exemple 2
Etape 1 Transformation en FNC
1. personne(Marcus)

2. pompeien(Marcus)

3.  pompeien(x1) v romain(x1)

4. dirigeant(Cesar)

5. loyal(x2,f1(x2))

6. romain(x4)  loyal(x4,Cesar)  hait(x4,Cesar)

7.  personne(x5) v  dirigeant(x6) v  assassiner(x5,x6) v  loyal(x5,x6)

8. assassiner(Marcus,Cesar)
Etape 2 :Ajouter les clauses de la
négation de l'expression à prouver
9.  hait (Marcus,Cesar)

17
Preuve par réfutation cas de la logique de prédicats: exemple 2
Etape 3 : Appliquer la résolution itérativement jusqu'à la clause vide
1. personne(Marcus) 10. romain(Marcus)
2. pompeien(Marcus) 2,3 {x1 = Marcus}

11. loyal(Marcus, Cesar)  hait(Marcus,Cesar)


3.  pompeien(x1) v romain(x1) 6, 10 {x4 = Marcus}
12. loyal(Marcus, Cesar))
4. dirigeant(Cesar) 9, 11

5. loyal(x2,x3)) 13.  personne(Marcus) v  dirigeant(Cesar)


v  assassiner(Marcus, Cesar)
6. romain(x4)  loyal(x4,Cesar)  hait(x4,Cesar)
7, 12 {x5 = Marcus, x = Cesar}
14.  personne(Marcus) v  dirigeant(Cesar)
7.  personne(x5) v  dirigeant(x6) v
8, 13

 assassiner(x5,x6) v  loyal(x5,x6) 15.  personne(Marcus))


4, 14
8. assassiner(Marcus,Cesar) 16.  (clause vide)
1, 15
9.  hait (Marcus,Cesar)
18
Preuve par réfutation cas de la logique de prédicats: Répondre à des questions
La résolution permet de savoir si oui ou non, f2 est une conséquence logique de f1.

On peut aussi exploiter les traces du processus de preuve pour trouver des valeurs des
variables qui permettent de déduire que f2 est une conséquence logique de f1 :

On ajoute Rep(x1, …, xn) à chaque clause de  f2, où les xi sont les variables
apparaissant dans la clause

On applique la preuve par résolution

On arrête lorsqu'on a une clause composée uniquement du littéral Rep

19
Exemple 3: Répondre à la question : qui hait César ?
1. personne(Marcus)

2. pompeien(Marcus) La 9ème clause est obtenue comme suit


-la clause à prouver est :  x hait (x, Cesar)
3.  pompeien(x1) v romain(x1)
-sa négation est : x hait (x, Cesar)

4. dirigeant(Cesar) Ce qui donne après standardisation des


variables : hait (x7, Cesar)
5. loyal(x2,f1(x2)) On ajoute : Rep (x7)

6. romain(x4)  loyal(x4,Cesar)  hait(x4,Cesar)

7.  personne(x5) v  dirigeant(x6) v

 assassiner(x5,x6) v  loyal(x5,x6)

8. assassiner(Marcus,Cesar)

9.  hait (x7,Cesar) Rep(x7)


20
Exemple 3: Répondre à la question : qui hait César ?
Etape 3 : Appliquer la résolution itérativement jusqu'à la clause vide
1. personne(Marcus) 10. romain(Marcus) 2,3 {x1 = Marcus}

2. pompeien(Marcus)
11. loyal(Marcus, Cesar)  hait(Marcus,Cesar)

3.  pompeien(x1) v romain(x1) 6, 10 {x4 = Marcus}


12. loyal(Marcus, Cesar))
4. dirigeant(Cesar) 9, 11 {x7 = Marcus}

5. loyal(x2,x3)) 13.  personne(Marcus) v  dirigeant(Cesar)


v  assassiner(Marcus, Cesar)
6. romain(x4)  loyal(x4,Cesar)  hait(x4,Cesar)
7, 12 {x5 = Marcus, x6 = Cesar}
14.  personne(Marcus) v  dirigeant(Cesar)
7.  personne(x5) v  dirigeant(x6) v
 Rep(Marcus)
8, 13
 assassiner(x5,x6) v  loyal(x5,x6)
15.  personne(Marcus)  Rep(Marcus)
8. assassiner(Marcus,Cesar) 4, 14
16. Rep(Marcus) 1, 15
9.  hait (x7,Cesar) Rep(x7)
21

Vous aimerez peut-être aussi