Vous êtes sur la page 1sur 11

Logique de l'IA Master01: GI, GL

Chapitre 4: Démonstration en la logique


des prédicats du premier ordre:
1. Introduction:
Dans ce chapitre, nous allons apprendre à faire des démonstrations en utilisant
une méthode qui porte le nom: La résolution. Cette méthode a initialement été
conçue pour faire des preuves en logique propositionnelle, elle a ensuite été
étendue pour qu'on soit en mesure de l'utiliser pour faire des démonstrations
même en logique des prédicats.

Nous allons commencer par présenter les concepts de base qui structurent la
résolution en donnant quelques exemples en logique propositionnelle dans un
premier temps. Nous présentons ensuite les extensions qui ont été faites sur
cette méthode (Mise sous forme prénexe, mise sous forme de Skolem, unification
de termes…) pour la rendre utilisable même en logique des prédicats.

2. Résolution sans variables:


Pour démontrer que H1, H2,…Hn Ͱ C, on a vu que nous disposons de deux alternatives:

- Utiliser la table de vérité pour vérifier que C est vraie chaque fois H1˄ H2˄ ˄Hn est
vraie.
- Utiliser le système SP0 pour démontrer que C peut être déduit à partir des
hypothèses: H1, H2,…Hn

Dans ce chapitre, nous verrons qu'il est aussi possible de faire ce genre de démonstration en
prouvant que (H1˄ H2˄ ˄ Hn ˄ ˥C) est insatifiable .

(H1˄ H2˄ ˄ Hn ˄ ˥C) est dite : insatifiable s'il est possible de déduire la clause vide (notée:□)
à partir d'elle. Autrement dit: (H1˄ H2˄ ˄ Hn ˄ ˥C) Ͱ □

Le principe de déduction (ou règle d'inférence) utilisé dans la résolution se présente comme
suit:

Si: A= f ˅p , B= g ˅˥p, tels que: f, g sont deux clauses, et p une proposition Alors:

𝐟 ˅𝐩 𝐠 ˅˥𝐩
Principe de résolution.
𝐟˅𝒈

1
Logique de l'IA Master01: GI, GL

Qui se lit comme suit: si (f ˅p) et (g ˅˥p) sont vraies , alors (f ˅g) l' est aussi.

Exemple 01:

Montrer, en utilisant le principe de résolution que :

(˥B →˥A) Ͱ (A→ B)

On pose:

H1= (˥B →˥A)

C= (A→ B)

Préparation des formules:

Dans la résolution sans variables, la préparation des formules concerne la mise sous forme
normale conjonctive (FNC) des hypothèses du départ et de la négation de la conclusion.

H1= (˥B →˥A) (Elimination de →)

= B ˅˥A

˥C= ˥(A→ B) (Elimination de →)

= A ˄ ˥B ( on a deux clauses ici)

Résolution:

Dans l'étape de résolution, on commence par écrire chaque clause, qui se dégage des
formules qui ont été préparées, sur une ligne:

C1: B ˅˥A (H1)

C2: A (Première clause de ˥C)

C3: ˥B (Deuxième clause de ˥C)

C4: ˥A (C1, C3).

C5: □ (C2, C4).

(H1˄˥C)Ͱ □ , Donc: H1ͰC

Exemple02:

Montrer, en utilisant le principe de résolution, que:

2
Logique de l'IA Master01: GI, GL

A, A→ (B→ C)Ͱ (B →C)

On pose:

H1= A

H2= A→ (B→ C)

D= B →C

Préparation des formules:

H1= A

H2= A→ (B→ C)

= A→ (˥B˅ C)

= A˅ (˥B˅ C)

= A˅ ˥B˅ C

˥D=˥( B →C)

=˥(˥B˅C)

= B˄˥C

La résolution:

C1: A (H1)

C2: A˅ ˥B˅ C (H2)

C3: B (Première clause de ˥D)

C4: ˥C (Deuxième clause de ˥D)

C5: ˥B˅ C (C1, C2)

C6: C (C3, C5)

C7: □ (C4, C6)

(H1˄ H2 ˄˥D) Ͱ □ Donc: H1, H2Ͱ D

3. Résolution avec variables:


Le mécanisme de quantification est une des raisons de la puissance mais aussi de la
complexité du calcul des prédicats. Pour pouvoir faire des démonstrations en utilisant le

3
Logique de l'IA Master01: GI, GL

principe de résolution, il faut appliquer une série de transformations aux formules de départ
(hypothèses et conclusion). Ces transformations se résument dans les points suivants:

- Mettre les formules sous forme Prénexe.


- Mettre les formules sous forme de Skolem
- Mettre les formules sous forme normale conjonctive.

Dans les paragraphes suis vont suivre, nous allons décrire en détail les opérations qui 'il faut
effectuer au niveau de chaque étape.

3.1.Préparation des formules:


3.1.1. Mettre une formule sous forme Prénexe:
Soit: A, une formule de la logique des prédicats du premier ordre. A est sous forme Prénexe
si :

A= Q1 x1 Q2 x2 Q3 x3 ……Qn xn B

Tels que:

Qi ∈{ ∀ , ∃ }

B: une formule ne contenant pas de quantificateurs.

Exemple 01:

A= ( ∀x P(x,x)→ ∀x ∀yQ(x,y))
La forme Prénexe correspondante est:

A= ∃x ∀y ∀z(˥P(x,x)˅Q(z,y))
Méthode à suivre:

Pour mettre une formule sous forme Prénexe, il faut suivre les étapes suivantes:

1.Renommer les variables qui sont quantifiées plusieurs fois dans la même formule. C'est le
cas de la variable x qui apparait dans la formule de l'exemple précédent. En remplaçant la
deuxième occurrence de x par z on obtient la formule suivante:

A= ( ∀x P(x,x)→ ∀z ∀yQ(z,y))

2.Eliminer les connecteurs {→, ↔} en utilisant les équivalences suivantes:

(A→B)≡ (˥A˅B)

4
Logique de l'IA Master01: GI, GL

(A↔B) ≡ (A→B)˄(B→A) ≡ (˥A˅B)˄(˥B˅A)

En élimant le connecteur → de la formule A, on obtient:

A= (˥( ∀x P(x,x))˅ ∀z ∀yQ(z,y))


3.Placer tous les symboles de la négation qui apparaissent dans les formules devant les
atomes (les prédicats) en utilisant les équivalences suivantes:

˥(∀x P(x))≡ ∃x ˥ P(x).

˥ (∃x P(x))≡ ∀x ˥P(x).

˥(A ˄ B) ≡ ˥A ˅ ˥B

˥(A ˅ B) ≡ ˥A ˄ ˥B

˥˥A ≡ A

En appliquant cette règle à l'exemple précédent, on obtient la formule suivante:

A= (∃x˥ P(x,x))˅ ∀z ∀yQ(z,y))


4.Placer tous les quantificateurs qui sont utilisés au début de la formule en se servant des
équivalences suivantes:

(∀x A(x) ˅ B) ≡ ∀x (A(x) ˅B)

(∃x A(x) ˅ B) ≡ ∃x (A(x) ˅B)

(B ˅ ∀x A(x)) ≡ ∀x (B˅ A(x))

(B ˅ ∃x A(x)) ≡ ∃x (B˅ A(x))

(∀x A(x) ˄ B) ≡ ∀x (A(x) ˄ B)

(∃x A(x) ˄ B) ≡ ∃x (A(x) ˄ B)

(B ˄ ∀x A(x)) ≡ ∀x (B ˄ A(x))

(B ˄ ∃x A(x)) ≡ ∃x (B ˄ A(x))

En appliquant cette règle à l'exemple précédent on obtient la formule suivante:

A= ∃x∀z ∀y (˥ P(x,x)˅ Q(z,y))

5
Logique de l'IA Master01: GI, GL

Remarque:

Chaque formule en logique des prédicats possède une forme Prénexe qui lui est équivalente.

Exemple 02:

Mettre la formule suivante sous forme Prénexe:

A= ∀x (P(x) ˄ ∀y ∃x (˥Q(x , y)→R(a , x , y))


Solution:

A= ∀x (P(x) ˄ ∀y ∃z (˥Q(x , y)→R(a , z , y)) (remplacement de la deuxième


occurrence de x par z).

A= ∀x (P(x) ˄ ∀y ∃z (˥˥Q(x , y) ˅ R(a , z , y)) (élimination de →)

A= ∀x (P(x) ˄ ∀y ∃z (Q(x , y) ˅ R(a , z , y)) (Placement des symboles de la


négation devant les formules atomiques).

A= ∀x ∀y ∃z (P(x) ˄ (Q(x , y) ˅ R(a , z , y)) (Placement des quantificateurs


au début de la formule).
3.1.2. Mettre une formule sous forme de Skolem:
Apres avoir mis les formules sous forme Prénexe, l'étape suivante consiste à les mettre sous
forme de Skolem.

Pour mettre une formule, A, sous forme de Skolem, il faut suivre les étapes suivantes:

1. Associer à chaque variable xi quantifiée par un quantificateur existentiel la liste des


variables quantifiées universellement qui la précèdent (xj1, xj2, …xjn) ainsi qu'un
symbole de fonction, par exemple f , non encore utilisé.
2. Remplacer chaque occurrence de xi dans la formule A par f(xj1, xj2, …xjn).
3. Supprimer tous les quantificateurs existentiels de A.

Exemples:

Formule Forme de Skolem correspondante


∃x P(x , f(x)) P(a , f(a))
∃x1 ∀x2 ∃x3 ∀x4 ∃x5 P(x1,x2,x3,x4,x5) ∀x2 ∀x4 P(a,x2,f(x2),x4,f(x2, x4))
∀x ∀y ∃z (P(x) ˄ (Q(x , y) ˅ R(a , z , y)) ∀x ∀y (P(x) ˄ (Q(x , y) ˅ R(a , f(x , y) , y))

Remarques:

6
Logique de l'IA Master01: GI, GL

- Si le quantificateur existentiel n'est précédé par aucun quantificateur universel, alors


la variable quantifié est remplacée par une simple constante.
- Même si la forme de Skolem As qui correspond à une formule A n'est pas une
formule équivalente à A, A et As sont toutes les deux consistantes ou toutes les deux
inconsistantes. Puis que As possède une syntaxe plus simple que A, on travaille avec
la forme de Skolem des formules plutôt qu'avec les formules de départ dans la
preuve d'inconsistance de ( H1 ˄ H2… ˄ ˥C).

3.1.3. Mettre une formule sous forme normale conjonctive (FNC):


La dernière étape de cette série de transformations concerne la mise des formules sous
forme normale conjonctive car la méthode de résolution, qu'elle soit avec ou sans variables,
travaille avec des clauses seulement. Puisque les étapes:

-Eliminations des connecteurs {→ , ↔ } et

-Déplacement des symboles de négation

on déjà été effectuées lors de la mise des formules sous forme Prénexe, il ne reste qu'une
dernière étape pour obtenir la FNC qui correspond à chaque formule, à savoir, l'application
des équivalences suivantes:

A ˅ (B ˄ C) ≡ (A ˅ B) ˄ (A ˅C)

(A ˄ B) ˅ C ≡ (A ˅ C )˄ ( B ˅ C )

3.2.Unification des termes:


3.2.1. Substitution:
Unie substitution, δ, est une application de V (ensemble des variables) dans T (ensemble des
termes).

δ = ∪{xi ← ti} / δ(xi)=ti

δ = {x ←a, y ←f(x , a)}

t = g(x , y , f (x , y)}

δ(t) = g(a , f(x , a), f( a, f (x, a)) , δ(t) désigne le terme obtenu en appliquant la substitution δ
sur t.

δ(δ (t))= g(a , f(a , a), f( a, f (a, a)).

3.2.2. Unificateur:
Unie substitution, δ, est un unificateur d'un ensemble de formules atomiques S / S={A1,
A2,…,An} si:

δ(A1)= δ(A2)= δ(A3)=… δ(An)

7
Logique de l'IA Master01: GI, GL

Exemple:

S={A1, A2}

A1 = P(x, g(a)}

A2 = P(f(y), z)

δ = {x ←f(y), z ←g(a)}

δ( A1)= P(f(y),g(a))

δ (A2)= P(f(y),g(a))

δ( A1)= δ (A2), donc, δ est un unificateur de S.

3.2.3. Algorithme d'unification de deux atomes: A, B


Début

δ= Ø / Ø désigne qu'on a aucune substitution à faire.

Tant que δ(A)≠ δ(B) faire

Déterminer le symbole le plus à gauche de δ( A), noté t1, qui soit différent du
symbole du même rang de δ( B), que l'on note t2.

Si (aucun des deux termes {t1, t2} n'est une variable, ou un des deux symboles est
contenu dans l'autre, comme y et g(x , f(y)) par exemple, alors:

A et B ne sont pas unifiables.

Arrêt.

Sinon

Si t1 est une variable alors

x= t1 , t= t2

Sinon

x= t2, t=t1.

Fin si

δ= δ ∪{ x ←t}

Fin si

Fin Tant que

8
Logique de l'IA Master01: GI, GL

Fin.

Exemple 01:

S={A, B}

A= P(x , f(g(x)) , a}

B= P(b , y , z)

Trouver la substitution δ qui unifie les formules atomiques de S.

Solution:

δ(A) δ(B) δ
P(x , f(g(x)) , a} P(b , y , z) Ø
P(b , f(g(x)) , a} P(b , y , z) {x ←b}
P(b , f(g(x)) , a} P(b , f(g(x)) , z) {x ←b, y← f(g(x)) }
P(b , f(g(x)) , a} P(b , f(g(x)) , a} {x ←b, y← f(g(x)), z ←a }
δ= {x ←b, y← f(g(x)), z ←a } est un unificateur de S.

Exemple 02:

S= {A, B}

A=P(x, f(x), a)

B=P(u, w,w)

Trouver la substitution δ qui unifie les formules atomiques de S.

Solution:

δ(A) δ(B) δ
P(x, f(x), a) P(u, w,w) Ø
P(u, f(u), a) P(u, w,w) {x ←u}

P(u, f(u), a) P(u, f(u), f(u)) {x ←u, w← f(u)}


Les termes : a et f(u) ne sont pas unifiables, donc il n'y a pas de substitution qui unifie A et B.

3.3.Principe de résolution avec variables:


La méthode de résolution avec variables repose sur l'utilisation de deux règles d'inférence, à
savoir: la règle de résolution, et la règle de diminution.

9
Logique de l'IA Master01: GI, GL

Règle de résolution:

𝒇˅𝒍𝟏 𝒈˅ ˥𝒍𝟐
Règle de résolution
𝜹(𝒇)˅𝜹(𝒈)

Tels que:

f,g: sont deux clauses.

l1, l2 sont deux formules atomiques unifiables avec δ.

Exemple01:

C1: P(x , a) ˅ R(x)

C2: ˥P(a , a) ˅ Q (y)

C3: R(a) ˅ Q (y) (C1 , C2), δ={x ← a}

La clause C3 a été obtenue en appliquant la règle de résolution sur les clauses: C1, C2 , tout
en utilisant δ comme unificateur des formules atomiques: {P(x , a), P(a , a)}

Exemple 02:

C1: P(x , f(x))

C2: ˥P(a , y) ˅ R(f(y))

C3: R(f(f(a))) (C1,C2), δ={x ← a, y← f(a)}

Règle de diminution:

𝒂˅𝒃˅𝒇
Règle de diminution
𝜹(𝒂)˅𝜹(𝒇)

Tels que:

a, b : sont deux atomes qui sont unifiables par δ.

f: une clause.

Exemple:

C1: P(x, g(y)) ˅ P( f(a), z) ˅ R(x, y z)

δ={x f(a), z ←g(y) }

δ(C1)= P(f(a), g(y)) ˅ P( f(a), g(y)) ˅ R(f(a), y , g(y))

= P( f(a), g(y)) ˅ R(f(a), y , g(y))

10
Logique de l'IA Master01: GI, GL

Remarque:

La règle de diminution est utilisée pour simplifier la syntaxe des clauses qui se composent
de plusieurs occurrences d'un même atome avec à chaque fois des arguments différents,
comme c'est le cas de la clause C1 de l'exemple précédent.

3.4.Exemple complet d'une démonstration:


Montrer, en utilisant la méthode de résolution avec variables, que:

∀x (Homme(x)→Mortel(x)), Homme(Socrate)Ͱ Mortel(Socrate)


Solution:

On pose:

H1= ∀x (Homme(x)→Mortel(x))

H2: Homme(Socrate)

C: Mortel(Socrate)

1.Préparation des formules:

Nous commençons par mettre sous forme Prénexe, sous forme de Skolem, ensuite sous FNC
des formules du départ, à savoir, les hypothèses ainsi que la négation de la conclusion.

H1= ∀x (Homme(x)→Mortel(x))

= ∀x (˥Homme(x) ˅ Mortel(x))

H2: Homme(Socrate)

˥C= ˥Mortel(Socrate)

2. La Résolution:

C1: ˥Homme(x) ˅ Mortel(x) (H1)

C2: Homme(Socrate) (H2)

C3: ˥Mortel(Socrate) ˥C)

C4: Mortel(Socrate) (C1, C2), δ={x ←Socrate}

C5: □ (C3,C4), δ=Ø.

(H1 ˄ H2˄ ˥ C)Ͱ □ donc H1, H2 Ͱ C.

11

Vous aimerez peut-être aussi