Compilation de Règles de réécriture et de Stratégies non-déterministes

51
Compilation de Règles de réécriture et de Stratégies non-déterministes Pierre-Etienne Moreau Directeur de thèse : Hélène Kirchner

description

Compilation de Règles de réécriture et de Stratégies non-déterministes. Pierre-Etienne Moreau Directeur de thèse : Hélène Kirchner. Contexte général. Preuve automatique de propriétés et de théorèmes développer des techniques de preuve prototyper des outils de preuve - PowerPoint PPT Presentation

Transcript of Compilation de Règles de réécriture et de Stratégies non-déterministes

Page 1: Compilation de  Règles de réécriture et de Stratégies non-déterministes

Compilation de Règles de réécriture et de

Stratégies non-déterministes

Pierre-Etienne Moreau

Directeur de thèse : Hélène Kirchner

Page 2: Compilation de  Règles de réécriture et de Stratégies non-déterministes

2

Contexte général

• Preuve automatique de propriétés et de théorèmes– développer des techniques de preuve– prototyper des outils de preuve

• Règle de réécriture– objet sur lequel il est possible de raisonner– moyen d’exprimer les algorithmes et les

procédures de preuve

Page 3: Compilation de  Règles de réécriture et de Stratégies non-déterministes

3

Contexte international

• De nombreux travaux : CiME, daTac, Larch Prover, Otter,

ReDuX, Reve, RRL, Spike, ML, Caml, Clean, ... • principaux langages : terme + règle

1975 CompilateurEquational Interpreter (Chicago)

1977

1999

Interpréteur OBJ (Menlo Park)

1980 Interpréteur ASF+SDF (Amsterdam)

1985 Compilateur ELANInterpréteur ELAN (Nancy)

Interpréteur Maude

CafeOBJ Compilateur Brute

Compilateur ASF+SDF

(Ishikawa)

+ stratégie

Page 4: Compilation de  Règles de réécriture et de Stratégies non-déterministes

4

Plan

• ELAN : Réécriture + Stratégie

• Objectifs et difficultés

• Apports

• Situation actuelle et perspectives

Page 5: Compilation de  Règles de réécriture et de Stratégies non-déterministes

5

ELANMécanisme de base : réécriture

• Règle non nommée :[] fact(1) 1

• Règle conditionnelle :[] fact(n) n*fact(n-1) if n 1

Calcul

fact(3) 3*fact(2) 3*2*fact(1) 3*2*1 3*2 6

Page 6: Compilation de  Règles de réécriture et de Stratégies non-déterministes

6

Problèmes liés à la réécriture

• 2 règles de réécriture :[] [x,y] x

[] [x,y] [x+1,y]

[1,2]

1 [2,2]

2 [3,2]

3 ...

Non-confluence

Non-terminaison

Page 7: Compilation de  Règles de réécriture et de Stratégies non-déterministes

7

Stratégie

• Règle nommée :[R1] [x,y] x

[R2] [x,y] [x+1,y]

• Stratégie :repeat(dc one(R1,R2))

repeat(first one(R1,R2))

repeat(dk(R1,R2))

[1,2]

1 [2,2]

2 [3,2]

3 ...

gestion de la non confluence

Gestion de la non confluence

Page 8: Compilation de  Règles de réécriture et de Stratégies non-déterministes

8

StratégieGestion de la non terminaison

• Ajout d’une condition :[R1] [x,y] x

[R2] [x,y] [x+1,y] if x y [1,2]

1 [2,2]

2

• Ajout d’une règle :[R1] [x,y] x

[R2] [x,y] [x+1,y]

[check] [x,y] [x,y] if x y

• Stratégie : repeat(dk(R1, check ; R2))

Page 9: Compilation de  Règles de réécriture et de Stratégies non-déterministes

9

Associatif-CommutatifGrande expressivité

• Associativité : x (y z) = (x y) z

• Commutativité : x y = y x[extract] x E x

dk(extract)

1 2 3 4

1 42 3

Page 10: Compilation de  Règles de réécriture et de Stratégies non-déterministes

10

Associatif-CommutatifSource de non-déterminisme

Règle : [extract] x E x

Sujet : 1 2 3 4

Objectif : extraire un élément pair

Règle : [check] x x if Pair(x)

Stratégie : dk(extract) ; dc one(check)

1 2 3 4

3 échec

2 2

Page 11: Compilation de  Règles de réécriture et de Stratégies non-déterministes

11

AC + StratégieDouble non-déterminisme

• Une règle nommée est appliquée à la racine

• Mécanisme d’évaluation locale[relation] x E y

if Pair(x)

where y:=(dk(extract)) E

if Relation(x,y)

Page 12: Compilation de  Règles de réécriture et de Stratégies non-déterministes

12

Plan

• ELAN : Réécriture + Stratégie

• Objectifs et difficultés

• Apports

• Situation actuelle et perspectives

Page 13: Compilation de  Règles de réécriture et de Stratégies non-déterministes

13

Objectifs

• Poursuivre l’étude du formalisme

• Etudier les algorithmes de compilation– compilation de la réécriture– compilation du filtrage AC– compilation des stratégies

• Rendre ces méthodes utilisables en pratique– concevoir un outil fiable et efficace

Page 14: Compilation de  Règles de réécriture et de Stratégies non-déterministes

14

Difficultés

• Gérer le double non-déterminismeproposer un mécanisme uniforme

• Gérer les interactions et intégrer les solutionsconception globale

de stratégies non-déterministes

de symboles associatifs et commutatifs

• Compiler la réécriture

En présence :

Page 15: Compilation de  Règles de réécriture et de Stratégies non-déterministes

15

Plan

• ELAN : Réécriture + Stratégie

• Objectifs et difficultés

• Apports

• Situation actuelle et perspectives

Page 16: Compilation de  Règles de réécriture et de Stratégies non-déterministes

16

Compilation dufiltrage syntaxique

• Sélection efficace d’une règle : – analyse de l’ensemble des règles– pré-construction d’automates de

filtrage– génération d’un programme C

• Travaux largement étudiés :– Hoffmann et O’Donnell (1982),

Gräf (1991), Sekar et al. (1992), Graf (1996), Nedjah et al. (1997)

Apports

Gestion du non-déterminisme

Filtrage syntaxique

Compilation du filtrage AC

Analyse du déterminisme

Compilation des stratégies

Implantation

Définition d’unformat d’échange

Page 17: Compilation de  Règles de réécriture et de Stratégies non-déterministes

17

Automate de filtrage

Analyse des 3 règles

f(a,g(a)) a

f(g(b),g(b)) c

f(x,g(c)) b

f

*

g

b

g

b

g

a

g

a

c

Sujet : f(g(a),g(c))Sujet : f(g(a),g(c))Sujet : f(g(a),g(c))Sujet : f(g(a),g(c))Sujet : f(g(a),g(c))Sujet : f(g(a),g(c))Sujet : f(g(a),g(c))

Automate de filtragenon-déterministe

Non-déterministe :• pour sélectionner un motif• pour trouver tous les motifs

Page 18: Compilation de  Règles de réécriture et de Stratégies non-déterministes

18

Automate de filtragedéterministe

Analyse des 3 règles

f(a,g(a)) a

f(g(b),g(b)) c

f(x,g(c)) b

f

*

g

b

g

b

g

a

g

a

c

c

c

g

c

*

Sujet : f(g(a),g(c))

Gräf (1991)Nedjah (1997)

Page 19: Compilation de  Règles de réécriture et de Stratégies non-déterministes

19

Automate de filtragedéterministe avec jumpNode

Analyse des 3 règles

f(a,g(a)) a

f(g(b),g(b)) c

f(x,g(c)) b

Sujet : f(g(a),g(c))

f

*

g

b

g

b

g

a

g

a

c

c

c

g

c

**

• construction incrémentale

• taille réduite

Page 20: Compilation de  Règles de réécriture et de Stratégies non-déterministes

20

Compilation dufiltrage AC

• Problème connu :– Hullot (1980)– Benanav et al. (1987)– Kounalis et al. (1991) – Bachmair et al. (1993) – Lugiez et al. (1994)– Eker (1995)

• Prise en compte de l’aspect normalisation

Apports

Gestion du non-déterminisme

Filtrage syntaxique

Compilation du filtrage AC

Analyse du déterminisme

Compilation des stratégies

Implantation

Définition d’unformat d’échange

Page 21: Compilation de  Règles de réécriture et de Stratégies non-déterministes

21

• Forme canonique ordonnée :b+(a+(b+c)) = (b+a)+(b+c) = +(a,b2,c)

• 1 sujet : +(f(a,a), f(a,g(b)), f(g(c),g(b)), g(a))

• 2 règles :– +(z, f(a,x), g(a)) r1

– +(f(a,x), f(y,g(b))) r2

Problème à résoudre

• Trouver une solution au problème de filtrage AC

• Forme canonique ordonnée :b+(a+(b+c)) = (b+a)+(b+c) = +(a,b2,c)

• 1 sujet : +(f(a,a), f(a,g(b)), f(g(c),g(b)), g(a))

• 2 règles :– +(z, f(a,x), g(a)) r1

– +(f(a,x), f(y,g(b))) r2

Page 22: Compilation de  Règles de réécriture et de Stratégies non-déterministes

22

Exemple (one-to-one)

sélection d’une règle : +(z, f(a,x), g(a)) r1

construction d’un BG :

Sujet : +(f(a,a), f(a,g(b)), f(g(c),g(b)), g(a))

résolution du BG :

calcul d’une autre solution :

x=a et z=+(f(a,g(b)), f(g(c),g(b)))

x=g(b) etz=+(f(a,a), f(g(c),g(b)))

sélection d’une autre règle : tout est à refaire !

Page 23: Compilation de  Règles de réécriture et de Stratégies non-déterministes

23

Analyse de la situation

Problème

• La construction des BG coûte cher– appel récursif du filtrage AC one-to-one– allocation dynamique de mémoire

+(f(x), *(g(y), h(z))) r(x,y,z)

+(f(a), f(b), g(c), *(g(a), h(b)), *(g(b), h(c)))

*(g(y), h(z))

*(g(a), h(b))*(g(y), h(z))

*(g(b), h(c))

Page 24: Compilation de  Règles de réécriture et de Stratégies non-déterministes

24

3 idées principales

• Accélérer les cas fréquents en pratique– définition d’une classe de motifs

• Réduire le coût de construction des BG– utiliser des automates de filtrage syntaxique– définir une structure de BG compacte

• Intégrer filtrage et normalisation– prendre en compte les contraintes externes au

filtrage AC

Page 25: Compilation de  Règles de réécriture et de Stratégies non-déterministes

25

Classe de motifs

• C0 : termes linéaires

– exemple : a, x, f(x,y), …

• C1 : 1 niveau de symbole AC (semi-linéaire)

– 2 variables directement sous le symbole AC– exemple : [+(z, y3, f(a,x), g(a)) , *(g(t), b)]

• C2 : 2 niveaux de symboles AC

– exemple : *(x, +(y, z2))

• Suffisant en pratique

• Filtrage syntaxique des sous-termes

Page 26: Compilation de  Règles de réécriture et de Stratégies non-déterministes

26

Approche many-to-one

+(z, f(a,x), g(a)) r1

+(f(a,x), f(y,g(b))) r2

construction du CBG avec un automate

+(f(a,a), f(a,g(b)), f(g(c),g(b)), g(a))

sélection d’une règle : extraction d’un BG

calcul d’une solution

+( f(a,x), f(y,g(b)), g(a) )

+(f(a,a), f(a,g(b)), f(g(c),g(b)), g(a))

+( f(a,x), f(y,g(b)), g(a) )

regroupement des sous termes

Page 27: Compilation de  Règles de réécriture et de Stratégies non-déterministes

27

Approche many-to-one

+(z, f(a,x), g(a)) r1

+(f(a,x), f(y,g(b))) r2

construction du CBG avec un automate

+(f(a,a), f(a,g(b)), f(g(c),g(b)), g(a))

sélection d’une règle : extraction d’un BG

calcul d’une solution

sélection d’une autre règle :

+( f(a,x), f(y,g(b)) , g(a) )

+(f(a,a), f(a,g(b)), f(g(c),g(b)), g(a))

+( f(a,x), f(y,g(b)), g(a) )

extraction d’un autre BG

Page 28: Compilation de  Règles de réécriture et de Stratégies non-déterministes

28

Normalisation AC

• Sélection d’une règle : filtrage AC

• Calcul d’une substitution

• Construction et normalisation des instances– gestion de la mémoire et du partage

• Traitement des évaluation locales– stratégies et problèmes de filtrage imbriqués– gestion des retours arrières

• Maintien en forme canonique ordonnée

Page 29: Compilation de  Règles de réécriture et de Stratégies non-déterministes

29

Résultats expérimentaux

• Bool3 : peu de règles mais des gros termesx + 0 x x * 0 0

x + x + x 0 x * x * x x

(x + y) * z (x*y) + (y*z) x * 1 x

and(x,y) (x*x*y*y) + (2*x*x*y) +

(2*x*y*y) + (2*x*y)

or(x,y) …

not(x) (2*x) + 1

Page 30: Compilation de  Règles de réécriture et de Stratégies non-déterministes

30

Résultats expérimentaux

Requête : and(a1,…,a6) = not(or(not(a1),…,not(a6)))

CiME : >24hOBJ : >24hOTTER : >10mn (plus de mémoire)ReDuX : 20mnRRL : >4h (plus de mémoire)Spike : >24hBrute : 2.25 secMaude : 0.153 secELAN : 0.332 sec

Page 31: Compilation de  Règles de réécriture et de Stratégies non-déterministes

31

Résultats expérimentaux

Nat10 : petits termes mais >100 règles

CiME : 294 sec

OBJ : 111 sec

Brute : 0.360 sec

Maude : 0.170 sec

ELAN : 0.163 sec

Page 32: Compilation de  Règles de réécriture et de Stratégies non-déterministes

32

Résultats expérimentaux

• Somme : règles conditionnellesx faux

x S set(y) vrai if x = y

x S faux

[S1 set(x), S2, y] erreur if x S2

[S1 set(x), S2, y] [S1, S2 set(x), x+y]

if x S2

Page 33: Compilation de  Règles de réécriture et de Stratégies non-déterministes

33

Résultats expérimentaux

Requête : [ set(1) … set(100), , 0]

OBJ : >24h

Spike : >24h

Brute : 6.247 sec

Maude : 16.774 sec

ELAN : 1.326 sec

Résultat : [, set(1) … set(100), 5050]

Page 34: Compilation de  Règles de réécriture et de Stratégies non-déterministes

34

Gestion des points de choix en C

• Ajout de 2 primitives :– setChoicePoint (setjmp)– fail (longjmp)

Apports

Gestion du non-déterminisme

Filtrage syntaxique

Compilation du filtrage AC

Analyse du déterminisme

Compilation des stratégies

Implantation

Définition d’unformat d’échange

.eln Compilateur C

Support

Backtrack

Page 35: Compilation de  Règles de réécriture et de Stratégies non-déterministes

35

Intérêts de l’approche

• Gestion transparente des points de choix

• Compilation modulaire, utilisation de paramètres et de variables locales

• Un seul mécanisme pour gérer le double non-déterminisme

• Schémas simples de compilation des stratégies

Page 36: Compilation de  Règles de réécriture et de Stratégies non-déterministes

36

Compilation desStratégies

Apports

Gestion du non-déterminisme

Filtrage syntaxique

Compilation du filtrage AC

Analyse du déterminisme

Compilation des stratégies

Implantation

Définition d’unformat d’échange

dk(S1, S2)résultat

résultat

résultat

fin

XX

XS2

S1

dc one(S1, S2)résultat

fin

XXS1

dk(S1, S2) ; S3résultat intermédiaire

fin

XX

XS2

S1S3

échec

résultat intermédiaire S3

résultat

résultat intermédiaire S3

échec

Page 37: Compilation de  Règles de réécriture et de Stratégies non-déterministes

37

Analyse du déterminisme

• Point de choix – temps– mémoire

• Stratégie avec plusieurs résultats– pose de points de choix

• Stratégie avec un seul résultat– pas de point de choix

• Régimes déterministes

Apports

Gestion du non-déterminisme

Filtrage syntaxique

Compilation du filtrage AC

Analyse du déterminisme

Compilation des stratégies

Implantation

Définition d’unformat d’échange

Page 38: Compilation de  Règles de réécriture et de Stratégies non-déterministes

38

AlgorithmeRésumé

• Analyse des règles[] x E E if P(x)

[] x E E f(x) if not(P(x))

points de choix

pas de point de

choix

pas de point de

choix

[] fact(n) 1 if n = 1

[] fact(n) n*fact(n-1) if n 1

• Analyse des stratégiesrepeat(dc one(S))

Page 39: Compilation de  Règles de réécriture et de Stratégies non-déterministes

39

Impact sur le code généré

• Contrôle géré par des sauts (goto)

• Amélioration des schémas de compilation :

ss

s

ss

s

ss

s

s s s

Stratégie repeat(S)

cas déterministecas non-déterministe

• Moins de points de choix

Page 40: Compilation de  Règles de réécriture et de Stratégies non-déterministes

40

Impact surla pose de points de choix

0

20

40

60

80

100

120

Complétion KB Minela Nqueens Fibonacci

Sans analyse Avec analyse

Page 41: Compilation de  Règles de réécriture et de Stratégies non-déterministes

41

Impact surl’efficacité du code généré

0

20

40

60

80

100

120

Complétion KB Minela Nqueens Fibonacci

Sans analyse Avec analyse

Page 42: Compilation de  Règles de réécriture et de Stratégies non-déterministes

42

Implantation

• Plateforme de développement

• Compilateur utilisable et diffusé

• Accélération des programmes

• Réduction de la consommation mémoire

• Exécution d’applications de taille réelle

Apports

Gestion du non-déterminisme

Filtrage syntaxique

Compilation du filtrage AC

Analyse du déterminisme

Compilation des stratégies

Implantation

Définition d’unformat d’échange

Page 43: Compilation de  Règles de réécriture et de Stratégies non-déterministes

43

Automates d’arbres(Thomas Genet)

• Environnement de calcul et de preuve• Déterminisation, minimisation, intersection• Terminaison, interblocage, confidentialité, ... • 100 modules, 100 sortes, 850 règles, 300

conditions, 55 stratégies, …• 10^9 règles appliquées en 20 minutes• (1 semaine avec l’interpréteur)

Page 44: Compilation de  Règles de réécriture et de Stratégies non-déterministes

44

Colette(Carlos Castro)

• Environnement de résolution de contraintes

• Conjonction, minimisation, disjonction

• Puzzles, coloriages, ordonnancement, ...

• 70 modules, 40 sortes, 1000 règles, 500 conditions, 60 stratégies, ...

• 10^10 règles appliquées en moins de 24h

• (6 mois avec l’interpréteur)

Page 45: Compilation de  Règles de réécriture et de Stratégies non-déterministes

45

Plan

• Réécriture + Stratégie

• Difficultés

• Apports

• Situation actuelle et perspectives

Page 46: Compilation de  Règles de réécriture et de Stratégies non-déterministes

46

Perspectives

• Aujourd’hui : nous avons un langage

• Perspective :– possibilité de plug-in – méthode d’évaluation des performances– extension du filtrage AC (A, AC0, AC1)

• algorithme de tri : l1 X l2 Y l3 l1 Y l2 X l3 if Y<X

Page 47: Compilation de  Règles de réécriture et de Stratégies non-déterministes

47

Perspectives

• Aujourd’hui : nous avons une implantation

• Perspective :– représentation des termes– gestion mémoire– mémorisation– gestion de l’espace de recherche : backjumping,

forwardjumping

Page 48: Compilation de  Règles de réécriture et de Stratégies non-déterministes

48

Perspectives

• Perspective :– format d’échange– modularité– mise à disposition

d’outils– ouverture vers l’extérieur

Pretty-printer Editeur Interface

ParseurOutil de

CoordinationPréprocesseur

Interpréteur Compilateur Débogueur

• Aujourd’hui : nous avons un environnement

Page 49: Compilation de  Règles de réécriture et de Stratégies non-déterministes

49

Perspectives

• ELAN : calcul par réécriture

• Perspective : construire le terme de preuve– visualiser (expliquer)– rejouer (déboguage)– communiquer (vérifier un calcul)– comprendre (stratégie interactive)– analyser (stratégie « intelligente »)

puissance et efficacité

Page 50: Compilation de  Règles de réécriture et de Stratégies non-déterministes

50

ApportsRésumé

• compilateur pour la réécriture

intégrant :

• algorithme de compilation du filtrage syntaxique

• définition d’une classe de motifs

• algorithme de compilation du filtrage AC

• méthode de gestion des points de choix

• algorithme d’analyse du déterminisme

• schémas de compilation de stratégies

Page 51: Compilation de  Règles de réécriture et de Stratégies non-déterministes

51

Résultats expérimentauxRésumé

• Interpréteur : 10 à 200.000 réécritures/sec

• Compilateur : 30.000 à 20.000.000 rééc/sec

• plus de 10^10 règles appliquées en 24h

• 1 min. de calcul = 3h20 avec un interpréteur

• 1 jour de calcul = 6 mois

• 3 années de travail