0% ont trouvé ce document utile (0 vote)
13K vues20 pages

Initiation À Prolog

cours prolog

Transféré par

Hassen Hamdi
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)
13K vues20 pages

Initiation À Prolog

cours prolog

Transféré par

Hassen Hamdi
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

Initiation à Prolog

Asma NAFTI
Introduction

2
Prolog

 Prolog est un langage de programmation logique.


 Le nom Prolog vient de Programmation Logique.
 Il est utilisé principalement en Intelligence Artificielle.
 Ce qui est phénoménal, c'est qu'en Prolog, il suffit
 de décrire ce que l'on sait sur le domaine étudié, (en
Intelligence Artificielle, on appelle cela une base de
connaissances),
 puis on pose une question à propos de ce domaine et Prolog
va nous répondre, sans que l’on ait à lui dire comment
construire sa réponse !
3
Prolog utilisé en TP
• SWI-Prolog Fonctionne sous Linux, Windows et MacOS.
• Disponible gratuitement sur ce lien:
[Link]
• Autres Prolog gratuits
• Il y a également Visual Prolog PersonalEdition, gratuit pour un
usage privé
• GNU-Prolog (par l'INRIA).

4
Partie 2
Bases de connaissance

5
Construction d’un programme Prolog

• Base de connaissance : description du problème à


résoudre.
• Une base de connaissance est composée de Clauses:
• Faits
• Règles
• L’utilisateur pose ensuite une Question
• Le programme donne sa Réponse

6
Les Faits (1/4)
• Les faits sont des données élémentaires que l’on
considère vraies.
• Ce sont des formules atomiques constituées d'un
prédicat suivi ou pas d’une liste ordonnée
d’arguments mis entre parenthèses qui sont les objets
auxquels s'appliquent le prédicat.
• Un programme Prolog est au moins constitué d’un ou
plusieurs faits car c’est à partir d’eux que Prolog va
pouvoir rechercher des preuves pour répondre aux
requêtes de l’utilisateur.
• Ce sont en quelque sorte les hypothèses de travail.
7
Les Faits (2/4)
• Forme : nom prédicat(arg1,arg2, …, argn).
• Les parenthèses et arguments sont optionnels
• Exemples:
• satellite(terre, soleil).
• satellite(lune, terre).
• capitale('France', ‘Paris').
8
Les Faits (3/4)
• Généralement, on place toutes les déclarations de faits au
début du programme même si ce n’est pas obligatoire.
• Un fait se termine toujours par un point «.»
• Autres Exemples :
• Henri IV est le père de Louis XIII se traduit par :
pere(henri4,louis13). ou par : pere('Henri4','Louis13').
• Marie de Médicis est la mère de Henri IV se traduit par :
mere(marie-de-medicis,henri4).
ou mere('Marie de Medicis', 'Henri4').
• 0! = 1 se traduit par : factorielle(0,1).

9
Les faits (4/4 )
Exemple de programme prolog:
mange.
herbivore(chevre).
mange(loup, chevre).

?-mange.
true.
?-herbivore(chevre).
true.
?-herbivore(loup).
false.
?-carnivore(loup)
ERROR: toplevel: Undefined procedure carnivore/1 10
Les règles (1/4 )
• Un programme Prolog contient presque toujours des
règles, cependant ce n’est pas une obligation.
• Les règles énoncent la dépendance d’un prédicat par
rapport à d’autres prédicats
• Si les faits sont les hypothèses de travail, les règles
sont des relations qui permettent à partir de ces
hypothèses d’établir de nouveaux faits par déduction
• (si on a démontré F1 et F1⇒F2 alors on a démontré F2).
• Cette règle est appelée en logique le Modus Ponens

11
Les règles (2/4 )
Exemple: Fido aboie si Fido est en colère
enColere(fido) ⇒aboie(fido).
F1F2
F1 vrai alors F2 vrai
s’écrit en Prolog : aboie(fido) :- enColere(fido).
F2:-F1.

Le «si» s’écrit « :-» en Prolog et correspond à l’implication


« ⇒ »
12
Les règles (4/4 )
• Il peut y avoir plusieurs conditions derrière le «:-»,
séparées par des virgules ou des points-virgules
• La virgule correspond à un ET logique (conjonction)
• Le point-virgule correspond à un OU logique (disjonction)
Exemple :
La relation telle que si on est le père du père ou de la mère
de quelqu’un alors on est son grand-père se traduit par:
grandpere(ali,ahmed) :- pere(ali,salah), pere(salah,ahmed).
grandpere(hedi,ahmed):-pere(hedi,amel), mere(amel,ahmed).
13
Les règles (4/4 )
Exemple de programme prolog:

mange(loup, chevre).
cruel(loup) :-mange(loup, chevre).
carnivore(loup) :-mange(loup, chevre), animal(chevre).

?-cruel(loup).
true.
?-carnivore(poireau).
false.
Pas d’individu poireau => Pas d’évaluation du prédicat carnivore => false
?-carnivore(loup)
ERROR: carnivore/1: Undefined procedure: animal/1
Individu loup => Evaluation du prédicat carnivore => prédicat non défini:14
animal
Introduction des Variables (1/4)
Commencent par une majuscule ou _
• Servent à dénoter une catégorie d’objets
• Les variables utilisées dans un fait ou une règle sont
universellement quantifiées par Prolog, avec le
quantificateur ∀(«quel que soit» ou «pour tout»).
• Les variables utilisées dans une requête sont
existentiellement quantifiées par Prolog, avec le
quantificateur ∃(«existe-t-il»).

15
Introduction des Variables (2/4)
• Sont utilisées dans les règles afin de les généraliser :
grandpere(ali,ahmed) :- pere(ali,salah), pere(salah,ahmed).
grandpere(hedi,ahmed):-pere(hedi,amel), mere(amel,ahmed).
Généralisé par :
grandpere(X,Y):-pere(X,Z),(pere(Z,Y) ; mere(Z,Y))
• Peuvent aussi être utilisées dans les faits
Superman est plus fort que tout le monde se traduit par :
plusfort(superman,X).

16
Introduction des Variables (3/4)
Variable anonyme
Notée '_' (tiret bas)
Représente un objet dont on ne souhaite pas connaître la
valeur, c’est une variable muette.
?-invite(X,_).
Prolog ne donnera que les valeurs pour X

17
Introduction des Variables (4/4)
• Exemple
mange(loup, chevre).
carnivore(X) :-mange(X, Y), animal(Y).
cruel(X) :-mange(X, _).

?-cruel(loup)
true
?-carnivore(loup)
ERROR: carnivore/1: Undefined procedure: animal/1
?-carnivore(poireau)
false
18
Bibliographie
• Cours en ligne
[Link]
[Link] (En anglais)
• Pour aller plus loin:
• Foundations of Logic Programming, J. W. Lloyd, Springer-VerlagNew
York, Inc. New York, NY, USA ©1984 ISBN:0-387-13299-6
• Prolog, F. Giannesini, H. Kanoui, R. Paseroet M. Van Caneghem,
InterÉditions, 1985
• Programmingin Prolog, W.F. Clocksin, C.S. Mellish, Springer-VerlagTelos;
4th edition(September1994)
• The art of Prolog, 2nd Edition, Advanced Programming Techniques,L. Sterling, E.
Shapiro, the MIT Press, 1994, ISBN-13: 978-0-262-19338-2
• Logic Programming and Prolog (2nded),Ulf Nilsson and Jan Maluszynski,
19
2000
Merci pour votre Attention

20

Vous aimerez peut-être aussi