CSI2520, Hiver 2007 Paradigmes de Programmation CSI 2520.

Slides:



Advertisements
Présentations similaires
P.T. 2012/2013 Mise en œuvre de Prolog.
Advertisements

PROLOG 1 Prolog - Initiation
DTD Sylvain Salvati
Le langage Prolog Structures de données
Un langage de programmation logique
Algorithmique Résume.
Rappels / concepts de base de l’IA
Termes préfixés et N-uplets
Calcul propositionnel
Système formel Nous avons introduit : signes de variables (x, y, z, …), de constantes (0, 1), d’opérations (+, ), de relations (=, ) Axiomes : ce sont.
Licence Informatique Module Théories et Modèles pour l'Informatique II Option Programmation logique en Prolog Philippe Collard
Systèmes Experts implémentation en Prolog
Fonctionnement du moteur Prolog
Enseigner l’arithmétique en série L
INTRODUCTION.
Les systèmes experts L3 MI.
On parle darbre de recherche dune question *Racine de larbre : question *Nœuds : points de choix (formule à démontrer) *Passage dun nœud vers son fils.
Logiques Mathématiques
Structures de données linéaires
Algorithmique et Programmation
OCaml – Les arbres L3 MI.
Arbre binaire de recherche
Initiation à la conception de systèmes d'information
Programmation logique Logique des prédicats du premier ordre
Arbre Rouge Noir.
Programmation logique Démonstrateur automatique
Algorithmique et Programmation
Introduction à la structuration des documents: les techniques M2: Gestion des connaissances.
Rappels de logique des prédicats du 1er ordre
CSI 4506: Introduction à l’intelligence artificielle
CSI3525: Concepts des Languages de Programmation
Eléments de théorie anthropologique
Chapitre 3 Syntaxe et sémantique.
CSI2520 Ecriture sur l'écran ou dans un fichier Lecture à partir du clavier ou dun fichier Affichage de termes : *write(1+2) affiche 1+2 *write(X). affiche.
Programmation logique Le Langage PROLOG
Programmation non procédurale Le projet ECOLE 2000
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département dinformatique et de génie logiciel Édition Septembre 2009.
Modélisation des opérations Spécifier les transformations détat que lon attend des services de la machine Létat dune machine entièrement déterminée par.
Modélisation des données Un langage pour décrire  INVARIANT, PRE-CONDITION, EXPRESSION Concepts et notations utilisés  Logique  Ensembles  Relations.
Structures de données IFT-2000 Abder Alikacem La récursivité Département d’informatique et de génie logiciel Édition Septembre 2009.
Jacques Nicolas INRIA /IRISA Rennes
Exploration systématique de graphes
Architecture d’un système expert
Paradigmes des Langages de Programmation
Présenté par : Attia Hamza Merzouk Abdelkrim 2003/2004
La Logique du premier ordre LPO
INTRODUCTION.
Cours n°2UE102e(S. Sidhom) UE 102e. M1.IST-IE cours n°2 Systèmes à base de règles Par : Sahbi SIDHOM MCF. Université Nancy 2 Équipe de recherche SITE –
Sémantique logique 2- sémantique de Montague
Prolog Listes Arbres en prolog Structures : bases de données
Programmation linéaire en nombres entiers
Arbres binaires et tables de hachage
Outils pour la programmation logique par contraintes
Le langage Racket (Lisp)
Exploration systématique de graphes
Objets Opérateurs Listes
Sélection de colonnes (la projection)
CPI/BTS 2 Algorithmique & Programmation La récursivité Algo – Prog CPI/BTS2 – M. Dravet – 14/09/2003 Dernière modification: 14/09/2003.
Raisonnement et logiques
Systèmes formels 1. Définition d'un SF Morphologie Théorie propre
Martin Roy, Janvier 2010 Révisé Juillet  Un système d’équations est un ensemble de plusieurs équations.  La solution d’un système d’équations.
Chapitre 4 La représentation des nombres.
LOGIQUE ET PROGRAMMATION LOGIQUE
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Objets et Actions Élémentaires.
Raison d'être de la structure de fichiers : Les premiers travaux : Début des années 1960 : En 1963 : Près de 10 ans plus tard... (à peu près 1973) : Durant.
Algorithmique et programmation
Chap. 3 Récursion et induction. Les définitions par récurrence consistent à construire des objets finis, à partir d'autres, selon certaines règles. Les.
L ES INSTRUCTIONS DE L ECTURE, E CRITURE ET A FFECTATION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université.
Transcription de la présentation:

CSI2520, Hiver 2007 Paradigmes de Programmation CSI 2520

CSI2520, Hiver 2007 Le langage Prolog Un langage de programmation logique

CSI2520, Hiver 2007 Programmation logique et Prolog Historique Données, relations et faits Prédicats et formules Règles Clauses de Horn Démonstration en Prolog Stratégie de Prolog

CSI2520, Hiver 2007 Historique 1972 : création de Prolog par A. Colmerauer et P. Roussel à Marseille –Pour le traitement des langues naturelles 1977: premier compilateur par D.H. Warren à Edimbourg 1980: Borland Turbo Prolog 1995: ISO Prolog Prolog est le langage de lIA, des systèmes experts

CSI2520, Hiver 2007 La naissance de Prolog, A. Colmerauer, P. Roussel, juillet 1992.

CSI2520, Hiver 2007 Programmer en Prolog Prolog est un langage descriptif (faits et relations) et prescriptif (inférence). –Il permet de représenter et de manipuler des connaissances Résoudre des problèmes impliquant –Un domaine: ensemble dobjets; –Des connaissances: relations entre objets.

CSI2520, Hiver 2007 Programmer en Prolog Spécifier des faits –Énoncés incontestablement vrais à propos du domaine détude Définir des règles –Permettant détablir de nouveaux faits Poser des questions –Répondues par linterpréteur Prolog Prolog repose sur la logique du premier ordre

Logique du premier ordre Ensemble de symboles (variables) Ensemble de relations Des connecteurs logiques Des quantificateurs pour tout et il existe au moins un CSI2520, Hiver 2007

Programmer en Prolog Lutilisateur spécifie le quoi pas le comment –Langage très expressif –Développement rapide (?) –Demande une bonne maitrise de la logique des prédicats –Exige une bonne compréhension des mécanismes internes du langage CSI2520, Hiver 2007

Les données Constantes ou Atomes *Symbole: chaîne de caractères (minuscule) *Nombres : entiers ou flottants Variables : une lettre ou un nom (majuscule) *Exprimer une propriété concernant une catégorie dobjets *Interroger Prolog à laide dune question

CSI2520, Hiver 2007 Les relations Propriété qui lie un certain nombre dobjets *la possession lie le propriétaire et lobjet possédé *Utilité des relations : *lien entre objets *propriété dun objet Plusieurs possibilités pour établir la même relation *Jean est le pere de Paul peut sexprimer de deux facons. *Attention aux ambiguités

CSI2520, Hiver 2007 Les faits Affirmation de lexistence dune relation entre certains objets *Tous les hommes sont mortels *Socrate est un homme Un fait est une formule vraie à priori Cela constitue une partie des données dun problème

CSI2520, Hiver 2007 Prédicats et formules(1) En Prolog, une relation possède : *un nom *un nombre darguments *pere(jean, paul) En logique, relation = prédicat *pere Application du prédicat à ses arguments = formule

CSI2520, Hiver 2007 Arité dun prédicat Nombre darguments du prédicat = arité *unaire propriété de largument *homme(socrate). *arité zéro signification logique très restreinte *p() proposition vraie *binaire: *pere(jean, paul). pere(paul, martin). mere(marie, paul). mere(marie, luc). homme/1pere/2

CSI2520, Hiver 2007 Formule Prolog Enoncent la dépendance dune relation entre objets par rapport à dautres relations Concernent des catégories dobjets *fait : homme(socrate). *règle : si X est un homme alors X est mortel qui s'écrit : mortel(X) :- homme(X). –Le « si » sécrit « :- » en Prolog Il peut y avoir plusieurs conditions derrière le « :- », séparées par des virgules

Question Prolog Question: est-ce que socrate est mortel? –La question sexprime avec « ?- » en Prolog En Prolog la question est un but. Un fait est une règle sans queue… Une question est une règle sans tête… Le canard est un oiseau. Les oiseaux volent. Est-ce que le canard vole? CSI2520, Hiver 2007

Exemple CSI2520, Hiver 2007 aime(jean,sandra). aime(jean,paulette). aime(paulette,sam). aime(bruno,sandra). boit(paulette,vin). boit(bruno,jus). boit(sam,biere). fume(bruno). fume(sandra). fume(sam).

…exemple CSI2520, Hiver 2007 danse(jean,paulette):- boit(paulette,vin). danse(bruno,sandra):- aime(bruno,sandra), boit(sandra,eau). danse(sam,paulette):- aime(paulette,sam),boit(sam,biere), \+fume(paulette). ?-aime(jean,paulette) yes ?-boit(bruno,biere) no ?-danse(bruno,sandra) no ?-danse(sam,paulette) yes

…exemple CSI2520, Hiver 2007 ?- listing(aime) aime(jean,sandra). aime(jean,paulette). aime(paulette,sam). aime(bruno,sandra). ?- boit(Qui,biere) Qui=sam ?-boit(jean,Quoi) no ?-aime(jean,Qui) Qui=sandra; Qui=paulette; No ?-danse(X,Y) X=jean, Y=paulette; X=sam, Y=paulette; no

…exemple CSI2520, Hiver 2007 malade(X):- fume(X), boit(X,Y), alcool(Y). alcool(biere). alcool(vin). ?- malade(X) X=sam

CSI2520, Hiver 2007 Un autre exemple *la chèvre est un animal herbivore *le loup est un animal carnivore *un animal cruel est carnivore *un animal herbivore mange de lherbe *un animal carnivore mange des animaux herbivores Question: y a-t-il un animal cruel et que mange-t-il ? Attention: la modélisation dépend des raisonnements que nous voulons mener!

Le Et et le Ou grandpere(X,Y):-pere(X,Z), pere(Z,Y). grandpere(X,Y):-pere(X,Z), mere(Z,Y). Attention à la portée des variables! On aurait pu écrire: grandpere(X,Y):-pere(X,Z), pere(Z,Y). grandpere(X,Z):-pere(X,Y), mere(Y,Z). CSI2520, Hiver 2007

Clauses de Horn Ce sont les faits et les règles. Forme générale : F :- F1, F2,…, Fn. *Se traduit par « F si F1 et F2 et…et Fn » *F : formule atomique (doit être unique) *Fi : littéraux (formules atomiques ou leur négation) F est la tête de la clause F1, F2,…, Fn est appelée la queue de la clause En Prolog : pour démontrer F, il faut démontrer F1, F2,…, et Fn. Les clauses de Horn sont les seules formules permises en Prolog

CSI2520, Hiver 2007 Clauses de Horn Une règle est une clause dont la queue est non vide. La plupart des règles contiennent des variables. Définition dune variable anonyme : « _ » *a_un_salaire(X) :- employeur(Y,X). peut sécrire : a_un_salaire(X) :- employeur(_,X). Déclaration dun prédicat = ensemble de faits et de règles

CSI2520, Hiver 2007 Clause de Horn

CSI2520, Hiver 2007 Clause de Horn Les clauses Horn peuvent exprimer à peu près toute expression logique, même des algorithmes mathématiques. L' hypothèse de fermeture du monde établie que toute affirmation dont la véracité ne peut être vérifiée doit être déclarée fausse.

CSI2520, Hiver 2007 Programmes Prolog Programmes Prolog : succession de déclarations de prédicats Pas dordre à respecter Possibilité de plusieurs fichiers *Exemple: *enfant(X,Y,Z) *enfant(X,Y) :- enfant(X,Y,_); enfant(X,_,Y).

CSI2520, Hiver 2007 Démonstration Prolog A partir dun programme, on peut poser des questions *Ex : frere(paul, X). Pour trouver les frères de paul. *Cest-à-dire déterminer les valeurs des variables (X) telles que la question soit déductible des faits et prédicats du programme. On parle de résolution de problème ou de démonstration de problème.

CSI2520, Hiver 2007 Résolution

CSI2520, Hiver 2007 Unification Exemple : *frere(X,Y) :- homme(X), enfant(X,Z), enfant(Y,Z), X\=Y. où \= représente le prédicat de différence. *frere(paul,Qui) : tentative dunification avec la tête de la clause frere(X,Y) Définition : procédé par lequel on essaie de rendre deux formules identiques en donnant des valeurs aux variables quelles contiennent.

CSI2520, Hiver 2007 Unification Résultat : cest un unificateur (ou substitution), un ensemble daffectations de variables. *Exemple : {X=paul, Qui=Y} Le résultat nest pas forcément unique, mais représente lunificateur le plus général. Lunification peut réussir ou échouer. *e(X,X) et e(2,3) ne peuvent être unifiés.

Unification CSI2520, Hiver 2007 vole(X):-oiseau(X). oiseau(canard). ?- vole(canard) ?- oiseau(canard)

CSI2520, Hiver 2007 Unification Prédicat dunification : « = » *a(B,C) = a(2,3). donne pour résultat : YES {B=2, C=3} *a(X,Y,L) = a(Y,2,carole). donne pour résultat : YES {X=2, Y=2, L=carole} *a(X,X,Y) = a(Y,u,v). donne pour résultat : NO

CSI2520, Hiver 2007 Etapes de démonstration Si lunification échoue : situation d'échec sur la règle considérée pour démontrer la formule. Si lunification réussit : substitution des variables présentes dans la queue de la clause par les valeurs correspondantes des variables de lunificateur.

CSI2520, Hiver 2007 Etapes de démonstration Démonstration de cet ensemble de formules dans lordre de leur citation pour enrichir le système avec les valeurs obtenues des variables. A la fin, lensemble des couples valeur- variable des variables présentes dans la question initiale forme la solution affichée par Prolog.

CSI2520, Hiver 2007 Exemple

CSI2520, Hiver 2007 Exemple

CSI2520, Hiver 2007 Exemple Lunification est un mecanisme interne de Prolog

CSI2520, Hiver 2007

Exemple

CSI2520, Hiver 2007 Un Autre exemple %des faits en Prolog homme(john). homme(peter). homme(marc). femme(mary). femme(louise). %interrogation des faits ?- homme(john). Yes ?- homme(mary). No ?- homme(simon). No ?- homme(M). M = john ; M = peter ; M = marc ; No %les enfants de Peter? ?- parent(peter,C). C = marc ; C = louise ; No %les parents de Louise? ?- parent(P,louise). P = peter ; P = mary ; No % Est-ce que John a des enfants? ?- parent(john,_). Yes % Est-ce que Marc a des enfants? ?- parent(marc,_). No %definir une regle Prolog hasChildren(P) :- parent(P,_). ?- hasChildren(peter). Yes ?- hasChildren(marc). No % predicat parent/2: parent(john,peter). parent(peter,marc). parent(peter,louise). parent(mary,marc). parent(mary,louise).

CSI2520, Hiver 2007 Arbre de recherche On parle darbre de recherche dune question *Racine de larbre : question *Nœuds : points de choix (formule à démontrer) *Passage dun nœud vers son fils en considérant lune des règles et en effectuant une unification et une étape (pas) de démonstration

CSI2520, Hiver 2007 Arbre de recherche *Nœuds de gauche à droite dans lordre de déclaration des règles *Nœuds d'échec : aucune règle ne permet de démontrer la première formule du nœud *Nœuds de succès : ne contient plus aucune formule, tout a été démontré et les éléments de solution sont trouvés en remontant vers la racine de larbre

CSI2520, Hiver 2007 Stratégie de Prolog Pour résoudre une question, Prolog construit larbre de recherche de la question Parcours en profondeur dabord *nœud de succès : cest une solution, Prolog laffiche et cherche dautres solutions *nœud d'échec : remontée dans larbre jusqu'à un point de choix possédant des branches non explorées

CSI2520, Hiver 2007 Stratégie de Prolog On parle de backtracking. Si un tel nœud de choix nexiste pas, la démonstration est terminée, il ny a pas dautres solutions. Possibilité de branche infinie et donc de recherche sans terminaison… Attention à : *ordre des littéraux dans la queue de clause *ordre des clauses

Un premier exemple CSI2520, Hiver 2007 f(a). f(b). g(a). g(b). h(b). k(X):- f(X), g(X), h(X). ?- k(Y).

CSI2520, Hiver 2007 Exemple: arbre de recherche

CSI2520, Hiver 2007 Exemple: arbre de recherche

Un autre exemple (en 3 versions) CSI2520, Hiver 2007 pere(charles,jean). noble(henri). noble(louis). noble(charles). noble(X):- pere(Y,X), noble(Y). pere(charles,jean). noble(X):- pere(Y,X), noble(Y). noble(henri). noble(louis). noble(charles). pere(charles,jean). noble(henri). noble(louis). noble(charles). noble(X):- noble(Y), pere(Y,X). ?- noble(jean).

Un dernier exemple CSI2520, Hiver 2007 aime(vincent,mimi). aime(marcel,mimi). jaloux(X,Y) :- aime(X,Z),aime(Y,Z). ?- jaloux(X,Y). Combien de solutions? … 4