• Aucun résultat trouvé

PROgrammation en LOGique PROLOG :

N/A
N/A
Protected

Academic year: 2022

Partager "PROgrammation en LOGique PROLOG :"

Copied!
13
0
0

Texte intégral

(1)

PROLOG :

PROgrammation en LOGique

” Programmer c'est Démontrer ”

(2)

BIBLIOGRAPHIE Programmation :

1. ” Programming in Prolog ”, Springer Verlag, 1981, W.F.Clocksin & al.

Traduction Francaise :” Programmer en Prolog”

Editions Eyrolles, 1985.

2. ” Prolog”, InterEditions, 1985, F. Giannesini, H. Kanoui, R. Pasero, M. Van Caneguem.

3. ” Prolog Programming for artificial intelligence”, Addisson Wesley Pub. Comp., 1986, I. Bratko

Théorie et implémentation :

1. ” Logic for Problem Solving ”, Elsevier North Holland, 1979, R.A. Kowalsky

2. ” Anatomie de Prolog”, InterEditions, 1986, M. Van Caneguem.

3. ” Introduction to Logic Programming ”, Academic Press, 1985, C.J. Hogger. ”

Ouvrages de Synthèses :

1. ” Prolog fondements et Applications ”, AFCET, 1985, Dunod, Condillac.

2. ” The Art of Prolog, Advanced Programming

Techniques”, M.I.T. Press, 1986, L. Sterling, E. Shapiro.

(3)

HISTORIQUE

1972

: Prolog I

Alain COLMERAUER (Université Aix-Marseille)

(découverte de la programmation logique et premier interpréteur) et

Robert A. KOWALSKY (Edinburgh University) (cadre théorique et premier compilateur)

1982

: Prolog II

M. Van Caneguem, et al.

(base du programme japonais de 5ème génération, version améliorée commercialisée par Prolog IA)

EXPLOSION : Plusieurs Prolog, Plusieurs Machines (Avec peu de nouveautes)

- Prolog/CENT -> Prolog-P - Foll-Prolog

- Prolog- CRISS - Xlog ou XILog

- Hybrides : LisLog, POPLog, -Prolog, etc..

1990 : Prolog III

Jacky LEGRAND Le langage PROLOG TECHNIP, etc...

1996 : Prolog IV -> SWI-Prolog

Jan Wielemaker, University of Amsterdam, The Netherlands

(Version 3.1, 1998, jan@swi.psy.uva.nl)

(4)

APPLICATIONS

- Prolog Vendors Group (Boeing, Dassault, IBM, Siemens, ...)

- Compulog Net (ESPRIT Network of Excellence in Compu. Logic) - Conférences Practical Applications of Prolog

PRODUITS standard ISO

Turbo Prolog (Borland)

IF-Prolog (Siemens Nixdorf) Delphia Prolog (Siglos)

Prolog III (PrologIA)

Visual Prolog (Prolog Development Center A/S) BIM Prolog (Integral Solutions Limited)

Win-Prolog (Logic Programming Associates) PDC Prolog (Prolog Development Center) Quintus Prolog (AI International Limited)

SWI-Prolog (Dept.of Social Science Informatics)

(5)

LES DIFFERENTS MODES DE PROGRAMMATION

L'exécution d'une tâche par une machine nécessite sa programmation, quelques soient les techniques utilisées et les surenchères de

vocabulaire associées.

La programmation logique constitue une révolution dans le domaine difficile d'en faire la description en se référant à des structures usuelles

LA PROGRAMMATION IMPERATIVE

• Nécessite l'expression, par le détail, du "comment ».

• Traduction d'une démarche algorithmique où le passage des données vers les résultats est décrit comme une suite d'actions.

LA PROGRAMMATION FONCTIONNELLE

• Description du résultat comme une composition de fonctions, agissant sur les objets. Relève aussi d'un mode de pensée algorithmique.

• Connue par Lisp, le langage de prédilection des premiers chercheurs en Intelligence Artificielle.

(6)

LA PROGRAMMATION LOGIQUE

• Délégation de la charge du "comment" au langage lui-même

• Description du problème à résoudre à partir de l'inventaire des objets concernés et des propriétés et relations qu'ils vérifient.

• Rapprochement usuel de Prolog avec la logique du premier ordre.

• Expression formelle de la connaissance qui porte à la fois des éléments implicites et le moyen de les rendre explicites.

• Mécanisme général et universel, moteur intégré au langage qui simule une partie de nos facultés de raisonnement.

• Facteur de non déterminisme qui conduit à entreprendre des actions qui ne conduisent pas forcément au résultat ou peuvent conduire à plusieurs résultats

(7)

LA PROGRAMMATION ORIENTEE-OBJET

• Plus qu'une simple technique d'implantation, représente la

synthèse idéale de tous les progrès en matière de programmation.

• Structure : démarche de conception qui donne la priorité à la description des invariants des processus

• Traitement : décentralisation du déclenchement des actions, modules communiquants et faiblement couplés

• Langage : mélange de techniques déclaratives et procédurales

(8)

PROLOG UN LANGAGE ” SURPRENANT ”

CAR

• Pas de séparation programme/données.

• Pas de mots-clés.

• Peu de symboles spéciaux : ceux de la langue française {. , ; : ! ? ( ) }.

• Pas de variables (au sens allocation d ’une case).

• Pas de structure de Contrôle.

• Pas de tableaux.

• Pas de pointeurs.

• Pas de fonctions (paramètres entrants ou sortant, résultats).

• Longueur des programmes diminue

BREF

C'est une opportunité de programmer pour non informaticiens MAIS

• Des arbres (listes)

• Opération implicite : UNIFICATION

• Un seul algorithme prédéfini : RESOLUTION (moteur d ’inférence)

• La notion d ’inconnus

• Réversibilité (analyse/synthèse)

• Non-déterminisme

• Uniformité (programme/données)

(9)

APPLICATION

TRAITEMENTS SYMBOLIQUES

• intégration, système de calcul formel

développement de compilateurs BASE DE DONNEES

• description, interrogation LANGAGES NATURELS

SYSTEMES DE DEDUCTION

• systèmes experts

• génération de plans

• génération de gammes d ’outillages CAO

EAO

GENIE LOGICIEL

• outil de preuve, de maquettage, de prototypage, d ’aide à la spécification formelle

(10)

REPRESENTATION DES CONNAISSANCES

LES OBJETS (Termes)

ce dont on a quelque chose à dire.

Les identifier et en faire la description pour aboutir à une représentation abstraite, purement syntaxique.

LES PREDICATS

ce que l'on dit des objets

Qualifient ou décrivent les relations dans lesquelles les objets sont impliqués.

LES FAITS

L'affirmation d'une qualité ou d'une relation à l'aide d'une formule atomique est une assertion ou un fait.

LES REGLES

les règles sont les germes du raisonnement elles portent la connaissance implicite et leur utilisation permet de la restituer

Une règle utilise la forme si…..alors

(11)

LOGIQUE DU 1er ORDRE ET PROLOG

LES OBJETS

objets simples représentés par un symbole constant (commencés par une minuscule) :

unix, Espagne, jaune, géranium, tennis, 1922

objets complexes, description à l'aide d'un terme composé : (symbole fonctionnel suivi de la liste parenthèsée des arguments) jugement(Jo,meurtre,1871,travaux_forcés)

vin(bordeaux,rouge,saint_émilion,1985)

arguments sont des termes correspondant à des objets simples ou complexes :

ordinateur(nom(start,st386_25),unix,intel_80386,4, dk_5_25_1200,dd(control_data,180,18))

Un symbole variable est un terme qui figure l'emplacement d'un ou plusieurs individus arbitraires non désignés

(commencés par une lettre capitale):

X, Y, Fleur, Femme, Couleur.

(12)

LES FAITS

Formules atomiques avec un symbole de prédicat suivi de la liste ordonnée et parenthèsée des arguments :

riche(paul), criminel(jo), offre(don_juan, fuchsia, ada) les arguments sont des objets simples ou complexes :

occasion(ordinateur(start_386_25,unix,intel_80386, ..))

LES REGLES

Formules composées construites avec les formules atomiques en utilisant :

NB : (toutes les formules ne sont pas des règles)

• les connecteurs logiques et, ou, implique, non { , , , }

• les quantificateurs existentiel et universel {, }

Une règle exprime qu'un certain nombre de conséquences ou conclusions sont vraies lorsque les hypothèses ou conditions sont vraies.

(13)

EXEMPLE

En Français

Si un médecin soigne une personne et qu'il est compétent pour l'affection dont elle souffre alors cette personne va guérir.

En Logique des Predicats

(quelque soit X Y Z)((personne(X) et affection(Y) et médecin(Z) et compétent(Z,Y) et soigne(Z,X)) implique guérir(X,Y)).

Références

Documents relatifs

 Comment déterminer la valeur de vérité d’une Comment déterminer la valeur de vérité d’une

Reprenez ce prédicat, et modifiez le programme en déplaçant les tests de différence de couleurs le plus tôt possible dans l’écriture du prédicat, c’est-à-dire en vérifiant

Vous tapez ce programme dans un éditeur de texte simple et sauvegardez dans un fichier « prprog.pl » (par exemple, ou tout autre nom avec le suffixe

Etant données une station de départ et une station d'arrivée, il faut trouver un chemin de l'une à l'autre en précisant les lignes empruntées, les directions

On considère cinq maisons, toutes de couleurs différentes (rouge, bleu, jaune, blanc, vert), dans lesquelles logent cinq professionnels (peintre, sculpteur, diplomate, docteur

Vous tapez ce programme dans un éditeur de texte simple et sauvegardez dans un fichier « prprog.pl » (par exemple, ou tout autre nom avec le suffixe .pl). ?- consult('

Dans cette troisième partie du TP, nous vous proposons d’effectuer une amélioration du fonctionnement du moteur d’inférence. Vous pouvez choisir une amélioration qui vous

Cette implémentation s'est en fait contenté, avec super.clone(); , de faire appel à la méthode clone() héritée de Object , qui crée un objet de la même classe que l'original