• Aucun résultat trouvé

TD Programmation en Logique n°1

N/A
N/A
Protected

Academic year: 2022

Partager "TD Programmation en Logique n°1"

Copied!
2
0
0

Texte intégral

(1)

Page 1 sur 2

Université Grenoble Alpes

U.F.R. Sciences de l’Homme et de la Société L2 MIASHS

TD Programmation en Logique n°1

Exercice 1

Parmi les chaînes de caractère suivantes, lesquelles sont des atomes, des variables, des termes complexes (donner le foncteur et l'arité) ou rien de tout ceci ?

1. aime(Vincent,mia) 2. 'aime(Vincent,mia)' 3. Combat(boxer)

4. boxer(Combat)

5. et(grand(pain),roti(pain)) 6. et(grand(X),roti(X))

7. _et(grand(X),roti(X)) 8. (Marie tue Vincent) 9. tue(Marie Vincent) 10. tue(Marie,Vincent) Exercice 2

Combien y a-t-il de faits, règles, clauses (têtes et queues) et prédicats ? femme(vincent).

femme(mia).

homme(jules).

personne(X) :- homme(X); femme(X).

aime(X,Y) :- connait(Y,X).

mere(Y,Z) :- femme(Y), fils(Z,Y).

mere(Y,Z) :- femme(Y), fille(Z,Y).

Exercice 3

Représenter les affirmations suivantes en Prolog 1. Petiot est un tueur.

2. Mia et Marcellus sont mariés.

3. Dieu est mort.

4. Marcellus tue tous ceux qui embrassent Mia.

5. Mia aime tous les bons danseurs.

6. Jules mange tout ce qui est sucré ou salé.

Exercice 4

Avec cette base de connaissance, que répond Prolog aux questions suivantes ? magicien(ron).

aUneBaguette(harry).

joueurDeQuidditch(harry).

magicien(X) :- aUnBalai(X),aUneBaguette(X).

aUnBalai(X) :- joueurDeQuidditch(X).

?- sorcier(ron).

?- magicien(hermione).

?- magicien(harry).

?- magicien(X).

?- sorcier(X).

(2)

Page 2 sur 2

Exercice 5

On dispose de faits concernant des vols d'avions. Les arguments sont les suivants : l'aéroport de départ, celui d'arrivée, l'heure de départ, l'heure d'arrivée et le numéro du vol.

Par exemple :

vol(roissy,toulouse,10,11,af712).

vol(roissy,francfort,13,15,af901).

vol(lyon,francfort,12,14,lh119).

vol(francfort,berlin,19,21,lh256).

...

Ecrire les requêtes permettant de connaître : a) les numéros des vols de Lyon à Berlin ;

b) les horaires de départ et d'arrivée des vols au départ de Roissy ; c) les numéros des vols partant de Toulouse après 15h ;

d) les aéroports accessibles directement depuis Francfort ;

e) les aéroports accessibles depuis Francfort, avec une correspondance, sans tenir compte des horaires, sans retour à Francfort.

f) même chose en tenant compte des horaires, pour un voyage dans la journée sans retour à Francfort.

Exercice 6

Soit le programme Prolog suivant :

a(X) :- b(X).

a(X) :- c(X),X<3.

b(1).

b(2).

c(2).

c(4).

c(6).

c(X) :- b(N),X is N*2.

Quelles sont toutes les solutions à la requête a(N) ? Exercice 7

Un club d'aviron décide d'utiliser Prolog pour composer les équipes lors de compétitions d'aviron.

a) Représenter par des faits l'âge des athlètes (repérés par leur nom) et leur place préférée (rameur ou barreur) avec le prédicat athlete/3.

b) Ecrire ensuite le prédicat equipe/4 qui donne les quatre noms d'une équipe possible : 3 rameurs et un barreur. Utiliser l’opérateur '\==' (différent de).

c) Ecrire le prédicat equipe2/5 qui comporte en plus l'âge moyen de l'équipe :

?- equipe2(B,R1,R2,R3,AM).

B=dupont, R1=martin, R2=durand,R3=lefevre, AM=22.5

Exercice 8

Ecrire le prédicat estBissextile/1 qui est vrai si l'année passée en argument est bissextile. Une année est bissextile si elle est divisible par 4 mais n’est pas divisible par 100, à moins d’être divisible par 400.

On pourra utiliser les opérateurs ‘mod’ (modulo), '=:=' (égalité arithmétique) et '=/='

(différence arithmétique) Exercice 9

On suppose qu'on dispose des prédicats parent/2, homme/1 et femme/1. Ecrire les prédicats pere/2, mere/2, grandPere/2, grandMere/2, frere/2, soeur/2, oncle/2 et tante/2.

Références

Documents relatifs

maxi(A,M) unifie M avec la valeur maximale de l’arbre A. b) Ecrire le prédicat profondeur/2 qui détermine la profondeur d’un arbre binaire donné... Le premier argument est un animal

maxi(A,M) unifie M avec la valeur maximale de l’arbre A. b) Ecrire le prédicat profond_arbre/2 qui détermine la profondeur d’un arbre binaire donné. c) Ecrire le prédicat

´ Ecrivez deux versions d’une fonction qui prend en entr´ee les coordonn´ees de deux points (sous forme de paires de r´eels) et qui renvoie le carr´e de la longueur du

Ecrire une fonction qui prend en entr´ee un entier ´ n et une paire de valeurs r´eelles qui sont en fait les valeurs du cosinus et du sinus d’un certain angle x, et qui renvoie la

Un polynˆome (creux) sera alors constitu´e d’une liste de monˆomes, cette liste n’´etant pas suppos´ee ˆetre tri´ee en fonction des degr´es des

On d´esigne par les lettre f , g et b les proposition atomiques « ˆetre membre de la direction financi`ere », « ˆetre membre de la direction g´en´erale »,« ˆetre membre de

´ Ecrivez, au moyen d’une fonctionnelle sur listes, une fonction qui calcule le produit des ´el´ements d’une liste d’entiers et qui renvoie 0 d`es qu’un « 0 » est trouv´e

TD de programmation fonctionnelle et logique Corrig´e du TP 1 : listes et r´ecursivit´e. Fonctions classiques sur les