Académique Documents
Professionnel Documents
Culture Documents
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
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
La programmation logique
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
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
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
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
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
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
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
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
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
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
Bases de données ;
Prototypage ;
Compilation ;
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
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
Une proposition
Exemple
Logique propositionnelle
Alphabet
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
Alphabet
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
Alphabet
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
Alphabet
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
Logique propositionnelle
Syntaxe ou formule bien formée
Logique propositionnelle
Syntaxe ou formule bien formée
Logique propositionnelle
Syntaxe ou formule bien formée
Logique propositionnelle
Tout atome est vrai ou faux mais pas les deux à la fois
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
La logique propositionnelle :
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
La logique propositionnelle :
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
La logique propositionnelle :
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
La logique propositionnelle :
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
La logique propositionnelle :
les connecteurs : ∨, ∧, →, ↔, ¬.
les délimiteurs : les parenthèses (, ).
Alphabet (suite)
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
Exemples
César était un homme
HOMME(césar)
Les termes
Tout terme est engendré par application des deux lois suivantes :
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
Les atomes
tout atome est engendré par l'application des deux lois suivantes
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
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
Sémantique
Une interprétation d'une fbf G est dénie par les cinq étapes
suivantes :
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
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
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
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
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
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
Notion de 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
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
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
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
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
Algorithme de résolution
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
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 ?
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
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
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
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
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
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
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
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
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
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
Méthode de Skolémisation
Soit : G' = (Q1 X1)... (Qn Xn) M(X1, X2,... Xn) fnp de G
On obtient une forme standard de Skolem par les transformations
suivantes :
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
Soit : G' = (Q1 X1)... (Qn Xn) M(X1, X2,... Xn) fnp de G
On obtient une forme standard de Skolem par les transformations
suivantes :
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
Soit : G' = (Q1 X1)... (Qn Xn) M(X1, X2,... Xn) fnp de G
On obtient une forme standard de Skolem par les transformations
suivantes :
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
Soit : G' = (Q1 X1)... (Qn Xn) M(X1, X2,... Xn) fnp de G
On obtient une forme standard de Skolem par les transformations
suivantes :
Méthode de Skolémisation
Soit : G' = (Q1 X1)... (Qn Xn) M(X1, X2,... Xn) fnp de G
On obtient une forme standard de Skolem par les transformations
suivantes :
Méthode de Skolémisation
Méthode de Skolémisation
Exemple
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
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
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 :
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 :
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 :
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 :
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 :
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 :
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 :
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
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
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
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
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
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
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
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
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
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 :
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 :
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}
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
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
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
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
Forme clausale
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
Forme clausale
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
53
Amel Boustil Programmation logique.