Vous êtes sur la page 1sur 14

l’Intelligence Artificielle

Le langage PROLOG

PRÉPARÉ PAR NAWAL BOURQUIA


Définition
2

Le langage Prolog est basé sur le calcul des prédicats du 1 er


ordre. Il peut être vu comme un langage d’expression de
connaissances. Il est aussi un langage qui manipule les
objets, les prédicats et les relations.
Le langage Prolog (PROgrammation LOGique) est né,
en France au début des années 70, d'un projet dont le but
n'était pas de faire un langage de programmation mais de
traiter les langages naturels, en l'occurrence le Français.
En effet, Alain Colmerauer, a élaboré un projet qui
permettait l'utilisation directe du français pour raisonner
et dialoguer avec un ordinateur.
Syntaxe – symboles clés
3

Chaque relation se termine par un point « . »


Si, plusieurs conditions, à l’intérieur d’une même clause,
sont séparées par une virgule « , », elle a la valeur logique
du « et ».
Si plusieurs conditions sont séparées par « ; », elle a la
valeur logique du « ou ».
Dans une règle, le symbole « :- » représente le « si » de la
logique.
La clause :
p :- n1,n2,…,np.
représente la formule logique n1  n2  …  np  p
Syntaxe – les types de clauses
4

Un programme Prolog est constitué de clauses. Celles-ci sont de trois types: faits,
règles et questions.
 Les faits : Exemple : Rachid achète une voiture.
sera représenté par une clause : acheter (rachid,voiture).
qu’on peut généraliser par : acheter ( X , Y ).
 des règles : Exemple : parent (X,Y) :- pere(X,Y) ; mere(X,Y).

la règle « parent » a été définie par deux relations ; pour que la règle « parent »
soit vérifiée, il faut et il suffit que la première relation soit vérifiée, ou la seconde.
 Des questions : Lorsque l’interprète prolog est prêt, il affiche « ?- » dans l’attente
d’une interrogation. Exemple :
?- pere(omar, X). >question posée après « ?- »
X=amine. >réponse de l’interprète Prolog
 Les objets variables commencent par une majuscule et les objets constantes
par une minuscule.
Exemple
5
Les faits :
epouse(nadia,rachid). % nadia est l'épouse de rachid
pere(rachid,hassan). % rachid est le père de hassan
pere(hassan,hanane). %hassan est le père de hanane
mere(amina,hanane). %amina est la mère de hanane

Les règles :
mere(M,E):-pere(P,E),epouse(M,P). % M est la mère de E si P est le père de E et si M est
l'épouse de P

Remarque : en Prolog tout ce qui suit le caractère % sur une ligne est un commentaire.

Question 1 : qui est l'épouse de rachid ?


?- epouse(X,rachid).

Question 2 : qui est l'époux de nadia ?


?- epouse(nadia,X).
Exemple
6

Question 3 : qui est le père de hassan ?


?- pere(X,hassan).

Question 4 : qui est le fils de rachid ? (qui a pour père rachid)


?- pere(rachid,X).

Question 5 : qui est la mere de hassan ?


?- mere(X,hassan).

Question 6 : qui est le fils de nadia ?


?- mere(nadia,X).

Question 7 : qui est le fils de hassan ?


?- pere(hassan,X).
Exemple
7

Question 8 : qui est le fils de amina ?


?- mere(amina,X).

Question 9 : qui est la mère de qui ?


?- mere(X,Y).

Question 10 : combien de liens de parenté "mère/fils" existe-t-il ?


?- mere(_,_).

Question 11 : existe-t-il une personne qui est sa propre mère ?


?- mere(X,X).
Syntaxe – les questions
8

On peut combiner deux questions grâce aux opérateurs « , » et « ; ».


Exemple: qui est le fils de rachid et le père de hanane?
?-pere(rachid,X),pere(X,hanane).
X=hassan
On peut personnaliser les réponses de prolog grâce à la fonction write().
Exemple:
mere(X,Y):-pere(Z,Y),epouse(X,Z),write(X)write(‘ est la mère de
’),write(Y).
ce qui donne à la question:
?-mere(X,hassan).
nadia est la mère de hassan
X=nadia.
Syntaxe – les structures
9

Pour éviter d’énoncer des faits ou règles trop longues on peut les réécrire
en les structurant.
Exemple :
cours(m4,lun,mar,14,16,samir,belghiti,si1).
est restructuré:
cours(
m4,
jour(lun,mar),
heure(14,16),
prof(samir,belghiti),
si1
).

La règle suivante permet de déterminer quel professeur pour quel cours:
Professeur(X,Y) :- cours(Y,_,_,X,_).
Syntaxe – les opérateurs arithmétiques
10

 Pour évaluer une expression arithmétique, on utilisera le


prédicat prédéfini « is ».
Exemple1 : ?- X is 2+5*4.
X= 22.
Exemple2 : ?- X is 2**3.
X= 8.
le symbole « ** » correspond à « puissance ».
Exemple3 : convertir les degrés fahrenheit en degrés celsius
ctemp_moyenne(Ville,C_temp):-ftemp_moyenne(Ville,F_temp),
C_temp is (F_temp – 32)*5/9.
Syntaxe –Exercice 1
11

Arbre généalogique ascendant


Questions
12

Chercher :
 Les grand-parents de Gilles
 Le petit-enfant d’Elvira
 Les mères de l’arbre
 Les pères de l’arbre
Exercice 2
13

Arbre généalogique descendant


Henri
Dupont

Léon Estelle
Dupont Dupont

Paul Marianne Jacques


Dupont Dupont Dupont

Gilles
Lisa Ralf
Dupont
Dupont Dupont
Questions
14

Chercher:
 Les cousins et cousines de Gilles
 Les oncles et tantes de Gilles
 Les petits enfants de Léon
 La tante de Marianne
 L’oncle de Jacques
 Les frères de Marianne