La question est-elle prouvable à partir des faits et règles? définir des fonctions mathématiques λ-calcul,, Lisp, Scheme, CAML,

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

Systèmes décisionnels et programmation avancée

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

Évaluation et implémentation des langages

Grammaires d unification

Intelligence Artificielle Planification

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

Machines virtuelles Cours 1 : Introduction

Initiation à la Programmation en Logique avec SISCtus Prolog

Algèbre binaire et Circuits logiques ( )

Logique : ENSIIE 1A - contrôle final

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2)

Réalisabilité et extraction de programmes

Cours 1 : La compilation

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Bases de données déductives

Conception des systèmes répartis

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

ALGORITHMIQUE ET PROGRAMMATION En C

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

Logique. Plan du chapitre

Intelligence artificielle appliquée à l automatique

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

TD 1 - Structures de Traits et Unification

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

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

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

Exemples de problèmes et d applications. INF6953 Exemples de problèmes 1

Programmation linéaire

Baccalauréat ES Antilles Guyane 12 septembre 2014 Corrigé

Éléments de programmation et introduction à Java

Baccalauréat ES Pondichéry 7 avril 2014 Corrigé

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

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)

Utilisation des tableaux sémantiques dans les logiques de description

Correction du baccalauréat ES/L Métropole 20 juin 2014

Entraînement au concours ACM-ICPC

Programmation. fonctionnelle, impérative, logique et orientée objet

MIS 102 Initiation à l Informatique

L informatique en BCPST

Programmation Par Contraintes

TSTI 2D CH X : Exemples de lois à densité 1

Pourquoi l apprentissage?

Créer et partager des fichiers

Chap III : Les tableaux

Continuité d une fonction de plusieurs variables

Mise à jour du logiciel de vidéo de Polycom

Compilation (INF 564)

Les transactions 1/46. I même en cas de panne logicielle ou matérielle. I Concept de transaction. I Gestion de la concurrence : les solutions

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

CONDITIONS DE REUSSITE, DISPENSES, REPORTS ET CREDITS DANS L ENSEIGNEMENT SUPERIEUR

Chapitre 2 Le problème de l unicité des solutions

III- Raisonnement par récurrence

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

Syllabus du cours de musique. Maternelle. enseigné par Joël Chiasson

Informatique Machines à calculer en théorie et en pratique

Cours de Master Recherche

Cours Fonctions de deux variables

Probabilités conditionnelles Exercices corrigés

Cabri et le programme de géométrie au secondaire au Québec

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Intelligence Artificielle et Systèmes Multi-Agents. Badr Benmammar

Utiliser Dev-C++ .1Installation de Dev-C++ Table des matières

Chapitre 11. Séries de Fourier. Nous supposons connues les formules donnant les coefficients de Fourier d une fonction 2 - périodique :

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

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

Les commandes relatives aux réseaux

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Cours d Algorithmique et de Langage C v 3.0

Corps des nombres complexes, J Paul Tsasa

Rappels sur les suites - Algorithme

SYSTÈME DE GESTION DE FICHIERS


I / La démarche à suivre pour l installation de l application-crm

IUT de Laval Année Universitaire 2008/2009. Fiche 1. - Logique -

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

Resolution limit in community detection

Évaluation des logiciels et autres réalisations

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

Cours de Base de Données Cours n.12

Intelligence Artificielle et Robotique

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

Créer le schéma relationnel d une base de données ACCESS

Compilation. Algorithmes d'analyse syntaxique

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

Problème : Calcul d'échéanciers de prêt bancaire (15 pt)

BAREME sur 40 points. Informatique - session 2 - Master de psychologie 2006/2007

Les «devoirs à la maison», une question au cœur des pratiques pédagogiques

Théorie des Langages

Autres langages de l IA

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

Calculer avec Sage. Revision : 417 du 1 er juillet 2010

Stratégie de recherche adaptative en programmation par contrainte

Extraits d' reçus : Ce sont les utilisateurs qui savent le mieux parler du logiciel BatiFree Devis et du service d'assistance.

Conditions Générales d utilisation de l Application «Screen Mania Magazine»

Transcription:

Programmation logique Prolog Comment exprimer des algorithmes? Approche procédurale : machines de Turing,, langages algorithmiques,, C, Pascal, Java, «Programme» Prolog ( = Théorie logique) faits règles question Approche fonctionnelle : La question est-elle prouvable à partir des faits et règles? définir des fonctions mathématiques λ-calcul,, Lisp, Scheme, CAML, Approche logique : humain(paul). /* fait 1 */ animal(bonzo). /* fait 2 */ parle(x) :- humain(x). /* règle 1 */ calculer = prouver logique des prédicats + déduction, clauses de Horn, Prolog, Datalog, Choisir l approche en fonction du problème à traiter.?- parle(bonzo).?- parle(paul). yes?- parle(toto). 1 de 30 2 de 30 Syntaxe Questions ouvertes Constantes, fonctions, prédicats : c, x36, bonnne_annee, Si une question contient une ou plusieurs variables Variables: X, Y, A, Arc, _X, Prolog cherche toutes les valeurs des variables qui rendent la question prouvable. Formules: clauses de Horn variables quantifiées universellement (implicitement) un seul littéral positif :- remplace <=, remplace humain(paul). humain(ernest). humain(albert). animal(bonzo). bebe(ernest). bebe(jim). parle(x) :- humain(x), t bebe(x). parle(x) :- humain(x), t bebe(x). signifie x ( humain(x) bebe(x) parle(x))?- parle(z). Z = paul ; Z = albert ; 3 de 30 4 de 30

Technique de résolution Exemple Prolog utilise le principe de résolution en chaînage arrière. Pour prouver p(a) chercher soit un fait p(t) soit une règle p(t) :- L1, L2,, Ln tels que a soit unifiable avec t faits et règles carnivore(x) :- animal(x), mange(x, viande). mange(emilie, poisson). mange(albert, carottes). mange(dagobert, pain). mange(dagobert, viande). (b) animal(dagobert). (a) animal(spido).?- carnivore(dagobert). Si c est un fait de base, la preuve est terminée Si c est une règle, il faut prouver L1, L2,, Ln, on utilise la même technique. si la preuve ne marche pas on essaye une autre unification. 1. Unification X = dagobert et on résolution avec la carnivore(x) :-... 2. Reste à prouver : animal(dagobert) et mange(dagobert, viande). 3. Preuves avec les faits (a) et (b) 5 de 30 6 de 30 Justification par la méthode de résolution Exemple avec une négation Pour prouver carnivore(dagobert) on essaye de réfuter n carnivore(dagobert) Résolutionavec la clause carnivore(x) :- animal(x), mange(x, viande) == carnivore(x) ou n animal(x) ou n mange(x, viande) humain(paul). humain(ernest). humain(albert). animal(bonzo). bebe(ernest). bebe(jim). Unificateur: X = dagobert parle(x) :- humain(x), t bebe(x). Résolvant n animal(dagobert) ou n mange(dagobert, viande)?- parle(albert). Résolution avec animal(dagobert) Résolvant: n mange(dagobert, viande) Résolution avec parle(x) :- humain(x), t bebe(x). Unificateur : X = albert Résolution avec mange(dagobert, viande) Résolvant: humain(albert), t bebe(albert). Résolvant: --> clause vide --> réfutation 7 de 30 8 de 30

Négation (suite) A prouver: humain(albert), t bebe(albert). 1) humain(albert) est un fait --> OK 2) prouver t bebe(albert). On ne trouve aucun fait ou règle pour bebe(albert). Donc impossible de prouver bebe(albert) Le processus de recherche en marche arrière Problème: on a en général beaucoup de choix possibles pour appliquer la résolution. Solution Prolog: chaînage arrière Lorsque un sous-but ne peut être satisfait, revient au sous-but précédent, essaye de le satisfaire d une autre manière, repart en avant. NEGATION PAR ECHEC on considère que t bebe(albert) est prouvé Donc parle(albert) est prouvé. 9 de 30 10 de 30 Exemple. Trace de la recherche parent(albert, marc). parent(jeanne, marc). parent(anne, claude). parent(anne, paul). parent(claude, aline). grand_parent(x,y) :- parent(x,z), parent(z,y). grand_parent(u,v) X = U Y = V parent(u,z) U= albert Z= marc U= jeanne Z= marc U= anne Z= claude parent(z,v) échec échec V= aline Les instantiations de variables sont défaites lors de la marche arrière. 1 1 call grand_parent(_420,_421) 2 2 call parent(_420,_1250) 2 2 exit parent(albert,marc) 3 2 call parent(marc,_421) 3 2 fail parent(marc,_421) 2 2 redo parent(albert,marc) 2 2 exit parent(jeanne,marc) 4 2 call parent(marc,_421) 4 2 fail parent(marc,_421) 2 2 redo parent(jeanne,marc) 2 2 exit parent(anne,claude) 5 2 call parent(claude,_421) 5 2 exit parent(claude,aline) 1 1 exit grand_parent(anne,aline) 1 1 redo grand_parent(anne,aline) 5 2 redo parent(claude,aline) 5 2 fail parent(claude,_421) 11 de 30 12 de 30

A l intérieur d une règle : ordre d écriture Choix des sous-buts S il y a plusieurs règles dont la tête est unifiable : ordre d écriture des règles p(x) :- q1( ), q2( ). /* 1 */ p(x) :- r1( ), r2( ). /* 2 */ p(x) q1( ) q2( ) 1 Représentation graphique du «chemin de satisfaction» p(x) :- q1( ), q2( ). p(x) :- r1( ), r2( ). p(x) fail q1( ) 1 2 r1( ) q2( ) r2( ) r1( ) r2( ) 2 exit En cas d échec on recule sur le chemin 13 de 30 14 de 30 Règles récursives Importance de l ordre de déclaration ancetre(x,y) :- parent(x,y). ancetre(x,y) :- parent(x,z),ancetre(z,y). ancetre(x,y) ancetre(x,y) parent(x,z) 1 2 1 2 parent(x,z) ancetre(z,y) parent(z,y2) parent(x,y) parent(x,y) ancetre(z,y) parent(z,y) parent(z,y2) ancetre(y2,y)... ancetre(y2,y)... parent(z,y) On n en sort jamais! 15 de 30 16 de 30

Pour satisfaire un but p(v1,, vn) Unification et fonctions Exemples Faits: p(35), p(a), p(f(3,b)), p(a+3), p(6+7). il faut trouver un fait ou une règle de la forme p(w1,, wn) :- tel que v1 unifiable avec w1,, vn unifiable avec wn Règle d unification si v est une variable et w est un object quelconque: OK si v et w sont des variables : OK, v et w sont désormais «liées» un atome ou mbre entier ne s unifie qu avec lui-même une fonction (structure) ne s unifie qu avec une fonction de même m et de même mbre de paramètres si les paramètres sont unifiables (récursion) N.B. Les fonctions ne sont pas évaluées ( programmation impérative), sauf demande explicite.?- p(35) yes?- p(c).?- p(x). X = 35; X = a; X = f(3,b); X = a+3; X = 6+7;?- p(f(x,y)). X = 3 Y = b?p(13).?p(x+y). X = a Y = 3 ; X = 6 Y = 7 17 de 30 18 de 30 Exemple: Théorie des mbres Essais Représentation des mbres la constante 0 la fonction s (unaire) p.ex. 5 est représenté par s(s(s(s(s(0))))) la fonction + (binaire) Prédicat: egal(binaire) Axiomes : x (x+0 = x) x (0+x = x) x y z (x+y = z => x+s(y) = s(z)) Prolog egal(x+0, X). egal(0+x, X). egal(x+s(y), Z) :- egal(x, Y, Z).?- egal(s(s(0))+s(s(s(0))), s(s(s(s(s(0)))))). yes?- egal(s(s(0))+s(s(0)),x). X = s(s(s(s(0))))?- egal(x+s(s(0)),s(s(s(s(s(0)))))). X = s(s(s(0))) ; egal(x, s(s(s(s(0))))). X = s(s(s(s(0))))+0 ; X = s(s(s(0)))+s(0) ; X = s(s(0))+s(s(0)) ; X = s(0)+s(s(s(0))) ; 19 de 30 20 de 30

Une infinité de réponses Négation par échec de preuve egal(x, Y). Le but t P(X) est satisfait si on n arrive pas à prouver P(X). X = _5946+0 Y = _5946 ; Particularité (n logique) : les instantiations sont défaites lors de l échec Exemple X = 0+_5946 Y = _5946 ; X = _6124+s(0) Y = s(_6124) ; X = 0+s(_6125) Y = s(_6125) ;... X = _6124+s(s(s(s(s(s(s(s(s(s(s(0))))))))))) Y = s(s(s(s(s(s(s(s(s(s(s(_6124))))))))))) etc. cours(a1). cours(a2). cours(b1). cours(b2). cours(c1). cours(c2). prereq(a1,b1). prereq(a2,b1). prereq(b1,c1). prereq(b2,c1). prereq(b3,c2). etu(paul). etu(pierre). etu(amelie). acquis(paul,a1). acquis(paul,a2). acquis(pierre,a2). acquis(amelie,b3). ne_peut_s_inscrire(x,y) :- prereq(z,y), t acquis(x,z). peut_s_inscrire1(x,y) :- t ne_peut_s_inscrire(x,y). 21 de 30 22 de 30 Utilisation Contrôle de l exploration?- peut_s_inscrire1(paul,b1). yes?- peut_s_inscrire1(paul,y). Le Y qui a causé l échec n est pas transmis en arrière ***/ Il est parfois utile ou nécessaire d empêcher la marche arrière. n utiliser qu une seule règle pour résoudre un but détecter les situations d échec où la recherche d autres solutions ne conduira à rien (optimisation). lorsque on sait qu il n y a qu une seule solution, pour éviter la recherche d alternatives (optimisation). Réparation peut_s_inscrire2(x,y) :- etu(x), cours(y), t ne_peut_s_inscrire(x,y).?- peut_s_inscrire2(paul,y). Y = a1 ; Y = a2 ; Y = b1 ; Y = b2 ; Principe p(x) q1( )! q2( ) r1( ) r2( ) 23 de 30 24 de 30

Exemple: choix d une seule règle Chemins de satisfaction Les personnes qui ont un livre en retard n ont accès qu aux serives de base de la bibliothèque. service(pers, S) :- en_retard(pers, Livre),!, serv_base(s). service(pers, S) :- serv_general(s). serv_base(reference). serv_base(questions). serv_additionnel(emprunt). serv_additionnel(pret_inter_biblio). service(pers, S) en_retard(pers. Livre)! serv_base(s) serv_general(s) serv_general(x) :- serv_base(x). serv_general(x) :- serv_additionnel(x). en_retard( G. Oublié, Mathematical logic for CS ). en_retard( J. Vai, Le grand tout ). 25 de 30 26 de 30 Choix d une seule règle Remplacement de! par t somme(0,0). somme(n, R) :- N1 is N - 1, /* somme des entiers de 0 à N = R */ somme(n1, R1), R is R1 + 1 somme(n, 0) :- N < 1. somme(n, R) :- N1 is N - 1, t (N < 1), /* bloque la règle si N < 1 */ somme(n1, R1), R is R1 + 1 Que se passe-t-il dans but :- p(x), somme(0, R), q(x, R). lorsque q(x, R) échoue? Et vice-versa A :- B, C. A :- t B, D Plus sûr: somme(0, 0) :-!. Devient A :- B,!, C. A :- D Encore plus sûr: somme(n, 0) :- N < 1,!. Plus efficace: on essaye de satisfaire B une seule fois. 27 de 30 28 de 30

Echecs sans autres alternatives Commencer par éliminer les cas pour lesquels on sait que le prédicat est faux; on veut que le prédicat soit faux. etudiant_standard(e) :- mobile(x),!, fail. etudiant_standard(e) :- licence(x, L), licence(x, L2),L =/ L2,!, fail. etudiant_standard(e) :-.../* test compliqué */ Situation Une seule solution Il existe plusieurs manières de trouver la solution On sait qu il n y a qu une solution habite(x, Ville) :- adresse(x, Rue, No, Ville),!. habite(x, Ville) :- habite_chez(x, Y), habite(y, Ville),!. habite(x, Ville) :- sous_locataire(x, Y), habite(y, Ville),!. etc. actif(prof) :- enseigne(prof, Matiere),!. eligible(prof) :- actif(prof), engage_en(prof, Date), Date < 1999. 29 de 30 30 de 30