You are on page 1of 7

Université de Annaba - Département Informatique 3ème année licence Module : Programmation logique

Série de travaux dirigés n°1 La forme clausale 1- Trouver les formes prénexes des formules suivantes : a. P(x) xQ(x) b. (xP(x) xP(x))  Q c. xP(x) xQ(x,z) xyR(x,y) 2- Mettre sous forme clausale a. (xP(x) xP(x))  Q b. xP(x) xQ(x,z) xyR(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 s’il 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

Règles à suivre :
a) Transformation et permutation des quantificateurs 1. xyA(x,y) yxA(x,y) 2. xyA(x,y) yxA(x,y) 3. xyA(x,y) xA(x,x) 4. xA(x,x) xyA(x,y) ; x est libre pour y dans A(x,y) 5. xA(x) x(A(x) 6. xyA(x,y) yxA(x,y) b) Composition entre les quantificateurs 1. (xA(x)) xA(x) 2. (xA(x)) xA(x) 3. xA(x) (xA(x)) 4. xA(x) (xA(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 d’occurrence libre de x A xA(x) x(A  A(x)) ; A ne contient pas d’occurrence libre de x A xA(x) x(A  A(x)) A xA(x) x(A  A(x)) les

Composition entre l’implication 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.

Département Informatique 3ème année licence Module : Programmation logique

Série de travaux dirigés n°2 Unification et résolution 1. Unifier les atomes suivants lorsque c’est possible C1 = P(a,X,f(g(Y))) ; C2 = P(Z,f(Z),f(U)) 2. Unifier les atomes suivants lorsque c’est 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. Déduire la clause Vide des trois formules suivantes : (a) ¬p(X) p(f(X)) ; (b) p(a) ; (c) ¬p(f(Z)). Même 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. Vérifier en utilisant le principe de résolution si les Fi sont des conséquences 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 conséquences : F1 = {X Q(X) } F2 = {X Q(X) } 5. Vérifier en Utilisant le principe de résolution si les Fi sont des conséquences des Si correspondants. S1= {XY p(X, Y) ,Z1Z2 (p(Z1, Z2) q(Z1))} F1 = U q(U) est conséquence 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.

Département Informatique 3ème année licence Module : Programmation logique

6. Le “monde de Tarski” est un logiciel qui permet de tester la validité d’une information par rapport à une configuration choisie dans l’univers des blocs. Dans l’exemple ci-dessous,  deux prédicats à un argument servent à identifier le type d’objet : Cube(x) si x est un cube, Pyramide(y) si y est une pyramide  une relation binaire “Gauchede” permet de décrire la position relative d’un objet par rapport à un autre (on se limitera à une seule direction)

Des formules de la logique des prédicats permettent d’exprimer certaines propriétés 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 déduire qu’il existe une pyramide à droite de C, c’est-à-dire l’énoncé : E : x [Pyramide(x)  Gauchede(C, x)] a- Préparer les formules (clauses) et mettre en place la méthode de réfutation (on notera A le cube et B la pyramide du modèle ci-dessus). b- Appliquer la règle de résolution avec unification pour démontrer que l’énoncé E peut se déduire des informations données (on se limitera à utiliser les seules résolutions qui permettent d’aboutir le plus vite à la contradiction).

Abidet-Bahi H.

Département Informatique 3ème année licence Module : Programmation logique

Série de travaux dirigés n°3 : Création de règles et de requêtes en Prolog 1. Ecrivez en Prolog les faits suivants : - Rex est un chien - Omar est le père de Zina 2. Posez les questions suivantes : - Omar possède-t-il un livre ? - Samia est-elle une femme ? - Omar est-il le père de Ali ?

- Ali joue avec Samia au football - Samia possède un livre

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

3. Soit la base de données animalière /* 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 d’avoir : (a) Tous les mammifères (b) Tous les carnivores qui sont des mammifères (c) Tous les mammifères qui ont des (rayures) stripes, (d) Tous les reptiles qui ont une (crinière) mane. 4. Définissez en Prolog les règles suivantes : - Nabil lit un livre si ce livre est sur les voitures. - X a pour parents Y et Z si Y est sa mère et Z est son père. 5. - Définissez des règles qui donnent la nationalité d’une personne, en fonction de son lieu de naissance. - Définissez une règle qui indique si une personne est un immigrant (i.e. il n’habite pas dans le pays où il est né). - Donnez la requête qui vous donne la liste des immigrants algériens 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.

Département Informatique 3ème année 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 requête Prolog qui permet d’avoir le père de bob (sans utiliser le prédicat père) b) Définissez les prédicats suivants : mere/2, grand-pere/2, frere/2, tante/2, cousin/2 c) d) e) f) g) Définissez les prédicats 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-sœur(X, Y) qui exprime que X est frère ou sœur de Y. Il est à noter qu’un individu n’est pas son propre frère ou sa propre sœur.

7. On se propose de définir un prédicat permettant de colorier la carte suivante :

Les règles sont les suivantes : On dispose de trois couleurs qui sont : vert, jaune et rouge ; Deux zones contiguës doivent avoir des couleurs différentes. Ecrivez un prédicat coloriage(C1, C2, C3, C4) qui comportera deux parties. La première partie génère toutes les valeurs possibles de C1, C2, C3 et C4. La seconde vérifie si les colorations obtenues sont conformes à la carte. Reprenez ce prédicat, et modifiez le programme en déplaçant les tests de différence de couleurs le plus tôt possible dans l’écriture du prédicat, c’est-à-dire en vérifiant les différences de couleurs dès que celles-ci sont instanciées. Quelle en est la conséquence ?

Abidet-Bahi H.

Département Informatique 3ème année licence Module : Programmation logique

Série de travaux dirigés n°4 : Prolog et graphe de résolution 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 l’ordre les réponses à la question : ?- habite-capitale(Qui). b) Construire le graphe de résolution relatif à cette question. c) Construire l’arbre ET/OU relatif à la question. 2. Construire le graphe de résolution pour répondre à la question : ?- oncle(x,nabil). Faits et règles de départ en Prolog. frère(ali,nabil). frère(omar,sami). père(omar,ali), père(omar,nabil). oncle(z,y) :- père(x,y) , frère(x,z).

Abidet-Bahi H.

Département Informatique 3ème année licence Module : Programmation logique

Série de travaux dirigés n°5 La récursivité et les listes

1. Ecrire le programme prolog qui implémente le factoriel 2. Ecrire le programme prolog qui implémente la suite de fibonnacci définition récurrente : F(0)=F(1)=1 F(N+2)=F(N+1)+F(N),N≥0 3. Ecrire le prédicat, qui donne l’élément maximum d’une liste d’entiers. 4. Ecrire le prédicat qui efface un élément donné dans une liste. 5. Ecrire le prédicat qui insère un élément dans une liste. 6. Ecrire le prédicat qui inverse les éléments d’une liste. 7. Ecrire en Prolog le prédicat compresser permettant de supprimer des doublons consécutifs dans une liste L pour obtenir une liste L1. Remarque: L’ordre des éléments 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 réels: comme par exemple la vacheval ou le lapintade…. Ecrivez un programme prolog qui fabrique tous les mutants à partir d une collection d’animaux. On pourra utiliser le prédicat prédéfini name/2 , tel que name(X,Y) fournit la liste de caractères Y correspondant à l’atome X

Abidet-Bahi H.