Vous êtes sur la page 1sur 7

Universit de Annaba - Dpartement Informatique 3me anne licence Module : Programmation logique

Srie de travaux dirigs n1 La forme clausale 1- Trouver les formes prnexes des formules suivantes : a. P(x) xQ(x) b. (xP(x) xP(x)) Q c. xP(x) xQ(x,z) xyR(x,y) 2- Mettre sous forme clausale a. (xP(x) xP(x)) Q b. xP(x) xQ(x,z) xyR(x,y) 3- Ecrire les phrases suivantes sous forme clausale : Un dragon est heureux si tous ses enfants peuvent voler Les dragons verts peuvent voler Un dragon est vert sil a au moins un parent vert ou rose Les dragons verts sont heureux Notations h(x) : x est heureux p(x,y): x est parent de y vo(x) : x vole (peut voler) ve(x) : x est vert r(x) : x est rose

Rgles suivre :
a) Transformation et permutation des quantificateurs 1. xyA(x,y) yxA(x,y) 2. xyA(x,y) yxA(x,y) 3. xyA(x,y) xA(x,x) 4. xA(x,x) xyA(x,y) ; x est libre pour y dans A(x,y) 5. xA(x) x(A(x) 6. xyA(x,y) yxA(x,y) b) Composition entre les quantificateurs 1. (xA(x)) xA(x) 2. (xA(x)) xA(x) 3. xA(x) (xA(x)) 4. xA(x) (xA(x)) c)Composition entre la conjonction, la disjonction et les quantificateurs 1. xA(x) xB(x) x(A(x) B(x)) d) 2. 3. 4. 5. 6. 7. 8.

xA(x) xB(x) x(A(x) B(x)) xA(x) xB(x) x(A(x) B(x)) x(A(x) B(x)) xA(x) xB(x) A xA(x) x(A A(x)) ; A ne contient
pas doccurrence libre de x A xA(x) x(A A(x)) ; A ne contient pas doccurrence libre de x A xA(x) x(A A(x)) A xA(x) x(A A(x)) les

Composition entre limplication et quantificateurs 1. A xB(x) x(A B(x)) 2. A xB(x) x(A B(x)) 3. xB(x) A x(B(x) A) 4. xB(x) A x(B(x) A) 5. xB(x) xA(x) x(B(x) A(x))

ABIDET-BAHI H.

Dpartement Informatique 3me anne licence Module : Programmation logique

Srie de travaux dirigs n2 Unification et rsolution 1. Unifier les atomes suivants lorsque cest possible C1 = P(a,X,f(g(Y))) ; C2 = P(Z,f(Z),f(U)) 2. Unifier les atomes suivants lorsque cest possible : (a) A = p(X, f(X), g(f(X), X)) et B = p(Z, f(f(a)), g(f(g(a, Z)), V)) ; (b) A = p(f(g(X, Y)), g(V,W), Y) et B = p(f(Z), X, f(X)) ; 3. Dduire la clause Vide des trois formules suivantes : (a) p(X) p(f(X)) ; (b) p(a) ; (c) p(f(Z)). Mme question les formules suivantes : (a) q(f(Z), Y) ; (b) q(a, Y) p(f(Y), f(Y)) ; (c) p(f(X), f(Y)) p(X, Y) r(X) ; (d) r(b) ; (e) p(b, b) ; (f) q(X, Y) q(f(X), f(X)). 4. Vrifier en utilisant le principe de rsolution si les Fi sont des consquences des Si correspondants. Soient les ensembles de clauses : S1 = {X (P(X) Q(X)), X P(X) } S2 = { X (P(X) Q(X)), X P(X) } et soient les consquences : F1 = {X Q(X) } F2 = {X Q(X) } 5. Vrifier en Utilisant le principe de rsolution si les Fi sont des consquences des Si correspondants. S1= {XY p(X, Y) ,Z1Z2 (p(Z1, Z2) q(Z1))} F1 = U q(U) est consquence de : S2 = {P(a) Q(b), X P(X) } F2 = { X Q(X) } S3={X(P(X)(Q(X)R(X))), Y(Q(Y)R(Y))} F3 = X (R(X) P(X)) S4={X(P(X)(Q(X)R(X))),X(Q(X)R(X)). F4 = X (P(X) R(X))

Abidet-Bahi H.

Dpartement Informatique 3me anne licence Module : Programmation logique

6. Le monde de Tarski est un logiciel qui permet de tester la validit dune information par rapport une configuration choisie dans lunivers des blocs. Dans lexemple ci-dessous, deux prdicats un argument servent identifier le type dobjet : Cube(x) si x est un cube, Pyramide(y) si y est une pyramide une relation binaire Gauchede permet de dcrire la position relative dun objet par rapport un autre (on se limitera une seule direction)

Des formules de la logique des prdicats permettent dexprimer certaines proprits de la configuration. Par exemple : - Pyramide(C) - t [Cube(t) Gauchede(C, t)] - y z [Cube(y) Pyramide(z) Gauchede(y, z)] - u v w [(Gauchede(u, v) Gauchede(v,w)) Gauchede(u,w)] On se propose de dduire quil existe une pyramide droite de C, cest--dire lnonc : E : x [Pyramide(x) Gauchede(C, x)] a- Prparer les formules (clauses) et mettre en place la mthode de rfutation (on notera A le cube et B la pyramide du modle ci-dessus). b- Appliquer la rgle de rsolution avec unification pour dmontrer que lnonc E peut se dduire des informations donnes (on se limitera utiliser les seules rsolutions qui permettent daboutir le plus vite la contradiction).

Abidet-Bahi H.

Dpartement Informatique 3me anne licence Module : Programmation logique

Srie de travaux dirigs n3 : Cration de rgles et de requtes en Prolog 1. Ecrivez en Prolog les faits suivants : - Rex est un chien - Omar est le pre de Zina 2. Posez les questions suivantes : - Omar possde-t-il un livre ? - Samia est-elle une femme ? - Omar est-il le pre de Ali ?

- Ali joue avec Samia au football - Samia possde un livre

- Qui est le pre de Ali - Avec qui Ali joue-t-il au football ? - Qui jouent ensemble au football ?

3. Soit la base de donnes animalire /* AnimalsDatabase */ animal(mammal,tiger,carnivore,stripes). animal(mammal,hyena,carnivore,ugly). animal(mammal,lion,carnivore,mane). animal(mammal,zebra,herbivore,stripes). animal(bird,eagle,carnivore,large). animal(bird,sparrow,scavenger,small). animal(reptile,snake,carnivore,long). animal(reptile,lizard,scavenger,small). Donner les questions qui permettent davoir : (a) Tous les mammifres (b) Tous les carnivores qui sont des mammifres (c) Tous les mammifres qui ont des (rayures) stripes, (d) Tous les reptiles qui ont une (crinire) mane. 4. Dfinissez en Prolog les rgles suivantes : - Nabil lit un livre si ce livre est sur les voitures. - X a pour parents Y et Z si Y est sa mre et Z est son pre. 5. - Dfinissez des rgles qui donnent la nationalit dune personne, en fonction de son lieu de naissance. - Dfinissez une rgle qui indique si une personne est un immigrant (i.e. il nhabite pas dans le pays o il est n). - Donnez la requte qui vous donne la liste des immigrants algriens en Angleterre. 6. Soit la base de connaissances en Prolog suivantes : masculin(tom). % tom est de sexe masculin masculin(tim). masculin(bob). masculin(jim). % paquet de clauses feminin(pam). feminin(liz).

Abidet-Bahi H.

Dpartement Informatique 3me anne licence Module : Programmation logique

feminin(ann). feminin(pat). enfant(bob,pam). enfant(bob,tom). enfant(liz,tom). enfant(ann,bob). enfant(pat,bob). enfant(tim,liz). enfant(jim,pat). pere(X,Y) :enfant(Y,X), masculin(X). a) Quelle est la requte Prolog qui permet davoir le pre de bob (sans utiliser le prdicat pre) b) Dfinissez les prdicats suivants : mere/2, grand-pere/2, frere/2, tante/2, cousin/2 c) d) e) f) g) Dfinissez les prdicats suivants : enfant(X, Y) qui exprime que X est un enfant de Y fils(X,Y) qui exprime que X est un fils de Y fille(X, Y) qui exprime que X est une fille de Y frere-ou-sur(X, Y) qui exprime que X est frre ou sur de Y. Il est noter quun individu nest pas son propre frre ou sa propre sur.

7. On se propose de dfinir un prdicat permettant de colorier la carte suivante :

Les rgles sont les suivantes : On dispose de trois couleurs qui sont : vert, jaune et rouge ; Deux zones contigus doivent avoir des couleurs diffrentes. Ecrivez un prdicat coloriage(C1, C2, C3, C4) qui comportera deux parties. La premire partie gnre toutes les valeurs possibles de C1, C2, C3 et C4. La seconde vrifie si les colorations obtenues sont conformes la carte. Reprenez ce prdicat, et modifiez le programme en dplaant les tests de diffrence de couleurs le plus tt possible dans lcriture du prdicat, cest--dire en vrifiant les diffrences de couleurs ds que celles-ci sont instancies. Quelle en est la consquence ?

Abidet-Bahi H.

Dpartement Informatique 3me anne licence Module : Programmation logique

Srie de travaux dirigs n4 : Prolog et graphe de rsolution 1.Soit la base de connaissances suivante : habite(jean,paris). habite(hans,munich). habite(juan,madrid). capitale(paris). capitale(madrid). habite-capitale(Qui) :habite(Qui,Qqpart),capitale(Qqpart). a) Quelles seraient dans lordre les rponses la question : ?- habite-capitale(Qui). b) Construire le graphe de rsolution relatif cette question. c) Construire larbre ET/OU relatif la question. 2. Construire le graphe de rsolution pour rpondre la question : ?- oncle(x,nabil). Faits et rgles de dpart en Prolog. frre(ali,nabil). frre(omar,sami). pre(omar,ali), pre(omar,nabil). oncle(z,y) :- pre(x,y) , frre(x,z).

Abidet-Bahi H.

Dpartement Informatique 3me anne licence Module : Programmation logique

Srie de travaux dirigs n5 La rcursivit et les listes

1. Ecrire le programme prolog qui implmente le factoriel 2. Ecrire le programme prolog qui implmente la suite de fibonnacci dnition rcurrente : F(0)=F(1)=1 F(N+2)=F(N+1)+F(N),N0 3. Ecrire le prdicat, qui donne llment maximum dune liste dentiers. 4. Ecrire le prdicat qui efface un lment donn dans une liste. 5. Ecrire le prdicat qui insre un lment dans une liste. 6. Ecrire le prdicat qui inverse les lments dune liste. 7. Ecrire en Prolog le prdicat compresser permettant de supprimer des doublons conscutifs dans une liste L pour obtenir une liste L1. Remarque: Lordre des lments doit tre respect. Exemple: ?- compresser([a,a,a,a,b,c,c,a,a,d,e,e,e,e],L1). L1 = [a,b,c,a,d,e]. 7. Les mutants ce sont des animaux dont le nom est obtenu par telescopage de 2 noms d animaux rels: comme par exemple la vacheval ou le lapintade. Ecrivez un programme prolog qui fabrique tous les mutants partir d une collection danimaux. On pourra utiliser le prdicat prdfini name/2 , tel que name(X,Y) fournit la liste de caractres Y correspondant latome X

Abidet-Bahi H.