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
YZ (((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%