510 likes | 635 Views
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
E N D
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 • Règle de réécriture • objet sur lequel il est possible de raisonner • moyen d’exprimer les algorithmes et les procédures de preuve
Contexte international • De nombreux travaux : CiME, daTac, Larch Prover, Otter, • ReDuX, Reve, RRL, Spike,ML, Caml, Clean, ... • principaux langages : terme + règle + stratégie 1975 Equational Interpreter (Chicago) Compilateur 1999 1977 Interpréteur OBJ (Menlo Park) Interpréteur Maude CafeOBJ Compilateur Brute (Ishikawa) Compilateur ASF+SDF 1980 Interpréteur ASF+SDF (Amsterdam) 1985 Interpréteur ELAN (Nancy) CompilateurELAN
Plan • ELAN : Réécriture + Stratégie • Objectifs et difficultés • Apports • Situation actuelle et perspectives
ELANMécanisme de base : réécriture • Règlenon nommée : • [] fact(1) 1 • Règleconditionnelle : • [] 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
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] Non-confluence 2 [3,2] Non-terminaison 3 ...
Stratégie Gestion de la non confluence • 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
StratégieGestion de la non terminaison • Ajout d’une condition : [R1][x,y]x [R2][x,y][x+1,y] ifx y [1,2] • Ajout d’une règle : [R1][x,y]x [R2][x,y][x+1,y] [check][x,y][x,y] ifx y • Stratégie : repeat(dk(R1, check ; R2)) 1 [2,2] 2
Associatif-CommutatifGrande expressivité • Associativité : x (y z) = (x y) z • Commutativité : x y = y x [extract]x Ex dk(extract) 1 2 3 4 1 2 3 4
Associatif-CommutatifSource de non-déterminisme Règle : [extract]x Ex Sujet : 1 2 3 4 Objectif : extraire un élément pair Règle : [check]xx ifPair(x) Stratégie : dk(extract) ; dc one(check) 1 2 3 4 3 échec 2 2
AC + StratégieDouble non-déterminisme • Une règle nommée est appliquée à la racine • Mécanisme d’évaluation locale [relation]x Ey ifPair(x) where y:=(dk(extract)) E ifRelation(x,y)
Plan • ELAN : Réécriture + Stratégie • Objectifs et difficultés • Apports • Situation actuelle et perspectives
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
Difficultés • Compiler la réécriture En présence : • de symboles associatifs et commutatifs • de stratégies non-déterministes • Gérer le double non-déterminisme • proposer un mécanisme uniforme • Gérer les interactions et intégrer les solutions • conception globale
Plan • ELAN : Réécriture + Stratégie • Objectifs et difficultés • Apports • Situation actuelle et perspectives
Compilation dufiltrage syntaxique Apports Filtrage 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) Compilation du filtrage AC Gestion du non-déterminisme Compilation des stratégies Analyse du déterminisme Définition d’un format d’échange Implantation
Analyse des 3 règles f(a,g(a)) a f(g(b),g(b)) c f(x,g(c)) b Automate de filtrage Automate de filtragenon-déterministe 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)) f a * g g g b g a c b Non-déterministe : • pour sélectionner un motif • pour trouver tous les motifs
Analyse des 3 règles f(a,g(a)) a f(g(b),g(b)) c f(x,g(c)) b Automate de filtragedéterministe Sujet : f(g(a),g(c)) f a * g g g * b c g g a c c c b Gräf(1991) Nedjah(1997)
Analyse des 3 règles f(a,g(a)) a f(g(b),g(b)) c f(x,g(c)) b Automate de filtragedéterministe avec jumpNode Sujet : f(g(a),g(c)) f a * g * g g * b c g g a c c c b • construction incrémentale • taille réduite
Compilation dufiltrage AC Apports Filtrage syntaxique • 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 Compilation du filtrage AC Gestion du non-déterminisme Compilation des stratégies Analyse du déterminisme Définition d’un format d’échange Implantation
Problème à résoudre • 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 • 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 • Trouver une solution au problème de filtrage AC
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 : x=a et z=+(f(a,g(b)), f(g(c),g(b))) calcul d’une autre solution : x=g(b) et z=+(f(a,a), f(g(c),g(b))) sélection d’une autre règle :tout est à refaire !
Analyse de la situation +(f(x),*(g(y), h(z))) r(x,y,z) *(g(y), h(z)) Problème • La construction des BG coûte cher • appel récursif du filtrage AC one-to-one • allocation dynamique de mémoire *(g(a), h(b)) *(g(y), h(z)) *(g(b), h(c)) +(f(a), f(b), g(c),*(g(a), h(b)), *(g(b), h(c)))
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
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
+( f(a,x),f(y,g(b)), g(a) ) +(f(a,a), f(a,g(b)), f(g(c),g(b)), g(a)) Approche many-to-one +(z, f(a,x), g(a)) r1 +(f(a,x), f(y,g(b))) r2 regroupement des sous termes +( f(a,x), f(y,g(b)), g(a) ) 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)) Approche many-to-one +(z, f(a,x), g(a)) r1 +(f(a,x), f(y,g(b))) r2 +( f(a,x), f(y,g(b)) , g(a) ) 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 : extraction d’un autre BG
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
Résultats expérimentaux • Bool3 : peu de règles mais des gros termes x + 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
Résultats expérimentaux Requête :and(a1,…,a6) = not(or(not(a1),…,not(a6))) CiME :>24h OBJ :>24h OTTER :>10mn (plus de mémoire) ReDuX :20mn RRL :>4h (plus de mémoire) Spike :>24h Brute :2.25 sec Maude :0.153 sec ELAN :0.332 sec
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
Résultats expérimentaux • Somme : règles conditionnelles x faux x S set(y) vrai ifx = y x S faux [S1 set(x),S2, y] erreur ifx S2 [S1 set(x),S2, y] [S1,S2 set(x), x+y] if x S2
Résultats expérimentaux Requête : [ set(1) … set(100), , 0] Résultat : [, set(1) … set(100), 5050] OBJ :>24h Spike :>24h Brute :6.247 sec Maude :16.774 sec ELAN :1.326 sec
Gestion des points de choix en C Apports Filtrage syntaxique Backtrack • Ajout de 2 primitives : • setChoicePoint (setjmp) • fail (longjmp) .eln C Compilateur Compilation du filtrage AC Support Gestion du non-déterminisme Compilation des stratégies Analyse du déterminisme Définition d’un format d’échange Implantation
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
Compilation desStratégies Apports Filtrage syntaxique dc one(S1, S2) dk(S1, S2) S1 S1 résultat résultat Compilation du filtrage AC X X X X résultat Gestion du non-déterminisme S2 X résultat fin fin Compilation des stratégies dk(S1, S2) ;S3 Analyse du déterminisme S3 S1 résultat intermédiaire échec X X Définition d’un format d’échange S3 résultat intermédiaire résultat S2 S3 X résultat intermédiaire échec Implantation fin
Analyse du déterminisme Apports Filtrage syntaxique • 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 Compilation du filtrage AC Gestion du non-déterminisme Compilation des stratégies Analyse du déterminisme Définition d’un format d’échange Implantation
AlgorithmeRésumé • Analyse des règles []x EEif P(x) []x EEf(x)if not(P(x)) points 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égies repeat(dc one(S)) pas de point de choix
Impact sur le code généré •Contrôle géré par des sauts (goto) •Moins de points de choix •Amélioration des schémas de compilation : Stratégierepeat(S) casnon-déterministe casdéterministe s s s s s s s s s s s s
Implantation Apports Filtrage syntaxique • 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 Compilation du filtrage AC Gestion du non-déterminisme Compilation des stratégies Analyse du déterminisme Définition d’un format d’échange Implantation
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)
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)
Plan • Réécriture + Stratégie • Difficultés • Apports • Situation actuelle et perspectives
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 : l1Xl2Yl3l1Yl2Xl3ifY<X
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
Perspectives • Aujourd’hui : nous avons un environnement • Perspective : • format d’échange • modularité • mise à disposition d’outils • ouverture vers l’extérieur Pretty-printer Editeur Interface Outil de Coordination Parseur Préprocesseur Interpréteur Compilateur Débogueur
Perspectives • ELAN : calcul par réécriture • Perspective : construirele terme de preuve • visualiser (expliquer) • rejouer (déboguage) • communiquer (vérifier un calcul) • comprendre (stratégie interactive) • analyser (stratégie « intelligente ») puissanceetefficacité
ApportsRésumé • compilateur pour la réécriture intégrant : • algorithme de compilation du filtrage syntaxique • algorithme de compilation du filtrage AC • définition d’une classe de motifs • méthode de gestion des points de choix • algorithme d’analyse du déterminisme • schémas de compilationde stratégies