0% ont trouvé ce document utile (0 vote)
45 vues2 pages

Solutions Du tp1

Le document présente des solutions pour un TP en Prolog, incluant la définition de prédicats basés sur des faits. Il fournit des exemples de requêtes pour interroger ces prédicats, ainsi que des instructions sur la modification dynamique des programmes Prolog. Des opérations comme l'ajout et la suppression de clauses sont également expliquées.

Transféré par

azizataleb
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
45 vues2 pages

Solutions Du tp1

Le document présente des solutions pour un TP en Prolog, incluant la définition de prédicats basés sur des faits. Il fournit des exemples de requêtes pour interroger ces prédicats, ainsi que des instructions sur la modification dynamique des programmes Prolog. Des opérations comme l'ajout et la suppression de clauses sont également expliquées.

Transféré par

azizataleb
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Solutions du TP1

1- Saisir les faits donnés sur un fichier texte tel que bloc-notes ou sur l’éditeur de
Prolog.

2- La définition de nouveaux prédicats se fait à l’aide des prédicats déjà définis dans la
base de faits.
pere(X,Y) :- homme(X), parent(X, Y).
grand-pere(X,Y) :- homme(X), parent(X, Z), parent(Z, Y).
mere(X,Y) :- femme(X), parent(X, Y).
grand-mere(X,Y) :- femme(X), parent(X, Z), parent(Z,Y).
frere(X,Y) :- homme(X), parent(Z, X), parent(Z, Y).
soeur(X,Y) :- femme(X), parent(Z, X), parent(Z, Y).
cousin(X, Y) :- homme(X), grand-père(Z, X), grand-père(Z, Y).
cousin(X, Y) :- homme(X), grand-mere(Z, X), grand-mere(Z, Y).
cousine(X, Y) :- femme(X), grand-pere(Z, X), grand-pere(Z, Y).
cousin(X, Y) :- femme(X), grand-mere(Z, X), grand-mere(Z, Y).
oncle(X,Y) : homme(X), parent(Z, Y), frere(Z, X).
tante(X, Y) :- femme(X), parent(Z, Y), sœur(Z, X).

Cette solution n’est pas unique.


Pour chacun des prédicats précédents vous pouvez poser différentes questions pour
vérifier la sémantique de ces prédicats.

3- a. Qui est le père de tarek ?


?- pere(X, tarek).

b. Qui est le grand père de farid ?


?- grand-pere(X, farid).
c. La liste de tous les pères. (on utilise la variable anonyme ‘_’ puisque on ne veut pas
afficher la valeur du deuxième argument).
?- pere(X, _).
d. La liste de tous les grands-pères.
?- grand-pere(X, _).
e. La liste des cousins-cousines.
?- cousin(X, _).
?-cousine(X, _).

4- Pour modifier un programme en ajoutant ou en retranchant des clauses( faits ou règles)


au cour d’exécution, il suffit d’utiliser le mot clé « dynamic».
a. Dans le programme : « :- dynamic prédicat/nb arguments » par exemple :
:-dynamic ancetre/2. Dans Prolog : ?- dynamic ancetre/2.
b. Au cours de l’exécution : ?- assert(ancetre(X,Y) :- parent(X,Y)). De cette façon
nous avons ajouté une nouvelle clause.

c. On veut supprimer par exemple un fait : parent(nadia, farid). On procéde comme


suit : ?- retract(parent(nadia, farid)).

d. On veut supprimer la clause correspondante au prédicat « mere » :


?-retract(mere(X,Y) :-feminin(X), parent(X,Y)).

Vous aimerez peut-être aussi