Introduction à la programmation logique : Langage Prolog.
Programmer en Prolog
signifie identifier des objets et leurs relations. On doit déduire objets et
relations entre objets d’un monde connu, comme par exemple des phrases comme «
Jean est le père d’Anne » ou « Pierre est riche » ou encore « Les objets rares sont
chers ». Les objets Prolog ne correspondent pas aux objets des langages de
programmation par objets ! • Programmer signifie donc : - Spécifier des faits
(vérifiés) sur les objets et leurs relations ; - Définir des règles sur
les objets et leurs relations ; - Poser des questions sur les objets et
leurs relations. Et si, à première vue, la réponse se limite à un oui ou
non, Prolog peut faire plus.
Langages de style
impératif : C, ADA, PASCAL, JAVA (objet)...
Langages de style fonctionnel : Lisp, Scheme, CAML, ML...
Langage de style déclaratif : Prolog
→ On “raconte” le problème à résoudre, mais pas comment
on le résoud
→ Souvent utilisé en Intelligence Artificielle
Langage d’expression des
connaissances fondé sur la logique des prédicats du 1er ordre
- Implémentation du principe
de résolution
- Programmation déclarative
L’utilisateur définit une
base de connaissances (des faits, des règles), pas d’instruction, pas
d’affectation, pas de boucles explicites.
Uniquement des clauses exprimant
des faits, des règles, des questions
L’interpréteur PROLOG
utilise cette base de connaissances pour répondre à des questions
pere(alain, jeanne).
pere(alain, michel).
pere(michel, robert).
mere(sylvie, robert).
mere(sylvie, luc).
pere(georges, sylvie).
Questions Réponses
:- pere(alain, jeanne). oui
:- pere(alain, robert). non
:- pere(alain, X). oui X=michel
X=jeanne
:- mere(X, robert). oui X=sylvie
:- mere(X, michel). non
:- pere(alain, X), pere(X, robert). oui X=michel
Relation grand-père en
logique du premier ordre :
∀X
∀Y (∃Z pere(X,Z)
∧ (pere(Z,Y
) ∨ mere(Z,Y ))) ⇒ papy(X,Y
)
∀X
∀Y∀Z (((pere(X,Z) ∧ pere(Z,Y
)) ⇒ papy(X,Y ))
∧((pere(X,Z)
∧ mere(Z,Y
)) ⇒ papy(X,Y )))
Formulation prolog :
gpere(X,Y) :- pere(X,Z), pere(Z,Y).
gpere(X,Y) :- pere(X,Z), mere(Z,Y).
Il existe de nombreux
interpréteurs Prolog
Présentation de la syntaxe
et des conventions les plus couramment utilisées à l’heure actuelle
→ SWI-Prolog
SWI-Prolog
• Version disponible pour Linux,
MS-Windows, MacOS X (under GNU Public License).
unix% /usr/local/bin/swipl
Welcome to SWI-Prolog (Multi-threaded, Version 5.2.0)
Copyright (c) 1990-2003 University of Amsterdam.
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free
software, and you are welcome to redistribute it under
certain conditions.
Please visit http://www.swi-prolog.org for details.
For help, use ?- help(Topic). or ?- apropos(Word).
?- help.
?- help(consult).
?- [nom_fichier].
?- consult(‘Geographie.pl’).
% Geographie.pl
compiled 0.00 sec, 1,952 bytes
Yes
?-
?- halt.
unix%
0 Commentaires