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

Documents pareils