Cours 3 Langage Déclaratif : Prolog

Documents pareils
Bases de données Cours 5 : Base de données déductives

M é ca n ism e Pr o lo g. Ex e m p le

Initiation à la Programmation en Logique avec SISCtus Prolog

Évaluation et implémentation des langages

1ère partie Nadine Cullot. Bases de données déductives. Bases de données déductives Introduction et Motivation

Systèmes décisionnels et programmation avancée

Conception des bases de données : Modèle Entité-Association

Information utiles. webpage : Google+ : digiusto/

Intelligence Artificielle Planification

Logique : ENSIIE 1A - contrôle final

Les équations différentielles

Cours 1 : Qu est-ce que la programmation?

Grammaires d unification

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Algorithmique et Programmation, IMA

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

OASIS Date de publication

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Cours d Informatique

alg - Classes, instances, objets [oo] Exercices résolus

OCL - Object Constraint Language

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

UE Programmation Impérative Licence 2ème Année

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

TP1 : Initiation à Java et Eclipse

Vérification formelle de la plate-forme Java Card

BASES DE DONNÉES. CNAM Centre associé de Clermont-Ferrand Cycle A Année J. Darmont I. INTRODUCTION II. LES SYSTÈMES HIÉRARCHIQUES

Chapitre 2. Eléments pour comprendre un énoncé

Architecture des Systèmes d Information Architecture des Systèmes d Information

INITIATION AU LANGAGE JAVA

Introduction à l algorithmique et à la programmation M1102 CM n 3

Utilisation des tableaux sémantiques dans les logiques de description

Programmation d'agents intelligents Vers une refonte des fils de raisonnement. Stage de fin d'études Master IAD 2006

Les structures. Chapitre 3

Modélisation des données

Cours 1 : La compilation

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

Traduction des Langages : Le Compilateur Micro Java

Utilisation de l analyse statique comme outil d aide au développement. par. Yves Gauthier

Introduction à MATLAB R

Cours d Algorithmique et de Langage C v 3.0

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

C f tracée ci- contre est la représentation graphique d une

1 Introduction et installation

TRIGONOMETRIE Algorithme : mesure principale

Systèmes d information et bases de données (niveau 1)

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

T. A. D. pile. Chapitre 7 (suite) Listes particulières. T. A. D. file. représentation chaînée de la file algorithmique. Files

Cours de Master Recherche

Conception des systèmes répartis

Théorie de la Programmation

Conventions d écriture et outils de mise au point

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Licence Sciences et Technologies Examen janvier 2010


Bases de programmation. Cours 5. Structurer les données

Feuille TD n 1 Exercices d algorithmique éléments de correction

UNIVERSITÉ DU QUÉBEC EN OUTAOUAIS VÉRIFICATION ET ANALYSE DES POLITIQUES DE CONTRÔLE D ACCÈS : APPLICATION AU LANGAGE XACML

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Algorithme. Table des matières

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique

STAGE IREM 0- Premiers pas en Python

Cours de Programmation 2

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Formula Negator, Outil de négation de formule.

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

TP 1. Prise en main du langage Python

Bases de Données relationnelles et leurs systèmes de Gestion

Quelques algorithmes simples dont l analyse n est pas si simple

C++ - Classes, instances, objets [oo] Exercices résolus

Fondements de l informatique Logique, modèles, et calculs

Chapitre 2. Classes et objets

Algorithmes récursifs

Langage SQL : créer et interroger une base

Intelligence artificielle appliquée à l automatique

LA BATTERIE DU PORTABLE

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

Cours Informatique Master STEP

Document d aide au suivi scolaire

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Réalisabilité et extraction de programmes

CORRECTION EXERCICES ALGORITHME 1

Optimisation des fonctions de plusieurs variables

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Tâche complexe produite par l académie de Clermont-Ferrand. Mai 2012 LE TIR A L ARC. (d après une idée du collège des Portes du Midi de Maurs)

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Vérification de programmes et de preuves Première partie. décrire des algorithmes

Programme détaillé BTS INFORMATIQUE DE GESTION DIPLÔME D ETAT. Objectifs de la formation. Les métiers. Durée de la formation

Cours d initiation à la programmation en C++ Johann Cuenin

Optimisation Discrète

SUPPORT DE COURS. Langage C

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours Composant 2. Qualité logicielle et spécications algébriques

Classes et Objets en Ocaml.

Transcription:

Cours 3 Langage Déclaratif : Prolog Conceptes Fondamentaux Kaninda Musumbu 1 Département d Informatique Université Bordeaux 1

Motivation Langages Procéduraux de nature "impérative", c.-à-d. ils exigent du programmeur, pour résoudre un problème, de définir selon un algorithme connu de lui et de préciser étape par étape la méthode de résolution de ce problème Langages Déclarative il revient au programmeur de déclarer "de quoi" est fait le problème, plutôt que "comment" le résoudre (Bihan 87)

Programmation déclarative Objectif On fait la description du problème à résoudre en listant : les objets concernés, leurs propriétés, les relations qu ils vérifient. Ensuite, le mécanisme de résolution parcourt de façon non déterministe toutes les possibilités du problème et peut donc retourner plusieurs solutions. PROLOG Langage dérivé du calcul des prédicats ou logique du premier ordre. Les prédicats servent à qualifier les objets du problème et à décrire les relations dans lesquelles ils sont impliqués.

Concepts Fondamentaux 1/3 Programme constitué de clauses de trois type : faits, règles et questions. Une relation peut être spécifiée par des faits n-uplets d objets vérifiant la relation pere(pierre, paul), egal(x,x) Règles : à partir de faits d établir de nouveaux faits par déduction si on a démontré P et P Q alors on a démontré Q.

Concepts Fondamentaux 2/3 Exemple "si on est le père du père ou de la mère de quelqu un alors on est son grand-père" grandpere(x,y):-pere(x,z),pere(z,y). grandpere(x,y):-pere(x,z),mere(z,y). ou encore grandpere(x,y):-pere(x,z),(pere(z,y);mere(z,y)).

Concepts Fondamentaux 3/3 Question moyen d extraire de l information dans un programme on cherche à savoir si une relation a lieu entre des objets Exemple?- pere(abraham,issac).?- plus(2,3,5).?- pere(issac, X). Remarque Pour répondre à une question relative à un programme, il faut déterminer si la question est conséquence logique du programme.

Formalisation Procédure ensemble de clauses concernant une même relation (ou prédicat). Définition Atome : prédicat ou formule (bien formée) enfant(x), mere(x,y), triangle(x,y,z),... Clause : enoncé de la forme : A B 1, B 2,...,B n A tête B 1, B 2,..., B n corps A est vrai si i B i est vrai

Structure de Donnée 1/2 Terme objet manipulé par un programme Prolog Type On distingue trois sortes de termes : variable représente des objets inconnus de l univers. Syntaxe : chaîne alpha-num commençant par une majuscule ou par_. termes atomiques représentant les objets simples connus de l univers. On distingue trois sortes : nombres : entiers ou flottants, atomes : chaîne alpha-numérique commençant par une minuscule termes composés représentant les objets structurés de l univers. Syntaxe : foncteur(t1,..., tn)

Structure de Donnée 2/2 Exemple adresse(351,"cours de la Libérations",Ville) cons(a,cons(x,nil)) Remarque Il n existe pas de distinction structurelle entre : l information au sens de "process" celle "qui dit ce qu il faut faire" l information au sens de "data" celle "sur quoi on travaille",

Opération d Unification Objectif Coeur de l utilisation de l inférence en I.A. C est l opération fondamentale en programmation logique. Remarque L unification réalise à elle seule : passage de paramètres affectation retour de valeurs sur la structure de données.

Réduction d un But Principe Soit G un but, et P un programme une réduction de G par P consiste à remplacer G par le corps d une instance d une règle de P dont la conclusion s unifie avec G. Remarque : L ordre de choix n a pas d importance pour le but à réduire mais a une importance pour la clause

Récursivité Intérêt éviter de définir explicitement toutes les acceptations du prédicat Exemple ancetre(x,y) :- pere(x,y). ancêtre(x,y) :- pere(x,z), pere(z,y). ancetre(x,y) :- père(x,z), père(z,w), père(w,y). ancetre(x,y) :- père(x,z), père(z,w), père(w,q),père(q,y). etc...

Récursivité Intérêt éviter de définir explicitement toutes les acceptations du prédicat Exemple ancetre(x,y) :- pere(x,y). ancêtre(x,y) :- pere(x,z), pere(z,y). ancetre(x,y) :- père(x,z), père(z,w), père(w,y). etc... Utiliser un raisonnement récursif ancetre(x,y) :- pere(x,y). ancêtre(x,y) :- pere(x,z), ancetre(z,y). ou bien ancetre(x,y) :- pere(x,y). ancêtre(x,y) :- ancetre(x,z), pere(z,y).

Interpréteur abstrait Entrée : une question Q et un programe P Sortie : θ, yes si l on a démontré Q à partir de P ou no sinon Algorithme : initialiser R = Q Tant_que R = A 1,..., A n début fin TQ si choisir A i et C p = A B j P A = A i avec 1 < i < n si echec break ; sinon θs.t.a i θ = A R = (A 1,..., A i 1, B 1,..., B m, A i+1,..., A n )θ R = alors sortie=yes, θ sinon sortie=no

Sémantique Définition M P dénote la sémantique d un programme P ssi il est égale à l ensemble de tous les buts de base déductible à partir de P. Consistance et complétitude M P = {A B P P A} et M consistance : M P M complétude : M M P consistance et complétude : M P = M

Consistance et complétitude Exemple Prog1 Prog2 p. p :- p. p :- p. p.?-p.

Exemple Base des règles : 1. si A et C alors E 2. si F et C alors H 3. si B et E alors H 4. si B alors C 5. si H alors X Base des faits : 1. A. 2. B. "Est-ce que X est déductible de ce programme?"