Programmation logique
Principal repr´
esentant: Prolog (1972) Bas´
e sur la logique des pr´
edicats
Particularit´
es:
Unification et filtrage
Retour arri`
ere
D´
eclaratif
Extensions: programmation par contraintes
IFT-2030 Stefan Monnier 1
Relations
Relation n-aire sur les ensembles X1,...,Xn: ensemble des tuples de
la forme hx1, ..., xnio`
uxiXi.
Fonction de X1vers X2: relation binaire qui met en relation au plus 1
´
el´
ement de X2avec chaque ´
el´
ement de X1.
Les langages fonctionnels manipulent les relations qui sont des
fonctions
Les langages logiques peuvent manipuler n’importe quelle relation
Avantage: permet d’aller “dans les 2 sens”
IFT-2030 Stefan Monnier 2
Exemple sexu´
e
genre(luc, homme).
genre(julie, femme).
genre(jean, homme).
male(X) :- genre(X, homme).
hp(X) :- genre(X, homme), genre(X, femme).
mpt(X,Y) :- genre(X, homme), genre(Y, femme).
mpt(X,Y) :- genre(X, femme), genre(Y, homme).
IFT-2030 Stefan Monnier 3
Questions-r´
eponses
| ?- genre(X, homme).
X=luc?;
X = jean ? ;
no
| ?- genre(luc, X).
X = homme ? ;
no
| ?- mpt(X, Y), genre (Y, femme).
X = luc, Y = julie ? ;
X = jean, Y = julie ? ;
no
| ?- mpt(X, X).
no
IFT-2030 Stefan Monnier 4
Listes
Les paires s’´
ecrivent: [X|Y]
Les listes s’´
ecrivent: [X1, X2, ..., Xn][X1|[X2|[...[XN|[] ]]]]
Ou ensemble: [X1, ..., Xn|Y][X1|[...[Xn|Y]]]
append([], ZS, ZS).
append([X|XS], YS, [X|ZS]) :- append(XS, YS, ZS).
| ?- append([X, Y], Z, [1,2,3]).
X=1,Y=2,Z=[3]?;
no
| ? append(X, Y, [1,2,3]).
IFT-2030 Stefan Monnier 5
1 / 34 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !