Programmation logique Le Langage PROLOG

Slides:



Advertisements
Présentations similaires
Les présentateurs doivent souvent transmettre des informations techniques à des auditeurs qui connaissent moins bien le sujet et le vocabulaire spécifique.
Advertisements

La boucle for : init7.c et init71.c
P.T. 2012/2013 Mise en œuvre de Prolog.
L-System et modélisation de plantes…
Le langage Z Pr ZEGOUR DJAMEL EDDINE
Un langage de programmation logique
Structures de données et complexité
Introduction à l’Algorithmique
Algorithmique Résume.
C.
Mise en œuvre d’un programme
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.
Systèmes Experts implémentation en Prolog
Fonctionnement du moteur Prolog
INTRODUCTION.
Les systèmes experts L3 MI.
4. Les structures de tests
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
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.
Les bases de l’Algorithmique
Conception et analyse des algorithmes
ALGORITHMES RECURSIFS
Objets Opérateurs Listes
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Partie 1 Etude de l'existant
Introduction à l’algorithmique
Expressions et assignations
Analyse lexicale Généralités Expressions rationnelles Automates finis
Initiation à la conception de systèmes d'information
Programmation logique Logique des prédicats du premier ordre
Programmation fonctionnelle Le langage LISP
Programmation logique Démonstrateur automatique
Programmation multimédia 3
CHAINE DE CARACTERES : Définition :
Structures de données IFT Abder Alikacem La classe string Département dinformatique et de génie logiciel Édition Septembre 2009 Département dinformatique.
Rappels de logique des prédicats du 1er ordre
Expressions régulières et hash tables
CSI2520, Hiver 2007 Paradigmes de Programmation CSI 2520.
CSI 4506: Introduction à l’intelligence artificielle
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
8PRO100 Éléments de programmation Les types composés.
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.
Jacques Nicolas INRIA /IRISA Rennes
Le langage C Structures de données
Introduction à l’algèbre
Expressions régulières et hash tables
Shell Equipe ID Bioinformatics Training Course June 2014.
Présenté par : Attia Hamza Merzouk Abdelkrim 2003/2004
Spécification de programmes et de systèmes
INTRODUCTION.
JavaScript.
Algorithmique et programmation (1)‏
Programmation procédurale preuves D. Preuves Preuves sur les R-algorithmes. Règle de l'appel (Hoare). Exemple Preuves sur les B-algorithmes (Floyd) Automatisation.
Arbres binaires et tables de hachage
Outils pour la programmation logique par contraintes
D.E ZEGOUR Ecole Supérieure d’Informatique. Problèmes de décision Concepts de base Expressions régulières Notation particulière pour exprimer certaines.
Le langage Racket (Lisp)
Introduction à l’algèbre Séminaires démultipliés 2013 Jour 2.
Objets Opérateurs Listes
1 Système d’exploitation Les scripts csh 1 ère Année Année Tienté HSU.
Introduction et Généralités sur l’Algorithmique
Intelligence artificielle
Systèmes formels 1. Définition d'un SF Morphologie Théorie propre
LOGIQUE ET PROGRAMMATION LOGIQUE
Objets et Actions Élémentaires.
LES TABLEAUX Définition: Création d’un tableau:
Introduction à L’Algorithmique
Transcription de la présentation:

Programmation logique Le Langage PROLOG D. Le langage PROLOG Concepts généraux Données manipulées Portée des variables et des constantes Structure d'un programme Structure interne Opérations Exemples Fonctionnement de Prolog sur un exemple

Programmation logique Le Langage PROLOG Concepts généraux: Créé vers les années 1970. Utilisé pour l'interrogation de base de données, Conception assisté par ordinateur, Réalisation de système expert, Compréhension du langage naturel, gestion de base de données ( déductives) Particularité : Aucune distinction entre programme et données, aucune structure de contrôle.

Programmation logique Le Langage PROLOG Concepts généraux: Prolog implémente la règle de résolution en utilisant la technique du Backtracking( recherche en profondeur et retour arrière) Exécuter un programme revient à demander la preuve d'une expression. En programmation logique, nous pouvons trouver tous les objets en relation avec d'autres objets. ( propriété de l' "invertibility")

Programmation logique Le Langage PROLOG Données manipulées : Les types standard : integer, real, char, symbol construit ( voir les structures)

Programmation logique Le Langage PROLOG Données manipulées : Objets élémentaires qui peuvent être des variables et constantes. Les variables sont des combinaisons de lettres, chiffres et _. Le premier caractère est une lettre alphabétique majuscule ou '_'. Les constantes peuvent être des nombres, symbole(chaîne de caractères dont la première lettre est en minuscule, ou une chaîne de caractères quelconque entre ".

Programmation logique Le Langage PROLOG Données manipulées : Listes Une liste L dont les éléments sont de type type est définie comme : L type* dans la partie "Domains". [] désigne une liste vide. [a, b, c] liste formée des 3 éléments a, b et c. [X!Y] X désigne le car et Y le cdr. [a, b, c] = [a![b, c]] = [a, b![c]] = [a, b, c![]]

Programmation logique Le Langage PROLOG Données manipulées : Structures Utilise le mot clé Domains Exemple : typedate = date(integer, integer, integer)

Programmation logique Le Langage PROLOG Portée des variables et des constantes Les constantes ont une portée globale. La portée d'une variable se limite à une clause.

Programmation logique Le Langage PROLOG Structure d'un programme : Domains Construction de nouveau types Predicates Définitions des prédicats(types des objets en relation) Clauses Faits et règles Goal But

Programmation logique Le Langage PROLOG Structure d'un programme : :- ou if , veut dire et ; veut dire ou.

Programmation logique Le Langage PROLOG Structure interne : La objets manipulés sont représentés en arbres. Prolog se comporte comme un démonstrateur de théorème. L'interpréteur Prolog possède donc son propre mécanisme de résolution. Il utilise les deux principes suivants : - Résolution - Unification

Programmation logique Le Langage PROLOG Autres opérations : ! arrêt dés qu'une solution est trouvée( arrêt du processus du backtracking) Les règles peuvent être récursives. Malgré sa forte orientation vers la programmation logique, Prolog dispose d'un certain nombre d'opérations indispensables : communication avec l'extérieur calcul arithmétique et logique test sur la nature des variables saisie et mise à jour des règles.

Programmation logique Le Langage PROLOG Exemples de programmes Prolog (Programme 1) Predicates Parent(symbol, symbol) Frere(symbol, symbol) Ascendant(symbol, symbol) Clauses Parent(aa, bb). Parent(bb, cc) . Parent(bb, dd). Parent(dd, ee). Parent(ff, dd).

Programmation logique Le Langage PROLOG Frere(X, Y) :- Parent(Z, X), Parent(Z, Y), Not(X=Y). Ascendant(X,Y) :- Parent(X, Y). Ascendant(X,Y) :- Parent(X, Z), Ascendant(Z,Y). /* On peut aussi écrire ascendant comme suit : Ascendant(X,Y) :- Parent(X, Y); Parent(X, Z),Ascendant(Z, Y). */

Programmation logique Le Langage PROLOG Question : frere(dd, cc) Réponse Yes Question : frere(X, dd) Réponse X = cc Question : frere(dd, X) Réponse X = cc Question : Ascendant(X, ee) Réponse X = dd X = aa X = bb X = ff Question : Ascendant(X, cc)

Programmation logique Le Langage PROLOG Fonctionnement de Prolog : 1. A la question Frere(X, dd), prolog doit réfuter Non (Frere(X, dd) ). Dans le cas de succès, il imprime la valeur de X. Soit donc à réfuter D = Non ( Frere(X1, dd) ) Donnons quelques pas de résolution. Frere(X1, dd) s'unifie avec Frère(X, Y) µ = { X:=X1 ; Y:=dd } D devient Non (Parent(Z,X1), Parent(Z, dd), X1<>dd) Parent(Z, X1) s'unifie avec Parent(aa, bb) µ = { Z:=aa; X1:=bb } D devient Non (Parent(aa, dd), bb<>dd) Comme Parent(aa, dd) est faux, ceci conduit à un échec.

Programmation logique Le Langage PROLOG Parent(Z, X1) s'unifie avec Parent(bb, cc) µ = { Z:=bb; X1:=cc } D devient Non (Parent(bb, dd), cc<>dd) ) Ceci conduit à un succès avec X1 = cc. Parent(Z, X1) s'unifie avec Parent(bb, dd) µ = { Z:=bb; X1:=dd } D devient Non (Parent(bb, dd), dd<>dd) Comme dd<>dd est faux, ceci conduit à un échec. Ect...