Accueil
Professeur et Démonstrateurs
Horaires et locaux
Notes de cours
Démonstrations et devoirs
Examens
Liens utiles
Au sujet du livre de cours
Consultez vos notes
Foire aux questions (FAQ)
|
|
Démonstration 9: PPP (Premiers Pas en Prolog)
Note: Pas de "baratin" cette semaine, vous démonstrateurs
aborderons avec vous Prolog ce nouveau langague qu'il
vous faut apprendre... Comme d'habitude un seul conseil: pratiquez !!!
Prenez notes que prochainement (je vous laisse remettre le tp2 !),
un dernier tp vous sera donné à faire en Prolog .
Travail pratique (pas noté mais fortement recommandé)
Philosophie de comptoir
Soit les faits suivants:
homme(jean).
homme(paul).
homme(jacques).
femme(julie).
femme(jeanne).
femme(isabelle).
aime(jean,julie).
aime(paul,julie).
aime(jacques,jean).
aime(julie,paul).
aime(jeanne,jacques).
aime(julie,isabelle).
heureux(X) :- aime(X,Y), aime(Y,X).
P1) Écrivez votre définition (via une relation) d'un être humain
heureux en utilisant les relations existantes (et d'autres au besoin).
P2) Écrivez votre définition (via une relation) d'un mariage entre
deux être humains.
P3) Soit la définition judéo-chrétienne du mariage entre deux
individus X et Y :
couple_legitime(X,Y) :- homme(X), femme(Y).
couple_legitime(X,Y) :- femme(X), homme(Y).
mariage_judeo(X,Y) :-
couple_legitime(X,Y),
aime(X,Y),
aime(Y,X).
P3.1) Effacez (à l'aide de votre interpréteur) le but: mariage_judeo(X,Y)
P3.2) Quel problème (non philosophique) voyez-vous à cette définition ?
|
Arbre généalogique
À l'aide de faits du genre pere(jean,paul) dont la
sémantique est jean et le père de paul , et
de faits du type mere(jeanne,paul) , écrire les relations suivantes:
- A1)
parent(X,Y) , indiquant que X est le
parent (père ou mère) de Y
- A2)
frere_ou_soeur(X,Y) , indiquant que X et
Y sont frères ou soeurs.
- A3)
grand_parent(X,Y) , indiquant que X est le
grand-parent (grand-père ou grand-mère) de Y .
- A4)
ancetre(X,Y) , indiquant que X est un
ancètre (parent, grand-parent ou une combinaison) de Y .
Testez vos relations de manière existentielle (avec des variables) et
non existentielle.
|
Listes en Prolog Écrire les prédicats suivants:
- L1)
premier(X,Y) , qui est vrai lorsque X est le premier élément de la liste Y.
- L2)
dernier(X,Y) , qui est vrai lorsque X est le dernier élément de la liste Y.
- L3)
sauf_dernier(X,Y) , qui est vrai lorsque X est la liste Y sans son dernier élément.
- L4)
append(X,Y,Z) , qui est vrai lorsque X concatené a Y est la liste Y
- L5)
membre(X,L) , qui est vrai lorsque X est un élément de L
- L6)
pair(X) , qui est vrai lorsque X a un nombre pair d'éléments.
- L7)
impair(X) , qui est vrai lorsque X a un nombre impair d'éléments.
- L8)
elt_impair(X,Y) , qui est vrai lorsque Y est la liste X privée des éléments de rang pairs.
- L9)
elt_pair(X,Y) , qui est vrai lorsque Y est la liste X privée des éléments de rang impairs.
- L10)
somme_elts(X,Y) , qui est vrai lorsque Y est la somme
des élements de la liste X. On supposera que X est ici une liste
d'entiers.
Tester tous vos prédicats de manière non existentielle (sans variable)
puis existentielle. Dressez la liste des prédicats qui fonctionnent
mal en questionnement existentiel.
|
[top] |