Professional Documents
Culture Documents
1. Introduction
2. Concepts de base
Terme Prdicat clause
Substitution
Unification
Mcanisme de rsolution
3. Prolog
Introduction
Fondements thoriques
Structures de donnes maintenues pendant l excution
Arbres de recherche
Cut
Fail
Ngation
4. Conclusion
1. Introduction
La programmation logique
est base sur l ide q u un pgm implmente une
relation
est de nature dclarative
rduit l criture d un pgm la formulation des
proprits d un prdicat, et l excution d une
procdure la dmonstration d un thorme
logique
Mais
elle n exploite pas toute la puissance de la
logique mathmatique (rduite aux clauses de
Horn, tout en logique n est pas implmentable)
la logique n est pas suffisante pour rendre
compte de toutes les notions dont a besoin un
langage de programmation (E/S)
on s carte parfois de l idal qu on s est fix au
dpart (l ordre des clauses, l ordre des littraux
dans les clauses intervient dans la rsolution,
rduction de l espace de recherche, )
Relation
Soient S et T, 2 ensembles
R : une relation binaire entre S et T
R est incluse dans S X T
VxS VyT
R(x,y) est soit vraie, soit fausse
R(x,y) peut tre vue comme un prdicat
un programme logique est une implmentation de la
relation logique
Ce programme permet par exemple d rpondre aux
requtes suivantes :
Remarque :
La relation peut tre unaire, ternaire, .
Les rponses sont varies : vrai/faux, plusieurs
rponses, pas de rponses,
Une relation peut tre dfinie en termes d autres
relations : origine (x,y) ssi x=0 et y =0
Concepts de base
Terme : expression dfinie par
une constante
une variable
une fonction de la forme f(t1,t2,,tn) o f est une fonction naire et ti, i=1,n , des termes
faux)
les prdicats se combinent entre eux par des connecteurs pour
donner des formules
Prmisse
Exemples de clauses
Grand-pere (x,y) <== Pere(x,z) Pere (z,y)
V (x,y), Grand-pere (x,y) est vrai, s il existe z / Pere(x,z) est vrai
et Pere (z,y) est vrai
Pere(Mohamed, Ali) <== dcrit l assertion Pere(Mohamed, Ali)
<== Grand-Pere(Omar, salim)permet de formuler la question :
Omar est-il le grand-pre de salim ?
Substitution et unification
l unification de deux termes t et t comportant des variables
x1, x2, .xn consiste trouver une substitution de ces
variables par des termes u1, u2, .un tels que l application
de cette substitution rende les termes t et t gaux
l application d une substitution O = {x1/u1, x2/u2, .xn/un}
un terme t, produit un nouveau terme tO obtenu en
remplaant chaque occurrence de xi par ui dans t.
Deux formules sont unifies, s il existe une substitution O
telle que tO =t O.
O est dit unificateur de t et t
Unification de deux termes
t et t sont deux constantes
si t = t alors les termes sont unifis sinon unification impossible
si t est une variable et t est soit une constante, une variable ou
un terme fonctionnel alors la substitution de t par t entrane
l unification des deux termes
si t est une constante et t un terme fonctionnel alors
l unification est impossible
si t et t sont deux termes fonctionnels alors
si t=f(x1, x2, xp) et
t =g(x1 , x2 , ..xq )
et f=!g ou (f = g et p =! q )
alors l unification est impossible
xn = xn
4. Soit x =t une quation telle x a une autre occurrence dans
l ensemble des quations
si x se trouve dans t alors pas d unification possible
sinon transformer toutes les quations en remplaant tous
les x par t
Thorme
l algorithme d unification termine
s il termine sur un chec alors il n y a pas d unification possible
pour l ensemble des quations
s il termine avec un succs alors l ensemble des quations est
dans une forme rsolue
Exemple :
a) g(y) = x
On applique 1 a) et 3 b)
x= g(y)
x= g(z)
h (x) = w
y=z
On applique 4
x= g(y)
g(y) = g(z)
h(g(y)) = w
y=z
On applique 3
x = g(y)
y=z
h(g(y)) = w
On applique 1 et 4
x =g(z)
y=z
w = h(g(z))
O={x/g(z)
y/z
w/h(g(z))}
Dfinition
Un ensemble d quations est dans une forme rsolue si
1. Toutes les quations sont de la forme xi = ti
2. Chaque variable xi qui apparat dans un membre guauche
d une quation n apparat pas ailleurs dans cet ensemble
3. Un ensemble d quations dans une forme rsolue dfinit une
substitution {x1/t1 x2/t2 .xn/tn}
Dfinition
Un programme logique est un ensemble fini de clauses dfinies
Une excution consiste tester une requte A (clause ngative)
S il est possible d infrer partir des clauses du programme que
A est vraie , on dit qu il y a succs
S il n est pas possible de le faire, on dit qu il y a chec mais
jamais que A est fausse car d autres clauses rajoutes
permettraient peut-tre de l infrer.
Prolog
Premier langage de programmation logique
a beaucoup volu depuis sa premire version (Prolog
1,2, 3, C Prolog, Prolisp, Epilog, Quintus, Turbo prolog,
Xilog, )
En particulier, il est devenu un outil pratique de
dveloppement de logiciels
Domaine privilgi : Intelligence artificielle
(raisonnement , reprsentation des connaissances)
Rgle de calcul : choix des prdicats de gauche
droite
Rgle de recherche ( stratgie) : choix des clauses de
haut en bas
==> recherche en profondeur d abord qui consiste
rsoudre successivement les prdicats dune clause
dans lordre o ils sont crits
Prolog effectue tous les choix possibles. On obtient
ainsi toutes les substitutions possibles (donc toutes les
solutions)
Fondements thoriques
Dmonstration par rfutation
Tout systme de programmation logique ramne lexcution d un
programme la dmonstration d un thorme
Programme = ensemble de clauses C1, C2, ...Cn.
Enonce rsoudre = conjonction de q prdicats
lexcution du programme est quivalente la dmonstration de
la conjonction (P1 et P2 et .. Pq lorsque C1, C2, .. Cn sont
des axiomes)
Pour dmontrer ce thorme, un systme de programmation
logique procde par rfutation ( raisonnement par
labsurde)
C1, C2, ., Cn ==> P1 et P2 et ..Pq
revient en fait montrer que
[C1, C2, , Cn, non(P1 et P2 et.et Pq)] est
insatisfiable
Pour montrer l insatisfiabilit d un ensemble de clauses, on
dmontre qu une contradiction drive de cet ensemble. Cela
s appelle rfutation
La rsolution
On dmontre que lorsqu un ensemble est insatisfiable, l emploi
ritr de la rgle de rsolution engendre la clause vide
Rgle de rsolution
soient deux clauses C1 et C2
C1 = P11, P12,, P1q <== N11 et N12 et . et N1p
C2 = P21, P22, ., P2s <== N21 et N22 et ..et N2m
telles qu un littral positif de C1 s unifie avec un littral ngatif
de C2 ==> C : nouvelle clause drive de C1 et C2
L emploi ritr de cette rgle doit donner tt ou tard la clause
vide
C s appelle rsolvante de C1 et C2
Cas de Prolog
On procde par rfutation
S = {C1,C2, .., Cn, non (P1 et P2 et .Pq)} est insatisfiable
En combinant l implication logique
A et B ==> D <==>
non(A et B) ou D
et l criture Prolog D <== A et B
non (P1 et P2 et . Pq) deviendra
<== P1 et P2 et Pq
Donc cela revient montrer que
(C1, C2, , Cn, <== P1 et P2 et et Pq) est insatifiable
A chaque tape, on applique la rgle de rsolution sur la
rsolvante de l tape prcdente
Exemple :
add(0,x,x) <===
add(s(x),y,z) <== add(x,s(y),z)
programme
question
C2
z1/z
(b)
grand-pere(x,y)
(b)
grand-pere(x,y)
*
pere(x,z)
(a)
pere(z,y)
(a)
grand-pere(x,y)
*
pere(Ali, Mohamed)
*
pere(Mohamed, y)
(a)
grand-pere
*
pere(Mohamed, Ali)
*
pere(mohamed,y)
*
echec
Le cut
pour rsoudre un prdicat P, Prolog considre toutes les clauses
de tte P(..,..,..). Ceci peut tre contrl en utilisant le cut
(!)
==> permet dviter les retour-arrire trop coteux en espace et
en temps
==> permet aussi d viter les boucles infinies
Lors de la rsolution d une clause, la rencontre du ! , supprime
tous les choix restant faire pour tous les prdicats
antrieurs !, dans l arbre actuel de rsolution
Les prdicats situs aprs !, et non encore examins ne sont pas
concerns
Exemple
1. Fact(0,1) <==
2. Fact(N,F) <== N1 is N-1 fact(N1,F1) F is N*F1
3. Callfact(N) <== Fact(N,F) Write(F)
<== Callfact(0)
Appel de callfact avec N=0
Unification avec la clause 1
La ngation de Prolog
ngation par l chec l aide de cut + fail
1. Not(x) <== x ! Fail
2. Not(x) <==
1. Si x est vrai, le fail le met en chec, il force le retour-arrire
mais ! empche ce retour, l appel not(x) renverra faux
2. si x est faux , on n atteint pas !, On passe 2 qui est toujours
vraie
L appel not(x) renverra alors vrai
E/S
Pour le rendre praticable, Prolog a t tendu avec des interfaces
d entre/sortie
Prdicats spciaux : put get
usage confin dans des zones bien dfinies du programme
==> pas d interfrence notable avec la structure dclarative
du programme
Variable anonyme
P(-,-,-)
les variables anonymes s unifient avec n importe quel terme
sans que les liens rsultants soient mmoriss ==> allge la
tche de l interprteur en vitant les substitutions qui ne sont
pas propages
En conclusion
Quoiqu il repose sur la logique mathmatique, l assimilation de
Prolog dcoule plutt de la logique lmentaire que possde
chaque personne
==> certains ont propos d en faire un langage d initiation
l informatique
Quelques exemples lmentaires de son utilisation
Base de donnes
tlphone (Mohamed, 031926060)
tlephone (Nadia, 061661310)
?tlphone (Nadia, x)
x= O61661310
Aspects dductifs dans les systmes experts
1. Mammifre(x) <== possede-poils(x) donne-lait(x)
2. Oiseau(x)<== possede-plumes(x) pond-ufs(x)
3. Possede-poils(tigre)
4. Donne-lait(tigre)
?Mammifere(Tigre)
= vrai