Académique Documents
Professionnel Documents
Culture Documents
50
CHAPITRE 2
Programmation Logique
Naoufel KHAYATI
nkhayati@gmail.com / naoufel.khayati@eniso.u-sousse.tn
Introduction
51
Connecteurs
54
¬ : la négation (¬A)
∧ : ET / Conjonction (A ∧ B)
∨ : OU / Disjonction (A ∨ B)
⇒ : Si … Alors / Implication (A ⇒ B)
⇔ : Si et Seulement Si / Equivalence (A ⇔ B)
⊕ : OU exclusif / XOR / Disjonction exclusive (A ⊕ B)
Exercice
55
A ⇒ B signifie ¬A ∨ B
A ⇔ B signifie (A ⇒ B) ∧ (B ⇒ A)
A ⊕ B signifie (A ∧ ¬B) ∨ (¬A ∧ B)
Exercice
56
A ⇒ B signifie ¬A ∨ B
A ⇔ B signifie (A ⇒ B) ∧ (B ⇒ A)
A ⊕ B signifie (A ∧ ¬B) ∨ (¬A ∧ B)
Exp. 1
Tous les hommes sont mortels
Socrate est un homme
Socrate est mortel
Exp. 2
Si X est père de Y et Z est père de X alors Z est grand-père de Y.
Constantes : {a, b, c, …}
Variables : {x, y, z, …}
Fonctions : {f, g, h, …}
Connecteurs : {¬, ∧, ∨, ⇒, ⇔, ⊕}
Quantificateurs : {∀, ∃}
Exemples
Le père de Slim a peur de chien.
Constante : Slim
Variable : chien (on n’a pas précisé lequel exactement)
Fonction : Le père de
Prédicat : a peur
Terme
Un terme peut être une constante, une variable ou une
fonction.
Si t1, t2, …, tn sont des termes alors ∀i ∈ {1, …, n} f(ti) est un
terme.
Formule atomique
Si t1, t2,
…, tn sont des termes alors ∀i ∈ {1, …, n} P(ti)
est une formule atomique.
P(a), P(x), P(f(x)), P(a, x), P(a, x, f(x)), etc.
Exemples
∀x P(x) ⇒ (∀y Q(f(y), 0) ∧ Q(a, g(y))
∀x P(x) ⇒ ∃y Q(f(y), 100)
Arbres de construction
Exemple 1
Arbres de construction
Exemple 2
Def 1 : Une variable est dite liée Si au moins l’une de ses occurrences est
liée.
Def 2 : Une variable est dite libre Ssi toutes ses occurrences sont libres.
Def 3 : Une formule est dite close Ssi toutes ses variables
sont liées.
Exemples
La formule p(x) ∧ ¬p(y) est en forme normale prénexe.
La formule ∀x, ∃y ((p(x) ∧ q(x, y)) ∨ r(z)) est en forme normale
prénexe.
A noter que dans une formule en forme normale prénexe il peut y
avoir des variables libres (comme z dans cet exemple).
La formule ∃x ((p(x) ⇒ ∀x p(x)) n'est pas en forme normale
prénexe.
∀x (P(x) ⇒ ∃x P(x))
∀x (¬P(x) ∨ ∃x P(x))
∀x (¬P(x) ∨ ∃y P(y))
∀x ∃y (¬P(x) ∨ P(y))
∀x P(x) ⇒ ∃x P(x)
¬(∀x P(x)) ∨ ∃x P(x)
∃x ¬P(x) ∨ ∃x P(x)
∃x (¬P(x) ∨ P(x))
Exemple : ∃x ∃y ∀z ∀t ∃v P(x, y, z, t, v)
Forme Clausale
Forme Clausale
Exercice
Trouver la forme clausale de chacune des formules
suivantes :
C1 : P(a)
C2 : Q(a, y)
Substitution
Substitution
σ [(y/f(x)), (x/f(a))]
Unificateur
Exemple :
A1 = P(x, z)
A2 = P(f(y), g(a))
A3 = P(f(u), z)
σ := ɛ
Tant que σA != σB Faire
Déterminer le symbole le plus à gauche de σA qui soit différent du
symbole du même rang de σB.
Déterminer t1 et t2, les sous-termes respectifs de σA et σB qui commencent
à ce symbole.
Si aucun des deux n’est une variable ou l’une est une variable contenue dans
l’autre, Alors A et B ne sont pas unifiables et Aller à FIN.
Sinon
Déterminer x une variable parmi t1 et t2
Déterminer t parmi t1 et t2 qui n’est pas x
σ := (x/t) σ
Fin Si
Fin Tant que
Retourner σ
FIN
Exemple 1
P(x, f(g(x)), a) et P(b, y, z)
σ := ɛ
σ := [(x/b)]
σ := [(x/b) (y/f(g(b))]
σ := [(x/b) (y/f(g(b)) (z/a)]
Exemple 2 Exemple 3
σ := ɛ
σ := [(x/b)] ce qui donne P(b, f(b), a) et P(b, y, y)
σ := [(x/b) (y/f(b))] ce qui donne P(b, f(b), a) et P(b, f(b),
f(b))
Puis il y a un blocage car on ne peut pas substituer a par
f(b) ou l’inverse, car les deux termes sont des constantes.
Déduction : Ces deux formules atomiques ne sont pas
unifiables.
Langage Prolog
89
Langage Prolog
90
Langage Prolog
91
Briques élémentaires
Constantes avec une minuscule : pierre, paul
Nombres entier ou flottant : 42, 2.3
Chaînes entre guillemets : "abcdef"
Variables avec une majuscule : X, Y, ANNEE, Annee
Prédicats avec une minuscule : humain(X), parent(X, Y)
Requêtes : ?-fils(paul,X).
Langage Prolog
92
Pour Finir…
93
https://swish.swi-prolog.org/example/examples.swinb
Exercice
94
Famille
95
A SUIVRE…