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
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
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
4
Plan
• ELAN : Réécriture + Stratégie
• Objectifs et difficultés
• Apports
• Situation actuelle et perspectives
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
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
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
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))
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
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
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)
12
Plan
• ELAN : Réécriture + Stratégie
• Objectifs et difficultés
• Apports
• Situation actuelle et perspectives
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
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 :
15
Plan
• ELAN : Réécriture + Stratégie
• Objectifs et difficultés
• Apports
• Situation actuelle et perspectives
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
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
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)
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
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
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
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 !
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))
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
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
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
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
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
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
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
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
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
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]
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
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
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
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
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))
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
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
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
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
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)
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)
45
Plan
• Réécriture + Stratégie
• Difficultés
• Apports
• Situation actuelle et perspectives
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
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
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
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é
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
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