Un langage de programmation logique

Slides:



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

PROLOG 1 Prolog - Initiation
Algorithmes et structures de données avancés
DTD Sylvain Salvati
9 avril 2001 Listes et Suites Finies Représentation Propriété Accès aux éléments Récursivité Construction Sous-suites et arbres représentatifs Application.
Le langage Prolog Structures de données
Domaines nominaux XSLT
Termes préfixés et N-uplets
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
INTRODUCTION.
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.
INITIATION AU GRAFCET E. HELLOT lycée P. Duez.
Conception et analyse des algorithmes
Objets Opérateurs Listes
Structures de données linéaires
Récursivité.
Septième étape : travailler avec des graphes probabilistes
Introduction à l’algorithmique
Expressions et assignations
OCaml – Les arbres L3 MI.
Arbre binaire de recherche
Algorithmes Branch & Bound
Programmation logique Logique des prédicats du premier ordre
Programmation linéaire
Arbre Rouge Noir.
Programmation logique Démonstrateur automatique
TD4 2 MIC Romaric GUILLERM Algo-Prog en Ada.
La pensée logique au cycle 1
MODELE RELATIONNEL concept mathématique de relation
Les fichiers indexés (Les B-arbres)
LES ARBRES IUP 2 Génie Informatique
Rappels de logique des prédicats du 1er ordre
Programmation linéaire en nombres entiers Algorithme de la subdivision successive («Branch and Bound Algorithm»)
CSI2520, Hiver 2007 Paradigmes de Programmation CSI 2520.
Eléments de théorie anthropologique
Relations et fonctions
Programmation logique Le Langage PROLOG
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.
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
Paradigmes des Langages de Programmation
Présenté par : Attia Hamza Merzouk Abdelkrim 2003/2004
La Logique du premier ordre LPO
INTRODUCTION.
Prolog Listes Arbres en prolog Structures : bases de données
Les nombres décimaux au cycle 3
Programmation linéaire en nombres entiers
Algorithmes Branch & Bound
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)
1 Initiation aux bases de données et à la programmation événementielle Responsable : Souheib BAARIR. (le sujet de votre .
6/10/2005 © 2005 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 Récursion sur les Listes Peter Van Roy Département d’Ingénierie Informatique,
Relations et fonctions
Relations et fonctions
Systèmes formels 1. Définition d'un SF Morphologie Théorie propre
Chapitre 4 La représentation des nombres.
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département d’informatique et de génie logiciel Édition Septembre 2009.
LOGIQUE ET PROGRAMMATION LOGIQUE
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.
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.
Algorithmes Branch & Bound Module IAD/RP/RO Master d ’informatique Paris 6 Philippe Chrétienne.
Transcription de la présentation:

Un langage de programmation logique Le langage Prolog Un langage de programmation logique 26 mars 2001

Organisation du cours Transparents et informations diverses sur : http://www.inria.fr/oasis/Marjorie.Russo/ Mail : Marjorie.Russo@sophia.inria.fr Bureau : le jeudi de 10h à 15h bureau 427 au département informatique Notation : 70% examen, 30% participation + notes de TD 26 mars 2001

Plan du cours Programmation logique et Prolog Les bases du langage Prolog Aspects avancés du langage Prolog Les listes en Prolog Termes préfixés et N-uplets 26 mars 2001

Bibliographie Les fondements de la programmation en logique de J. W. Lloyd Prolog de F. Giannesini, H. Kanoui, R. Pasero et M. Van Caneghem 26 mars 2001

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 26 mars 2001

Historique 1972 : création de Prolog par A. Colmerauer et P. Roussel à Luminy. 1980 : reconnaissance de Prolog comme langage de développement en Intelligence Artificielle Depuis plusieurs versions, dont une tournée vers la programmation par contraintes. 26 mars 2001

Les données Constantes Variables : chaîne de caractères (majuscule) Symbole : chaîne de caractères (minuscule) Nombres : entiers ou flottants Variables : chaîne de caractères (majuscule) Exprimer une propriété concernant une catégorie d ’objets Interroger le système Prolog à l ’aide d ’une question 26 mars 2001

Les relations (1) Propriété qui lie un certain nombre d ’objets la possession lie le propriétaire et l ’objet possédé Propriétés des relations : caractère ordonné transitive : si a R b et b R c alors a R c symétrique : si a R b alors b R a leur nom commence par une minuscule 26 mars 2001

Les relations (2) Utilité des relations : lien entre objets propriété d ’un objet Plusieurs possibilités pour établir la même relation Hélène est une fille de cinq ans peut s ’exprimer de deux façons. 26 mars 2001

Les faits Affirmation de l ’existence d ’une relation entre certains objets La chèvre est un animal herbivore le loup est un animal cruel Formule vraie à priori Constitue une partie des données d ’un problème 26 mars 2001

Prédicats et formules(1) En Prolog, une relation possède : un nom un nombre d ’arguments couleur(voiture, rouge) En logique, relation = prédicat couleur Application du prédicat à ses arguments = formule 26 mars 2001

Prédicats et formules (2) Nombre d ’arguments du prédicat = arité unaire  propriété de l ’argument Garcon(jerome) arité zéro  signification logique très restreinte p() Exercice : écrire les faits présentés précédemment sous forme de prédicats chèvre, loup 26 mars 2001

Règles Prolog (1) Enoncent la dépendance d’une relation entre objets par rapport à d’autres relations Concernent des catégories d ’objets / faits fait : fille(helene) règles : si X est une fille alors X aime les poupées qui s'écrit : aime(X,poupees) :- fille(X). Le « si » s’écrit « :- » en Prolog 26 mars 2001

Règles Prolog (2) Il peut y avoir plusieurs conditions derrière le « :- », séparées par des virgules Exemple : un animal qui vole est un oiseau Exercice : la chèvre est un animal herbivore le loup est un animal cruel un animal cruel est carnivore un animal carnivore mange de la viande 26 mars 2001

Règles Prolog (3) Suite de l’exercice : un animal herbivore mange de l’herbe un animal carnivore mange des animaux herbivores les carnivores et les herbivores boivent de l’eau un animal consomme ce qu’il boit ou ce qu’il mange Question possible : y a-t-il un animal cruel et que consomme-t-il ? Idée : identifier les objets, les faits, les règles 26 mars 2001

Clauses de Horn (1) 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  Fi : littéraux (formules atomiques ou leur négation) En Prolog : pour démontrer F, il faut démontrer F1, F2,…, et fn. 26 mars 2001

Clauses de Horn (2) F est la tête de la clause F1, F2,…, Fn est appelée la queue de la clause Un fait est une clause dont la queue est vide Exemples : naissance(prolog, 1972). aime(X, bach). : « Pour tout X, X aime Bach. » 26 mars 2001

Clauses de Horn (3) Une règle est une clause dont la queue est non vide. La plupart des règles contiennent des variables. Définition d’une variable anonyme : « _ » a_un_salaire(X) :- employeur(Y,X). peut s’écrire : a_un_salaire(X) :- employeur(_,X). Déclaration d’un prédicat = ensemble de faits et de règles 26 mars 2001

Programmes Prolog Programmes Prolog : succession de déclarations de prédicats Pas d’ordre à respecter Possibilité de plusieurs fichiers Exemple de la famille : prédicats homme, femme et enfant enfant(X,Y,Z) enfant(X,Y) :- enfant(X,Y,_). ou enfant(X,_,Z). 26 mars 2001

Démonstration Prolog A partir d ’un programme, on peut poser des questions Ex : frere(patrick, X). Pour trouver les frères de P. C’est-à-dire déterminer les valeurs des variables (Ex : X) telles que la question soit déductible des faits et prédicats du programme. On parle de résolution de question ou de démonstration de question. 26 mars 2001

Unification (1) Exemple : frere(X,Y) :- homme(X), enfant(X,Z), enfant(Y,Z), X\=Y. où \= représente le prédicat de différence. frere(Patrick,Qui) : tentative d’unification 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 qu’elles contiennent. 26 mars 2001

Unification (2) Résultat : c’est un unificateur (ou substitution), un ensemble d’affectations de variables. Exemple : {X=Patrick, Qui=Y} Le résultat n’est pas forcément unique, mais représente l’unificateur le plus général. L’unification peut réussir ou échouer. e(X,X) et e(2,3) ne peuvent être unifiés. 26 mars 2001

Unification (3) Prédicat d’unification : « = » 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 26 mars 2001

Pas de démonstration (1) Si l ’unification échoue : situation d'échec sur la règle considérée pour démontrer la formule. Si l’unification réussit : substitution des variables présentes dans la queue de la clause par les valeurs correspondantes des variables de l ’unificateur. 26 mars 2001

Pas de démonstration (2) Exemple : frere(patrick,Qui) Unification avec frere(X,Y) X=patrick et Qui=Y homme(patrick) parent(patrick,Z) parent(Y,Z) patrick\=Y 26 mars 2001

Pas de démonstration (3) Démonstration de cet ensemble de formules dans l’ordre de leur citation pour enrichir le système avec les valeurs obtenues des variables. A la fin, l’ensemble des couples valeur-variable des variables présentes dans la question initiale forme la solution affichée par Prolog. 26 mars 2001

Points de choix Plusieurs règles concernant une même question : essais consécutifs dans l’ordre de déclaration représentation sous forme d’arbre les nœuds de l’arbre sont appelés points de choix Exemple : arbre binaire pour répondre à la question enfant(yohann, dominique) 26 mars 2001

Arbre de recherche (1) On parle d’arbre de recherche d’une question Racine de l’arbre : question Nœud : points de choix (formule à démontrer) Passage d’un nœud vers son fils en considérant l’une des règles et en effectuant une unification et un pas de démonstration 26 mars 2001

Arbre de recherche (2) Nœuds de gauche à droite dans l’ordre 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 trouves en remontant vers la racine de l’arbre 26 mars 2001

Stratégie de Prolog (1) Pour résoudre une question, Prolog construit l’arbre de recherche de la question Parcours en profondeur d’abord nœud de succès : c’est une solution, Prolog l’affiche et cherche d’autres solutions nœud d'échec : remontée dans l’arbre jusqu'à un point de choix possédant des branches non explorées 26 mars 2001

Stratégie de Prolog (2) On parle de backtrack. Si un tel nœud de choix n’existe pas, la démonstration est terminée, il n’y a pas d’autre solution. Possibilité de branche infinie et donc de recherche sans terminaison… Attention à : ordre des littéraux dans la queue de clause ordre des clauses 26 mars 2001