Title: Programmation logique
1Programmation logique
- Lakhdar Saïs
- CRIL, Université d Artois
- sais_at_cril.univ-artois.fr
- http//www.cril.univ-artois.fr/sais
- Maîtrise d informatique
- 2002/2003
2Rappel de logique pour prolog
- Logique des propositions
- Logique des prédicats
- Unification
3Logique des propositions
- Syntaxe
- On définit
- Les propositions a, b, c,
- Les constantes V et F
- Les connecteurs
- ? (conjonction)
- ? (disjonction)
- ? (négation)
- ? (implication)
- ? (équivalence)
4Construction dune formule
- Une proposition est une formule
- Si a et b sont des formules, alors
- ?a, a ?b, a ? b, a?b et a ? b sont des formules
5Logique des propositions
- Sémantique
- Les formules sont interprétées dans V,F
- On définit linterprétation associée à chaque
connecteur grâce aux tables de vérité
6Tables de vérité desconnecteurs
7Propriétés des formules
- Une formule est valide si elle est toujours vraie
(quelque soit linterprétation) - Une formule est consistante sil existe une
interprétation dans laquelle elle est vraie. Elle
est inconsistante dans le cas contraire - Problème étant donnée une formule, est-elle
valide ? consistante ? - Exemple que dire de la formule
- (a ? b) ?(?b ? ?a)
8Règles de transformation (1)
- a??a (loi du tiers exclu)
- ((a?b) ? a) ? b (modus ponens)
- ((a ? b) ? ?b) ? ?a (modus tollens)
- (a ?b) ? (?b ? ?a) (contraposition)
- ??a ? a (double négation)
- a ? b??a ? b
- a ? b ? (a ? b) ? (b ? a)
- a?a ? a?a ? a (idempotence)
9Règles de transformation (2)
- Lois de Morgan
- ?(a?b) ? ?a ? ?b
- ?(a?b) ? ?a ? ?b
- Commutativité et associativité de ? et ?
- Distributivité de ? par rapport à ? et de ? par
rapport à ?
10Une énigme policière
- Un meurtre a été commis au laboratoire, le corps
se trouve dans la salle de conférences - On dispose des informations suivantes
- La secrétaire déclare quelle a vu lingénieur
dans le couloir qui donne sur la salle de
conférences - Le coup de feu a été tiré dans la salle de
conférences, on la donc entendu de toutes les
pièces voisines - Lingénieur affirme navoir rien entendu
- On souhaite démontrer que si la secrétaire dit
vrai, alors lingénieur ment
11Formalisation en calcul des propositions
- p la secrétaire dit vrai
- q lingénieur était dans le couloir au moment
du crime - r lingénieur était dans une pièce voisine de
la salle de conférences - s lingénieur a entendu le coup de feu
- t lingénieur dit vrai
12Résolution de lénigme
- Les informations de lénoncé se traduisent par
les implications - p?q, q ? r, r ? s, t ? ?s
- Il sagit de prouver la validité de la formule
- (p ? q ? q ? r ? r ? s ? t ? ?s) ? (p ? ?t)
13Démonstration
- (p ? q ? q ? r ? r ? s ? t ? ?s) ? (p ? ?t)
- La formule ne peut être fausse que si
- (p ? ?t) est faux, soit p et t vrais
- la prémisse est vraie, soit toutes les
implications vraies - Comme t doit être vrai, s doit être faux, donc r
faux, donc q faux, donc p faux, et il y a
contradiction
14Logique des prédicats
- Syntaxe
- On définit
- Les constantes V et F
- Les connecteurs ?, ?, ?, ?
- Les variables x, y, z,
- Les fonctions f, g, h,
- Les prédicats p, q, r, dont ceux darité 0
a, b, c, - Les quantificateurs ",
15Définitions
- Terme
- Une variable est un terme
- Une constante est un terme
- Si t1, t2, , tn sont des termes, alors
f(t1,t2,,tn) est un terme - Atome
- Si t1, t2, , tn sont des termes, alors
p(t1,t2,,tn) est un atome
humain(socrate)
X tom mere(tom)
16Construction dune formule
- V, F sont des formules
- Un atome est une formule
- Si F1 et F2 sont les formules, alors ?F1, F1?F2,
F1?F2, F1? F2 sont des formules - Si F est une formule, ? x F et ?x F sont des
formules - Remarque la logique des propositions est un cas
particulier de la logique des prédicats
humain(socrate)
? X. humain(X) ? mortel(X)
17Exemples de formules valides
- "x?A ? ? x A
- "x A ? ? x ? A
18Définitions
- Littéral
- Un atome est un littéral (positif)
- La négation dun atome est un littéral (négatif)
- Une clause est une formule qui a la forme dune
disjonction de littéraux - Une clause concrète est une clause sans variable
- Une clause de Horn est une clause comportant au
plus un littéral positif - On peut toujours transformer une formule en un
ensemble de clauses
19Principe de résolution
- Cest une règle dinférence qui sapplique aux
clauses - Principe sur des clauses concrètes
- G G1? G2 ? ? Gn
- H ?G1 ? H2 ? ? Hm
- K G2 ? ? Gn ? H2 ? ? Hm
- K est le résolvant de G et H
- G1 et ?G1 sont des littéraux complémentaires
20Cas particuliers
- P et ?P ? Q se résolvent en Q (modus ponens)
- ?G ? H et ?H ? K se résolvent en ?G ? K
(enchaînement) - ?Q et ? P ? Q se résolvent en ?P (modus tollens)
21Utilisation
- Le principe de résolution est une règle
dinférence saine, i.e. tout résolvant est une
conséquence logique des deux clauses parentes - Pour appliquer le principe de résolution à des
clauses non concrètes, on définit lunification,
afin de rechercher des littéraux complémentaires
22Unification
- Deux termes t1 et t2 sont unifiables sil existe
une substitution s des variables de t1 et t2
telle que s(t1) s(t2) - Exemples
- pere(X,jean) sunifie avec pere(Y,Z) si XY et
jeanZ - pere(jean,mere(X)) sunifie avec
pere(Y,mere(pierre) si jeanY et Xpierre
23Exemple 1
- Les barbiers rasent tous ceux qui ne se rasent
pas eux-mêmes - Aucun barbier ne rase quelquun qui se rase
lui-même - Le barbier se rase-t-il lui même ?
- Montrons que si les deux premières assertions
sont vraies, alors il ne peut y avoir de barbier
24Formalisation
- barbier(X) ? ?rase(Y,Y) ? rase(X,Y)
- i.e. ? barbier(X)? rase(Y,Y) ? rase(X,Y)(1)
- barbier(X) ? rase(Y,Y) ? ?rase(X,Y)
- i.e. ? barbier(X) ? ? rase(Y,Y) ? ? rase(X,Y)(2)
- barbier(b) (3)
- On veux montrer (1) ?(2) ? ?(3),
- i.e. réfuter (1) ?(2) ?(3)
25Résolution
- (3) et (1) se résolvent en (4)
- rase(Y,Y) ? rase(b,Y), i.e. rase(b,b)
- (3) et (2) se résolvent en (5)
- ? rase(Y,Y) ? ? rase(b,Y), i.e. ? rase(b,b)
- (4) et (5) se résolvent en la clause vide
26Résolution Unification Exemple 2
1. sélectionner un littéral
1.) ?X prendre_parapluie(X) ? ?pleut(X) 2.)
pleut(paris) 1.) prendre_parapluie(paris) ?
?pleut(paris) 2.) pleut(paris) 12)
prendre_parapluie(paris)
2. Renommage non nécessaire
3. Pgu ? X / paris
4. appliquer ?
5. résolution
27Résolution prolog
question
1) connaît_logique(X) ? bon_etudiant(X) ?
enseignant(Y,X) ? logicien(Y) 2)
bon_etudiant(david) 3) logicien(michel) 4)
enseignant (michel,david)
- ? connaît_logique(Z)
- ? bon_etudiant(X) ? enseigant(Y,X) ?
logicien(Y) - ? enseignant(Y,david) ? logician(Y)
- ? logicien(michel)
- ?
Z/X
X/david
Réponse Z/david ? connaît_logique(david)
Y/michel
28Backtracking
- ? connait_logique(Z)
- ? bon_etudiant(X) ? enseignant(Y,X) ?
logicien(Y) - ? enseignant(Y,cécile) ? logicien(Y)
- ? enseignant(Y,david) ? logicien(Y)
- ? logicien(michel)
- ?
1) connait_logic(X) ? bon_etudiant(X) ?
enseignant(Y,X) ? logicien(Y) 2)
bon_etudiant(cécile) 3) bon_etudiant(david) 4)
logicien(michel) 5) enseigant(michel,david)
?
Retour arrière !
Pour essayer une autre clause
29Suite à vos cahiers
- Description de la résolution prolog
- un premier programme prolog