Vous êtes sur la page 1sur 100

Paradigmes de programmation

La programmation en logique
Domaine d'application
De la logique à Prolog
Principe de résolution
Algorithme d'unication

Programmation logique.
Chapitre1: Rappels de logique pour Prolog

Amel Boustil

Computer Science Department, FS, University M'Hamed Bougara of Boumerdes,

35000, Algeria.

10 novembre 2018

1
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application
De la logique à Prolog
Principe de résolution
Algorithme d'unication

Agenda

1 Paradigmes de programmation

2 La programmation en logique

3 Domaine d'application

4 De la logique à Prolog

5 Principe de résolution

6 Algorithme d'unication
2
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application
De la logique à Prolog
Principe de résolution
Algorithme d'unication

Paradigmes de programmation

n Paradigme Le programme son exécution consiste à


1 impératif un ensemble d'actions déclencher les actions et
séquentielles modier l'état de variables
2 applicatif une fonction (compo- évaluation de la fonction
sition) avec des paramètres eec-
tifs
3 logique un ensemble de règles lancer une résolution en te-
et de faits nant compte des règles et
de l'état de la base de faits
4 orienté objet un ensemble d'objets modier les attributs des
et méthodes (actions objets par les méthodes
qui agissent sur les ob-
jets) 3
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application
De la logique à Prolog
Principe de résolution
Algorithme d'unication

La programmation logique

Utiliser la logique comme langage de programmation

Les atouts de la programmation logique

Logique : le langage est un sous-ensemble de la logique et une


exécution est une preuve.

4
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application
De la logique à Prolog
Principe de résolution
Algorithme d'unication

La programmation logique

Utiliser la logique comme langage de programmation

Les atouts de la programmation logique

Logique : le langage est un sous-ensemble de la logique et une


exécution est une preuve.
Symbolique : les données manipulées sont principalement des
symboles.

4
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application
De la logique à Prolog
Principe de résolution
Algorithme d'unication

La programmation logique

Utiliser la logique comme langage de programmation

Les atouts de la programmation logique

Logique : le langage est un sous-ensemble de la logique et une


exécution est une preuve.
Symbolique : les données manipulées sont principalement des
symboles.
Déclaratif : le que faire plutôt que le comment faire.

4
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application
De la logique à Prolog
Principe de résolution
Algorithme d'unication

La programmation logique

Utiliser la logique comme langage de programmation

Les atouts de la programmation logique

Logique : le langage est un sous-ensemble de la logique et une


exécution est une preuve.
Symbolique : les données manipulées sont principalement des
symboles.
Déclaratif : le que faire plutôt que le comment faire.
Relationnel : un programme logique décrit un état du monde
en termes de données et de prédicats (relations) entre ces
données.

4
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application
De la logique à Prolog
Principe de résolution
Algorithme d'unication

La programmation logique

Utiliser la logique comme langage de programmation

Les atouts de la programmation logique

Logique : le langage est un sous-ensemble de la logique et une


exécution est une preuve.
Symbolique : les données manipulées sont principalement des
symboles.
Déclaratif : le que faire plutôt que le comment faire.
Relationnel : un programme logique décrit un état du monde
en termes de données et de prédicats (relations) entre ces
données.
Haut niveau : aucune gestion de la mémoire et masquage du
caractère impératif de la machine.
4
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application
De la logique à Prolog
Principe de résolution
Algorithme d'unication

Les domaines d'application de la programmation en logique

Analyse de la Langue naturelle ;

5
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application
De la logique à Prolog
Principe de résolution
Algorithme d'unication

Les domaines d'application de la programmation en logique

Analyse de la Langue naturelle ;

Intelligence articielle et modélisation des


raisonnements(Systèmes experts, le Diagnostique, etc.) ;

5
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application
De la logique à Prolog
Principe de résolution
Algorithme d'unication

Les domaines d'application de la programmation en logique

Analyse de la Langue naturelle ;

Intelligence articielle et modélisation des


raisonnements(Systèmes experts, le Diagnostique, etc.) ;

Bases de données ;

5
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application
De la logique à Prolog
Principe de résolution
Algorithme d'unication

Les domaines d'application de la programmation en logique

Analyse de la Langue naturelle ;

Intelligence articielle et modélisation des


raisonnements(Systèmes experts, le Diagnostique, etc.) ;

Bases de données ;

Prototypage ;

5
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application
De la logique à Prolog
Principe de résolution
Algorithme d'unication

Les domaines d'application de la programmation en logique

Analyse de la Langue naturelle ;

Intelligence articielle et modélisation des


raisonnements(Systèmes experts, le Diagnostique, etc.) ;

Bases de données ;

Prototypage ;

Compilation ;

5
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application
De la logique à Prolog
Principe de résolution
Algorithme d'unication

Les domaines d'application de la programmation en logique

Analyse de la Langue naturelle ;

Intelligence articielle et modélisation des


raisonnements(Systèmes experts, le Diagnostique, etc.) ;

Bases de données ;

Prototypage ;

Compilation ;

Automates formels déterministes et non-déterministes ;

5
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application
De la logique à Prolog
Principe de résolution
Algorithme d'unication

Les domaines d'application de la programmation en logique

Analyse de la Langue naturelle ;

Intelligence articielle et modélisation des


raisonnements(Systèmes experts, le Diagnostique, etc.) ;

Bases de données ;

Prototypage ;

Compilation ;

Automates formels déterministes et non-déterministes ;

Vérication de programmes, etc.

5
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Logique propositionnelle
De la logique à Prolog Logique des prédicats
Principe de résolution
Algorithme d'unication

Logique Classique

Logique classique englobe


la logique d'ordre Zéro (logique propositionnelle) ;

la logique du premier ordre(logique des prédicats).

6
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Logique propositionnelle
De la logique à Prolog Logique des prédicats
Principe de résolution
Algorithme d'unication

Logique propositionnelle

Dans la logique propositionnelle, on étudie les relations entre des


énoncés (propositions) par l'intermédiaire de connecteurs logiques :
la conjonction, la disjonction, l'implication, l'équivalence et la
négation.

Une proposition

Une proposition est un énoncé du langage ordinaire qui peut être


vrai ou faux mais pas les deux.

Exemple

La Terre est plate : on peut sans problème attribuer la valeur faux à


cet énoncé.
7
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Logique propositionnelle
De la logique à Prolog Logique des prédicats
Principe de résolution
Algorithme d'unication

Logique propositionnelle

On va étudier la syntaxe(alphabet, les formules bien formées) et la


sémantique de ce language.

Alphabet

un ensemble V = {p, q, r, . . .} dénombrable et inni de lettres


appelées variables propositionnelles. Il s'agit des propositions
atomiques telles que par exemple :la terre est plate.

8
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Logique propositionnelle
De la logique à Prolog Logique des prédicats
Principe de résolution
Algorithme d'unication

Logique propositionnelle

On va étudier la syntaxe(alphabet, les formules bien formées) et la


sémantique de ce language.

Alphabet

un ensemble V = {p, q, r, . . .} dénombrable et inni de lettres


appelées variables propositionnelles. Il s'agit des propositions
atomiques telles que par exemple :la terre est plate.
les constantes vrai et faux.

8
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Logique propositionnelle
De la logique à Prolog Logique des prédicats
Principe de résolution
Algorithme d'unication

Logique propositionnelle

On va étudier la syntaxe(alphabet, les formules bien formées) et la


sémantique de ce language.

Alphabet

un ensemble V = {p, q, r, . . .} dénombrable et inni de lettres


appelées variables propositionnelles. Il s'agit des propositions
atomiques telles que par exemple :la terre est plate.
les constantes vrai et faux.

un ensemble (ni) de connecteurs logiques : ∨, ∧, −→, ←→, ¬.

8
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Logique propositionnelle
De la logique à Prolog Logique des prédicats
Principe de résolution
Algorithme d'unication

Logique propositionnelle

On va étudier la syntaxe(alphabet, les formules bien formées) et la


sémantique de ce language.

Alphabet

un ensemble V = {p, q, r, . . .} dénombrable et inni de lettres


appelées variables propositionnelles. Il s'agit des propositions
atomiques telles que par exemple :la terre est plate.
les constantes vrai et faux.

un ensemble (ni) de connecteurs logiques : ∨, ∧, −→, ←→, ¬.


les parenthèses :(, ).

8
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Logique propositionnelle
De la logique à Prolog Logique des prédicats
Principe de résolution
Algorithme d'unication

Logique propositionnelle
Syntaxe ou formule bien formée

toutes les propositions atomiques, i.e. p, q, r, . . . , sont des


expressions bien formées ;

Par exemple (((¬p ←→ q) ∧ (r ∨ s)) −→ q) est une expression


bien formée, tandis que p¬qr −→ t(−→ ne l'est pas. 9
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Logique propositionnelle
De la logique à Prolog Logique des prédicats
Principe de résolution
Algorithme d'unication

Logique propositionnelle
Syntaxe ou formule bien formée

toutes les propositions atomiques, i.e. p, q, r, . . . , sont des


expressions bien formées ;

si A est une expression bien formée, alors ¬A est une


expression bien formée ;

Par exemple (((¬p ←→ q) ∧ (r ∨ s)) −→ q) est une expression


bien formée, tandis que p¬qr −→ t(−→ ne l'est pas. 9
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Logique propositionnelle
De la logique à Prolog Logique des prédicats
Principe de résolution
Algorithme d'unication

Logique propositionnelle
Syntaxe ou formule bien formée

toutes les propositions atomiques, i.e. p, q, r, . . . , sont des


expressions bien formées ;

si A est une expression bien formée, alors ¬A est une


expression bien formée ;

si A et B sont deux expressions bien formées, alors


(A ∧ B), (A ∨ B), (A −→ B)et(A ←→ B) sont des expressions
bien formées ;

Par exemple (((¬p ←→ q) ∧ (r ∨ s)) −→ q) est une expression


bien formée, tandis que p¬qr −→ t(−→ ne l'est pas. 9
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Logique propositionnelle
De la logique à Prolog Logique des prédicats
Principe de résolution
Algorithme d'unication

Logique propositionnelle
Syntaxe ou formule bien formée

toutes les propositions atomiques, i.e. p, q, r, . . . , sont des


expressions bien formées ;

si A est une expression bien formée, alors ¬A est une


expression bien formée ;

si A et B sont deux expressions bien formées, alors


(A ∧ B), (A ∨ B), (A −→ B)et(A ←→ B) sont des expressions
bien formées ;

il n'y a pas d'autres expressions bien formées que celles des


règles précédentes.

Par exemple (((¬p ←→ q) ∧ (r ∨ s)) −→ q) est une expression


bien formée, tandis que p¬qr −→ t(−→ ne l'est pas. 9
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Logique propositionnelle
De la logique à Prolog Logique des prédicats
Principe de résolution
Algorithme d'unication

Logique propositionnelle

Sémantique de la logique propositionnelle

Une interprétation du calcul propositionnel consiste à donner :

Domaine sémantique non vide D

Valuation des atomes dans D

Dénition des connecteurs par des applications de D dans D


pour ¬ et de D*D dans D pour ∨, ∧, −→, ←→ .

Interprétation classique de la logique des propositions pour


lequel D = {V, F}

Tout atome est vrai ou faux mais pas les deux à la fois

Dénition des connecteurs par des tables de vérité.

10
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Logique propositionnelle
De la logique à Prolog Logique des prédicats
Principe de résolution
Algorithme d'unication

Logique propositionnelle

Exemple d'interprétation
soit la formule G = P → (Q ∨ (¬R))
Si l'interpretation i :
i(P)=vrai
i(Q)=faux
i((R)=faux
donc i(G)= vrai.

11
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Logique propositionnelle
De la logique à Prolog Logique des prédicats
Principe de résolution
Algorithme d'unication

Logique des prédicats

La logique propositionnelle :

Ne permet de décrire des constructions simples du


langages.
elle est relativement peu expressives.
elle est Insusante pour représenter des procédés de langage
eectivement utilisés en informatique, linguistique ou en
mathématiques comme :
Tous les étudiants assistent au cours PL.

12
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Logique propositionnelle
De la logique à Prolog Logique des prédicats
Principe de résolution
Algorithme d'unication

Logique des prédicats

La logique propositionnelle :

Ne permet de décrire des constructions simples du


langages.
elle est relativement peu expressives.
elle est Insusante pour représenter des procédés de langage
eectivement utilisés en informatique, linguistique ou en
mathématiques comme :
Tous les étudiants assistent au cours PL.
Certains étudiants assistent à tous les cours.

12
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Logique propositionnelle
De la logique à Prolog Logique des prédicats
Principe de résolution
Algorithme d'unication

Logique des prédicats

La logique propositionnelle :

Ne permet de décrire des constructions simples du


langages.
elle est relativement peu expressives.
elle est Insusante pour représenter des procédés de langage
eectivement utilisés en informatique, linguistique ou en
mathématiques comme :
Tous les étudiants assistent au cours PL.
Certains étudiants assistent à tous les cours.
Aucun étudiant n'assiste à un cours intéressant.

12
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Logique propositionnelle
De la logique à Prolog Logique des prédicats
Principe de résolution
Algorithme d'unication

Logique des prédicats

La logique propositionnelle :

Ne permet de décrire des constructions simples du


langages.
elle est relativement peu expressives.
elle est Insusante pour représenter des procédés de langage
eectivement utilisés en informatique, linguistique ou en
mathématiques comme :
Tous les étudiants assistent au cours PL.
Certains étudiants assistent à tous les cours.
Aucun étudiant n'assiste à un cours intéressant.
Le cours de PL est intéressant.

12
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Logique propositionnelle
De la logique à Prolog Logique des prédicats
Principe de résolution
Algorithme d'unication

Logique des prédicats

La logique propositionnelle :

Ne permet de décrire des constructions simples du


langages.
elle est relativement peu expressives.
elle est Insusante pour représenter des procédés de langage
eectivement utilisés en informatique, linguistique ou en
mathématiques comme :
Tous les étudiants assistent au cours PL.
Certains étudiants assistent à tous les cours.
Aucun étudiant n'assiste à un cours intéressant.
Le cours de PL est intéressant.
Un cours intéressant attire de nombreux étudiants.
12
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Logique propositionnelle
De la logique à Prolog Logique des prédicats
Principe de résolution
Algorithme d'unication

Logique des prédicats


Alphabet

les connecteurs : ∨, ∧, →, ↔, ¬.
les délimiteurs : les parenthèses (, ).

les deux constantes propositionelles V(vrai) et F(faux).

les constantes(minuscules de l'alphabet latin et les


concaténations de telles lettres) C = {a, b, c,...z, aa,...}

les variables(majuscules de l'alphabet latin, et les


concaténations de telles lettres) V = {A, B, Z, AA..}

les prédicats(majuscules P). L'arîté d'un prédicat est le


nombre d'argument du prédicat. Si le prédicat est d'arité 0, il
correspond à la notion de proposition de la logique des
propositions.
13
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Logique propositionnelle
De la logique à Prolog Logique des prédicats
Principe de résolution
Algorithme d'unication

Logique des prédicats

Alphabet (suite)

les fonctions(en minuscules : f, g sucesseur). Chaque symbole


de fonction a une arité xée. L'arité d'une fonction est le
nombre d'argument de la fonction. Si la fonction est d'arité 0,
elle correspond à la notion de constante.

les quanticateurs :
∃ prononcé (il existe est) le quanticateur existentiel
∀ prononcé (quel que soit) est le quanticateur universel

14
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Logique propositionnelle
De la logique à Prolog Logique des prédicats
Principe de résolution
Algorithme d'unication

Logique des prédicats

Exemples
César était un homme
HOMME(césar)

Tous les hommes étaient des romains


∀X ((HOMME (X ) −→ ROMAIN(X ))
Tous les hommes étaient dèles à César
∀X ((HOMME (X ) −→ FIDELE (X , cesar ))
Chacun est dèle à quelqu'un
∀X ∃ Y FIDELE (X , Y )
Marcus a essayé d'assassiner César
ESSAYER _ASSASSINER(marcus, cesar )
15
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Logique propositionnelle
De la logique à Prolog Logique des prédicats
Principe de résolution
Algorithme d'unication

Logique des prédicats

Les termes

Tout terme est engendré par application des deux lois suivantes :

les constantes et les variables sont des termes

si f est un symbole de fonction d'arité n (n>=1) et si t1..tn


sont des termes alors f(t1..tn) est un terme

Exemple :
poids(b)est un terme
successeur(poids(b))est un terme
P(X, bleu) n'est pas un terme
poids(P(X))n'est pas un terme

16
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Logique propositionnelle
De la logique à Prolog Logique des prédicats
Principe de résolution
Algorithme d'unication

Logique des prédicats

Les atomes

tout atome est engendré par l'application des deux lois suivantes

les propositions sont des atomes

si P est un prédicat d'arité n (n >=1) et si t1..tn sont des


termes alors P(t1..tn) est un atome.

Exemple
P(X, bleu)est un atome
ENTRE(table,X, poids(X))est un atome
successeur(X)n'est pas un atome

17
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Logique propositionnelle
De la logique à Prolog Logique des prédicats
Principe de résolution
Algorithme d'unication

Logique des prédicats


Syntaxe ou formule bien formée

Les atomes sont des fbfs

si F et G sont des fbfs


alors(¬G ), (F ∧ G ), (F ∨ G ), (F → G )et(F ↔ G ) sont des fbfs

si G est une fbf et X une variable alors ∀(X )G et ∃(X )G sont


des fbfs.

toutes les fbfs sont obtenues par application des 3 règles


ci-dessus.

Exemples :
(∃X )(∀Y )(P(X , Y ) ∧ Q(X , Y ) −→ R(X )) est une fbfs
(b, (f (a))) n'est pas une fbfs
Ordre de priorité des connecteurs (Le plus prioritaire)
¬, ∀, ∃, ∧, ∨, →, ↔ . 18
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Logique propositionnelle
De la logique à Prolog Logique des prédicats
Principe de résolution
Algorithme d'unication

Logique des prédicats

Sémantique

Une interprétation d'une fbf G est dénie par les cinq étapes
suivantes :

Choix d'un domaine d'interprétation non vide D

Assignation à chaque constante de G d'un élément de D

Assignation à chaque proposition de G d'un élément de V, F

Assignation à chaque prédicat d'arité n (n>=1) d'une


application de Dn dans V, F

Assignation à chaque fonction d'arité (n>=1) d'une


application de Dn dans D

19
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Logique propositionnelle
De la logique à Prolog Logique des prédicats
Principe de résolution
Algorithme d'unication

Logique des prédicats

Remarque
0
Si G=∀(X )G , la valeur de G sera V, si la valeur de G' selon
l'interpretation i pour toutes les valeurs de la variable (dans D)
est V sinon la valeur de G sera F.
0
Si G =∃(X )G , la valeur de G sera V si la valeur de G' selon
l'interpretation i pour au moins une valeur de X (dans D) est
V sinon la valeur de G sera F

Si G est de la forme
(¬G 0 ) ou (G 0 ∨ G ”) ou (G 0 ∧ G ”) ou (G 0 → G ”) ou (G 0 ↔
G ”), les connecteurs gardent la même sémantique qu'en calcul
propositionnel, au moyen des tables de vérité.

20
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Logique propositionnelle
De la logique à Prolog Logique des prédicats
Principe de résolution
Algorithme d'unication

Logique des prédicats

Exemple1
Soit la fbf :
G = ∀(X )∃(Y )Q(X , Y )
Soit une interprétation i de G
i : D = {1, 3} ou
i[Q(1, 1)] = F
i[Q(1, 3)] = V
i[Q(3, 1)] = V
i[Q(3, 3)] = F

21
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Logique propositionnelle
De la logique à Prolog Logique des prédicats
Principe de résolution
Algorithme d'unication

Logique des prédicats

Exemple1
Soit la fbf :
G = ∀(X )∃(Y )Q(X , Y )
Soit une interprétation i de G
i : D = {1, 3} ou
i[Q(1, 1)] = F
i[Q(1, 3)] = V
i[Q(3, 1)] = V
i[Q(3, 3)] = F
donc i(G)=V

21
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Logique propositionnelle
De la logique à Prolog Logique des prédicats
Principe de résolution
Algorithme d'unication

Logique des prédicats


Exemple2
Soit la fbf : G 2 = ∀(X )P(X ) ∨ Q(X )
Soit une interprétation i de G2
i : D = {amine, cesar , yacine}ou
i[P(amine)] = F i[Q(amine)] = F
i[P(cesar )] = V i[Q(cesar )] = V
i[P(yacine)] = F i[Q(yacine)] = F
Pour X=amine : P(X ) ∨ Q(X ) = F
Pour X=cesar :P(X ) ∨ Q(X ) = F
Pour X=yacine : P(X ) ∨ Q(X ) = F

22
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Logique propositionnelle
De la logique à Prolog Logique des prédicats
Principe de résolution
Algorithme d'unication

Logique des prédicats


Exemple2
Soit la fbf : G 2 = ∀(X )P(X ) ∨ Q(X )
Soit une interprétation i de G2
i : D = {amine, cesar , yacine}ou
i[P(amine)] = F i[Q(amine)] = F
i[P(cesar )] = V i[Q(cesar )] = V
i[P(yacine)] = F i[Q(yacine)] = F
Pour X=amine : P(X ) ∨ Q(X ) = F
Pour X=cesar :P(X ) ∨ Q(X ) = F
Pour X=yacine : P(X ) ∨ Q(X ) = F

donc i(G2)=F
22
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Principe de résolution en logique des propositions

Le principe de résolution est une méthode automatique pour


montrer la validité d'une formule.

Notion de clause

Une clause est une fbf qui a la forme d'une disjonction de


littéraux.

Un littéral est un atome ou la négation d'un atome.

Cas particulier : un littéral isolé est une clause.

Exemple de clauses :
A ∨ B ∨ C ∨ ¬D est une CLAUSE
¬D est une CLAUSE
23
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Principe de résolution en logique des propositions

Comment obtenir à partir d'une formule bien formée un ensemble


de clauses

Transformer la formule en sa forme normale conjonctive


(f 1 ∧ f 2 ∧ .... ∧ fn, chaque  est une disjonction de littéraux) :
On élimine les → et ↔
On développe le ¬ et on élimine les ¬¬
On regroupe les ∨ en utilisant la distributivité
Eliminer les connecteurs ∧.
Exemple :soit f = (A ∧ ¬(B ∨ ¬C )) → (¬B → (D ∨ B))

24
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Principe de résolution en logique des propositions

Comment obtenir à partir d'une formule bien formée un ensemble


de clauses

Transformer la formule en sa forme normale conjonctive


(f 1 ∧ f 2 ∧ .... ∧ fn, chaque  est une disjonction de littéraux) :
On élimine les → et ↔
On développe le ¬ et on élimine les ¬¬
On regroupe les ∨ en utilisant la distributivité
Eliminer les connecteurs ∧.
Exemple :soit f = (A ∧ ¬(B ∨ ¬C )) → (¬B → (D ∨ B))
On obtient la formule équivalente suivante :

24
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Principe de résolution en logique des propositions

Comment obtenir à partir d'une formule bien formée un ensemble


de clauses

Transformer la formule en sa forme normale conjonctive


(f 1 ∧ f 2 ∧ .... ∧ fn, chaque  est une disjonction de littéraux) :
On élimine les → et ↔
On développe le ¬ et on élimine les ¬¬
On regroupe les ∨ en utilisant la distributivité
Eliminer les connecteurs ∧.
Exemple :soit f = (A ∧ ¬(B ∨ ¬C )) → (¬B → (D ∨ B))
On obtient la formule équivalente suivante :
donc l'ensemble de clauses est

24
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Principe de résolution en logique des propositions


Clause résolvante

Si C1 et C2 sont 2 clauses et si L1 = ¬L2 et L1 est dans C1 et L2


est dans C2. C est la disjonction des clauses restantes après
suppression des littéraux L1 et L2. Elle est appelée clause
résolvante (résolvant de C1 et de C2).

Exemple1 :
C1 : E1 ∨ E2 et C2 : ¬E 2 ∨ E 3
Le résolvant de C1 et de C2 est C= E1 ∨ E3
Exemple2 :
C1 : P et C2 : ¬P . Le résolvant de C1 et de C2 est C= ∅ la clause
vide
Le résolvant C de deux clauses C1 et C2 est une conséquence
logique de C1 et de C2 25
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Algorithme de résolution

On appelle déduction (ou résolution) d'une clause C à partir d'un


ensemble de clauses S une séquence nie R1, R2,... Rn = C de
clauses telle que chaque Ri est :

soit une clause de S

soit un résolvant de clauses le précédant

On appelle réfutation la déduction de la clause vide Ø à partir de S

Montrer qu'une formule bien formée F est valide :

C'est équivalent à montrer que ¬F est inconsistante (S¬F


insatisable)

C'est aussi équivalent à monter qu'il existe une déduction de la


clause vide Ø 26
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Algorithme de résolution

Algorithm 1 Algorithme de résolution


1: Ecrire la négation de F ;
2: Mettre F sous forme d'un ensemble de clauses ;
3: while la clause ∅ n0 est pas rencontree et il existe des paires reductible
do
4: Chercher des clauses résolvantes ;
5: Ajouter ce résultat à la liste des clauses ;
6: end while
7: if on trouve la clause vide then
8: F est valide
9: else
10: F est invalide
11: end if ;
27
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Principe de résolution en logique des propositions


Exemple1 :
SoitS = ¬F = {¬P ∨ ¬Q ∨ R, ¬R, P, ¬T ∨ Q, T }
S = {C 1, C 2, C 3, C 4, C 5}
Montrons que cet ensemble est insatisable
C 1 = ¬P ∨ ¬Q ∨ R C 2 = ¬R ⇒ C 6 = ¬P ∨ ¬Q
C 6 = ¬P ∨ ¬Q C 3 = P ⇒ C 7 = ¬Q
C 7 = ¬Q C 4 = ¬T ∨ Q ⇒ C 8 = ¬T
C 8 = ¬T C5 = T ⇒ C9 = ∅
A partir de l'ensemble des clauses de la fbf ¬F on a déduit la
clause vide donc on peut conclure que ¬F est insatisable et donc
que F est valide.
Exemple2 : A vous de jouer ! ! !
Démontrer que F = ((P → Q) ∧ (¬P → R)) → (Q ∨ R) est
valide ? 28
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Principe de résolution en logique des prédicats

Objectif :
Transformer une fbf sous la forme "ensemble de clauses"
pour pouvoir appliquer le principe de la résolution déni dans
la logique propositionnelle.

29
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Principe de résolution en logique des prédicats

Objectif :
Transformer une fbf sous la forme "ensemble de clauses"
pour pouvoir appliquer le principe de la résolution déni dans
la logique propositionnelle.

Comment ?

Déterminer la forme normale prénexe

Déterminer la forme normale de Skolem

Déterminer la forme clausale

29
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Forme normale prénexe

Forme normale prénexe

une fbf en logique des prédicats est dite en forme prénexe(fnp) ssi
elle est de la forme : (Q1 X1) (Q2 X2) ... (Qn Xn) M(X1,X2,...,Xn)
où chaque (Qi Xi) est soit ∀Xi soit ∃Xi et M est une fbf ne
contenant aucun quanticateur.

Exemples

∀X ∃Y ∀Z (P(X ) ∧ ¬Q(Y , Z ) ∧ P(f (Y ))) est en fnp


∀XP(X ) ∧ ∃YQ(Y , X )) n'est pas en fnp

30
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Forme normale prénexe

Méthode de transformation d'une fbf en fnp


1 Eliminer les connecteurs→ et ↔
(G ↔ F ) : (G → F ) ∧ (F → G )
(G → F ) : (¬G ∨ F )

31
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Forme normale prénexe

Méthode de transformation d'une fbf en fnp


1 Eliminer les connecteurs→ et ↔
(G ↔ F ) : (G → F ) ∧ (F → G )
(G → F ) : (¬G ∨ F )
2 Accoler les connecteurs ¬ aux atomes concernés
¬(¬G ) = G
¬(F ∨ G ) = ¬F ∧ ¬G
¬(F ∧ G ) = ¬F ∨ ¬G
¬((∀X )P(X )) = (∃X )¬P(X )
¬((∃X )P(X )) = (∀X )¬P(X )

31
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Forme normale prénexe

3 Renommer les variables liées (par un quanticateur) si


nécessaire de sorte que chaque quanticateur gouverne une
variable originale
(∀X )P(X ) = (∀Y )P(Y )
(∃X )P(X ) = (∃Y )P(Y )

32
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Forme normale prénexe

3 Renommer les variables liées (par un quanticateur) si


nécessaire de sorte que chaque quanticateur gouverne une
variable originale
(∀X )P(X ) = (∀Y )P(Y )
(∃X )P(X ) = (∃Y )P(Y )
4 Déplacer tous les quanticateurs à gauche de la formule (sans
changer l'ordre relatif )
((Q 1X )F (X )) ∨ ((Q 2Y )H(Y )) =
(Q 1X )(Q 2Y )(F (X ) ∨ (H(Y ))
((Q 1X )F (X )) ∧ ((Q 2Y )H(Y )) =
(Q 1X )(Q 2Y )(F (X ) ∧ (H(Y )).

32
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Forme normale prénexe

Exemple1 :
(∀XP(X )) → (∃XQ(X ))

= (¬((∀X )P(X ))) ∨ (∃X )Q(X )

= (∃X )¬P(X )) ∨ (∃Y )Q(Y )

= (∃X )(∃Y )(¬P(X ) ∨ Q(Y ))

33
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Forme normale prénexe

Exemple1 :
(∀XP(X )) → (∃XQ(X ))

= (¬((∀X )P(X ))) ∨ (∃X )Q(X )

= (∃X )¬P(X )) ∨ (∃Y )Q(Y )

= (∃X )(∃Y )(¬P(X ) ∨ Q(Y ))

Exemple2 : A vous de jouer ! ! !


(∃X (P(X ) → Q(X ))) → (∀XP(X ) → ∃XQ(X ))

33
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Forme normale prénexe

Exemple1 :
(∀XP(X )) → (∃XQ(X ))

= (¬((∀X )P(X ))) ∨ (∃X )Q(X )

= (∃X )¬P(X )) ∨ (∃Y )Q(Y )

= (∃X )(∃Y )(¬P(X ) ∨ Q(Y ))

Exemple2 : A vous de jouer ! ! !


(∃X (P(X ) → Q(X ))) → (∀XP(X ) → ∃XQ(X ))

33
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Méthode de Skolémisation

Objectif : obtenir une formule équivalente sans les quanticateurs


existentiels.

Soit : G' = (Q1 X1)... (Qn Xn) M(X1, X2,... Xn) fnp de G
On obtient une forme standard de Skolem par les transformations
suivantes :

Eliminer les quanticateurs existentiels.


Soit Qr un existentiel dans le préxe de G' (On opère de la
gauche vers la droite)

34
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Méthode de Skolémisation

Objectif : obtenir une formule équivalente sans les quanticateurs


existentiels.

Soit : G' = (Q1 X1)... (Qn Xn) M(X1, X2,... Xn) fnp de G
On obtient une forme standard de Skolem par les transformations
suivantes :

Eliminer les quanticateurs existentiels.


Soit Qr un existentiel dans le préxe de G' (On opère de la
gauche vers la droite)
1 Si aucun quanticateur universel n'apparaît avant Qr
c'est-à-dire dans (Q1 X1) ... (Qr-1 Xr-1)

34
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Méthode de Skolémisation

Objectif : obtenir une formule équivalente sans les quanticateurs


existentiels.

Soit : G' = (Q1 X1)... (Qn Xn) M(X1, X2,... Xn) fnp de G
On obtient une forme standard de Skolem par les transformations
suivantes :

Eliminer les quanticateurs existentiels.


Soit Qr un existentiel dans le préxe de G' (On opère de la
gauche vers la droite)
1 Si aucun quanticateur universel n'apparaît avant Qr
c'est-à-dire dans (Q1 X1) ... (Qr-1 Xr-1)
on choisit un symbole de constante c diérent de toute
constante apparaîssant dans la matrice M

34
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Méthode de Skolémisation

Objectif : obtenir une formule équivalente sans les quanticateurs


existentiels.

Soit : G' = (Q1 X1)... (Qn Xn) M(X1, X2,... Xn) fnp de G
On obtient une forme standard de Skolem par les transformations
suivantes :

Eliminer les quanticateurs existentiels.


Soit Qr un existentiel dans le préxe de G' (On opère de la
gauche vers la droite)
1 Si aucun quanticateur universel n'apparaît avant Qr
c'est-à-dire dans (Q1 X1) ... (Qr-1 Xr-1)
on choisit un symbole de constante c diérent de toute
constante apparaîssant dans la matrice M
on supprime Qr Xr du préxe
34
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Méthode de Skolémisation

Objectif : obtenir une formule équivalente sans les quanticateurs


existentiels.

Soit : G' = (Q1 X1)... (Qn Xn) M(X1, X2,... Xn) fnp de G
On obtient une forme standard de Skolem par les transformations
suivantes :

Eliminer les quanticateurs existentiels.


Soit Qr un existentiel dans le préxe de G' (On opère de la
gauche vers la droite)
1 Si aucun quanticateur universel n'apparaît avant Qr
c'est-à-dire dans (Q1 X1) ... (Qr-1 Xr-1)
on choisit un symbole de constante c diérent de toute
constante apparaîssant dans la matrice M
on supprime Qr Xr du préxe
on remplace Xr par c dans la matrice M 34
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Méthode de Skolémisation

Eliminer les quanticateurs existentiels.

1 Si aucun quanticateur universel n'apparaît avant Qr


Exemple : si (∃X )(∀Y )(P(X ) ∨ Q(Y )),
on choisit la constante a par X ce qui donne :
(∀Y )(P(a) ∨ Q(Y ))
2 Si Qs1 Qs2... Qsm sont m quanticateurs universels
apparaîssant avant Qr dans le préxe
on choisit un symbole de fonction f d'arîté m diérent de
toute fonction apparaîssant dans la matrice M
on supprime QrXr du préxe
on remplace tout Xr dans M par f(Xs1, Xs2,... Xsm)
On itère le processus jusqu'à ce qu'il n'y ait plus de
quanticateur existentiel dans le préxe.
35
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Méthode de Skolémisation

Exemple

∃X ∃Y ∀Z ∀T ∃V (P(X , Y , Z , T , V )) La formule Standard de

Skolem équivalente (fss) est :

36
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Méthode de Skolémisation

Exemple

∃X ∃Y ∀Z ∀T ∃V (P(X , Y , Z , T , V )) La formule Standard de

Skolem équivalente (fss) est :


∀Z ∀T (P(a, b, Z , T , f (Z , T )))

36
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Passage sous forme de clause

Objectif : Obtention d'un ensemble de clauses

Soit Gs une forme standard de Skolem d'une fbf G

Eliminer tous les quanticateurs

Passer sous forme normale conjonctive

Eliminer les connecteurs


La conjonction de clauses obtenues est considérée comme un
ensemble de clauses S

37
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Exemple1 :

∃X ((P(X ) ∨ Q(X )) → H(X ))

38
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Exemple1 :

∃X ((P(X ) ∨ Q(X )) → H(X ))


∃X (¬P(X ) ∧ ¬Q(X )) ∨ H(X ) fnp

38
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Exemple1 :

∃X ((P(X ) ∨ Q(X )) → H(X ))


∃X (¬P(X ) ∧ ¬Q(X )) ∨ H(X ) fnp

(¬P(a) ∧ ¬Q(a)) ∨ H(a)) fss

38
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Exemple1 :

∃X ((P(X ) ∨ Q(X )) → H(X ))


∃X (¬P(X ) ∧ ¬Q(X )) ∨ H(X ) fnp

(¬P(a) ∧ ¬Q(a)) ∨ H(a)) fss

(¬P(a) ∨ H(a)) ∧ (¬Q(a) ∨ H(a)) fc

38
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Exemple1 :

∃X ((P(X ) ∨ Q(X )) → H(X ))


∃X (¬P(X ) ∧ ¬Q(X )) ∨ H(X ) fnp

(¬P(a) ∧ ¬Q(a)) ∨ H(a)) fss

(¬P(a) ∨ H(a)) ∧ (¬Q(a) ∨ H(a)) fc

les clauses sont :


{¬P(a) ∨ H(a), ¬Q(a) ∨ H(a)}

38
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Exemple1 :

∃X ((P(X ) ∨ Q(X )) → H(X ))


∃X (¬P(X ) ∧ ¬Q(X )) ∨ H(X ) fnp

(¬P(a) ∧ ¬Q(a)) ∨ H(a)) fss

(¬P(a) ∨ H(a)) ∧ (¬Q(a) ∨ H(a)) fc

les clauses sont :


{¬P(a) ∨ H(a), ¬Q(a) ∨ H(a)}

38
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Principe de résolution en logique des propositions
De la logique à Prolog Principe de résolution en logique des prédicats
Principe de résolution
Algorithme d'unication

Exemple1 :

∃X ((P(X ) ∨ Q(X )) → H(X ))


∃X (¬P(X ) ∧ ¬Q(X )) ∨ H(X ) fnp

(¬P(a) ∧ ¬Q(a)) ∨ H(a)) fss

(¬P(a) ∨ H(a)) ∧ (¬Q(a) ∨ H(a)) fc

les clauses sont :


{¬P(a) ∨ H(a), ¬Q(a) ∨ H(a)}
Exemple2 :
∀XP(X ) ∧ ∀Y (Q(Y ) ∧ ∃ZR(Y , Z )) c'est à vous de jouer ! ! !

38
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Substitution
De la logique à Prolog Unication
Principe de résolution
Algorithme d'unication

Algorithme d'unication

L'unication est le procédé qui permet rendre des expressions


identiques symboliquement pour pouvoir appliquer le principe de la
résolution.

Exemple
Soient C 1 = P(X ) ∨ Q(a, X ) et C 2 = ¬P(g (Y )) ∨ R(Y , b)
Peut-on dénir un résolvant ?

39
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Substitution
De la logique à Prolog Unication
Principe de résolution
Algorithme d'unication

Algorithme d'unication

L'unication est le procédé qui permet rendre des expressions


identiques symboliquement pour pouvoir appliquer le principe de la
résolution.

Exemple
Soient C 1 = P(X ) ∨ Q(a, X ) et C 2 = ¬P(g (Y )) ∨ R(Y , b)
Peut-on dénir un résolvant ?
Si [g (a)/X ]et[a/Y ] on obtient :
C 10 = P(g (a)) ∨ Q(a, g (a))
C 20 = ¬P(g (a)) ∨ R(a, b)

39
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Substitution
De la logique à Prolog Unication
Principe de résolution
Algorithme d'unication

Algorithme d'unication

L'unication est le procédé qui permet rendre des expressions


identiques symboliquement pour pouvoir appliquer le principe de la
résolution.

Exemple
Soient C 1 = P(X ) ∨ Q(a, X ) et C 2 = ¬P(g (Y )) ∨ R(Y , b)
Peut-on dénir un résolvant ?
Si [g (a)/X ]et[a/Y ] on obtient :
C 10 = P(g (a)) ∨ Q(a, g (a))
C 20 = ¬P(g (a)) ∨ R(a, b)
C1' et C2' ont un résolvant C = Q(a, g (a)) ∨ R(a, b)
C est conséquence logique de C1' et de C2' et donc de C1 et C2.

39
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Substitution
De la logique à Prolog Unication
Principe de résolution
Algorithme d'unication

Les substitutions

Une substitution q est un ensemble ni de couples (ti,Vi) où chaque


Vi est une variable, chaque ti est un terme diérent de Vi.

Exemple :
θ1 = {f (Z )/X , t/Y }
θ2 = {a/X , f (g (a))/Y , g (t)/Z }

40
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Substitution
De la logique à Prolog Unication
Principe de résolution
Algorithme d'unication

Les substitutions

Instance d'une expression

Soit θ une substitution, E une expression. L'expression obtenue à


partir de E en remplaçant simultanément toute occurrence de Vi
par ti pour tout i est notée E .q et est appelée instance de E .

Exemple :
E = P(X , Y ) ∨ Q(g (X ), Z )
θ = {f (a)/X , g (t)/Y , t/Z }
E .θ =

41
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Substitution
De la logique à Prolog Unication
Principe de résolution
Algorithme d'unication

Les substitutions

Instance d'une expression

Soit θ une substitution, E une expression. L'expression obtenue à


partir de E en remplaçant simultanément toute occurrence de Vi
par ti pour tout i est notée E .q et est appelée instance de E .

Exemple :
E = P(X , Y ) ∨ Q(g (X ), Z )
θ = {f (a)/X , g (t)/Y , t/Z }
E .θ = P(f (a), g (t)) ∨ Q(g (f (a)), t)

41
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Substitution
De la logique à Prolog Unication
Principe de résolution
Algorithme d'unication

Les substitutions

Composition de substitutions

Soit θ = {t1 /X1 , t2 /X2 , ..., tn /Xn }


Soit σ = {u1 /Y1 , u2 /Y2 , ..., um /Ym }
La composition de θ et σ (notée σ ◦ θ ) est la substitution obtenue à
partir de
{t1 .σ/X1 , t2 .σ/X2 , ..., tn .σ/Xn , u1 /Y1 , u2 /Y2 , ..., um /Ym } en
éliminant les couples :

ui /Yi si Yi ∈ {X1 , X2 , ..., Xn }


tj .σ/Xj si Xj = tj .σ

42
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Substitution
De la logique à Prolog Unication
Principe de résolution
Algorithme d'unication

Les substitutions

Exemple de composition de substitution :


θ = {f (T )/X , Z /Y }
σ = {a/X , b/T , Y /Z }
σ ◦ θ = {f (T ).σ/X , Z .σ/Y , a/X , b/T , Y /Z }

43
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Substitution
De la logique à Prolog Unication
Principe de résolution
Algorithme d'unication

Les substitutions

Exemple de composition de substitution :


θ = {f (T )/X , Z /Y }
σ = {a/X , b/T , Y /Z }
σ ◦ θ = {f (T ).σ/X , Z .σ/Y , a/X , b/T , Y /Z }
= {f (b)/X , Y /Y , a/X , b/T , Y /Z }
= {f (b)/X , b/T , Y /Z }

43
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Substitution
De la logique à Prolog Unication
Principe de résolution
Algorithme d'unication

Les substitutions

E .(σ ◦ θ) = (E .θ).σ

Exemple :
E = P(X , Y ) ∨ Q(Y , Z ) ∨ R(Y , X )
θ = {f (T )/X , Z /Y }
σ = {a/X , b/T , Y /Z }
E .θ = P(f (T ), Z ) ∨ Q(Z , Z ) ∨ R(Z , f (T ))
(E .θ).σ = P(f (b), Y ) ∨ Q(Y , Y ) ∨ R(Y , f (b))
σ ◦ θ = {f (b)/X , b/T , Y /Z }
E .(σ ◦ θ) = P(f (b), Y ) ∨ Q(Y , Y ) ∨ R(Y , f (b))

44
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Substitution
De la logique à Prolog Unication
Principe de résolution
Algorithme d'unication

L'unication
Dénition de l'unieur :

Une substitutionθ est un unieur de l'ensemble W = {E1, ..., Ek}


⇔ E 1.θ = E 2.θ = ... = Ek.θ. W est dit uniable

Dénition de l'unieur le plus général ou upg

Un unieur σ de W = {E1, ..., Ek} est dit upg(unieur le plus


général) si et seulement si pour tout unieur θ de W, il existe δ tel
que : θ =δ◦σ

Exemple
W = {P(X,Y), P(f(T),Z)}
σ 1 = {f (T )/X , Z /Y } est upg
θ1 = {f (a)/X , g (g (a))/Y , g (g (a))/Z , a/T } est un unieur
δ 1 qui donne θ1 = δ 1 ◦ σ 1 est 45
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Substitution
De la logique à Prolog Unication
Principe de résolution
Algorithme d'unication

L'unication
Dénition de l'unieur :

Une substitutionθ est un unieur de l'ensemble W = {E1, ..., Ek}


⇔ E 1.θ = E 2.θ = ... = Ek.θ. W est dit uniable

Dénition de l'unieur le plus général ou upg

Un unieur σ de W = {E1, ..., Ek} est dit upg(unieur le plus


général) si et seulement si pour tout unieur θ de W, il existe δ tel
que : θ =δ◦σ

Exemple
W = {P(X,Y), P(f(T),Z)}
σ 1 = {f (T )/X , Z /Y } est upg
θ1 = {f (a)/X , g (g (a))/Y , g (g (a))/Z , a/T } est un unieur
δ 1 qui donne θ1 = δ 1 ◦ σ 1 est {a/T , g (g (a)/Z } 45
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Substitution
De la logique à Prolog Unication
Principe de résolution
Algorithme d'unication

Algorithme d'unication
L'ensemble de discordance d'un ensemble non vide d'expressions est
obtenu en localisant la première position à partir de la gauche pour
laquelle toutes les expressions n'ont pas le même symbole et en
extrayant dans chaque expression, la sous-expression qui commence
en cette position
Exemple
W1 = {P(X, g(X), f(X, Y)), P(X, g(X), f(g(t,Y), Z))}
Ensemble de discordance :D1 = X, g(t,Y)
W2 = {P(Y, X, Z), P(Y, f(t), h(Y)), P(Y, b, U)}
Ensemble de discordance :D2 = {X, f(t), b}

L'algorithme d'unication consiste en la recherche d'un upg d'un


ensemble d'expressions.

46
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Substitution
De la logique à Prolog Unication
Principe de résolution
Algorithme d'unication

Algorithm 2 Algorithme d'unication


1: Soit W l'ensemble ni à unier
2: Etape 1 :k = 0 ; Wk = W ; σk = ε
3: Etape 2 : Si Wk est un singleton
Alors σk est upg de W ;
Sinon trouver Dk l 0 ensemble de discordance de Wk;
4: Etape 3 :
Si il existe des elements Vk et tk de Dk tels que :
Vk soit une variable et tk soit un terme ne contenant pas Vk
Alors aller l 0 etape 4
Sinon W non unifiable
5: Etape 4 : σk+1 = {tk/Vk} ◦ σk , Wk + 1 = Wk.{tk/Vk}
6: Etape 5 : k = k + 1 Aller l 0 etape 2

47
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Substitution
De la logique à Prolog Unication
Principe de résolution
Algorithme d'unication

Si W est ensemble ni non vide uniable alors l'algorithme s'arrête


toujours à l'étape 2 et σk est upg.

48
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Substitution
De la logique à Prolog Unication
Principe de résolution
Algorithme d'unication

Exemple :
W = {P(a,X,f(g(Y))), P(Z,f(Z),f(U))}
1 k = 0 ; W0 = W ; σ0 = ε ;
2 D0 = {a,Z} avec Z variable et a terme ne contenant pas Z ;
3 σ 1 = {a, Z } ◦ σ0 = {a/Z }
4 W 1 = W 0.{a/Z } = {P(a, X , f (g (Y ))), P(a, f (a), f (U))}
5 D1 = {X,f(a)}, V1 = X, t1 = f(a) terme ne contenant pas X ;
6 σ2 = {f (a)/X } ◦ {a/Z } = {f (a)/X , a/Z }
7 W2 = W1.{f(a)/X} = {P(a,f(a),f(g(Y))), P(a,f(a),f(U))}
8 D2 = {g(Y)/U}, V2 = U, t2 = g(Y) terme ne contenant pas
U;
9 s 3 = {g (Y )/U} ◦ σ2 = {g (Y )/U, f (a)/X , a/Z } W3 =
W2.{g(Y)/U } = {P(a,f(a),f(g(Y)))}
10 W3 est un singleton σ3 est l 0 upg de W donc W est uniable.
49
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Substitution
De la logique à Prolog Unication
Principe de résolution
Algorithme d'unication

Exemples :

1 W1={P(T,T), P(f(V),V)}

2 W2 = {P(a,T), P(X,Y)}

3 W3 = {P(f(X),Y,X), P(Z,X,g(T))}

50
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Substitution
De la logique à Prolog Unication
Principe de résolution
Algorithme d'unication

Exemple1 : résolution + unication

∀x∀y ∀z(pere(x, y ) ∧ parent(y , z) → grand _pere(x, z))


∀x∀y ((mere(x, y ) ∨ pere(x, y )) → parent(x, y ))
mere(a, b) pere(c, b) pere(d, a) pere(e, c)

51
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Substitution
De la logique à Prolog Unication
Principe de résolution
Algorithme d'unication

Exemple1 : résolution + unication

∀x∀y ∀z(pere(x, y ) ∧ parent(y , z) → grand _pere(x, z))


∀x∀y ((mere(x, y ) ∨ pere(x, y )) → parent(x, y ))
mere(a, b) pere(c, b) pere(d, a) pere(e, c)

Forme clausale

¬pere(x 1, y 1) ∨ ¬parent(y 1, z 1) ∨ grand _pere(x 1, z 1)


¬mere(x 2, y 2) ∨ parent(x 2, y 2)
¬pere(x 3, y 3) ∨ parent(x 3, y 3)
mere(a, b). pere(c, b). pere(d, a). pere(e, c).

On veut prouver ∃xgrand _pere(x, b)

51
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Substitution
De la logique à Prolog Unication
Principe de résolution
Algorithme d'unication

Exemple1 : résolution + unication

∀x∀y ∀z(pere(x, y ) ∧ parent(y , z) → grand _pere(x, z))


∀x∀y ((mere(x, y ) ∨ pere(x, y )) → parent(x, y ))
mere(a, b) pere(c, b) pere(d, a) pere(e, c)

Forme clausale

¬pere(x 1, y 1) ∨ ¬parent(y 1, z 1) ∨ grand _pere(x 1, z 1)


¬mere(x 2, y 2) ∨ parent(x 2, y 2)
¬pere(x 3, y 3) ∨ parent(x 3, y 3)
mere(a, b). pere(c, b). pere(d, a). pere(e, c).

On veut prouver ∃xgrand _pere(x, b)

Négation sous forme clausale : ¬grand _pere(x, b)


51
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Substitution
De la logique à Prolog Unication
Principe de résolution
Algorithme d'unication

Exercice : résolution + unication

a) Un dragon est heureux si tous ses enfants peuvent


voler

b) Les dragons verts peuvent voler

c) Un dragon est vert s'il a au moins un parent vert ou


rose

d) Donc les dragons verts sont heureux

52
Amel Boustil Programmation logique.
Paradigmes de programmation
La programmation en logique
Domaine d'application Substitution
De la logique à Prolog Unication
Principe de résolution
Algorithme d'unication

Conclusion

Le calcul des prédicats muni du principe de résolution et de


l'unication est complet
toute formule close est vraie ou fausse

MAIS le calcul des prédicats est indécidable


Il n'existe pas d'algorithme permettant de décider à tout coup si
une formule close est vraie ou fausse

53
Amel Boustil Programmation logique.

Vous aimerez peut-être aussi