Vous êtes sur la page 1sur 23

Naoufel KHAYATI Cours « Paradigmes de Programmation »

50

CHAPITRE 2

Programmation Logique

Naoufel KHAYATI
nkhayati@gmail.com / naoufel.khayati@eniso.u-sousse.tn

AU. 2022 - 2023

Introduction
51

 Fondé sur la logique mathématique.

 Déclaration de faits (axiomes) et de règles.

 Résolution en "posant une question", c-à-d en


déclarant un but qui sera évalué en se basant sur
les axiomes et les règles définis.

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 1


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Logique des propositions


52

 La notion de proposition est une construction


syntaxique censée parler de vérité.
 C’est un énoncé qui ne peut être que vrai ou faux.
 Logique d’ordre 0.

 Une proposition donne une information sur un état


de chose.
« 3 + 15 = 18 » ou « le livre est ouvert » sont deux
propositions.
 Que dites-vous de 5+4=9 et 5+4=11???
 Que dites-vous de « Demain, il pleuvra. »

Logique des propositions


53

 Ne sont pas des propositions :

 Une phrase optative, qui exprime un souhait comme


« Que Dieu vous protège »
 Une phrase impérative (« viens ! », « fermez la
porte ! »)
 Une interrogation (« Que feriez-vous au cas… ? »,
« comment vas-tu ? »)

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 2


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Connecteurs
54

 Ce sont les opérateurs entre propositions.

 Soient A et B deux propositions

¬ : 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 ¬A ¬B A∧B A∨B A⇒B A⇔B A⊕B


0 0
0 1
1 0
1 1

 A ⇒ B signifie ¬A ∨ B
 A ⇔ B signifie (A ⇒ B) ∧ (B ⇒ A)
 A ⊕ B signifie (A ∧ ¬B) ∨ (¬A ∧ B)

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 3


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Exercice
56

A B ¬A ¬B A∧B A∨B A⇒B A⇔B A⊕B


0 0 1 1 0 0 1 1 0
0 1 1 0 0 1 1 0 1
1 0 0 1 0 1 0 0 1
1 1 0 0 1 1 1 1 0

 A ⇒ B signifie ¬A ∨ B
 A ⇔ B signifie (A ⇒ B) ∧ (B ⇒ A)
 A ⊕ B signifie (A ∧ ¬B) ∨ (¬A ∧ B)

Limites de la Log. Propositions


57

 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.

 On ne peut pas représenter ces deux exemples par la logique des


propositions (logique d’ordre 0).
 Besoin de passer à la logique du premier ordre
 Logique des Prédicats (extension de la Log. Prop).
 Ajout de la notion des prédicats et des quantificateurs ∀ et ∃.

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 4


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Logique des prédicats


58

 Eléments de base pour l’écriture des expressions

 Constantes : {a, b, c, …}
 Variables : {x, y, z, …}

 Fonctions : {f, g, h, …}

 Prédicats (relations) : {P, Q, R, S, …}

 Connecteurs : {¬, ∧, ∨, ⇒, ⇔, ⊕}

 Quantificateurs : {∀, ∃}

Logique des prédicats


59

 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

 A part 0 et 1, aucun nombre n’est égal à son carré.


 Constantes : 0 et 1
 Variable : nombre
 Fonction : Carré
 Prédicat : égal (relation d’égalité)

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 5


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Logique des prédicats


60

 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.

Logique des prédicats


61

 Formule bien formée


 Si F1 et F2 sont des formules atomiques alors
 ¬ F1, F1 ∧ F2, F1 ∨ F2, F1 ⇒ F2, F1⇔ F2 sont des formules bien
formées.

 Exemples
 ∀x P(x) ⇒ (∀y Q(f(y), 0) ∧ Q(a, g(y))
 ∀x P(x) ⇒ ∃y Q(f(y), 100)

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 6


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Logique des prédicats


62

 Arbres de construction des formules bien formées

 Les feuilles sont des formules atomiques

 Les nœuds sont des quantificateurs ou des connecteurs

Logique des prédicats


63

 Arbres de construction
 Exemple 1

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 7


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Logique des prédicats


64

 Arbres de construction
 Exemple 2

Logique des prédicats


65

 Formule close vs. Formule Ouverte

 La 1ère occurrence de la variable y est dite libre car elle ne dépend


pas du quantificateur ∃ de la partie gauche de la formule.
 Par contre, sa 2ème occurrence est liée car elle dépend du
quantificateur ∀ de la partie droite de la formule.
 y est une variable liée

 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.

 Quelle est la nature de la variable x ?

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 8


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Logique des prédicats


66

 Formule Close vs. Formule Ouverte

 Def 3 : Une formule est dite close Ssi toutes ses variables
sont liées.

 Def 4 : Une formule est dite ouverte Si elle contient au


moins une variable libre.

 Quelle est la nature de la formule F précédente ?

 Généralement, on travaille sur les formules closes.

Logique des prédicats


67

 Sémantique des formules

 Domaine (D) : ensemble d’appartenance des variables


et des constantes.

 Prédicats : Applications de Dn dans {V, F}

 Fonctions : Applications de Dn dans D

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 9


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Logique des prédicats


68

 Sémantique des formules (Exemple)

F = ∀x (P(x) ⇒ (Q(x, f(x))))


 D = ]0, +∞[
 Prédicats :
 P(x)est vrai Si x<1
 Q(x, y) est vrai si x>y
 Fonction : f(x) = x2

 Tester avec x= 0,5 et x=3

Logique des prédicats


69

 Sémantique des formules

 Tautologie : Formule toujours vraie

 Satisfiabilité : Formule vraie au moins une fois

 Antilogie : Formule toujours fausse

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 10


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Logique des prédicats


70

 Forme Normale Prénexe


 Une formule F est en forme normale prénexe si elle est de la
forme Qx1 Qx2 ... Qxn F’, où F’ est une formule sans
quantificateurs.
 La suite des quantificateurs est appelée préfixe, et F’ est
appelée matrice.

 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.

Logique des prédicats


71

 Forme Normale Prénexe


 Toute formule F est équivalente à une formule prénexe
G.
 Comment faire la transformation ?
1) Supprimer les implications et les équivalences.
 A ⇔ B devient (A ⇒ B) ∧ (B ⇒ A)
 Puis A ⇒ B devient ¬A ∨ B
 A ⇔ B devient (¬A ∨ B) ∧ (¬B ∨ A)

2) Former des littéraux par transfert des négations


¬(¬F)  F ¬(∀x P(x))  ∃x ¬P(x)
¬(F ∨ G)  ¬F ∧ ¬G ¬(∃x P(x))  ∀x ¬P(x)
¬(F ∧ G)  ¬F ∨ ¬G

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 11


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Logique des prédicats


72

 Forme Normale Prénexe


 Toute formule F est équivalente à une formule prénexe
G.
 Comment faire la transformation ?

3) Renommer les variables pour éviter les conflits

4) Mettre les quantificateurs au début de la formule sans


changer leur ordre.

Logique des prédicats


73

 Forme Normale Prénexe


 Exemples de Transformation

 ∀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))

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 12


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Logique des prédicats


74

 Forme Normale Skolem

 La skolémisation consiste à remplacer tous les quantificateurs existentiels


par :
 Des constantes, s’ils ne sont pas précédés par des quantifications universelles.
 Des fonctions des variables quantifiées universellement, sinon.

 La skolémisation s’applique sur des formules prénexes.

 Exemple : ∃x ∃y ∀z ∀t ∃v P(x, y, z, t, v)

 Remplacer la variable x par la constante a : ∃y ∀z ∀t ∃v P(a, y, z, t, v)


 Remplacer y par b : ∀z ∀t ∃v P(a, b, z, t, v)
 Remplacer v par f(z, t) : ∀z ∀t P(a, b, z, t, f(z, t))
 Peut s’écrire P(a, b, z, t, f(z, t)) car les deux seules variables sont z et t.

Logique des prédicats


75

 Forme Clausale

 Suppose que la formule est déjà skolémisée.

 Dans une forme clausale, il n'y a que les connecteurs ¬ et ∨.

 Le connecteur ∧ est implicitement mis entre deux clauses.

 Il n'y a plus de quantificateur.

 Toute variable est implicitement quantifiée par ∀.

 Les variables indépendantes sont nommées différemment.

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 13


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Logique des prédicats


76

 Forme Clausale

 Exercice
 Trouver la forme clausale de chacune des formules
suivantes :

 F = ∀x ((P(x) ∨ ∀y Q(x, y)) ⇒ R(y))


 G = ∃x (P(x) ∧ ∀y Q(x, y))

Logique des prédicats


77

 Forme Clausale (Solution)

C1 : P(a)
C2 : Q(a, y)

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 14


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Logique des prédicats


78

 Substitution

 Il s’agit de la substitution de variables


 Remplacement d’une variable par une expression
 Notation : pour une proposition A, remplacer x par B se note A[x/B]

 Utile pour la mise sous forme prénexe et skolem, lorsque deux


sous formules ont les mêmes variables

 L’ordre des quantificateurs peut être modifié.

Logique des prédicats


79

 Substitution

 Notée par σ appelé unificateur.

σ [(y/f(x)), (x/f(a))]

F = P(x, y)  F = P(x, f(x))  P(f(a), f(f(a)))

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 15


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Logique des prédicats


80

 Unificateur

 Soit F={A1, A2, …, An} un ensemble fini de formules atomiques.


 On appelle unificateur de F toute substitution σ telle que : σA1 =
… = σAn.

 Exemple :
 A1 = P(x, z)
 A2 = P(f(y), g(a))
 A3 = P(f(u), z)

 σ = [(x/f(u)), (y/u), (z/g(a))]


 Calculer σA1, σA2 et σA3.

 Il est possible qu’un ensemble de formules n’admette pas


d’unificateur.

Logique des prédicats


81

 Algorithme d’Unification de 2 atomes A et B

 σ := ɛ
 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

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 16


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Logique des prédicats


82

 Algorithme d’Unification de 2 atomes A et B

 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)]

Logique des prédicats


83

 Algorithme d’Unification de 2 atomes A et B

 Exemple 2 Exemple 3

 P(x, f(x), a) et P(b, y, y) f(x, g(b), c) et f(h(y), y, c)

σ := ɛ
 σ := [(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.

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 17


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Logique des prédicats


84

 Méthode de résolution (Robinson)

 F ⊨ G signifie que F  ¬G ⊨  (clause vide)


 F infère G
 G est une conséquence logique de F.

Logique des prédicats


85

 Méthode de résolution (Robinson)

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 18


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Logique des prédicats


86

 Méthode de résolution (Robinson)

 Résolvante de deux clauses


 Soient deux clauses s1 et s2 telles que le littéral t figure dans l’une et
le littéral ¬t figure dans l’autre.
 On appelle résolvante de s1 et s2, la clause obtenue en supprimant
les deux littéraux et en réunissant tout ce qui reste en une seule
clause.
 Exemple : s1 = ¬p ∨ q ∨ r s2= p ∨ q ∨ s
alors res(s1, s2) = q ∨ r ∨ s
 Prouver cette règle.

Logique des prédicats


87

 Exercice de résolution des problèmes

 Commencer par écrire toutes les formules sous forme clausale.


 A1 = (¬P(x) ∨ Q(x))
 A2 = (¬Q(x) ∨ R(x))
 P(a) ∧ ¬R(a)
 A3 = P(a)
 A4 = ¬R(a)

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 19


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Logique des prédicats


88

 Exercice de résolution des problèmes

 Appliquer les substitutions et les règles de résolution de


Robinson.
 A1 = (¬P(a) ∨ Q(x)) A6 = res(A5, A2) = R(a) A4 = ¬R(a)
 A3 = P(a) A2 = (¬Q(x) ∨ R(x)) A7 = res (A4, A6) = 
 A5 = res(A1, A3) = Q(a)

Langage Prolog
89

 Le langage emblématique du paradigme logique est Prolog


(PROgrammation LOGique), défini en 1972.

 Il permet d’écrire des programmes très concis et élégants car


proches de la description mathématique.

 Le programmeur définit une base de connaissances (BC) formée d’un


ensemble de faits élémentaires et de règles.

 L’exécution d’un programme est une suite de recherches de données


dans cette BC.
 Le système pilote le processus grâce à un moteur d’inférence.

 Les données obtenues, et associées à un autre ensemble de règles


peuvent alors être utilisées dans le cadre d’une autre recherche.

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 20


Naoufel KHAYATI Cours « Paradigmes de Programmation »

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)

 Assertions ou “instructions” (se terminent par un point)


 Faits / base de connaissances, par exemples
 Prédicat unaire : humain(pierre).
 Prédicat binaire : parent(pierre, paul).

 Règles : fils(X, Y) :- parent(Y,X),homme(X).

 Requêtes : ?-fils(paul,X).

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 21


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Langage Prolog
92

Pour Finir…
93

 Pour de plus amples détails et plus d’exemples

 Environnement Prolog en ligne

 https://swish.swi-prolog.org/example/examples.swinb

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 22


Naoufel KHAYATI Cours « Paradigmes de Programmation »

Exercice
94

 Famille

 Ajouter les faits sur le sexe de chaque personne


 Ajouter les règles
 frère, sœur
 oncle, Tante

 Ecrire les requêtes qui permettent de retourner


 Les oncles deMarc
 Les tantes de Rosie
 Les frères d’Irène
 Le grand-père deRosie

95

A SUIVRE…

ISETSo – M1 Mastère Pro GLDRA – 2022 / 2023 23

Vous aimerez peut-être aussi