Vous êtes sur la page 1sur 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 2. xA(x) xB(x) x(A(x)  B(x))
quantificateurs 3. xA(x) xB(x) x(A(x)  B(x))
1. xyA(x,y) yxA(x,y) 4. x(A(x)  B(x)) xA(x) xB(x)
2. xyA(x,y) yxA(x,y) 5. A xA(x) x(A  A(x)) ; A ne contient
3. xyA(x,y) xA(x,x) pas d’occurrence libre de x
4. xA(x,x) xyA(x,y) ; x est libre pour 6. A xA(x) x(A  A(x)) ; A ne contient
y dans A(x,y) pas d’occurrence libre de x
5. xA(x) x(A(x) 7. A xA(x) x(A  A(x))
6. xyA(x,y) yxA(x,y) 8. A xA(x) x(A  A(x))

b) Composition entre les quantificateurs d) Composition entre l’implication et les


1. (xA(x)) xA(x) quantificateurs
2. (xA(x)) xA(x) 1. A xB(x) x(A  B(x))
3. xA(x) (xA(x)) 2. A xB(x) x(A  B(x))
4. xA(x) (xA(x)) 3. xB(x)  A x(B(x)  A)
4. xB(x)  A x(B(x)  A)
c)Composition entre la conjonction, la disjonction 5. xB(x) xA(x) x(B(x)  A(x))
et les quantificateurs
1. xA(x) xB(x) x(A(x)  B(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 - Ali joue avec Samia au football
- Omar est le père de Zina - Samia possède un livre

2. Posez les questions suivantes :


- Omar possède-t-il un livre ? - Qui est le père de Ali
- Samia est-elle une femme ? - Avec qui Ali joue-t-il au football ?
- Omar est-il le père de Ali ? - 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éfinissez les prédicats suivants : enfant(X, Y) qui exprime que X est un enfant de Y
d) fils(X,Y) qui exprime que X est un fils de Y
e) fille(X, Y) qui exprime que X est une fille de Y
f) frere-ou-sœur(X, Y) qui exprime que X est frère ou sœur de Y.
g) 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.

Vous aimerez peut-être aussi