ELFE - Cours 1
Transcription
ELFE - Cours 1
Organisation d’ELFE Programmation logique (5 semaines, C. Kuttler) ELFE - Cours 1 I langage : Datalog I DS le lundi 11 février (50% de votre note ecrite de premiere session) Celine Kuttler Programmation fonctionnelle (5 semaines, E. Wegrzynowski) 19 janvier 2013 I langage : Objective CAML (OCaml) I TP de remise a niveau obligatoire pour les étudiants n’ayant pas encore fait OCaml le mardi 5 février, après-midi. I DS fin mars (50% de votre note ecrite de premiere session) 1 / 27 Histoire I I Sujets du cours 1 Introduction a Datalog 1977s : invention de Prolog, dans le contexte des bases de données. Idée : ajouter du calcul récursif aux requêtes relationnelles. 1980s : programmation logique populaire pour l’intelligence artificielle. présence industrielle forte, mais pas encore de killer app pour les requêtes récursives. I 1990s : niches... I depuis environ 2007 : renaissance de Datalog pour le web. 2 / 27 3 / 27 I faits et règles I requêtes I exemples I comment exprimer la logique propositionnelle ? I comment exprimer la récursion ? 4 / 27 Exemple 1 Exemple 1 fete . femme ( mia ) . femme ( j o d y ) . femme ( y o l a n d a ) . joueAirGuitar ( jody ) . fete . femme ( mia ) . femme ( j o d y ) . femme ( y o l a n d a ) . joueAirGuitar ( jody ) . Requetes : 6 clauses I 5 faits I pas de règle I tuple trouve ou non. I hypothèse du monde clos. I Warning : undeclared predicate(s) : [pred/n] I requête avec variable : présence de femmes ? 5 / 27 Résume de la syntaxe (1) 6 / 27 Comment déduire des nouveaux faits ? I I constantes I I I nombres (entiers et réels) séquences de caractères alphanumériques, commencent avec une minuscule I I I des fait et des règles. inclus, qui Modus Ponens Du fait A, en combinaison avec la règle A ⇒ B , on déduit B. variables : I Au départ : une base de connaissances, contenant X, Y (séquences qui commencent avec une majuscule, (variable anonyme, tiret bas) Exemple 1 : la fête I comparaisons A op B, ou A et B sont des constantes ou variables, et op un opérateur de comparaison I Fait : C’est la fête. F I prédicats p(a1 , a2 , . . . , an ). Le prédicat p prend n arguments, qui sont des variables ou constantes. Le nom du prédicat doit commencer avec une minuscule. I Règle : Quand c’est la fête, il y a de la musique. F ⇒M I Conclusion : Il y a de la musique ! M 7 / 27 8 / 27 Comment déduire des nouveaux faits ? Une première règle en Datalog Du fait A, en combinaison avec la règle A ⇒ B , on déduit B. fete . musique :− f e t e . Exemple : le millionnaire Comment lire une règle Datalog ? Modus Ponens I Fait : Balthazar Picsou est un millionnaire. millionnaire(bp) I Règle : Tous les millionnaires ont un coffre-fort. ∀x : millionnaire(x) ⇒ avoir coffre fort(x) I Conclusion : Balthazar Picsou a un coffre-fort. avoir coffre fort(bp) En notation de logique propositionnelle, la règle Datalog B : −A. (1) se lit comme implication dans l’autre direction, A⇒B (2) 9 / 27 Exemple 3 10 / 27 Exemple 3 : Interprétation des règles fete . happy ( y o l a n d a ) . e c o u t e 2 L a M u s i q u e ( mia ) . e c o u t e 2 L a M u s i q u e ( y o l a n d a ) :− happy ( y o l a n d a ) . j o u e A i r G u i t a r ( mia ) :− e c o u t e 2 L a M u s i q u e ( mia ) . j o u e A i r G u i t a r ( y o l a n d a ) :− ecoute2LaMusique ( yolanda ) . fete . happy ( y o l a n d a ) . e c o u t e 2 L a M u s i q u e ( mia ) . e c o u t e 2 L a M u s i q u e ( y o l a n d a ) :− happy ( y o l a n d a ) . j o u e A i r G u i t a r ( mia ) :− e c o u t e 2 L a M u s i q u e ( mia ) . j o u e A i r G u i t a r ( y o l a n d a ) :− ecoute2LaMusique ( yolanda ) . 6 clauses Interpretation I I 3 faits 3 règles I I tête corps 11 / 27 I Quand Yoland est contente, elle écoute de la musique. I Quand Mia écoute de la musique, elle joue de l’AirGuitar. I Quand Yolanda écoute de la musique, elle joue de l’AirGuitar. 12 / 27 Exemple 3 : Requêtes Exo : trouver la musicienne Comment demander s’il existe une femme qui joue de l’AirGuitar ? f e t e . femme ( mia ) . e c o u t e 2 L a M u s i q u e ( mia ) . femme ( y o l a n d a ) . happy ( y o l a n d a ) . e c o u t e 2 L a M u s i q u e ( y o l a n d a ) :− happy ( y o l a n d a ) . j o u e A i r G u i t a r ( mia ) :− e c o u t e 2 L a M u s i q u e ( mia ) . j o u e A i r G u i t a r ( y o l a n d a ) :− ecoute2LaMusique ( yolanda ) . Requêtes I Est-ce que Mia joue de l’AirGuitar ? I Est-ce que Yolanda joue de l’AirGuitar ? [autoview, mot-cle reserve (answer)] 13 / 27 Exemple 4 : Conjonction logique (et) 14 / 27 Exemple 4 : Disjonction logique Nouvelle règle : happy ( v i n c e n t ) . ecoute2LaMusique ( paul ) . j o u e A i r G u i t a r ( v i n c e n t ) :− e c o u t e 2 L a M u s i q u e ( v i n c e n t ) , happy ( v i n c e n t ) . happy ( v i n c e n t ) . e c o u t e 2 L a M u s i q u e ( p a u l ) . j o u e A i r G u i t a r ( v i n c e n t ) :− e c o u t e 2 L a M u s i q u e ( v i n c e n t ) , happy ( v i n c e n t ) . Syntaxe La virgule exprime la conjonction en Datalog. j o u e A i r G u i t a r ( p a u l ) :− e c o u t e 2 L a M u s i q u e ( p a u l ) . j o u e A i r G u i t a r ( p a u l ) :− happy ( p a u l ) . Interprétation Vincent joue de l’AirGuitar, quand il est content et qu’il écoute de la musique. Syntaxe Requêtes I Paul joue de l’AirGuitar, quand il est content, ou qu’il écoute de la musique. Pour exprimer un OU logique en Datalog, on écrit deux règles. Requête Est-ce que Vincent joue de l’AirGuitar ? I 15 / 27 Est-ce que Paul joue de l’AirGuitar ? Et Pierre ? 16 / 27 Résume de la syntaxe (2) Base : bars Schémas sert(bar :string(varchar), biere :string(varchar),prix :real) frequente(personne :nom(varchar), bar :string(varchar)) aime(personne :nom(varchar),biere :string(varchar)) Opérateurs logique : I conjonction : virgule I disjonction : écrire deux règles implication B : − A1 , . . . , An . I I I I s e r t ( mcevans , l a c h o u f f e , 3 . 5 ) . s e r t ( mcevans , l e f f e , 2 . 5 ) . s e r t ( omnia , l a c h o u f f e , 4 . 5 ) . s e r t ( taverneflamande , lachti , 1 . 9 ) . le corps est une conjonction de n faits dans la tête, un seul fait si toutes ses conditions sont satisfaites, on peut déduire le nouveau fait B f r e q u e n t e ( t i m o l e o n , mcevans ) . aime ( t i m o l e o n , l a c h o u f f e ) . 18 / 27 17 / 27 Exemple : règle avec conjonction, variable, et comparaison Exemples : règle avec conjonction complexe c o n t e n t (X) :− bonmarche (B) :− s e r t (B , ,P ) , P =< 2 . 0 . aime (X , B e e r ) , f r e q u e n t e (X , Bar ) , s e r t ( Bar , Beer , ) . Interprétation de la règle Interpretation de la règle Si quelqu’un aime une certaine bière, et fréquente un bar qui vend cette bière, alors il est content. Un bar est bon marche, s’il sert une bière a moins de deux euros. En logique ∀X , Bar , Beer , Prix : aime(X , Beer ) and frequents(X , Bar ) and sert(Bar , Beer , Prix) → content(X ) 19 / 27 20 / 27 Requête Extension vs intension Prédicats s e r t ( mcevans , l a c h o u f f e , 3 . 5 ) . s e r t ( mcevans , l e f f e , 2 . 5 ) . s e r t ( omnia , l a c h o u f f e , 4 . 5 ) s e r t ( taverneflamande , lachti , 1 . 9 ) extension : les prédicats dont les relations sont enregistrées dans la base, comme faits. I intention : des prédicats définis par des règles (c.a.d. en tête) Terminologie f r e q u e n t e ( t i m o l e o n , mcevans ) . aime ( t i m o l e o n , l a c h o u f f e ) . c o n t e n t (X) :− aime (X , B e e r ) , f r e q u e n t e (X , Bar ) , s e r t ( Bar , Beer , ) . I EDB (extensional database) : collection de relations extensionelles I IDB ( intensional database) : collection de relations intensionnelles Exemple Question I I Quels prédicats du schéma bar sont extensionnels, quels intensionnels ? timoleon est-il content ? 21 / 27 Signification des règles Datalog 22 / 27 Graphe Datalog est une machine pour construire des nouveaux faits. Première approximation de la sémantique pour règles avec variables, non-recursives. prends les valeurs de variables qui rendent le corps de la règle vrai (il faut rendre vrai chacun des sous-buts) Le prédicat g /2 exprime un lien direct entre deux sommets : I considère les valeurs que peuvent prendre les variables de la tête g (0 ,1). g (1 ,2). g (2 ,3). g (3 ,4). g (4 ,5). g (5 ,6). g (6 ,7). g (7 ,8). g (8 ,9). g (9 ,10). g (10 ,11). I ajoute le tuple crée dans l’étape précédente, a la relation en tête de règle I 23 / 27 24 / 27 Graphe Graphe : connectivite Le prédicat g /2 exprime un lien direct entre deux sommets : g (0 ,1). g (1 ,2). g (2 ,3). g (3 ,4). g (4 ,5). g (5 ,6). g (6 ,7). g (7 ,8). g (8 ,9). g (9 ,10). g (10 ,11). I Le prédicat g /2 exprime un lien direct entre deux sommets. I Comment tester si deux sommets sont connectes, quelque soit la longueur du chemin ? I Définir un prédicat c/2. But : tester l’existence d’un chemin entre deux noeuds I Requête pour tester l’existence des chemin de longueur fixe, p.ex. 2 et 3, entre deux noeuds. I Peut-on poser les requêtes correspondantes en SQL ? 25 / 27 Sujets des cours suivants I I Puzzles logiques en Datalog Evaluation de Datalog : 3 sémantiques I I I relations minimales (modèles minimaux) sémantique des points fixes recherche de preuve (déduction) I récurrence en Datalog I comment modéliser un langage relationnel en Datalog ? I Datalog avec négation (stratification) I Unification en Prolog 27 / 27 26 / 27