Licence Informatique Module Théories et Modèles pour l'Informatique II Option Programmation logique en Prolog Philippe Collard http://deptinfo.unice.fr/~pc.

Slides:



Advertisements
Présentations similaires
Définitions Analyse documentaire
Advertisements

Modèle Conceptuel des données
Module 5 : Implémentation de l'impression
P.T. 2012/2013 Mise en œuvre de Prolog.
Initiation à la programmation et algorithmique cours 4
Apprentissage et béhaviorisme
PROLOG 1 Prolog - Initiation
Un langage de programmation logique
La Programmation Logique: PROLOG
ACCESS Découverte.
Systèmes Experts implémentation en Prolog
Fonctionnement du moteur Prolog
Projet 4info.
Les modèles de l’atome.
La revue de projet.
Initiation au système d’information et aux bases de données
Initiation à la conception des systèmes d'informations
Logiques Mathématiques
Structures de données linéaires
1 TOC Thinking Processes des outils pour penser et communiquer LArbre de la Réalité Future © Joël-Henry GROSSARD – juillet
Algorithmes et résolution de problèmes FGE
Initiation à la conception de systèmes d'information
Programmation logique Logique des prédicats du premier ordre
Réalisée par :Samira RAHALI
Introduction à la conception de Bases de Données Relationnelles
Le codage des nombres en informatique
Les formes normales.
Programmation logique Démonstrateur automatique
Modèle Logique de Données
SYSTEMES D’INFORMATION
La pensée logique au cycle 1
Rappels de logique des prédicats du 1er ordre
CSI2520, Hiver 2007 Paradigmes de Programmation CSI 2520.
Initiation aux bases de données et à la programmation événementielle
NORMALISATION DES LANGAGES DE PROGRAMMATION des Automates Programmables Industriels CEI Jean-Jacques DUMÉRY -1-
Références à une cellule dans EXCEL
NORMALISATION DES LANGAGES DE PROGRAMMATION des Automates Programmables Industriels CEI
Jacques Nicolas INRIA /IRISA Rennes
Les réseaux sémantiques[Quillian 68]
SIMPLIFICATION DES EQUATIONS LOGIQUES
La Logique du premier ordre LPO
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 –
Prolog Listes Arbres en prolog Structures : bases de données
Créer des packages.
ANALYSE DE DONNEES TESTS D’ASSOCIATION
Un survol du language C.
METHODE : Les unités et calculs indispensables en chimie
Technologies web et web sémantique TP3 - XML. XML eXtensible Markup Language (langage extensible de balisage) – Caractéristiques: méta-langage = un langage.
Outils pour la programmation logique par contraintes
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
C++ L’HERITAGE Fayçal BRAÏKI DUT INFORMATIQUE.
Web sémantique est pratique documentaire
INSCRIPTION PIED NOIR ESCALADE 2013/2014 Vous souhaitez vous inscrire ou inscrire votre enfant au club du Pied Noir Escalade de Gourdon. Afin de pouvoir.
Introduction et Généralités sur l’Algorithmique
3 COURS DE thermodynamique (Module En 21) 13/04/2017
SYSTEMES d’INFORMATION séance 1 : Introduction et définitions
L’originalité de chaque individu -3°-
Systèmes formels 1. Définition d'un SF Morphologie Théorie propre
Introduction à la Programmation Orientée Objet
Chapitre 4 La représentation des nombres.
LOGIQUE ET PROGRAMMATION LOGIQUE
Initiation aux bases de données et à la programmation événementielle
La mole Chapitre 11 : Les objectifs de connaissance :
Les bases de données Séance 3 Construction du Modèle Conceptuel de Données.
Les bases de données Séance 4 Construction du Modèle Physique (la BDD)
ÉCONOMIE POUR INGÉNIEURS CHAPITRE 1 Les fondements de l’économie d’ingénierie © 2013 Chenelière Éducation inc.
1 Ménages et familles : le recensement et les autres sources de données Laurent Toulemon Le recensement rénové de la population : résultats statistiques.
FACTORY systemes Module 6 Page 6-1 La base de données InSQL FORMATION InSQL 7.0.
TP1: Statistique application chapitre 2. Le tableau suivant reprend le taux d'intérêt (en %) payé par 20 banques sur les dépôts d'épargne de leurs clients.
Transcription de la présentation:

Licence Informatique Module Théories et Modèles pour l'Informatique II Option Programmation logique en Prolog Philippe Collard http://deptinfo.unice.fr/~pc pc@unice.fr

Objectifs du cours Initiation à la programmation en logique : application de certaines notions vues en cours de logique Découverte de la programmation en Prolog : utilisation d'exemples liés à l'intelligence artificielle

Bibliographie F. Giannesini, H. Kanoui, R. Pasero et M. Van Caneghem, Prolog, InterEditions, 1985 Bratko, Programmation en Prolog pour l'intelligence artificielle, InterEditions, 1988 L. Sterling, E. Shapiro, L'art de Prolog, Ed. Masson, 1990 P. Collard, Programmation déclarative et impérative en Prolog, Ed. Masson, 1992

Durée / Contrôle des connaissances 5 cours (2h) 5 TDM (2h) 60% l'examen final 40% la note obtenue en TDM pondérée par la note de présence et de participation

Programmation Déclarative Un univers de boites Une boite est posée sur le sol ou dans une autre boite, ou encore sur une autre boite On dispose d’une grande boite, d’une boite de taille moyenne et de cinq petites boites   1.     Identifier les huit entités manipulées 2.     Répertorier et définir les deux relations qui existent entre ces entités

Configuration 1 a c e d b

Déclarer la configuration 1 est_posee_dans(a , gb). est_posee_dans(d , bm). est_posee_dans(e , gb).   est_posee_sur(b , d). est_posee_sur(c , a). est_posee_sur(gb , sol). est_posee_sur(bm , sol).

Déclarations = Programme Prolog Ce programme est uniquement constitué de faits (affirmations) Les entités sont représentées par des atomes Les relations sont représentées par des prédicats Un prédicat est caractérisé par son nom et son arité ; on note est_posee_sur/2 On regroupe les déclarations relatives à une même relation ; on obtient ainsi une procédure Prolog (paquet de clauses)

Répondre aux questions Qui est posée sur la boite a ? Qui est posée sur le boite e ? Sur qui est posée la boite c ? Qui est posée dans la grande boite ?

Poser une question en Prolog ?- est_posee_sur(X , a). X = c ;   ?- est_posee_sur(X , e). no ?- est_posee_sur(c , X). X = a ; ?- est_posee_dans(X , gb). X = e ;

Une boite est-elle prise ? On suppose que l’on peut poser au plus une boite sur une autre boite La relation est_prise/1 s’exprime en Prolog par la règle est_prise(X) :- est_posee_sur(Y,X).   Une règle Prolog est composée d’une tête et d’une queue séparées par le symbole :- Le symbole :- doit se lire comme un si

Prolog versus Clause de Horn Règles: B :- A. ¬AvB (nonA ou B) B :- A1,A2. ¬(A1.A2)vB = ¬A1v¬A1vB Fait: B. B exactement un littéral positif Question (but): ?-A. ¬A que des littéraux négatifs

Clause de Horn On appelle clause de Horn toute clause ayant au plus un littéral positif B, ¬A, ¬Av¬C, ¬Av¬CvB sont des clauses de Horn mais AvB , ¬Av¬BvCvD n'en sont pas On appelle fait toute clause comprenant exactement un littéral positif par exemple B On appelle but toute clause n'ayant que des littéraux négatifs par exemple ¬A , ¬A1v¬A2

Variable anonyme est_prise(X) :- est_posee_sur(Y,X). La variable Y qui apparaît dans la queue de la règle n’est pas référencée dans la tête il est donc inutile de la nommer On peut alors utiliser une variable anonyme _   est_prise(X) :- est_posee_sur(_,X).

Quelles sont les boites prises ? ?- est_prise(X). X = d ; X = a ; X = sol ; Expliquer pourquoi Prolog répond que le sol est pris Proposer une solution pour éviter cela

Quelles sont les boites prises ? boite(a). boite(b). boite(c). boite(d). boite(e). boite(gb). boite(bm).   est_prise(X) :- boite(X) , est_posee_sur(_,X).

Règle est_prise/1 La procédure boite/1 définit en extension le concept de boite   La règle est_prise/1 exprime qu’une entité X est prise si c’est une boite et si il existe une entité qui est posée sur X la virgule doit donc être lue comme et si

Configuration 2 a c e b d

Modifier en conséquence le code du programme Poser les questions suivantes en Prolog : a est-elle une boite ? a est-elle prise ? qui est posé sur a ? sur qui a est-il posé ? dans quoi a est-il ?

Interpréter les questions Prolog ?- est_posee_sur(X,Y). ?- est_posee_sur(X,_). ?- est_posee_sur(_,Y). ?- est_posee_dans(X,Y). ?- est_posee_dans(X,_). ?- est_posee_dans(_,Y).

On s’intéresse au contenu des boites % Regle 1 est_dans(X,Y) :- est_posee_dans(X,Y).   % Regle 2 est_dans(X,Y) :- … % Regle 3

Procédure est_dans/2 est_dans(X,Y) :- est_posee_dans(X,Y). est_posee_sur(X,Z) , est_dans(Z,Y). est_posee_dans(Z,Y) , est_dans(X,Z).

Cette procédure est composée de trois règles Le symbole :- de la règle 1 correspond à un si Le symbole :- de la règle 2 correspond à un ou si Le symbole :- de la règle 3 correspond à un ou si

Interpréter et répondre aux questions ?- est_dans(X , bm).   ?- est_dans(X , gb). ?- est_dans(b , X).

Une affaire de famille … Anna, Jean, jacques, Julien et Paule sont de la même famille Le prénom permet d’identifier sans ambiguïté un individu Le sexe peut être déterminé par le prénom Jacques et Jean sont des enfants de Julien. Jean est enfant de Anna. Paule est enfant de Jean. Stéphanie est enfant de Jacques

Une affaire de famille … Dessiner l’arbre généalogique de cette famille Le prénom permet d’identifier sans ambiguïté un individu Identifier les entités Le sexe peut être déterminé par le prénom

Des entités et des relations jacques, jean, julien, anna, paule, stéphanie, homme, femme Définir la relation parent/2 Définir la relation sexe/2

Interpréter et répondre aux questions ?- parent(julien , X). ?- parent(X , jean). ?- parent(julien , jean). ?- parent(jean , julien). ?- parent(X , Y). ?- sexe(julien , X). ?- sexe(X , femme).

Définir les relations mere/2 pere/2 grand_mere/2 grand_pere/2   pere/2 grand_mere/2 grand_pere/2 grand_parent/2