Home

Fichier PDF

image

Contents

1. 2 2 2 O O O 1 1 2 2 2 3 3 O O 1 1 2 2 3 3 4 4 O O 1 1 2 3 3 4 4 5 O O 1 2 2 3 4 4 5 6 d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d mult3 mult3 mult3 mult4 mult4 mult4 mult4 mult4 mult4 mult4 mult4 mult4 mult4 mult5 mult5 mult5 mult5 mult5 mult5 mult5 mult5 mult5 mult5 mult6 mult6 mult6 mult6 mult6 mult6 mult6 mult6 mult6 mult6 mult7 mult7 mult7 mult7 mult7 mult7 mult7 mult7 mult7 mult7 x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x 200 Annexe A Programmes utilis s pour effectuer les exp rimentations rule x Nat mult8 0 x 0 0 4 mult8 x rule x Nat mult8 1 x 8 0 4 mult8 x rule x Nat mult8 2 x 6 1 4 mult8 x rule x Nat mult8 3 x 4 2 4
2. Q l cS a CS Fia 11 1 Consid rons les termes f g b a g b et fac g b a g b o fac est un symbole AC Leur repr sentation est illustr e par les deux premiers dessins de la figure La structure de don n es peut facilement tre tendue pour repr senter des termes en forme canonique le troisi me dessin montre comment les occurrences multiples d un m me terme sont repr sent es en m morisant la multiplicit dans la liste de cellules Repr sentation des vecteurs de bits Les vecteurs de bits sont des objets largement utilis s dans le cadre de la compilation de la r criture Ils servent principalement pendant le filtrage m moriser les motifs qui filtrent un terme donn Un indice est associ chaque membre gauche de r gle et pour un probl me de filtrage donn le i me bit du vecteur est mis 1 lorsque le motif num ro i filtre le sujet L op ration de filtrage tant tr s fr quemment appliqu e il est essentiel que implantation des vecteurs de bits soit la plus optimale possible Nous avons distingu deux cas suivant que la taille du vecteur est plus petite ou plus grande que 32 ceci parce que 32 est le nombre de bits utilis par une grande majorit des processeurs actuels pour repr senter les entiers I existe des processeurs d
3. n a 100 Interpr teu S 106 Interpr teur 3 8 1 a 4 amp P 3 o 0 01 100 E a 6 5 10 4 Compilateur pa i Compilateur 8 a i a lt lt I ro a i 5 10 15 20 25 E 5 10 15 20 25 Fln jib n Fic 12 1 Degr de compilation de Fib_builtin le chapitre 11 ce qui l oblige allouer de la m moire et cr er un symbole de fonction apr s chaque tape de r criture 12 1 2 NqueensAC C est la aussi un des benchmarks les plus utilis s en programmation logique il permet d va luer les capacit s du langage g rer efficacement la pose et la gestion de points de choix Le probl me consiste trouver toutes les fa ons de placer n reines sur un chiquier de taille n x n de telle sorte qu aucune d elles ne soit mise en chec par une autre Nous pr sentons ici un codage plus concis plus efficace et surtout plus l gant que celui pr sent dans le chapitre 8 L id e consiste utiliser un op rateur d union AC pour repr senter les ensembles de positions qu il est possible d associer une reine La signature comporte les 7 op rateurs suivants queens set list int list int ok int int list int bool U set set set AC int set U int set set Set int set Empty set Comme pr c demment le predicat ok est vrai lorsqu une reine nouvellement plac e n est pas mise en ch
4. 13 1 3 Strat gies d application 15 1 4 R gles et strategies ce 16 1 5 Op rateurs Associatifs et Commutatifs 21 1 6 Modularit 23 Un des champs couverts par le domaine des sp cifications alg briques est celui des descrip tions formelles de types de donn es abstraits Une sp cification alg brique est g n ralement compos e de plusieurs parties les signatures qui d crivent la structure des types de donn es utilis s les sortes des donn es les op rations applicables sur ces donn es et les expressions ou formules logiques qui d finissent les propri t s des op rations Un formalisme de sp cification alg brique est caract ris par la syntaxe des signatures les formules logiques autoris es et par les op rations additionnelles qui permettent de d velopper des sp cifications ELAN est un formalisme de sp cification modulaire du premier ordre qui comporte des si gnatures multi sort es des r gles de r critures conditionnelles et des strat gies Une des par ticularit s d ELAN est de permettre l utilisation de grammaires hors contexte pour d crire les signatures Ceci permet de d finir et d utiliser des op rateurs infix s qui font d ELAN un langage agr able a utiliser pour sp cifier des structures de donn es complexes telles que celles utilis es dans des prouveurs automatiques des r solveurs
5. Syst me ouvert aooaa a Vers une nouvelle architecture Oynthese 4 Ke hae eh ee ou RE ru RARE Ree UE Eu a Las vil xiii 11 11 13 15 16 21 23 27 27 29 30 32 33 viii Sommaire II Compilation de la r criture 4 M ta conception 4 1 Interpr teur Compilateur et Machine abstraite 4 2 4 3 Pourquoi choisir un compilateur Compilation de la r criture Compilation du filtrage syntaxique 5 1 5 2 5 3 5 4 5 9 5 6 9 7 Termes vus comme des cha nes de symboles Automate de filtrage Cl tures d un ensemble de motifs Cl ture r duite d un ensemble de motifs Automate de filtrage m moire Automate de filtrage avec jumpNode Comparaison des diff rentes approches Compilation du filtrage associatif commutatif 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 Termes en forme canonique Approche one to one Approche many to one Classes de motifs Sp cialisation utilisant une structure compacte Raffinement glouton Calcul des substitutions Extension l ensemble des motifs Synth se Gestion du non d terminisme 7 1 7 2 7 3 7 4 7 5 7 6 Introduction Basic choice point primitives
6. 138 Le non d terminisme est une notion inh rente au processus de r criture En effet la possi bilit d appliquer simultan ment plusieurs r gles sur un m me terme et la possibilit de d finir des syst mes de r criture non confluents nous am nent consid rer qu un terme peut avoir plusieurs formes normales s il en existe Il faut aussi noter que la pr sence de symboles AC dans une signature est une source suppl mentaire de non d terminisme parce qu une r gle peut s appliquer de plusieurs fa ons possibles Pour prendre en compte ces ensembles de r sultats nous avons introduit le concept de strategie une strat gie est une fonction qui retourne un ensemble de r sultats lorsqu elle est appliqu e sur un terme initial D un point de vue pratique ces ensembles de r sultats ne sont pas repr sent s explicitement mais leurs l ments peuvent tre num r s gr ce un m canisme de gestion de points de choix voir chapitre 7 ELAN n est videmment pas le seul langage int grer des constructions non d terministes pour g rer des ensembles de r sultats On peut ainsi citer les langages de la famille Prolog tels que Wamcc Diaz 1995 ou Mercury Henderson Conway et Somogyi 1996 ou encore des langages qui m langent les paradigmes de programmation imp rative avec ceux de la programmation logique Claire Caseau et Laburthe 1996 Alma 0 Partington 1997 Apt et Schaerf 1997 ou 2LP McAloon et Tretk
7. l utilisateur veut interactivement d boguer une sp cification partir de ces scenarii nous pouvons imaginer quels sont les composants et les fonctionnali t s qu il doit tre possible d int grer dans le nouvel environnement Un exemple d environnement ELAN est pr sent dans la figure 3 3 48 Chapitre 3 Plateforme de prototypage Interface Editeur Base de Parseur Parseur utilisateur syntaxique donn es ELAN infix sr Outil de type ToolBus Pretty printer Interpr teur Compilateur Editeur de textes FIG 3 3 Vers une nouvelle architecture de l environnement ELAN Base de donn es de modules C est un composant essentiel de l environnement qui doit offrir un m canisme flexible pour parcourir une relation d importation et retrouver les modules corres pondants Cette base de donn es joue un r le tr s important parce que c est elle qui m morise quels sont les modules qui doivent tre analys s ou compil s par exemple pour tre capable de r crire un terme Elle doit aussi g rer le statut des modules pour savoir lors d une recherche quels sont les modules qui doivent tre recherch s sur le disque et ceux qui ont t modifi s par des actions d dition diteur de texte L diteur doit permettre d diter des fichiers textuels mais aussi tre capable de se connecter un outil ext rieur tel que le
8. d d d d d d d d d d d d d d d d d d d d d d d d d d d d d 198 Annexe A Programmes utilis s pour effectuer les exp rimentations rule x Nat y Nat 5 x 6 y 1 x y 1 d rule x Nat y Nat 5 x 7 y 2 x y 1 4 rule x Nat y Nat 5 x 8 y 3 x y 1 d rule x Nat y Nat 5 x 9 y C4 x y 1 d rule x Nat y Nat 6 x 6 y 2 x y 1 d rule x Nat y Nat 6 x 7 y 3 x y 1 4 rule x Nat y Nat 6 x 8 y 4 x y 1 d rule x Nat y Nat 6 x 9 y 5 x y 1 d rule x Nat y Nat 7 x 7 y 4 x y 1 d rule x Nat y Nat 7 x 8 y 5 x y 1 d rule x Nat y Nat 7 x 9 y 6 x y 1 d rule x Nat y Nat 8 x 8 y 6 x y 1 d rule x Nat y Nat 8 x 9 y 7 x y 1 d rule x Nat y Nat 9 x 9 y 8 x y 1 d rule x Nat multO x d rule x Nat multi x x rule mult2 d d rule mult3 d d rule mult4 d d rule mult5 d d rule mult6 d d rule mult
9. D partement de formation doctorale en informatique cole doctorale IAE M UFR STMIA Compilation de r gles de r criture et de strat gies non d terministes TH SE pr sent e et soutenue publiquement le 22 juin 1999 pour l obtention du Doctorat de l universit Henri Poincar Nancy 1 sp cialit informatique par Pierre Etienne Moreau Composition du jury Pr sident Yves Caseau Directeur de recherche Bouygues France Rapporteurs Guy Cousineau Professeur Universit Denis Diderot Paris VII France Michael J O Donnell Professeur Universit de Chicago USA Karl Tombre Professeur Ecole des Mines de Nancy France Examinateurs Alexander Bockmayr Professeur Universit Henri Poincar Nancy 1 France H l ne Kirchner Directeur de recherche CNRS France Laboratoire Lorrain de Recherche en Informatique et ses Applications UMR 7503 Mis en page avec la classe thloria A mon p re ii ii Remerciements Le d veloppement de cette th se m a particuli rement occup ces derni res ann es mais les motivations sous jacentes ont mijot dans mon esprit pendant plus de dix ans C est en commen ant imaginer des algorithmes pour num rer des nombres premiers que certains signes laissaient pr voir mon int r t pour l expressivit et l efficacit des langages de programmation C est apr s avoir r alis un premier interpr teur capable de tracer et d tudi
10. case code_a successor_a subject gt subtern 1 switch getSymb successor_a case code_g successor_g successor_a gt subtern 0 switch getSymb successor_g case code_b mask nb_bit 0 mask nb_bit 2 break default goto label7 break default label7 mask nb_bit 0 return nb_bit Programme 6 2 Cette fonction implante l automate de filtrage d terministe pr sent dans la figure 6 1 Elle prend un terme clos subject en argument et parcourt les constructeurs qui le composent code_f code_g ou code_a par exemple Lors qu un tat final est atteint les num ros des sous motifs qui filtrent le terme clos sont m moris s dans un tableau mask Ce tableau est ensuite utilis pour construire le graphe biparti compact 6 6 Raffinement glouton 93 La r solution de BG gt nous am ne consid rer trois solutions Si lJ amp a f ax f a g b f y 9 b 1 So If aa f a2 f g c g b f v g b 1 Sa If ag9 flax f g c g b f v g b 1 Les deux r gles consid r es n tant pas conditionnelles l une des deux pourra s appliquer pour r duire le terme s 6 6 Raffinement glouton Les probl mes de filtrage AC ont g n ralement plusieurs solutions mais pour appliquer une regle de r criture il est souvent n cessaire de n en calculer qu une En particulier lorsqu on consid re des r gles non conditionnelles ou des r gles dont les conditions
11. chouer 130 Chapitre 8 Compilation des r gles et des strat gies Algorithme 8 5 repeat S boucler succes si setChoicePoint 0 alors break sinon si succes T alors fail finsi code correspondant S succes T fin boucle Partant d un terme t on s aper oit que l application de repeat S entra ne la pose d un point de choix chaque it ration S S S S oC ine S S S S Ce qui signifie qu en plus des points de choix pos s par les applications de S il y a autant de points de choix actifs simultan ment que la longueur de la r p tition Ce qui peut poser des probl mes vidents de gestion m moire Mais il semble que ce soit le prix payer pour b n ficier de la puissance d un tel constructeur de strat gie Dans le chapitre 9 nous verrons comment une analyse fine des r gles et des strat gies compo sant un programme peut permettre de g n rer des sch mas de compilation permettant de rendre plus efficace en temps et en m moire l ex cution d une telle strat gie en ne posant qu un seul point de choix Chapitre 9 Analyse du d terminisme 9 1 Strat gies primitives 132 9 2 Classification du d terminisme 132 9 3 Inf rence de la classe de d terminisme 134 9 4 Impact de l analyse du d terminisme 136 9 5 R sultats exp rimentaux
12. into rego load the trail pointer into reg and reg push non specific registers into the trail referenced by reg2 push the stack pointer sp the caller s frame pointer rego the return address ra and the initial trail pointer reg into the trail push the endReg code prepare the return value 0 do a jump to saveFrame The following figure illustrates the state of the trail stack after executing setChoicePoint 108 Chapitre 7 Gestion du non d terminisme This corresponds to the top level of the zoom part given in Figure 7 3 reg gt saved registers stack pointer caller s frame pointer rego reg 3 gt return address reg 2 initial trail pointer reg endReg code rep This saved information is used by the handle function saveFrame to save stack frames and update links to the corresponding choice point Note that the notation reg 3 is used to specify a base address In this example the value 3 is subtracted from the base register reg2 value to denote a new address whose contents is the saved return address The following algorithm describes a pseudo assembly code of the saveFrame handle function Algorithm 7 2 saveFrame load the trail pointer into reg load the caller s frame pointer into rego restore the saved return address reg 3 into reg restore the saved trail pointer reg gt 2 into regs push the frame memory block rego spl into the trail push
13. nil end GrammarForSort Liste 0 3 nil 0 8 0 0 0 Ident nil nil 3 0 8 0 0 0 Type Element Char Type Liste nil nil end Afin d am liorer la lisibilit les num ros associ s aux sortes Element et Liste sont not s Element et Liste et les num ros associ s aux identificateurs a b nil extract sont res pectivement not s a b nil et extract Enfin le code ASCII d un caract re c est not e Chaque r gle de grammaire se voit attribuer un nom not par exemple dans le cas de la derni re r gle Les diff rents param tres d une r gle de grammaire permettent de coder respectivement de la gauche vers la droite la visibilit du symbole locale ou globale le nom de la r gle la priorit des informations syntaxiques 8 signifie que le symbole est affichable le statut du symbole l mentaire ou non la th orie quationnelle du symbole actuellement un symbole peut appartenir la th orie vide ou la th orie associative et commutative une information concernant la compilation des strat gies et enfin la liste des unit s lexicales qui d finissent la syntaxe du symbole La place d un argument d une fonction est repr sent e par la sorte de cet argument Type Element par exemple En ELAN une r gle de r criture est compos e principalement de son nom du membre gauche du membre droit et d une liste d valuations locales if where ou choose Consid
14. 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 Nat 1 0 Nat 1 0 3 4 3 Li becomes true if A B false otherwise helper operator ditto ditto CA Nat B Nat neq A B bool reducer neq helper A B CA Nat neg helper A A false bool reducer false false CA Nat B Nat bool reducer neq helper A B true x Bool and false x false x Bool and x false false x Bool and true true true A 1 Brute 197 rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule C x C x C x C x CC CCE C x x Cx C x C x Cx C x x C x Cl C x C x C x x CC C x C x C x Cx C x C x C x x x C x Clix az C x C x Cx C x C x C x Cl Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat
15. 210 Annexe Programmes utilis s pour effectuer les exp rimentations fib 0 1 x fib prec 0 1 x fib prec prec 0 1 x fib 0 2 x fib prec 0 2 x fib prec prec 0 2 x fib 0 3 x fib prec 0 3 x fib prec prec 0 3 x fib 0 4 x fib prec 0 4 x fib prec prec 0 4 x fib 0 5 x fib prec 0 5 x fib prec prec 0 5 x fib 0 6 x fib prec 0 6 x fib prec prec 0 6 x fib 0 7 x fib prec 0 7 x fib prec prec 0 7 x fib 0 8 x fib prec 0 8 x fib prec prec 0 8 x fib 0 9 x fib prec 0 9 x fib prec prec 0 9 x fib 1 1 x fib prec 1 1 x fib prec prec 1 1 x fib 1 2 x fib prec 1 2 x fib prec prec 1 2 x fib 1 3 x fib prec 1 3 x fib prec prec 1 3 x fib 1 4 x fib prec 1 4 x fib prec prec 1 4 x fib 1 5 x fib prec 1 5 x fib prec prec 1 5 x fib 1 6 x fib prec 1 6 x fib prec prec 1 6 x fib 1 7 x fib prec 1 7 x fib prec prec 1 7 x fib 1 8 x fib prec 1 8 x fib prec prec 1 8 x fib 1 9 x fib prec 1 9 x fib prec prec 1 9 x fib 2 x fib 1 x fib O x fib 3 x fib 2 x fib 1 x fib 4 x fib 3 x fib 2 x fib 5 x fib 4 x fib 3 x fib 6 x fib 5 x fib 4 x fib 7 x fib 6 x fib 5 x fib 8 x fib 7 x fib 6 x fib 9 x
16. 3 x ty 1 x 3 y 4 x y 1 x 4 y 5 x y 1 x 5 y 6 x y 1 x 6 y 7 x y 1 x 7 y 8 x y 1 x 8 y 9 x y 1 x 9 y OCxty 1 d 2 x 2 y 4 xty 2 x 3 y 5 xty 2 x 4 y 6 xty 2 x 5 y 7 x y 2 x 6 y 8 xty 2 x 7 y 9 x y 2 x 8 y O xtyt 1 d 2 x 9 y 1 xtyt 1 d 3 x 3 y 6 xty 3 x 4 y 7 x y 3 x 5 y 8 xty 3 x 6 y 9 x y 3 x 7 y O x y 1 d 3 x 8 y 1 x y 1 d 3 x 9 y 2 x y 1 4 A 3 Cime 207 4 x 4 x 4 x 4 x 4 x 4 x 4 y 5 y 6 y 7 y 8 y 9 y 5 x 5 x 5 x 5 x 5 x 5 y 6 y 7 y 8 y 9 y 6 x 6 x 6 x 6 x 6 y 7 y 8 y 9 y 7 x 7 y 7 x 8 y 7 x 9 y 8 x 8 y 8 x 9 y 9 x 9 y multO x multi x mult2 d mult2 0 x mult2 1 x mult2 2 x mult2 3 x mult2 4 x mult2 5 x mult2 6 x mult2 7 x mult2 8 x mult2 9 x mult3 d d mult3 0 x mult3 1 x mult3 2 x gt gt 8 x y 9 x y O x y 1 d 1 x y 1 d 2 x y 1 d 3 xty 1 d O x y 1 d 1 x y 1 d 2 x y 1 d 3 xty 1 d 4 x y 1 d 2 x y 1 d 3 xty 1 d 4 xty 1 d 5 x y 1 d 4 x y 1 d 5 x y 1 d 6 x y 1 d 6 x y 1 d 7 x y 1 d 8 x y 1 d O mult2 x 2 mult2 x 4 mult2 x 1 mult2 x
17. Known choice point implementations New choice point management Imperative programming with backtracking Concluding Remarks Compilation des r gles et des strat gies 8 1 8 2 Tour d horizon Solution retenue pour ELAN 51 53 53 56 58 61 62 63 66 70 72 75 78 81 82 83 84 88 88 93 94 95 oF 99 100 101 102 103 109 111 8 3 Compilation du filtrage et de la s lection des r gles 8 4 Compilation des valuations locales 8 5 Construction du terme r duit ooo a a a 8 6 Compilation des strat gies 9 Analyse du d terminisme 9 1 Strat gies primitives 9 2 Classification du d terminisme 9 3 Inf rence de la classe de d terminisme 9 4 Impact de l analyse du d terminisme 9 5 R sultats exp rimentaux III Implantation d un compilateur 10 Architecture logicielle 10 1 Compilation modulaire et compilation s par e 10 2 Organisation du compilateur 10 3 Fonctionnement du compilateur 11 Support d ex cution 11 1 Structures de donn es 11 2 Op rations internes 11 3 Sortes et o
18. L approche utilis e consiste calculer dans un premier temps une cl ture de l ensemble de motifs Une deuxi me tape inspecte alors la cl ture pour y rechercher des sous ensembles quivalents La recherche de ces sous ensembles et la v rifica tion de leur quivalence sont des op rations complexes qui permettent n anmoins de r duire la taille des automates g n r s en mettant en facteur certains ensembles d tats Un exemple donn dans l article dans le cas o L f a a x a f g a x a a b f x b b b montre que l approche propos e permet de passer d un automate poss dant 27 tats un automate poss dant seulement 15 tats Pour ce m me exemple il est int ressant de constater que notre approche utilisant des jumpNode permet de construire un automate poss dant seulement 17 tats La comparaison des automates ainsi construits montre que les deux tats suppl mentaires peuvent tre partag s en modifiant l algorithme de construction des automates de la mani re suivante si lors de linser tion d un terme dans l arbre de filtrage un n ud doit tre cr et que ce terme se trouve d j une autre position de l arbre un jumpNode peut tre ajout pour partager ce terme Par la suite lorsqu un sous arbre partag est modifi par l insertion d un nouveau terme il faut alors dupliquer la partie partag e pour viter tout effet de bord Il faut cependant noter que cette 80 Chapitre 5 Compilation du
19. RRL gt 4h Spike gt 24h gt 24h Brute 34 407 2 25 26 648 0 360 177 595 6 247 Maude 4 854 0 153 25 314 0 170 177 252 16 774 ELAN 5 282 0 332 15 384 0 163 177 152 1 326 Ce tableau permet bien videmment de savoir qui d ELAN de Maude ou de Brute met un dixi me de seconde de plus ou de moins que l autre mais son principal int r t est surtout de montrer que les exemples test s sont difficiles il y a deux ans peine il tait quasiment impossible de r soudre ces probl mes Ce tableau permet non seulement de noter les progr s effectu s en terme de performance sec mais il montre aussi que le nombre total de r gles appliqu es rwr est globalement en baisse Les figures suivantes permettent de mieux suivre les diff rences de performance entre Brute ELAN et Maude La figure 12 11 montre que pour l exemple Nat10 les performances d ELAN et de Maude sont similaires Comme nous l avons vu pr c demment une grande partie du temps de calcul est pass construire et d truire des structures de graphes bipartis compacts et nous pensons pouvoir r duire grandement ce co t en utilisant des techniques de recyclage de structures Les r sultats de la figure 12 12 semblent donner un l ger avantage Maude ce qui nous am ne nous demander comment et pourquoi un interpr teur irait il plus vite qu un compilateur Il y a dans un premi
20. chaque objet pour m moriser le nombre de r f rences augmente d environ 20 la m moire totale consomm e et d grade d autant les performances Cette baisse de performance est principalement due l architecture des ordinateurs actuels qui utilise une m moire cache pour r duire les temps de transfert entre le processeur et la m moire principale En effet augmentation g n rale de la taille des objets manipul s diminue en cons quence le nombre d objets se trouvant dans la m moire cache ce qui augmente les temps de transfert et diminue d autant les performances globales C est pour rem dier aux probl mes d efficacit et de s ret que nous avons tudi d autres approches pour g rer la m moire Utilisation d un ramasse miettes Le terme g n rique de ramasse miettes d signe un ensemble de m thodes qui permettent de g rer globalement la m moire L id e consiste utiliser des heuristiques pour entrelacer des phases de calcul et des phases de r cup ration de m moire Pour cela l ensemble des zones de m moire allou es pendant le calcul sont m moris es et en fonction de crit res qui d pendent du temps s parant deux phases de r cup ration ou de la proportion de m moire allou e par rapport l espace total disponible une tape de r cup ration est d clench e Cela consiste d tecter les zones de m moire qui ne sont plus utilis es et les rendre au syst me Plusieurs algorithmes
21. operators of constructors succes constant a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 constant PO bi constant 4 operators AC not unary and or binary p m binary equal binary variables x y z variable axioms x x x b0 bO x x bi x x x x x x bO x bO x y x z x z y 2 not x b1 b1 x bi equal x x succes and x y x x x y y b1 b1 C x x x x y b1 b1 x y y x b1 b1 x y or x y Ci b1 x x x x y y x x y y y x CC y y order interactive problems reduce equal and and and ai a2 and a3 a4 and a5 a6 not or or or not a1 not a2 or not a3 not a4 or not a5 not a6 end A 3 2 Nat10 operators constructors d constant 0 1 2 3 4 5 6 7 8 9 unary 4 operators 206 Annexe A Programmes utilis s pour effectuer les exp rimentations AC multO multi mult2 mult3 mult4 unary mult5 mult6 mult7 mult8 mult9 unary prec fact fib unary variables x y variable axioms o a d of X d x OCx 0 y O x y O x 1 y 1 x y OCx 2 y 2 x y O x 3 y 3 xty OCx 4 y 4 x y O x 5 y 5 xty O x 6 y 6 xty O x 7 y 7 x y O x 8 y 8 xty O x 9 y 9 x y 1 x 1 y 2 xty 1 x 2 y
22. Dans un souci d conomie nous proposons d tudier particuli rement un m canisme de partage maximal de termes qui utiliserait des tables de hachages et une technique de hash consing pour r duire l espace m moire n cessaire un calcul par normalisation Ce point est important dans la mesure o le compilateur serait utilis pour implanter des applications d monstrateurs ou composants de l environnement par exemple amen es traiter des exemples de taille r elle preuves de protocoles ou valuation partielle par transformation de programmes par exemple et donc de gros termes L tude de ces diff rentes repr sentations serait faite en parall le avec une tude d taill e des diff rents algorithmes de gestion m moire Dans un souci d efficacit il serait possible de s appuyer sur la structure des termes d finis dans une sp cification pour compiler des proc dures de ramasse miettes sp cifiques On peut ainsi imaginer pr compiler des fonctions de marquage ou de copie de termes qui exploiteraient la signature des symboles de fonction pour viter de faire du travail inutile tel que le marquage d un sous terme de sorte entier par exemple dans le cadre d un algorithme de mark and sweep Efficacit Comme le mentionnait aussi Marian Vittek en conclusion de sa th se 1994 en r criture il est fr quent qu un m me calcul soit effectu plusieurs fois aussi bien pour valuer une condition que pour exp
23. Le m canisme d valuation d ELAN est tel que les entiers sont extraits un un la strat gie retourne dans un premier temps l entier 1 puis la g n ration d un chec fail d clenche l extraction de la solution suivante 2 etc rules for int x int local ri x gt 1 end r2 x gt 2 end r3 x gt 3 end r4 x gt 4 end r5 x gt 5 end r6 x gt 6 end r7 x gt 7 end r8 x gt 8 end end strategies for int select gt dk r1 r2 r3 r4 r5 r6 r7 r8 end end Le syst me de r gles non nomm es suivant permet de v rifier que la position d une nouvelle reine d n est pas menac e par les positions p 1 des reines pr c demment plac es sur l chiquier Lorsqu une nouvelle reine est plac e le pr dicat ok est appel avec diff 1 rules for bool p d diff int 1 list int global ok diff d nil gt true end ok diff d p 1 gt false if d p end ok diff d p 1 gt false if d p diff end ok diff d p 1 gt false if p d diff end J ok diff d p 1 gt ok diff 1 d 1 end 8 4 Compilation des valuations locales 121 Enfin le programme qui permet de calculer une ou l ensemble des solutions s crit avec une seule r gle de r criture La premi re version utilise l aspect non d terministe du filtrage AC pour extraire des l ments d un ensemble rules for list int pi p2 p3 p4 p5 p6 p7 p8 int si s2 s3 s4 set local queensrule q
24. Wampler S et Griswold R 1983 The implementation of generators and Goal Directed Evaluation in Icon Software Practice and Experience 13 495 518 Warren D H D 1983 An abstract Prolog instruction set Technical Report 309 SRI Inter national Artificial Intelligence Center Weis P et Leroy X 1993 Le langage Caml Ediscience ISBN 2 7296 0493 6 Wilhelm R et Maurer D 1994 Les compilateurs Masson ISBN 2 225 84615 4 Wilson P R 1992 Uniprocessor garbage collection technique International Workshop on Memory Management Vol 637 of Lecture Notes in Computer Science Springer Verlag Saint Malo pp 1 42 Wirsing M 1995 Algebraic specification languages An overview Recent Trends in Data Types Specification Vol 906 of Lecture Notes in Computer Science Springer Verlag pp 81 115 244 Bibliographie Zendra O Colnet D et Coucaud P 1998 With SmallEiffel The GNU Eiffel Compiler Eiffel joins the Free Software community GNU Bulletin 25 To be published Index AC voir associatif commutatif acc s fonction d 94 algorithme d Albert Graf 79 avanc de set ChoicePoint et fail 106 incr mental de cons truction d arbre 67 alias d un op rateur 12 Alma 101 alphabet 62 analyse du d terminisme 131 lexicale syn taxique s mantique 29 application d une strat gie 16 d une substi tution 14 de taille r elle 175 approche hybride d ELAN 147
25. choue jamais et retourne au moins un r sultat une strat gie S est dite non d terministe nondet si pour un terme t quelconque son application S t choue ou retourne un ou plusieurs r sultats enfin une strat gie qui choue tout le temps est dite d chec fail Ces diff rentes cat gories d finissent des modes d mode et un ordre partiel peut tre tabli comme suit det lt semi multi lt nondet Cet ordre correspond intuitivement la notion d inclusion sur les intervalles dont les bornes sont le nombre minimal et maximal de r sultats qu il est possible d obtenir 1 1 lt 0 1 1 n lt 0 n o n est un entier arbitraire strictement sup rieur 1 Au paragraphe 9 3 nous proposons un algorithme qui permet d inf rer le mode d une stra t gie particuli re Pour cela deux op rateurs commutatifs And et Or d finis sur une logique cinq valeurs sont n cessaires Leur d finition est donn e ci dessous L intuition qui se cache derri re ces op rateurs est la suivante And permet de calculer le mode correspondant la composition de deux strat gies S1 et S2 Lorsque ce mode est semi d terministe par exemple cela signifie qu une des deux strat gies S ou S2 peut chouer et qu aucune des deux strat gies ne peut retourner plus d un r sultat And det semi And semi det And semi semi semi Or permet de calculer le mode correspondant l appli
26. de l algorithme 5 3 sur l tat initial eo nous donne l automate enrichi suivant Il suffit alors d appliquer l algorithme 5 4 sur l tat eg pour obtenir l automate avec jumpNode suivant fga fw La partie int ressante de l algorithme est appliqu e lorsqu il s agit de calculer le jumpNode associ l tat eg aucune ar te tiquet e par w ne part de cet tat il faut donc utiliser le premier cha nage pour remonter l tat p re de ez c est l tat e1 Il suffit alors d utiliser le deuxi me chainage pour r cup rer le jumpNode e3 associ e et l associer aussi l tat e2 5 7 Comparaison des diff rentes approches Dans ce chapitre nous avons pr sent un nouvel algorithme permettant de construire des automates de filtrages d terministes Il faut avouer que le domaine n est pas r ellement nou veau et pourtant l algorithme pr sent ne ressemble aucun autre La premi re originalit est qu il permet d obtenir des automates d terministes alors que les travaux ont plus souvent port sur l tude des automates non d terministes Aucune des deux approches n est meilleure que 5 7 Comparaison des diff rentes approches 79 l autre tout d pend de l utilisation qu on veut faire de l automate Dans le cadre d un prou veur de th or mes ou d un syst me de r gles qui volue dynamiquement au cours du temps il est souvent pr f rable d avoir un algorithme
27. ga gw w d o L fga fgw fw Le calcul d une cl ture est un peu ennuyeux mais la grande utilit de l ensemble ainsi produit justifie pleinement notre int r t Albert Graf montre en effet que pour tout ensemble fini de termes L C Ty l automate d terministe associ L est bien canonique il reconna t le langage L A cet endroit le lecteur doit s assurer qu il per oit bien les liens existant entre la cl ture d un ensemble de termes et l automate canonique capable de reconna tre toute instance de cet ensemble Ces deux objets doivent tre vus comme deux repr sentations diff rentes de la m me id e modifier l ensemble de termes c est modifier l automate associ mais effectuer des changements sur l automate c est aussi changer l ensemble de termes reconnu Dans la pratique il est souvent plus facile de manipuler directement un automate dont la structure se pr te mieux au traitement informatique que des ensembles de suffixes Il existe cependant une alternative consistant a repr senter des ensembles de suffixes par des arbres On parle alors d arbre de filtrage Un arbre de filtrage est d fini moins formellement qu un automate mais lui ressemble beaucoup les tats de l automate ne sont plus nomm s et deviennent des n uds les r gles de transition d tats deviennent des ar tes reliant deux n uds voir figure 5 4 Afin de mettre en vidence les liens existant entre ces trois notions nous al
28. gt repeat dk queensrule dc final end end La r gle queensrule s applique r cursivement en cherchant chaque tape une position 12 1 Estimation du degr de compilation 169 satisfaisant le pr dicat ok La r gle final permet d arr ter la r cursion une fois que l ensemble des positions tudier est vide Cet exemple illustre une fois encore la pr sence d un double non d terminisme lorsque des symboles AC sont utilis s dans une r gle conditionnelle appliqu e avec une strat gie d exploration de type dk 100 7 40 10 0 1 Compilateur Compilateur 0 01 sermurod ua oqimos In991doqui moyenduos uornururp menr 6 0 4 5 6 ri 8 probl me des n reines Fo DL 1 4 5 6 7 8 probl me des n reines allocation m moire totale en Mo nombre total de symboles cr s saruiod ua oqimos In991doqui moyenduos uornururp Fic 12 2 Degr de compilation de NqueensAC Les r sultats exp rimentaux pr sent s sur la figure 12 2 sont int ressants parce qu ils montrent dans un cas relativement complexe une tr s nette diminution du nombre total d octets et de symboles allou s lorsque le compilateur est utilis Le graphique de gauche comptabilise en fonc tion de la taille du probl me r soudre le nombre total d octets allou s dynamiquement par une fonction de type malloc Il est important de s assurer ici que ce nombre n est pas la quantit
29. mult8 x rule x Nat mult8 4 x 2 3 4 mult8 x rule x Nat mult8 5 x 0 4 4 mult8 x rule x Nat mult8 6 x 8 4 4 mult8 x rule x Nat mult8 7 x 6 5 4 mult8 x rule x Nat mult8 8 x 4 6 4 mult8 x rule x Nat mult8 9 x 2 7 4 mult8 x rule x Nat mult9 0 x O 0 4 multa x rule x Nat mult9 1 x 9 0 4 multa x rule x Nat mult9 2 x 8 1 4 multa x rule x Nat mult9 3 x 7 2 4 multa x rule x Nat mult9 4 x 6 3 4 multa x rule x Nat mult9 5 x 5 4 4 multa x rule x Nat mult9 6 x 4 5 4 multa x rule x Nat mult9 7 x 3 6 d mult9 x rule x Nat mult9 8 x 2 7 d mult9 x rule x Nat mult9 9 x 1 8 d mult x rule x Nat x x d d rule x Nat y Nat 0 x y O x rule x Nat y Nat 1 x y O x rule x Nat y Nat 2 x y 0 x rule x Nat y Nat 3 x y 0 x rule x Nat y Nat 4 x y 0 x rule x Nat y Nat 5 x y 0 x rule x Nat y Nat x 6 x y O x rule x Nat y Nat 7 x y O x rule x Nat y Nat 8 x y 0 x rule x Nat y Nat 9 x y O x y multo y y multi y y mult2 y y mu
30. non vrai gt faux end non faux gt vrai end end Un tel ensemble de r gles est appel syst me de r criture et sert simplifier des termes clos construits sur la signature de ce syst me Les r gles elles ne sont pas forc ment compos es de termes clos Dans l exemple pr c dent certains membres gauches de r gles contiennent une 14 Chapitre 1 Langage de sp cification ELAN variable P Pour pouvoir appliquer une r gle sur un terme clos appel sujet il faut que l on puisse remplacer les variables de son membre gauche par des termes clos de telle sorte que ce nouveau membre gauche soit gal au sujet On dit alors que le membre gauche de la r gle filtre vers le sujet qui devient un radical L assignement qui remplace chaque variable par un terme clos est appel substitution ou filtre Plus formellement une substitution o sur T F 4 est un endomorphisme de T F 4 qui s crit o 41 tyo 0 Xp gt tn lorsque les images de x pour i 1 n sont dest qi Une des propri t s fondamentales des substitutions est que pour tous termes t1 sta T F X et pour tout symbole f F ti stn o f tio no Cest la propri t d endomorphisme Une substitution o appliqu e au terme t est not e to ou a t Lorsqu il existe une r gle dont le membre gauche filtre vers le sujet celle ci peut s appliquer et r duire le sujet Le m canisme d application d une r gle consiste sim
31. priorit d un op rateur 12 probleme de filtrage AC 83 de reshuffling 145 des n reines 119 li a la compilation modulaire 143 li la r cursivit 136 proc dure de d cision 63 de filtrage AC many to one 84 de filtrage AC one to one 83 profil d une fonction 13 programmation imp rative 109 programme ANS Compl tion 170 bool3 170 colette 175 fib 139 fib_builtin 166 mi nela 139 174 nat10 173 nqueensAC 167 p5 138 queens 139 set 173 somme 176 Prolog cut 116 portabilit 109 prototype de compilateur 57 qualit des sp cifications 23 24 query2ref 44 racine d un terme 16 raffinement glouton 93 ramasse miettes 159 g n ration 162 avec compteur de r f rences 159 avec copie 160 avec marquage 160 recherche strat gie de 73 recouvrement de pr fixes 70 r cursivit dans l analyse du d terminisme 136 ReDuX 1 r criture compilation de la 58 conditionnelle 15 syst me de 13 r f rence compteur de 159 r flexivit de Maude 34 r gle compilation des 113 conditionnelle 15 de transition d tats 63 d mode d une 135 249 et strat gie 16 gloutonne 93 impact sur la s lection d une 136 nomm e 16 Rewri teRule 148 s lection d une 116 reine impact de l analyse du d terminisme 139 probl mes des 119 programme nqueensAC 167 remplacement d un sous terme 13 renormal
32. un algorithme incr mental pour construire directement un arbre de filtrage puis modifi l g rement l algorithme pour construire une cl ture r duite mais en perdant l aspect canonique de l automate Il est naturel de se demander si l automate ne deviendrait pas canonique si au moment de lire le b de f gb on pouvait remettre en cause le dernier choix effectu et sauter vers la branche tiquet e par w 5 5 Automate de filtrage m moire Dans cette partie nous consid rons des automates de filtrage m moire ressemblant beaucoup ceux d finis au paragraphe 5 2 Une des diff rences r side dans le mode de d placement de la t te de lecture Celle ci peut maintenant se d placer de trois mani res diff rentes elle peut lire un symbole et se d placer d un cran vers la droite elle peut lire un terme complet et se d placer vers la droite d autant de symboles que n cessaire elle peut aussi tant donn un pr fixe a d j lu lire le suffixe 3 correspondant tel que le terme af soit bien form et se d placer vers la droite d autant de symboles que n cessaire Un automate de filtrage m moire A est d fini par un tuple A 5 E e F A M D est un alphabet E est un ensemble fini d tats eg E est l tat initial F C E est l ensemble des tats finaux A 61 dn est l ensemble des r gles de transition d tats de A o les 0 E x EU Ts E sont
33. Dans le cadre de la r criture cette s lection est faite apr s chaque tape de r duction et c est pourquoi elle doit tre particuli rement tudi e pour ne pas p naliser l ensemble du processus tant donn un terme clos appel sujet le probl me consiste s lectionner une r gle qui permet de le r duire On distingue alors deux cat gories de probl mes de filtrage diff rents suivant que les r ductions se font seulement la racine du sujet ou des positions correspondant des sous termes du sujet Ces derniers probl mes dits complets sont li s l tude de strat gies parall les de r duction et sont rapprocher des probl mes de filtrages sur les mots Aho et Corasick 1975 Hoffmann et O Donnell 1982a Dans le cadre de la r criture s quentielle les probl mes de filtrage pattern matching font partie de la premi re cat gorie et on s int resse alors aux algorithmes qui permettent de s lectionner efficacement une r gle parmi un ensemble L approche consistant s lectionner une r gle avant de savoir si elle peut s appliquer est dite one to one parce que les probl mes de filtrage ne font intervenir qu une seule r gle de r criture et un seul sujet chaque fois On imagine facilement que ce type d approche est peu efficace parce que sa complexit est proportionnelle au nombre de r gles composant le syst me C est pourquoi des m thodes dites many to one ont t d velopp es G
34. Des techniques de backtracking intelligent ou de ba ckjumping permettraient de se d placer plus rapidement dans un arbre de recherche et c est ce que nous envisageons d tudier dans le cadre d ELAN Probl mes d implantation gestion m moire efficacit et expressivit du filtrage Filtrage Concernant l tude des techniques d implantation des langages base de r gles et de strat gies il serait bon de continuer les travaux commenc s dans cette th se et d tendre les algorithmes de compilation propos s pour les th ories associatives commutatives AC des m langes de AC avec d autres axiomes comme l idempotence f x x x et l l ment neutre 191 f x e x Les techniques pr sent es dans le chapitre 6 peuvent alors tre adapt es pour offrir nouveau des algorithmes de filtrage et de normalisation efficaces Gestion m moire Une des caract ristiques des langages de programmation modernes est de simplifier les probl mes de gestion m moire et d offrir des solutions efficaces en proposant luti lisation d un ramasse miettes par exemple Nous pensons qu il faut continuer travailler sur les probl mes li s la repr sentation des termes au cours d un calcul de normalisation faut il repr senter les termes par des listes ou des arbres faut il liminer tout partage autoriser un partage partiel ou encore partager les termes au maximum en utilisant des techniques de hash consing
35. L id e consiste utiliser un automate de filtrage syntaxique et compiler le filtrage associatif par un ensemble de boucles qui num rent de mani re exhaustive les instances possibles des variables apparaissant dans les membres gauches des r gles consid r es Apr s chaque it ration les conditions sont v rifi es En cas d insatisfaisabilit num ration continue jusqu trouver une solution satisfaisante puis le terme r duit est construit oubliant ainsi l tat courant du probl me de filtrage consid r Cette approche est extr me dans la mesure o aucune struc ture de donn e n est n cessaire au filtrage elle est aussi int ressante parce qu elle ne n cessite aucun m canisme de gestion du non d terminisme Dans le formalisme ASF il n existe aucune construction permettant de remettre en cause l application d une r gle de r criture Cela signifie que pour une r gle et un probl me de filtrage donn s il suffit de trouver une solution satisfaisant les conditions pour pouvoir appliquer la r gle mais une fois la r gle appliqu e il n est plus n cessaire de se souvenir quelle tait la solution La situation d ELAN est d une mani re g n rale diff rente car certaines r gles peuvent tre nomm es et dans ce cas leur application est contr l e par des strat gies ventuellement non d terministes C est pourquoi dans le cadre d ELAN nous ne pouvons pas suivre une approche
36. Sn StrategyDkStrat correspond au dk S 5 StrategyCons correspond la concat nation StrategyRepeat correspond au constructeur repeat StrategyIterate correspond au constructeur iterate StrategyFail correspond la strat gie fail Strategyld correspond la strat gie id StrategyEval correspond un m ta interpr teur de strat gies d crit dans la th se de Peter Borovansky 1998 10 2 Organisation du compilateur 149 StrategyMeta correspond une version restreinte de la strat gie meta apply pr sent e dans le chapitre 1 et d crite dans Borovansky 1998 e Flatterm DDNode DDTree et ACDDTree sont quatre classes qui permettent de repr senter les arbres de filtrage syntaxique et les structures de filtrage AC Flatterm permet de repr senter un terme vu comme une suite de symboles voir paragraphe 5 1 Son implantation se compose d un symbole de la classe Symbol et de liens de la classe Flatterm vers le symbole pr c dent suivant et la fin de port e du symbole courant Cette structure de termes est pr sent e en d tail dans Christian 1993 DDNode repr sente un n ud d un arbre de filtrage ou un tat d un automate de filtrage Il se compose d un tableau de n uds de la classe DDNode pour repr senter les diff rentes r gles de transition d tats DDTree correspond un arbre de filtrage ACDDTree correspond un
37. These de Doctorat d Universit Universit Henri Poincar Nancy 1 France Borovansky P et Castro C 1998 Cooperation of Constraint Solvers Using the New Process Control Facilities of ELAN in C Kirchner et H Kirchner eds Proceedings of the 2nd Inter national Workshop on Rewriting Logic and its Applications RWLW 98 Pont Mousson France Vol 15 Electronic Notes in Theoretical Computer Science pp 379 398 Borovansky P Jamoussi S Moreau P E et Ringeissen C 1998 Handling ELAN rewrite programs via an exchange format in C Kirchner et H Kirchner eds Proceedings of the 2nd International Workshop on Rewriting Logic and its Applications WRLA 98 Vol 15 Electronic Notes in Theoretical Computer Science Pont Mousson France Borovansky P Kirchner C Kirchner H Moreau P E et Vittek M 1996 ELAN A logical framework based on computational systems in J Meseguer ed Proceedings of the 1st International Workshop on Rewriting Logic and its Applications RWLW 96 Asilomar 235 236 Bibliographie Pacific Grove CA USA Vol 4 Electronic Notes in Theoretical Computer Science URL http www loria fr borovan bkkmv WRLG96 ps Borovansky P Kirchner C Kirchner H Moreau P E et Vittek M 1997 ELAN V 2 0 User Manual first edn Inria Lorraine amp Crin Nancy France Boudet A Contejean E et Devie H 1990 A new AC unification algorithm with a new algor
38. X global augment emptyset T gt emptyset end augment mkSet S T gt mkSet S U T end augment mkSet S L T gt mkSet S U T U augment mkSet L T end P emptyset gt mkSet emptyset end P mkSet E gt mkSet emptyset mkSet E end P mkSet E EL gt P mkSet EL U augment P mkSet EL mkSet E end end end A 4 7 Somme module somme import global builtinInt bool eq term end sort state set end operators global go state init builtinInt state error state state set set builtinInt state U 0 0 set set set AC empty set buildSet 0 builtinInt set set builtinInt set in builtinInt set bool end rules for bool I J builtinint S set global in I empty gt false end in I U set J S gt true if I J end in 1 S gt false end end 220 Annexe A Programmes utilis s pour effectuer les exp rimentations rules for set I J builtinInt S set global buildSet 0 gt empty end buildSet I gt U set I buildSet I 1 end end rules for state EJ builtinInt S1 S2 set global go gt state buildSet 100 empty 0 end init I gt state buildSet I empty 0 end state U set I S1 S2 J gt error if in I S2 end state U set I S1 S2 J gt state S1 U S2 set I J I if not in I S2 end end end A 5 Maud
39. algorithme de filtrage n est pas compl tement int gr l interpr teur ELAN Apr s son doctorat Steven Eker a d velopp et implant un algorithme de filtrage AC 1995 suffisamment efficace et stable pour tre r utilis par d autres logiciels L id e de confier tous les probl mes de filtrage AC cet outil a donc t retenue lors de la r alisation de l interpr teur ELAN C est videmment un bon choix en termes de simplicit de vitesse de d veloppement et de s ret du logiciel mais plus contestable en ce qui concerne l efficacit du produit obtenu Sans entrer dans les d tails simplement parce que le reste de ce document devrait donner quelques pistes permettant d am liorer l efficacit du filtrage AC en g n ral on peut souligner les deux points qui paraissent tre responsables de l inefficacit de l interpr teur lorsque des symboles AC sont utilis s L algorithme de filtrage AC d velopp par Steven Eker 1995 est un outil ind pendant Cela signifie qu il travaille sur ses propres structures de donn es Lors de chaque tentative d application d une r gle il faut donc convertir le membre gauche de la r gle et le terme clos qui sont cod s avec les structures de donn es d ELAN vers la structure de donn es de Voutil de filtrage Il faut ensuite effectuer la conversion inverse pour pouvoir r cup rer les solutions du probl me de filtrage et les utiliser pour appliquer la r gle Dans
40. choue pas et si plus tard un chec se produit un m canisme de retour arri re appel aussi gestion du non d terminisme ou backtracking se met en place et provoque l extraction des solutions qui n ont pas encore t retourn es On peut ainsi consid rer que la notion d ensemble est une structure interne au syst me Voyons comment traiter notre exemple en ELAN commen ons par d finir deux r gles nom m es qui retournent respectivement l l ment en t te de liste et la liste qu il reste inspecter On pourrait d finir les deux r gles suivantes extractrulei extract element liste gt element end extractrule2 extract element liste gt liste end mais dans ce cas les sortes des membres droits ne seraient pas identiques Afin de rendre homo g ne les sortes impliqu es dans ces deux r gles la signature de notre syst me doit tre tendue par l ajout de l op rateur extract Liste Element Ce constructeur permet de consid rer l objet extract a b nil comme tant un terme de sorte Element Les deux r gles nomm es se d finissent alors de la mani re suivante extractrulei extract element liste gt element end extractrule2 extract element liste gt extract liste end Etant donn e une liste de sorte Element l application de la r gle extractrule2 retourne la m me liste priv e de l l ment de t te Les applications successives de la deuxi me r gle retournent ainsi autan
41. contourner le probl me en r pondant je veux bien te r pondre mais il faut que tu me donnes au moins cinq minutes coutons maintenant quoi ressemblait la conversation avec les plus courageux Le courageux J ai cru comprendre que tu faisais de l informatique Avec Internet Moi Heu oui disons que de tr s tr s loin je travaille dans une branche li e l Intelligence Artificielle et plus pr cis ment dans un secteur reli aux preuves math matiques Le litt raire C est donc de l informatique mais aussi des math matiques que tu fais Ca ce n est pas pour moi Moi En fait je travaille sur les preuves de propri t s de programmes mais pour te donner un id e plus pr cise tu peux penser aux satellites qu on envoie dans l espace Le bricoleur Oui j imagine qu il y a un tas d lectronique l dedans Moi En effet Il y a aussi beaucoup de programmes et lorsqu on pose une question au satellite on a envie qu il nous r ponde assez rapidement L int ress 77 Moi Imagine par exemple qu on veuille modifier la trajectoire d un satellite Dans ce cas on lui demande o il se trouve ou des informations sur sa vitesse par exemple Mais s il nous r pond le lendemain ou si le programme part dans une boucle infinie et qu il ne nous r pond jamais on est emb t Le secouriste D autant plus qu on ne peut pas le ramener facilement sur Terre pour le r parer m xiii xiv Avant pro
42. d apr s Hodges 1988 Hofstadter 1985 que certaines des id es de G del et Turing aient t anticip es d s le d but des ann es 1920 par le logicien polono am ricain Emil Post qui enseignait au City College de New York Descendant des syst mes de production de Post la notion de programmation fonctionnelle s est largement d velopp e dans les ann es 1960 suite aux travaux de John McCarthy sur le langage Lisp C est aux alentours de l ann e 1975 que la notion de programmation par quations ou par r gles de r criture est effectivement apparue suite aux travaux de Joseph A Goguen et de Michael J O Donnell menant aux d veloppements des premiers interpr teurs de sp cifications exprim es avec des r gles de r critures Bien que relativement proches au d part les deux projets ont suivi des voies radicalement diff rentes Il existe videmment de nombreux autres travaux reli s aux notions de r gles de r criture et de programmation par quations parmi lesquelles on peut citer les d monstrateurs automatiques que sont CiME March 1996 dalac Vigneron 1998 Larch Prover Guttag Horning Garland Jones Modet et Wing 1993 Otter McCune 1994 ReDuX B ndgen 1993 Reve Lescanne 1983 Forgaard et Guttag 1984 RRL Kapur et Zhang 1988 et Spike Bouhoula Kounalis et Rusinowitch 1992 les langages fonctionnels de la famille ML Cousineau Paulson Huet Milner Gordon et Wadsworth 1985 et Caml Weis et
43. de m moire consomm e un moment donn mais bien la somme cumul e des tailles des zones m moires demand es pour r soudre le probl me De m me le graphique de droite n illustre pas le nombre de symboles vivants un moment donn mais bien le nombre de symboles cr s au cours de l ex cution Notons que le compilateur permet de diviser par 7 environ le nombre de symboles cr s courbe en pointill s cela vient en partie du fait que la construction des symboles d finis est traduite par des appels de fonctions dans le code g n r alors que l interpr teur est oblig de construire effectivement ces symboles Si l on compare cette diminution par 7 du nombre de symboles cr s avec la taille totale de m moire allou e qui est environ 25 fois plus petit lorsque le compilateur est utilis on est en droit de se demander pourquoi un tel cart On pourrait dans un premier temps penser que la taille d un symbole de l interpr teur est 4 fois sup rieure celle d un symbole du compilateur mais ce n est pas le cas il y a certes une diff rence li e la repr sentation des termes et aux techniques de ramasse miettes utilis es mais la diff rence de taille entre les deux types de repr sentation est inf rieure 2 Le facteur 2 restant vient donc du fait que bon nombre de constructions du langage source ELAN telles que les conditions ou les strat gies taient repr sent es par des structures de donn es de
44. elle est elle aussi en forme normale Partant de ces deux id es de base nous avons tendu la m thode de construction des termes en coloriant certains termes On distingue alors deux cas l ex cution lorsqu une forme normale f4c s s est atteinte tous les sous termes si 8 sont colori s par une m me couleur pour construire le terme fac s1 sm le symbole fac est construit puis la fonction mcf est utilis e pour ajouter successivement les sous termes 5 avant chaque insertion le sous terme s qui est irr ductible est colori par une couleur diff rente de celles associ es aux s1 Si 1 si l utilisation de mcf entra ne une tape d aplatissement et lorsque a sous termes t identiques apparaissent ils sont remplac s par une instance unique t mais cette fois t se voit d cor d une couleur particuli re bicolore Pour savoir si un terme zo fac s1 Sk est irr ductible il suffit alors de v rifier que les couleurs des s1 5 sont bien identiques et qu aucune d elles n est bicolore Ce crit re tr s simple mettre en uvre permet de r duire consid rablement le nombre de renormalisations inutiles Les r sultats obtenus dans la pratique montrent que ce crit re permet de r duire le nombre de renormalisations dans une proportion variant entre 50 et 80 8 6 Compilation des strat gies Dans ce paragraphe nous nous int ressons la compi
45. eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq endo red red red red red red red mult9 O x mult9 1 x mult9 2 x mult9 3 x mult9 4 x mult9 5 x mult9 6 x mult9 7 x mult9 8 x mult9 9 x x d 0 x y 1 x y 2 x y 3 x y 4 x y 5 x y 6 x y 7 x y 8 x y 9 x y prec 0 x prec 1 x prec 2 x prec 3 x prec 4 x prec 5 x prec 6 x prec 7 x prec 8 x prec 9 x fact x if O O d mult9 x 9 0 4 mult9 x 8 1 d mult9 x 7 2 d mult9 x 6 3 d mult9 x 5 4 d mult9 x 4 5 d mult9 x 3 6 d mult9 x 2 7 d mult9 x 1 8 4 mult9 x 0 x y 0 x y 0 x y 0 x y 0 x y 0 x y 0 x y 0 x y 0 x y 0 x y 9 prec x O x 1 x Q x 3 x A x 5 x 6 x 7 x 8 x multO y mult1 y mult2 y mult3 y mult4 y mult5 y mult6 y mult7 y mult8 y mult9 y x d then 1 d else x fact prec x fi fib x if x d then 1 d else fib 6 1 d fib 7 1 d fib 8 1 d fib 9 1 d fib 0 2 4 fib 1 2 d fib 2 2 d NA N NY NY ww we WY if x 1 d then 1 d else fib prec x fib prec prec x fi fi 228 Annexe A Programmes utilis s pour effectuer
46. in practice the library can be easily implemented on a new architecture In fact only three specific access functions are required fp sp and ra which return respectively the current frame pointer the current stack pointer and the return address The nondeterministic library has been implemented on three different architectures Sparc Intel and DEC Alpha It has not been ported yet to HP PA or MIPS processors but it should not be a problem even if the stack grows from low to high addresses It is well known that efficient implementations of nondeterministic library usually take ben efit of gcc extensions and use inline statements to add assembly labels in the generated code Therefore our approach is not less portable than classical implementations of choice point man agements 7 5 Imperative programming with backtracking Several languages such as 2LP McAloon et Tretkoff 1995 and Alma 0 Partington 1997 Apt et Schaerf 1997 have been developed to combine advantages of logic and imperative programming in order to deal in a natural way with algorithmic problems that involve search Alma 0 extends imperative programming with some features inspired by the logic programming paradigm For instance e use of boolean expressions as statements and vice versa e the ORELSE statement starts by proceeding through the first branch If the computation eventually fails backtracking takes place and the computation resumes with the next branch
47. mult3 3 x mult3 4 x mult3 5 x mult3 6 x mult3 7 x mult3 8 x mult3 9 x mult4 d d mult4 O x mult4 1 x mult4 2 x mult4 3 x mult4 4 x mult4 5 x mult4 6 x mult4 7 x mult4 8 x mult4 9 x mult5 d d O O d mult2 x 2 0 d mult2 x 4 0 d mult2 x 6 0 d mult2 x 8 0 d mult2 x 0 1 d mult2 x 2 1 d mult2 x 4 1 d mult2 x 6 1 d mult2 x 8 1 d mult2 x O O d mult3 x 3 0 d mult3 x 6 0 d mult3 x 9 0 d mult3 x 2 1 d mult3 x 5 1 d mult3 x 8 1 d mult3 x 1 2 d mult3 x 4 2 d mult3 x 7 2 d mult3 x O O d mult4 x 4 0 d mult4 x 8 0 d mult4 x 2 1 d mult4 x 6 1 d mult4 x 0 2 d mult4 x 4 2 d mult4 x 8 2 d mult4 x 2 3 d mult4 x 6 3 d mult4 x 6 x y 1 d 6 x y 1 d 7 x y 1 d 8 Cx y 1 4 226 Annexe Programmes utilis s pour effectuer les exp rimentations eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq mult5 O x mult5 1 x mult5 2 x mult5 3 x mult5 4 x mult5 5 x mult5 6 x mult5 7 x mult5 8 x mult5 9 x
48. n rale des programmes g n r s Mais l analyse du d terminisme permet aussi de r duire consid rablement la m moire n cessaire pour m moriser les environnements C est d autant plus important qu en pratique cette m moire a une taille fixe 1000 Kb par exemple et qu un manque de m moire provoque l arr t imm diat du programme la pile utilis e pour sauver les environnements ne peut pas tre agrandie pendant l ex cution Lorsqu on active l analyse du d terminisme la taille m moire n cessaire est souvent ramen e une constante ind pendante du terme r duire Ce qui permet g n ralement d ex cuter les programmes qui provoquaient un d passement de m moire lorsque l optimisation n tait pas activ e Troisi me partie Implantation d un compilateur 141 Chapitre 10 Architecture logicielle 10 1 Compilation modulaire et compilation s par e 143 10 2 Organisation du compilateur 147 10 3 Fonctionnement du compilateur 150 Une des particularit s de la compilation est d amener les informaticiens travailler en per manence en pr sence de plusieurs paradigmes de programmation Il faut d une part tudier les sch mas de traduction qui vont permettre de transformer les constructions du langage source en des constructions du langage cible mais il faut aussi s int resser la fa on d exprimer ces sch mas de traduction
49. processeur A cela s ajoute un module de transformation de programmes qui est n cessaire pour rendre ex cutable le m ta langage de strat gie d fini dans Borovansky 1998 Autant dire que le probl me est complexe et que le parseur actuel s apparente de plus en plus un outil monolithique tant redout par les informaticiens Pour r pondre ces craintes et conserver toute la puissance du pr processeur actuel diff rents scenarii ont t envisag s Le chapitre 3 de ce document traite de l organisation interne d un environnement de sp cification et propose diff rentes solutions pour modulariser l architecture de l environnement ELAN en particulier le fonctionnement du parseur et du pr processeur 2 3 Interpr teur l image d un dialecte humain qui ne peut survivre que s il est parl un langage de sp ci fication ne sera utilis que s il s appuie sur des outils sp cifiques L interpr teur fait partie des outils qui donnent un sens aux sp cifications crites il permet d valuer les expressions bien for m es reconnues par le parseur en interpr tant les constructions l mentaires Dans le cadre d ELAN l valuation d une sp cification se fait en fonction d un terme d entr e appel requ te ou query tant donn un terme clos le calcul d une de ses formes normales consiste appliquer successivement les r gles et les strat gies d finies dans la sp cification Une des caract
50. r alisation d une implantation efficace est une t che difficile et extr mement technique Lors qu on programme en C par exemple il est g n ralement difficile voire impossible de d terminer l ensemble des objets vivants un instant donn En effet il faut pour cela parcourir l ensemble des variables utilis es par le programme celles ci tant m moris es dans la pile syst me dont la structure d pend du processeur et du compilateur utilis De plus les valeurs se trouvant dans la pile syst me ne sont pas types et peuvent aussi bien correspondre des pointeurs qu des entiers Il existe des heuristiques permettant de diff rencier les pointeurs des entiers mais lorsque la pile contient un entier ayant la m me valeur qu un pointeur il devient impossible de savoir s il s agit d un pointeur ou d un entier Dans le cadre d un mark and sweep ce n est pas trop grave puisqu il peut supposer que c est un pointeur et dans le pire des cas ne pas rendre au syst me une zone qui aurait pu l tre Mais dans le cadre d un copy collector les objets doivent tre d plac s ce qui entra ne une modification des valeurs se trouvant dans la pile Cela peut devenir g nant lorsque la valeur d un entier est modifi e Il existe une solution permettant de traiter le cas o un entier a la m me valeur qu un pointeur Bartlett 1988 mais je vous laisse imaginer la complexit de sa r alisation Il faut aussi savoir que
51. rence des solutions trouv es R soudre un graphe biparti BG Vi U V2 E consiste trouver un couplage S tel que SCE card s pil S k 1 lt i lt n ai card s pil S 1 lt j lt m lt pj Les m thodes les plus connues parce que simples et efficaces pour r soudre ce type de probl me sont d crites dans Hopcroft et Karp 1973 Fukuda et Matsui 1989 par exemple Une fois la hi rarchie de graphes bipartis r solue il reste calculer les instances des va riables p1 pr ce qui revient r soudre un probl me de la forme Bi j fac pi tee Pr aa fac sz tee sm o B 0 sont de nouvelles multiplicit s d pendant des solutions du graphe biparti pr c dent Ce type de probl me bien connu consiste trouver des solutions enti res non n gatives du syst me d quations diophantiennes Aa e akXki Bu 1m Otis EE C km Bin et comme chaque variable p1 p se voit assigner un ou plusieurs sous termes il faut aussi que pour tout 1 k XX gt 1 Les principales m thodes de r solution de syst mes d quations diophantiennes sont d crites dans Pottier 1990 Boudet Contejean et Devie 1990 Domenjoud 1991 MacMahon 1916 Reste alors s assurer que les solutions trouv es aux diff rents sous probl mes fac pf pe lt ia fac s oo 58 sont bien coh rentes entre elles en effet une variable ne peut se voir assigner deux valeurs diff rentes Afin
52. sentation abstraite Programme Compilateur cible Fic 4 3 Dans le cadre d un compilateur le programme source est lu par le parseur la diff rence d un interpr teur la repr sentation abstraite n est pas ex cut e mais traduite dans un nouveau langage appel cible Ce langage cible peut nouveau tre compil ou interpr t Pourquoi dire qu il existe deux fa ons d implanter un langage sur un calculateur r aliser un interpr teur ou un compilateur si seuls les interpr teurs permettent d ex cuter les pro grammes Pour sortir de ce paradoxe le calculateur doit avoir une certaine propri t il doit tre capable d ex cuter un langage donn appel langage machine Cette propri t est tel lement sous entendue qu on peut consid rer comme axiome de base le fait qu un ordinateur poss de une unit centrale appel e processeur capable de comprendre au moins un langage le langage machine On comprend mieux maintenant comment un compilateur permet de rendre ex cutable un programme crit dans le langage L il suffit de le traduire en un programme crit en langage machine Celui ci peut alors tre directement ex cut par le processeur Pour le non sp cialiste en lectronique un processeur est un ensemble de composants lectroniques qui permettent d effectuer des op rations l mentaires telles qu une addition ou la mise en m moire d une information par exemple Il est donc assez r a
53. tre appliqu e seulement lorsqu aucune autre alternative n est possible Cette strat gie d application s exprime habituellement par une expression r guli re de la forme Collapse Compose Simplify Delete Orient Deduce Dans le syst me ELAN le codage des six r gles pr c dentes se fait assez naturellement Delete EU s s R gt E R end Compose E RU s gt t gt E R U s gt u if reduce t gt u end Simplify EU s t R gt E U s u R if reduce t gt u end Orient EU s t R gt E RU s gt t if s gt t end Collapse E RU s gt t gt E U u t R if reduce s gt u end Deduce E R gt E U s t R if s t in CP R end Une des originalit s du langage ELAN est d offrir la possibilit de sp cifier en tant que telle la strat gie d application des r gles d finies ce qui permet de s parer clairement les r gles de transformation et leur contr le Lorsqu on ne dispose pas d un tel langage de strat gie l ordre d application des r gles est souvent cod dans les r gles de r criture elles m mes ce qui rend plus complexe et moins lisible le programme crire les op rations de contr le et de traitement 1 Ce qui permet de raisonner et de cr er des outils de preuve automatique par exemple sont m lang es En ELAN on peut d finir la strat gie donn e pr c demment par la strat gie de r criture suivante comp
54. utilisation d un format interm diaire Pr sentation Premi re partie Environnement de sp cification Chapitre 1 Langage de sp cification ELAN Cette th se commence par une pr sentation intuitive du langage de sp cification ELAN Des exemples de programmes ELAN sont comment s pour inviter le lecteur se familiariser avec les notions de grammaires signatures termes r gles et strat gies En fin de chapitre la notion de r criture modulo les th ories associatives et commutatives est introduite C est un des points qui sera particuli rement tudi dans la suite du document Chapitre 2 Outils pour sp cifier et programmer Un langage de sp cification ne devient un lan gage de programmation que si des outils informatiques existent pour le rendre ex cutable sur une machine concr te L environnement de sp cification ELAN est pr sent et les notions de biblio th que parseur interpr teur et compilateur sont introduites Ce qui nous am ne naturellement comparer ELAN aux autres environnements de sp cification li s la r criture Chapitre 3 Plateforme de prototypage L environnement ELAN est un produit qui permet de mettre en pratique des id es ou des r sultats issus de la recherche Sa conception et son organisa tion doivent donc faciliter la mise en place rapide de nouvelles exp riences Une architecture de l environnement reposant sur l existence d un format interm diaire d change est ainsi
55. 000 lignes de code environ 10 3 Fonctionnement du compilateur La compilation d un programme REF se d compose en trois grandes phases la lecture et la repr sentation interne d un programme REF l application de pr traitements sur cette repr sen tation abstraite du programme et la compilation des r gles et des strat gies Lecture et repr sentation interne d un programme REF Cette premi re tape est essentiellement r alis e par le parseur implant par la classe REF Parser Elle consiste principalement lire un programme REF et construire une collection d objets qui repr sentent les constructions reconnues Consid rons par exemple le morceau de texte suivant RULE extractrulei Element liste FSYM FSYM VAR 0 Element VAR 1 Liste nil nil extract VAR 0 Element nil Cette expression REF a t pr sent e au paragraphe 3 1 page 42 et elle correspond au codage de la r gle de r criture nomm e extractrulei extract element liste gt element end Le parseur lit une suite de lex mes RULE extractrule1 FSYM VAR nil etc et reconna t qu il s agit de la d finition d une r gle de r criture nomm e compos e de deux termes le membre gauche et le membre droit et d une liste vide d valuations locales Les termes extract VAR 0 VAR 1 et VAR O qui correspondent un renom mage pr s aux termes extract element liste et el
56. 2 f y g b substitution indice subject gt subterm 0 indice break Programme 6 3 tant donn un num ro de motif id_pattern 0 1 ou 2 dans cet exemple et un terme clos subject cette fonction r cup re et m morise dans le tableau substitution les instances des variables qui apparaissent dans le motif cor respondant 6 8 Extension l ensemble des motifs Bien qu utile en pratique l approche pr sent e jusqu ici n a d int r t que pour une certaine classe de motifs d crite au paragraphe 6 4 Deux possibilit s doivent alors tre envisag es afin de pouvoir traiter les r gles dont le membre gauche n est pas dans C2 La premi re consiste tendre notre algorithme de filtrage pour le rapprocher de celui d crit au paragraphe 6 3 au risque de voir la complexit du processus de compilation s accro tre consid rablement tablir une coop ration entre des structures dynamiques complexes hi rarchies de graphes bipartis par exemple et des structures de contr le elles aussi complexes les hi rarchies d automates de filtrage par exemple n est pas forc ment ais Dans notre projet il est primordial que le code g n r par le compilateur soit correct et que le fonctionnement du compilateur soit lui m me relativement simple pour permettre son extension et un d veloppement en quipe L int gration d une proc dure complexe est certes int ressante mais pas forc ment un bon choix s
57. 57 m ta 58 point de 99 responsable d un bloquage 76 choose try pr sentation 20 cible langage 54 143 CiME 1 Claire 101 classe de motifs 88 h ritage des 147 classification du d terminisme 132 Clean 1 clos terme 13 cl ture calcul incr mental 69 d un ensemble 65 66 V 67 r duite 70 codomaine d une fonction 13 colette programme 175 communication avec le monde ext rieur 43 outil de 40 commutativit quation d 82 comparaison avec d autres implantations 178 d environnements 33 des approches 78 compilateur architecture du 143 avantage d un 32 d ELAN 32 d finition d un 53 fonc tionnement du 150 objectif d un 32 or 245 246 Index ganisation du 147 prototype de 57 taille du 150 compilation de la r criture 58 degr de 166 des conditions 123 des valuations locales 118 des fonctions d acces 94 des r gles et des strat gies 113 des strat gies 127 du domaine d une fonction 13 dont care choose d finition de 17 dont care one d finition de 17 dont know choose d finition de 17 chec fail 99 situation d 67 filtrage 116 du filtrage associatif commutatifigalit 4c 22 81 du filtrage syntaxique 61 du proces sus de normalisation 127 valuation des m thodes 165 modulaire 143 s par e 146 compl tion de Knuth Bendix 14 170 compteur de r f rences 159 co
58. 6 6 nous avons pr sent un algorithme glouton permettant d am liorer l efficacit du filtrage AC dans le cas de r gles non conditionnelles ou dont les conditions ne d pendent pas de variables apparaissant sous un symbole AC du membre gauche C est en appliquant l analyse du d terminisme que les r gles gloutonnes sont s lectionn es celles dont le d mode est det ou semi S lection et application d une r gle Au paragraphe 8 3 nous avons pr sent un sch ma g n ral de compilation des r gles o un point de choix tait plac avant chaque application d une r gle r Au paragraphe 8 4 nous avons pr sent un sch ma g n ral de compilation des valuations locales o un point de choix tait aussi plac avant chaque valuation d une condition de filtrage Et c est 9 4 Impact de l analyse du d terminisme 137 dans l tape 3 du sch ma de compilation des r gles voir page 118 qu un traitement particulier est effectu pour enlever ces points de choix en fonction de la strat gie d application de la r gle L analyse du d terminisme permet d agir trois niveaux lorsqu une r gle ne contient que des valuations locales d terministes det ou semi d termi nistes semi il n est plus n cessaire de placer un point de choix entre chaque valuation locale tout chec implique l impossibilit d appliquer la r gle consid r e lorsqu un ensemble de r gles r1 r ne contient
59. E 2 4 6 8 F og 2 4 6 8 ES Bool3 appliqu a Bool3 appliqu and a1 n et and a1 n et not or not a1 not an not or not a1 not an Fic 12 4 Degr de compilation de Bool3 La figure 12 4 montre une diminution tr s importante de la taille m moire et du nombre de symboles allou s Cette diminution est d autant plus int ressante qu elle s accroit en fonction de la complexit du probl me r soudre On peut aussi remarquer que les deux courbes en pointill s sont sensiblement les m mes la diminution de m moire est environ 8 fois plus importante que la diminution du nombre de symboles cr s Ce facteur comparer avec 4 pour le probl me des n reines et 10 dans le cas de la compl tion de Knuth Bendix semble montrer que le degr de compilation reste normal lorsque que des r gles avec symboles AC sont compil es On aurait pu craindre une nette diminution de ce degr de compilation dans la mesure o la nature des probl mes de filtrage AC fait que de nombreuses structures de donn es doivent tre 172 Chapitre 12 Exp riences pratiques cr es dynamiquement Ces r sultats sont s rement li s au fait que nous avons tent de r duire au minimum ces allocations dynamiques en compilant des automates de filtrages et des fonctions d acc s en imposant des restrictions sur la structure des termes et en utilisant des structures de donn es compactes Evidemment pour conser
60. Int 1 0 5 Int 0 104 Int 15 Int 25 O Int 100 O Int 0 200 Int 300 Int empty Set set Int Set 1 0 buildSet Int Set 1 0 U Set Set Set 1 2 0 assoc comm true Bool false Bool in Int Set Bool 1 2 0 in 202 Annexe Programmes utilis s pour effectuer les exp rimentations op state op state aux Set Set Int State 1 2 3 0 op error Set Set Int State 1 2 30 O State 0 op mut State State 1 0 op void Void op void State Void 1 0 rewrite rules rule X State void X void rule X Int X 0 X rule X Int Y Int X s Y s X Y rule O 5 s s s s s 0 rule 10 s s s s s 5 rule 15 s s s s s 10 rule 25 10 15 rule 100 25 25 25 25 rule 200 100 100 rule 300 200 100 rule buildSet 0 empty rule I Int buildSet s I U set s I buildSet I rule I Int in I empty false this rule can be omitted rule I Int S Set in I S true or false in aux I S rule I Int J Int S Set in aux I U set J S true I J rule rule rule rule rule compile TRS true or false tr
61. Leroy 1993 Cousineau et Mauny 1995 Leroy et Mauny 1993 Leroy 1995 et les langages de r criture de graphes tels que Clean Brus van Eskelen van Leer et Plasmeijer 1986 Dans le cadre de cette th se nous nous int ressons particuli rement aux outils qui utilisent des r gles de r criture et plus pr cis ment aux langages de programmation dont le paradigme de calcul principal est celui de la logique de r criture La plupart des outils cit s pr c demment utilisent la r criture comme technique interne de r solution mais afin de mieux situer nos travaux nous les comparons essentiellement avec ceux des projets ASF SDF CafeOBJ EQI Maude et OBJ simplement parce que ces syst mes sont exclusivement fond s sur la logique de r criture et parce qu ils sont les plus proches d ELAN La figure 1 retrace sommairement l volution des principaux langages de programmation fond s sur la logique de r criture Le projet Equational Logic Programming de Michael J O Donnell s est particuli rement int ress aux propri t s li es l valuation des syst mes quationnels le mod le choisi permet en particulier d exploiter la notion de strat gie paresseuse ce qui permet de retarder au maximum l valuation des arguments d une fonction au cours des tapes de d duction Ces travaux ont conduit Robert Strandh tudier comment implanter efficacement les langages base de r gles de r criture En 1986
62. M grelis A 1992 Programming with equa lities subsorts overloading and parameterization in OBJ Journal of Logic Programming 12 3 257 280 Jouannaud J P et Kirchner H 1986 Completion of a set of rules modulo a set of equations SIAM Journal of Computing 15 4 1155 1194 Preliminary version in Proceedings 11th ACM Symposium on Principles of Programming Languages Salt Lake City USA 1984 Kamperman J F T 1996 Compilation of Term Rewriting Systems PhD thesis UVA Am sterdam NL Kapur D et Zhang H 1988 RRL A rewrite rule laboratory Proceedings 9th International Conference on Automated Deduction Argonne I USA Vol 310 of Lecture Notes in Computer Science Springer Verlag pp 768 769 Kirchner H et Moreau P E 1995 Prototyping completion with constraints using computa tional systems in J Hsiang ed Proceedings 6th Conference on Rewriting Techniques and Applications Kaiserslautern Germany Vol 914 of Lecture Notes in Computer Science Springer Verlag pp 438 443 Kirchner H et Moreau P E 1996 A reflective extension of Elan n J Meseguer ed Proceedings of the first international workshop on rewriting logic Vol 4 Electronic Notes in Theoretical Computer Science Asilomar California Kirchner H et Moreau P E 1998 Non deterministic computations in ELAN in J Fiadeiro ed Recent Developements in Algebraic Specification Techniques Proc 13th WADT 98 241
63. Nedjah N Walter C D et Eldrige E 1997 Optimal left to right pattern matching auto mata in M Hanus J Heering et K Meinke eds Proceedings 6th International Conference on Algebraic and Logic Programming Southampton UK Vol 1298 of Lecture Notes in Computer Science Springer Verlag pp 273 286 Ogata K Ohara K et Futatsugi K 1997 TRAM An abstract machine for order sorted conditional term rewriting systems in H Comon ed Proceedings 8th Conference on Rewriting Techniques and Applications Sitges Spain Lecture Notes in Computer Science Springer Verlag Partington V 1997 Implementation of an Imperative Programming Language with Backtracking Technical Report P9714 University of Amsterdam Programming Re search Group Available by anonymous ftp from ftp wins uva nl file pub programming research reports 1997 P9712 ps Z Peterson G et Stickel M E 1981 Complete sets of reductions for some equational theories Journal of the ACM 28 233 264 Pettersson M 1995 Compiling Natural Semantics PhD thesis University of Link ping Sweden Pottier L 1990 Bornes et algorithme de calcul des g n rateurs des solutions de syst mes diophantiens lin aires Technical report INRIA Sophia Antipolis Sawamura H et Takeshima T 1985 Recursive unsolvability of determinacy solvable cases of determinacy and their applications to Prolog optimization Proceedings of the Second International Logic Pr
64. X X m Y Y p m b2 m m X X Y p m b2 m m Y Y X m b2 m X Y end or X Y gt pC m b2 m m X X m Y Y p m m X X Y p m m Y Y X p m X Y p X Y end end rules for bool global start gt and and and a1 a2 and a3 a4 and and a5 a6 and a7 a8 not or or or not ai not a2 or not a3 not a4 or or not a5 not a6 or not a7 not a8 end end end A 4 3 Dart module sdart sort Int Set end operators global A 4 Elan 213 O Int s Int Int plus 0 0 Int Int Int mult 0 0 Int Int Int five Int ten Int fifteen Int twentyfive Int fifty Int empty Set set Int Set pl 0 0 Set Set Set AC Set Set Set AC alias p1 p2 Set Set Set AC m2 Set Set Set AC singles Set doubles Set triples Set all Set finish Set end rules for Int x y Int global five gt s s s s s o end ten gt s s s s s five end fifteen gt s s s s s ten end twentyfive gt s s s s s s s s s s fifteen end fifty gt plus twentyfive twentyfive end plus x s y gt s plus x y end plus x o gt x end mult x o gt o end mult x s y gt plus mult x y x end end rules for Set 51 S2 Set I J Int global pi S empty gt S end pi S S gt S end p2 empty S gt end p2
65. Y Y X b 2 X Y 29 or X Y b2 X X Y Y X X Y Y Y X X Y X Y not X b2 X b1 b2 b1 bi equal X X t q2 equal and a1 a2 not or not a1 not a2 q3 equal and ai and a2 a3 not or not ai or not a2 not a3 q4 equal and and ai a2 and a3 a4 E not or or not a1 not a2 or not a3 not a4 q5 equal and and a1 a2 and a3 and a4 a5 gt not or or not ai not a2 or not a3 or not a4 not a5 q6 equal and and and a1 a2 and a3 a4 and a5 a6 not or or or not ai not a2 or not a3 not a4 or not a5 not a6 q8 equal and and and ai a2 and a3 a4 and and a5 a6 and a7 a8 not or or or not a1 not a2 or not a3 not a4 or or not a5 not a6 or not a7 not a8 q2 q3 q4 q5 q6 q8 A 5 Maude Obj 223 A 5 3 Nat10 obj NAT10 is sort Nat opd gt Nat op Nat Nat gt Nat assoc comm op Nat Nat gt Nat assoc comm op O Nat gt Nat op 1 Nat gt Nat op 2 Nat gt Nat op 3 Nat gt Nat op 4 Nat gt Nat op 5 Nat gt Nat op 6 Nat gt Nat op 7 Nat gt Nat op 8 Nat gt Nat op 9 Nat gt Nat op multO Nat gt Nat op multi Nat gt Nat op mult2 Nat gt Nat
66. a E 3 3 8 mult2 x O 1 d mult2 x 2 1 d mult2 x 4 1 d mult2 x 6 1 d mult2 x 8 1 d mult2 x O mult3 x 3 mult3 x 6 mult3 x 3 ci 3 208 Annexe Programmes utilis s pour effectuer les exp rimentations mult3 3 x 9 mult3 x mult3 4 x 2 1 d mult3 x mult3 5 x 5 1 d mult3 x mult3 6 x 8 1 d mult3 x mult3 7 x 1 2 d mult3 x mult3 8 x 4 2 d mult3 x mult3 9 x 7 2 d mult3 x mult4 d d mult4 O x O mult4 x mult4 1 x 4 mult4 x mult4 2 x 8 mult4 x mult4 3 x 2 1 d mult4 x mult4 4 x 6 1 d mult4 x mult4 5 x 0 2 d mult4 x mult4 6 x 4 2 d mult4 x mult4 7 x 8 2 d mult4 x mult4 8 x 2 3 d mult4 x mult4 9 x 6 3 d mult4 x mult5 d d mult5 O x O mult5 x mult5 1 x 5 mult5 x mult5 2 x 0 1 d mult5 x mult5 3 x 5 1 d mult5 x mult5 4 x 0 2 d mult5 x mult5 5 x 5 2 d mult5 x mult5 6 x 0 3 d mult5 x mult5 7 x 5 3 d mult5 x mult5 8 x 0 4 d mult5 x mult5 9 x 5 4 d mult5 x mult6 d d mult6 0 x O mult6 x mult6 1 x 6 mult6 x mult6 2 x 2 1 d mult6 x mult6 3 x 8 1 d mult6 x mult6 4 x 4 2 d mult6 x mult6 5 x 0 3 d mult6 x mult6 6 x 6 3 d mult6 x mult6 7 x 2 4 d mult6 x mult6 8 x 8 4 d mult6
67. b2 m m x x mCy y pC m m x x y p m m y y x p m x y pCx y 10 n x p m b2 x b1 11 qi e a a1 a2 n o n a1 n a2 12 q2 e a a a1 a2 a a3 a4 n o o n a1 n a2 o n a3 n a4 232 Annexe Programmes utilis s pour effectuer les exp rimentations DS 13 q3 e a a a a1 a2 a a3 a4 a a5 a6 n o o o n a1 n a2 o n a3 n a4 o n a5 n a6 Ji 14 e x x success END A 8 Rrl 233 A8 Rrl A 8 1 Bool3 init add p x p x x bO p b0O x x m b1 x x m x m x x x m bO x bo m p x y z p m x z m y z b2 p bi b1 a x y p m m x x m y y pC m b2 m m x x y p m b2 m m y y x m b2 m x y o x y pC m b2 m m x x m y y p m m x x y p m m y y x p m x y p x y n x p m b2 x b1 oper ac m oper ac P oper pred b2 a o n mp bi bo kb opt prove f opt brake nom 10000000 prove a a a1 a2 a a3 a4 n o o n a1 n a2 o n a3 n a4 y quit 234 Annexe Programmes utilis s pour effectuer les exp rimentations Bibliographie Aho A V et Corasick M J 1975 Efficient string matching an aid to bibliographic search Communications of the ACM 18 6 333 340 Aho A V Sethi R et Ullman J D 1989 Compilateurs principes techniques et outils InterEdition ISBN 2 7296 0295 X A
68. briques de base de la structure d un programme telles que les mots cl s les cha nes de caract res ou les entiers l analyse syntaxique obtient une suite de lex mes en entr e et doit trouver dans cette s quence la structure du programme Dans le cadre d un langage fond sur la r criture les unit s syntaxiques sont les variables les termes les r gles et les strat gies entre autres l analyse s mantique a pour but de v rifier certaines propri t s fondamentales qui ne peuvent pas tre d crites l aide d une grammaire hors contexte Savoir si une variable est bien d clar e ou s assurer d une certaine coh rence des types par exemple Cette phase du parseur re oit donc le programme sous une forme abstraite il s agit souvent d un arbre abstrait et calcule des propri t s appel es aussi d corations Ces propri t s telles que la visibilit des op rateurs sont ajout s l arbre abstrait pour le d corer Dans le cadre d ELAN la phase d analyse syntaxique est un peu plus complexe que celles habituellement rencontr es dans les autres langages de programmation Il n est pas possible d uti liser des g n rateurs d analyseurs lexicaux et syntaxiques tels que Lex et Yacc Lesk 1975 Aho Sethi et Ullman 1989 Wilhelm et Maurer 1994 Il y a bien s r une partie de la syntaxe d ELAN qui est suffisamment fig e pour tre trait e par un outil tel que Yacc mais la grande difficult
69. compilateur doit tre robuste il doit d une part tre capable de compiler des sp cifications de grande taille mais il doit aussi g n rer du code de bonne qualit capable d effectuer des calculs pouvant durer plusieurs jours sans faire d erreur ou consommer trop de m moire Le code g n r doit videmment tre suffisamment efficace mais ce n est pas une priorit absolue ce qui signifie qu en cas d h sitation ou de doute la clart et la qualit du compilateur doit tre pr pond rante sur la vitesse d ex cution du code produit D un point de vue scientifique le d veloppement de ce projet doit permettre d harmoniser et de faire cohabiter la plupart des techniques existantes mais il doit aussi permettre l innovation et le d veloppement de nouveaux algorithmes Le projet ne se limite donc pas refaire en mieux le prototype r alis par Marian Vittek le compilateur doit aussi permettre d ex cuter la r criture modulo l Associativit et la Commutativit Ces deux mots peuvent para tre anodins et pourtant l organisation du nouveau compilateur doit tre compl tement modifi e pour pouvoir g rer des syst mes de r criture modulo une certaine th orie FE Cela signifie entre autres que la structure des termes manipul s la compilation du filtrage la gestion des retours arri re et la gestion m moire doivent tre totalement repens es Une fois tablies ces grandes lignes directrices il reste encore
70. consistant d finir deux primitives originales qui permettent de g rer simplement et efficacement la pose 14 European Association for Programming Languages and Systems 185 de points de choix Dans le cadre d ELAN l int r t principal de cette approche est de nous permettre de d finir des sch mas de compilation simples et lisibles ce qui facilite la d finition de nouveaux sch mas de compilation dans le cadre d une extension du langage de strat gies Le deuxi me int r t est d avoir une gestion homog ne et coh rente du non d terminisme aussi bien pour compiler les strat gies que pour compiler le filtrage AC qui introduit lui aussi du non d terminisme du fait de l existence de plusieurs solutions un probl me de filtrage AC donn Ces travaux sont pr sent es dans Moreau 1998a et peuvent tre r utilis s par les communaut s R solution de contraintes ou Prolog par exemple Bien qu attentif la simplicit et la lisibilit du code g n r nous nous sommes aussi concentr sur l efficacit de celui ci Nous avons pour cela d fini un algorithme d analyse du d terminisme d crit par un syst me d inf rence de types tant donn e une sp cification l al gorithme permet de d tecter quelles sont les parties qui conduisent des calculs d terministes Dans ces cas le g n ration du code peut tre am lior e en supprimant la pose de certains points de choix Cette optimisation permet
71. d d rule mult8 d d rule mult9 d d rule x Nat mult2 0 x O O d mult2 x rule x Nat mult2 1 x 2 O d mult2 x rule x Nat mult2 2 x 4 O d mult2 x rule x Nat mult2 3 x 6 O d mult2 x rule x Nat mult2 4 x 8 O d mult2 x rule x Nat mult2 5 x O 1 d mult2 x rule x Nat mult2 6 x 2 1 d mult2 x rule x Nat mult2 7 x 4 1 d mult2 x rule x Nat mult2 8 x 6 1 d mult2 x rule x Nat mult2 9 x 8 1 d mult2 x rule x Nat mult3 0 x O O d mult3 x rule x Nat mult3 1 x 3 O d mult3 x rule x Nat mult3 2 x 6 0 d mult3 x rule x Nat mult3 3 x 9 0 d mult3 x rule x Nat mult3 4 x 2 1 d mult3 x rule x Nat mult3 5 x 5 1 d mult3 x rule x Nat mult3 6 x 8 1 d mult3 x A 1 Brute 199 rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule rule C x C x C x Cx C x CC CCE C x x Cj C x C x C x C x x C x Cl C x C
72. d engendrer de nouveaux sous probl mes r soudre tudions maintenant comment utiliser la structure de filtrage AC pour s lectionner l en semble des motifs p P pi Sia s L automate sup rieur de la structure de filtrage AC est appliqu la couche syntaxique sup rieure du sujet pour effectuer un pr filtrage qui d ter mine l ensemble des motifs restant candidats Les sous structures de filtrage AC associ es aux symboles AC rencontr s lors de l application du premier automate sont alors utilis es pour v rifier que les sous termes des motifs s lectionn s filtrent modulo AC les sous termes du sujet Au cours de l application r cursive de l algorithme des graphes bipartis sont engendr s pour m moriser les r sultats interm diaires Dans le cadre de notre exemple on consid re maintenant le terme clos en forme canonique s fac f a a f a g b f g c g b g a Le premier automate de filtrage pr sent sur la partie gauche de la figure 6 1 s assure que le sujet commence bien par le symbole fac et indique que les motifs fac z f a x g a et fac f a x f y g b restent candidats pour la suite de V tape de filtrage AC L application sur les sous termes f a a f a g b f g c g b et g a du deuxi me automate de filtrage de la figure 6 1 nous am ne alors consid rer les deux graphes bipartis donn s sur la figure 6 2 un pour chaque r gle On peut noter qu aucun sommet du graphe bipa
73. d finition de strat gie suivante strategies for Element gt Element implicit listExtract gt iterate dc one extractrule2 dc one extractrulei end end Le codage au format REF correspondant est le suivant STRATEGY listExtract Element liste iterate dcone extractrule2 dcone extractrule1 nil end Dans le format REF un terme se compose d une liste de sous termes ainsi que du nom de la r gle de grammaire associ e au symbole de t te Le terme a b nil se code alors de la mani re suivante FSYM FSYM nil a FSYM FSYM nil b FSYM nil nil nil nil 3 2 Cr ation d outils L utilisation d un environnement de programmation doit tre un moyen d am liorer la vitesse ou la qualit du cycle de d veloppement d un outil Il ne doit en aucun cas tre per u comme un boulet qui engage et condamne les utilisateurs effectuer tous leurs d veloppements futurs dans ce m me environnement Cette id e fut l une des principales motivations qui nous ont amen s d velopper le compilateur pour ELAN L utilisation du compilateur ELAN est telle qu elle rend l utilisation des sp cifications com pil es ind pendantes de l environnement de sp cification il n est plus n cessaire de disposer du parseur de l interpr teur et de la biblioth que ELAN pour ex cuter une sp cification Apr s com pilation d une sp cification celle ci peut tre vue comme une bo te
74. dans un troisi me formalisme le langage d implantation qui n est pas n cessairement reli aux deux premiers La r alisation d un compilateur ne se limite pas l tude des techniques de traduction il faut aussi s assurer que les sch mas de traduction propos s et la structure du code g n r sont bien en accord avec les normes implicites du langage cible On sait par exemple que le langage C permet d crire des programmes contenant plusieurs centaines de milliers de lignes mais il faut aussi savoir que les outils de compilation mettent en uvre des phases d optimisation locales et globales qui ont une complexit polynomiale en temps et en espace par rapport la taille des fonctions compiler Il est donc pr f rable de d finir plusieurs fonctions comportant un nombre raisonnable de lignes plut t qu une seule fonction qui com porterait un tr s grand nombre de lignes La limite entre raisonnable et tr s grand n est pas rigoureusement d finie puisqu elle volue en fonction de la puissance des calculateurs et des algorithmes utilis s par les compilateurs La pratique montre que la compilation de plusieurs centaines ou milliers de lignes ne pose aucun probl me alors qu il n est pas toujours possible de compiler une fonction comportant plusieurs dizaines de milliers de lignes Dans ce cas il faut d composer la fonction C en sous fonctions qui peuvent m me tre d finies dans des fichiers diff ren
75. de gestion m moire peut tre difficile stabiliser dans la mesure 160 Chapitre 11 Support d ex cution o les instructions de gestion m moire sont r parties dans l ensemble du programme ce qui ne facilite pas la recherche d erreurs Dans le cadre d ELAN la pr sence de calculs non d terministes rend encore plus difficile l utilisation de compteurs de r f rences lorsqu un fail est ex cut cela peut r activer une fonction qui s tait termin e normalement mais il faut alors d cr menter les compteurs de tous les termes qui ont t cr s depuis la pose du point de choix concern On imagine alors la complexit des sch mas de compilation mis en uvre pour g rer le non d terminisme et la m moire et il n est pas tonnant que ce premier prototype de compilateur ne soit pas parfaitement stable D un point de vue efficacit la gestion m moire pouvait elle aussi tre am lior e mais il a fallu attendre une nouvelle implantation du compilateur pour s en convaincre Comme mentionn pr c demment pour g rer la m moire en utilisant des compteurs de r f rences il faut pouvoir m moriser un nombre de r f rences dans chaque objet cr Le caract re particulier de la r cri ture fait que les objets allou s qui sont majoritairement des symboles sont petits et nombreux plusieurs milliers d objets compos s de 3 4 mots m moire en moyenne L exp rience montre que le fait d ajouter un mot m moire
76. de la forme e s 5 e avec ee e Eet sed 5 5 Automate de filtrage m moire 73 6 M est une m moire permettant de m moriser un ensemble de couples e a E x X e correspond un tat o un choix a t fait et a correspond au pr fixe lu sur la bande depuis cet tat Au paragraphe 5 2 nous avons pr sent des automates de filtrage non d terministes en donnant des r gles de transition de configurations volontairement ambigu s Il fallait utiliser une strat gie de recherche avec retour arri re pour que l ensemble des tats finaux puisse tre explor Mais cette strat gie permettant de restaurer un tat particulier de la bande de lecture ne faisait pas partie du syst me sa description n tait pas contenue dans celle de l automate Et pourtant il fallait bien une m moire particuli re pour se souvenir des branches non explor es L introduction d automates de filtrage m moire a pour objectif de clarifier et d expliciter dans le syst me lui m me une forme particuli re de strat gie avec retour arri re La strat gie est particuli re dans la mesure o nous ne voulons pas rembobiner la bande de lecture ce qui reviendrait d placer la t te de lecture vers la gauche et donc lire plusieurs fois le terme d entr e C est principalement ce que nous voulons viter pour des raisons videntes d efficacit Lorsque l automate a le choix entre suivre une ar te tique
77. de strat gie on s aper oit que seul un sous ensemble relativement restreint du langage a une influence sur l application des r gles Il faut en fait diff rencier deux types de constructeurs les constructeurs qui agissent directement sur des r gles nomm es Il s agit de dc one first one dc first et dk lorsqu ils sont appliqu s uniquement des r gles Leur r le se restreint alors sp cifier de quelle fa on les r gles doivent tre appliqu es doivent elles retourner un r sultat tous les r sultats correspondant l application d une seule r gle ou tous les r sultats correspondant l application de toutes les r gles les constructeurs qui agissent directement sur des strat gies Comme on l a vu dans le chapitre 1 d un point de vue th orique il n y a pas de diff rence entre une r gle de r criture et une strat gie mais d un point de vue pratique il est pr f rable de s parer ces deux concepts simplement parce qu ils se repr sentent diff remment en m moire D un point de vue valuation ces constructeurs dc one first one dc first dk S1 8 S1 S2 repeat S et iterate S ne servent qu contr ler l application d autres strat gies Notons ici que les op rateurs first one et dc one ainsi que les op rateurs first et dc ont des s mantiques diff rentes mais des implantations identiques En effet ce qui diff rencie de S1 5 de first S1 c est l ordr
78. des r gles 116 8 4 Compilation des valuations locales 118 8 5 Construction du terme r duit 124 8 6 Compilation des strat gies 127 Dans le chapitre 4 nous avons d fini les grandes lignes du compilateur que nous voulons construire En particulier nous avons d cid d utiliser le langage C comme langage cible Dans les chapitres 5 et 6 nous avons propos des m thodes de compilation du filtrage syntaxique et du filtrage modulo AC permettant de d river des proc dures efficaces de normalisation Dans le chapitre 7 nous avons d fini deux primitives de gestion des points de choix afin de pouvoir compiler plus facilement le double non d terminisme inh rent au filtrage AC et aux strat gies d ELAN Dans ce chapitre nous tudions diff rentes fa ons d assembler ces composants et nous pro posons de g rer de mani re homog ne et coh rente la compilation du filtrage la s lection des r gles appliquer la compilation des valuations locales la compilation des strat gies et la construction du r sultat obtenu apr s application d une r gle ou d une strat gie 8 1 Tour d horizon Supposons que le langage ELAN ne dispose pas de strat gies d finies par l utilisateur toutes les r gles seraient non nomm es C est le cas des langages ASF CafeOBJ Maude et OBJ 3 pr sent s dans le chapitre 2 On peut alors imaginer com
79. deuxi me cr ateur d ELAN Il m a continuel lement aid avancer en am liorant sans cesse le langage et son interpr teur C est certainement gr ce Peter que des applications complexes ont pu voir le jour et sans lui le compilateur aurait t termin bien plus t t mais cela n aurait t qu un prototype Je ne remercierai jamais assez Eric Domenjoud de m avoir un jour pos la question suivante que fais tu au juste je n ai toujours pas compris le sujet de ta th se Son esprit critique et curieux m a amen travailler sur un sujet profond ment passionnant Nous avons aussi pass de nombreuses heures refaire le monde et je l en remercie Thomas Genet avec qui j ai partag mon premier bureau m a support et soutenu pendant tout le d veloppement du compilateur Je dois beaucoup sa bonne humeur permanente Merci Christophe Ringeissen et Laurent Vigneron pour leurs nombreux commentaires et conseils relatifs au manuscrit et aux transparents de la soutenance Ils ont activement contribu am liorer la qualit de l ensemble Merci a Horatiu Cirstea Hubert Dubois Christelle Scharff et les autres pour m avoir aid a accroitre la stabilit du compilateur Chaque disfonctionnement signal a pu paraitre minime mais cela a t d une grande aide Je n aurais s rement pas pu aboutir un tel document sans l existence d outils tels que TEX LATEX et MetaPost Je tiens remercier
80. effet utiliser un algorithme de filtrage modulo les axiomes d associativit et de commutativit Le probl me de filtrage est lui m me complexe mais il introduit surtout un second niveau d ind terminisme du fait qu il peut exister plusieurs solutions un probl me donn Une grande partie de la difficult de la compilation du langage ELAN r side alors dans la mise en place d un m canisme capable de g rer efficacement et de fa on coh rente ces deux sources de non d terminisme Cette deuxi me difficult n avait pas du tout t abord e par le prototype r alis par Marian Vittek les symboles associatifs et commutatifs ne pouvaient pas tre compil s Et pourtant l tude des sp cifications crites en ELAN a montr que l utilisation de symboles associatifs et commutatifs a un impact r ellement positif sur la qualit et la lisibilit des programmes m me si l efficacit de ceux ci est g n ralement inf rieure celle de programmes quivalents 6 Introduction n utilisant pas de symboles associatifs et commutatifs C est pourquoi nous avons d cid d tudier particuli rement comment compiler efficacement des sp cifications ELAN utilisant des symboles associatifs et commutatifs Le r el d fi de cette th se est ainsi de proposer des techniques de compilation pour la to talit du langage ELAN et de montrer qu en pratique ces techniques permettent d obtenir des programmes efficaces L int r t
81. es dynamiquement La r solution des graphes bipartis par exemple se fait de mani re identique dans Brute Maude et ELAN m me si on pourrait imaginer pr calculer des g n rateurs de solutions sachant que certains sommets du graphe ceux qui correspondent aux motifs sont connus l avance Le dernier exemple figure 12 13 correspond au programme Somme pr sent pr c demment il est ici utilis pour calculer la somme des entiers de 1 n 57 5 Notons que le syst me d fini page 177 teste effectivement la vitesse d extraction des filtres AC mais seulement si les r gles sont appliqu es avec priorit cela assure que la premi re r gle state est essay e sans succ s avant la seconde Lorsque cette contrainte n est pas assur e par le logiciel test et c est le cas de Brute par exemple il faut alors ajouter un op rateur auxi liaire et remplacer les deux derni res r gles par les trois suivantes pour simuler un comportement identique fire state s1 52 y state s1 52 y state s Uset x s2 y error if x s2 state s Uset x s2 y fire state s1 52 U set x x y if x so Le terme r duire n 100 devenant alors fire state U set 1 U U set 100 0 0 Le chapitre 6 pr sentait l utilisation des structures de graphes bipartis compacts comme un moyen d acc l rer le traitement des r gles conditionnelles et c est effectivement ce que semblent ind
82. est dans une p riode de doute que Kostis Sagonas et Bart Demoen se sont int ress s mes travaux Leur int r t et leurs encouragements m ont t d une tr s grande aide et je les remercie particuli rement Je remercie Brigitte et Jacques Jaray pour avoir toujours cru en moi C est en particulier gr ce Brigitte que je suis venu Nancy et c est aussi elle qui m a incit faire un premier stage dans l quipe Proth o Jacques a accept d tre mon tuteur et il m a aid faire mes premiers pas dans le monde de l enseignement J ai particuli rement appr ci sa disponibilit sa confiance et ses conseils Je les remercie grandement tous les deux J en profite aussi pour remercier tous mes l ves de l cole de Mines de Nancy de l Universit Henri Poincar Nancy 1 et de l Universit Nancy 2 pour avoir rendu passionnant mon travail d enseignant Merci Micha l Rusinowich et Paul Zimmermann pour leur int r t permanent et leur regard ext rieur Bien que ne dirigeant pas ma th se je pense pouvoir dire que Claude Kirchner a co encadr une grande partie de mes travaux Par son implication dans le projet ELAN par sa grande confiance et par sa constante disponibilit il m a en permanence aid faire des choix difficiles et croire en mes id es Sa gentillesse son soutien et sa passion pour la recherche ont sans aucun doute contribu cette th se Je lui en suis extr me
83. est pas appliqu e utiliser un langage fonctionnel du type Caml c est s rement une tr s bonne solution mais c est un langage encore relativement peu utilis en dehors du territoire fran ais Ce n est pas g nant en soi mais cela peut devenir un handicap dans le cadre d un d veloppement r parti entre plusieurs quipes internationales par exemple utiliser ELAN lui m me les techniques d amor age ou de bootstrapping ont souvent un impact b n fique consid rable sur la qualit du langage d velopp Cela permet en effet de tester en permanence la plupart des constructions du langage et les qualit s du compilateur d velopp Il faut cependant disposer d un langage et d outils suffisamment fig s pour ne pas mener tous les combats en m me temps ELAN est un produit de recherche en constante volution et bien que le langage et les outils s am liorent jour apr s jour le risque est dans ce cas de devoir d velopper et maintenir en parall le le langage l interpr teur et le compilateur utiliser un langage objets tel Eiffel ou Java ces langages permettent en g n ral d am liorer consid rablement la qualit du code d velopp et d augmenter leur r utilisabilit Choisir entre Eiffel et Java n est pas simple Eiffel a l avantage d tre relativement puissant stable et efficace De plus la pr sence dans notre laboratoire des auteurs du premier compilateur GNU Eiffel n aurait d laisser auc
84. et assurer que tous les objets de sorte int sont bien des termes et non des entiers au sens N Dans le cadre d ELAN ce m canisme s ajoute la m thode choisie pour repr senter les entiers la repr sentation binaire d un entier n est d cal e d un bit vers la gauche et le dernier bit est mis 1 not n 1 ce qui revient multiplier l entier n par deux et ajouter 1 rules for int a b c builtinInt global al b gt c where c Qatb end a l b gt c where c Qa b end al b gt c where c 0axb end a b gt c where c Qa b end end o est un alias de l op rateur builtinInt int Les op rations sur les entiers de sorte builtinInt sont quant a elles implant es par des macros du langage C define fun_plus a b setIntegerTag getInt a getInt b define fun_minus a b setIntegerTag getInt a getInt b define fun mul a b setIntegerTag getInt a getInt b define fun_div a b setIntegerTag getInt a getInt b ou les fonctions setIntegerTag et getInt servent respectivement a coder et a d coder les repr sentations binaires des entiers 11 4 Gestion de la m moire Tout comme la gestion du non d terminisme la gestion de la m moire pose elle aussi des probl mes se situant deux niveaux d tude distincts Dans le cadre de la gestion du non d terminisme il fallait d une part tudier la d finition de primitives permettant de placer et d enlever
85. et d un formalisme de d finition de syntaxe SDF permettant de d finir des signatures multi sort es et des op rateurs associatifs l inverse des autres syst mes la version actuelle d ASF SDF ne permet pas de d finir des modules param tr s et n offre pas de biblioth que int grant des sortes et op rateurs l mentaires builtin L environnement ou plut t m ta environnement de sp cification a t originellement con u pour aider au d veloppement de langages de programmation Deursen et al 1996 ce qui explique pourquoi l accent a t particuli rement mis sur les outils d dition de d veloppement et d analyse statique plut t que sur le d veloppement du formalisme de sp cification qui est largement suffisant pour remplir sa t che ASF SDF n est pas un outil monolithique bien au contraire Il se compose de plusieurs l ments de base qui communiquent en utilisant un format d change commun l asFix Ce format permet de repr senter la syntaxe abstraite de n importe quel objet manipul Pour int grer un nouvel outil l environnement il suffit que celui ci soit capable de communiquer en utilisant le format asFix C est en particulier gr ce cette extr me modularisation que le groupe de Paul Klint a r ussi d velopper un grand nombre d outils complexes et relativement stables Parmi 36 Chapitre 2 Outils pour sp cifier et programmer ceux ci on compte Un diteur qui s adapte auto
86. expressions quivalentes exprim es dans un autre langage Pour que la sp cification initiale devienne ex cutable il faut que le langage cible dispose d outils permettant de l ex cuter ici encore il peut s agir d un interpr teur ou d un compilateur D finir une fronti re nette entre interpr tation et compilation n est jamais tr s facile faire parce que beaucoup de concepts diff rents se cachent derri re les termes compilateur in terpr teur compilation interpr tation langage compil et langage interpr t Le chapitre 4 devrait aider clarifier la situation Sans vouloir alimenter de pol mique les techniques de compilation ont d une mani re g n rale deux principaux atouts par rapport aux interpr teurs ce n est pas une v rit absolue mais habituellement pour un langage source donn les compilateurs permettent d obtenir une implantation plus efficace le deuxi me avantage est de produire des ex cutables qui deviennent ind pendants de l environnement de d veloppement les ex cutables peuvent tre utilis s seuls par d autres outils sans n cessiter la pr sence d un interpr teur Dans certains cas le code cible g n r par le compilateur peut m me tre directement utilis et int gr dans le d veloppement d un logiciel plus complexe tant donn e une sp cification ELAN le compilateur doit permettre de la traduire en un autre program
87. fga l arbre de filtrage tant initialement vide l ar te tiquet e 70 Chapitre 5 Compilation du filtrage syntaxique par f est cr e puis le suffixe ga est r cursivement ajout au sous arbre vide On obtient alors l arbre suivant fga Le deuxi me motif fw est ensuite ins r l ar te tiquet e par f est suivie puis le suffixe w est ajout au sous arbre courant Il s agit d un suffixe commen ant par un w Son insertion fait appel la partie la plus complexe de l algorithme une ar te tiquet e par w est cr e puis la feuille de l arbre est d cor e par le motif fw pour indiquer qu il a t reconnu voir partie droite de la figure suivante les autres ar tes sont suivies il n y en a qu une celle tiquet e par g et le suffire w 9 w est ajout Une nouvelle fois il s agit d ajouter un suffire commen ant par une variable une ar te w est cr e sa feuille est d cor e par deux motifs fgw et fw et r cursivement ces d corations se propagent vers la feuille la plus gauche L arbre suivant est finalement obtenu fga fgw fgw fw fw 5 4 Cl ture r duite d un ensemble de motifs La taille des arbres construits par l algorithme 5 1 devient rapidement importante voire ing rable lorsque l ensemble initial de motifs contient un grand nombre de recouvrements de pr fixes Un ensemble de motifs L est dit avec recouvrements de pr fixes s il existe u
88. fib 8 x fib 7 x prec 0 x 9 prec x prec 1 x O x prec 2 x 1 x prec 3 x 2 x prec 4 x 3 x prec 5 x 4 x prec 6 x 5 x prec 7 x 6 x precls 2 7 x prec 9 x 8 x order interactive problems reduce fib 6 1 d end A 4 Elan 211 A4 Elan A 4 1 Ackermann module ack sort Nat end operators global o Nat s Nat Nat ack Nat Nat Nat end rules for Nat x y Nat global ack o x gt s x ack s x 0 gt ack x s o ack s x s y gt ack x ack s x y end end A 4 2 Bool3 module bool3 import eq Bool3 bool end sort Bool3 end operators global bO Bool3 bi Bool3 b2 Bool3 al Bool3 a2 Bool3 a3 Bool3 a4 Bool3 ab Bool3 a6 Bool3 a7 Bool3 a8 Bool3 p Bool3 Bool3 Bool3 AC m Bool3 Bool3 Bool3 AC and Bool3 Bool3 Bool3 end end end 212 Annexe Programmes utilis s pour effectuer les exp rimentations or Bool3 Bool3 Bool3 not Bool3 Bool3 start bool end rules for Bool3 X Y Z Bool3 mX mY mZ tZ Bool3 global p X p X X gt bO end p bO X gt X end m b1 X gt X end m X m X X gt X end m b0 X gt bO end m p X Y Z gt p m X Z m Y Z end b2 gt p b1 b1 end not X gt p m b2 X b1 end and X Y gt p m m
89. filtres possibles et de calculer toutes les mani res de r duire un terme en utilisant un syst me de r criture r1 ra donn 8 4 Compilation des valuations locales Comme nous venons de le voir la compilation d un ensemble de r gles g n re une proc dure de filtrage many to one et pour chaque r gle r un morceau de programme ayant la structure 8 4 Compilation des valuations locales 119 suivante ri v rification de ri ri Tin pose d un point de choix filtrage AC ventuel construction d une substitution ex cution des valuations locales construction du terme r duit saut au morceau de programme correspondant l tape 3 de la page 118 Dans ce paragraphe on s int resse principalement la mani re de compiler les valuations locales apparaissant dans une r gle r donn e Comme nous l avons vu dans le chapitre 1 la structure d une r gle ELAN est la suivante lt r gle gt lt tiquette gt lt terme gt gt lt terme gt lt valuation locale gt lt valuation locale gt if lt terme bool en gt where lt nom de variable gt lt strat gie gt lt terme gt where lt sorte gt lt terme gt lt strategie gt lt terme gt choose try lt valuation locale gt end Ce qui signifie qu une r gle de r criture peut comporter un nombre quelconque mais fini d valuations local
90. fl chettes sachant qu il faut commencer par un centre ou un double pour d marrer la partie En 1990 il fallait environ 3 heures 30 OBJ pour r soudre un de ces probl mes de comptage Depuis les ordinateurs ont volu et aujourd hui encore il faut plus de 12 minutes sur Sun Ultra 2 pour r soudre ce probl me Ce benchmark nous a longtemps permis d exp rimenter et de valider les techniques de compilation d velopp es dans cette th se Les premiers r sultats exp rimentaux taient encourageant et nous ont pouss s continuer nos 12 Disponible l adresse http pauillac inria fr caml 180 Chapitre 12 Exp riences pratiques efforts il faut actuellement moins d une seconde au compilateur ELAN pour r soudre ce m me probl me Le tableau ci dessous permet de situer le niveau de performance des nouveaux moteurs gt que sont Brute Maude et ELAN par rapport aux autres outils permettant d effectuer de la normalisation modulo AC Lorsqu un appara t dans une case cela signifie que l exemple n a pas t exp riment sur le logiciel correspondant Un indique que le calcul a t interrompu par manque de m moire ou de patience ou que l information n est pas disponible Bool3 n 6 Nat10 n 16 Somme n 100 rwr sec rwr Sec rwr sec CiME gt 24h 294 OBJ gt 24h 26 936 111 gt 24h OTTER gt 600 ReDuX 268 658 1200
91. gt dk queensrule end end Cette strat gie utilise le constructeur dk ce qui signifie que l valuation du programme va retourner un ensemble de r sultats correspondant aux diff rentes fa ons d appliquer ces r gles Les r sultats correspondent aux 92 solutions du probleme des 8 reines Essayons dans un premier temps de bien comprendre comment l application du premier programme permet d obtenir un r sultat Les valuations locales sont valu es dans l ordre La premi re est une condition de filtrage qui consiste r soudre le probleme p U s 1U U8U9 o p est un entier s un ensemble et est un l ment qui symbolise l ensemble 122 Chapitre 8 Compilation des r gles et des strat gies O O SL o i lt 1 t i o ALT N O 71 7 NT A A n i o z pia AS O 7 BE Ne O FIG 8 1 La partie gauche de cette figure repr sente l tat de l chiquier apr s y avoir plac reines qui ne se menacent pas C est une repr sentation graphique de la solution partielle pi gt 1 p2 5 p3 8 p4 6 trouv e au cours de l ex cution des valuations locales Le pion noir correspond une tentative de placer une cinqui me reine ps 1 mais on s aper oit qu elle est mise en chec par la reine se trouvant sur la rang e sup rieure de l chiquier La partie droite de cette figure est la repr senta
92. i 09 2 4 6 8 utilisation de Minela pour calculer les n premiers nombres premiers 2 E Os 106 Compilateur 700 EN UMR ec 2 ue S 500 a on de 400 jas D aj 5x104 N F300 E D 5 E 2x10 E a 200 3 Ei so 5000 n 150 Z5 Interpr teur mS o 20004 Le H de kS i i Fic 12 9 Evaluation des performances de Minela semble d cro tre mais cela vient en partie de mesures impr cises li es des temps d ex cution trop petits des programmes compil s En augmentant la taille des probl mes l acc l ration devrait se stabiliser entre 200 et 300 mais l interpr teur met trop de temps pour que nous puissions effectuer ces mesures 12 2 5 Applications de taille r elle Les r sultats pr c dents montrent que les techniques de compilation d velopp es permettent d accroitre consid rablement la vitesse d ex cution des sp cifications ELAN tout en r duisant leur consommation m moire Ces travaux ont en particulier permis de d velopper deux applications majeures pour lesquelles l interpr teur seul n aurait pas suffit il s agit de Colette et d une biblioth que de calcul sur les automates d arbres Colette C est un environnement de r solution de contraintes d velopp par Carlos Castro dans le cadre de sa th se 1998 A titre d exemple pour un probl me de r solution de contraintes li un probl me de conversion de calendri
93. il faut aussi que celui ci puisse facilement s int grer dans la r alisation d un com pilateur Ce point abord dans le chapitre 4 implique qu un grand nombre des structures de donn es de l algorithme doivent se traduire en des structures de contr le du langage cible choisi Ce chapitre pr sente donc l algorithme de filtrage AC d velopp dans le cadre de la r alisation du compilateur Une des difficult s de cette pr sentation r side dans la distinction entre le tra vail effectu au cours de la compilation c est la phase de g n ration d un algorithme de filtrage pour un probl me donn et celui fait au cours de l ex cution du code g n r c est la phase qui s lectionne une r gle et calcule un filtre s il existe 6 1 Termes en forme canonique Lorsqu on manipule des termes comportant des symboles AC il est fr quent que les termes soient syntaxiquement diff rents mais tout en repr sentant les m mes objets math matiques Nous avons vuau paragraphe 1 5 que les polyn mes 3 x X x X 2 x X 1 et X x 2 1 X 3 x X ne s crivent pas de la m me fa on mais qu ils sont bien gaux modulo les axiomes d associativit et de commutativit Dans une telle situation o l on consid re des termes qui sont dans une m me classe d quivalence il est souvent pratique voire indispensable de choisir une repr sentation conventionnelle gt appel e repr sentation canonique ou forme canonique pour
94. il proposa le premier compilateur pour un tel langage et d crivit son fonctionnement dans sa th se Strandh 1988 Au cours de sa th se David J Sherman 1994 d veloppa de nouvelles techniques de compilation permettant d am liorer les performances du compilateur la sp cification initiale est dans un premier temps transform e 2 Introduction par valuation partielle et des techniques de partage sont utilis es execution pour minimiser le nombre de symboles construire et mettre en facteur des s quences de calcul redondantes Le projet OBJ de Joseph A Goguen s est quant lui particuli rement concentr sur le formalisme de sp cification et sur l expressivit du langage d velopp le langage OBJ permet ainsi de d finir des inclusions de sortes des r critures modulo les axiomes d associativit et de commutativit ainsi que des expressions de modules param tr s Les premi res versions du langage furent d velopp es principalement par Futatsugi Goguen Jouannaud et Meseguer et c est en 1987 que la version OBJ 3 Goguen Kirchner Kirchner M grelis Meseguer et Winkler 1987 fut pr sent e Ces travaux sur la derni re version d OBJ ont certainement influenc le projet ELAN d marr par Claude et H l ne Kirchner en 1990 Un autre projet Maude fut parall lement d marr par Jos Meseguer On pourrait croire que l histoire se r p te en voyant nouveau ces deux projets s orienter vers des v
95. in the state in which the previous branch was entered e the SOME statement extends the ORELSE construction to generate a number of choice points determined only at run time e the FORALL statement introduces a controlled form of iteration over the backtracking 4 Available at http www loria fr ELAN 110 Chapitre 7 Gestion du non d terminisme With these extensions the program that computes all solutions of the N queens problem can be expressed in a natural way Let us remind that the N queens problem consists in placing N queens on the chess board so that they do not attack each other FOR column 1 TO N DO BEGIN SOME row 1 TO N DO print all solutions FOR i 1 TO column 1 DO nrSols 0 x i lt gt row FORALL queens b x i lt gt rowtcolumn i DO x i lt gt rowti column x print solution b END END x column row END queens END END In the Alma 0 environment the program is first translated into the Alma 0 abstract machine language AAA and then each AAA instruction is compiled into C statements The used backtracking mechanism corresponds to the first method described in Section 7 3 Thus modular compilation is not possible and optimisations performed by the C compiler are not optimal We think that setChoicePoint and fail could be a good alternative to implement AAA back tracking operations Even more setChoicePoint and fail seem to be well suited to compile directly an Alma 0 prog
96. kb bok on hb oe aware tah ee eu SEUL d 204 A3 GIMME ce n e S60 e405 Oo a ata ot bORSES See eS HS eS es 205 PAA Naser de aa nn al Bods Des 2 e nits eer 211 AS Maude Obj 604 ne e wwe a o ee ee ee Gd 22 AD Otter 2 2944 4 iai Gok ME een ee D ee at ad do ta ae a ul dal da 229 AT REdUXe i e ae See eh oe be OVE SAS wee d eee EUR Re e 231 ALS OR eee eRe DEA eRe ERG EOE RAH OR ee ek a 233 A 1 Brute A 1 1 Ackermann sort declaration sort N operator declarations op 0 ON O op s N N 1 op ack NN N 1 2 0 rewrite rules rule I N ack 0 I s I rule I N ack s I 0 ack I s 0 rule I N J N ack s I s J ack I ack s I J compile stat on reduce ack s s s 0 s 0 reduce ack s s s 0 s s 0 193 194 Annexe Programmes utilis s pour effectuer les exp rimentations reduce reduce reduce reduce reduce reduce ack s ack s ack s ack s ack s ack s A 1 2 Bool3 s s s s s s sort declaration sort B s 0 s s s 0 s 0 s s s s 0 s 0 s s s s s 0 s 0 s s s s s s 0 s 0 s s s s s s s 0 s 0 s s s s s s s s 0 operator declarations op bO O B 0 op bl O B 0 op b2 O B 0 op a1 O B 0 op a2 O B 0 op a3 O B 0 op a4 O B 0 op a5 O B 0
97. l existence d un pr processeur permettant de g n rer automatiquement des syst mes de calcul et surtout la puissance du langage de strat gie qui permet d exploiter enti rement l aspect non d terministe inh rent la r criture Des applications majeures ont t r alis es et rapidement le besoin d un moteur de r criture plus efficace s est fait sentir En 1995 Marian Vittek a commenc l tude de techniques de com pilation permettant d am liorer les performances du langage mais devant l ampleur de la t che et le temps qui lui tait imparti il n a pu r aliser qu un prototype de compilateur capable de traiter un sous ensemble du langage ELAN Les r sultats taient cependant tr s prometteurs et surtout il avait montr que des techniques de compilation particuli res pouvaient rendre le syst me ELAN comp titif en terme d efficacit avec bien d autres langages de programmation Les difficult s pour compiler le langage ELAN sont principalement dues la pr sence de strat gies non d terministes ces strat gies permettent d explorer un sous ensemble d un espace de recherche en guidant finement l application des r gles Lorsque cette exploration choue en menant une impasse une autre branche de l espace de recherche doit tre explor e Il existe cependant une deuxi me source de difficult c est la pr sence de symboles associatifs et commutatifs Ces symboles nous am nent en
98. l interpr teur alors qu elles sont maintenant traduites en structures de contr le du langage cible le C qui n entra nent pas d allocation dynamique de m moire Ces informations nous montrent que le compilateur ne se contente pas de r duire la taille des objets cr s mais qu il effectue un travail en profondeur li la structure du code g n r qui permet de r duire le nombre d allocations dynamiques de m moire 170 Chapitre 12 Exp riences pratiques 12 13 ANS Compl tion Cet exemple correspond l implantation d une proc dure de compl tion d finie dans Lescanne 1989 et tendue dans Moreau 1994 Kirchner et Moreau 1995 Ce benchmark fait partie de la cat gorie des gros programmes parce qu il se compose de plusieurs centaines de r gles et de quelques dizaines de strat gies Le syst me pn compl ter est une variante de l axiomatisation des groupes qui comportent n l ments neutres et n op rateurs inverses FCF x y 2 f x f y z fileu T Pn fe x f z u x e1 f ain z en 2 z 9 BB 7 E 5 10 Interpr teur E g 2000 A su ae 1000 ee gn Lys ES ot E 8 2 2x106 o E 8 200 SE 8 B 100 BE a 6 4 e E A Compilateur a Oo 20 _ 5 f S 5x10 5 i 10 Compilateur 30 E 8 _ 3 5 a 3 54 Es g 2x10 g ro tf 1 t E g ee ee TT 1 2 3 4 5 A 1 2 3 4 5 ct compl tion de py comp
99. la premi re solution S f a a f a x f a g b f y g b 1 Il suffit de filtrer les termes f a a et f a g b pour trouver un graphe biparti ayant une solution Celle ci est trouv e d s que le graphe biparti compact suivant est partiellement construit f a x f y g b g a flara fast faca gla Le raffinement glouton a pour inconv nient d introduire des tapes de v rification suppl men taires mais en contre partie il permet de r duire consid rablement le nombre de tentatives de filtrage Dans l algorithme du paragraphe 6 5 le nombre d tapes de filtrage est gal au nombre de sous termes du sujet filtr alors qu ici le nombre d tapes d pend en plus de la structure des motifs ce qui le rend bien souvent inf rieur au nombre de sous termes du sujet Les r sul tats obtenus en pratique montrent que le raffinement glouton permet de r duire le nombre de tentatives de filtrage dans une proportion variant entre 30 et 85 94 Chapitre 6 Compilation du filtrage associatif commutatif 6 7 Calcul des substitutions Une fois la premi re tape de filtrage effectu e il reste calculer les instances des variables du membre gauche de la r gle pour pouvoir valuer les conditions et construire le terme r sultat Deux probl mes m ritent d tre consid r s comment instancier les variables non introduites dans les graphes bipartis comment optimiser la construction des substitutions associ es aux autr
100. le pr dicat assert de Prolog qui permet de modifier dynamiquement un programme en lui ajoutant des clauses qui ne sont pas connues au moment de la compilation Il est alors impossible de g n rer uniquement des structures de contr le du langage C par exemple qui permettent de donner un sens la clause qui est encore inconnue Il est d une mani re g n rale impossible de se passer de l approche hybride lorsque le langage source contient des constructions ayant trait la r flexivit En choisissant d utiliser le C comme langage cible nous savions que les extensions r flexives d ELAN telles que la cr ation dynamique de strat gies ne pourraient pas tre compil es en utilisant le m me sch ma que celui con u pour les r gles et les strat gies d finies statiquement Mais ce n est pas un handicap en soi il parait tout fait acceptable que les strat gies d finies dynamiquement qui repr sentent une infime partie des strat gies utilis es dans la pratique s ex cutent de mani re moins efficace que les autres Et je pense que dans le cadre d ELAN il est nettement pr f rable de ne pas p naliser l ex cution de l ensemble du syst me de r criture en utilisant une technique de compilation particuli rement d di e Nous avons donc choisi de repr senter une grande partie des unit s syntaxiques d ELAN a savoir les op rateurs les r gles de r criture et les strat gies par des fonctions du langage C Les
101. le terme r duit correspondant l application d une r gle de r criture par exemple Notre travail d implantation a principalement consist r aliser le compilateur 15 000 lignes de Java et la biblioth que de support d ex cution 8 000 lignes de C Ce travail d implantation m a donn des comp tences particuli res sur des domaines tels que la gestion de la m moire les m canismes de gestion des retours arri res la repr sentation des termes dans un syst me de calcul symbolique et l implantation de structures compactes et efficaces par exemple La description des algorithmes utilis s et la diffusion des sources du logiciel font que toutes ces comp tences peuvent videmment tre r utilis es dans le cadre d autres implantations Applications La r alisation d un logiciel d une telle ampleur est rarement exempte d erreurs Nous estimons cependant que la version actuelle du compilateur est stable dans la mesure o toutes les sp cifications ELAN connues ce jour peuvent tre compil es correctement Ce qui repr sente plusieurs milliers de modules ELAN et plusieurs centaines de milliers de lignes g n r es par le compilateur La fiabilit et les performances du compilateur ont en particulier servi Carlos Castro et Thomas Genet pour exp rimenter les travaux d velopp s dans le cadre de leur th se L environ nement de r solution de contraintes Colette labor par Carlos Castro a permis de r soudr
102. les modules initiaux pour regrouper les r gles commen ant par un m me symbole Les nouveaux modules obtenus sont ensuite compil s pour engendrer la cr ation de modules C r gle et qu ils se construisent en appelant une fonction Et lorsqu un symbole local est un constructeur il faut g n rer une fonction permettant de construire effectivement le symbole Cette approche permet de compiler s par ment les modules mais l efficacit du programme g n r est relativement mauvaise dans la mesure o de nombreuses optimisations ne peuvent plus tre effectu es Les constantes ne peuvent plus tre partag es par exemple ce qui augmente consid rablement le nombre d allocations dynamiques de m moire Les solutions retenues en pratique pour savoir si un symbole est constructeur sont moins ex tr mes et consistent g rer une table globale qui indique pour tout symbole s il est constructeur ou non Lorsqu on ajoute une r gle par exemple un symbole qui tait constructeur peut devenir d fini et inversement lorsqu on supprime une r gle il faut alors recompiler tous les modules qui utilisent ce symbole Ce compromis entre vitesse de compilation et vitesse d ex cution semble tre le prix payer pour permettre de g n rer un code relativement efficace Quant au deuxi me probl me qui consiste savoir comment appeler une fonction d finie dans un module externe il existe principalement deux solutions si le langage
103. m me symbole sont regrou p es dans un m me module On imagine alors comment appliquer les m thodes propos es dans le chapitre 8 pour compiler s par ment chaque module Chaque ensemble de r gles et chaque strat gie apparaissant dans un m me module peuvent tre compil s en une fonction du langage cible voir figure 10 1 Il reste cependant r soudre un probl me apparaissant au cours de la construction du terme r duit le terme est construit r cursivement et suivant le type de symbole construire symbole constructeur ou d fini de la m moire est allou e ou des appels de fonctions sont effectu s Mais comment savoir si un symbole est constructeur ou non et comment conna tre le nom des fonctions appeler Dans un cadre extr me de compilation modulaire il n est possible de savoir qu un symbole est constructeur que dans le module o le symbole est d fini Pour compiler un module donn une solution consiste consid rer que tous les symboles non locaux sont des symboles d finis rappelons qu un symbole d fini est un symbole apparaissant en t te d un membre gauche de 146 Chapitre 10 Architecture logicielle Compilation Reshuffling Compilation fs gt DE Compilation Fichiers Efix Fichiers Efix Fichiers C g n r s initiaux apr s reshuffling FIG 10 1 Cette figure illustre un sch ma de compilation modulaire qui consiste dans un premier temps r organiser
104. mult6 d d 0 0 d mult6 x 6 0 d mult6 x 2 1 d mult6 x 8 1 d mult6 x 4 2 d mult6 x 0 3 d mult6 x 6 3 d mult6 x 2 4 d mult6 x 8 4 d mult6 x 4 5 d mult6 x mult6 0 x mult6 1 x mult6 2 x mult6 3 x mult6 4 x mult6 5 x mult6 6 x mult6 7 x mult6 8 x mult6 9 x mult7 d d mult7 O x mult7 1 x mult7 2 x mult7 3 x mult7 4 x mult7 5 x mult7 6 x mult7 7 x mult7 8 x mult7 9 x mult8 d d O 0 d mult8 x 8 0 d mult8 x 6 1 d mult8 x 4 2 d mult8 x 2 3 d mult8 x 0 4 d mult8 x 8 4 d mult8 x 6 5 d mult8 x 4 6 d mult8 x 2 7 d mult8 x mult8 O x mult8 1 x mult8 2 x mult8 3 x mult8 4 x mult8 5 x mult8 6 x mult8 7 x mult8 8 x mult8 9 x mult9 d d 0 0 d mult5 x 5 0 d mult5 x O 1 d mult5 x 5 1 d mult5 x 0 2 d mult5 x 5 2 d mult5 x 0 3 d mult5 x 5 3 d mult5 x 0 4 d mult5 x 5 4 d mult5 x O O d mult7 x 7 0 d mult7 x 4 1 d mult7 x 1 2 d mult7 x 8 2 d mult7 x 5 3 d mult7 x 2 4 d mult7 x 9 4 d mult7 x 6 5 d mult7 x 3 6 d mult7 x A 5 Maude Obj 227 eq eq eq eq eq eq eq eq eq eq
105. ne d pendent pas de variables apparaissant sous un symbole AC du membre gauche le calcul d une seule solution du probl me de filtrage est suffisant pour appliquer la r gle Cette remarque nous a amen a d finir une sp cialisation de notre algorithme de filtrage pour ces r gles dites gloutonnes L id e consiste construire le graphe biparti compact de mani re incr mentale et ajouter une phase de v rification entre deux tapes chaque fois qu un sous terme s du sujet est filtr des ar tes sont ajout es vers les motifs p qui le filtrent Si ces motifs apparaissent dans des membres gauches p de r gles gloutonnes un test d existence de solution est appliqu aux BG correspondants pour en extraire une solution Lorsqu une solution est trouv e le processus de filtrage peut s arr ter et retourner la solution Lorsque tous les tests interm diaires de statisfaisabilit chouent la construction du graphe biparti compact se termine normalement Il reste alors extraire les graphes bipartis correspondant aux r gles non gloutonnes comme d crit au paragraphe 6 5 Pour construire le graphe biparti compact de l exemple trait au paragraphe 6 5 quatre tapes de filtrage taient n cessaires avant de commencer l extraction des BG En supposant que les sous termes du sujet soient filtr s de la gauche vers la droite l application du raffinement glouton entra ne le filtrage de seulement deux termes pour produire
106. ne r active pas la fonction mais r veille un point de choix pos avant l ex cution de la fonction si la fonction correspond un dc rj 7n une fois retourn le r sultat correspondant l application d une r gle r les points de choix ne sont pas enlev s imm diatement permettant ainsi la fonction de retourner d autres r sultats lorsqu un chec r active un point de choix pos pendant l valuation de r C est seulement apr s que le dernier r sultat calcul en appliquant r ait t retourn que tous les points de choix pos s pendant l ex cution de la fonction sont enlev s en utilisant la primitive cutClose si la fonction correspond un dk r1 rn une fois retourn s tous les r sultats corres pondant l application d une r gle r la r gle r 41 est essay e Lorsque le dernier r sultat calcul en appliquant rn a t retourn il n y a alors plus de point de choix pos pendant l ex cution de la fonction qui soit encore actif Ici encore un chec ult rieur ne r active pas la fonction mais r veille un point de choix pos avant l ex cution de la fonction Il devient maintenant possible d imaginer le sch ma de compilation d un ensemble de r gles r1 Ta Lorsque les membre gauches l1 ln sont des termes syntaxiques un automate de filtrage est calcul Lorsqu un motif l contient un symbole AC une structure de filtrage AC et des fonctions annexes
107. nil est un des 92 r sultats que l on peut obtenir en appliquant la r gle queensrule L exemple pr c dent illustre notre mani re uniforme de g rer le non d terminisme li au filtrage AC la s lection d une r gle et l valuation d une strat gie Elle consiste adopter un sch ma unique de compilation lorsque plusieurs possibilit s se pr sentent un point de choix est pos par setChoicePoint et lorsqu un chec se produit un fail est g n r pour explorer les possibilit s restantes En suivant cette approche compiler une suite d valuations locales revient les compiler s par ment en utilisant les sch mas d crits par les algorithmes 8 1 et 8 2 Algorithme 8 1 Compilation d une condition if cond 1 c valuation de la condition cond 2 si cz true alors 3 fail 4 finsi Algorithme 8 2 Compilation d une condition de filtrage where p S t t lt un r sultat de l application de la strat gie S sur t filtrage one to one de p vers t fail 1 2 3 si filtrage choue alors 4 5 finsi La compilation de la construction choose try lt valuation locale gt est un peu plus complexe chaque branche try lt valuation locale gt est compil e en utilisant les algorithmes 8 1 et 8 2 et des points de choix sont plac s entre chaque branche try pour permettre en fonction de la strat gie d application des r gles de retourner un seul r sultat tous l
108. nombre d tats en mettant en facteur certaines parties redondantes de l automate est pr sent dans Nedjah 1997 Nedjah et al 1997 Mais ici encore la proc dure charg e de reconna tre les tats mettre en facteur est particuli rement co teuse et complexe mettre en uvre De plus ces travaux n taient pas encore publi s lorsque nous avons d but notre recherche et c est pouquoi nous avons d velopp en parall le notre propre algorithme permettant de r duire le nombre d tats des automates Les autres approches telles que Sekar et al 1992 Christian 1993 Graf 1996 sont int ressantes mais ne sont pas forc ment adapt es l utilisation que nous voulons en faire Ces algorithmes permettent de construire efficacement des automates de filtrages mais ces auto mates ne sont pas d terministes ce qui dans l approche compil e est un handicap Ils sont g n ralement mieux adapt s la r alisation d outils de d duction automatique o l ensemble des r gles appel aussi base de connaissances est amen se modifier dynamiquement au cours des calculs Dans ce chapitre nous pr sentons la notion d automate de filtrage et nous nous int res sons particuli rement aux automates dits d terministes Pour un ensemble de motifs donn s la construction de tels automates conduit g n ralement calculer une cl ture de l ensemble de mo tifs ce qui augmente consid rablement le nombre d tats
109. non seulement de r duire le temps et la m moire n cessaires au calcul mais dans certains cas elle permet de rendre constante la consommation m moire d un calcul dont l espace m moire tait proportionnel au nombre d tapes de r criture effectu es Cet algorithme d analyse du d terminisme pr sent dans Kirchner et Moreau 1998 permet ainsi de mener bien un grand nombre de calculs qui n aboutissaient pas par manque de m moire Environnement de sp cification Un travail de mod lisation et de conception a aussi t fait pour repenser l architecture de l environnement ELAN et y int grer le nouveau compilateur capable de g rer les symboles Associatifs et Commutatifs Ce nouveau compilateur se veut ind pendant de l interpr teur afin de pouvoir tre utilis par d autres environnements tels que ASF SDF d velopp au CWI Amsterdam Cette volont d ouvrir notre syst me a donn lieu un change entre les deux instituts de recherche j ai t invit un mois par l quipe de Paul Klint afin de mettre en place un format d change et des outils permettant d int grer notre compilateur dans leur environnement de prototypage La conception du format d change donn lieu la r daction d un article pr sent dans Borovansky et al 1998 D un point de vue pratique les apports de cette th se regroupent principalement le d ve loppement de techniques d implantation et les nouvelles possibilit s
110. offertes par l existence du compilateur Implantation Parall lement l tude et la conception de nouveaux algorithmes de compilation j ai t amen implanter toutes les m thodes propos es pour exp rimenter et montrer leur int r t pratique La difficult d une telle r alisation logicielle r side non seulement dans la diversit et la complexit des algorithmes implanter mais aussi dans leur int gration et coop ration Le compilateur est crit en Java il lit une sp cification ELAN et g n re un programme crit en C qui est lui m me jumel une biblioth que de gestion du non d terminisme crite en assembleur Cette multitude de paradigmes de programmation rend difficile mais int ressant le passage de l un l autre il faut par exemple d crire et utiliser des structures de donn es Java pour g n rer des automates de filtrage syntaxiques ces automates tant implant s et utilisant des structures de donn es du langage C Comme mentionn pr c demment la principale difficult d une telle r alisation est relative l int gration des solutions imagin es il ne suffit pas d avoir une proc dure de filtrage AC effi 186 Conclusion cace pour proposer une m thode de normalisation performante il faut avoir une vue d ensemble et faire en sorte que l algorithme de filtrage permette de construire efficacement des substitu tions qui seront utilis es ensuite pour calculer et construire
111. op a6 O B 0 op a7 O B 0 op a8 O B 0 op p B B op m B B B 1 2 0 assoc comm B 1 2 0 assoc comm op and B B B 1 2 0 B B B 1 2 0 B B 1 0 op or op not op B B 1 0 op equal B B B 1 2 0 op succes B rewrite rules rule rule rule rule rule rule X B p X B p X B m X B m X B m X p X X b0 X b0 X X m X X X X b0 b0 X b1 X X B Y B Z B m pX Y Z p m X Z mY2 rule b2 p b1 b1 rule X B Y B and X Y p m mX X m Y Y A 1 Brute 195 p m Cf b2 m m X X Y p m b2 m m Y Y X m b2 m X Y rule X B Y B or X Y p m f b2 m m X X m Y Y p m m X X Y p m m Y Y X p m X Y p X Y rule X B not X p m b2 X b1 rule X B equal X X succes compile TRS compile produce statstics stat on q3 reduce equal and ai and a2 a3 not or not a1 or not a2 not a3 q4 reduce equal and and a1 a2 and a3 a4 not or or not a1 not a2 or not a3 not a4 q5 reduce equal and and a1 a2 and a3 and a4 a5 not or or not a1 not a2 or not a3 or not a4 not a5 q6 reduce equal and and and a1 a2 and a3 a4 and a5
112. param tr et du pr processeur pour engendrer automa tiquement les tables d addition et de multiplication Le programme peut ainsi fonctionner dans A 4 Elan 215 n importe quelle base module nat10 Base import builtinInt list builtinInt end sort Nat end operators global d Nat I Nat Nat mult_I Nat Nat _I 0 Base Nat Nat Nat AC 0 Nat Nat Nat AC prec Nat Nat fact Nat Nat fib Nat Nat 1 list builtinInt end rules for list builtinInt global 1 gt I _I 0 Base 1 nil end end rules for Nat x y Nat r builtinInt global 4 0 gt d end x d gt x end FOR EACH J builtiniInt R builtinInt B builtinInt SUCH THAT J listExtract elem 1 AND R I J I1 J Base Base AND B I J Base ANDIF J gt I I y J gt x y AR B end _I 0 Base 1 mult_O x gt d end mult_1 x gt x end mult_I d gt d end 216 Annexe Programmes utilis s pour effectuer les exp rimentations FOR EACH J builtinInt R builtinInt B builtinInt SUCH THAT J listExtract elem 1 AND R I J I J Base Base AND B 1I J Base mult_I x J gt CAR mult_I x B end _I 2 Base 1 x d gt d end x I y gt x y O mult_I y end _I 0 Base 1 FOR EACH B builtinInt SUCH THAT B Base 1 prec x 0 gt prec x B
113. pas celles qui seront utilis es demain Nous esp rons cependant que les id es d velopp es tout au long de cette 16 Il n est pas rare de manipuler des termes d passant la dizaine de m ga octets 192 Conclusion th se contriburont de pr s ou de loin l am lioration des outils de conception des syst mes informatiques Il existe aujourd hui une multitude de signaux forts qui nous rendent optimiste pour l avenir nous savons d finir des langages de sp cification ayant une grande expressivit ainsi que des bases th oriques solides nous savons d velopper des m thodes de preuve automatique pour v rifier des propri tes telles que la correction ou la terminaison d un programme nous savons construire des implantations efficaces de langages de haut niveau nous savons concevoir des environnements de sp cification permettant de prototyper v rifier tester et ex cuter C est s rement en int grant et en coordonnant ces diff rentes comp tences que nous r ussirons batir de nouveaux environnements de production logicielle et am liorer la qualit des futures g n rations de programmes En laissant notre imaginaire s vader ainsi cette th se peut sembler pr senter un travail inachev mais n est ce pas la tout son int r t Annexe Programmes utilis s pour effectuer les s experimentations Acl Brute te donne od a A de eee MER AE LE Park a eee ee LES 193 A2 Caml wick
114. permettant d ajouter ou d enlever efficacement des motifs de l ensemble reconnu par l automate Les algorithmes de construction d automates de filtrage non d terministes poss dent habituellement ces bonnes propri t s Par contre les auto mates ainsi construits sont souvent moins performants que leurs versions d terministes Dans le cadre d un compilateur de syst mes de r criture il est pr f rable d avoir des automates perfor mants m me si le temps de construction de ces automates est plus lev que celui des versions non d terministes En 1996 notre objectif n tait pas d inventer un nouvel algorithme mais d en implanter un pour l int grer au compilateur ELAN Apr s l tude de trois pr sentations diff rentes Graf 1991 Sekar et al 1992 Graf 1996 la version pr sent e dans la th se de Peter Graf 1996 nous a sembl tre la plus facile implanter simplement parce que les algorithmes permettaient de manipuler directement des automates sans avoir calculer des cl tures d ensembles de motifs au pr alable D un point de vue implantation il tait pr f rable de ne manipuler qu un seul type de donn es tel que les automates ou les arbres de filtrage Il s est av r apr s implantation que les automates obtenus ne donnaient pas les r sultats attendus certains motifs n taient pas reconnus alors qu ils filtraient effectivement le sujet L tude d taill e de l algorithme et des probl
115. points de choix pr sent es dans le chapitre 7 La fonction setChoicePoint permet de cr er un point de choix en sauvegardant l environnement d ex cution les variables 116 Chapitre 8 Compilation des r gles et des strat gies locales du programme C La fonction fail r active le dernier point de choix cr et restaure l environnement d ex cution Des primitives cutOpen et cutClose permettent de placer des mar queurs dans la pile des points de choix cutClose d truit tous les points de choix cr s depuis le dernier cutOpen Le contr le de flots du programme g n r est donc principalement g r par ces primitives de gestion du non d terminisme Afin de mieux comprendre la suite de ce chapitre il est pr f rable d avoir une vue d ensemble de la structure du code g n r Le compilateur ELAN g n re un programme compos d un en semble de fonctions qui prennent un terme clos s en argument et retournent un nouveau terme clos s correspondant l application d une r gle ou d une strategie chaque strat gie S est compil e en une fonction str_S s chaque ensemble de r gles r1 r apparaissant sous un dc one dc ou dk est compil en une fonction rule r1 T7n s l ensemble des r gles non nomm es est partitionn en fonction des symboles de t tes des membres gauches des r gles Pour chaque groupe de r gles non nomm es commen ant par un m me symbole f une fonction fun_f s e
116. pr d finies 156 11 4 Gestion de la m moire 158 11 5 Synth se orete Sem Gob PILE De Ne DIM ARTE 163 Lorsqu on r alise un compilateur il y a des constructions du langage source qui peuvent se compiler en des fonctions identiques quel que soit le contexte d utilisation Il faut alors choisir entre g n rer syst matiquement du code cible ou bien int grer la fonction dans une biblioth que de support d ex cution et l appeler lorsque c est n cessaire Consid rons la fonction printf du langage C par exemple Cette fonction n est pas compil e chaque fois qu une instruction d affichage est n cessaire mais elle fait partie d une biblioth que 1ibc qui est coupl e avec chaque programme g n r par le compilateur C Dans le cadre du compilateur ELAN nous avons d fini une biblioth que qui regroupe non seulement des op rations utilis es par le code g n r telles que des fonctions d affichage de construction de termes ou de r solution d un graphe biparti par exemple mais nous avons aussi pr d fini un certain nombre de types de donn es tels que les termes les graphes bipartis compacts ou les vecteurs de bits Ce chapitre pr sente les structures de donn es et les fonctions principales de cette biblioth que ainsi que les choix d implantation qui ont t faits 11 1 Structures de donn es Repr sentation des termes Les termes du premier ordre sont des o
117. pr f rable de regrouper les fonctions commen ant par un m me symbole de t te dans un 10 1 Compilation modulaire et compilation s par e 145 unique terme Efix Notons que le format Efix est suffisamment riche pour permettre de passer d une repr sen tation l autre le choix n est donc pas primordial Il est alors naturel de choisir la deuxi me repr sentation mettant en bijection chaque module ELAN avec un module Efix Cette solution est la plus facile mettre en uvre et elle a l avantage de conserver la structure du programme originel C est d ailleurs la solution qui a t retenue dans le projet ASF SDF par exemple G n ration modulaire la diff rence de nombreux langages de programmation imp rative logique ou fonctionnelle les langages de programmation par r criture permettent de r partir la d finition d une fonction dans plusieurs modules Il est en effet possible de d finir dans deux modules diff rents des r gles dont les membres gauches commencent par un m me symbole Et c est cette souplesse qui rend difficile voire impossible la compilation modulaire c est dire compiler un module sans acc der aux autres modules Comme nous l avons vu dans les chapitres 5 6 et 8 il faut pouvoir regrouper les d finitions des r gles dont les membres gauches commencent par des symboles identiques pour pouvoir utiliser des algorithmes de filtrage many to one et offrir une m thode de norma
118. ressant d observer ces diminutions d allocation et de cr ation mais il l est encore plus de comparer ces diminutions entre elles Nous appelons degr de compilation le rapport entre la diminution de m moire allou e et la diminution du nombre de symboles construits 12 1 1 Fib builtin C est probablement un des benchmarks les plus fr quents en programmation fonctionnelle il permet d valuer l efficacit des appels r cursifs et les op rations builtins sur les entiers Le programme ELAN s exprime en trois r gles de r criture fib 0 gt 1 end fib 1 gt 1 end fib n gt fib n 1 fib n 2 if n gt 1 end Les comportements de l interpr teur et du compilateur sont illustr s sur la figure 12 1 Nous nous trouvons ici dans une situation extr me o le compilateur ne fait quasiment aucune alloca tion dynamique de m moire aucun symbole de fonction n est construit au cours de l ex cution du programme compil L interpr teur a quant lui un comportement diff rent les termes de sorte builtinInt sont repr sent s en utilisant un op rateur d emballage pr sent dans 5 Celles ci tant ensuite valu es par un interpr te int gr au code g n r 6 La figure de droite illustre la cr ation d un symbole de fonction ceci parce que la valeur 0 se repr sente difficilement sur un graphique en chelle logarithmique 12 Ba Estimation du degr de compilation 167
119. savoir que lorsqu une r gle s applique les valuations locales sont calcul es puis le terme r sultant est construit Dans l implantation courante le membre droit de chaque r gle est partiellement pr construit en m moire il s agit d un terme qui n est pas compl tement bien form puisqu il contient des trous correspondant aux variables dont la valeur n est pas connue avant l application de la r gle Pour construire le terme r duit il suffit donc de dupliquer le guide pr construit en m moire et de compl ter les trous par les instances des variables qui sont calcul es par l tape de filtrage Une fois le nouveau terme construit avant d essayer de le r duire nouveau il faut lib rer l espace m moire qui tait occup par le terme pr c dent La gestion m moire est faite en utilisant des compteurs de r f rences ce qui permet de savoir si un terme est partag ou non en m moire lorsqu un terme n est plus utilis le compteur indique qu il y a z ro r f rence vers le terme et la place qu il occupe en m moire peut tre lib r e 2 4 Compilateur Un compilateur est aussi un outil permettant de donner un sens aux sp cifications en les rendant ex cutables la diff rence d un interpr teur un compilateur ne fait que traduire d un langage source en un langage cible L objectif n est plus d valuer les expressions du langage source en les interpr tant mais de les traduire en des
120. sentation cano nique est de la forme t f4c s1 8n Ici encore les sous termes s1 sn sont irr ductibles par construction Mais lorsqu on applique une r gle de la forme fac x y r x y il se peut que les instances des variables x et y ne soient plus irr ductibles consid rons la substitution o x gt fac s1 sk yr fac Sk 1 8n pour k gt 2 l instance de x peut tre r duite par la r gle fac x y r x y par exemple Il faut donc renormaliser les instances des va riables qui apparaissent directement sous un symbole AC du membre gauche avant de pouvoir les utiliser pour construire le terme r duit La plupart des syst mes tudi s Maude OBJ Brute n effectuent pas cette renormalisation au bon moment ce qui les am ne construire un membre droit de r gle r ductible Lorsque r x y est un terme non lin aire en x et que l instance de x est r ductible ces syst mes construisent une instance de r x y qui risque d entrainer de multiples renormalisations de x Il est difficile d tre plus pr cis ici simplement parce que le traitement des termes non lin raires d pend grandement des repr sentations choisies et des optimisations implant es Dans Maude par exemple suivant que les sous termes r ductibles sont partag s ou non le comportement sera diff rent Certaines implantations d corent syst matiquement l ex cution tous les termes pour savoir s ils sont r ductibles ou non Cett
121. set I set J gt set plus I J end p2 pi set I S1 S2 gt pl p2 set I S2 p2 S1 S2 end 214 Annexe A Programmes utilis s pour effectuer les exp rimentations m2 empty S gt end m2 set I set J gt set mult I J end m2 p1 set I S1 S2 gt pl m2 set 1 s2 m2 S1 S2 end singles gt 1 set s o set s s o set s s s o set s s s s o set five 6 set s five set s s five set s s s five set s s s s five set ten 11 set s ten set s s ten set s s s ten set s s s s ten set fifteen 16 set s fifteen set s s fifteen set s s s fifteen set s s s s fifteen set plus five fifteen end doubles gt m2 singles set s s o end triples gt m2 singles set s s s o end all gt pi singles p1 doubles p1 triples p1 set twentyfive pl set fifty set o end finish gt p2 pit doubles set fifty p2 all all end end end A4 4 Fib_builtin module fib_builtin import global builtinInt end operators global fib builtinInt builtinInt end rules for builtinInt n builtinInt global fib 0 gt 1 end fib 1 gt 1 end fib n gt fib n 1 fib n 2 if greater_builtinInt n 1 end end end A4 5 Nat10 Notons ici l utilisation d un module
122. similaire celle pr sent e pr c demment Consid rons par exemple la r gle et la strat gie suivante rules for Term R1 F x y gt g x y end end strategies for Term S1 gt dk R1 end end o F est un symbole AC et g un symbole syntaxique L application de la strat gie S1 sur le terme s F a b par exemple retourne l ensemble des formes normales atteignables g a b 8 2 Solution retenue pour ELAN 115 et g b a Lorsqu on consid re l application de la r gle R1 sur le terme s il faut d une part trouver un filtre de F x y vers s F a b o x a y b par exemple pour pouvoir appliquer la r gle mais il faut aussi m moriser l tat courant du probl me de filtrage pour pouvoir y revenir plus tard et extraire d autres solutions o x b y a par exemple C est ce type de situation qui nous emp che de repr senter un probl me de filtrage AC uniquement par des structures de contr le On pourrait naturellement proposer deux sch mas de compilation diff rents suivant qu il s agit de r gles nomm es ou non Mais les algorithmes de compilation mis en uvre tant relativement complexes nous avons opt pour une solution inverse qui consiste partager au maximum les algorithmes et les structures de donn es pour compiler aussi bien les r gles non nomm es que les r gles nomm es 8 2 Solution retenue pour ELAN Lorsqu on tudie le langage ELAN et plus pr cis ment son langage
123. subterm 1 substitution 1 TERM_ALLOC node_F code_F term_add_cf_term_color node_F substitution 0 color1 term_add_cf_term_color node_F node_h color2 res normalise_F node F goto end else match_fail res subject end return res Programme 8 1 Cette figure montre comment une r gle comportant un motif AC est compil e apr s une tape de filtrage syntaxique triviale dans cet exemple le graphe bi parti compact est construit par l intruction MS_ init ms match_subterm_F pattern_list_F Puis pour un motif s lectionn fac z f y g b f a x dans cet exemple la substitution associ e une solution du probl me de filtrage est construite par l instruction substitution_build subject ms substi tution variable_extract_F 1 Comme d crit dans ce paragraphe un test if asMonoColor substitution 0 est effectu pour d terminer si l instance est r ductible ou non La derni re partie de cette fonction consiste construire le terme r duit et calculer sa forme canonique en utilisant term add_cf_term_cotor Cette derni re fonction correspond une implan tation de la fonction mcf o il est possible de donner une couleur aux termes ins r s sous le symbole AC 8 6 Compilation des strat gies 129 1 tout comme dans l algorithme pr sent au paragraphe 8 3 cette tape permet de retourner un r sultat et c est ce moment pr cis qu il faut se soucier
124. the embedded environment emb e is the environ ment in which the function associated to e is called 106 Chapitre 7 Gestion du non d terminisme In the previous example we have e emb e3 2 e emb e2 emb e4 e emb e1 is not defined Let us define for e1 the function that returns the minimum element of the inverse image of Env_at Min e min Env_at7 e From a practical point of view 7 is a program s address that contains an assembly instruc tion ej is a stack frame associated to the current executed C function and Min e is the first executed instruction when entering a C function Let lt be a total ordering on addresses such that the base pointer bp is the minimum Let l1 l2 be two addresses of the system stack If l lt l2 ln is said to be closer to bp than l2 When l lt lg li lo is the memory block between those two addresses 7 4 4 Advanced algorithm for setChoicePoint and fail The goal of the algorithm sketched in Section 7 4 2 is to minimise the number of saved stack frames The main idea consists in implementing a special handle function which saves the top stack frame of the system stack Each time a nondeterministic function returns to the caller function the last jump is redi rected to this handle function return addresses of nondeterministic functions are successively first by setChoicePoint and then by the handle function itself modified to point to this hand
125. the stack pointer and caller s frame pointer rego load the frame pointer of the previous memory block regs 4 into regs if reg3 rego then the return address is already into the trail The link to the previous block has to be followed load the old return address regs 3 into rega load the beginning of the previous block regs 2 into regs end if push regs and reg and the endFrame code into the trail update the trail pointer modify the caller s return address to the save frame handler saveFrame The state of the trail stack after executing saveFrame is described in Figure 7 3 Let us notice that top and bottom parts of the zoom stack have similar structures values are saved in the same order The following pseudo assembly code describes the implementation of fail 7 5 Imperative programming with backtracking 109 Algorithm 7 3 fail load the trail pointer into reg recoverFrame load the current code reg2 1 if it is a endReg code then branch to returnInCP end if restore the stack pointer reg gt 5 restore the frame pointer reg2 4 compute the saved frame size and restore it branch to recoverFrame returnInCP update the trail pointer restore saved registers including the return address register return the value 1 7 4 6 Portability The two functions setChoicePoint and fail are implemented with a 200 lines assembly library This could be a source of difficulty for portability However
126. two main ap plications prototyping algebraic specifications of user defined data types and theorem proving related to program verification In this context we are interested in nondeterministic computa tion and deduction Term rewriting is nondeterministic in the sense that there may be several reductions starting from one initial term and producing different results Rewriting logic Meseguer 1992 gives a logical background and raises new interesting problems concerning the efficient implementation of nondeterministic rewriting which needs backtracking This is similar to the implementation of logic programming languages but a significant difference is the fact that rewriting rules can be applied inside the terms Moreover the formalism used to prune the search space is different from that of logic programming languages In this paper we present a new technique for compiling the specific control flow in programs during the backtracking Our method preserves the efficiency of deterministic computations and is of more general interest it could be used in implementations of constraint solvers impera tive languages with backtracking such as Alma 0 Partington 1997 Apt et Schaerf 1997 the WAM Warren 1983 Ait Kaci 1990 and Prolog like languages A first implementation of our techniques has been done by Marian Vittek in 1996 The experimental results presented in Vittek 1996 show that nondeterministic rewriting can be implemented as efficient
127. un art r serv Un des objectifs des chercheurs travaillant dans le domaine des sp cifications alg briques est d offrir aux informaticiens un moyen d exprimer clairement les comportements attendus d un logiciel D un point de vue purement th orique seule la d finition du langage de sp cification est n cessaire pour tre capable d crire des sp cifications Il est cependant tr s difficile voire im possible d crire des sp cifications correctes lorsqu aucun outil informatique n est disponible comment crire des sp cifications de haut niveau si les op rations l mentaires de bas niveau doivent tre sp cifi es chaque fois Comment v rifier que la syntaxe utilis e est bien correcte Comment exp rimenter le comportement des algorithmes s ils ne peuvent pas tre ex cut s Comment rendre ex cutables et utilisables les sp cifications crites C est pr cis ment le r le d un environnement de sp cification que de mettre disposition du programmeur des outils capables de l aider crire des sp cifications Le cadre logique ELAN dispose ainsi de quatre composants principaux dont le but est de r pondre aux questions pr c dentes la biblioth que met disposition du programmeur des l ments largement r utilisables Le parseur permet de v rifier la syntaxe des sp cifications L interpr teur est un outil inter actif permettant d tudier le comportement des algorithmes Le compilateur est u
128. un format modulaire tel que Efix et seul le format REF est disponible C est pour ces diff rentes raisons que le compilateur n est pas encore modulaire Nous avons cependant adopt une approche hybride qui permet de r duire le temps de compilation tout en ayant une vue globale du programme compiler chaque tape de compilation l ensemble du programme REF est engendr et compil mais le code C g n r est relativement stable d une compilation l autre Et lorsqu une r gle non nomm e est modifi e par exemple seul le module C correspondant la d finition de la r gle a besoin d tre compil L approche hybride d ELAN ne fait pas figure d exception Il est en effet connu lorsqu on r alise un compilateur qui engendre du langage C que le temps de compilation du langage source vers le langage C est souvent court compar au temps n cessaire pour compiler les fichiers C g n r s C est pourquoi de nombreux compilateurs ont une approche similaire qui consiste avoir une premi re phase de compilation globale pour permettre un grand nombre d optimisa tions et une seconde phase de compilation s par e pour r duire le temps de compilation On peut par exemple citer le compilateur GNU Eiffel Colnet Coucaud et Zendra 1998 Zendra Col net et Coucaud 1998 qui est s rement un des compilateurs Eiffel les plus rapides et qui g n re des ex cutables d une grande qualit gr ce son approche hybride lui p
129. x mult6 9 x 4 5 d mult6 x mult7 d d mult7 O x O mult7 x mult7 1 x 7 mult7 x mult7 2 x 4 1 d mult7 x A 3 Cime 209 mult7 3 x mult7 4 x mult7 5 x mult7 6 x mult7 7 x mult7 8 x mult7 9 x mult8 d mult8 0 x mult8 1 x mult8 2 x mult8 3 x mult8 4 x mult8 5 x mult8 6 x mult8 7 x mult8 8 x mult8 9 x mult9 d mult9 0 x mult9 1 x mult9 2 x mult9 3 x mult9 4 x mult9 5 x mult9 6 x mult9 7 x mult9 8 x mult9 9 x O x 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x KO OX x X X X X KF KF x GES EE OK fib d 1 fib 1 d 1 2 d mult7 x 8 2 d mult7 x 5 3 d mult7 x 2 4 d mult7 x 9 4 d mult7 x 6 5 d mult7 x 3 6 d mult7 x d O mult8 x 8 mult8 x 6 1 d mult8 x 4 2 d mult8 x 2 3 d mult8 x 0 4 d mult8 x 8 4 d mult8 x 6 5 d mult8 x 4 6 d mult8 x 2 7 d mult8 x d O mult9 x 9 mult9 x 8 1 d mult9 x 7 2 d mult9 x 6 3 d mult9 x 5 4 d mult9 x 4 5 d mult9 x 3 6 d mult9 x 2 7 d mult9 x 1 8 d mult9 x O x y O x y O x y O x y O x y O x y O x y O x y O x y O x y d 1 d y 3 mult2 y mult3 y mult4 y mult5 y mult6 y mult7 y mult8 y mult9 y
130. y3 gt r x1 22 73 where e x2 y2 where e z3 y3 6 9 Synth se 97 L int r t de cette derni re transformation tant d introduire des probl mes de filtrage syn taxiques dans les condtions de filtrage et de profiter au maximum des algorithmes de compilation du filtrage AC pr sent s dans ce chapitre Consid rons maintenant la r gle de r criture suivante solve simplify z1 Uac egac e x2 e x3 r x1 72 3 Le membre gauche commence par un symbole syntaxique et le sous terme simplify x1 UAC eqac e x2 e x3 n est pas dans C2 ce qui nous am ne appliquer le deuxi me sch ma de transformation propos consid rons la fonction d abstraction A e x2 y2 e x3 y3 Le membre gauche de la r gle suivante appartient d sormais la classe C2 solve simplify z1 Uac eqac y2 y3 r x1 2 2 3 where e x2 y2 where e x3 y3 Il est int ressant de noter qu au cours de l valuation d une condition de filtrage seul un al gorithme one to one est n cessaire Lorsqu un motif uj contient des symboles AC nous utilisons une proc dure de filtrage g n rale telle que celle pr sent e au paragraphe 6 2 et d crite en d tail dans Eker 1995 Cela signifie que dans le pire des cas notre algorithme de filtrage AC many to one sert effectuer une pr s lection fond e sur la couche syntaxique sup rieure des membres gauches de r gles et que les probl mes de filtrage AC sont r solus par un algor
131. 2 Compte montant M2 M gt if M1 gt M L ensemble des objets existants est g r de fa on interne en utilisant un op rateur associatif commutatif avec l ment neutre ACI Une des particularit s de Maude est de permettre d appliquer efficacement des r gles modulo plusieurs th ories savoir les diff rentes combinaisons des axiomes d associativit de commu tativit d identit et d idempotence Une partie des techniques d implantation utilis es sont pr sent es dans Eker 1996 Une autre originalit du syst me Maude est d exploiter la r flexivit de la logique de r cri ture Clavel et Meseguer 1996 Clavel 1998 Partant du fait qu il existe une th orie de r criture universelle UY permettant d interpr ter toutes les autres th ories TR TRtit t ssi UE TRA TRE o TR t Y sont les codages respectifs de la th orie TR et des termes t dans la th orie universelle U Le syst me Maude propose deux sortes l mentaires Term et Module permettant de repr senter ces codages t Term et TR Module et des primitives de conversion entre un terme t s et sa repr sentation cod e t Term La th orie universelle Y peut alors tre int gr e au syst me sous forme d un noyau r flexif D un point de vue utilisateur seules deux primitives principales sont accessibles meta reduce Module Term Term meta apply Module Term Qid Substitution Int Term La premi re primitive p
132. 2 8 gs oe 100 Sg ee 1000 amp g 8 50 SE 10 i TE BE 7 L500 8 1000 O me E ae 8 Interpr teur 10 S e 1000 200 2 ui 5 SE De n SE S RE 10 EE T 104 2 S 7 100 Be E E 2 a 3 8 0 E 2 4 6 8 amp g 10 12 14 16 S z calcul de power Set n fi utilisation de Nat10 pour calculer fib n Fic 12 8 valuation des performances de Set et Nat10 Les r sultats pr sent s sur les figures 12 7 et 12 8 montrent clairement l int r t des techniques de compilation de la normalisation AC l acc l ration offerte par le compilateur est souvent su p rieure 200 Notons aussi que cette acc l ration augmente en fonction de la taille du probl me r soudre 12 2 4 Minela Cette exemple pr sent dans le chapitre 9 correspond l implantation d un m ta interpr teur ELAN crit en ELAN dont le fonctionnement est d crit dans Kirchner et Moreau 1996 Les r sultats de la figure 12 9 illustrent l utilisation de ce m ta interpr teur pour calculer les n premiers nombres premiers ainsi que le terme de preuve associ au calcul Ici l acc l ration normalisation Pour calculer le 16i me nombre de Fibonacci la version 1 3 de CiME appliquait 10 599 r gles de r criture en 4h30 La nouvelle version r sout maintenant le probl me en approximativement 5 minutes sur une m me architecture 12 2 valuation des performances 175 En
133. 2 945 140 A O E 2 n O o 5 2 E 2 B a gt a E 5 5 828 695 3 z amp Il est int ressant de constater que la diminution du nombre de points de choix cr s dy namiquement est proportionnelle la diminution du nombre de points de choix g n r s statiquement et que la vitesse d ex cution s en trouve inversement am lior e L utilisation m moire reste constante parce qu elle correspond dans les deux cas aux 14 g n rateurs utilis s pour num rer les diff rentes configurations fib est un programme dans un style purement fonctionnel qui calcul le 33 nombre de Fibonacci Une fois encore c est un test typique pour valuer les performances des langages fonctionnels 140 Chapitre 9 Analyse du d terminisme 3 34 217 317 g 1Kb T 18 047 109 ai O F a O ts 5 z fe E E E z E T 97 cu A D 0 0 0 Kb n Lorsque l analyse du d terminisme est activ e le programme g n r ne contient plus au cune instruction setChoicePoint ce qui limine tout risque de retour arri re C est pour quoi la m moire n cessaire pour sauver les environnements est r duite 0 Kb On peut remarquer que la vitesse d ex cution s en trouve am lior e plus de 18 millions de r gles appliqu es par seconde Ces r sultats exp rimentaux montrent clairement que l analyse du d terminisme permet de r duire le nombre de points de choix pos s l ex cution tout en am liorant la vitesse g
134. 4 Les sous termes du sujet non captur s s j Z sont eux aussi partitionn s et associ s aux variables x et x2 comme d crit pr c demment Compilation de la construction des substitutions Rappelons que notre objectif est de r aliser un compilateur et que nous essayons dans la mesure du possible de traduire les structures de donn es de l algorithme en des structures de contr le du langage cible pour r duire au minimum le nombre d allocations m moire effectu es au cours de l ex cution du programme g n r Dans le cas syntaxique le fait d avoir au plus une substitution construire rend facile leur construction il suffit d utiliser l automate de filtrage et d associer chaque tat de l automate une variable du langage cible permettant de m moriser les termes lus lorsqu une r gle de transition d tats 6 e w gt s e une ar te tiquet e par un w est utilis e Dans le cas AC il peut y avoir plusieurs instanciations diff rentes pour une m me variable du probl me de filtrage consid r Il ne devient donc plus possible de r server un nombre fixe d emplacements pour m moriser les instances des variables travers es par l automate de filtrage Il faudrait cr er dynamiquement une structure de donn es capable de m moriser toutes les instances possibles mais cela deviendrait trop co teux De plus la construction d une telle structure dynamique n est pas n cessaire lorsque la p
135. 50 982 a O F aie O e Lao a i B 3 297 920 1 Kb a Notons que sans l optimisation la compl tion d un programme semble n cessiter un besoin de m moire proportionnel au nombre de points de choix cr s l ex cution Dynamic CP Alors que ce besoin de m moire devient constant 1 Kb lorsque l analyse du d terminisme est activ e minela est un mini interpr teur ELAN crit en ELAN Il permet d ex cuter un programme compos uniquement de r gles conditionnelles Pour un terme clos et un programme don n s son ex cution permet une forme normale et un terme de preuve associ la d rivation 511 887 312 g 3Kb 543 030 on Ps a O o 4 b D v E gt 2K gt 311 775 a 3 WN 5 i E E a A 36 770 E Ici l acc l ration est inf rieure celles des autres exemples mais c est principalement d la nature de l application minela simule de la r criture non d terministe et manipule de nombreux termes qui comportent chacun plusieurs milliers de symboles La proportion de temps pass dans la gestion des points de choix devient ainsi plus petite devant le temps pass g rer la m moire par exemple d o une acc l ration moins grande queens est une implantation du probl me des n reines qui cherche une solution pour n 14 C est galement un test classique pour valuer les performances d un langage de program mation logique 29 a 1 855 427 g 2Kb 2Kb A
136. 7 are defined similarly The program execution and watch points are illustrated in Figure 7 2 When executing a function there is a corresponding environment called ej that contains information about the current executing function This information is available through different functions e fp to get the frame pointer value i e the address which indicates the beginning of the stack frame e ra e to get the return address value i e the address from the program to which the program counter should be restored e local variables are also saved in an environment To each watch point 7 is associated an environment i and j are not equal in general because several watch points may be associated to a given environment The notion of envi ronment and the correspondences between 7 and are illustrated in Figure 7 2 A stack pointer value sp r which is the current top of the system stack is associated to each watch point 7 Let us define Env_at as the surjective function from 71 7m to e1 n that maps each 7 to its environment e The set 71 7m is totally ordered by indices values Ti At Fae In the previous example we have e Env_at r Env_at t5 Env_at t7 e Env_at 72 Env_at t4 e Env_at r3 63 e Env_at 76 4 Environments are organised as in a block structure language thus the notion of embedded environment can be defined for a given j
137. AC du membre gauche Pour ces cas particuliers mais fr quents nous pouvons tirer parti de la structure de graphe biparti compact pour proposer un raffinement de l algorithme de filtrage l image de Valgorithme g n ral la structure de filtrage AC est utilis e pour d terminer des couples de motifs et de termes clos mais l originalit de ce nouvel algorithme est d exploiter au maximum les automates de filtrage syntaxique et d viter la construction d une multitude de graphes bipartis Consid rons un sujet s fac s ap donn et un ensemble de motifs P1 Pn de la forme pi JAC Pi Pim Pn fac Pn 1 Re Pn mn o pour kj tel que 0 lt kj lt mj tous les p 1 pj 4 sont des variables et aucun des p x 1 Pj m n est une variable Plut t que de construire un graphe biparti BG associ chaque motif p ce qui peut obliger a filtrer n fois les sous termes du sujet pour viter la construction simultan e des graphes BG BG nous construisons un graphe biparti compact unique qui contient les informations suffisantes pour pouvoir reconstruire n importe quel BG L id e consiste regrouper les pj et a d finir le graphe biparti compact CBG Vi UV2 E dont les sommets sont Vi 8 8p Vo Dn 1 lt j lt n kj 1 lt k lt m et dont les ar tes E sont les paires p 4 telles que Pjk filtre le terme clos Pour donner une meilleure intuition du processus no
138. ATerm AFun Ann ATerm 0 AFun ATerms Ann ATerm lt gt ATerm Ann ATerm end operators end module C est en instanciant la sorte AFun que des versions sp cifiques de ce formalisme peuvent 3 4 Vers une nouvelle architecture 47 tre cr es La version d finie pour ASF SDF s appelle asFix et la version pour ELAN s appelle Efix la diff rence du format REF ce nouveau format est compl tement fond sur la syntaxe abstraite du langage ELAN Il devient alors ind pendant de toute implantation et en particulier des structures de donn es du parseur Consid rons par exemple la fa on dont un module ELAN est repr sent dans ce nouveau format Partant de la syntaxe abstraite lt Module gt module lt FormalModuleName gt lt Imports gt lt SortDefinition gt lt OperatorDefinition gt lt StrategyDefinition gt lt FamilyOfRule gt lt FamilyOfStrategies gt Il faut noter que les crochets et ne d finissent pas des param tres optionnels mais des listes de param tres comme d crit par le formalisme ATerms L implantation ELAN correspon dante est la suivante operators global module End FormalModuleName ImportsOpt SortDefinitionOpt OperatorDefinitionOpt StrategyDefinitionOpt ListOfFamilyOfRules ListOfFamilyOfStrategies Module La sorte Module doit ici tre vue comme une instanciation pour ELAN de la sorte AFun d fini
139. ATerms 46 ELAN 11 format asFix 46 d change 35 40 Efix 46 REF 40 forme aplatie 31 canonique 82 normale 14 Futatsugi K 2 garbage collector voir ramasse miettes g n rateur 120 g n ration modulaire 145 ramasse miettes 162 gestion de la m moire 32 158 de d termi nisme 99 glouton rafinement 93 GNU C 102 Eiffel 147 G del K 1 grammaire hors contexte 11 signature 11 graphe biparti 83 compact 88 repr sentation d un 154 Heering J 2 h ritage des classes 147 injection symbole d 157 instance r ductible 126 instanciation d une variable 124 int gration d un composant 47 du compila teur 40 intelligence artificielle xiii int r t des symboles AC 23 interpr teur d ELAN 30 d finition d un 53 inefficacit de I 31 Janus 102 Jaoui A xiii Jouannaud J P 2 jumpNode 71 automate de filtrage avec 75 KL1 102 Klint P 2 35 label d une r gle 16 lac de Paladru xiii langage assembleur 15 99 C 102 cible 54 143 d implantation 57 143 de haut ni veau 15 de sp cification 11 esprit du 18 fa on d implanter un 54 imp ratif 109 machine 55 m ta langage de stra t gie 30 micro code 55 portable 109 source 54 143 Larch Prover 1 lecture bande de 65 73 t te de 63 leftmost innermost 16 leftmost outermost 16 lex me Lexem 149 hybride approche d ELA
140. En effet une des originalit s d ELAN est de permettre une s paration claire entre les fonctions qui manipulent les donn es appel es r gles de r criture et les fonctions qui contr lent l application de ces fonctions appel es strat gies Nous pouvons ainsi d finir des r gles qui permettent d extraire la t te et la queue d une liste et d finir une strat gie qui d crit comment appliquer ces r gles afin d obtenir l ensemble des l ments qui composent la liste Dans la phrase pr c dente est ce un hasard que le mot ensemble soit en italique En fait non c est parce que nous sommes en mesure d extraire tous les l ments d une liste mais nous ne savons pas encore comment repr senter cet ensemble de r sultats Nous pourrions m moriser les l ments dans une nouvelle liste mais cela ne nous avancerait pas beaucoup Supposons que nous voulions appliquer un traitement chaque l ment qui compose la liste faut il combiner la fonction d extraction avec le traitement Ici la notion d ensemble de r sultats n a pas besoin d tre explicitement repr sent e elle fait partie int grante du m canisme d valuation des strat gies Comme nous Vavons vu pr c demment d un point de vue th orique une strat gie retourne un ensemble de r sultats Mais d un point de vue pratique les r sultats sont retourn s la demande ce qui signifie qu une strat gie commence par retourner un seul r sultat si elle n
141. Forbach de Lyon de Libourne et d ailleurs J ai essay de me souvenir de tous ceux qui ont contribu cette th se mais je n ai sans aucun doute pas r ussi les citer tous Je dois plus ma famille qu toute autre personne Elle m a guid encourag et soutenu Et surtout elle a toujours cru en moi C est elle que cette th se est d di e Pierre Etienne Moreau Nancy Juillet 1999 vi Sommaire Avant propos Introduction I Environnement de sp cification 1 Langage de sp cification ELAN 1 1 1 2 1 3 1 4 1 5 1 6 Grammaire et signature Termes et r gles de r criture conditionnelles Strat gies d application aooo a R gles et strat gies Op rateurs Associatifs et Commutatifs Modularit 2 wasg Lu du os Boe Gee Dans fhe a na te nue ue 0 2 Outils pour sp cifier et programmer 2 1 2 2 2 3 2 4 2 5 Bibliotheque e soap 4 a das La us a dau bas dus aies a Re Parseur 244 2 4b de Don Ge de Ree E dt RD ed dd mi du Interpr teur COMPLALEUT tsua aia Lt Re bien por US AH a ee ed wae is Comparaison avec d autres environnements de sp cification 3 Plateforme de prototypage 3 1 3 2 3 3 3 4 3 9 Format d change Cr ation d outils
142. Il est en particulier impossible de coder dans le format REF les noms des variables utilis es dans les sp cifications originelles Cela vient du fait que les noms des variables sont perdus gt lors des phases d analyse lexicale et syntaxique du parseur ELAN Tout en conservant l id e d avoir un format interm diaire cela nous a amen d finir une nouvelle structure plus modulaire de ce format d change Profitant de l exp rience du groupe ASF SDF et de la venue Nancy de Mark van den Brand nous nous sommes inspir s du format asFix pour d finir le format Efix Ces deux formats reposent sur les notions de termes annot s ATerms et de syntaxe abstraite du langage ATerms est un formalisme g n rique qui permet de repr senter des informations structur es telles que des arbres syntaxiques L un des principaux int r ts de ce formalisme est d tre lisible par un humain et facilement manipulable par un ordinateur La syntaxe concr te d ATerms se pr sente en ELAN de la mani re suivante module aterm import global int string end sort ATerms ATermList AFun ATerm Ann end operators global ATerm ATerms ATerm ATerms ATerms C ATermList ATerms ATermList int AFun string AFun ATermList ATerm AFun ATerm AFun ATerms ATerm lt Q gt ATerm ATerm gt N123 125 ATerms Ann D finition de P ATermList Ann
143. N 147 ramasse miettes lexicale analyse 29 162 Icon 102 impact de l analyse du d terminisme 136 sur la s lection 136 implantation d un langage 54 de l interpr teur 31 de setChoicePoint et fail 103 d taill e 107 par Marian Vittek 56 159 par Steven Eker 31 incr mental algorithme de construction d arbre 67 calcul d une cloture 69 index moi m me 245 inefficacit de l interpr teur 31 inf rence du d terminisme 134 du d mode 134 informatique xiii lien vers lep re 76 lin aire terme semi 83 liste module en ELAN 17 param tr en ELAN 24 longueur d une chaine 62 machine abstraite 45 d finition d une 53 machine de Turing arr t d une 16 many to one approche 84 filtrage 61 marquage ramasse miettes avec 160 math matique xiii Maude 2 pr sentation 33 McCarthy J 1 membre gauche r utilisation du 124 m moire automate a 72 gestion de la 32 158 Mercury 102 248 Index m ta choix 58 conception 53 environnement 35 langage de strat gie 30 minela 174 mini ELAN 139 174 ML 1 mode de d terminisme 133 modularit 23 de la compilation 143 du par sing 144 module builtin 27 liste en ELAN 17 para m tr 24 r organisation des 145 modulo AC galit 22 moi m me 247 mot cl if 15 filtrage sur un 61 motif classe de 88 ensemble de 63 extension l ensemble
144. Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat x d x O 0 CO O 0 CO 0 O O CO i Ci 4 1 1 4 4 1 1 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 4 4 4 4 4 4 5 0 1 2 3 4 5 6 7 8 9 4 2 3 4 5 6 7 8 9 2 4 5 6 7 8 9 3 4 5 6 7 8 9 4 5 6 7 8 9 5 y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y O 1 2 3 4 5 6 7 8 9 2 3 4 5 6 7 8 9 O 4 5 6 7 8 9 O 1 6 7 8 9 O 1 2 8 9 O 1 2 3 La II a MIL a IE a IE a II A I a A ai La D INI a pd DJ a pd i La DT D pd DJ pd pd 4 pd Ca pd D RR La D D Op pd d d d d d d d d d d d d
145. O x bO m x bO bO m bi x x m x bl x m x m x x x m m x x x m p x y z m x y m y x m y m x z m x m y z b2 p bi b1 and x y p m m x x m y y p m b2 m m x x y p m b2 m m y y x m b2 m x yo or x y p m b2 m m x x m y y p m m x x y p m m y y x p m x y p x y not x p m b2 x bl Jn x p m x z m y z 230 Annexe A Programmes utilis s pour effectuer les exp rimentations qi and and al a2 and a3 a4 4q2 not or or not ai not a2 or not a3 not a4 equal x x success end_of_list list sos qi end_of_list A 7 Redux 231 A 7 Redux A 7 1 Bool3 DATATYPE P SORT Prop CONST VAR al a2 a3 a4 a5 a6 b0 b1 success Prop x y z Prop OPERATOR Prop gt Prop Prop Prop gt Prop Prop Prop gt Prop Prop Prop gt Prop Prop Prop gt Prop Prop Prop gt Prop 2 gt Prop Prop q2 gt Prop q3 gt Prop D TD B Oo pr ie l v NOTATION m p n a o e FUNCTION THEORY m p AC AXIOM 1 2 3 4 5 6 7 8 9 p x p x x bO p b0 x x m b1 x m x m x x x m bO x bO m p x y z p m x z m y z b2 p b1 b1 a x y pC m m x x m y y p m b2 m m x x y p m b2 m m y y x m b2 m x y o x y p m
146. O Donnell pour le comparer d autres fa ons d implanter un langage base de r criture C est en 1989 que le premier interpr teur pour ASF SDF fut r alis et c est en 1993 qu un premier compilateur ASF2C vit le jour Le projet ASF SDF s est particuli rement int ress aux m canismes de d finition de syntaxe d un langage la g n ration automatique d environnements de d veloppement et aux techniques de parsing modulaires et incr mentales Compilateur Bordeaux EQC Mingus gt Interpr teur i Chicago EQI 2 Nouveau Compilateur Compilateur EQI Oxford Compilateur De D ue OBJ 3 Menlo Park OBJ 0 OBJ 1 OBJ 2 OBJ 3 ae Maude i Interpr teur Le Prototype Ishikawa CafeOBJ Brute TRAM Nanc interpr teur Compilateur y v e e a Nancy Orsay wee ELAN Prototype re Compilateur gt Orsay ECOLOG Environnement Nouveau Amsterdam ASF SDF EPIC Compilateur Compilateur ASF2C 1975 77 T9 80 83 8 87 89 90 93 94 95 98 99 Fic 1 Cette figure tente de retracer les d veloppements logiciels majeurs effectu s dans le domaine des langages de programmation fond s sur la logique de r criture Cette figure n est videmment pas exhaustive mais permet de suivre l volution des principaux syst mes EQI mis part il est int ressant de constater que la plupart des projets ont commenc tardivement l tude des techniques de compilation mais que l at
147. SA Vol 4 Electronic Notes in Theoretical Computer Science pp 225 244 Diaconescu R et Futatsugi K 1996 Logical Semantics of CafeOBJ Technical Re port IS RR 96 0024S Japan Advanced Institute of Science and Technilogy JAIST Ishi kawa Japan URL http ldl www jaist ac jp 8080 cafeobj abstracts Logical Semantics of CafeOBJ html 238 Bibliographie Diaz D 1995 tude de la compilation des langages logiques de programmation par contraintes sur les domaines finis le systeme clp FD Th se de Doctorat d Universit Universit d Orleans France Didrich K Fett A Gerke C Grieskamp W et Pepper P 1994 OPAL Design and imple mentation of an algebraic programming language in J Gutknecht ed Programming Lan guages and System Architectures PLSA 94 Vol 782 of Lecture Notes in Computer Science Springer Verlag pp 228 244 Doligez D 1995 Conception r alisation et certification d un glaneur de cellules concurrent Th se de Doctorat d Universit Universit Paris 7 France Doligez D et Leroy X 1993 A concurrent generational garbage collector for a multithrea ded implementation of ml Proceedings of the Symposium on Principles of Programmings Languages ACM ACM pp 113 123 Domenjoud E 1991 Solving systems of linear diophantine equations An algebraic approach in A Tarlecki ed Proceedings 16th International Symposium on Mathematical Founda tions of Computer Scienc
148. Selected Papers Vol 1589 of Lecture Notes in Computer Science Springer Verlag pp 168 182 Klint P 1993 A meta environment for generating programming environments ACM Tran sactions on Software Engineering and Methodology 2 176 201 Knuth D E et Bendix P B 1970 Simple word problems in universal algebras in J Leech ed Computational Problems in Abstract Algebra Pergamon Press Oxford pp 263 297 Koorn J W C 1994 Generating Uniform User Interfaces for Interactive Programming En vironments PhD thesis University of Amsterdam The Nederlands Kounalis E et Lugiez D 1991 Compilation of pattern matching with associative commutative functions 16th Colloquium on Trees in Algebra and Programming Vol 493 of Lecture Notes in Computer Science Springer Verlag pp 57 73 Leroy X 1995 Le syst me caml special light modules et compilation efficace en caml Rapport de recherche 2721 INRIA Leroy X et Mauny M 1993 Dynamics in ML Journal of Functional Programming 3 4 431 463 Lescanne P 1983 Computer experiments with the REVE term rewriting systems genera tor Proceedings of 10th ACM Symposium on Principles of Programming Languages ACM pp 99 108 Lescanne P 1989 Completion procedures as transition rules control in M Diaz et F Ore jas eds TAPSOFT 89 Vol 351 of Lecture Notes in Computer Science Springer Verlag pp 28 41 Lesk M 1975 LEX a Lexical Analyzer Generato
149. ToolBus pour lui communiquer le contenu de ses fichiers diteur syntaxique La distinction entre un diteur de texte et un diteur syntaxique peut sem bler artificielle mais ces deux outils fournissent des services compl tement diff rents l diteur de texte permet d ins rer ou de supprimer des caract res alors qu un diteur syntaxique permet de manipuler la structure syntaxique du texte Lorsque qu un programme saisi avec l diteur de texte devient apr s analyse syntaxiquement correct l diteur syntaxique peut tre utilis pour offrir des fonctionnalit s telles que la s lection l effacement ou la modification de sous arbres Parseur ELAN et Parseur de termes infix s Une des id es de cette nouvelle architecture pour ELAN est de s parer clairement les tapes d analyse de pr traitement et d interpr tation bri vement d crites dans le paragraphe 2 2 Le format Efix semble tre un bon point de d part qui nous permettrait de repr senter un module ELAN au cours de son analyse syntaxique partant d un module ELAN les parties analysables par un outil comparable Yacc sont dans un premier temps lues et transform es dans leur repr sentation Efix Les morceaux de texte correspondant des termes infix s ou des constructions du pr processeur sont alors m moris s par une suite de caract res non analys e dans une repr sentation Efix partant de cette repr sentation Efix interm diaire p
150. a v rification de programmes ELAN est un syst me qui permet de sp cifier et d ex cuter des r solveurs de contraintes des d monstrateurs et plus g n ralement tout processus d crit par des r gles de transformation Il poss de des op rateurs associatifs commutatifs AC et un langage de strat gies qui permettent une gestion fine de l exploration d un arbre de recherche et une manipulation ais e d op rateurs math matiques tels que les connecteurs bool ens les op rateurs arithm tiques ou les op rateurs de composition parall le par exemple Ces deux notions am liorent grandement l expressivit du langage mais introduisent un double non d terminisme li la possibilit d appliquer plusieurs r gles de diff rentes fa ons sur un terme donn Cela rend difficile et g n ralement peu efficace leur implantation L objectif principal de cette th se est d tudier des techniques de compilation qui am liorent l efficacit de ce type de langages Nous proposons un nouvel algorithme base d automates d terministes pour compiler efficacement le filtrage syntaxique Nous d finissons ensuite diff rentes classes de r gles pour lesquelles nous proposons un algorithme efficace de filtrage AC Cet algorithme utilise une structure de donn e compacte et les automates d finis pr c dem ment ce qui am liore consid rablement les performances du processus de normalisation dans son ensemble L tude du langage de strat
151. a6 not or or or not a1 not a2 or not a3 not a4 or not a5 not a6 q8 reduce equal and and and a1 a2 and a3 a4 and and a5 a6 and a7 a8 not or or or not a1 not a2 or not a3 not a4 or or not a5 not a6 or not a7 not a8 A 1 3 Nat10 sort declaration 196 Annexe Programmes utilis s pour effectuer les exp rimentations sort Nat Bool operator declarations op op op op op op op op op op op op op op op op op op op op op op op op op op op op op op op true Bool QO false Bool neq Nat Nat Bool 1 2 0 neq helper Nat Nat Bool 1 2 0 bool reducer Bool Bool 1 0 and Bool Bool Bool 1 2 0 OANOOFWNHR O RQ multo multi mult2 mult3 mult4 mult5 mult6 mult mult8 mult9 fib Nat prec O Nat Nat Nat Nat 1 2 0 assoc comm Nat Nat Nat 1 2 0 assoc comm Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat rewrite rules rule rule rule rule rule rule rule rule 1 1 1 1 4 4 1 1 1 1 Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat O 0 d d 0 0 0 0 0 0 0 0 0
152. achine abstraite pour compiler la r criture Il est clair que la compilation des langages logiques ou fonctionnels est un domaine connexe mais les solutions mettre en uvre ne sont pas tout fait du m me ordre La nouveaut ou l inconnu de notre approche est de tenter de se passer d une machine abstraite et de consid rer qu un langage imp ratif tel que le C est finalement bien adapt la compilation des syst mes de r criture Le pari a d but en 1995 lorsque Marian Vittek a entam l criture d un premier compilateur pour ELAN Un an plus tard le compilateur commen ait donner ses premiers r sultats les performances pouvaient tre qualifi es d extra ordinaires l poque Ces premiers r sultats ont eu une grande importance car ils ont eu pour effet de convaincre une partie de la communaut scientifique qu un langage de programmation fond e sur la r criture n est pas condamn rester isol sur une machine d un centre de recherche Mal heureusement certains choix effectu s pour r aliser ce prototype n ont pas permis son extension aux volutions ult rieures du langage de sp cification lui m me Le prototype avait rempli son r le et un nouveau d veloppement int grant d s sa conception des objectifs plus long terme s est av r n cessaire L id e de r aliser un nouvel outil efficace robuste et modifiable a motiv particuli rement cette th se D un point de vue pratique le
153. adre d un environnement dont le m canisme d ex cution repose sur l application de r gles et des strat gies la d finition d un format base de termes est essentielle cela rend homog ne les programmes et les donn es calcul es par ces programmes Ce qui permet de sp cifier des outils de transformation de programmes par valuation partielle par exemple ou des proc dures de v rification de programmes et de les int grer naturellement dans l environnement de sp cification pour transformer optimiser ou v rifier les programmes eux m mes Disposer d une telle architecture permettrait d int grer et exp rimenter de nouveaux mo dules de r nover certains composants mais aussi de s ouvrir aux autres projets en proposant des outils ayant une interface uniforme Ce travail d ouverture et de diffusion pourrait se faire dans le cadre du sous groupe Tools Task Group du projet CoFI dont l objectif est de mettre des outils a disposition de la communaut CoFI Le compilateur ELAN serait une de nos contri butions au projet CoFI et serait utilis pour compiler le sous ensemble du langage CASL qui utilise des r gles de r criture et des strat gies par exemple Coop ration d outils de preuve et de r solution Une autre application naturelle des deux th mes de recherche mentionn s pr c demment pourrait tre la d finition d un langage int grant contraintes r gles et strat gies et utilisant des strat gies pour
154. ait pas agr able utiliser il serait en effet p nible de devoir tout sp cifier chaque fois et de ne pas disposer d un m canisme permettant de r utiliser des morceaux de sp cifications crits par d autres personnes La notion de modularit permet de diviser une sp cification en entit s logiques appel es modules Chaque module peut d finir des sortes des op rateurs des r gles ou des strat gies et importer d autres modules si besoin est Pr c demment pour d finir la fonction factorielle nous avons suppos qu il existait un module d finissant la sorte int et les op rations usuelles d finies sur les entiers Il a alors suffi d importer ce module pour disposer de son contenu Dans un premier temps l importation d un module peut se voir comme une copie textuelle du contenu du module Il est cependant int ressant pour am liorer la qualit de la sp cification de 24 Chapitre 1 Langage de sp cification ELAN pouvoir d finir des op rateurs cach s qui ne peuvent pas tre import s par d autres modules Cela permet entre autres d encapsuler des structures de donn es et de voir les autres modules comme des clients potentiels tout en s assurant qu il ne pourront pas acc der aux structures internes du module C est l utilisation du mot cl local qui permet de d clarer qu un op rateur une r gle ou une strat gie ne seront pas export s et resteront invisibles aux autres modules L attri
155. al de chaque colonne n est pas gal 100 parce que d autres fonctions non prises en compte ici sont impliqu es dans le processus de normalisation et aussi parce que certaines fonctions sont compt es plusieurs fois les deux lignes du bas indiquent le temps total pass dans la gestion de la m moire et la gestion du non d terminisme mais ceux ci ont d j t comptabilis s dans la construction des graphes bipartis compacts CBG et la r solution des graphes bipartis par exemple Bool3 Nat10 Somme construction des CBG 12 8 31 77 8 24 extraction des graphes bipartis 0 45 4 39 0 11 r solution des graphes bipartis 1 57 2 04 5 13 Total filtrage AC 14 82 38 20 13 48 construction des substitutions 4 01 5 45 15 78 maintenance des formes canoniques 21 9 3 74 0 41 gestion de la m moire 29 6 27 06 5 93 gestion du non d terminisme 3 83 4 81 49 15 Bool3 En analysant cet exemple compos d un petit nombre de r gles dont l application en gendre de tr s gros termes on s apercoit que le temps pass dans la construction et la r solution des graphes bipartis est inf rieur 15 du temps total d ex cution On peut noter le co t re lativement faible de la construction des substitutions ce qui montre l int r t de notre approche consistant compiler des fonctions d acc s En revanche on peut estimer q
156. aluation du pr processeur Pretty printer Cet outil s occupe de mettre en page et de rendre lisible les termes Il peut par exemple tre utilis pour imprimer des modules ELAN au format HTML ou ATEX Interpr teur et Compilateur Ces outils correspondent ce qui a t pr sent dans le chapitre 2 Interface utilisateur Cette interface aide visualiser l ensemble des diff rents composants d finis pr c demment ou l ensemble des modules qui composent une sp cification par exemple 3 5 Synth se Dans ce chapitre nous avons pr sent l architecture g n rale de l environnement de sp cifi cation ELAN et plus pr cisemment son organisation autour du format d change REF Ce format d change permet d une part de connecter et d int grer le nouveau compilateur dans l environ nement ELAN ou ASF SDF mais il est aussi source d ouverture en facilitant l inter connexion des outils g n r s par le compilateur lui m me Comme le pr cise le paragraphe 3 4 la d fini tion d un format d change suffisemment modulaire lisible et g n ral est un th me de recherche encore d actualit En collaboration et s appuyant sur l exp rience du groupe ASF SDF nous proposons le format Efix fond sur la notion de termes annot s Ce nouveau format d change nous permettra terme de modulariser l environnement ELAN ce qui facilitera la r novation le d veloppement et l int gration de nouveaux composants Il d
157. ant des sortes et des op rations builtins La figure de droite correspond quant elle au calcul de la fonction d Ackermann en utilisant des entiers repr sent s par des successeurs de Peano 0 s 0 s s 0 L encore les techniques de compilation offrent des r sultats int ressants titre de comparaison nous avons effectu ces m mes mesures avec le compilateur Objective Caml Cette implantation du langage Caml Cousineau et al 1985 Weis et Leroy 1993 Cou sineau et Mauny 1995 Leroy et Mauny 1993 Leroy 1995 g n re du code natif optimis qui est particuli rement efficace 12 4 2 Calculs avec filtrage AC C est en utilisant ELAN pour implanter une proc dure de compl tion avec contraintes que j ai commenc d couvrir la puissance et l expressivit des symboles AC J ai malheureusement d couvert presque aussi vite le prix qu il fallait payer pour profiter de cette expressivite une patience sans faille En 1996 apr s avoir tudi quelques probl mes li s la r criture modulo AC nous avons commenc laborer et exp rimenter de nouvelles techniques de filtrage et de normalisation modulo AC cette poque Maude Brute et le compilateur ELAN n existaient pas encore Claude Kirchner me montra un exemple servant de benchmark l quipe OBJ dans les ann es 90 Le probl me Dart voir annexe A 4 consiste num rer les diff rents scores qu il est possible d atteindre lorsqu on joue aux
158. appel s des machines abstraites gt et ceci ind pendemment de la fa on dont ils sont implant s Pour implanter un langage L on peut donc choisir de r a liser une machine abstraite pour un langage L l aide d un interpr teur puis de r aliser un compilateur de L vers L La vitesse d ex cution de l ensemble d pendra en partie du niveau choisi pour le langage L et de la qualit de son interpr teur Cette approche a l avantage d tre incr mentale d finir et implanter une machine abstraite avec un interpr teur peut tre une solution facile et rapide mettre en uvre et rien n emp che de remplacer l interpr teur par un compilateur si les performances ne sont pas assez bonnes Cette strat gie a t largement suivie dans de nombreuses implantations de langages fonctionnels ou logiques La d finition d un jeu d instructions pour Prolog Warren 1983 appel WAM Warren Abs tract Machine A t Kaci 1990 par la suite fut l origine de progr s majeurs concernant l im plantation de Prolog De nombreux interpr teurs ont t implant s pour ce langage abstrait et depuis peu des compilateurs tels que Wamcc Codognet et Diaz 1995 Diaz 1995 ont t r alis s pour offrir des implantations plus efficaces du langage 4 2 Pourquoi choisir un compilateur Le projet ELAN a r ellement d marr en 1991 lorsque Marian Vittek a entam la conception et la r alisation des outils adapt s au lan
159. approche d crite dans Bachmair et al 1993 est s rement celle qui se rapproche le plus de nos attentes mais elle ne permet malheureusement pas de construire efficacement les solutions et les substitutions associ es un probl me de filtrage AC Notre objectif n est pas de d finir une nouvelle proc dure g n rale de filtrage AC mais l tude de ces travaux nous a amen s d finir une proc dure de filtrage qui permet de calculer efficacement des formes normales de terme clos en utilisant des r gles de r critures conditionnelles pouvant faire intervenir des symboles AC Les proc dures de filtrage AC ont en g n ral une complexit importante Benanav et al 1987 Hermann et Kolaitis 1995 qui est polyn miale lorsque les motifs consid r s sont lin aires L tude empirique d un grand nombre de syst mes de r criture a montr que la majeure partie des motifs AC utilis s en pratique appartiennent finalement une classe assez restreinte de termes La d finition et l tude de ces classes de motifs nous ont permis de d finir un algorithme de filtrage limit mais tr s efficace pour ces classes de motifs Le cas g n ral qui se pr sente assez rarement tant trait par l algorithme pr sent dans Eker 1995 La deuxi me particularit de notre approche est relatif l aspect compilation largement abord dans cette th se En effet il ne s agit pas seulement de d finir un algorithme de filtrage efficace
160. arce que non compl tement analys e la grammaire de la signature du module peut tre lue et utilis e pour construire un analy seur de termes infix s l algorithme d Earley ou des techniques de g n ration de parseurs peuvent tre utilis es ici Disposant d un analyseur de termes infix s les morceaux de 3 5 Synth se 49 textes du fichier Efix interm diaire qui correspondent des termes non analys s peuvent alors tre lus et remplac s par leur codage Efix correspondant la derni re tape consiste analyser puis valuer les constructions du pr processeur m moris es dans la repr sentation Efix interm diaire d un module Il faut pour cela utiliser les morceaux analys s afin de construire un syst me de calcul l aide de l interpr teur ou du compilateur Ce syst me de calcul peut alors servir valuer les constructions du pr processeur pour les remplacer par leur codage Efix correspondant Partant d une sp cification ELAN les trois tapes pr c dentes sont appliqu es it rativement jusqu obtenir un point fixe qui correspond une repr sentation Efix de la sp cification ne contenant plus de morceau de texte non analys ou non valu par le pr processeur En suivant cette approche il devient possible de s parer compl tement les phases d analyse syntaxique de la partie fixe d ELAN l analyse des termes infix s d pendant d une grammaire hors contexte et les phases d v
161. are les diff rents langages de programmation issus de la communaut r criture il est frappant de constater que le nombre de points communs tous ces langages est relativement important De nombreuses tentatives ont t faites pour essayer de d finir une machine abstraite pour les langages base de r gles de r criture Strandh 1988 Strandh 1989 Sherman 1994 Hamel 1995 Metzemakers et Sherman 1995 Kamperman 1996 Ogata et al 1997 Ishisone et Sawada 1998 Cependant aucune d entre elles n est devenue un standard comme l est la Machine Abstraite de Warren Warren 1983 A t Kaci 1990 pour la compilation de Prolog s rement parce que les performances de ces diff rentes machines abstraites n taient pas la hauteur des attentes La d marche du projet ELAN est un peu diff rente dans la mesure ou nous n avons jamais eu Vambition de d finir une machine abstraite Cependant l architecture choisie et les possibilit s offertes par le compilateur nous ont amen s tenter d utiliser notre compilateur pour compiler d autres langages de sp cification Dans ce cadre une coop ration entre le projet ASF SDF d Amsterdam et le projet ELAN de Nancy a d but en 1998 L objectif consistait r aliser un outil capable de traduire une sp cification ASF dans le format REF pour pouvoir la compiler en utilisant le compilateur ELAN Afin d acqu rir une meilleure connaissance du formalisme de sp cification traduire cet ou
162. artie d licate dans l algorithme de construction d une proc dure de d cision pour un lan gage donn L n est pas tellement la construction de l automate d terministe mais principalement le calcul de la cl ture L consid rer pour obtenir un automate canonique Dans les paragraphes suivants nous allons tudier diff rents algorithmes permettant de construire la cl ture L partir d un ensemble de termes L 66 Chapitre 5 Compilation du filtrage syntaxique Fic 5 3 Cet automate est deterministe et reconna t le langage L fga fgw fw en n ins pectant qu une seule fois les termes d entree 5 3 Cl tures d un ensemble de motifs tant donn en ensemble de termes L t fn pour calculer sa cl ture L nous per mettant de d river facilement un automate canonique reconnaissant le langage L nous avons besoin de r aliser des op rations sur des ensembles de suffizes de termes Soit a3 Ts a et B sont des suites de symboles a X mais pas forc ment des termes bien form s Dans ce cas a et B sont appel s respectivement pr fire et suffixe du terme af Soit t Ts les ensembles de prefixes et suffixes de t sont d finis de la mani re suivante Pref t alaeY et 4G d tel que ap t Suff t 8 B E dX et Ja d tel que a t Consid rons maintenant un ensemble de suffixes L initialement les suffixes sont des termes bien form s et un symbole s L ensemble de suffixes o
163. asse Symbol un tableau de sous termes et une multiplicit BranchEvaluation cette classe permet de repr senter un ensemble d valuations locales apparaissant dans une r gle de r criture ou dans une branche try de la construction choose try end Elle est constitu e d un tableau d valuations locales de la classe LocalEvaluation LocalEvaluation c est une interface qui d finit la notion d valuation locale Dans l im plantation courante trois classes permettent de d finir les trois types d valuations locales d finis dans le langage Condition permet de repr senter les conditions de la forme if c par un terme de la classe Term LocalAffectation permet de repr senter les conditions de filtrage de la forme where p S e Choice repr sente les alternatives choose de la construction choose try end Il s agit d un tableau d ensembles d valuations locales de la classe BranchEvalua tion StrategyTerm c est une classe abstraite permettant de repr senter des expressions cons truites partir d op rateurs l mentaires de strat gies StrategyChoose est un op rateur de choix pouvant s appliquer sur des r gles ou des strat gies StrategyOneRule correspond au dc one r r StrategyDcRule correspond au de r1 rn StrategyDkRule correspond au dk r1 rn StrategyOneStrat correspond au dc one Sj S StrategyDcStrat correspond au dc
164. asse miettes en ajoutant des g n rations Il est aussi possible de modifier la strat gie interne du ramasse miettes qui fait passer un objet d une g n ration vers une autre Dans le cadre d ELAN nous envisa 11 5 Synth se 163 geons d implanter une premi re version utilisant deux g n rations et d adapter la structure du ramasse miettes en fonction des r sultats exp rimentaux 11 5 Synth se Dans ce chapitre nous avons pr sent sommairement les structures de donn es utilis es par les programmes engendr s par le compilateur ELAN Nous avons aussi mis en lumi re diff rents probl mes li s la gestion de la m moire et l int gration de sortes et d op rations builtins Mais ces travaux ne sont que la partie visible de l iceberg En effet le d veloppement de cette biblioth que de support et la volont constante de d finir des constructions efficaces et r utilisables nous a donn cette exp riencre difficilement transmissible qui donne l intuition et le recul n cessaire tout d veloppement logiciel de qualit 164 Chapitre 11 Support d ex cution Chapitre 12 Exp riences pratiques 12 1 Estimation du degr de compilation 166 12 2 valuation des performances 172 12 3 Co t du filtrage AC ak ma us pe ge da a a dans ab seu n 176 12 4 Comparaison avec d autres implantations 178 La r alisation
165. automate trouve dans sa m moire un tat e appel choix w d o part une ar te tiquet e par un w e1 w 5 e2 lui permettant en utilisant le troisi me mode de d placement d atteindre une position plus droite cet tat e peut tre d termin stati quement en analysant la structure de l automate pour chaque tat susceptible d arr ter l automate il suffit de parcourir en sens inverse les ar tes jusqu trouver un embranche ment avec une ar te w qui aurait permis d atteindre un point plus droite sur la bande de lecture Si aucun choix w n est trouv c est qu aucun tat convenable n aurait t trouv dans la m moire et l automate peut potentiellement se bloquer tant donn un tat e susceptible d arr ter l automate et son choix w e1 w e2 correspondant le fait d ajouter une r gle de transition d tats 6 ew gt s e appel e jumpNode voir figure 5 7 permettant de passer de l tat bloquant e l tat e2 en uti lisant le troisi me mode de d placement de la t te de lecture simule le comportement de l automate m moire L automate de filtrage est une repr sentation d un ensemble de suffixes L Si apr s avoir lu une suite de symboles a Y un choix entre le symbole s et w appara t c est que les deux termes ast t4 0 et aw appartiennent l ensemble L Pour tout tat e susceptible de bloquer l automate tel qu
166. bjets fondamentaux des lan gages de programmation alg briques Dans les implantations leur repr sentation est souvent d riv e d une structure arborescente Il existe cependant une alternative propos e par Jim Christian 1993 qui consiste utiliser une structure lin aire Ces termes appel s flatterms sont alors repr sent s par une liste simplement ou doublement chain e Cette structure permet d am liorer l efficacit des proc dures de parcours par rapport aux repr sentations arborescentes classiques L utilisation de flatterms entraine cependant des restrictions qui rendent leur utilisa tion impossible dans le cadre de notre compilateur il est difficile de repr senter les symboles AC qui ont une arit variable et le partage de sous termes est impossible C est pourquoi nous avons tudi diff rentes solutions fond es sur des structures d arbre et nous avons choisi une repr sen tation permettant d utiliser des symboles AC d arit variable et n introduisant pas de surcharge 153 154 Chapitre 11 Support d ex cution lorsqu aucun symbole AC n est utilis Les sous termes de symboles syntaxiques sont m moris s dans un tableau de taille fixe alors que les sous termes de symboles AC sont m moris s dans une liste simplement chain e voir figure 11 1 ce qui facilite les op rations d insertion et de fusion de listes tri es fac fac ir T gt gt
167. btenu en enlevant le symbole de t te s des l ments de L qui commencent par s est not L s Dans son article Albert Graf 1991 donne un algorithme r cursif pour calculer la cloture d un ensemble de suffixes L si L e ou L 0 T _ Usexu uy SLs sinon o L est d fini de la mani re suivante w correspond la r p tition de s symboles w L s sis w L L sUw L w sis wet L s 40 0 sinon La cl ture d un ensemble a les propri t s suivantes extension LCL monotonie LCM LCM idempotence L L On voit de mani re intuitive que cet algorithme ajoute des suffixes afin que l automate associ ne se bloque plus dans une branche tant donn s deux suffixes s3 et w8 on sait que Vautomate va choisir la branche tiquet e par s m me si la suite du terme d entr e se termine 5 3 Cl tures d un ensemble de motifs 67 FIG 5 4 Cet exemple montre deux repr sentations possibles de l ensemble L a un auto mate de filtrage gauche et un arbre de filtrage droite par 8 Pour liminer ces situations d chec et retarder le choix entre ces deux alternatives le suffixe sw est ajout l ensemble Appliquons l algorithme pr c dent sur l ensemble L fga fw pour v rifier que sa cl ture L est bien gale fga fgw fw L fLUgL U aLa UwL fL car Ly La Lo 0 Lp gaw g Lf g U w Lf w g a Uwt9L s w Uwfe glaw U w
168. but global permet au contraire de rendre accessible aux autres modules la d finition d un op rateur d une r gle ou d une strat gie Mais que devient un op rateur export Est il local ou global au module qui l importe Ce petit manque de pr cision se r gle en sp cifiant lors de l importation d un module si les op rateurs import s sont eux m mes exportables ou non Une importation globale signifie donc que tout ce qui est import est r export vers les autres modules alors qu une importation locale cache les op rateurs import s La notion de module permet de d finir les briques qui composent un projet Il est par ailleurs fr quent qu un grand nombre de briques se ressemblent sans tre parfaitement iden tiques en effet cela arrive lorsque les modules sont construits en suivant un m me processus de fabrication o seulement quelques param tres sont chang s On parle alors de modules param tr s L environnement ELAN permet de d finir des modules param tr s Il est ainsi possible de sp cifier le module liste de quelque chose o quelque chose peut tre remplac par un nom de sorte module list X import int end sort X list X end operators global nil list X cons 0 0 X list X list X size 0 list X int rules for int e X 1 list X global size nil gt 0 end size e 1 gt 1 size 1 end end end L exemple pr c dent d fin
169. cation concurrente de deux strat gies S ou Sg Cela permet de caract riser le nombre de r sultats qui composent l union des r sultats de S et de So 134 Chapitre 9 Analyse du d terminisme And det semi multi nondet fail det det semi multi nondet fail semi semi semi nondet nondet fail multi multi nondet multi nondet fail nondet nondet nondet nondet nondet fail fail fail fail fail fail fail Or det semi multi nondet fail det multi multi multi multi det semi multi nondet multi nondet semi multi multi multi multi multi multi nondet multi nondet multi nondet nondet fail det semi multi nondet fail 9 3 Inf rence de la classe de d terminisme L algorithme d inf rence du mode de d terminisme est pr sent en trois tapes pour une strat gie il utilise la forme d compos e en strat gies primitives Pour une r gle de r criture les valuations locales sont analys es Enfin l algorithme traite le probl me de r cursivit d la possibilit de cr er un cycle de d pendance entre les r gles et les strat gies en associant un mode particulier Inf rence du d mode d une strat gie Le d mode d une strat gie correspond son type de d terminisme Celui ci est inf r partir de son expression sous forme de strat gies primitives one all select one et select all d m
170. cation du 132 gestion du 99 impact de l analyse du 136 inf rence du 134 mode de 133 uniforme 123 d terministe automate de filtrage 62 strat gie 133 d mode 133 d une r gle 135 inf rence du 134 valuation des m thodes de compilation 165 des performances 172 valuation locale compilation des 118 Local Evaluation 148 pr sentation 19 puis sance des 121 exp rimentation r sultat 138 exploration avec une strat gie 127 expressivit de la r criture 23 extension de la classe des motifs 95 du lan gage de strat gie 28 variable d 88 extraction d un graphe biparti 90 factorielle en ELAN 119 faiblement canonique automate 71 faiblement d terministe automate 65 fail 99 Fibonacci 166 programme d terministe 139 filtrage 19 arbre de 67 associatif 45 au tomate de 63 compilation du 116 com pilation du filtrage associatif commutatif 81 compilation du filtrage syntaxique 61 cout du filtrage AC 176 many to one 61 one to one 61 probl me de 83 proc dure 247 AC many to one 84 proc dure AC one to one 83 structure AC 84 sur les mots 61 filtre 14 first d finition de 17 first one d finition de 17 fonction arit d une 13 codomaine d une 13 d acc s 94 domaine d une 13 factorielle en ELAN 15 factorielle en ELAN 15 119 profil d une 13 fonctionnement du compilateur 150 formalisme
171. cause the fail func tion always restores the context of the last set choice point This special case allows us to design A similar idea is used in the BDW Garbage Collector Boehm et Weiser 1988 104 Chapitre 7 Gestion du non d terminisme smarter and more efficient algorithms A naive implementation of setChoicePoint and fail con sists in reusing setJump longJump implementations and storing Jump_buf structures in a LIFO data structure the trail itself Let us remark that saving the whole system stack is too expensive In average only a small part of the system stack needs to be changed when a failure occurs For example let us consider the following program where dots denote irrelevant instructions void main void g int arg ai serico fail de An execution of the main function creates the stack frame of main in the system stack Then main calls g this pushes the stack frame of g onto the stack So when the choice point is set two stack frames main and g are on the stack see Figure 7 1 After this when leaving g its stack frame is freed and execution continues in main by fail But at this moment the stack contains the stack frame of main So only the stack frame of g has to be restored onto the current system stack to reconstitute the stack as it was at the moment of the choice System stack System stack main frame main frame deleted g frame memory g fram
172. cible permet d utiliser des noms longs pour nommer les fonctions pour un ensemble de r gles d finies dans un module la fonction associ e peut prendre pour nom le nom du module suivi de la signature du symbole de t te des membres gauches des r gles si les noms des fonctions du langage cible ont une taille maximale il faut alors utiliser un m canisme d indirection Une table initialis e au lancement du programme permet d as socier une fonction chaque nom long nom du module suivi de la signature du symbole Ce m canisme d indirection est alors utilis chaque appel de fonction ce qui diminue videmment la vitesse d ex cution du programme g n r Compilation s par e Lorsque tous les modules Efix sont traduits en des modules du langage cible il reste les compiler s par ment en utilisant un compilateur du langage cible 10 2 Organisation du compilateur 147 Pour profiter pleinement des possibilit s offertes par les compilateurs C il faut veiller ce que le code C g n r d une compilation l autre soit relativement stable L id al serait qu une modification effectu e dans un module source entra ne la compilation de ce seul module et que seul le code C associ ait besoin d tre recompil Mais on a vu que l utilisation d une table globale pour identifier les constructeurs pouvait dans certains cas entra ner la recompilation de tous les modules utilisant un symbole changean
173. coordonner la coop ration de d monstrateurs ind pendants l image de la figure suivante l id e consiste utiliser toute la puissance et la souplesse d un langage base de r gles et de strat gies pour d finir la coop ration entre les outils Solveur 1 Solveur 2 Solveur 3 Wrona 10 ation D finition de preuves Regies de strat gies Strat gies 8 Prouveur 1 Prouveur 2 Prouveur 3 Dans l optique de faciliter l int gration et la r utilisation d outils existants nous envisageons d utiliser nouveau le format d change pour faire communiquer les outils entre eux Reste tudier pr cis ment quelles sont les primitives n cessaires ELAN pour qu il puisse devenir son 188 Conclusion tour un outil de coordination Le langage de strat gies servirait alors contr ler la coop ration entre diff rents prouveurs et solveurs tout en g rant leur ex cution parall le ou concurrente Nous pouvons alors imaginer des m ta strat gies charg es de distribuer les calculs en fonctions de la charge des unit s de calcul disponibles L int r t d utiliser la r criture comme langage de coop ration est qu on dispose de m thodes et d outils qui aident v rifier des propri t s telles que la terminaison ou l absence d interbloquage par exemple Formalisme En pratique ELAN est un langage et un environnement agr ab
174. ction calling setChoicePoint had returned The fail algorithm rebuilds the system stack with saved frames until the endReg code is found Then the registers and the stack pointer are restored and the integer 1 is returned 3A function is said to be nondeterministic if a choice point is set or a nondeterministic function is called during its execution 7 4 New choice point management 107 Trail Zoom registers chp registers chp endReg stack pointer frame caller s fp endFrame return address frame trail pointer endReg endReg registers chp2 frame endReg stack pointer frame frame pointer endFrame return address be tee SS trail pointer oS See endFrame eg NEED Figure 7 3 Trail stack state after setting a choice point Note that fail removes the last created ChoicePoint and restores the system stack to its initial state Assuming that a return address is saved in the system stack the return address that was modified to saveFrame is restored to its initial value by recovering the stack Consequently the save frame handler is no longer active 7 4 5 Detailed implementation In this section we give a low level description that corresponds to the assembly language imple mentation The next algorithm describes the implementation of setChoicePoint Algorithm 7 1 setChoicePoint load the caller s frame pointer fp Env_at r
175. d Kirchner Kirchner et M grelis 1992 et des expressions complexes de modules Concernant l implantation le syst me OBJ 3 se compose d un interpr teur crit en Common Lisp qui permet d interfacer les sp cifications comprenant des r gles de r criture avec des fonc tions crites en Lisp Il existe par ailleurs une autre implantation d OBJ 3 crite en C Cavenaghi de Zanet et Mauri 1987 La famille des syst mes OBJ a t utilis e assez longtemps pour prototyper des id es et son int r t a t montr par le grand nombre de sp cifications crites dans ce formalisme Battiston de Cindio et Mauri 1988 Collavizza 1989 Collavizza et Pierre 1988 Goguen 1988b Stavridou 1988 Eker 1991 Nakagawa Futatsugi Tomura et Shimizu 1987 Christopher 1988 Maude Ce syst me d velopp au SRI par l quipe de Jos Meseguer Clavel et al 1998 est lui aussi fond sur la logique de r criture Il int gre actuellement les paradigmes de programma tion fonctionnelle et objet Sa s mantique est fond e sur la logique quationnelle d appartenance introduite dans Meseguer 1998 Bouhoula Jouannaud et Meseguer 1997 Cette logique sem blable celle d velopp e dans Hintermeier Kirchner et Kirchner 1994 Hintermeier Kirchner et Kirchner 1995 est une extension conservative de la logique quationnelle avec sortes ordonn es 34 Chapitre 2 Outils pour sp cifier et programmer et de la logique quationnelle partiel
176. d crire et appliquer les algorithmes Dans le cadre des th ories AC la notion de terme aplati est essentielle si on oriente l qua tion d associativit en la r gle fac fac y z fac 2 fac y z on obtient un syst me qui termine et le terme obtenu partir d un terme t s appelle la forme aplatie de t Un terme aplati 6 2 Approche one to one 83 est un terme fac ti fac t2 fAc tn 1 tn tel que la racine d aucun des t n est fac et on le note fac t1 tn Si on se donne un ordre total lt sur les symboles et son extension aux termes la forme canonique d un terme aplati t peut tre obtenue en triant les sous termes eux m mes en forme canonique et en rempla ant a sous termes t identiques par une occurence de t unique avec multiplicit not e t En se donnant un ordre total sur les entiers les noms de variables et les symboles et 0 lt 1 lt lt X lt Y lt x lt la forme canonique des deux polyn mes pr sent s pr c demment est x 3 X2 2 X 1 nous avons utilis une notation pr fix e des op rateurs et pour plus de clart Il ne faut pas confondre la notation X avec l l vation la puissance d finie sur le corps des polyn mes En effet la forme normale du terme X X se note X et n a aucun rapport avec la notion habituelle de X au carr Un terme en forme canonique est dit semi lin aire si le terme obtenu en oubliant les multiplicit s des variables a
177. d Module Extension PhD thesis Swiss Federal Institute of Technology Zurich Swiss Dalmas S Ga tano M et Sausse A 1996 A distributed and cooperative environment for computer algebra Journal of Symbolic Computation 21 4 6 427 439 Dalmas S Ga tano M et Watt S 1997 An OpenMath 1 0 implementa tion in W W K chlin ed ISSAC 97 Proceedings of the 1997 Inter national Symposium on Symbolic and Algebraic Computation 21 28 1997 Maui Hawaii ACM Press New York NY 10036 USA pp 241 248 URL http www acm org 80 pubs citations proceedings issac 258726 p24 1 dalmas Delahaye J P 1995 Logique informatique et paradoxes Pour la Science Diffusion Belin ISBN 2 9029 1894 1 Demoen B et Maris G 1994 A comparison of some schemes for translating logic to C Workshop on Implementations of the 11th International Conference of Logic Programming MIT Press Santa Margherita Italy Demoen B et Sagonas K 1998 CAT the Copying Approach to Tabling Principles of Declarative Programming number 1490 in Lecture Notes in Computer Science Springer Verlag pp 21 35 Deursen A Heering J et Klint P 1996 Language Prototyping World Scientific ISBN 981 02 2732 9 Diaconescu R 1996 Foundations of Behavioural Specification in Rewriting Logic in J Me seguer ed Proceedings of the 1st International Workshop on Rewriting Logic and its Applications RWLW 96 Asilomar Pacific Grove CA U
178. d est la strat gie qui ne fait rien mais qui n 6choue jamais l inverse la strat gie fail choue tout le temps et ne retourne jamais de r sultats la strat gie repeat S applique r p titivement la strat gie S jusqu ce qu elle choue et retourne le dernier r sultat obtenu Cette strat gie est particuli re dans la mesure o elle n choue jamais z ro application de est possible et dans ce cas le terme initial est retourn la strat gie iterate S est similaire repeat S mais retourne les r sultats interm diaires des applications successives de S D finissons un module permettant de construire des listes Dans ce module la liste vide est not e nil et l op rateur infixe de concat nation est not module liste sort Element Liste end operators global a Element b Element c Element nil Liste 0 0 Element Liste Liste end Le terme a b nil permet ainsi de repr senter la liste contenant les l ments a et b Pour se familiariser un peu plus avec les constructions du langage essayons d crire un programme 18 Chapitre 1 Langage de sp cification ELAN capable d extraire tous les l ments d une liste Habituellement il suffit d crire une fonction qui extrait l l ment de t te et qui s applique r cursivement sur le reste de la liste Il est bien s r possible de suivre la m me approche en ELAN mais ce ne serait pas tellement dans l esprit du langage
179. d mode d une r gle de r criture il suffit d analyser les d mode des valuations locales Commen ons par consid rer le cas d une condition simple if c ou d une condition de filtrage where p c ne faisant pas intervenir de strat gie Le calcul de c la forme normale du terme c par rapport aux r gles non nomm es ne peut pas chouer Si d ZT ou si p ne filtre pas c la condition choue et la r gle risque de ne pas s appliquer mais cela ne modifie pas le nombre maximum de r sultats qu il est possible d obtenir en appliquant la r gle on sait d j que la borne inf rieure est 0 puisque le filtrage de la r gle peut chouer Le d mode d une telle valuation locale est donc det c est un l ment neutre pour l op rateur And La seule situation permettant la r gle de retourner plusieurs r sultats se produit lors qu une variable de c appara t sous un symbole AC du membre gauche de la r gle ou sous un symbole AC d un motif d une condition de filtrage pr c dente Dans ce cas l valuation locale est dite multi r sultats multi Consid rons maintenant une condition de filtrage where p S c qui implique l appli cation d une strat gie S L valuation locale a dans ce cas le m me d mode que celui de la strat gie S Cependant comme dans le cas pr c dent lorsqu une variable de c appara t sous un symbole AC du membre gauche de la r gle ou d un motif d une condition d
180. dans cette th se nous esp rons montrer que celles ci permettent de d velopper des applications et r soudre des pro bl mes qui n auraient pas pu l tre sans son existence 12 2 1 Fib_builtin et NqueensAC 8 oO 8 F axo eee 5 2000 9 107 Compilateur ZA D 106 Compilateur 3 z 5x10 700 E A F 1500 8 e 6 _ Fa li Ho Te ur Foi g 10 1000 se 2 5 a L_ 8 2 g a sali 400 3 3 D q k O aie 30 FE 10 700 EE E A gt A gt 5x104 Interpr teur Es 5 Interpr teur E 5 ia or ee e 500g E 18 20 22 24 26 28 amp E 4 6 8 10 12 eS a fib n 2 probl me des n reines Fic 12 5 Evaluation des performances de Fib_builtin et NqueensAC Comme le montre la partie gauche de la figure 12 5 dans un cadre purement fonctionnel en pr sence de calculs arithm tiques intensifs le compilateur permet d atteindre de bonnes performances o plus de 17 millions de r gles sont appliqu es chaque seconde L acc l ration par rapport au compilateur est comprise en 400 et 500 ce qui signifie qu une heure de calcul avec le 12 2 valuation des performances 173 compilateur correspond 2 ou 3 semaines de calcul pour l interpr teur Toutes ces mesures ont t obtenues sur une station Dec Alpha 500 Le graphique de droite montre que dans un cadre compl tement non d terministe l acc l ration offerte par le compilateur est enc
181. de ce travail consisterait concevoir un outil d exploration qui permet trait de se d placer et de modifier certains param tres de la preuve on peut imaginer modifier la valeur d un terme le choix d un filtre utilis ou le choix d une r gle ou d une strat gie appliqu e par exemple puis recalculer dynamiquement des nouveaux morceaux de la preuve correspondant ces changements de param tres un filtre qui liminerait toutes les branches menant des checs ceci pour diminuer la taille de la preuve et pouvoir la donner un d monstrateur tel que Coq par exemple pour v rifier la validit de la d rivation par exemple un outil d analyse ou de d boguage qui aiderait comprendre pourquoi un r sultat attendu ne s est pas produit en rep rant l application d une r gle qui a fait dispara tre un certain constructeur par exemple La structure de terme de preuve pourrait s inspirer de la structure de terme annot utilis e par l environnement l avantage serait de pouvoir manipuler transformer et changer ces termes de preuve entre diff rents composants 190 Conclusion Extension du langage de strat gies strat gies volutives Dans la plupart des formalismes base de r gles et de strat gies tels que ceux d finis dans ELAN ou Maude le langage de strat gies permet de construire des expressions qui sont utilis es pour contr ler l application des r gles L id e est int ressan
182. de contraintes ou des outils de transformation de programmes par exemple Ce chapitre n a pas pour ambition de pr senter en d tail toutes les constructions autoris es par le langage ELAN et encore moins de servir de mode d emploi du syst me logiciel existant Au contraire certaines constructions sont volontairement occult es afin de ne pas perdre le lecteur et de pr senter de mani re simple et intuitive les caract ristiques principales du langage qui seront n cessaires pour avoir une bonne compr hension des solutions propos es dans les chapitres suivants Le lecteur est invit se r f rer la th se de Marian Vittek 1994 ou au manuel ELAN Borovansky Kirchner Kirchner Moreau et Vittek 1997 pour avoir plus de d tails concernant les fondements et l utilisation du syst me ELAN 1 1 Grammaire et signature La premi re partie d une specification ELAN consiste en la d finition des sortes utilis es la liste des modules import s et un ensemble de r gles de grammaires hors contexte pour d clarer 11 12 Chapitre 1 Langage de sp cification ELAN les symboles de fonctions Consid rons par exemple la signature d un module d finissant les bool ens appelons Bool la sorte des objets manipul s vrai et faux les valeurs de v rit et et ou et non les op rations d finies sur l alg bre des bool ens La d claration d une telle signature s crit de la mani re suivante en ELAN module booleen s
183. de d tecter le plus rapidement possible les checs et obtenir une proc dure de filtrage AC efficace ces tapes de propagation et de v rification sont souvent int gr es aux processus de r solution des graphes bipartis et de r solution des syst mes d quations diophantiennes Cette pr sentation sch matique d un algorithme de filtrage AC one to one montre que le processus est relativement complexe et co teux Il le devient encore plus lorsqu il s agit de d terminer pour un ensemble de r gles quelles sont celles qui peuvent s appliquer sur un terme clos s Des tudes ont donc t men es pour essayer de mettre en facteur une partie du travail effectuer l id e consiste utiliser des structures arborescentes pour s lectionner plus efficacement les r gles permettant de r duire le terme s Ces m thodes s appellent des proc dures de filtrage AC many to one 6 3 Approche many to one Dans Bachmair et al 1993 un algorithme de filtrage AC fond sur l utilisation d une structure de filtrage AC est pr sent Il ne permet que de traiter des ensembles de motifs lin aires 6 3 Approche many to one 85 Fac dd g Fac z f a a oe Z Fac f a x f y g b a wg fa ra zZ g Ww a g a 4 f a z flax fly g d f y g b Fic 6 1 Cette figure pr sente une structure de filtrage AC associ e l ensemble de mo tifs P fac z f a x g a fac f a x f y g b La partie droite
184. de l automate associ Dans un premier temps nous proposons un calcul incr mental de cette cl ture puis nous d rivons un algorithme plus simple permettant de construire une cl ture r duite L introduction de telles cl tures r duites permet en particulier de r duire la taille des automates engendr s en factorisant un grand nombre d tats En contre partie les automates associ s ne permettent temporairement plus de reconna tre certains motifs de l ensemble initial Pour pallier cet inconv nient nous in troduisons la notion de jumpNode ce qui nous permet de construire des automates efficaces d terministes et de taille relativement petite 5 1 Termes vus comme des cha nes de symboles L algorithme de filtrage pr sent dans ce chapitre est plus facile exprimer et comprendre lorsqu on utilise une repr sentation particuli re des termes Les termes sont souvent vus comme des arbres o il y a une correspondance directe entre le symbole de t te du terme et la racine de l arbre d une part les sous termes de ce symbole et les sous arbres de la racine d autre part Dans ce chapitre nous proposons de voir le terme sous sa forme aplatie Sa structure ressemble alors plus une cha ne de symboles qu un arbre tant donn un alphabet non vide X chaque symbole s de est associ un entier positif ou nul appel arit et not s On suppose g n ralement qu il existe un symbole w X d arit
185. de la figure illustre la r utilisation d un automate de filtrage avec jumpNode associ l ensemble des sous motifs z f a x g a f y g b Cet automate est un composant de la structure de filtrage AC et son utilisation permet de construire efficacement les graphes bipartis associ s un probl me de fil trage donn mais le point particuli rement int ressant de cette approche est qu elle permet de r utiliser une grande partie des travaux effectu s sur les automates de filtrage tels que ceux pr sent s dans le chapitre pr c dent Un tel algorithme est dit many to one parce qu tant donn un ensemble P p1 Pnl et un terme clos s il retourne l ensemble p P pi s L id e consiste construire une collection d automates de filtrage syntaxique en fonction de la structure des motifs de P Ces diff rents automates sont ensuite organis s pour constituer une structure de filtrage AC Partant d un ensemble de motifs P P la construction d une telle structure se d compose en quatre tapes 1 calcul de la couche syntaxique sup rieure Dias Pint 2 construction de l automate de filtrage A associ o tous les symboles AC sont consi d r s comme des constantes 3 application r cursive de l algorithme P 1 l ensemble des termes limin s au cours du calcul de 4 construction d un lien particulier entre les symboles AC de l automate A et l automate s
186. de la strat gie d application des S1 9n si l op rateur est un dc one un seul r sultat doit tre retourn Il suffit donc de supprimer tous les points de choix pos s pendant l ex cution de la fonction str_S en utilisant la primitive cutClose si l op rateur est un dc tous les r sultats associ s S doivent pouvoir tre retourn s Il suffit de ne pas supprimer les points de choix pos s pendant l ex cution de str_S pour permettre d extraire d autres solutions Par contre une fois revenu au point de choix pos avant l ex cution de str_S la strat gie suivante S 1 n est pas essay e si un r sultat a t trouv lorsque l op rateur est un dk aucun point de choix n est supprim on est ainsi s r que toutes les solutions pourront tre extraites De plus une fois l ex cution de str_S termin e la strat gie suivante S 1 est essay e 2 cette tape est ex cut e lorsqu aucune strat gie de 1 ne peut s appliquer et dans ce cas un fail est engendr R p tition La strat gie iterate S applique r p titivement la strat gie S et retourne tous les r sultats interm diaires des applications successives de S L it ration se termine lorsque pour un terme donn la strat gie S ne peut plus s appliquer Le sch ma de compilation est relativement simple puisqu il consiste g n rer une boucle dans laquelle un point de choix est plac avant toute ex cution de la st
187. de ramasse miettes existent mais on peut distinguer deux grandes familles qui regroupent les gestionnaires avec marquage mark and sweep et les gestionnaires avec copie copy collector Le principe du ramasse miettes mark and sweep est le suivant l adresse de chaque zone de m moire allou e est m moris e dans une table Lorsqu il n y a plus assez de m moire toutes les donn es r f renc es par des variables du programmes sont d cor es pour indiquer qu elles sont vivantes c est la phase de marquage Dans une deuxi me tape la totalit des blocs de m moire le tas est parcourue pour ne conserver que les zones contenant des objets vivants les autres tant rendues au syst me Notons que la complexit de cet algorithme est proportionnelle la taille du tas les objets vivants sont marqu s et les objets morts doivent tre r cup r s Le principe du ramasse miettes copy collector Stop and Copy Using Semi spaces est diff rent l espace m moire g r est divis en deux demi espaces de m me taille un instant donn un seul demi espace est dit actif et toutes les allocations de m moire se font dedans Lorsque la m moire devient insuffisante tous les objets vivants dans ce demi espace sont copi s dans l autre demi espace qui devient actif son tour Le demi espace anciennement actif devenant 11 4 Gestion de la m moire 161 alors compl tement libre Cette approche est int re
188. de tels r sultats est de montrer qu un langage de sp cification fond sur la r criture ayant des bases th oriques solides et une grande expressivit n est pas condamn rester l tat de prototype et qu il peut tre utilis pour r aliser des d veloppements logiciels majeurs tout en am liorant la qualit des logiciels ainsi construits Pour parvenir notre objectif nous tudions particuli rement les points d licats du processus de normalisation associatif commutatif et nous proposons un nouvel algorithme base d auto mates d terministes pour compiler efficacement le filtrage syntaxique Nous d finissons ensuite diff rentes classes de r gles pour lesquelles nous proposons un algorithme efficace de filtrage AC L tude du langage de strat gies nous conduit implanter des primitives originales de gestion du backtracking et d finir un algorithme d analyse du d terminisme permettant de r duire leur usage et d am liorer encore les performances tout en r duisant l espace m moire n cessaire Enfin l implantation des m thodes propos es a donn lieu l laboration de nombreuses optimi sations th oriques et techniques qui peuvent tre largement r utilis es pour implanter d autres langages de programmation par r criture Cette th se pr sente les algorithmes l architecture et le fonctionnement du compilateur ainsi qu une proposition d environnement de sp cification fond e sur l
189. de vec teurs de bits pour repr senter un graphe biparti compact chaque sous motif est associ un vecteur qui indique quels sont les sous termes du sujet qui sont filtr s par ce sous motif Consi d rons une nouvelle fois les motifs fac z f a x g a fac f a x f y g b et le terme clos fac f a a f a g b f g c g b g a Le graphe biparti compact est repr sent par trois vecteurs de bits 2 ee fofafzfo efejofi f a x f y g b g a f a a f ag b f g c g gla Avec cette repr sentation l extraction d un graphe biparti se fait en s lectionnant un sous ensemble des vecteurs de bits La s lection des deux premiers vecteurs par exemple permet de construire le graphe biparti associ au deuxi me motif fac f a x f y g b BCE RECI f a 2 f y 9 b 11 2 Op rations internes Le code g n r par le compilateur suppose qu un certain nombre d op rations sont pr d finies parmi lesquelles on peut citer term_alloc et term_add_onf qui permettent respectivement de construire un symbole constructeur et d ajouter un sous terme un symbole AC pour calculer directement la forme canonique du terme normalise qui permet de re normaliser un terme construit en m moire Cette op ration ne devrait pas tre n cessaire lorsqu on suppose que les termes sont construits en appliquant une strat gie leftmost innermost Il existe cependant dans ELAN une op ration qui permet de remplacer un s
190. des 95 initialisation des listes de 90 multi r sultats strat gie 133 multiplicit d un terme 83 V 67 nat10 programme 173 niveau d un symbole AC 88 nom d une r gle 16 op rateur sans 12 d terminisme classification du 132 non d terminisme analyse du 131 gestion du 99 uniforme 123 non d terministe strat gie 133 O Donnell M J 1 OBJ 2 pr sentation 33 objectif d un compilateur 32 de cette th se 23 des sp cifications alg briques 27 du groupe ELAN 57 one to one approche 83 filtrage 61 op rateur And 133 builtin 28 d injection 12 Or 133 op ration l mentaire 156 pr d finie 155 ordonnancement 113 ordre sur les d mode 133 organisation du compilateur 147 originalit d ELAN 16 36 de Maude 34 du pr processeur 29 Otter 1 outil cr ation d 43 de communication 40 pour sp cifier 27 Paladru lac de xiii parallel innermost 16 parallel outermost 16 parseur d ELAN 29 40 de termes infix s 48 modulaire 144 REFParseur 148 pattern matching voir filtrage pere lien vers 76 performance valuation des 172 probleme de 32 polyn me exemple en ELAN 22 position dans un terme 13 vide 13 Post E 1 pr fixe d un terme 66 recouvrement de 70 pr processeur d ELAN 29 preuve de propri t de programme xiv primitive de gestion des points de choix 101 115 de strat gies 132
191. des points de choix et d autre part tudier des algorithmes de compilation permettant de minimiser l utilisation de ces primitives Dans le cadre de la gestion m moire la d finition de primitives d allocation et de restitution de zones de m moire fait souvent partie int grante 11 4 Gestion de la m moire 159 du langage cible Le langage C propose ainsi deux primitives malloc et free qui permettent respectivement de r server un bloc de m moire et de le rendre au syst me Le probl me est donc de minimiser l utilisation de ces primitives et surtout d viter les fuites de m moire tout bloc de m moire allou doit tre rendu rapidement au syst me lorsqu il n est plus utilis Il existe principalement deux approches pour g rer la m moire d un syst me la gestion explicite des primitives d allocation et de restitution ou la mise en place d un ramasse miettes garbage collector qui poss de une vue d ensemble des zones de m moire allou es et dont un des r les est de rendre transparente pour l utilisateur la restitution des zones qui ne sont plus utilis es Gestion explicite de la m moire Pour le programmeur la gestion explicite de la m moire revient d terminer statiquement les variables qui r f rencent des zones de m moire qui ne sont plus utilis es dynamiquement La difficult de cette analyse d pend des algorithmes implanter mais aussi des structures de donn es utilis es Consid ro
192. deux tapes le suffixe p est dans un premier temps ajout la sous branche tiquet e par un w Lo L w Dans un deuxi me temps le suffixe w p est ins r dans tous les sous arbres L s s Zu Le L s car L s 9 Les expressions trouv es correspondant aux diff rentes valeurs possible de V L sp nous permettent de d river un algorithme de calcul incr mental de cl tures Algorithme 5 1 En m me temps que la cl ture se construit les motifs sont organis s dans une structure arborescente Algorithme 5 1 Calcul incr mental d un arbre de filtrage correspond la cl ture d un ensemble de suffixes 1 ajout du suffixe sp 2 si s w alors 3 si Lu 0 ou L s 0 alors 4 le suffixe p est ajout L s 5 sinon 6 lar te tiquet e par s est cr e puis les suffixes p et w Ly sont ajout s L s 7 finsi 8 sinon 9 siw est un nouveau choix possible une ar te tiquet e par w est cr e 10 le suffixe p est ajout a L w 11 pour tout symbole s 4 w tel que L s 40 faire 12 les suffixes w 5 p sont ajout s L s 13 fin pour 14 finsi Exemple 1 Soit L fga fw L algorithme 5 1 permet de construire la cl ture L de mani re incr mentale les motifs fga et fw sont ins r s l un apr s l autre L ordre d insertion n a aucune influence sur le r sultat c est pourquoi dans la pratique ils sont ins r s au fur et mesure de leur d finition Commen ons par
193. du non d terminisme La nature du langage ELAN fait de sa compilation un r el d fi La pr sence de strat gies et d op rateurs associatifs commutatifs source de double non d terminisme nous am ne tudier des sch mas de compilation originaux reposant sur la d finition de primitives de gestion du non d terminisme Ce chapitre technique pr sente deux nouvelles fonctions setChoicePoint et fail qui permettent d int grer de mani re transparente la gestion de points de choix au langage C Chapitre 8 Compilation des r gles et des strat gies Des sch mas de compilation int grant la s lection d une r gle de r criture l valuation des conditions l application de strat gies et la constuction du terme r duit sont pr sent s L int r t est de pr senter un m canisme uniforme de gestion du non d terminisme li aux strat gies et la pr sence d op rateurs associatifs commutatifs Chapitre 9 Analyse du d terminisme La pr sence de non d terminisme est souvent source d in efficacit Dans ce chapitre nous pr sentons un algorithme permettant d inf rer un mode de d terminisme particulier pour chaque r gle ou strat gie Le mode inf r est ensuite utilis pour modifier et am liorer les sch mas de compilation pr sent s dans le chapitre 8 L efficacit du code g n r se voit ainsi am lior e et sa consommation m moire r duite Troisi me partie Implantation d un compilateur Chapitre 10 A
194. e e saf R can e1 a si s E w et es se E A e2 8 sinon et si sa Ty et ew s e2 A Un automate faiblement d terministe utilisant ces r gles de transition de configurations ca noniques est dit d terministe les transitions tiquet es par w ne peuvent tre appliqu es que s il n existe pas d autre transition tiquet e par s w Ainsi pour une entr e a et un tat e il a Sit y a au plus une seule cha ne de transitions e a R e 8 avec e e E Il peut cependant can arriver qu un terme t soit reconnu par un automate de filtrage faiblement d terministe mais pas par sa version d terministe Reprenons l automate faiblement d terministe de la figure 5 1 on avait bien eo fgb gt r e3 et pourtant en utilisant les r gles de transition canoniques on ne peut construire que la cha ne eo f gb r e2 b avec ez F Le terme fgb n est donc pas can reconnu tant donn un automate faiblement d terministe il est dit canonique si tout terme reconnu par est aussi reconnu par sa version d terministe Le contre exemple pr c dent montre que l automate consid r n est pas canonique il peut cependant le devenir si on tend le langage L en lui ajoutant le terme fgw Consid rons L LU fgw fga fgw gw appel cl ture de l ensemble L Il est maintenant facile de v rifier que l automate associ est bien canonique voir figure 5 3 La p
195. e Kazimierz Dolny Poland Vol 520 of Lecture Notes in Com puter Science Springer Verlag pp 141 150 Earley J 1970 An efficient context free parsing algorithm Communications of the ACM 13 2 94 102 Eker S 1991 Verification of a line drawing architecture using obj3 Technical report Royal Holloway and Bedford College Eker S 1995 Associative commutative matching via bipartite graph matching Computer Journal 38 5 381 399 Eker S 1996 Fast matching in combination of regular equational theories in J Meseguer ed Proceedings of the 1st International Workshop on Rewriting Logic and its Applications RWLW 96 Asilomar Pacific Grove CA USA Vol 4 Electronic Notes in Theoretical Computer Science Forgaard R et Guttag J V 1984 Reve A term rewriting system generator with failure resistant Knuth Bendix Technical report MIT LCS Fukuda K et Matsui T 1989 Finding all the perfect matchings in bipartite graphs Technical Report B 225 Department of Information Sciences Tokyo Institute of Technology Oh okayama Meguro ku Tokyo 152 Japan Futatsugi K et Diaconescu R 1997 CafeOBJ Report Technical Report in preparation Japan Advanced Institute of Science and Technilogy JAIST Ishikawa Japan Futatsugi K Goguen J A Jouannaud J P et Meseguer J 1984 The language OBJ 2 Its syntax semantics and implementation Technical report SRI International Computer Science Laborato
196. e Obj 221 A 5 Maude Obj A 5 1 Ackermann obj so op op op vars eq eq eq endo red red red red red red red red ACK is rts Nat o gt Nat s Nat gt Nat ack Nat Nat gt Nat x y Nat ack o x s x ack s x o ack x s o ack s x s y ack x ack s x y ack s s s o s o ack s s s o s s o ack s s s o s s s o ack s s s o s s s s o ack s s s o s s s s s o ack s s s o s s s s s s 0 ack s s s o s s s s s s s 0 ack s s s o s s s s s s s s 0 A 5 2 Bool3 obj BOOL3 is sort Bool3 ops bO bi b2 gt Bool3 op Bool3 Bool3 gt Bool3 assoc comm op Bool3 Bool3 gt Bool3 assoc comm ops al a2 a3 a4 a5 a6 a7 a8 gt Boo1l3 op op op op op op vars eq eq eq eq eq eq eq and Bool3 Bool3 gt Bool3 or Bool3 Bool3 gt Bool3 not Bool3 gt Bool3 s t f gt Bool3 equal Bool3 Bool3 gt Bool3 s q1 q2 q3 q4 q5 q6 q8 gt Bool3 X Y Z Bool3 b0 X X b0 X bO b1 X X X Y Z X Z Y Z X X X b0 X X X X and X Y X X Y Y 222 Annexe Programmes utilis s pour effectuer les exp rimentations eq eq eq eq eq eq eq eq eq eq endo red red red red red red b2 X X Y b2
197. e block when setting when restoring a choice point the stack Figure 7 1 It is useless to copy the whole system stack This example illustrates the fact that this is useless to copy the whole system stack because only the stack frames of some functions are concerned The next implementation of setChoice Point uses this idea 7 4 3 Notations In order to give a detailed algorithm several notations are needed They are useful to clearly compute memory blocks that have to be saved and restored Let us first consider a simple execution model that consists in viewing a program execution as a sequence of instruction executions function calls and function returns Let us define watch points r1 7 as the first executed instruction after a function call or a function return 7 4 New choice point management 105 SSeS eae SS See ES T1 main 5 ERE E are eee ee T2 Sens eee T3 gt 3 2 1 a setChoicePoint IO Na i TA SE T5 main fa J Sa aa a eee To gt 4 ai Ne RS Re Se ee ee T7 main Stack frame Figure 7 2 Setting watch points and environments When running the program presented in Section 7 4 2 the function main calls g which calls setChoicePoint The first executed instruction when entering main g and setChoicePoint corresponds to watch points 71 T2 and 73 respectively The first executed instruction after setChoicePoint corresponds to 74 Other watch points 75 Te and 7
198. e dans les ATerms Bien que moins compact que le format REF un des int r t de ce nouveau format est d tre lisible mais surtout modulaire une expression du format Efix peut aussi bien correspondre a un simple terme tel que a b nil un module de sp cification ou une sp cification toute enti re Cet aspect devient important lorsqu il s agit de r aliser un parseur ou un pr processeur pour ELAN qui soit capable d analyser des extraits de sp cifications Dans le cadre d un langage compil il est aussi int ressant de pouvoir repr senter chaque module par un terme diff rent afin d offrir des possibilit s de compilation modulaire et s par e M me si l implantation actuelle de l environnement ELAN est fond e sur l usage d un langage de commande de type shell et que les sp cifications sont crites en utilisant un diteur de texte du type emacs dans l optique de d finir de nouvelles fonctionnalit s de l environnement il est n cessaire d tablir des scenarii d actions d utilisateurs telles que celles pr sent es ci dessous l utilisateur veut diter des modules l utilisateur veut utiliser un module pour valuer une requ te en utilisant l interpr teur sachant que le module utilis n est pas toujours le m me Vutilisateur veut mettre en page et pretty printer un module l utilisateur veut compiler une sp cification et utiliser le code g n r pour valuer une requ te
199. e utilis par exemple Lorsque l int gralit du programme REF est lue et que sa repr sentation abstraite est construite en m moire on peut consid rer que toutes les constructions la composant peuvent tre compil es et traduites dans le langage cible D coration de la repr sentation abstraite d un programme REF Au cours de cette deuxi me tape les r gles et les strat gies sont analys es pour pr parer et simplifier l tape de g n ration de code C est ce moment l par exemple que les automates de filtrage sont construits et associ s aux ensembles de r gles correspondants C est aussi au cours de cette tape que l analyse du d terminisme est effectu e pour associer chaque r gle et chaque strat gie son d mode Une des difficult s de cette phase interm diaire est d associer un nom de variable du langage cible chaque symbole apparaissant dans une r gle Ceci afin de m moriser une substitution r sultant de l tape de filtrage ou un r sultat interm diaire obtenu au cours de la construction du terme r duit par exemple Lorsqu on donne ces noms il faut veiller minimiser le nombre de noms utilis s pour r duire la taille des environnements sauvegard s par les primitives de gestion du non d terminisme et il faut aussi veiller ce qu un m me nom de variable soit associ aux sous termes qui apparaissent plusieurs fois dans une expression Ce probl me de nommage est comparer avec les pr
200. e 0 qui joue le r le de symbole de variable anonyme L ensemble des cha nes construites partir de est not X il contient en particulier la cha ne vide ne contenant aucun symbole not e La longueur d une cha ne a X donn e se note a et correspond au nombre de symboles la composant 5 2 Automate de filtrage 63 L ensemble Ts des termes construits sur X est le plus petit sous ensemble de X contenant les cha nes bien form es st1 t telles que s 5 n EN s net t1 tn Ts 5 2 Automate de filtrage tant donn un terme clos t et un ensemble de termes L t1 sta aussi appel s motifs nous voulons d finir une proc dure de d cision dont le r sultat est le plus grand sous ensemble R C L tel que t soit une instance de tous les l ments de R Si R est l ensemble vide on dit que la proc dure choue et qu aucun motif n est reconnu Notre approche consiste d finir une telle proc dure de d cision par un syst me de transition tats finis dont les r gles de transition d pendent de l ensemble initial L Ce syst me de transition appel automate de filtrage dispose d une t te de lecture qui peut se d placer de gauche droite sur une suite de symboles donn e en entr e Cette suite est la repr sentation sous forme de cha ne du terme clos que l on veut reconna tre L automate de filtrage est assez particulier dans la mesure o sa t te de lecture peut se d
201. e 5 2 permet de construire une cl ture r duite L contenant g n ralement moins d l ments que L En particulier on a LC LCL Comme dans l exemple 1 partant d un arbre de filtrage vide l insertion du premier terme fga construit l arbre suivant Le deuxi me motif fw est ensuite ins r l ar te tiquet e par f est suivie puis la branche tiquet e par w et d cor e par fw est cr e L ar te tiquet e par g est alors suivie mais la 72 Chapitre 5 Compilation du filtrage syntaxique diff rence de l exemple 1 l insertion du w est simplifi e seule son instance a est r ins r e et la feuille gauche de l arbre est d cor e par fw On obtient alors f TAT al fu fga fw Cet arbre est plus petit que celui de l exemple 1 l automate associ n est plus cano nique mais faiblement canonique On peut remarquer que sur cet exemple l automate produit est le m me que celui de la figure 5 2 automate n cessitant une strat gie de retour arri re pour implanter la proc dure de d cision recherch e Un ph nom ne identique celui d crit au pa ragraphe 5 2 se produit le terme clos f gb n est plus reconnu par l automate car apr s avoir lu le f et le g il est trop tard pour changer de branche L exemple 2 met en vidence l insuffisance de la cl ture r duite construite par l algo rithme 5 2 Nous avons simplifi le calcul de cl ture d Albert Graf d riv
202. e AC ou au cours de l ex cution des valuations locales Par contre une fois revenu au point de choix pos avant l application de r la r gle suivante r 71 n est pas essay e si un r sultat a t trouv sir est une r gle nomm e apparaissant sous un dk aucun point de choix n est sup prim on est ainsi s r que les autres solutions provenant des valuations locales ou du filtrage AC pourront tre extraites De plus une fois l valuation de r termin e l tape 2 essayera d appliquer les r gles suivantes et en particulier r 1 Lorsque r est la derni re r gle cas o n c est l tape 4 qui sera ex cut e apr s son valuation pour signaler que tous les r sultats ont t extraits 4 cette tape est ex cut e lorsqu aucune r gle de r1 r ne peut s appliquer et dans ce cas un fail est engendr Ce sch ma g n ral de compilation montre que la solution adopt e pour ELAN est particuli re il y a tout d abord une tape de pr s lection qui utilise un automate de filtrage syntaxique Les r gles sont ensuite essay es successivement et pour chacune d elles dont le membre gauche contient un symbole AC une deuxi me tape de filtrage AC extraction et r solution d une graphe biparti est effectu e Cette approche hybride est int ressante parce qu elle permet de s lectionner efficacement une r gle mais elle permet aussi lorsque c est n cessaire d extraire tous les
203. e Vj lt i t lt sj et Vj gt is lt t Q i Q ef i fals aceea LD FACS is sF bani sew gp 126 Chapitre 8 Compilation des r gles et des strat gies cas o fac G s et t ont les m mes symboles de t te mef fac s sp t facu auf tel que u7 u est la fusion tri e sans occurrence multiple de s 1 8p et aP Fe 4 De la d finition pr c dente de mcf il est facile de d duire le r sultat suivant soient s FACS es Spr et t deux termes en forme canonique la fonction mcf appliqu e s et t retourne la forme canonique de fac s Sp t En cons quence la construction d un terme en partant des feuilles bottom up et en utilisant la fonction mcf assure que le r sultat est en forme canonique Renormalisation des instances r ductibles On peut remarquer qu chaque fois qu une fonction C est appel e pour r duire un terme t f s4 sn les sous termes s1 s sont en forme normale Et lorsque la r gle l r est appliqu e pour r duire le terme t on pourrait penser que les instances des variables de sont elles m me en forme normale C est d ailleurs ce qui nous a amen r utiliser directement les instances d finies par o pour construire le terme r duit ro C est en effet le cas mais seulement pour les variables de qui n apparaissent pas directement sous un symbole AC Supposons maintenant que la racine du terme t soit un symbole AC Sa repr
204. e approche est assez difficile mettre en uvre et surtout co teuse en temps De plus elle n aurait que peu d int r t pour ELAN dans la mesure o une grande majorit des termes sont irr ductibles par construction parce que nous utilisons une strat gie de normalisation leftmost innermost C est pourquoi nous avons choisi de renormaliser syst matiquement avant de les utiliser les instances des variables qui apparaissent directement sous un symbole AC du membre gauche Les r sultats exp rimentaux montrent que cette approche permet d viter un grand nombre d tapes de r criture simplement parce que le processus de renormalisation est mis en facteur Nous avons cependant constat que m me si certaines instances de variables taient potentiellement r ductibles dans la pratique ces instances sont majoritairement irr ductibles C est ce qui nous a amen d finir un crit re pour d terminer dans certains cas l irr ductibilit d une instance de variable apparaissant directement sous un symbole AC du membre gauche de la r gle appliqu e Soit un motif l fac t t1 fn un sujet s f4c s1 5m et une substitution o telle que lo ac s L objectif est de d finir un crit re efficace pour savoir si xo est irr ductible On sait que les sous termes 51 5 sont en forme normale par construction on sait aussi 8 6 Compilation des strat gies 127 que si l instance de x est un sous terme d un des s
205. e d application des strategies first garan tit qu une strat gie S est essay e seulement si les strat gies S1 _1 chouent et respectivement pour dc one et first one Pour des raisons de simplicit les op rateurs non d terministes dc one et dc sont implant s par leurs homologues first one et first Il existe cependant une extension concurrente d ELAN tudi e dans Borovansky et Castro 1998 o ces deux strat gies sont implant es de fa on diff rente mais l tude de sa compilation sort du cadre de cette th se Dans la suite de ce chapitre les op rateurs first one et first ne seront plus pr sent s Ceci pour des raisons de clart et de coh rence avec les versions pr liminaires d ELAN mais il faut cependant les garder l esprit Lorsqu une r gle est appliqu e au cours d un processus de r criture il faut seulement savoir avec quelle strat gie appliquer la r gle de one de ou dk Savoir si la r gle est appliqu e dans le cadre d une it ration d une concat nation ou d une autre construction du langage de strat gie n a finalement que peu d importance Les deux probl mes peuvent tre r solus s par ment mais il faut veiller ce que la gestion du non d terminisme des deux approches soit coh rente afin de rendre plus homog ne l int gration des deux solutions Pour des raisons de simplicit et de lisibilit du code g n r nous avons choisi d utiliser les primitives de gestion de
206. e de la r gle contient un symbole AC la notion de filtrage pr sent e en 1 2 doit tre tendue modulo les axiomes d associativit et de commutativit Afin de mieux comprendre ou sentir les difficult s sous jacentes au filtrage associatif com mutatif consid rons les simplifications qui permettent d liminer l addition d une constante nulle et de r duire les polyn mes multipli s par 0 ou 1 Pour d crire cela en ELAN il suffit de d finir les 3 r gles de r criture suivantes rules for Poly P Poly global 0 P gt P end O P gt 0 end 1 P gt P end end Consid rons maintenant le terme X 1 3 X Sans vous en apercevoir vous venez de r aliser un grand nombre de transformations qui font que l objet que vous avez en t te n est peut tre plus X 1 3 X mais 3X2 Cela provient de votre entra nement et facilit manipuler des polyn mes qui font que vous avez inconsciemment regroup les X limin le facteur multiplicatif 1 et permut la variable X avec l entier 3 pour obtenir une repr sentation conventionnelle gt Pla ons nous maintenant dans le cadre d ELAN qui est un langage destin tre ex cut sur un ordinateur ne poss dant aucun go t particulier pour la manipulation des polyn mes Le terme 1 6 Modularit 23 X 1 3 X doit donc tre simplifi en utilisant seulement les r gles d finies dans le programme il s agit donc de trouver une r gle 1 gt r et un filtr
207. e des probl mes de jobshop de taille 10 x 10 par exemple L environnement de preuve de terminaison de compl tude et d atteignabilit d velopp par Thomas Genet est actuellement utilis e dans le cadre d un PostDoc au CNET pour prouver la correction de protocoles de t l paiement par exemple Dans les deux cas la taille du code g n r d passe la centaine de milliers de lignes de C et dans un cas comme dans l autre la pr sence du compilateur est essentielle dans la mesure o certaines preuves n cessitent plusieurs jours de calcul et impliquent l application de plusieurs milliards de r gles de r criture Il n tait pas envisageable de r soudre ce type de probl me dans en un temps raisonnable avant existence d un tel compilateur Perspectives L criture de cette th se semble s achever mais ce n est s rement pas le cas des travaux de recherche initi s au cours de ces derni res ann es Poursuivre l tude des environnements de sp cification en s int ressant particuli rement leur architecture ainsi qu aux moyens de coordination devrait permettre terme de d finir des environnements ouverts capables d int grer et de coordonner plus facilement des outils de preuve et de r solution h t rog nes par exemple Continuer l tude des langages de sp cification base de r gles et de strat gies en s int ressant particuli rement au formalisme aux preuves et aux techniques d implantati
208. e e soit un tat de la branche correspondant st 4 en supposant qu il n y a pas de choix w dans cette branche un jumpNode reliant e l tat fils de l ar te w doit tre cr Partant d un automate de filtrage correspondant une cl ture r duite la construction d un automate de filtrage avec jumpNode se d compose en trois tapes 1 si aucune ar te tiquet e par le symbole w ne part de l tat initial eg un tat particulier d chec e ainsi qu une r gle de transition d tats 6 eow ej sont ajout s l automate pour permettre de prendre en compte un chec du filtrage 5 6 Automate de filtrage avec jumpNode 77 2 l algorithme 5 3 est appliqu r cursivement sur l tat initial de l automate en partant d une pile vide pour construire un chainage qui associe chaque tat de l automate un lien vers son p re La notion de p re d un tat correspond la notion de pere d finie sur les termes consid rons par exemple le terme ast1 t4 6 et son sous terme ti le symbole s est appel p re de t parce que t est un sous terme direct de s Cette notion s tend aux automates de filtrage de sorte que s il existe deux r gles de transition d tats i eisi e et 6 8 s telles que s soit le p re des sous termes Sjti t s l tat e est appel p re de ej Il faut noter que l tat initial n a pas de p re Al
209. e et de sp cifications alg briques concurrentes Les diff rentes combinaisons de ses caract ristiques fondamentales alg bres avec sortes ordonn es sortes cach es et la logique de r criture Diaconescu 1996 sont souvent repr sent es par le cube CafeOBJ Diaconescu et Futatsugi 1996 Le langage CafeOBJ Futatsugi et Sawada 1994 Futatsugi et Nakagawa 1996 Futatsugi et Diaconescu 1997 pr serve la plupart des caract ristiques du syst me OBJ 3 savoir la syntaxe infixe le sous typage le typage dynamique avec traitement d erreurs et les modules param tr s Dans ses premi res versions le syst me CafeOBJ tait distribu avec un interpr teur crit en Common Lisp Depuis pour parer des probl mes de performances relativement m diocres des techniques de compilation utilisant une machine abstraite ont t d velopp es Il existe actuellement deux compilateurs ind pendants TRAM Ogata Ohara et Futatsugi 1997 et Brute Ishisone et Sawada 1998 Ce dernier compilateur poss de une machine abstraite plus efficace et surtout plus puissante dans la mesure o elle permet d effectuer de la r criture modulo les th ories associatives et commutatives par exemple ASF SDF Ce syst me se distingue des trois autres dans la mesure o le langage de sp cification est de loin le plus simple Il se compose d un formalisme de sp cification alg brique ASF permettant de d finir des r gles de r criture conditionnelles
210. e ex cution c est un handicap parce qu il faut acc der en permanence la signature De plus lorsqu on consid re un terme le seul moyen de conna tre sa sorte terme ou entier est d acc der la signature du symbole p re ce qui n est pas toujours possible Le probl me de cette repr sentation est que la sorte d un terme n est pas cod e dans sa repr sentation Il existe cependant une variante d implantation permettant de distinguer l ex cution les pointeurs des entiers Cette variante n est videmment pas pure parce que li e au fonction nement des processeurs actuels mais elle est largement utilis e dans d autres implantations de langages L id e consiste remarquer que pour des raisons d alignement tous les pointeurs sont des multiples de 4 ou de 8 ce qui signifie que les deux derniers bits de leur repr sentation bi naire ont toujours 0 pour valeur Il suffit alors de repr senter les entiers en mettant le dernier bit 1 cela s appelle un tag pour qu il soit possible de les diff rencier des pointeurs Cette approche oblige videmment recoder tous les entiers en effectuant un d calage de bits mais la pratique montre que ces op rations sont efficaces et que l utilisation d entiers d cor s par un tag ne ralentit les op rations que de 10 environ par rapport l utilisation d entiers classiques C est cette variante que nous avons choisi d utiliser dans le cadre d ELAN parce
211. e fil trage pr c dente le d mode de l valuation locale courante est soit multi soit nondet et se calcule par And multi d mode Lorsque l valuation locale est un choose try end il faut la voir comme un moyen de mettre en facteur un ensemble de r gles ayant un m me membre gauche Le d mode de l valuation locale d pend donc de la strat gie d application de la r gle si op rateur d application est un one il faut calculer la conjonction des d mode de chaque branche try avec l op rateur And Si l op rateur de strat gie est un all il faut calculer la disjonction des d mode de chaque branche try avec l op rateur Or Le d mode d une branche est la conjonction du d mode des sous valuations locales la composant Le d mode d une r gle R se calcule en effectuant la conjonction op rateur And des modes de ses valuations locales Lorsque la r gle ne poss de aucune valuation locale son mode est dit d terministe d mode det L application d une r gle peut videmment chouer mais le type d chec n est pas le m me suivant qu il s agisse d une r gle nomm e ou non lorsqu une r gle non nomm e ne peut pas s appliquer sur un terme t le terme n est pas modifi D un point de vue analyse du d terminisme on a bien un et un seul r sultat et c est pourquoi une r gle sans valuation locale est dite deterministe lorsqu une r gle nomm e ne peut pas s appliquer sur un terme t
212. e gauche est inactiv e Dans le cadre d un calcul d terministe aucun point de choix n est pos ce qui permet de b nificier de l optimisation propos e Construction d un terme en forme canonique La construction des graphes bipartis tudi e dans le chapitre 6 suppose que les motifs et le sujet sont en forme canonique Plut t que de construire un terme et de re calculer sa forme canonique apr s chaque tape de r criture nous proposons de maintenir la forme canonique d un terme au cours de sa construction Lorsqu un nouveau Q 7 terme t est ajout comme sous terme de s fac s i pl si un sous terme s quivalent existe d j sa multiplicit est incr ment e sinon le sous terme t qui est en forme canonique par ss Q A sps a construction est ins r dans la liste s sp une position compatible avec l ordre choisi Si le symbole racine de t est fac une tape d aplatissement est effectu e et les deux listes de sous termes sont fusionn es et tri es par un algorithme de merge sort La fonction mcf qui prend en argument deux termes s fac s1 Sp et t GP nni tr en forme canonique est d finie de la mani re suivante cas o fac G s et t ont des symboles de t te diff rents s il existe i dans 1 p tel que s t la multiplicit a est incr ment e de un Q i l Q merase sms rite ets ARIE la ep sinon il existe i dans 1 p tel qu
213. e la branche correspondant st1 t4 0 est nouvelle L s La figure 5 5 repr sente de mani re sch matique la structure des arbres construits Supposons qu il existe un terme clos t qui soit reconnu par l automate A mais pas par l automate m moire B Cela signifie que l automate B s arr te dans un tat non ter minal Cet tat fait partie des nouveaux tats construits pour passer de B B sinon le terme aurait t reconnu par A et donc par B A et B sont quivalents par hypoth se d induction Le terme t tant reconnu par A cela signifie qu il n y a pas d chec dans les branches 3 et y l automate B s arr te donc dans un tat de la branche sti tus Mais par d finition un automate m moire ne peut pas s arr ter dans une branche correspon dant un terme qui aurait pu tre compl tement lu par une r gle de transition tiquet e par un w Il y a donc une contradiction qui montre qu il ne peut pas exister de terme t reconnu par A qui ne soit pas reconnu par B 5 6 Automate de filtrage avec jumpNode 75 S Sj til B ti us Ai A A B Fic 5 6 Les deux automates A et B illustrent le r sultat de l insertion du suffixe p awB Le triangle gris repr sente le sous arbre d j pr sent avant l insertion de 3 Le suffixe B est copi dans toutes les autres branches commen ant par un symbole s w Il faut noter da
214. e la m moire pour repr senter le symbole f et m moriser des liens vers les sous termes s1 5n Lorsque f est un symbole AC il faut en plus faire attention l ordonnancement des sous termes s le terme t doit tre en forme canonique ce qui peut nous amener aplatir et r ordonner certains sous termes Le terme t f s1 s est construit de mani re incr mentale en utilisant une fonction mcf qui prend en argument deux termes fac s sp et t et a retourne la forme canonique de fac s 8p 07 lorsque f est un symbole defini le terme t est construit mais il est potentiellement r ductible parce qu il existe des r gles dont le symbole de t te du membre gauche est f On utilise alors la fonction fun_f correspondant l ensemble des r gles non nomm es dont le membre gauche commence par le symbole f pour essayer de r duire le terme t Le r sultat est soit le terme t s il est irr ductible soit une forme normale de t R utilisation du membre gauche Il existe une m thode bien connue Sherman 1994 Didrich Fett Gerke Grieskamp et Pepper 1994 Vittek 1996 qui permet d am liorer l efficacit du processus de r criture L id e consiste minimiser le nombre d allocations m moire au cours de la construction du terme r duit Pour cela il est possible d isoler les constructeurs du sujet filtr s par le membre gauche de la r gle et de les r utiliser pour construire le term
215. e o tels que lo 4c X 1 3 X il faut noter ici l utilisation de l galit modulo AC 16 Consid rons maintenant la troisi me r gle 1 P gt P et la substitution qui associe le terme X 3 X la variable P nous pouvons alors remarquer que cette r gle peut s appliquer sur le terme X 1 3 X pour le simplifier en X 3 xX Toute la difficult du filtrage AC consiste trouver de telles substitutions parce qu il faut prendre en compte les diff rentes mani res d associer et de permuter les l ments qui composent le membre gauche de la r gle et le terme r duire En contre partie l expressivit des r gles de r criture est accrue ce qui a pour principal effet positif de diminuer le risque d erreur de la part du programmeur et d am liorer consid rablement la s ret et la qualit des sp cifications ainsi crites Etant donn e la complexit des algorithmes de filtrage modulo AC il est clair que Vutilisation de symboles AC dans une sp cification entraine n cessairement une baisse g n rale des performances du syst me en terme de nombre de r gles de r criture appliqu es par seconde En revanche lorsqu un m me probl me est sp cifi une fois en utilisant des symboles AC et une autre fois sans en utiliser il n est pas aussi vident de savoir quelle sp cification s ex cutera le plus rapidement Un des objectifs de cette th se est principalement de montrer que des techniques de compilation particuli res pe
216. e r duit destructive 8 5 Construction du terme r duit 125 update Un exemple de r utilisation du membre gauche est donn dans la figure 8 2 Cette approche n est valide que si les constructeurs r utilis s ne sont pas partag s ce qui oblige maintenir dynamiquement une information valeur bool enne ou compteur de r f rences qui indique pour chaque constructeur s il est partag ou non cons ui CONS FIG 8 2 Lorsqu on consid re la r gle append cons e l z cons e append l z appliqu e au terme append cons a nil cons b nil par exemple il est possible de r utiliser les constructeurs append et cons du sujet pour construire le terme r duit cons a append nil cons b nil Il suffit alors de modifier deux pointeurs pour viter toute allocation dynamique de m moire Dans le cadre de la r criture avec strategies ce type d optimisation est difficile mettre en uvre simplement parce qu un retour arri re provoqu par un fail peut n cessiter l acc s une structure qui a pu tre r utilis e entre temps Pour faire cohabiter ce type d optimisation avec la gestion du non d terminisme une m thode consiste sauvegarder le sujet avant de poser un point de choix De cette fa on lorsqu un point de choix est pos le sujet devient un terme partag et la r utilisation des constructeurs du membr
217. e r gle l r donn e l interpr teur cherche un filtre de l vers s puis v rifie les conditions de la r gle Une fois le couple r gle filtre trouv le terme r duit est construit Dans Brute Ishisone et Sawada 1998 qui est une machine abstraite pour CafeOBJ c est approximativement la m me approche qui a t choisie mais la strat gie de s lection des r gles volue dynamiquement en fonction du terme clos r duire ceci pour optimiser l tape de filtrage Brute int gre une autre optimisation qui consiste regrouper les r gles conditionnelles ayant le m me membre gauche pour factoriser l tape de filtrage lorsqu un filtre correspondant un ensemble de r gles est trouv les conditions sont valu es et seulement apr s une r gle ayant des conditions satisfaisables est s lectionn e pour construire le terme r duit Dans le compilateur ASF SDF van den Brand Klint et Olivier 1999 c est encore une autre approche qui a t choisie l valuation des conditions et la construction du terme r duit sont int gr s au processus de filtrage many to one Bien qu ASF SDF permette de d finir des op ra teurs associatifs le filtrage modulo l associativit est compil int gralement en des structures de contr le du langage cible ce qui n est pas le cas de l approche pr sent e dans le chapitre 6 des structures de donn es telles que les graphes bipartis sont engendr es au cours de l ex cution
218. e r gle non nomm e r r1 r revient appliquer la strat gie dc one r1 r sur le terme s On comprend alors mieux comment utiliser un m me sch ma de compilation pour compiler aussi bien les r gles non nomm es que les r gles nomm es C est cette volont d avoir un code g n r lisible un sch ma unique de compilation des r gles et une gestion coh rente des points de choix qui nous a amen s parer clairement les tapes de filtrage de s lection d une r gle d valuation des conditions et de construction du terme r duit Les deux premiers points sont abord s au paragraphe 8 3 et les deux derniers sont respecti vement abord s dans les paragraphes 8 4 et 8 5 8 3 Compilation du filtrage et de la s lection des r gles Consid rons un ensemble de r gles r1 r et tudions comment g n rer une fonction C prenant un terme clos s en argument et retournant un terme s correspondant l application 8 3 Compilation du filtrage et de la s lection des r gles 117 d une r gle r sur s Afin de respecter les contraintes vues pr c demment cette fonction doit avoir le comportement suivant un fail est engendr lorsqu aucune r gle ne s applique si la fonction correspond un dc one r1 7n une fois le r sultat retourn tous les points de choix pos s pendant l ex cution de la fonction sont enlev s en utilisant la primitive cutClose Ainsi un chec ult rieur
219. e s lectionne une strat gie 5 S telle que l application de S t n choue pas lop rateur select all s lectionne le plus grand sous ensemble S C S tel que VS S l application de S t n choue pas Dans les deux cas l op rateur choue si l ensemble des r sultats de toutes les strat gies est vide Contr le du nombre de r sultats tant donn e une strat gie S l op rateur one construit une strat gie one S qui retourne au plus un r sultat parmi ceux de l application de S un terme t quelconque l op rateur all construit une strat gie all S qui retourne tous les r sultats correspondant l application de S un terme t quelconque En utilisant ces quatre primitives les constructeurs de strat gie d ELAN sont d finis par les axiomes suivants o S est aussi bien une strat gie qu une r gle de r criture dc one S1 select one one one de Si 5352 Sn select one all S all S dk S1 Sn select all all S1 all S Notons que les op rateurs dc et dk sont quivalents lorsqu ils sont appliqu s un argument unique de S dk S S 9 2 Classification du d terminisme Nous classifions les strat gies en cinq cat gories en fonction du nombre maximum de r sul tats qu elles permettent de calculer un ou plus de un et suivant qu elles peuvent chouer ou non Dans ce paragraphe nous ne consid rons que des ter
220. e se d placer plus rapidement vers la droite Ce d placement unidirectionnel assure que le terme d entr e n est inspect qu une seule fois pour d terminer s il appartient au langage reconnu par l automate Nous avons vu qu tant donn un ensemble de motifs L partir de sa cl ture L on peut facilement construire un automate canonique reconnaissant le langage L L inconv nient de cette approche est que l automate ainsi construit comporte un nombre g n ralement important d tats Une autre approche consiste calculer la cl ture r duite L C Let d river l automate faiblement canonique associ Nous avons vu que la version sans m moire de cet automate faiblement canonique ne reconna t pas le langage L mais nous allons voir que la version m moire est bien quivalente l automate canonique construit partir de la cl ture L La preuve de ce r sultat se fait par induction sur la longueur des suffixes composant l en semble L reconna tre et en utilisant un raisonnement par l absurde pour comparer les arbres construits par les algorithmes 5 1 et 5 2 Il est clair que la cl ture et la cl ture r duite de l ensemble L e sont gales fe fe te Partant d un automate canonique A et d un automate faiblement canonique m moire B quivalent nous voulons montrer que l ajout d un suffixe p en utilisant les algorithmes 5 1 et 5 2 produit bien deux automates A et B
221. e si le terme c se simplifie en la constante true Ici ce n est plus la notion d galit mais la valeur true et la sorte bool qui doivent faire partie int grante du syst me La sorte bool et les op rateurs true sont alors dit l mentaires ou builtins Pour des raisons de simplicit et d efficacit un certain nombre de modules d finissant des sortes et op rations l mentaires sont int gr s au syst me ident la sorte ident permet de repr senter des listes de caract res alphab tiques Par exemple les identificateurs a b ab etc sont des l ments composant la sorte ident bool comme mentionn pr c demment la sorte bool permet de repr senter les valeurs de v rit true et false utilis es lors de l valuation des conditions ainsi que certaines op rations l mentaires telles que la conjonction la disjonction ou la n gation and or et not builtinInt la sorte builtinInt permet de repr senter les entiers sign s ainsi que les op rations usuelles addition soustraction multiplication etc builtinString la sorte builtinString permet de repr senter des cha nes de caract res une suite de caract res ASCII comprise entre des doubles quotes builtinStdio ce module offre la possibilit au syst me d effectuer des entr es sorties cmp ce module est particulier dans la mesure o il est param tr par un nom de sorte s Il d finit alors des op rations de comparai
222. e solution partielle est donn e sur la figure 8 1 L valuation locale est une condition de filtrage faisant intervenir une strat gie cela consiste appliquer la strat gie select sur un terme quelconque ici le terme 0 et filtrer la variable p5 vers le r sultat trouv Le probl me de filtrage est ici trivial Ce qui est int ressant c est de bien comprendre comment se d roule l application de la strat gie select dk r1 r8 D apr s le sch ma de compilation pr sent au paragraphe 8 3 la fonction C correspondant la stra t gie essaie successivement les r gles r1 rg en posant un point de choix avant chaque ap plication L valuation de select 0 va donc ex cuter la fonction C appliquer la r gle r et retourner le r sultat 1 qui est affect p5 L ex cution se poursuit par l valuation du predicat ok 1 1 6 8 5 1 ni1 Le r sultat tant false voir figure 8 1 la condition choue un fail est g n r ce qui a pour effet de rendre le contr le au point de choix pos avant l application de ri Le contexte d ex cution de la fonction est alors r activ la r gle suivante r2 est essay e et la valeur 2 est retourn e puis affect e p5 8 4 Compilation des valuations locales 123 Ce m canisme g n ral se poursuit jusqu ce que la derni re valuation locale if ok 1 p8 p7 pl nil soit valu e sans chec Le membre droit de la r gle est alors construit 4 2 7 3 6 8 5 1
223. e structure de filtrage AC e Symbol cette classe abstraite permet de repr senter les diff rents types de symboles dans la repr sentation abstraite d un programme REF On peut distinguer deux cat gories de symboles SymbolCode est une classe qui permet de repr senter les symboles pour lesquels il existe une r gle de grammaire hors contexte d finissant leur signature Dans une sp cification le nombre de ces symboles est toujours fini ce qui nous permet de leur associer un num ro unique appel code d o le nom SymbolCode On peut distinguer quatre sous cat gories de symboles SymbolAC qui repr sente les symboles AC SymbolFree qui repr sente les symboles de la th orie vide SymbolVariable qui repr sente les variables SymbolBuiltin qui repr sente les symboles dont la s mantique est pr d finie par le langage ELAN Les constantes T et L true et false par exemple ont une syntaxe libre d finie dans un module ELAN mais leur s mantique est impos e et doit correspondre aux valeurs bool ennes de v rit SymbolValue est une classe qui permet de repr senter les symboles dont la syntaxe et la s mantique sont d finies par le langage Ces symboles font toujours partie d un ensemble infini de symboles et c est pour cela que la syntaxe ne peut pas tre d crite partir d un nombre fini de r gles de grammaires hors contexte Dans le langage ELAN on distingue trois cat gories de tels symboles S
224. e utilis es pour am liorer la vitesse d ex cution du programme pr voir figure 4 2 Repr sentation abstraite Programme source Parseur Semi compilateur Repr sentation Int 6 aay nterpr teur optimis e Fic 4 2 Dans le cadre d un semi compilateur le programme est lu par le parseur puis la repr sentation abstraite du programme est transform e compil e pour obtenir une nouvelle repr sentation abstraite optimis e qui sera ex cut e en utilisant un interpr teur Contrairement un interpr teur un compilateur pour un langage L ne permet pas d ex cuter directement un programme pz crit dans le langage L Un compilateur n est rien d autre qu un outil permettant de traduire un programme crit dans un langage L appel langage source vers un autre programme quivalent crit dans un autre langage M appel langage cible voir figure 4 3 Deux programmes pp et pm sont quivalents si partir des m me donn es e ils retournent les m mes r sultats r En supposant qu il existe deux interpr teurs Ir et Im on aurait pr quivalent pm lt gt 11 p1 e Im pm e r La situation semble assez claire les compilateurs servent traduire des programmes d un langage vers un autre et les interpr teurs permettent de les ex cuter 4 1 Interpr teur Compilateur et Machine abstraite 55 P rogramme Parseur source Repr
225. earch setChoicePoint and fail can also be used to compile languages with some features inspired by the logic programming paradigm This is a good alternative to avoid using an abstract machine and to get interesting performances The two functions were originally designed to compile the ELAN language Some examples of compilation schemes are given in Moreau 1998b Their plug in designs make them easy to use conventional programming techniques such as function calls local variables parameters passing modular compilation are compatible with the proposed C language extension Having a readable code is a key point to be able to design 112 Chapitre 7 Gestion du non d terminisme new complex compilation schemes When designing compilation schemes for a new language the backtracking management if any is always a difficult task to solve The proposed approach seems to be a good compromise between simplicity and efficiency it provides both high level concepts such as choice points and backtracking and a low level implementation in assembly to get good performances Experimental results show that the proposed implementation is comparable with an ad hoc approach like the one used in optimised WAM implementations Chapitre 8 Compilation des r gles et des strat gies 8 1 Tour d horizon 113 8 2 Solution retenue pour ELAN 115 8 3 Compilation du filtrage et de la s lection
226. ec par les autres reines se trouvant d j sur l chiquier Sa d finition est la suivante 168 Chapitre 12 Exp riences pratiques rules for bool p d diff int 1 list int global ok diff d nil gt true end ok diff d p 1 gt false if d p diff end ok diff d p 1 gt false if p d diff end ok diff d p 1 gt ok diff 1 d 1 end end La strat gie et les trois r gles suivantes permettent quant elles de cr er l ensemble 0 U 1 U U n et den extraire les l ments un un rules for set Set 0 gt Empty U 0 end Set i gt Set i 1 U i end extractrule i US gt i U S end end strategies for set extractPos gt dk extractrule end end Il faut noter que la r gle extractrule s applique sur un ensemble S et s lectionne par filtrage AC un l ment i et un ensemble S tels que SU i S L application de la r gle permet de construire le terme i U S dans ce dernier cas le symbole GU int set set n est pas AC Avec ce codage particulier le programme de r solution du probl me des n reines s exprime avec seulement deux r gles de r criture et une strat gie rules for list int pos int S reste set 1 listlint l local queensrule queens S 1 gt queens reste pos 1 where set pos U reste extractPos S if ok 1 pos 1 end final queens Empty l gt 1 end end strategies for list int queens
227. ed by the GNU C compiler Stallman 1995 The gcc compiler makes it possible to take the address of labels and later on to jump to those addresses It also offers the possibility to insert inline assembly code and to specify the assembly name of a function With those extensions it is now possible to translate any branching by a goto statement When using one of the three presented schemes the structure of a program is not taken into account Parameter passing cannot be done in a natural way Instead global variables are used to communicate arguments from caller to callee That is why local variables have to be saved before doing a jump and classical function calls have to be simulated As a matter of fact it is very difficult for a human to write a program in these conditions and the presented compilation schemes can only be used in automatically generated programs Even if the three presented methods are efficient and well designed to implement a WAM like abstract machine it is still difficult to use them to design new compilation schemes because resulting programs are often difficult to read 7 4 New choice point management 103 7 4 New choice point management In this section we present algorithms and implementation techniques of the two new functions setChoicePoint and fail The key idea of our approach is to use the system stack and only one environment stack to store values that have to be saved Consequently there is no restrictio
228. ee ae te iu m ee re 49 Le d veloppement de l environnement de sp cification ELAN est anim par un double objec tif ELAN doit tre un environnement permettant de prototyper rapidement des outils com plexes tout en assurant une certaine qualit et s ret du logiciel ainsi construit Le langage de sp cification doit donc tre suffisamment puissant et expressif pour permettre le d ve loppement rapide et la mise au point d algorithmes complexes L environnement doit aussi permettre de rendre utilisables les prototypes cr s en assurant une certaine ouverture vers le monde ext rieur et une vitesse d ex cution raisonnable La conception d ELAN doit aussi permettre de mieux comprendre et d am liorer la qualit des environnements de sp cification Le syst me ELAN n est donc pas seulement orient vers les utilisateurs Il doit aussi permettre aux concepteurs d exp rimenter facilement de nouvelles id es Pour cela sa conception doit permettre l int gration de nouveaux modules le remplacement de certains composants et le travail en parall le de plusieurs chercheurs ou quipes de recherche Le premier point est abord dans cette th se travers la r alisation d un compilateur En effet celui ci a pour objectif d aider l utilisateur cr er des programmes ex cutables qui soient d une part efficaces mais aussi ind pendants afin de les consid rer comme des composants et les int grer dan
229. effectue l image de la compilation d un ensemble de r gles mais sans se soucier de l tape de filtrage Suivant l op rateur appliqu il faut retourner un seul ou tous les r sultats d une stra t gie S ou encore tous les r sultats de toutes les strat gies 1 Sn La compilation de S consiste compiler chaque sous strat gie S et essayer d appliquer successivement les strat gies 1 Sn Le code de la fonction str_S est alors compos d une suite d appels aux fonctions str_S s o chaque appel est pr c d par la pose d un point de choix Lorsqu un r sultat est trouv pour une sous strat gie S un saut vers l tape 1 suivante est effectu 128 Chapitre 8 Compilation des r gles et des strat gies Compilation du processus de normalisation struct term normalise_F struct term subject struct term res match_state ms NULL Begin syntactical matching bitSet32_set mask32 0 bitSet32_set mask32 1 Begin AC matching indice MS_init amp ms match _subterm_F pattern_list_F if bitSet32_get mask32 1 struct term substitution 3 lhs F zExt f y g b f a x substitution_build subject ms substitution variable_extract_F 1 rhs F zExt h x y if isMonoColor substitution 0 substitution 0 normalise_F substitution 0 TERM_ALLOC node_h code_h node_h gt subterm 0 substitution 2 node_h gt
230. ement sont alors construits et la r gle toute enti re peut tre repr sent e en m moire Il faut pour cela cr er les unit s lexicales et les symboles qui apparaissent dans les termes et la r gle On peut par exemple citer extractrulet qui est un lex me de classe LexemRuleName extract qui est un symbole de la classe Sym bolFree compos de quatre lex mes appartenant aux classes LexemIdentifier et LexemChar et le symbole VAR O de la classe SymbolVariable qui est compos d un lex me de la classe LexemVariableName 10 3 Fonctionnement du compilateur 151 En m me temps que la repr sentation abstraite d un programme REF se construit certaines transformations sont effectu es en parall le afin de simplifier les traitements ult rieurs Les r gles sont par exemple regroup es en fonction de leur nom ou du symbole de t te du membre gauche dans le cas d une r gle non nomm e Les termes comportant des symboles AC sont ensuite aplatis et mis en forme canonique et les r gles dont le membre gauche est non lin aire sont transform es en des r gles lin raires conditionnelles les variables qui apparaissent plusieurs fois dans le membre gauche sont renomm es et leur galit est test e par des conditions Ces tapes de transformation permettent de d tecter les r gles qui n appartiennent pas aux classes de motifs d finis dans le chapitre 6 et pour lesquelles un algorithme de filtrage AC plus g n ral doit tr
231. end FOR EACH I builtinInt B builtinInt SUCH THAT I listExtract elem 1 AND B I 1 ANDIF I gt 0 prec x I gt x B end fact d gt d 1 end fact x gt x fact prec x end fib d gt d 1 end fib d 1 gt d 1 end fib x gt fib prec x fib prec prec x end end end A 4 6 Set Cet exemple se compose de trois modules set sequence et powerset module set X import global bool int sequence X end sort X set X end operators global emptyset_X set X emptyset set X alias emptyset_X mkSet sequence X set X U set X set X set X pri 100 U set X set X set X alias U Q I set X set X set X pri 105 I set X set X set X alias I set X set X set X pri 110 A 4 Elan 217 in card end X set rules for set X set X set X set X alias X bool set X int L M sequence X E F X S T set X b bool global S U emptyset gt S end mkSet L U mkSet M gt mkSet L M end emptyset I S gt emptyset end mkSet E I S gt T where b E in choose try where T mkSet E if b try where T emptyset if not b end end mkSet E L IS gt mkSet E I S U mkSet L I S end emptyset S gt emptyset end mkSet E S gt T where b EinS choose try where T emptyset if b tr
232. entr e a t compl tement lu Je F tel que ep t p e Etant donn un ensemble de termes L t1 tn C Ty on dit que l automate de filtrage reconna t le langage L si toute instance d un terme de L est reconnue par A Un exemple d automate de filtrage reconnaissant le langage L fga fw est donn sur la figure 5 1 64 Chapitre 5 Compilation du filtrage syntaxique Co f W Q Q Fic 5 1 Cet automate reconna t le langage L fga fw FIG 5 2 Les tats terminaux de cet automate sont d cor s afin d implanter une proc dure de d cision pour le langage L fga fw Partant d un ensemble de motifs L il est facile de construire un tel automate un tat initial est cr et pour chaque ensemble de termes commencant par un m me symbole de t te un nouvel tat et une r gle de transition d tats sont cr s L algorithme s applique ensuite r cursivement sur les sous termes L automate ainsi construit n est g n ralement pas d terministe dans la mesure o deux configurations finales diff rentes peuvent tre atteintes en partant d une m me configuration initiale Rappelons notre objectif initial il s agit de d finir une proc dure de d cision pour un lan gage L Etant donn un terme clos t cette proc dure doit retourner le plus grand sous ensemble RCL tel que t soit une instance de tous les l ments de R L automate pr c demment construit peut t
233. er des en sembles et d effectuer des op rations telles que le calcul de l ensemble des parties d un ensemble donn voir annexe A 4 Le benchmark pr sent sur la figure 12 8 consiste calculer la cardi nalit de l ensemble P 1 n L exemple Nat10 correspond un syst me de r criture modulo AC pr sent dans Contejean March et Rabehasaina 1997 Ce syst me permet d effectuer des calculs arithm tiques sur les entiers et a pour particularit d utiliser 56 r gles commen ant par le symbole AC 11 r gles commen ant par le symbole AC et 82 r gles syntaxiques l poque les auteurs conjectu raient dans leur article que des techniques de compilations many to one devraient permettre d am liorer les performances de ce syst me 7 Cet exemple tait originellement implant en CiME qui est plus un prouveur automatique qu un outil de 174 Chapitre 12 Exp riences pratiques Compilateur 5x104 Se al 2x104 aa 500 2000 i 200 500 100 50 Interpr teur 2 4 6 8 Bool3 appliqu and ay n et not or not ai not an nombre de r critures par seconde O sormurod us qmo Ino91d1oqur Inoyerrduos u0121919998 Fic 12 7 Evaluation des performances de Bool3 o gt E 5 a Os E 5000 D 105 100 F 77 500 2 7 g l E 10 _ Compilateur Z Le i Compilateur 200
234. er les valeurs des ensembles suivants sp s p wp s wp si L s 40 s p s pour s s Pour calculer V L sp LU sp nous distinguons deux cas 1 le suffixe ajout commence par un symbole qui n est pas une variable s w V L sp LU shy U sp s sex U S V Ls sp s U sV Ls sp s s s J V Ly 0 UsV Ls p s s sLs UsV Ls p s s Il faut encore distinguer deux possibilit s Lo You L s 4 dans ce cas on a Ls L s Comme Ugs S Ls C LC V L sp on en d duit V L sp LU sV L s p Partant de l ensemble L cela revient ajouter r cursivement le suffixe p au sous ensemble L s qui peut tre ventuellement vide Ly 0 et L s dans ce cas ona Ls ue et V L sp LU sV w L p Ce cas est un peu plus compliqu le sous ensemble w L est cr puis le suffixe p lui est ajout L ensemble tant videmment ajout L 5 3 Cl tures d un ensemble de motifs 69 2 le suffixe ajout commence par une variable s w V L wp U ss U wp s SEX U s Le up s UwV Le uphu s Zw U sV Le w p UwV Lu p U sV 00 s w s Aw L s 0 L s 0 U s V Ly dut p UwV La P su L s 0 L op rateur de cl ture tant monotone on peut ajouter l ensemble L l ensemble r sultat ce qui nous donne V L wp LU U s V Lg w p UwV Lu p s Zw L s 0 Cela correspond une insertion en
235. er temps l effet benchmark Maude et le compilateur ELAN ont t d velopp s en parall le en voyant alternativement l un am liorer ses performances par rapport l autre sur ce type d exemple Steven Eker a par ailleurs d velopp d excellentes techniques de gestion m moire de gestion du partage des termes et de greedy matching Ces derni res techniques rapprocher de l algorithme glouton pr sent chapitre 6 sont des sp cialisations de l algorithme de filtrage AC qui permettent d extraire efficacement une solution d un probl me donn Pour cela des heuristiques sont appliqu s mais il se peut qu une solution existe sans qu elle puisse tre trouv e par cette classe d algorithmes Dans ce cas l algorithme de filtrage g n ral est utilis Il faut aussi noter que ce type de m thode ne fonctionne que pour des motifs relativement simples et des r gles de r criture non conditionnelles 13 Plus de 70 Mo and 115 Mo taient respectivement utilis s avant l arr t du calcul 12 4 Comparaison avec d autres implantations 181 temps en secondes 16 18 20 22 utilisation de Nat10 pour calculer fib n Fic 12 11 Efficacit compar e sur Nat10 La deuxi me raison pour laquelle notre compilateur ne va pas forc ment plus vite qu un interpr teur peut s expliquer par la nature des probl mes trait s et le fait que de nombreuses structures de donn es doivent tre cr
236. er une fonction que jai commenc m int resser clairement au calcul symbolique et aux notions de structures de donn es telles que les arbres et les piles De mani re presque magique la r union de ces notions permettait de repr senter des fonctions et de calculer leur d riv e ou des valeurs en certains points Par la suite un projet scolaire m a amen concevoir et r aliser un compilateur pour un sous ensemble du langage Pascal Je dois avouer que l id e d analyser la structure du programme cible pour d terminer l avance de quelle fa on allouer les registres m a particuli rement enchant e Je pense que cette p riode date approximativement mon attrait pour la compilation Je tiens remercier tout sp cialement Karol Proch qui tait l initiative de ce projet Je remercie particuli rement Nicolas Trotignon et Eugen Calapodescu deux grands amis qui m ont aid fa onner mes id es de milliers de fa ons diff rentes leurs influences et leurs id es se retrouvent forcement dans cette th se Je n aurais pas pu entreprendre cette th se si Marian Vittek n avait pas cr l environnement ELAN Quand j ai t en qu te de conseils de petite ou de grande port e je me suis souvent adress Marian qui conna t le langage et le compilateur comme s il l avait fait C est aussi lui que je dois une grande partie des difficult s rencontr es Peter Borovansky peut tre consid r comme le
237. ermet de calculer pour un syst me de r criture TR la forme nor male t d un terme t meta reduce TR t t si TRE t gt t Il faut noter ici que TR est une donn e de l environnement d ex cution et que meta reduce lui donne un sens 2 5 Comparaison avec d autres environnements de sp cification 35 La deuxi me primitive meta apply offre un plus grand contr le parce qu elle permet d ap pliquer une r gle sp cifi e par son nom tout en donnant des contraintes sur le filtre appliquer L expression meta apply TR f 0 0 n signifie que le terme t doit tre r crit par la r gle du syst me TR et qu en plus de ces conditions le filtre trouv doit satisfaire la substitution 0 L en tier n permet de contr ler l extraction des solutions du probl me de filtrage seule la n 1 i me substitution est calcul e CafeOBJ C est un langage de sp cification fond sur trois extensions de la logique quationnelle multi sort e la logique quationnelle avec sortes ordonn es la relation de transition d tats qui permet d exprimer des syst mes concurrents non d terministes et la notion de sortes cach es Sa s mantique repose sur une combinaison de la logique de r criture des alg bres avec sortes ordonn es et des alg bres avec sortes cach es D un point de vue expressivit les trois extensions propos es ont pour but de rendre CafeOBJ adapt l criture de sp cifications alg briques avec sous typag
238. ermettant d effectuer une optimisation globale 10 2 Organisation du compilateur L implantation actuelle du compilateur est crite en Java et se d compose en plusieurs classes Chaque classe correspond a un concept Parmis ces concepts certains sont moins g n raux que d autres et peuvent m me se voir comme des sp cialisations d un concept plus g n ral Au niveau de l implantation cela se traduit par une notion d h ritage entre les classes La hi rarchie suivante 148 Chapitre 10 Architecture logicielle pr sente les classes principales ainsi qu un ou deux niveaux du graphe d h ritage REFParser c est le parseur qui permet de lire et d analyser une sp cification au format REF Cet analyseur a t r alis l aide du g n rateur de parseurs JavaCC REM Reduce Elan Machine c est la classe qui coordonne les op rations effectuer lire la sp cification au format REF compiler les r gles et les strat gies puis g n rer le pro gramme C RewriteRule les instances de cette classe sont des r gles de r criture qui sont repr sen t es par un membre gauche de la classe Term un membre droit et une liste d valuations locales de la classe BranchEvaluation Term cette classe permet de repr senter des termes et d finit de nombreuses op rations telles que le comptage des variables le renommage ou l aplatissement Dans le compilateur un terme est repr sent par un symbole de la cl
239. ernational Workshop on Rewriting Logic and its Appli 237 cations RWLW 96 Asilomar Pacific Grove CA USA Vol 5 of Electronic Notes in Theoretical Computer Science North Holland Codognet P et Diaz D 1995 wamcc Compiling Prolog to C Proceedings of International Conference on Logic Programming MIT Press Tokyo Japan Collavizza H 1989 Premi re valuation du logiciel OBJ3 pour la preuve formelle des circuits digitaux Rapport de Recherche 89 01 Universit de Provence Marseille Collavizza H et Pierre L 1988 Formal verification of hardware using OBJ and the Boyer Moore theorem prover Rapport de Recherche 88 04 Universit de Provence Marseille Colnet D Coucaud P et Zendra O 1998 Compiler Support to Customize the Mark and Sweep Algorithm ACM SIGPLAN International Symposium on Memory Management ISMM 98 pp 154 165 Contejean E March C et Rabehasaina L 1997 Rewrite systems for natural integral and rational arithmetic in H Comon ed Proceedings of 8 th International Conference Re writing Techniques and Applications Lecture Notes in Computer Science Springer Verlag Sitges Spain pp 98 112 Cousineau G et Mauny M 1995 Approche fonctionnelle de la programmation Ediscience ISBN 2 84074 114 8 Cousineau G Paulson L C Huet G Milner R Gordon M et Wadsworth C 1985 The ML Handbook INRIA Rocquencourt Crelier R 1994 Separate Compilation an
240. ers les caract ristiques de la sp cification sont les suivantes 73 d finitions de modules 42 d finitions de sortes 969 r gles de r criture dont 348 nomm es 46 conditions 473 valuations locales du type where et 170 valuations locales du type choose try 63 strat gies se composant de 11 iterate 14 repeat 67 dc one 31 dc 16 dk et 20 compositions de strat gies Sur ce type d application le compilateur applique environ 300 000 r gles de r criture par seconde et ceci pour des calculs pouvant durer plusieurs jours Pour certains probl mes d ordonnancement il nous est ainsi arriv de d passer la dizaine de milliards de r gles appliqu es ce qui correspond pr s de six mois de calcul avec l interpr teur Calcul sur les automates d arbres C est un environnement de calcul et de preuve d velopp par Thomas Genet dans le cadre de sa th se 1998 Cette biblioth que est actuellement utilis e au CNET pour montrer automatiquement des propri t s de confidentialit et d authentification de protocoles cryptographiques nouvellement d velopp s Les caract ristiques des sp cifications 8 Ces donn es sont approximatives parce qu une partie de la sp cification est engendr e automatiquement en fonction du probl me r soudre 176 Chapitre 12 Exp riences pratiques sont par exemple celles ci 105 d finitions de modules 107 d finitions de sortes 824 r gles de r criture dont 298 no
241. es Il faut aussi savoir que l ordre des valuations locales est important puis qu elles sont valu es dans l ordre suivant lequel elles apparaissent Consid rons les deux pro grammes suivants fact 0 gt 1 end 1 fact 0 gt 1 end fact 1 gt 1 end 1 fact 1 gt 1 end fact n gt result fact n gt result where result n fact n 1 if n gt i if n gt i where result n fact n 1 end end Le deuxi me syst me de r criture est correct alors que le premier ne termine pas toujours En effet lorsqu on value la r gle fact n gt result where result n fact n 1 if ml end le calcul d une forme normale de n fact n 1 est fait avant de v rifier la condition n gt 1 ce qui peut provoquer une r cursion sans fin L exemple suivant est int ressant parce qu il montre comment implanter en ELAN le pro bl me des 8 reines et ceci en m langeant diff rents styles de programmation Consid rons une signature 120 Chapitre 8 Compilation des r gles et des strat gies module queensAC import bool int list int end sort set end operators global queens list int ok int int list int bool U set set set AC empty set int set end Consid rons un ensemble de r gles nomm es et une strat gie qui d finit un g n rateur lorsqu on applique la strat gie select un entier quelconque on obtient l ensemble de r sultats 1 8
242. es de motifs se d finissent de la mani re suivante la classe de motifs Co contient les termes lin aires t T F 4 x la classe de motifs C4 est le plus petit ensemble de termes semi lin aires en forme canonique qui contient Co et tous les termes t de la forme t facto diy stn avec fac Fac 0 lt n ti sty Coy pita a2 gt 0 t f ti sta avec f Fy ti tn CU X la classe de motifs C2 est le plus petit ensemble de termes semi lin aires en forme canonique qui contient C4 et tous les termes de la forme t fac 21 257 gaclz3 x4 AVEC fac 9AC Fac T1 02 03 T4 X a2 0 a4 gt 0 t f ti tn avec f Fy ti tn E C2U X On peut noter ici qu il est fr quent d ajouter des variables d extension aux membres gauche des r gles pour assurer la compl tude d un syst me de r criture modulo AC Peterson et Sti ckel 1981 Jouannaud et Kirchner 1986 Ces variables d extension permettent d effectuer des r critures sur les sous termes en m morisant le contexte d application de la r gle L ajout de telles variables nous am ne consid rer les motifs de la forme fac ti fn pour chaque r gle dont le membre gauche est de la forme fac ti tn Dans notre exemple les motifs fac z f a x g a et fac f a x f y g b ainsi que leur forme tendue fac z z f a x g a et fac z f a x f y g b appartiennent tous les quatre
243. es r sultats correspondant l exploration d une branche ou tous les r sultats correspondant l exploration de toutes les branches Le sch ma de compilation est pr sent par l algorithme 8 3 Algorithme 8 3 Compilation du choose try choose try branche try branche 1 pose d un point de choix setChoicePoint 2 compilation de branche 3 setChoicePoint 4 compilation de branche Dit a as 6 setChoicePoint 7 compilation de branche 124 Chapitre 8 Compilation des r gles et des strat gies 8 5 Construction du terme r duit Pour une r gle r la phase de construction intervient apr s le filtrage et une fois que toutes les valuations locales sont ex cut es On suppose alors que toutes les variables de l ainsi que toutes les variables des motifs des conditions de filtrage sont instanci es par une substitution o Il reste construire le terme clos ro pour pouvoir continuer le processus de normalisation La strat gie d application des r gles non nomm es tant leftmost innermost il faudrait une fois le terme ro construit rechercher les radicaux les plus internes et les plus gauche pour les r duire nouveau Pour des raisons d efficacit il est videmment pr f rable de ne pas s parer ces trois tapes de construction recherche r duction et de normaliser les sous termes r ductibles pendant la construction de ro Pour cela les termes sont construits en utilisant un parcours int r
244. es va riables impliqu es pour d terminer si les conditions sont satisfaites Lorsqu elles ne le sont pas il faut pouvoir extraire les autres solutions du probl me de filtrage AC consid r Nous proposons une m thode de compilation qui permet de calculer et de construire efficacement de telles instances de variables 88 Chapitre 6 Compilation du filtrage associatif commutatif 6 4 Classes de motifs Apr s analyse d un grand nombre de syst mes de r criture et de sp cifications crites en ELAN nous nous sommes aper u que les membres gauches des r gles utilis es suivaient souvent une certaine r gularit L analyse fine d autre part des algorithmes de filtrage AC tel que celui pr sent au paragraphe 6 3 nous a amen isoler les tapes les plus complexes et les plus co teuses Partant de ces deux constats nous avons d fini des classes de termes repr sentant la majorit des motifs rencontr s mais permettant aussi d affiner l algorithme g n ral de filtrage AC pour y liminer les tapes les plus co teuses telles que la construction et la r solution des hi rarchies de graphes bipartis ou encore la r solution des syst mes d quations diophantiennes Les classes de motifs Cp C et C2 contiennent respectivement les termes avec z ro un ou deux niveaux de symboles AC Soit Fg un ensemble de symboles de fonctions syntaxiques Fac un ensemble de symboles de fonctions AC et 4 un ensemble de variables les class
245. es variables Instanciation des variables apparaissant sous un symbole AC Les variables qui apparaissent directement sous un symbole AC du motif ne sont pas prises en compte par les tapes pr c dentes Lorsqu il y a seulement une ou deux variables avec des multiplicit s il n est pas n cessaire de construire un syst me d quations diophantiennes pour calculer leur instance Diff rents cas peuvent tre tudi s en fonction de la structure syntaxique du motif pour un motif de la forme f4c 1 t1 tn une fois que les sous termes du sujet ont t filtr s par les t1 tn tous les sous termes du sujet non captur s par un t i e n intervenant pas dans une solution du graphe biparti sont associ s za pour fac x1 79 l1 fn consid rons dans un premier temps le cas o ag 1 Une fois que les sous termes du sujet ont t filtr s par les ti tn les sous termes non captur s sont partitionn s en deux ensembles de toutes les fa ons possibles Un ensemble est utilis pour instancier 1 et l autre pour za Lorsque ag gt 1 apr s l tape de filtrage on cherche toutes les fa ons d associer z sous termes identiques non captur s Les sous termes restant tant associ s x1 pour fac a1 29 9ac x3 24 un sous terme 8 du sujet est filtr par gac Les sous termes de s sont divis s en deux ensembles tel que d crit pr c demment qui sont associ s aux variables x3 et x
246. esoin d tre inspect e pour trouver que seul le motif f x b b b filtre le terme d o une meilleure efficacit de la proc dure de filtrage Notre approche qui permet de traiter les ensembles de motifs sans priorit et qui n est pas strictement left to right est donc rapprocher des techniques de constructions d automates adaptatifs d crites dans Sekar et al 1992 Mais la diff rence des automates adaptatifs qui modifient compl tement l ordre de parcours du sujet notre algorithme garantit un parcours en profondeur d abord des sous termes du sujet ce qui permet d utiliser une structure aplatie de termes flatterms telle que celle d crite dans Christian 1993 Chapitre 6 Compilation du filtrage associatif commutatif 6 1 Termes en forme canonique 82 6 2 Approche one to one 83 6 3 Approche many to one 84 6 4 Classes de motifs 88 6 5 Sp cialisation utilisant une structure compacte 88 6 6 Raffinement glouton 93 6 7 Calcul des substitutions 94 6 8 Extension l ensemble des motifs 95 69 Synthese i see A Aes he dee ce a a GEE hi re as ede as oh ae we F 97 l image du chapitre pr c dent le probl me trait dans ce chapitre consiste aussi s lection ner une r gle parmi un ense
247. espectivement instanci es par les termes a b et c nil La condition des filtrage est une construction expressive permettant de d composer un terme pour acc der facilement ses sous termes liste gt premier second nil where Liste premier second reste liste Le troisi me type d valuation locale est de loin le plus complexe il permet de mettre en facteur des s quences de calcul en vitant d avoir crire plusieurs r gles de r criture pour d crire un algorithme La construction choose try end offre la possibilit de cr er des sous listes d valuations locales pr c d es par le mot cl try On peut ainsi d crire le calcul de la fonction factorielle en n crivant qu une seule r gle rules for int n int result int global fact n gt result choose try if n 0 or n where result 1 try if n gt 1 where result n fact n 1 end end end Pour cet exemple la transformation propos e n a aucun int r t parce que les probl mes de filtrage fact 0 gt et fact 1 gt sont remplac s par la condition if n 0 or n 1 Mais pla ons nous dans un cadre plus complexe et imaginons que la description d un algorithme n cessite plusieurs r gles ayant le m me membre gauche cela arrive fr quemment en pratique 1 5 Op rateurs Associatifs et Commutatifs 21 rules for int x y z global f x gt ri z where y g x where z s1 x end f x gt r2
248. et la diffusion d un compilateur passe par de nombreuses phases d exp ri mentation et d valuation Il est en particulier int ressant de conna tre le comportement des programmes g n r s en terme de fiabilit d efficacit et de consommation m moire Dans ce chapitre nous nous proposons d valuer les m thodes de compilation propos es pr c demment en nous concentrant essentiellement sur trois aspects quels sont les apports du compilateur dans le cadre du projet ELAN Pour y r pondre nous comparons les performances du compilateur actuel avec celles de l interpr teur ELAN dans le cadre de la r criture modulo AC quel est le comportement des programmes g n r s et quelles sont les tapes du processus de normalisation qu il serait int ressant d am liorer Nous tudions la proportion de temps pass dans les diff rentes tapes qui composent le processus de normalisation AC comment se situe le compilateur ELAN par rapport aux autres implantations de langages base de r gles de r criture Nous le comparons sur un chantillon de programmes avec d autres syst mes implantant une proc dure de normalisation AC et plus particuli rement avec Brute et Maude qui sont deux excellentes implantations La r alisation de benchmarks est une t che souvent difficile parce qu elle consiste g n raliser des r sultats obtenus partir d un petit nombre d exp riences et ceci g n ralement san
249. evrait aussi faciliter l interaction et la r utilisation des outils d velopp s par les groupes ASF SDF CafeOBJ Maude et ELAN par exemple l image d autres communaut s un m me langage pourrait ainsi disposer de plu sieurs implantations et inversement un m me outil pourrait tre utilis pour compiler diff rents langages 50 Chapitre 3 Plateforme de prototypage Deuxi me partie Compilation de la r criture 51 Chapitre 4 M ta conception 4 1 Interpr teur Compilateur et Machine abstraite 53 4 2 Pourquoi choisir un compilateur 56 4 3 Compilation de la r criture 58 Plusieurs niveaux de conception interviennent dans le cycle de vie d un logiciel Nous avons d j abord dans le chapitre 3 les liens existant entre la conception de l environnement de sp cification et celle d un composant tant donn un composant le compilateur par exemple il faut distinguer sa conception interne d une part qui d crit son fonctionnement et les interactions entre ses diff rentes phases de transformation et sa conception d un point de vue plus g n ral appel e m ta conception C est ce niveau d tude que des choix importants sont effectu s M me s il est toujours pr f rable de r aliser les outils les plus modulaires et les moins fig s possible il est dans certains cas plus profitable de faire des choix de base
250. f techniques for implementing branching schemes have been proposed over the years especially in the functional and logic programming communities Several languages use C as target language such as Cg Icon Janus Erlang KL1 RML and Mercury Their different compilation schemes are presented in Budd 1982 Wampler et Griswold 1983 Demoen et Maris 1994 Codognet et Diaz 1995 Pettersson 1995 Henderson Conway et Somogyi 1996 Among these techniques the simplest method implements branching using a C goto state ment However problems arise because indirect branching is not available in standard C and also because a goto instruction can only do a jump into its function scope This leads to a C program composed of a unique huge function with a switch statement to simulate indirect gotos This compilation scheme is unrealistic since it makes impossible separate compilation Moreover collecting all codes into one C function affects compilation time and compiler s ability to perform register allocation The second method consists in translating each labelled block by a C function that returns a continuation address Those functions are managed by a driver function that does the necessary dispatching to transfer control from one function to another Consequently this method is not the most optimised one but is suited for standard C and separate compilation A third well known existing scheme consists in using non standard C features that are sup port
251. faire deux choix principaux dans quel langage crire le compilateur et quel type de langage cible utiliser Faut il continuer g n rer du C ou faut il revenir une m thode plus classique fond e sur l utilisation d une machine abstraite Pour les raisons pr sent es pr c demment le deuxi me choix s est fait assez naturellement et la volont de g n rer du C est maintenue Quant la premi re question la r ponse n est vraiment pas vidente Il faut choisir un langage bien adapt la r alisation des compilateurs 58 Chapitre 4 M ta conception qui permette le d veloppement en quipe et qui respecte les crit res nonc s pr c demment Il faut aussi que ce langage soit suffisamment enseign dans le milieu universitaire pour que les tudiants amen s travailler sur le projet puissent s int grer sans trop de difficult Nous avons tudi quatre possibilit s qui ont chacune leurs avantages et leurs inconv nients utiliser un langage imp ratif tel que le C ou le C c est une solution s re qui a l avantage d uniformiser les langages de d veloppement utilis s L interpr teur tant implant en C une partie des biblioth ques peut tre facilement r utilis e Mais m me si les tudiants ont en g n ral une bonne connaissance de ces langages leur souplesse peut tre responsable de tr s nombreuses petites erreurs si une m thode rigoureuse emprunt e au monde industriel n
252. ff rents do maines Chaque programme est compil et ex cut deux fois une premi re fois sans aucune optimisation li e l analyse du d terminisme et une deuxi me fois avec l analyse du d termi nisme activ e Les r sultats sont pr sent s sous forme d histogrammes Pour chaque programme nous don nons le nombre d instructions setChoicePoint g n r es par le compilateur Static CP le nombre de points de choix cr s au cours de l ex cution Dynamic CP la m moire utilis e pour m moriser les environnements Memory usage et le nombre de r gles de r criture appliqu es par seconde rwr sec Les mesures ont t faite sur une station Dec Alpha les programmes p5 et p8 correspondent la compl tion de Knuth Bendix appliqu e des versions modifi es de la th orie des groupes Les modifications consistent introduire 5 respectivement 8 l ments neutres ainsi que 5 respectivement 8 l ments inverses Ces th ories sont des tests fr quemment utilis s pour valuer les performances des prouveurs automatiques de th or mes L ex cution de p5 donne les r sultats suivants 504 a 4 402 237 g 119 Kb F 961 570 A O F TL D z 5 2 E a 8 E e 376 638 n E g A 537 785 a 1 Kb n L ex cution de p8 utilise approximativement le m me programme mais implique des calculs plus complexes 9 5 R sultats exp rimentaux 139 579 a 23 917 447 g 405 Kb F 9
253. fficile l change de termes et les manipulations de modules telles que leur compilation leur affichage ou leur transformation par valuation partielle par exemple C est pourquoi nous avons tudi une repr sentation plus modulaire l Efix pr sent e dans le chapitre 3 L Efix est un format qui correspond la syntaxe abstraite du langage et qui permet de repr senter n importe quelle construction du langage une relation d importation une r gle de grammaire hors contexte un ensemble de r gles de r criture une strat gie ou un module tout entier par exemple Mais devant une telle souplesse se pose la question de savoir quelle granularit et quel d coupage adopter pour repr senter un programme Doit on repr senter l ensemble du programme par un seul terme Efix Doit il y avoir une bijection entre les modules ELAN et les modules Efix Ou doit on adopter une structure com pl tement diff rente consistant repr senter les r gles de grammaire hors contexte les r gles de r criture et les strat gies par des termes Efix diff rents Il n y a vraisemblablement pas de r ponse universelle simplement parce que chaque choix a des avantages qui d pendent des traitements a effectuer par la suite Pour afficher ou modifier la structure d un module par exemple il est pr f rable de faire correspondre un terme Efix chaque module ELAN mais pour compiler un programme la notion de module n est plus n cessaire et il est
254. filtrage syntaxique optimisation qui est rapprocher de celle d crite dans Nedjah et al 1997 n a d int r t que si les feuilles de l arbre consid r ne correspondent qu un seul motif On s apercoit alors que l exemple choisi n est pas tellement repr sentatif de ce qui se passe en pratique et l algorithme pr sent dans Nedjah et al 1997 ne permet finalement pas un si bon partage lorsque l ensemble de motifs contient des termes plus g n raux que d autres Et c est malheureusement ce qui se produit le plus souvent en pratique Consid rons une fois encore l exemple de la fonction fac torielle o les motifs impliqu s sont L fact 0 fact 1 fact x Dans cet exemple le terme fact x est une g n ralisation des termes fact 0 et fact 1 Remarquons que la m thode utilisant des jumpNode augmente l g rement l efficacit du filtrage parce que le sujet n a pas toujours besoin d tre parcouru enti rement pour d terminer les r gles qui peuvent s appliquer Reprenons l exemple donn pr c demment et consid rons le terme f g b a b b b Les automates d terministes construits par les algorithmes Graf 1991 Nedjah et al 1997 inspectent toutes les positions du terme pour trouver que le motif f x b b b peut s appliquer En utilisant un automate avec jumpNode apr s avoir lu les symboles f g et b un saut est effectu pour lire les trois symboles b La position associ e au symbole a n a pas b
255. fixes oubli s Ces r gles particuli res de transi tion d tats appel es jumpNode permettent de r duire le nombre d tats de l automate construit tout en conservant ses propri t s d terministes D un point de vue observationnel l automate faiblement canonique associ la cl ture r duite enrichi par de nouvelles r gles de transition d tats jumpNode a exactement le m me comportement que l auto mate construit par l algorithme 5 1 Il devient donc canonique Algorithme 5 2 Calcul incr mental d un arbre de filtrage correspondant une cl ture r duite 1 ajout de sp le suffixe sp peut aussi s crire st tysp 2 si s w alors 3 si Lu 0 ou L s 0 alors 4 le suffixe p est ajout L s 5 sinon 6 l ar te tiquet e par s est cr e puis les suffixes p et t1 t4 L sont ajout s L s on peut remarquer que les 1 t4 L sont des instances de 0 Tay t finsi 8 sinon 9 siw est un nouveau choix possible une ar te tiquet e par w est cr e 10 le suffixe p est ajout L w 11 pour tout symbole s Zu tel que L s faire 12 pour tout 8 t tys pr fixe de Ly s P est un terme bien form faire 13 le suffixe Bp est ajout Lg on peut remarquer que les p instances de w s p ne sont plus ajout es par cet algorithme 14 fin pour 15 fin pour 16 finsi Exemple 2 Soit L fga fw L algorithm
256. fortement Denis Roegel pour sa disponibilit permanente et la qualit de son travail Bien plus qu un simple gourou je suis persuad que sa pers v rance et son perfectionnisme ont influenc ma fa on d aborder un probl me et par cons quent cette th se Je n aurais certainement pas eu l ambition ni la volont de d velopper des algorithmes aussi pointus sans la rivalit de Steven Eker Bien que situ plusieurs milliers de kilom tres de iv Nancy les nombreux changes de mails nous ont entra n dans une comp tition sans fin qui a permis d am liorer indiscutablement les algorithmes de filtrage et de normalisation modulo AC Le s jour Nancy de Bernhard Gramlich a t d une grande richesse pour son entourage Son int r t constant pour le travail des autres et les nombreuses discussions pass es autour d un caf m ont sans nul doute ouvert les yeux et aid faire des choix fondamentaux Je tiens ainsi le remercier particuli rement Je tiens remercier Paul Klint et Mark van den Brand pour m avoir invit 1 mois au CWI et m avoir initi aux secrets d ASF SDF Les nombreux changes scientifiques ont largement influenc ma fa on de voir et concevoir un environnement de sp cification Les travaux de Mark et de Pieter Olivier sur la compilation de syst mes de r criture m ont eux aussi influenc et motiv On dit souvent que le hasard fait bien les choses et j ai pu le v rifier c
257. futures du syst me satisferont cette propri t Le m me ph nom ne se produit avec l op rateur dc s1 8 qui devrait choisir al atoire ment une strat gie sans chec parmi 51 8 Dans la pratique c est l op rateur first qui est implant mais une fois encore ce n est pas une propri t du langage initial Il existe d ailleurs une extension concurrente d ELAN Borovansky et Castro 1998 qui ex cute en parall le les sous strat gies s1 sp et s lectionne la premi re qui termine sans chec Lorsque l implantation en C de l interpr teur a d but l objectif initial n tait pas de construire l interpr teur le plus efficace possible c est pourquoi il ne se d marque pas de ses concurrents en terme d efficacit Son utilisation reste n anmoins agr able et peu limit e Les techniques utilis es pour implanter les diff rents composants sont relativement simples et offrent un bon compromis entre la facilit de mise en uvre et la vitesse d ex cution tant donn un terme clos pour savoir quelles sont les r gles qui peuvent s appliquer une premi re s lection est faite en fonction du symbole de t te du terme seules les r gles dont le membre gauche a le m me symbole de t te sont retenues Les r gles sont ensuite essay es l une apr s l autre Ce sch ma g n ral s applique aussi pour les r gles qui contiennent des op rateurs Associatifs et Commutatifs mais il faut savoir que l
258. gage ELAN La simplicit et la bonne compr hension des m canismes ont toujours guid les choix effectu s au cours de la conception et de la r alisation La recherche d id es simples n a cependant pas emp ch l mergence de deux id es nouvelles qui diff rencient ELAN de tous les autres syst mes fond s sur la logique de r criture l int gra tion au parseur d un pr processeur puissant et l existence d un langage sp cifique pour d crire des strat gies et offrir un meilleur contr le sur l application des r gles de r criture Malgr quelques petits d fauts l environnement s est montr agr able utiliser et a rapide ment men les utilisateurs crire des sp cifications relativement longues et complexes La taille des termes manipul s et la taille de l espace de recherche li l exploration des strat gies sont devenues vraiment grandes le nombre de r gles et de strat gies relativement important quant au nombre moyen d tapes de r criture n cessaires pour mener bien un calcul il a lui aussi augment de mani re significative Cette premi re implantation a montr l int r t pratique des th ories et techniques de r criture d velopp es dans ce domaine depuis plusieurs ann es Mais il a aussi montr les difficult s pour trouver ce compromis entre l expressivit et l efficacit qui incite les chercheurs implanter leurs outils en utilisant un langage fond sur la r cr
259. gies conduit implanter des primitives originales de gestion du backtracking et d finir un algorithme d analyse du d terminisme permettant de r duire leur usage et d am liorer encore les performances tout en r duisant l espace m moire n ces saire Enfin l implantation des m thodes propos es a donn lieu l laboration de nombreuses optimisations th oriques et techniques qui peuvent tre largement r utilis es pour implanter d autres langages de programmation par r criture Cette th se pr sente les algorithmes et leur valuation l architecture et le fonctionnement du compilateur ainsi qu une proposition d envi ronnement de sp cification fond e sur l utilisation d un format interm diaire Mots cl s Compilation syst me de r criture strat gie filtrage associatif commutatif non d terminisme Abstract Abstract Rewriting techniques are developed since 1970 and applied in particular to prototyping formal algebraic specifications and to proving properties related to program verifi cation ELAN is a system designed to specify and execute theorem provers constraints solvers and more generally any process described by transformation rules It supports a strategy language useful to make a precise exploration of a search space It also supports associative commutative AC operators that make easier the study of mathematical operators such as boolean connectors arithmetic operators or paralle
260. gorithme 5 3 Construction du lien vers le p re 1 p re e1 pilei 2 pour tout 6 e1 5 s e2 on peut avoir s w faire 3 pile pile 4 si s gt 0 alors 5 empiler e1 s dans piles 6 sinon si pile non vide alors T arret L 8 e niveau d piler pile2 9 cha ner e vers e 10 tantque niveau 1 et arret 7 T faire 11 si pile non vide alors 12 e niveau d piler pile 13 chainer e vers e 14 e niveau e niveau 15 sinon 16 arret 17 finsi 18 fin tantque 19 si arret Z T alors 20 empiler e niveau 1 dans pile2 21 appeler r cursivement p re e2 pile2 sur les fils e2 22 finsi 23 finsi 24 fin pour 3 la construction des jumpNode s effectue en appliquant l algorithme 5 4 sur l tat initial de Vautomate de filtrage enrichi par ce chainage vers les p res Exemple 3 Consid rons une nouvelle fois l automate de filtrage associ la cl ture r duite de l ensemble de motifs L fga fw l ajout d un tat particulier d chec suivi de l application 78 Chapitre 5 Compilation du filtrage syntaxique Algorithme 5 4 Construction des jumpNode 1 soit un tat non final ei b si il existe une r gle de transition d tats 6 e1 w s e2 alors jumpNode e1 e2 sinon 3 4 5 jumpNode e jumpNode p re e 6 finsi 7 Palgorithme est appliqu r cursivement tous les fils de e1
261. i re les syst mes de la famille OBJ offrent des m canismes de modularisation et de param tri sation particuli rement d velopp s les aspects r flexifs de la r criture sont bien int gr s dans le syst me Maude l environnement de sp cification et la possibilit de traiter des probl mes de taille r elle sont un des points forts du syst me ASF SDF la possibilit d effectuer des tapes de r criture modulo un grand nombre de th ories sont les points forts des syst mes Maude et CafeOBJ 2 5 Comparaison avec d autres environnements de sp cification 37 une des originalit s du syst me ELAN est d offrir un pr processeur capable de construire dynamiquement des composants d un syst me de calcul au moment de l analyse syntaxique d une sp cification enfin la possibilit de compiler efficacement des applications r elles comprenant des stra t gies non d terministes pour contr ler application des r gles de r criture est sans aucun doute un fait marquant qui diff rencie le syst me ELAN de tous les autres 38 Chapitre 2 Outils pour sp cifier et programmer Chapitre 3 Plateforme de prototypage 3 1 Format d change 40 3 2 Cr ation d outils 43 3 3 Syst me ouvert 44 4 4 4 a 45 3 4 Vers une nouvelle architecture 46 35 SVNERESE d a dime fice te uh 985 Ge
262. i elle ne permet d am liorer que des situations se pr sentant rarement et si elle risque de compromettre le d veloppement de l outil C est pourquoi nous avons retenu une deuxi me approche qui consiste transformer les 96 Chapitre 6 Compilation du filtrage associatif commutatif r gles dont le membre gauche n appartient pas C2 en des r gles quivalentes ayant un membre gauche compilable par notre algorithme N importe quelle r gle l r avec C2 peut tre transform e en une r gle l r utilisant des conditions de filtrages pr sent es au paragraphe 1 4 et telle que l appartienne Co La transformation pr sent e ci dessous se d compose en deux cas suivant que le symbole de t te de l est AC ou non Soit l FAC ty ys a ft t1 stilata ve stn aVec Lips Mn E aj gt Dhs E Ci et th41 sn d Ci o k lt n Sil fac x y t1 th La r gle a it l r where facl t3 tn tk stn Y est quivalente la r gle pr c dente Rappelons ici qu au cours de l valuation d une condi tion de filtrage la variable y est instanci e par la substitution qui permet de filtrer le sujet Soit l f t1 stn avec des t C2 Soit A une fonction d abstraction qui remplace des sous termes uj de l par une nouvelle variable xj j 1 k de sorte que l A 1 Co Pour se convaincre de l existence d une telle fonction A il suffit de consid re
263. ichit tout au long de sa vie Depuis peu le langage de strat gies a t tendu Borovansky 1998 afin de le rendre plus expressif et de permettre l utilisateur de d finir des strat gies param tr es De nouvelles fonc tionnalit s permettant de cr er dynamiquement des strat gies ont aussi t ajout es au syst me et se pr sentent sous forme de biblioth ques crites en ELAN Cette troisi me couche de la bi blioth que regroupe ainsi un ensemble de modules permettant d acc der au nouveau langage 2 2 Parseur 29 de strat gie Le lecteur est invit se r f rer la th se de Peter Borovansky 1998 pour obte nir plus d informations concernant les fonctionnalit s et les techniques d implantation de cette version tendue du langage de strat gie 2 2 Parseur Dans tout environnement de programmation le parseur est un l ment essentiel C est d une part l outil qui permet de v rifier si le programme crit est syntaxiquement correct mais dans de nombreux cas des phases d analyse statique du programme sont aussi int gr es afin de d celer d ventuelles erreurs de typage Un parseur n est g n ralement pas un outil monolithique mais est au contraire constitu d une multitude de couches ayant un r le bien pr cis On peut noter parmi celles ci l analyse lexicale doit d composer la suite de caract res constituant un programme source en unit s lexicales appel e lex mes qui sont les
264. ier temps le terme t est mis en forme normale en n utilisant que des 20 Chapitre 1 Langage de sp cification ELAN r gles non nomm es la strat gie S est ensuite appliqu e sur le terme en forme normale D un point de vue pratique seul un r sultat de l application de S est calcul et affect la variable v Si la strat gie choue l valuation locale choue galement et le m canisme de retour arri re se met en place Lorsqu la suite d un chec une affectation locale redevient active la forme normale du terme t n a pas besoin d tre recalcul e parce qu la suite de la premi re valuation ce r sultat interm diaire est m moris par le m canisme de gestion des retours arri res La r activation d une affectation locale consiste alors poursuivre l valuation de la strat gie S pour en extraire une nouvelle solution si elle existe Il existe une extension appel e condition de filtrage matching condition qui permet de remplacer la variable v par un terme p quelconque Le m canisme d valuation est sensiblement le m me que pr c demment mis part le fait que le r sultat de l application de la strat gie S n est plus simplement affect la variable v mais filtr par le motif p Les variables du terme p sont alors instanci es par leurs valeurs r sultant du filtrage Lorsque la r gles suivante est appliqu e sur le terme a b c nil les variables premier second et reste sont r
265. ieur gauche de l En fonction du type des n uds visit s des actions diff rentes sont effectu es lorsque le n ud correspond une constante plut t que d allouer de la m moire chaque fois un lien vers un repr sentant unique de la constante est effectu Au lancement d un programme compil toutes les constantes apparaissant dans le syst me de r criture sont cr es en m moire pour y tre partag es par la suite l instanciation d une variable est une op ration tr s simple r aliser lorsqu on suppose que la substitution est d j cr e en m moire il suffit de cr er un lien vers l instance de la variable correspondante Dans notre approche les instances des variables sont r f renc es par des variables statiques du programme C g n r Compiler l instanciation des variables du membre droit d une r gle revient alors r utiliser ces variables statiques initialis es pendant l tape de filtrage ou d valuation des conditions de filtrage lorsque le n ud correspond un symbole f d arit n n Z 0 le probl me consiste construire le terme t f s1 51 et calculer sa forme normale Notons que l utilisation d une strat gie leftmost innermost nous assure que les sous termes s1 5 sont d j construits en m moire et qu ils sont tous en forme normale lorsque f est un symbole constructeur le terme t est irr ductible et sa construction consiste allouer d
266. intes Th se de Doctorat d Universit Universit Henri Poincar Nancy 1 France Cavenaghi C de Zanet M et Mauri G 1987 Mc obj a c interpreter for obj Technical report Dipmentarto Scienze dell Informazione Universita di Milano Italy Cheney C J 1970 A non recursive list compacting algorithm Communications of the ACM 13 11 677 668 Christian J 1993 Flatterms discrimination nets and fast term rewriting Journal of Auto mated Reasoning 10 1 95 113 Christopher P G 1988 The specification and controlled implementation of a configuration management tool using OBJ and Ada in D Coleman R Gallimore et J Goguen eds Experience with OBJ Addison Wesley Clavel M 1998 Reflection in general logics rewriting logic and Maude PhD thesis University of Navarre Spain Clavel M Duran F Eker S Lincoln P et Meseguer J 1998 An Introduction to Maude Beta Version Technical report SRI International Computer Science Laboratory Menlo Park CA USA URL ftp ftp csl sri com pub rewriting beta maude beta doc ps Clavel M Eker S Lincoln P et Meseguer J 1996 Principles of Maude in J Meseguer ed Proceedings of the first international workshop on rewriting logic Vol 4 Electronic Notes in Theoretical Computer Science Asilomar California Clavel M et Meseguer J 1996 Reflection and Strategies in Rewriting Logic in J Meseguer ed Proceedings of the 1st Int
267. ion REF de ce terme Le codage REF peut alors tre envoy au programme compil pour y tre valu voir figure 3 2 L outil inverse ref2result a lui aussi t d fini Son r le consiste lire une grammaire et un terme au format REF pour le traduire dans la syntaxe d finie dans la sp cification ELAN Pour tre ind pendant le programme compil ne doit alors contenir que le codage de sa grammaire au format REF et tre capable de le communiquer ces deux outils de conversion query2ref Grammaire au format REF ref2result Requ te au format REF y 4 Ex cutable R sultats au format REF FIG 3 2 Ce sch ma illustre la mani re dont sont organis es les entr es sorties d un ex cutable g n r par le compilateur ELAN l ex cutable communique en utilisant le format REF et fait appel deux utilitaires query2ref et ref2result pour effectuer les conversions en provenance et vers un format lisible Pour fonctionner ces deux outils ont besoin de conna tre le codage au format REF de la signature de la sp cification compil e Cette signature int gr e l ex cutable peut tre export e lorsque cela est n cessaire 3 3 Syst me ouvert 45 3 3 Syst me ouvert Disposer d un format d change est un moyen de modulariser la structure interne de son environnement mais c est aussi un moyen de s ouvrir vers l ext rieur Lorsqu on comp
268. ionn e parmi les candidates restantes ce qui permet de calculer la substitution associ e au probl me de filtrage consid r Les valuations locales sont alors valu es les unes la suite des autres de haut en bas jusqu atteindre la derni re c est seulement ce moment l que la r gle peut s appliquer et que le membre droit est construit Il existe actuellement trois types d valuations locales qui permettent d augmenter de mani re significative l expressivit des syst mes de r criture Une condition est une expression bool enne c introduite par le mot cl if De son valuation d pend Vapplication de la r gle courante le terme c est mis en forme normale puis compar la valeur de v rit true pr d finie par le syst me En cas d galit on dit que la condition est satisfai sable et le calcul des valuations locales se poursuit En cas d in galit on dit que l valuation locale choue ce qui d clenche le m canisme de retour arri re backtracking les valuations locales pr c dentes sont r valu es pour en extraire d autres solutions Cela revient changer de branche au cours d une exploration d un arbre de recherche Si aucune autre solution n est trouv e on dit que l application de la r gle courante choue et une autre r gle est s lectionn e La construction where v S t affectation locale permet de d clencher l application d une strat gie Dans un prem
269. iorerait les performances g n rales Les autres donn es nous montrent que le temps pass extraire et r soudre les graphes bipartis est relativement petit et qu une fois encore c est le m canisme de gestion m moire qui doit tre am lior en priorit en utilisant les m thodes propos es dans le chapitre 11 par exemple Somme Ce dernier exemple utilise un op rateur AC d union U et trois r gles conditionnelles pour extraire des entiers d un ensemble et calculer leur somme 51 Le syst me de r criture est d fini de la mani re suivante red o gt L TES check z s x sUset y Tifx y check T gt T check x s gt l state s Uset x s2 y error if x s2 state s Uset x s2 y state s1 52 U set x x y if x s2 Le benchmark consiste normaliser le terme state U set 1 U U set 100 0 0 Le r sultat attendu tant state 0 U set 1 U Uset 100 5050 Lorsqu une strat gie leftmost innermost est appliqu e ce syst me est particuli rement in t ressant parce qu il teste la capacit des algorithmes de filtrage AC extraire non plus une solution mais toutes les solutions d un probl me donn Dans le cadre de notre benchmark no tons que la r gle state s U set x s2 y error if x s2 ne s applique jamais parce que la condition if x s2 n est jamais satisfaisable mais pour le savoir le syst me doit calculer tou
270. iquer en utilisant la syntaxe d finie par l utilisateur dans la sp cification elle m me Ce deuxi me point d apparence mineure s est r v l tre un sujet d tude int ressant Afin de percevoir les probl mes rencontr s il faut avoir l esprit la structure d une sp cification ELAN la syntaxe des op rateurs utilis s pour d finir des r gles est elle m me d finie dans la premi re partie de la sp cification la signature Pour communiquer avec l ext rieur le programme doit donc tre capable de lire et d crire des termes dans cette syntaxe D une mani re ou d une autre les analyseurs lexical et syntaxique doivent donc tre int gr s dans le programme g n r Une solution consisterait int grer un g n rateur de parseur dans le compilateur ELAN C est la solution qui a t adopt e dans le projet ASF SDF pour r pondre au m me type de probl me Dans ELAN nous avons choisi alternative qui consiste utiliser un algorithme g n ral pour analyser les grammaires hors contexte Earley 1970 L implantation de cet algorithme d Earley peut donc tre ajout e au code g n r par le compilateur mais pour des raisons de modularit et de r utilisation nous avons pr f r d finir un outil ind pendant appel query2ref Celui ci prend en entr e deux arguments la grammaire de la sp cification au format REF et un terme au format d fini dans la sp cification ELAN puis retourne la repr sentat
271. iquer les r sultats de la figure 12 13 182 Chapitre 12 Exp riences pratiques temps en secondes 3 4 5 6 7 8 Bool3 appliqu and ai an et not or not ai not an Fic 12 12 Efficacit compar e sur Bool3 temps en secondes 0 100 200 300 utilisation de Somme pour calculer S3 Fic 12 13 Efficacit compar e sur Somme Conclusion Nous voici donc arriv s au terme de cette th se dont le fil conducteur fut la conception et la r alisation du compilateur ELAN un langage base de r gles de r criture et de strat gies non d terministes Se fondant sur la logique de r criture pr sent e dans Meseguer 1992 et permettant la d finition d op rateurs infixes de r gles conditionnelles de symboles associatifs commutatifs et de strat gies d exploration non d terministes ELAN fait partie des langages de sp cification expressifs ayant des bases th oriques solides et concr tement utilisables pour prototyper et r aliser des applications de grande envergure Les travaux sur ce langage participent pleinement l emergence de nouveaux paradigmes de programmation qui tendent offrir une grande expressivit et qui s parent clairement le traitement des donn es du contr le de ces traitements Le r el d fi de cette th se fut de montrer qu un tel langage peut rester un sujet de recherche un terrain d exp rimentation une source d id es n
272. isation des instances r ductibles 126 r organisation des modules 145 r p tition strat gie de 129 repr sentation aplatie 40 des graphes bipartis compacts 154 des termes 153 des vec teurs de bits 154 ref2result 44 Resnay A xiii r sultat la demande 18 contr le du nombre de 132 exp rimentaux 138 extraction des 17 tous les 17 un seul 17 retour arri re 100 r utilisation du membre gauche 124 Reve 1 RML 102 RRL 1 s lection contr le de la 132 d une r gle 19 116 impact sur la 136 s mantique analyse 29 semi compilation 54 semi d terministe strat gie 133 semi lin aire terme 83 set programme 173 setChoicePoint 99 gt signature 13 o substitution 14 o t application d une substitution 14 signature 11 13 grammaire 11 X 13 syn taxe d une 11 situation d chec 67 solution calcul d une seule solution AC 93 existence d une 86 somme programme 176 sorte 11 builtin 28 l mentaire 156 injec t e 13 source langage 54 143 sous terme 13 sp cification alg brique 11 environemment de 27 langage de 11 Spike 1 strat gie det semi multi nondet 133 applica tion d une 16 compilation des 113 127 d application 15 d exploration 127 de concat nation 17 127 de normalisation 16 de recherche 73 de r p tition 129 d finie par l utilisateur 16 dont care choose 17 dont ca
273. iste aussi des langages comparables ELAN qui utilisent la r criture comme seul m canisme d valuation Maude ASF SDF et CafeOBJ par exemple Actuellement le seul crit re utilis pour comparer les diff rentes implantation est le nombre de r gles appliqu es par seconde Cette mesure n est 189 malheureusement pas fiable parce que trop d pendante de la structure du syst me de r criture valu Comme le montre le chapitre 12 les performances du syst me ELAN varient de 50 000 15 000 000 de r gles appliqu es par seconde un facteur 300 s pare les meilleures performances des moins bonnes en fonction des exemples test s Nous pensons qu il serait int ressant de d finir une mesure pond r e par la complexit des r gles pour construire un crit re plus constant et surtout plus fiable afin de pouvoir comparer l influence des techniques d implantation sur l efficacit de syst mes obtenus La complexit d une r gle pourrait se caract riser par exemple en fonction de la complexit du membre gauche du membre droit des conditions et de la strat gie appliqu e La complexit d un terme pourrait se caract riser en fonction du nombre de variables de leur lin arit du nombre de constantes et de symboles AC par exemple Le concept de termes de preuves D un point de vue pratique l application de r gles de r criture sur un terme t permet de calculer une forme normale t mais d un point de v
274. it Kaci H 1990 The WAM a real tutorial Technical report 5 Digital Systems Research Center Paris France Apt K R et Schaerf A 1997 Search and imperative programming 24th POPL pp 67 79 Bachmair L Chen T et Ramakrishnan I V 1993 Associative commutative discrimination nets in M C Gaudel et J P Jouannaud eds TAPSOF T 93 Theory and Practice of Soft ware Development 4th International Joint Conference CAAP FASE Vol 668 of Lecture Notes in Computer Science Springer Verlag Orsay France pp 61 74 Bailey S W 1995 Hielp a fast interactive lazy functional language system PhD thesis University of Chicago USA Bartlett J F 1988 Compacting garbage collection with ambiguous roots Technical Report WRL TR 88 2 Western Research Laboratory Battiston E de Cindio F et Mauri G 1988 Objsa nets Obj2 and petri nets for specifying concurrent systems Technical report Dipartimento di Scienze dell Informazione Milano Benanav D Kapur D et Narendran P 1987 Complexity of matching problems Journal of Symbolic Computation 3 1 amp 2 203 216 Bergstra J et Klint P 1995 The Discrete Time ToolBus Technical report University of Amsterdam Boehm H et Weiser M 1988 Garbage collection in an uncooperative environment Software Practice and Experience 18 807 820 Borovansky P 1998 Le contr le de la r criture tude et implantation d un formalisme de strat gies
275. it le module list param tr par X o X peut tre remplac par int ou term par exemple pour d finir des listes d entiers ou des listes de termes En ELAN le m canisme d intanciation des modules est assez simple lors de l analyse syntaxique les valeurs associ es aux param tres sont connues X term par exemple avant d analyser le contenu d un module param tr les param tres sont remplac s par leur valeur dans le corps du module Consid rons par exemple le cas o le module List term est import il faut en fait imaginer que c est le module instanci de list X qui est effectivement import 1 6 Modularit 25 module list term import int end sort term list term end operators global nil list term cons 0 0 term list term list term size list term int rules for int e term 1 list term global size nil gt 0 end size e 1 gt 1 size 1 end end end 26 Chapitre 1 Langage de sp cification ELAN Chapitre 2 Outils pour sp cifier et programmer 2 1 Biblioth que 27 22 Parseur s fost RER SR oe Ga GUN aoa NS UMR A 29 2 3 Interpreter 4 me Ade nea bag See Hate ma LU MERE HR ha 30 24 Compilateurs serdi La DRE LARG bw eRe a ae ae ANNE LE 32 2 5 Comparaison avec d autres environnements de sp cification 33 La cr ation de logiciels informatiques a par le pass t consid r e comme
276. ithm for solving diophantine equations Proceedings 5th IEEE Symposium on Logic in Computer Science Philadelphia Pa USA pp 289 299 Bouhoula A Jouannaud J P et Meseguer J 1997 Specification and proof in membership equational logic in M Bidoit et M Dauchet eds Proceedings Theory and Practice of Soft ware TAPSOFT 97 Development Lille France Vol 1214 of Lecture Notes in Computer Science Springer Verlag pp 67 92 Bouhoula A Kounalis E et Rusinowitch M 1992 Spike An automatic theorem prover Proceedings of the 1st International Conference on Logic Programming and Automated Rea soning St Petersburg Russia Vol 624 of Lecture Notes in Artificial Intelligence Springer Verlag pp 460 462 Brus T H van Eskelen M C J D van Leer M O et Plasmeijer M J 1986 Clean a language for functional graph rewriting Internal report 95 Computing Science Department University of Nijmegen Budd T 1982 An implementation of generators in C Computer Languages 7 69 87 B ndgen R 1993 Reduce the redex ReDuX in C Kirchner ed Rewriting Techniques and Applications 5th International Conference RTA 93 LNCS 690 Springer Verlag Montreal Canada pp 446 450 Caseau Y et Laburthe F 1996 Introduction to the CLAIRE programming language Tech nical report 96 15 LIENS Technical Castro C 1998 Une approche d ductive de la r solution de probl mes de satisfaction de contra
277. ithme one to one C est pr cis ment l approche suivie dans l implantation de Maude Clavel Eker Lincoln et Meseguer 1996 6 9 Synth se Les travaux pr sent s dans ce chapitre sont certes th oriques mais leurs apports sont princi palement pratiques Le c ur de la m thode de compilation propos e repose sur la d finition d une classe restreinte de termes comprenant les motifs qui apparaissent le plus souvent en pratique La limitation impos e sur le nombre de symboles AC imbriqu es vite la r solution d quations diophantienne et permet d utiliser une structure compacte de graphes bipartis qui acc l re le traitement des r gles conditonnelles Afin d aboutir une proc dure de nomalisation AC efficace nous prenons en compte d s la conception de l algorithme de filtrage les probl mes li s l ex traction des solutions et la construction des substitutions Nous proposons ainsi des techniques de compilation du filtrage et de la normalisation AC dont les r sultats exp rimentaux sont pr sent s au chapitre 12 Enfin le cas g n ral est trait par une transformation de programmes permettant de se ramener la classe de motifs d finie 98 Chapitre 6 Compilation du filtrage associatif commutatif Chapitre 7 Gestion du non d terminisme A Introduction 2344484 is L bea DA RER MBA we LA 100 7 2 Basic choice point primitives 101 7 3 Known choice point implementatio
278. its 64 bits mais ils sont videmment capables de manipuler des entiers stock s sur 32 bits Ainsi lorsque la taille du vecteur de bits est plus petite que 32 celui ci est repr sent par un entier de 32 bits Et des fonctions sont d finies pour modifier ou tester la valeur d un bit donn Lorsque le vecteur a une taille sup rieure il n est plus possible d utiliser un entier pour le m moriser et c est pourquoi nous utilisons un tableau d entiers L acc s aux diff rents bits est naturellement plus lent puisqu il faut acc der auparavant la bonne case du tableau Ces pr cisions peuvent para tre techniques mais elles se justifient par l importance d une telle repr sentation Ces vecteurs de bits sont d une part utilis s par les proc dures de filtrage mais ils sont aussi utilis s pour repr senter les graphes bipartis n cessaires au filtrage AC Et le fait de pouvoir les repr senter par des entiers permet de r duire le nombre d allocations m moire et d accro tre les performances globales d environ 15 par rapport une implantation qui n utiliserait que la version g n ralis e des vecteurs de bits 11 2 Op rations internes 155 Repr sentation des graphes bipartis compacts Dans le chapitre 6 nous signalions qu une struc ture particuli re de graphes bipartis compacts permettait de rendre l op ration d extraction d un graphe biparti extr mement performante Nous utilisons effectivement un tableau
279. iture tant convaincu de la qualit des langages de sp cification fond s sur la r criture nous avons d cid de porter nos efforts sur l laboration de m thodes nous permettant de r aliser un environnement de sp cification utilisable pour des applications grandeur nature Notre objectif consiste donc mettre en place un support d ex cution pour le langage ELAN qui soit capable de manipuler des termes et des sp cifications de grande taille tout en garantissant une certaine rapidit d ex cution des sp cifications crites en ELAN Pour atteindre cet objectif 4 2 Pourquoi choisir un compilateur 57 l alternative tait de r aliser soit un tr s bon interpr teur soit un bon compilateur La premi re alternative est une solution ambitieuse qui demande une pr cision une rigueur et des qualit s de programmeur exemplaires pour pouvoir se d marquer de l ensemble des inter pr teurs existants La compilation de la r criture n est pas non plus un domaine r cent Hoffmann et O Donnell 1982b De nombreuses tentatives ont t faites pour essayer de r aliser des compilateurs de syst mes de r criture Strandh 1988 Sherman 1994 Hamel 1995 Metzemakers et Sherman 1995 Kamperman 1996 Ogata et al 1997 Ishisone et Sawada 1998 et pourtant l histoire montre qu aucun ne s est impos Peut tre parce qu une grande majorit des tentatives ont suivi la m me approche d finir cr er et utiliser une m
280. ivement l automate de filtrage de la figure 6 1 voir aussi programme 6 2 sur les sous termes de s fac f a a f a 9 b f g c g b g a on obtient les paires F aa p12 pal f a 9 b p12 pal f a 9 b p22 f g c 9 b p2 2 et g a p1 3 Ces paires sont utilis es pour construire le graphe biparti compact suivant fla x f y g b g a faa fla g Flgle 9 6 g a Ce graphe biparti compact est ensuite utilis e pour normaliser le sujet s une r gle est s lec tionn e par exemple f4c z f a x g a r if z x Le graphe biparti BG qui aurait t construit en appliquant la m thode g n rale s obtient en s lectionnant les ar tes reliant les som mets f a x et g a voir partie gauche de la figure 6 2 page 86 La r solution de ce graphe biparti nous donne deux solutions Si f aa f ax g a g a S2 f a g b f a x g a g a Ces solutions permettent de calculer les diff rentes instances possibles de la variable x x a ou x g b Il reste alors calculer pour chaque motif les instances des variables qui n apparaissent pas dans les graphes bipartis ce sont les variables qui sont directement sous un symbole AC Dans notre exemple il s agit des variables z et z En effet pour optimiser cette tape de r solution on consid re dans un m me temps la r gle et son extension lorsque a est affect x z prend pour valeur un sous ensemble des sous termes du su
281. iw 13 suffixe d un 66 sujet 14 Terme 148 vu comme une chaine 62 terminaison d un syst me 14 d une machine de Turing 16 250 Index t te de lecture 63 d placement de la 73 th orie associative commutative 82 syntaxique 61 th se xiii de Marian Vittek 11 de Peter Bo rovansky 29 transformation de r gles 95 transition r gle de transition d tats 63 Turing A 1 PE machine de 16 utilisateur strat gie d finie par l 16 van den Brand M G J visite Nancy 46 variable d extension 88 ensemble de 13 ins tanciation d une 124 instanciation des va riables apparaissant sous un symbole AC 94 locale 105 Vittek M compilateur ELAN 57 159 inter pr teur ELAN 56 th se de 11 where pr sentation 19 X ensemble de variables 13
282. jet qui ne font pas partie de la solution du graphe biparti et le compl ment est affect z ce qui nous donne trois possibilit s z gt fac f a g b f g c g b 0 zr f a g b z f g c g b ze f g c g b z f a g b et lorsque x f a g b on a ze fac f aa f g c g b 0 zr f a a z f g c g b ze f g c g b z f a a En aucun cas la condition z x ne peut tre satisfaite ce qui conduit un chec de l application des deux premieres r gles Il faut donc s lectionner un autre ensemble de r gles pouvant potentiellement s appliquer fac f a x f y g b r2 et son extension fac z f a x f y g b r2 Il faut cette fois construire le graphe biparti BG2 obtenu en extrayant les ar tes reliant les sommets f a x et f y g b Il faut noter qu aucune tape de filtrage suppl mentaire n est n cessaire pour construire ce nouveau graphe biparti le travail est fait une seule fois lors de la construction du CBG f a 2 f y g b BG f a a f a g b f g c g b 92 Chapitre 6 Compilation du filtrage associatif commutatif Compilation d un automate de filtrage d terministe int match_subterm_F struct term subject int mask switch getSymb subject case code_g successor_g subject gt subtern 0 switch getSymb successor_g 1 case code_a mask nb_bit 1 break break case code_f successor_f subject gt subterm 0 switch getSymb successor_f
283. l tion de pn Fic 12 3 Degr de compilation de ANS Compl tion La figure 12 3 montre que pour exemple de la compl tion le degr de compilation est de l ordre de 10 puisque la diminution du nombre d allocations de symboles de fonction est environ dix fois moins importante que la diminution du nombre total de m moire allou e 12 1 4 Bool3 C est un benchmark imagin par Steven Eker qui d finit un syst me de calcul dans une logique 3 valeurs et qui permet d valuer les performances des proc dures de normalisation AC Le syst me de r criture comporte les r gles suivantes o et sont des op rateurs AC 12 1 Estimation du degr de compilation 171 0 gt r xz 0 0 rt r r 0 TXTXT T aty z xxz yxz xxl gt 2 and x y xxxxyxy 2xxxxxy 2xzxyxy 2xxxy or x y 2xrxrxyxy rxrxy xyxy xxy x not x 2xx 1 2 1 1 Le benchmark consister normaliser les deux termes suivants et comparer leur forme normale and and a a2 and an_1 an et not or or not ai not a2 or not an 1 not an B amp 5 n 5 800 E y 120 E 1000 106 E 5 i ae 100 a 100 600 SE 3 5 ee 2 Ag 107 80 8 o ze oa g 2 400 LE 60 8 5 aE a FE a o 10 o E S 40 2 8 20 25 EK E FE 1000 2 FE B We B 2 0 E S gt E E sa
284. l composition operators for example Those two notions greatly improve the expressivity but introduce a double non determinism that generally makes difficult and inefficient their implementation The main purpose of this thesis is to study compilation techniques that improve the eff ciency of this kind of language We propose a new algorithm based on deterministic automata to efficiently compile the syntactic matching process Then we define several classes of patterns and a compact data structure in order to improve the efficiency of the AC matching algorithm Automata described above are used by the algorithm and the results show an impressive im provement of the whole normalisation process The study of the strategy language leads us to design two new backtracking primitives to handle nondeterminism Moreover we define a determinism analysis algorithm in order to reduce their use further improve the efficiency and reduce the needed memory usage While implementing the proposed methods a lot of theoretical and technical optimisations have been designed and can be reused to implement other rewriting based languages This thesis describes the algorithms and their evaluation the architecture and the design of the compiler as well as a proposal for a specification environment based on the existence of an intermediate format Keywords Compilation rewriting system strategy associative and commutative matching nondeterminism Avant propo
285. l efficacit d un ramasse miettes ne d pend pas seulement de sa complexit th orique Elle d pend grandement des choix d implantations li s l architecture de l ordinateur pour limiter les sauvegardes de registres les d fauts de cache et limiter la fragmentation de la m moire Elle d pend aussi d heuristiques qui permettent de conna tre le moment o une phase de r cup ration de m moire doit tre d clench e R cup rer trop souvent la m moire am ne consacrer trop de temps au gestionnaire de m moire ce qui laisse moins de temps au programme pour effectuer ses calculs mais ne pas la r cup rer assez souvent peut cr er des ph nom nes de d faut de page ou de d faut de cache qui ralentissent eux aussi la vitesse d ex cution du programme Dans le cadre de la r alisation du compilateur ELAN l objectif premier n tait pas d implanter un nouveau ramasse miettes d autant plus qu il existe une implantation disponible Boehm et Weiser 1988 dont les performances sont ce jour in gal es Il s agit d un ramasse miettes marquage dit conservatif gt qui pour les raisons mentionn es pr c demment peut ne pas rendre imm diatement au syst me certaines zones de m moire qui ne sont effectivement plus utilis es La pratique montre que la taille de la m moire retenue est relativement constante ce qui p nalise peu l ex cution des programmes Dans un premier temps nous avons choisi d utili
286. la classe C1 6 5 Sp cialisation utilisant une structure compacte Partant de l algorithme g n ral pr sent au paragraphe 6 3 nous proposons une nouvelle m thode de filtrage AC optimis e pour les classes de motifs d finies au paragraphe 6 4 Les points cl s de cette nouvelle approche sont les suivants grace aux restrictions faites sur les motifs la structure de filtrage AC et la hi rarchie de graphes bipartis poss dent au plus deux niveaux et le deuxi me niveau est d g n r i e de la forme gac 3 x La construction peut ainsi tre faite sans r cursivit nous utilisons une nouvelle repr sentation compacte des graphes bipartis qui permet de coder dans une structure de donn e unique l ensemble des graphes bipartis relatifs au syst me de r criture consid r 6 5 Sp cialisation utilisant une structure compacte 89 il n est plus n cessaire de construire et de r soudre des syst mes d quations diophan tiennes dans la mesure o il n y a pas plus de deux variables sous un m me symbole AC Vinstanciation de ces variables peut se faire en utilisant des m thodes simples et efficaces une analyse statique du syst me de r criture permet de d terminer l avance les r gles pour lesquelles il est suffisant de trouver une seule substitution C est le cas des r gles sans condition ou des r gles dont les conditions ne d pendent pas de variables apparaissant sous un symbole
287. la nouveaut de notre 57 arbre de filtrage 67 architecture du compilateur 143 argument 12 arit s 62 d une fonction 13 arr t d une machine de Turing 16 artificielle intelligence xiii ASF SDF 2 pr sentation 35 associatif list matching 45 associatif droite assocRight 12 associatif gauche assocLeft 12 associatif commutatif classe de motifs 88 com pilation du filtrage 81 niveau d un sym bole 88 pr sentation 21 th orie 82 associativit quation d 82 argument 12 op rateur d injection 12 157 automate m moire 72 bloquage d un 73 canonique 65 d arbre 175 de filtrage 63 de filtrage avec jumpNode 75 d terministe 62 faiblement canonique 71 faiblement d terministe 65 non d terministe 65 avantage d un compilateur 32 backtrack 100 bande de lecture 65 73 benchmark 165 BG voir graphe biparti biblioth que d ELAN 27 taille de la 155 bloquage choix responsable d un 76 d un au tomate 73 bool3 programme 170 Borovansky P th se de 29 builtin voir l mentaire CafeOBJ 1 pr sentation 35 Caml 1 162 canonique automate 65 automate faiblement 71 construction d un terme 125 terme en forme 82 caract ristique d ELAN 21 CBG voir graphe biparti Ce 102 chaine bien form e 62 longueur d une 62 terme vu comme une 62 chevalier xiii choix du langage d implantation
288. la pratique le co t de cette double conversion est largement sup rieur au temps pass dans la proc dure de filtrage proprement dite Le deuxi me goulot d tranglement est aussi li un probl me de conversion pour des raisons de simplicit et d efficacit les algorithmes de filtrage utilisent une repr sentation particuli re des termes dite aplatie o les occurrences multiples d un m me symbole AC sont limin es et les sous termes sont tri s Pour tre parfaitement ind pendant l outil de filtrage calcule donc cette forme aplatie avant chaque tape de r solution Cette 32 Chapitre 2 Outils pour sp cifier et programmer deuxi me phase de transformation est elle aussi tr s co teuse en temps de calcul et pourrait tre vit e si l int gration tait meilleure La complexit th orique d un algorithme de filtrage AC est sans commune mesure avec celle du filtrage syntaxique Si cela s ajoutent des probl mes pratiques qui rendent le temps de r solution des probl mes AC inf rieurs aux temps de conversion il devient clair que des probl mes de performances apparaissent Dans le cadre de la r alisation d un prototype l importance est moindre et l essentiel est que cela permette de r soudre des probl mes de filtrage difficiles et de pouvoir appliquer des r gles de r criture modulo l associativit et la commutativit Pour terminer cette br ve description de l interpr teur il faut
289. lation du langage de strat gie d ELAN mais les id es pr sent es ont un caract re plus g n ral qui peuvent tre r utilis es pour compiler tout autre langage de strat gie dont les op rateurs agissent sur les strat gies elles m mes Les paragraphes 8 3 8 4 et 8 5 ont montr comment compiler les strat gies l mentaires dc one dc ou dk r4 rn tudions maintenant comment compiler les op rateurs agissant sur des strat gies de one dc dk S1 Sn 1 S2 repeat S et iterate 5 Tout comme la compilation d un ensemble de r gles on peut supposer qu une strat gie S se compile en une fonction str_S qui prend un terme clos s en argument et retourne un nouveau terme clos s correspondant l application de la strat gie Pour extraire les diff rents l ments s de l ensemble des termes s1 s atteignables en appliquant la strat gie S au terme s il suffit d engendrer un fail pour r activer un point de choix pos pendant l ex cution de str_S Concat nation Etant donn es deux strat gies S1 et S2 op rateur de concat nation S1 S2 se compile facilement Il suffit d enchainer les fonctions str_S et str_S2 la strat gie S2 est ainsi appliqu e aux r sultats de S1 Lorsque S2 choue un nouveau r sultat de S est extrait et lorsque S choue la strat gie S1 S2 choue galement Exploration tant donn es n strat gies 1 Sn la compilation de S dc one dc ou dk S1 Sn s
290. le utiliser mais nous pen sons n anmoins que l tude du langage de strat gie de la notion de terme de preuve et des techniques d implantation sont des domaines prometteurs qui permettraient d am liorer encore le formalisme et son implantation Int gration de builtins pour la r solution de contraintes Bien qu il soit toujours possible de sp cifier un type de donn es en utilisant des constructeurs des r gles et des strat gies le langage ELAN poss de aussi des sortes et des op rateurs dits l mentaires ou builtins Ceci pour des rai sons videntes d efficacit Une id e pourrait tre d tudier et d finir une m thode syst matique d int gration de nouvelles sortes ou de nouveaux op rateurs l mentaires dans le langage Sup posons qu on veuille effectuer des calculs intensifs utilisant des grands nombres par exemple Ces travaux permettraient de d finir facilement une nouvelle sorte bignum et d utiliser des bi blioth ques telles que BigNum GNU MP ou Pari respectivement d velopp es par l INRIA GNU et l universit de Bordeaux pour implanter les op rations sur les grands nombres Cette id e d int gration syst matique de nouvelles sortes nous permettrait de proposer un langage base de r gles et de strat gies auquel s ajouterait la puissance et la simplicit de la programmation par contrainte On pourrait dans un premier temps d finir une sorte contrainte et utiliser un r solveur tel qu llog Sol
291. le Elle permet en particulier le sous typage la d finition d op rateurs partiellement d finis et la surcharge d op rateurs Les formules atomiques de cette logique sont des quations conditionnelles de la forme t Y et des assertions d appartenance not es t s signifiant que le terme t doit appartenir la sorte s Les d clarations d op rateurs et de sous sortes sont vues comme des axiomes d appartenance Consid rons par exemple la sorte Entier et sa sous sorte Naturel tous les Naturels sont des Entiers Consid rons une fonction f d finie sur les Entiers dont les valeurs sont des Naturels La d finition d une telle fonction peut s exprimer en utilisant deux axiomes d appartenance x Entier if x Naturel et f x Naturel if x Entier A Vimage d ELAN le systeme Maude permet de d finir des modules fonctionnels mais il permet en plus de d finir des modules orient s objet Consid rons par exemple la sorte Compte compos e entre autres du montant disponible et du nom du propri taire d un compte bancaire L approche orient e objet permet d crire des r gles de transformation d tats dans lesquelles il n est pas n cessaire d exprimer l ensemble des champs composant la sorte manipul e ni l en semble des objets existant en m moire On peut ainsi crire transf rer M de C1 vers C2 lt C1 Compte montant M1 gt lt C2 Compte montant M2 gt gt lt C1 Compte montant M1 M gt lt C
292. le function This guarantees that the handle function is called each time a nondeterministic func tion executes the return instruction These calls save the corresponding stack frames which are then used to recover the original system stack by the fail function The setChoicePoint algorithm performs two actions save machine registers and activate the handle function Let 7 be a choice point setChoicePoint saves registers which include ra Env at 7 sp r and fp Env_at r pushes the special mark endReg into the trail and then jumps into the handle function saveFrame Let be the environment of the function which did the branching to saveFrame when creating the choice point Env_at r e saveFrame saves the frame of the function that called the function associated to ej Let us call emb e its environment The saved frame is fp emb e sp Min e Then saveFrame pushes the special mark endFrame into the trail e saveFrame replaces the caller s return address saved in emb e by the saveFrame proce dure s address Thus each time a function returns the save frame handler is activated The handle function saveFrame may be called several times before a fail occurs In this case several frames are saved into the trail Figure 7 3 illustrates this possibility two choice points have been created and three frames have been saved two of them are associated to the first choice point This situation occurs when the fun
293. les exp rimentations red fib 3 2 d red fib 4 2 d red fib 5 2 d A 5 4 Somme obj SOMME is protecting MACHINE INT sorts State Set vars I J MachineInt vars S Sl S2 Set op init MachineInt gt State op error gt State op state Set Set MachineInt gt State op empty gt Set op set MachineInt gt Set op buildSet MachineInt gt Set op U Set Set gt Set assoc comm op in MachineInt Set gt Bool eq in I empty false ceq in I U set J S true if I eq in I S false eq buildSet 0 empty eq buildSet I U set I buildSet I 1 eq init I state buildSet I empty 0 ceq state U set I S1 S2 J error if in I S2 ceq state U set I S1 S2 J state S1 U S2 set I J I if in I S2 false endo red init 10 red init 20 red init 30 red init 50 red init 100 red init 200 red init 300 red init 400 red init 500 A 6 Otter 229 A 6 Otter A 6 1 Bool3 lex b0 bi b2 al a2 a3 a4 a5 a6 a7 a8 success qi q2 q3 q4 and _ _ or _ _ not _ equal _ _ p _ _ m _ _ 12 set demod_inf clear demod_history assign demod_limit 1 assign max_given 1 clear for_sub clear back_sub assign max_mem 100000 100 Megabytes list demodulators p b0 x x p x bO x p x p x x DO p p x x x b0 p x y p y x ply p x z p x ply z m b0
294. letion gt repeat repeat repeat Collapse repeat Compose repeat Simplify repeat Delete repeat Orient Deduce Consid rons maintenant la r gle Delete par exemple qui exprime l limination des galit s triviales s s de l ensemble E La simplicit d expression d une telle r gle vient du fait que l op rateur d union U est consid r associatif et commutatif L expression EU s s prend en compte toutes les permutations possibles des l ments de F pour y rechercher l galit s s Les langages Maude et ELAN permettent la d finition de tels op rateurs ce qui augmente consi d rablement leur expressivit et leur facilit manipuler des structures d ensembles ou de multi ensembles par exemple Le langage ASF SDF propose quant lui des op rateurs seulement associatifs ce qui le rend plus apte manipuler des structures de listes par exemple ELAN Cette th se s inscrit dans le cadre de l implantation du langage ELAN Depuis la r alisation de l interpr teur en 1993 le langage a t intensivement utilis pour prototyper et r aliser de nombreuses applications telles que des langages de programmation avec contraintes des r sol veurs de contraintes et des outils de preuves de propri t s de programmes par exemple Ce qui a plu dans un premier temps c est l expressivit du langage la possibilit de d finir des notations infix es des op rateurs associatifs et commutatifs
295. library for backtrack programming JICSLP 98 Post Conference Workshop on Implementation Technologies for Programming Languages based on Logic 242 Bibliographie Moreau P E 1998b Compiling nondeterministic computations Technical Report 98 R 005 CRIN URL file ftp loria fr pub loria protheo TECHNICAL_REPORTS_1998 Moreau 98 R 005 p8 gz Moreau P E et Kirchner H 1997 Compilation Techniques for Associative Commutative Normalisation in A Sellink ed Second International Workshop on the Theory and Practice of Algebraic Specifications Electronic Workshops in Com puting eWiC web site http ewic springer co uk Springer Verlag Amsterdam 12 pages URL file ftp loria fr pub loria protheo COMMUNICATIONS_1997 Moreauk ASFSDF97 ps gz Moreau P E et Kirchner H 1998 A compiler for rewrite programs in associative commutative theories Principles of Declarative Programming number 1490 in Lecture Notes in Computer Science Springer Verlag pp 230 249 Report LORIA 98 R 226 Nakagawa A Futatsugi K Tomura S et Shimizu T 1987 Algebraic Specification of Macintosh s QuickDraw Using OBJ2 Technical Report Draft ElectroTechnical Laboratory Tsukuba Science City Japan Proceedings of the 10th International Conference on Software Engineering Singapore April 1988 Nedjah N 1997 Pattern matching automata for efficient evaluation in equational program ming PhD thesis UMIST Manchester UK
296. lisation efficace Nous sommes en pr sence de deux cat gories de modules les modules syntaxiques qui correspondent des fichiers physiques et dont le d coupage se fait en fonction des sortes et de la syntaxe des op rateurs d finie sur ces sortes les modules s mantiques dont le d coupage est reli la notion de syst me de r criture Ces modules correspondent des ensembles de r gles non nomm es dont le membre gauche commence par un m me symbole et des ensembles de r gles nomm es apparaissant dans une m me strat gie La premi re cat gorie est li e la syntaxe du programme alors que la deuxi me est reli e sa s mantique Et il n y a rien d tonnant voir ces deux oppositions appara tre lorsqu on essaie de traduire des modules du langage source appartenant la premi re cat gorie en des modules du langage cible appartenant la deuxi me cat gorie Afin de rendre possible la compilation modulaire tout en explicitant le passage d une ca t gorie l autre il est n cessaire d introduire une tape de r organisation souvent appel e reshuffling Partant d un ensemble de modules Efix correspondant des modules ELAN l tape de r organisation analyse ces modules et g n re un nouvel ensemble de modules Efix o les r gles et strat gies sont regroup es en unit s s mantiques Cette tape garantit par exemple que toutes les r gles dont les membres gauches commencent par un
297. liste de voir le processeur comme une boite noire capable de comprendre directement le langage machine Et pourtant la r alit est souvent un peu plus complexe Aussi trange que cela puisse para tre le langage machine n est pas assez primitif pour que l on puisse r aliser facilement des circuits lectroniques capables d ex cuter les op rations du langage Les fabricants ont donc ajout un niveau interm diaire appel micro code Cette fois ci il existe bien des assemblages de composants lectroniques qui permettent d ex cuter directement des programmes crits dans ce langage Les fabricants r alisent alors un interpr teur crit en micro code pour le langage machine qu ils veulent mettre disposition des utilisateurs D un point de vue ext rieur peu importe le nombre de niveaux interm diaires ajout s le processeur se comporte comme s il comprenait directement le langage machine Mais d un point de vue conceptuel l existence d un interpr teur est toujours n cessaire pour ex cuter un programme C est pourquoi il n est jamais vident d affirmer que tel programme est inter pr t et tel autre compil Tout d pend du niveau de granularit avec lequel le processeur est consid r Supposons que nous voulions implanter un langage L sur un ordinateur vaut il mieux cr er un interpr teur ou un compilateur pour le langage L Il n existe videment pas de r ponse unique Le choix d pend de ce
298. lit des termes r cemment allou s soit lev la phase de copie proportionnelle aux nombres d objets vivants devient peu co teuse La taille de l espace m moire g r par le mark and sweep quant elle devient alors nettement plus petite que celle g r e pr c demment ce qui augmente son efficacit Il faut noter que ce genre d approche n a d int r t que si un terme de nouvelle g n ration g r par le copy collector n est jamais r f renc par un terme d ancienne g n ration g r par le mark and sweep Sinon il faudrait parcourir l ensemble des termes d ancienne g n ration pour d terminer et copier les termes de la nouvelle g n ration qui sont vivants ce qui aurait une complexit comparable celle d un mark and sweep seul Dans le cadre d ELAN ce genre de situation n arrive jamais lorsqu on s interdit de r utiliser des morceaux du membre gauche pour construire le terme r duit En effet la construction du bas vers le haut bottom up d un terme garantit que les sous termes d un symbole sont plus vieux que le symbole il n y a donc jamais de r f rence vers un terme se trouvant dans une g n ration plus jeune Le concept de base des ramasse miettes g n rations est de supposer qu un objet qui a surv cu longtemps a de grandes chances de vivre encore longtemps Et en fonction du compor tement moyen des objets allou s il est possible d ajuster la structure du ram
299. lons pr senter un lemme tabli dans Gr f 1991 et en d river un algorithme incr mental de construction d arbre de filtrage Cette approche vite d avoir calculer une cl ture pour en d river un automate de filtrage mais au contraire un arbre de filtrage est directement construit et la cl ture associ e est une cons quence de cette construction D finissons l op rateur V comme tant la cl ture de l union de deux ensembles clos soient M et N deux ensembles clos i e M M et N N V M N MUN 68 Chapitre 5 Compilation du filtrage syntaxique En particulier on a V 0 N N V M 0 M et si M N e alors V M N MUN MUN e Supposons maintenant que MUN e D apr s Graf 1991 MUN s M UN sex o My M u N N w et pour tout s w M s si M s 40 Ms 4 wt M w si M s Oet M w 0 ect N s 40 0 sinon N s si N s 0 Ns 4 wt8N w si N s Qet N uzbet M s 40 0 sinon On peut remarquer que le calcul de M d pend de l ensemble N et r ciproquement Nous voulons d finir un algorithme pour construire de mani re incr mentale la cl ture ou Varbre de filtrage recherch Partant d un ensemble clos L nous ajoutons les suffixes un un et en fonction de la structure du motif diff rents types d insertion sont effectu s En supposant que le suffixe ins rer est de la forme sp avec p X on a alors sp sp et nous pouvons utiliser le lemme pr c dent pour calcul
300. lorer un espace de recherche Il est ainsi toujours d actualit d tudier un m canisme permettant de r duire le nombre de normalisations identiques qui sont effectu es plusieurs fois La premi re approche serait d tudier une m thode de tabulation pour la r criture l id e consiste m moriser dans une table les couples terme forme normale les plus souvent calcul s Avant de calculer la forme normale Y d un terme t cette table organis e l image d une m moire cache serait utilis e pour y rechercher le couple t Lorsque celui ci est trouv le calcul de t t peut tre vit Dans le cadre de l exploration d un arbre de recherche par exemple on peut imaginer une approche diff rente consistant exploiter les termes de preuve parall lement la gestion des retours arri res Lorsqu un retour arri re backtracking ou backjumping est effectu le terme de preuve peut tre utilis pour reconstituer certains calculs d truits en vitant de les recalculer enti rement pour acc l rer l exploration de l espace de recherche Cette technique appel e forwardjumping pourrait diminuer consid rablement la redondance des calculs effectu s tout en conservant la s mantique du calcul plus long terme Face l volution extr mement rapide des m thodes et des technologies li es l informa tique nous pensons bien que les solutions pr sent es dans ce document ne sont
301. lt3 y y mult4 y y mult5 y y mult6 y y mult7 y y mults y y mult9 y La D PJ pd pd D pd pd pd pd rule x Nat prec 0 x 9 prec x rule x Nat prec 1 x 0 x rule x Nat prec 2 x 1 x rule x Nat prec 3 x 2 x rule x Nat prec 4 x 3 x rule x Nat prec 5 x 4 x rule x Nat prec 6 x 5 x rule x Nat prec 7 x 6 x rule x Nat prec 8 x 7 x rule x Nat prec 9 x 8 x rule O fib d 1 d rule fib 1 4 1 d rule x Nat fib x fib prec x fib prec prec x A 1 Brute 201 C meq x d true neq x 1 d true compile TRS compile produce statstics stat on reduce fib 6 1 d reduce fib 7 1 d reduce fib 8 1 d reduce fib 9 1 d reduce fib 0 2 d reduce fib 1 2 d reduce fib 2 2 d reduce fib 3 2 d A 1 4 Somme Use flattened notation for associative operators option flat sort declaration sort Int Set State Bool Void operator declarations op op op op op op op op op op op op op op op op op op helper operators for in aux Int Set Bool 1 2 0 helper operator 1 true or false Bool Bool 1 0 helper operator 2 op op o O Int s Int Int 1 Int Int Int 1 2 0 f Int
302. ly as the best current implementations of functional and logic program ming languages This paper presents a formalisation of the implementation and gives detailed algorithms to re use adapt and improve the proposed method It took great benefit from the idea and comments of Marian Vittek 7 2 Basic choice point primitives 101 Section 7 2 illustrates the behaviour of usual functions used to implement backtracking in nondeterministic computations Section 7 3 gives a brief overview of existing techniques for implementing choice points and compiling languages with nondeterministic features into C Section 7 4 presents algorithms for the two new proposed functions that implement an efficient backtracking control flow setChoicePoint and fail Then Section 7 5 illustrates on one example how the use of setChoicePoint and fail can help in solving in a natural way algorithms that involve search Some experimental results show that the proposed method can be a good alternative to compile in an efficient way languages that involve nondeterministic features 7 2 Basic choice point primitives Backtracking is a well known approach to implement nondeterministic computations In com pilation techniques two functions are usually needed the first one to create a choice point and save the execution environment The second one to backtrack to the last created choice point and restore the saved environment Many languages that offer nondeterministic capa bili
303. males de termes par rapport un syst me de r gles de r criture conditionnelles Pour cela nous avons besoin d un algorithme de filtrage AC satisfaisant les conditions suivantes tant donn s un terme s et un ensemble de r gles p1 T1 Pn Tn il doit s lec tionner rapidement une r gle de sorte qu il existe une substitution o telle que p o ac S Il doit ensuite trouver une telle substitution o du probl me de filtrage consid r et surtout permettre de construire efficacement une telle substitution 81 82 Chapitre 6 Compilation du filtrage associatif commutatif L utilisation de r gles conditionnelles fait que pour une solution o donn e les conditions peuvent ne pas tre satisfaites il faut donc que l algorithme de filtrage soit capable d ex traire successivement toutes les solutions d un probl me de filtrage donn Mais il n est pas n cessaire de calculer cet ensemble de solutions en une seule fois Lorsque pour une r gle de r criture donn e l algorithme ne fournit pas de solution satis faisant les conditions il doit tre capable de s lectionner efficacement une autre r gle de r criture l serait alors int ressant de r cup rer une partie du travail effectu pendant les premi res tentatives infructueuses On peut remarquer qu il n est pas n cessaire de s lectionner l ensemble des r gles en une seule fois celles ci peuvent tre d termin es une une L
304. matiquement la sp cification que l utilisateur ex cute GSE Generic Syntax Directed Editor Koorn 1994 Cet outil permet de fournir en m me temps qu un logiciel d velopp dans l environnement ASF SDF un diteur adapt au lo giciel cet diteur int gre un module d analyse syntaxique permettant de v rifier facilement la correction syntaxique des termes donn s en entr e du programme Un analyseur interactif capable de v rifier la syntaxe d un morceau de texte appel focus par simple utilisation de la souris Un outil d affichage appel pretty printer permettant de mettre en forme les r sultats fournis sous forme de termes Un interpr teur dot d un analyseur incr mental Un compilateur permettant d effectuer des compilations modulaires Le syst me actuel est en pleine volution dans la mesure o une nouvelle organisation interne appel e ASF SDF2 est en cours de d veloppement van den Brand Heering et Klint 1997 van den Brand Olivier Moonen et Kuipers 1997 Dans cette nouvelle architecture tous les composants sont reli s par un outil de synchronisation et de contr le fond sur l alg bre de processus le ToolBus Bergstra et Klint 1995 Contrairement ce que laisserait penser la simplicit du langage de sp cification les possi bilit s offertes par l environnement n en sont pas diminu es comme en t moigne le nombre de d veloppements majeurs r alis s le com
305. mble pour r duire un terme clos donn Le probl me est n anmoins l g rement diff rent dans la mesure o les membres gauches des r gles peuvent contenir des symboles associatifs et commutatifs La principale difficult introduite consiste alors s lec tionner une r gle dont le membre gauche filtre le sujet modulo les axiomes d associativit et de commutativit Le probl me n est une fois de plus pas nouveau dans la mesure o il a t intensivement tudi dans Hullot 1980 Benanav Kapur et Narendran 1987 Kounalis et Lu giez 1991 Bachmair Chen et Ramakrishnan 1993 Lugiez et Moysset 1994 Eker 1995 Moreau et Kirchner 1998 Ici encore nous nous int ressons aux algorithmes de filtrage many to one mais la diff rence de la th orie syntaxique la r solution d un probl me de filtrage AC peut avoir plusieurs solutions On imagine alors facilement qu un algorithme permettant de calculer une solution du probl me de filtrage correspondant l application d une seule r gle n a pas le m me co t et ne s utilise pas de la m me fa on qu un algorithme retournant toutes les solutions associ es aux probl mes de filtrage relatifs l ensemble des r gles pouvant s appliquer C est pourquoi il est important de clarifier le contexte d utilisation afin de d terminer quel type d algorithme doit tre tudi Rappelons que notre objectif est de r aliser un compilateur permettant de calculer des formes nor
306. me dont le comportement est quivalent au premier L efficacit du programme obtenu doit tre suffisante pour satisfaire l utilisateur le compromis entre l expressivit du langage de sp cification la facilit d utilisation le temps de d veloppement et le temps d ex cution doit tre 2 5 Comparaison avec d autres environnements de sp cification 33 bon D un point de vue pratique la fiabilit et la vitesse d ex cution du programme obtenu doit permettre de d velopper des outils qui peuvent tre r utilis s pour r soudre des probl mes difficiles et m me tre int gr s l environnement de sp cification ELAN 2 5 Comparaison avec d autres environnements de sp cification Il existe un grand nombre d outils li s la r criture mais une grande partie de ces sys t mes sont des logiciels de d duction automatique qui utilisent la r criture de fa on interne pour r duire et normaliser des termes Nous nous int ressons ici aux caract ristiques des prin cipales r alisations logicielles fond es sur la logique de r criture le lecteur int ress par une comparaison des diff rents formalismes de sp cification peut se reporter au survey de Martin Wirsing 1995 pour plus de pr cisions Dans ces logiciels la logique de r criture n est pas seulement une technique interne de r solution mais le paradigme principal de calcul offert Putilisateur C est pourquoi nous ne retenons que les quatre enviro
307. ment compiler ce type de langage pour un terme clos s repr sent en m moire par une structure de donn es il faut s lectionner une ou plusieurs r gles 1 r1 in rn telles que le membre gauche l filtre le sujet s et telles que les ventuelles conditions soient satisfaites Les m thodes de filtrage many to one pr sent es dans les chapitres 5 et 6 peuvent tre utilis es Il reste alors s lectionner une r gle et construire le membre droit de la r gle en instanciant les variables par une solution du probl me de filtrage consid r pour obtenir un nouveau terme clos s L ordonnancement des quatre tapes filtrage valuation de conditions s lection d une r gle et construction du terme r duit d pend grandement des particularit s du langage de sp cification et des techniques d implantation choisies 113 114 Chapitre 8 Compilation des r gles et des strat gies Dans l interpr teur Maude Clavel et al 1998 par exemple le filtrage syntaxique est r alis par des automates adaptatifs non d terministes ceci parce que l aspect r flexif du langage am ne le syst me de r criture voluer dynamiquement le temps de construction des automates devient alors important Dans le cas AC un algorithme de filtrage one to one est utilis pour pouvoir traiter plus efficacement les motifs non lin aires Ces choix techniques font que les r gles sont s lectionn es l une apr s l autre Pour un
308. ment reconnaissant une p riode de l ann e o il tait tr s occup Guy Cousineau m a honor en acceptant d tre rapporteur de cette th se Son ouverture et sa lecture attentive m ont fait d couvrir un tat d esprit d une grande valeur J ai t particuli rement touch par ses commentaires sur le manuscrit et par ses questions au cours de la soutenance Je tiens le remercier tout particuli rement pour sa disponibilit et sa confiance Michael J O Donnell m a fait l honneur d tre rapporteur de cette th se et n a pas h sit venir sp cialement de Chicago pour participer la soutenance Les discussions que nous avons eues ainsi que ses remarques sur le document m ont t tr s pr cieuses Je tiens aussi le remercier d avoir accept de lire tout le manuscrit en fran ais Si je dois remercier quelqu un pour m avoir donn envie de poursuivre mes tudes au Loria c est bien Karl Tombre qui m a accueilli en stage voila bient t 5 ans Bien que travaillant dans un autre domaine il a accept d tre rapporteur de cette th se J ai ainsi pu profiter de ses remarques pr cieuses sur le document de sa rigueur et de sa vision de l informatique Sans le savoir il m a continuellement incit clarifier mes explications en tant mon lecteur imaginaire tout au long de la r daction Je tiens le remercier amicalement Je tiens remercier Alexander Bockmayr pour avoir acce
309. ment sous un symbole AC Consid rons le terme t expand a b c d n o sont des op rateurs AC et a b c d n des variables on a alors t expand n Il faut noter que le terme est bien form si les sym boles AC sont vus comme des constantes La premi re tape de la proc dure de filtrage AC consiste utiliser le filtrage syntaxique pour tester s il existe un filtre de p vers et savoir si p lt a s a potentiellement une solution Dans l affirmative le probl me p si Pe s se d compose en autant de nouveaux sous problemes de filtrage qu il y a de symboles AC dans p Ces probl mes sont de la forme a fac pi tomes gti RE CCE De lt Ac fao s tee gem o tous les p1 px sont des variables et aucun des Pk 1 pn n est une variable R soudre un de ces probl mes revient consid rer une structure de donn e BG Vi U V2 E appel e graphe biparti Un tel graphe est compos de deux ensembles de sommets Vj sf oem V fons per et d un ensemble d ar tes E qui sont les paires s pj telles que p s ait une solution La construction d un tel graphe se fait en appliquant 84 Chapitre 6 Compilation du filtrage associatif commutatif r cursivement la proc dure de filtrage AC ce qui m ne la construction d une hi rarchie de graphes bipartis R soudre une telle hi rarchie revient chercher s par ment les solutions des graphes la composant et v rifier la coh
310. mes 16 Chapitre 1 Langage de sp cification ELAN de r criture dont on ne peut prouver ni la terminaison ni la non terminaison C est principalement ce qui a amen les th oriciens introduire la notion de strat gie d appli cation pour mieux contr ler l application des r gles de r criture Les strat gies les plus connues sont les suivantes la strat gie de parcours int rieur gauche leftmost innermost s lectionne le radical le plus gauche et le plus interne chaque tape de r criture la strat gie de parcours int rieur parall le parallel innermost s lectionne tous les radicaux les plus internes la strat gie de parcours ext rieur gauche leftmost outermost s lectionne le radical le plus gauche et le plus externe chaque tape de r criture la strat gie de parcours ext rieur parall le parallel outermost s lectionne tous les radicaux les plus externes Dans l environnement ELAN c est la strat gie leftmost innermost qui a t retenue comme strat gie de normalisation Il existe cependant un autre moyen de contr ler l application des r gles dans ELAN celui ci consiste utiliser des strat gies d finies par l utilisateur Un lecteur attentif aura sans doute remarqu que les r gles de r criture d finies pr c dem ment commencent toutes par un crochet ouvrant et un crochet fermant Il s agit en fait d un emplacement permettant de no
311. mes rencontr s a permis de constater que les automates produits ne correspondaient qu des sous ensembles des cl tures r duites pr sent es dans ce chapitre C est donc en essayant de rentabiliser notre premier investissement que nous avons corrig l algorithme et finalement d velopp un nouvel algorithme pour construire des automates d terministes Par rapport l algorithme d Albert Graf 1991 notre approche a l avantage de proposer une version constructive et incr mentale de l algorithme les motifs sont ins r s un un dans une structure arborescente Apr s chaque insertion l arbre obtenu est un automate directement exploitable Il n est pas n cessaire de calculer une cl ture puis d en d river un automate Le deuxi me avantage concerne la taille m moire occup e par l automate l utilisation de jumpNode et d un automate correspondant une cl ture r duite permet de r duire consid rablement le nombre d tats composant l automate tout en am liorant ses performances En 1997 un nouvel algorithme pr sent dans Nedjah et al 1997 a permis d obtenir des automates de filtrage optimaux gt en terme de taille occup e Ces automates ne peuvent cepen dant s utiliser que pour filtrer des ensembles de motifs avec priorit Lorsque plusieurs motifs filtrent un sujet l automate n est pas capable de donner la liste de motifs seul le motif ayant la plus grande priorit peut tre donn
312. mes sont repr sent s par une structure arborescente faisant intervenir des pointeurs voir figure 11 2 le m lange de ces deux types de repr sentation implique que certains symboles ont des sous termes repr sent s par des pointeurs et d autres sous termes repr sent s par des entiers Ar 3 12 Fic 11 2 Dans la biblioth que de support d ex cution les termes sont repr sent s par une structure arborescente Le terme f a b par exemple est ainsi repr sent dessin de gauche par un pointeur vers une zone de m moire contenant le symbole f et contenant deux pointeurs vers des zones repr sentant les constantes a et b Supposons maintenant que les entiers d ELAN soient repr sent s directement par des entiers le terme f 3 12 serait alors repr sent dessin de droite par un pointeur vers une zone de m moire contenant le symbole f et les deux valeurs 3 et 12 Lorsqu on d finit des fonctions de parcours de termes dans le cadre du filtrage ou de la comparaison de deux termes par exemple il est essentiel de pouvoir acc der aux sous termes 11 3 Sortes et op rations pr d finies 157 Mais si la repr sentation des sous termes n est pas toujours la m me l acc s se fait diff remment en fonction de leur sorte Il faut donc conna tre la signature d un symbole pour pouvoir acc der ses sous termes Du point de vue compilation ce n est pas g nant mais du point de vu
313. mes t et des strat gies S telles que l application de S t termine Lorsqu il s agit d valuer le nombre de r sultats qu il est possible d obtenir en appliquant la strat gie dk a b sur un terme t quelconque il est naturel de consi d rer que l application de la strat gie peut chouer si t 4 a la r gle ne peut pas s appliquer ou retourner un seul r sultat si t a Par extension nous disons que l application de la strat gie dk a a retourne au plus un r sultat et que l application de repeat dk a a sur un terme t quelconque retourne un et un seul r sultat gt m me s il est clair que l application de cette strat gie au terme t a ne termine pas Il faut ainsi consid rer l expression que un et un seul 9 2 Classification du d terminisme 133 r sultat signifie lorsque l application de la strat gie termine nous ne pouvons obtenir qu un seul r sultat En adoptant la m me terminologie que celle pr sent e dans Henderson Somogyi et Conway 1996 nous obtenons la classification suivante une strat gie S est dite deterministe det si pour tout terme t son application S t retourne exactement un r sultat une strat gie S est dite semi d terministe semi si pour un terme t quelconque son ap plication S t choue ou retourne au plus un r sultat une strat gie S est dite multi r sultats multi si pour un terme t quelconque son applica tion S t n
314. minique Colnet auteur de GNU Eiffel il m a souvent dit que s il avait le choix entre perdre les sources du compilateur Eiffel ou perdre le jeu de tests qu il a construit parall lement au d veloppement du compilateur il prefererait perdre les sources de son programme Cette mise en place de m thodes de d veloppement rend plus facile le travail en quipe tout en assurant un avenir au logiciel nous aide am liorer consid rablement la qualit du logiciel produit et nous a aussi permis de diffuser l environnement ELAN par ftp et sur le c d rom dit par l INRIA Le logiciel est actuellement diffus dans plus de 183 184 Conclusion 40 unit s de recherche diff rentes Nous avons aussi t agr ablement surpris de savoir qu ELAN est utilis comme support de cours sur le g nie logiciel les langages de sp cification alg brique et la r criture dans diff rentes universit s am ricaines et europ ennes D un point de vue th orique les apports ne sont certes pas comparables au th or me de G del mais se composent de nombreuses observations propri t s et algorithmes qui apportent des solutions aux probl mes de filtrage syntaxique de filtrage AC d analyse du d terminisme et de compilation de strat gies Compilation de la normalisation AC La complexit des algorithmes traitant les th ories AC est telle que les outils r sultants sont souvent inefficaces parce que le filtrage est exponentiel Une tude
315. minutieuse de la gestion du cas AC par l interpr teur ELAN a permis de mettre en vidence les probl mes r soudre et de faire ressortir un sous ensemble de motifs de r gles de r criture particuli rement utilis s qu il est int ressant de compiler efficacement Apr s une premi re phase d laboration de nouvelles techniques de compilation de la r criture Associative et Commutative pr sent e dans Moreau et Kirchner 1997 nous avons implant un prototype permettant de tester et de valider l int r t des m thodes imagin es Notre approche consiste compiler de mani re tr s efficace les r gles qui apparaissent le plus souvent dans les sp cifications crites par les utilisateurs et traiter les autres r gles par une technique de transformation de programmes Le c ur de la m thode repose sur la d finition d une structure de donn es compacte qui permet de factoriser le travail effectu pendant les processus de r solution des probl mes de filtrage AC au lieu de construire des structures de donn es pour chaque nouveau probl me de filtrage celles ci ne sont calcul es qu une seule fois et r utilis es par diff rentes proc dures de r solution Cette structure de donn es est construite en utilisant des automates de filtrage syntaxique many to one ce qui nous a amen proposer un nouvel algorithme de compilation du filtrage syntaxique Cet algorithme pr sent dans le chapitre 5 acc l re et permet une const
316. mm es 170 conditions 185 valuations locales du type where et 17 valuations locales du type choose try 55 strat gies se composant de 19 iterate 33 repeat 61 dc one 65 dc 6 dk et 24 compositions de strat gies Sur cet exemple le compilateur a appliqu plus de 524 millions de r gles en moins de 10 minutes ce qui aurait pris pr s de quatre jours l interpr teur pour effectuer le m me calcul 12 3 Co t du filtrage AC Depuis les travaux de compilation de Michael J O Donnell et de Robert Strandh nous savons que l tape la plus co teuse d une proc dure de normalisation syntaxique n est pas le filtrage mais bien la construction du terme r duit Par contre dans le cas associatif et commutatif nous tions encore tr s loin de ces conclusions Avant d tudier les diff rents moyens de compiler la r criture modulo AC nous avions effectu des exp rimentations avec l interpr teur ELAN afin d valuer l int r t potentiel de telles m thodes de compilation En analysant la r partition des calculs de l interpr teur sur des exemples tels que Bool3 Nat10 ou Somme nous avions remarqu que plus de 80 du temps de calcul tait consacr au filtrage AC ce qui montrait clairement l int r t d am liorer l efficacit d une telle proc dure Pour ces trois programmes le tableau suivant donne un aper u du temps pass dans les op rations li es au filtrage AC lorsque le compilateur est utilis Le tot
317. mmer une r gle particuli re Lorsque cet emplacement est laiss vide comme c tait le cas jusqu pr sent on parle alors de r gles non nomm es Un syst me de calcul ELAN est compos de trois parties des r gles non nomm es qui sont appliqu es le plus souvent possible en suivant la strat gie leftmost innermost La position o s applique une r gle est d termin e par la strat gie par contre le choix de la r gle appliquer n est pas defini des r gles nomm es qui ne sont appliqu es que lorsque le programmeur le demande expli citement Ces r gles sont toujours appliqu es la racine des termes mais cette fois ci le choix de la r gle appliquer peut tre contr l par l utilisateur des strat gies qui sont des expressions construites partir d op rateurs l mentaires Les strat gies utilisent les noms appel s aussi labels ou tiquettes donn s aux r gles pour ordonnancer et contr ler leur application 1 4 R gles et strat gies Une des originalit s d ELAN est de permettre l utilisateur de contr ler l application des r gles de r criture en d finissant des strat gies partir des noms de r gles il est ainsi possible de construire des strat gies qui retournent un ou plusieurs r sultats d ordonnancer l application des r gles et de r p ter aussi longtemps que possible l application d une r gle ou d une strat gie Une r gle nomm e est ainsi consid
318. n pr fixe clos a X tel qu il existe deux motifs distincts de L dont les pr fixes filtrent vers a Consid rons par exemple l ensemble L fab fwc o f est un symbole d arit 2 L est avec recouvrements de pr fixes parce qu il existe un pr fixe clos a fa qui est une instance des deux pr fixes fa Pref fab et fw Pref fuc En effet lorsqu un suffixe commen ant par une variable w est ins r dans un arbre de filtrage cela provoque l ajout d un suffixe commen ant par un certain nombre de variables w p Un effet boule de neige se produit et de nombreux suffixes sont ajout s en cascade Dans la suite de ce chapitre nous proposons un nouvel algorithme de construction de cl tures r duites qui diminue consid rablement la taille des arbres construits L algorithme se d compose en deux tapes 1 la premi re phase construit une cl ture r duite Algorithme 5 2 les suffixes w p qui provoquaient des ajouts en cascades ne sont plus ajout s La cl ture obtenue n est vi 5 4 Cl ture r duite d un ensemble de motifs 71 demment plus quivalente celle calcul e par les algorithmes pr c dents et en particulier l automate d terministe associ n est plus canonique L automate ainsi construit est dit faiblement canonique 2 la deuxi me phase de l algorithme ajoute de nouvelles r gles de transition d tats l au tomate pour simuler l ajout des suf
319. n on the usage of local variables and parameter passing when programming with setChoicePoint and fail We first present an approach which consists in extending the two standard C functions set jmp and longjmp Then we define some notations in order to give detailed algorithms of the second method which minimises the size of memory blocks that have to be saved resp restored when setting a choice point resp performing a failure 7 4 1 setJump an extension of setjmp The standard C library defines two low level functions set jmp and longjmp The first one saves the current execution context machine registers and a return address in a jmp_buf structure The second one can restore any stack context that has been saved in a jmp_buf structure by setjmp After the longjmp runs the program execution continues as if the corresponding call to the setjmp function had just returned the value specified in the longjmp call The result of long jmp is undefined if the function that made the corresponding call to the set jmp has already returned We propose first to extend set jmp and longjmp into setJump and longJump to suppress such undefinedness the whole stack system memory block between the base pointer and the stack pointer has to be saved in a Jump_buf structure when calling setJump Given an integer different from 0 and a valid Jump_buf structure the longJump function restores registers and the whole system stack and then the integer parameter is
320. n outil qui transforme des sp cifications abstraites en des programmes ex cutables ind pendants pouvant s int grer dans des r alisations logicielles plus importantes 2 1 Biblioth que L aspect modulaire d ELAN permet d crire des morceaux de sp cification qui peuvent tre r utilis s pour d velopper des sp cifications plus complexes Certains modules caract re g n ral sont ainsi regroup s pour former une biblioth que Le langage de sp cification ELAN permet de d finir une grande vari t de types de donn es et d op rations mais dans certains cas il est n cessaire d int grer un type de donn e ou une 27 28 Chapitre 2 Outils pour sp cifier et programmer op ration particuli re au langage lui m me Dans le cadre de la r criture conditionnelle par exemple il faut que la notion de satisfaisabilit d une condition fasse partie int grante du langage de sp cification Les langages tels que Maude Clavel Dur n Eker Lincoln et Meseguer 1998 ou ASF Klint 1993 Deursen Heering et Klint 1996 permettent de d crire des r gles conditionnelles o les conditions sont de la forme if t s Une telle condition est alors satisfaisable lorsque les termes t et s sont gaux La notion d galit doit alors faire partie du syst me En ELAN une approche l g rement diff rente a t choisie les conditions sont de la forme if c o c est un terme de la sorte bool Une telle condition est satisfaisabl
321. ncat nation d un l ment une liste 17 de strat gies 17 127 conception d ELAN 39 m ta 53 condition compilation des 123 pr sentation 19 r gle avec 15 confluence d un syst me 14 conservatif ramasse miettes 161 construction d une substitution 94 du terme r duit 124 contr le de la s lection 132 du nombre de r sultats 132 Eiffel approche hybride 147 ELAN 2 formalisme de sp cification 11 mini 139 174 l mentaire module 27 sortes et op rations 156 emballage de termes 157 ensemble cl ture d un 65 66 cl ture r duite d un 70 de motifs 63 de termes 13 de variables 13 fini d tats 63 environnement comparaison des 33 de sp ci fication 27 position vide 13 quation diophantienne 84 Equational Logic Programming 2 Erlang 102 erreur d tection d 136 tat ensemble fini 63 final 63 initial 63 coop ration avec Mark van den Brand 46 ELAN tiquette d une r gle 16 ASF SDF 45 copie ramasse miettes avec 160 correction des sp cifications 27 couche sup rieure syntaxique 83 couleur d un terme 127 cout du filtrage AC 176 cr ation d outils 43 cut 116 dalac 1 d cision proc dure de 63 d codage des instructions 54 degr de compilation 166 d placement de la t te de lecture 73 destructive update 124 d tection d erreur 136 d terminisme analyse du 131 classifi
322. ne strat gie il est fr quent d effectuer des milliers voire des millions d it rations On imagine alors facilement que l absence d une telle optimisation pouvait poser des probl mes de gestion m moire lorsqu il fallait m moriser plusieurs milliers d environnements simultan ment 138 Chapitre 9 Analyse du d terminisme Algorithme 9 1 repeat S lastTerm sujet si setChoicePoint 0 alors boucler lastT erm valeur retourn e par l application de S fin boucle finsi Construction du terme r duit Au paragraphe 8 5 nous avons pr sent une optimisation permet tant de r duire le nombre d allocations m moire en r utilisant des morceaux du membre gauche pour constuire le terme r duit Cette optimisation ne peut malheureusement pas s appliquer lorsque des points de choix sont pos s parce que les termes deviennent partag s L analyse du d terminisme permet d une part de r duire le nombre de points de choix pos s et d autre part de d terminer des s quences de calcul pendant lesquelles aucun point de choix n est pos Ces deux informations permettent ainsi de g n rer du code plus efficace pour construire les termes r duits associ s des r gles ou des strat gies d terministes 9 5 R sultats exp rimentaux Dans ce paragraphe nous proposons d observer l impact de l analyse du d terminisme d un point de vue exp rimental Nous avons pour cela s lectionn des programmes de di
323. nnements suivants ASF CafeOBJ Maude et OBJ 3 OBJ 3 Ce syst me Goguen et al 1987 est particulier dans la mesure o il a t con u en 1986 au SRI On ne peut plus dire qu il soit maintenu mais il a t le pr curseur en termes d id es et de conception de la plupart des autres syst mes existant ce jour L histoire de la saga OBJ Goguen 1988a a commenc en 1976 lorsque Joseph Goguen a d fini une version originelle Goguen 1977 qui tait un langage pour des alg bres d erreurs La premi re implanta tion OBJ 0 tait mono sort e Goguen 1978 Goguen et Tardo 1977 et date de 1979 En 1983 la version OBJ 1 a t tendue la r criture modulo l associativit et la commutativit Goguen Meseguer et Plaisted 1982 En 1985 une nouvelle version fond e sur les alg bres avec sortes ordonn es Futatsugi Goguen Jouannaud et Meseguer 1985 Futatsugi Goguen Meseguer et Okada 1987 Futatsugi Goguen Jouannaud et Meseguer 1984 a t d velopp e pour mener a OBJ 2 La derni re version OBJ 3 ressemble syntaxiquement OBJ 2 mais est bas e sur une approche plus simple de la r criture avec sortes ordonn es Dans OBJ 3 les signatures utilis es sont avec sortes ordonn es et les syst mes d quations utilis s pour r duire un terme sont appliqu s modulo les axiomes d associativit et de commuta tivit Le syst me permet aussi de d finir des modules param tr s Futatsugi et al 1987 Jouan nau
324. noire qui prend en entr e une requ te et retourne des r sultats conformes ce qui a t sp cifi Ce nouveau composant peut alors tre int gr dans un projet plus vaste Nous envisageons d ailleurs d crire certains composants de l environnement ELAN en ELAN lui m me et d utiliser le compilateur pour en faire des outils efficaces et ind pendants Pour tre utilisables les outils g n r s par le compilateur doivent tre capables de commu niquer avec le monde ext rieur Deux solutions ont t retenues tant donn que les programmes r alis s dans l environnement ELAN ont pour vocation de manipuler des termes il nous a sembl naturel d utiliser le format REF comme format d change entre l ext rieur et les programmes g n r s par le compilateur ELAN De ce fait toute sp cification ELAN une fois compil e lit les requ tes dans le format REF et retourne les r sultats dans ce m me format Il devient ainsi facile de r aliser et faire communiquer diff rents composants sp cifi s en ELAN 44 Chapitre 3 Plateforme de prototypage Le format REF a l avantage d tre un standard interne l environnement mais il a l incon v nient d tre difficilement lisible par un tre humain Cela a pour cons quence de rendre difficile l criture des requ tes et la lecture des r sultats d un programme compil Nous avons donc fait en sorte que tout programme compil puisse continuer commun
325. ns 102 7 4 New choice point management 103 7 5 Imperative programming with backtracking 109 7 6 Concluding Remarks AT Les caract ristiques d ELAN sont telles que des aspects non d terministes apparaissent toutes les tapes composant l application d une r gle s lection d une r gle au cours du filtrage syntaxique r solution des graphes bipartis et instanciation des variables au cours du filtrage AC valuation des conditions de filtrage et application des strat gies au cours du calcul des valua tions locales Il devient alors essentiel de d finir un m canisme uniforme de gestion du non d terminisme qui puisse tre utilis de mani re coh rente par toutes ces tapes Pour des raisons d efficacit nous avons volontairement choisi d utiliser le langage C comme langage cible du compilateur ELAN Ce choix rend relativement difficile la gestion du non d terminisme simplement parce qu aucun m canisme ad quat n est pr vu dans ce langage Il existe cependant diff rentes fa ons de g rer le non d terminisme et plus particuli rement la pose de points de choix en C mais les approches connues d naturent souvent l utilisation conven tionnelle du langage C en interdisant l utilisation d arguments lors des appels de fonctions ce qui oblige le programmeur g rer explicitement une pile d arguments et de variable
326. ns le cas de A que pour chaque sous arbre s w un effet boule de neige se produit dupliquant un tr s grand nombre de fois le suffixe p 2 s w En s appuyant sur la figure 5 6 nous effectuons le m me raisonnement que pr c demment en supposant qu il existe un terme clos t qui soit reconnu par l automate A mais pas par l automate m moire B L chec ne peut pas se produire dans les branches B et yi ni dans la partie gris e sinon t ne pourrait tre reconnu par A c est donc qu il se produit dans la partie correspondant au terme s ti t4 pour un s 7 w Comme il existe une ar te w partant du n ud d o part Parte s cette situation ne peut pas se produire avec un automate de filtrage m moire Nous obtenons une nouvelle contradiction qui prouve qu il ne peut pas exister de terme t reconnu par A qui ne soit pas reconnu par D Cette tude par cas montre qu tant donn un ensemble L les automates canoniques et faiblement canoniques m moire associ s reconnaissent le m me langage 5 6 Automate de filtrage avec jumpNode D un point de vue th orique l automate faiblement canonique m moire est satisfaisant son nombre d tats est suffisamment petit et il permet de reconna tre un langage sans inspecter plus d une fois le terme d entr e D un point de vue pratique les r sultats obtenus ne sont pas encore satisfaisants Dans un logiciel permettant d ex cuter un sys
327. ns permettant de g rer les retours arri re sont utilis es pour extraire d autres solutions Si finalement la r gle courante ne peut pas s appliquer une autre r gle de l ensemble engendr e par la premi re tape est s lectionn e Il faut retenir de cette partie que notre approche est particuli re dans la mesure o des ensembles de r gles sont traduits en des fonctions C chaque strat gie est galement repr sent e par une fonction C et les termes ne sont jamais totalement construits en m moire c est une combinaison de constructions et d appels de fonctions qui permet d obtenir les formes normales d sir es Chapitre 5 Compilation du filtrage syntaxique 5 1 Termes vus comme des cha nes de symboles 62 5 2 Automate de filtrage 63 5 3 Cl tures d un ensemble de motifs 66 5 4 Cl ture r duite d un ensemble de motifs 70 5 5 Automate de filtrage m moire Ta 5 6 Automate de filtrage avec jumpNode 75 5 7 Comparaison des diff rentes approches 78 Dans tout syst me dont le m canisme d valuation repose sur l application de r gles de trans formations l tape de s lection de la r gle appliquer est importante C est elle qui d termine en partie la suite du calcul et c est aussi elle qui est ex cut e le plus grand nombre de fois
328. ns un mod le relativement simple de programmation o toutes les fonctions se d composent en trois tapes 1 allocation des zones de m moire n cessaires au calcul 2 calcul du r sultat 3 restitution des zones de m moire qui ne sont plus utilis es Il arrive que tous les objets allou s au d but d une fonction ne soient plus n cessaires une fois le calcul effectu et dans ce cas ils peuvent tre rendus au syst me Mais d une mani re g n rale lorsque des zones de m moire allou es sont utilis es pour construire le r sultat de la fonction ou comme arguments d autres fonctions il devient difficile voire impossible de d terminer statiquement les zones de m moire qui ne sont plus utilis es Cela arrive en particulier lorsqu on manipule des structures de graphes des structures circulaires ou des structures de termes partag s par exemple Consid rons une fonction qui simule l application de la r gle f x y x au terme f ty t2 On imagine alors facilement que cette fonction utilise deux variables statiques x et y qui a Vex cution r f rencent des zones de m moire repr sentant les termes t et t2 Le probleme est de savoir si la zone de m moire contenant t peut tre restitu e une fois construit le terme r duit r f renc par x Il est ici impossible de conna tre la r ponse simplement parce que cette zone de m moire est peut tre r f renc e par des variables utilis es par d autres foncti
329. nsuite ex cut es voir paragraphe 8 4 et le terme r duit est construit voir paragraphe 8 5 Il faut juste savoir que toute condition non sa tisfaite provoque un chec qui peut rendre le contr le au dernier point de choix pos valuation locale pr c dente filtrage AC ou r gle suivante 118 Chapitre 8 Compilation des r gles et des strat gies une fois construit le terme r duit un saut permet de passer directement l tape 3 Celle ci est compil e en un morceau de programme se trouvant la suite des n mor ceaux correspondant aux 11 Ta 3 cette tape permet de retourner un r sultat le terme r duit C est ce moment l qu il faut se soucier de la strat gie d application des r1 ran si r est une r gle non nomm e un seul r sultat doit tre calcul Il suffit donc de supprimer tous les points de choix pos s pendant l ex cution de la fonction en utilisant la primitive cutClose si r est une r gle nomm e apparaissant sous un dc one un seul r sultat doit tre retourn Comme pr c demment un cutClose est engendr sir est une r gle nomm e apparaissant sous un dc les points de choix pos s pendant l ex cution de la fonction ne sont pas supprim s pour permettre d extraire d autres solutions les checs ult rieurs permettront d explorer d autres fa ons d appliquer la r gle en r activant des points de choix pos s pendant l tape de filtrag
330. ntimement persuad s que ce format d change nous offrirait une souplesse et des possibilit s suppl mentaires Le parseur d ELAN a dans un premier temps t tendu afin de permettre l exportation au format REF de tout programme correctement analys L interpr teur a lui aussi t modifi afin de pouvoir lire et interpr ter un programme repr sent dans le format REF Par ce biais le compilateur pouvait devenir un composant compl tement ind pendant il suffisait qu il soit capable de lire et compiler des programmes cod s dans le format REF La figure 3 1 illustre l organisation du syst me actuel 3 1 Format d change 41 Programme Parseur Programme 7 A Compilateur ELAN ou REF Interpr teur REF Ex cutable Fic 3 1 tant donn e une sp cification ELAN le parseur est capable de la lire et de construire une image m moire interpr table Cette image peut aussi tre export e au format REF pour tre par la suite transform e par le compilateur en un ex cutable Le parseur ELAN est par ailleurs capable de lire une sp cification directement crite dans le format REF Dans ce dernier cas la vitesse de chargement du programme est nettement plus lev e dans la mesure o l analyse syntaxique du format REF est rendue volontairement simple D une mani re g n rale un programme cod dans le format REF peut tre consid r comme une repr sentation aplatie d un
331. ntuelle am lioration ou modification de l approche propos e La lecture attentive de ce chapitre n est pas essentielle la bonne compr hension des sch mas de compilation d ELAN en g n ral et peut tre vit e en premi re lecture Le lecteur doit cependant s assurer qu il comprend bien l effet de ces deux primitives sur l ex cution d un programme sans pour autant savoir comment elles s implantent Le contenu de ce chapitre est particulier dans la mesure ot il est technique et peut tre lu ind pendamment de tous les autres C est pourquoi il nous a sembl inutile de le traduire en fran ais Le texte ci dessous a t int gralement publi dans Moreau 1998a A choice point library for backtrack programming Abstract Implementing a compiler for a language with nondeterministic features is known to be a difficult task This paper presents two new functions setChoicePoint and fail that extend the C language to efficiently handle choice point management Originally these two functions were designed to compile the ELAN strategy language However they can be used by programmers for general programming in C We illustrate their use by presenting the classical 8 queens problem and giving some experimental results Algorithms and implementation techniques are sufficiently detailed to be easily modified and re implemented 7 1 Introduction In the area of formal specifications rewriting techniques have been developed for
332. ny to one 87 Fic 6 3 Ces deux graphes repr sentent les solutions S f a a f a x g a g a l et So f a a f a x f a g b f y g b l des deux graphes bipartis pr sent s sur la figure 6 2 Comme le montre la figure 6 3 les deux graphes bipartis de la figure 6 2 ont au moins une solution il reste alors v rifier pour un sous probl me de filtrage donn que le nombre de variables apparaissant directement sous le symbole AC du motif est bien inf rieur ou gal au nombre de sous termes non impliqu s dans une solution des graphes bipartis il y a au moins une variable apparaissant directement sous le symbole AC du motif si le nombre de sous termes non impliqu s dans une solution des graphes bipartis est non nul Une fois ces v rifications effectu es l tape de filtrage AC consid r e peut retourner l ensemble des motifs qui filtrent le sujet les motifs v rifiant les deux crit res pr c dents et dont le graphe biparti associ a au moins une solution Pour un ensemble de motifs P donn l approche d crite dans Bachmair et al 1993 est int ressante parce qu elle permet de d terminer les motifs de P qui filtrent modulo AC un terme clos s en un temps O n O mn 5 o n est la taille du sujet s et m la somme des tailles des motifs de P Utiliser une telle m thode pour r aliser un compilateur risquerait cependant de ne pas mener l implantation la plus efficace C e
333. obl mes d allocations de registres Aho et al 1989 Wilhelm et Maurer 1994 dans la compilation des langages imp ratifs par exemple Compilation des r gles et des strat gies Cette derni re phase intervient apr s la construction des r gles en m moire l aplatissement des termes contenant des symboles AC l analyse du d terminisme la construction des automates et des structures de filtrage AC et apr s la d tection des sous termes partag s et l allocation des noms de variables Il ne reste alors qu g n rer du code cible correct Les ensembles de r gles non nomm es et les strat gies sont successivement compil s en des fonctions C Chacune de ces fonctions suit le sch ma de compilation propos dans le chapitre 8 elle comporte une phase de filtrage une phase de s lection de r gles ou de strat gies une phase de calcul des valuations locales et une phase de construction du terme r duit Chaque tape de compilation est ind pendante les fonctions g n r es peuvent s crire dans des fichiers diff rents on peut ainsi noter que la compilation des ensembles de r gles et des strat gies peut se faire en parall le lorsqu on dispose d une machine multi processeurs par exemple 152 Chapitre 10 Architecture logicielle Chapitre 11 Support d ex cution 11 1 Structures de donn es 153 11 2 Op rations internes 155 11 3 Sortes et op rations
334. ode one S semi si S est une r gle de r criture le filtrage peut chouer Sinon on a d mode one S d mode all S And semi d mode S si S est une r gle de r criture le filtrage peut chouer Autrement d mode all S d mode S det si d mode S est det ou semi _ d emodeepest 8 multi si d mode S est multi ou nondet L op rateur repeat ne peut pas chouer simplement parce que z ro it ration est toujours possible Remarquons alors que si S n choue jamais l application de la strat gie repeat S ne termine pas et ne retourne aucun r sultat det si d mode S est det ou multi semi si d mode S est semi ou nondet d mode iterate S multi L op rateur iterate ne peut pas non plus chouer En g n ral il retourne plusieurs r sultats parce que toutes les tapes de l it ration sont consi d r es comme des r sultats De m me que repeat si S n choue jamais l application de iterate S ne termine pas mais cela peut tre utile dans certains cas pour repr senter des g n rateurs ou des structures de donn es infinies un r sultat est retourn chaque it ration 9 3 Inf rence de la classe de d terminisme 135 d mode S1 S2 And d mode S1 d mode S2 d mode select one Sj S And d mode d mode S d mode select all S1 S Or d mode S d mode S Inf rence du d mode d une r gle Pour calculer le
335. off 1995 par exemple L tude du langage de strat gie et de la r criture modulo AC nous a dans un premier temps amen a d velopper des algorithmes g n raux de compilation qui traitent de mani re uniforme le non d terminisme inh rent aux strat gies et au filtrage AC voir chapitre 8 S inspirant de Henderson Somogyi et Conway 1996 nous proposons dans ce chapitre et dans Kirchner et Moreau 1998 un algorithme permettant de d terminer si une strat gie ou un ensemble de r gles a un comportement non d terministe i e si on peut obtenir plusieurs r sultats 131 132 Chapitre 9 Analyse du d terminisme 9 1 Strat gies primitives Le comportement non d terministe d ELAN est essentiellement d aux constructeurs de stra t gies dc one dc et dk qui permettent de sp cifier de quelle mani re un ensemble de r gles ou de strat gies doit tre appliqu Plus g n ralement deux notions se cachent derri re ces op rateurs la s lection d une ou plusieurs r gles ou strat gies appliquer pour une r gle ou une strat gie donn e la s lection d un ou plusieurs r sultats li s son application Afin de proposer un algorithme d analyse du d terminisme qui ne soit pas restreint au cadre d ELAN nous proposons d introduire quatre op rateurs l mentaires Contr le de la s lection tant donn s un terme clos t et un ensemble de strat gies S Ehan n eke l op rateur select on
336. ogramming Conference Boston Massachusetts pp 200 207 Sekar R C Ramesh R et Ramakrishnan I V 1992 Adaptive pattern maching in W Kuich ed Proceedings of ICALP 92 Vol 623 of Lecture Notes in Computer Science Springer Verlag pp 247 260 Sherman D J 1994 Run time and Compile time Improvements to Equational Programs PhD thesis University of Chicago USA Stallman R 1995 Using and porting the GNU CC compiler 243 Stavridou V 1988 Specifying in OBJ verifying in REVE and some ideas about time Technical Report CSD TR 605 Department of Computer Science RHBNC University of London To appear in Experiments with the OBJ Executable Specification Language D Coleman R M Gallimore J A Goguen eds Strandh R I 1988 Compiling Equational Programs into Efficient Machine Code PhD thesis The Johns Hopkins University Baltimore MD Strandh R I 1989 Classes of equational programs that compile into efficient machine code in N Dershowitz ed Proceedings of the Third International Conference on Rewriting Techniques and Applications Chapel Hill NC pp 449 461 Vol 355 of Lecture Notes in Computer Science Springer Berlin Turing A 1936 On computable numbers with an application to the entscheidungsproblem Proceedings of the London Mathematical Society Vol 42 pp 230 265 van den Brand M G J de Jong H A et Olivier P 1998 Efficient annotated terms Technical rep
337. oies diff rentes Le projet Maude de Jos Meseguer s est orient vers la d finition d un formalisme plus riche que celui d OBJ 3 en int grant la notion de r flexivit le paradigme de programmation objet et les notions de r criture modulo les th ories associatives et leurs extensions aux m langes avec d autres axiomes comme l idempotence f x x x et l l ment neutre f x e x Le premier interpr teur Maude d velopp par Steven Eker fut pr sent en 1996 et diffus en 1998 Le projet ELAN d marr par Claude et H l ne Kirchner s est quant lui orient vers l aspect op rationnel de la r criture en introduisant pour la premi re fois la notion de strat gie d finie par l utilisateur De telles strat gies permettent par exemple d explorer un espace de recherche en contr lant finement l ordre d application des r gles de r criture Au cours de sa th se 1994 Marian Vittek proposa et implanta le premier environnement de programmation pour ELAN Un troisi me projet ASF SDF gt fut quant lui d marr dans les ann es 1980 par Jan Heering et Paul Klint L objectif tait de d finir un environnement de programmation g n rique permettant d diter d ex cuter et de d boguer des programmes crits dans un langage sp cifi par une grammaire Suite un s jour en France et apr s avoir tudi le syst me Mentor de VINRIA Paul Klint utilisa l Equation Interpreter EQI de
338. on devrait nous amener d finir des langages plus expressifs plus puissants et plus efficaces Architecture Les environnements de sp cification sont souvent compos s de modules qui communiquent en utilisant un format d change interne ou ad hoc Nous avons pr sent dans le chapitre 10 un d but 15 Moins de six mois de calcul par exemple 187 de r flexion sur la d finition d un format g n rique et d un environnement de coordination fond s sur la notion de termes annot s Deursen et al 1996 van den Brand de Jong et Olivier 1998 non seulement pour repr senter les grammaires les termes les r gles les strat gies les programmes les constructions du preprocesseur etc mais aussi pour mettre en relation les composants de l environnement de sp cification tant donn e Vemergence r cente de langages similaires ELAN tels que ASF SDF Ca feOBJ Maude ou encore CASL d velopp dans le cadre Working Group ESPRIT CoFI Com mon Framework Initiative for Algebraic Specification and Development nous pensons que la d finition d un format d change universel permettrait de mettre en relation les diff rents outils d velopp s par la communaut r criture Ce travail est rapprocher des tudes effec tu es par la communaut calcul formel pour d finir le format OpenMath Dalmas et al 1997 essentiellement utilis pour repr senter les probl mes r soudre et leurs solutions Dans le c
339. onnement L attentif Quel genre d outil Moi Ces outils ce sont des programmes et dans notre sous groupe de recherche on essaie de fabriquer un nouveau langage pour crire plus facilement ces outils petite pause Moi Pour r sumer il y a des d monstrateurs automatiques qui sont utilis s pour prouver que d autres programmes sont corrects Et nous on travaille sur un langage qui nous permet de prouver plus facilement que les d monstrateurs eux m mes sont corrects Le logicien C est vrai que si le d monstrateur est faux il risque de prouver n importe quoi et on ne serait pas plus avanc Moi Je travaille ainsi sur l laboration d un nouveau langage mais aussi sur les outils qui permettent d ex cuter les programmes crits dans ce langage Tu vois on monte encore d un niveau petite pause Moi Un des objectifs de ma th se c est de faire en sorte que les programmes crits dans ce nouveau langage aillent le plus vite possible Le curieux Et c est quoi le langage que vous inventez Moi Il s appelle ELAN mais il n est pas encore connu et ne le sera s rement jamais Enfin peut tre que dans quelques ann es 7 ans ou 14 ans de nouveaux langages s inspireront de pres ou de loin de ce qu on a fait Introduction En janvier 1937 paraissait l article d Alan Turing sur les nombres calculables ce qui date approximativement l apparition de la notion syst me formel Il semble cependant
340. ons Pour r soudre ce type de probl me il existe un m canisme appel compteur de r f rences qui consiste m moriser dans chaque zone de m moire allou e le nombre de variables qui la r f rencent Ce nombre est incr ment ou d cr ment lorsqu une variable utilise ou n utilise plus la zone consid r e et quand ce nombre a pour valeur 0 c est que la zone n est plus utilis e et peut tre rendue au syst me C est un m canisme qui est habituellement simple implanter mais relativement peu efficace dans la mesure o un grand nombre de mises jour de compteurs sont effectu es De plus l utilisation de r f rences ne permet g n ralement pas de lib rer les zones de m moire occup es par des structures circulaires Ce type de gestion m moire a t exp riment dans le cadre de la premi re implantation du compilateur r alis e par Marian Vittek 1996 Mais l tude exp rimentale a montr que les r sultats pouvaient tre am lior s en termes de s curit et d efficacit Il faut savoir que l utilisation de compteurs de r f rences ne tol re aucune erreur si un compteur est incr ment ou d cr ment par erreur la gestion m moire est compl tement fauss e puisqu une zone peut ne jamais tre rendue au syst me ou plus grave encore une zone utilis e peut tre rendue et r allou e pour un autre calcul ce qui provoque g n ralement une erreur l ex cution Dans certaines situations ce type
341. op mult3 Nat gt Nat op mult4 Nat gt Nat op mult5 Nat gt Nat op mult6 Nat gt Nat op mult7 Nat gt Nat op mult8 Nat gt Nat op mult9 Nat gt Nat op fib Nat gt Nat op fact Nat gt Nat op prec Nat gt Nat vars x y Z Nat eq O d d eq x d x eq 0 x 0 y O x y 0 4 eq 0 x 1 y 1 x y 0 4 eq 0 x 2 y 2 x y 0 d eq 0 x 3 y 3 x y 0 d eq 0 x 4 y 4 x y 0 d eq 0 x 5 y 5 x y 0 d eq 0 x 6 y 6 x y 0 d eq 0 x 7 y 7 x y 0 d eq 0 x 8 y 8 x y 0 d eq 0 x 9 y 9 x y 0 4 224 Annexe Programmes utilis s pour effectuer les exp rimentations eq 1 x 1 y 2 x y 0 d eq 1 x 2 y 3 x y 0 4 eq 1 x 3 y 4 x y 0 d eq 1 x 4 y 5 x y 0 d eq 1 x 5 y 6 x y 0 d eq 1 x 6 y 74CGGyy 00d eq 1 x 7 y 8 x y 0 d eq 1 x 8 y 9 x y 0 d eq 1 x 9 y OG GG y 10 eq 2 x 2 y 4 x y 0 d eq 2 x 3 y 5 x y 0 4 eq 2 x 4 y 6 x y 0 d eq 2 x 5 y 7 x y 0 d eq 2 x 6 y 8 x y 0 d eq 2 x 7 y 9 x y 0 d eq 2 x 8 y O x y 1 d eq 2 x 9 y 1 x y 1 d eq 3
342. ore plus importante puisqu elle est sup rieure 1000 12 2 2 ANS Compl tion Cet exemple plus complexe exploite une grande partie des constructions du langage ELAN et en particulier les r gles conditionnelles et les strat gies v 3 i 5 106 T 5x105 Compilateur _ 8 5 _ 700 8 3 2x10 s 5 O ee Re L500 amp 5 5x104 8 E T 2x104 400 E 5000 4 300 E 3 Interpr teur SE o 2000 POR ee nna ES PP 200 E 0 2 4 6 amp i compl tion de pn Fic 12 6 Evaluation des performances de ANS Compl tion La figure 12 6 montre que dans le cadre d une application r elle telle que la proc dure de compl tion de Knuth Bendix 1970 le compilateur permet d appliquer pr s d un million de r gles par seconde ce qui le rend ici encore entre 400 et 500 fois plus rapide que l interpr teur La compl tion du syst me pg mettant environ 24 secondes je vous laisse calculer le temps qu il fallait attendre pour r soudre ce m me probl me lorsque seul l interpr teur tait disponible 12 2 3 Bool3 Set et Nat10 L exemple Bool3 est int ressant parce qu il montre figure 12 7 dans un cadre extr me de normalisation AC que les performances du compilateur se d gradent nettement moins que celles de l interpr teur lorsque la taille des termes manipul s pour r soudre un probl me augmente Le programme Set correspond un syst me de r criture permettant de manipul
343. ort University of Amsterdam In preparation van den Brand M G J Heering J et Klint P 1997 Renovation of the Old ASF Meta Environment Current State of Affairs Proceedings of International Workshop on Theory and Practice of Algebraic Specifications ASF SDF 97 Amsterdam The Nederlands Work shops in Computing Springer Verlag van den Brand M G J Klint P et Olivier P 1999 Compilation and Memory Manage ment for ASF SDF Compiler Construction Lecture Notes in Computer Science Springer Verlag van den Brand M G J Olivier P Moonen L et Kuipers T 1997 Implementation of a Prototype for the New ASF Meta environment Proceedings of International Workshop on Theory and Practice of Algebraic Specifications ASF SDF 97 Amsterdam The Neder lands Workshops in Computing Springer Verlag Vigneron L 1998 Automated Deduction Techniques for Studying Rough Algebras Funda menta Informaticae 33 1 85 103 Visser E 1997 Syntax Definition for Language Prototyping PhD thesis UVA Amsterdam NL Vittek M 1994 ELAN Un cadre logique pour le prototypage de langages de programmation avec contraintes Th se de Doctorat d Universit Universit Henri Poincar Nancy 1 Vittek M 1996 A compiler for nondeterministic term rewriting systems in H Ganzinger ed Proceedings of RTA 96 Vol 1103 of Lecture Notes in Computer Science Springer Verlag New Brunswick New Jersey pp 154 168
344. ort Bool end operators global vrai Bool faux Bool et Bool Bool Bool ou 0 Bool Bool Bool non Bool Bool end Le caract re est un symbole sp cial qui indique la place d un argument dans la d finition d un op rateur Les sortes des arguments sont donn es par une liste de sortes entre parenth ses Un des probl mes pos s par cette d finition est que certains termes peuvent tre ambigus Le terme vrai et vrai et vrai par exemple est un terme de sorte Bool qui peut se repr senter de deux mani res diff rentes suivant que l op rateur et est associatif gauche ou droite Les attributs assocLeft et assocRight peuvent tre utilis s pour d clarer un op rateur associatif gauche ou associatif droit et lever ainsi ce type d ambiguit L utilisation de l attribut pri permet de donner des priorit s aux op rateurs et ainsi exprimer le fait qu un op rateur soit prioritaire par rapport un autre Il existe aussi un m canisme d alias permettant de d finir un m me op rateur de plusieurs mani res diff rentes Afin d liminer les ambiguit s la grammaire pr c dente peut se r crire de la mani re sui vante module booleen sort Bool end operators global vrai Bool faux Bool et Bool Bool Bool assocLeft pri 100 ou Bool Bool Bool assocLeft pri 100 et 0 Bool Bool Bool assocLeft pri 100 alias et ou Bool Bool Bool assocLeft pri 100 alia
345. ou l nigme de intelligence Edition Payot ISBN 2 228 88081 T Hoffmann C M et O Donnell M J 1982a Pattern matching in trees Journal of the ACM 29 1 68 95 Hoffmann C M et O Donnell M J 1982b Programming with equations ACM Transactions on Programming Languages and Systems 4 1 83 112 Hofstadter D 1985 G del Escher Bach les Brins d une Guirlande Eternelle Inter dition ISBN 2 7296 0040 X Homann K et Calmet J 1995 Combining Theorem Proving and Symbolic Mathematical Computing in J C J Calmet ed Proceedings of AISMC 2 Vol 814 of Lecture Notes in Computer Science Springer Verlag pp 18 29 Hopcroft J E et Karp R M 1973 An n5 2 algorithm for maximum matchings in bipartite graphs SIAM Journal of Computing 2 4 225 231 Hullot J M 1979 Associative commutative pattern matching Proceedings 9th International Joint Conference on Artificial Intelligence Hullot J M 1980 Compilation de Formes Canoniques dans les Th ories quationelles Th se de Doctorat de Troisi me Cycle Universit de Paris Sud Orsay France Ishisone M et Sawada T 1998 Brute brute force rewriting engine Proceedings of the CafeOBJ Symposium 98 Numazu shi Shizuoka Prefecture Japan CafeOBJ Project pp 1 16 Jones R et Lins R 1996 Garbage Collection Algorithms for Automatic Dynamic Memory Management Wiley ISBN 0 471 94148 4 Jouannaud J P Kirchner C Kirchner H et
346. ous terme par un autre et dans ce cas le terme r sultat n est plus forcement irr ductible d o la n cessit de re normaliser le terme term_cmp et merge_sorted_list qui permettent de comparer deux termes et de fusionner des listes tri es de termes pour calculer une forme canonique par exemple Nous ne pouvons pas num rer ici l ensemble de fonctions qui composent la biblioth que dans la mesure o celle ci comporte environ 10 000 lignes de C mais citons encore deux autres fonctions maximal_extract_fail et next_pe_extract_fail qui sont int ressantes dans la mesure o leur ex cution modifie le contr le de flot du programme g n r Ces deux fonctions permettent d instancier une variable se trouvant directement sous un symbole AC en num rant les partitions de l ensemble des termes non captur s par la r solution des graphes bipartis La particularit de ces fonctions est qu elles utilisent setChoicePoint pour poser des points de choix et g rer l num ration des solutions lorsqu une instance est trouv e un point de choix est pos 156 Chapitre 11 Support d ex cution et la solution est retourn e Cette solution est ensuite utilis e par le programme g n r pour construire un terme et son ex cution se poursuit Lorsqu un chec r veille le point de choix pos par l une des deux fonctions leur ex cution peut se continuer pour calculer et retourner une autre solution Lorsque toutes les sol
347. outils d analyse permettrait de d finir des d monstrateurs o la strat gie de recherche se modifierait en fonction des calculs effectu s Strat gies intelligentes Nous pensons qu il serait int ressant de poursuivre les travaux pr sent s dans les chapitres 7 et 8 portant sur l implantation des langages de strat gies Dans le cadre de sa th se Carlos Castro 1998 a mod lis des techniques de r solution de contraintes en utilisant des r gles et des strat gies Cette exp rience a montr tout l int r t du langage de strat gies d ELAN mais nous a aussi donn des id es d am lioration En ELAN les op rateurs de strat gies permettent d explorer un espace de recherche en utilisant un m canisme de retour arri re backtracking ce qui am ne explorer l arbre de recherche en utilisant un parcours leftmost innermost Dans un probl me de satisfaction de contraintes des valeurs sont associ es des variables X Y et Z par exemple et il arrive qu un probl me n ait pas de solution tant qu une certaine valeur est affect e une variable X 2 par exemple Lorsqu on rencontre une telle situation il faut remettre en cause l affectation concern e pour d bloquer le cal cul Dans le cadre d une strat gie leftmost innermost implant e par un m canisme de retour arri re classique il faut au pr alable continuer en vain l exploration des sous arbres de recherche num ration des valeurs de Y et Z
348. ouvelles sans pour autant tre condamn rester isol sur une machine d un centre de recherche En pr sence de probl mes difficiles tels que le filtrage AC et la gestion du non d terminisme nous avons toujours tent de d velopper des solutions th oriques innovantes et d en d river des algorithmes qui int grent d s leur conception les contraintes permettant d aboutir une implantation efficace Apports Il y a des travaux qui intriguent passionnent et finissent par s inscrire dans les m moires tout jamais et d autres qui participent cependant la construction d un difice de grande ampleur en proposant des solutions innovantes ou en caract risant des voies infructueuses Bien qu appartenant la deuxi me cat gorie les apports de cette th se sont multiples Au sein de l quipe Proth o je pense avoir particip au travail de fond souvent long m ticuleux et pass sous silence qu est la mise en place d une plateforme de d veloppement savoir une r flexion sur l organisation des sources du logiciel d velopp l utilisation d un gestionnaire de versions tel que CVS la r alisation de nombreux exemples et surtout la mise en place d une proc dure de test permettant de v rifier que les d veloppements d ELAN sont bien conservatifs la version n 1 du logiciel doit tre compatible avec tous les programmes qui fonctionnaient avec la version n Au cours de nombreuses discussions avec Do
349. p rations pr d finies 11 4 Gestion de la m moire 11 5 Synthese ss L same ba PAG kee Bol EE ER A ER Re don nat 12 Exp riences pratiques 12 1 Estimation du degr de compilation 12 2 valuation des performances 12 3 Co t du filtrage AC 12 4 Comparaison avec d autres implantations Conclusion Annexes A Programmes utilis s pour effectuer les exp rimentations Al Brute s anaip e a e a aa a R R a aa Ra G a aa a ER a a eR AS Caml aasgier eG we A EC A a E Bee a a ee 116 118 124 127 131 132 132 134 136 138 141 143 143 147 150 153 153 155 156 158 163 165 166 172 176 178 183 193 Sommaire x A CIME Geens ti a a et r a a a ae dsl r ana ee 205 AA Blan soe goe ack a ge aio a Begs ee Beha AR a NE Ca a Ge ke ae Ae ca 211 AS Maude Obj 22224 046 5 0b kets age eed e i a a 221 AB Otter 26 52 Luis RIAD BS SS Sle GS eS Ae Se aE a es de 20008 229 A 7 Reduksion ana a a ie a ah a aa a e eee eee ee oL ia 231 AR RE OR ete ee ah tee aa i a E ge ade MN amp ae 233 Bibliographie 235 Index 245 R sum R sum Les techniques de r criture ont t d velopp es depuis les ann es 1970 et appliqu es en particulier au prototypage des sp cifications formelles alg briques et la d monstration de propri t s li es l
350. pilateur est crit en ASF SDF lui m me et compil en utilisant une technique de bootstrap ELAN D crit dans les chapitres 1 2 et 3 le syst me ELAN Vittek 1994 Borovansky Kirchner Kirchner Moreau et Vittek 1996 est lui aussi fond sur la logique de r criture multi sort e R sumons ses principales originalit s par rapport aux syst mes d crits plus haut Il permet de sp cifier d une fa on naturelle des proc dures non d terministes telles que par exemple l unification modulo diff rentes th ories la SLD r solution ou la surr duction Une autre particularit du syst me ELAN est d int grer un pr processeur permettant de g n rer automatiquement des morceaux de sp cifications des blocs de textes g n riques peuvent tre d finis Au cours de l analyse syntaxique des valeurs de variables sont calcul es par l inter pr teur ELAN et sont utilis es pour instancier ces blocs de textes La construction FOR EACH v SUCH THAT v e s remplace la variable v dans la cha ne s par tous les r sultats obtenus par calcul de formes normales du terme e C tait aussi le premier introduire la notion de strat gie d finie par l utilisateur Conclusion De cette comparaison des diff rents syst mes existants fond s sur la logique de r criture il faut retenir que les formalismes propos s sont relativement proches m me si certains choix th oriques ou pratiques donnent chacun une originalit particul
351. pilation permettent d am liorer consid rablement l efficacit des programmes un facteur 100 s pare encore ELAN des meilleurs interpr teurs La courbe ELAN natc10 corres pond aussi aux calculs de fib n mais effectu s en utilisant ELAN et une variante du syst me Nat10 pr sent pr c demment Nat10 utilise des op rateurs AC 4c et 4c et des r gles de la forme g x 4c h y r x y Dans cette situation l op rateur 4c n a alors besoin d tre que commutatif et il nous suffit de dupliquer ces r gles pour en d river un syst me n utilisant que des op rateurs syntaxiques g x ac hly gt est remplac e par g 10 Le compilateur ASF SDF n tant pas encore distribu 11 Cet exemple n a pas t exp riment avec Brute parce que celui ci n implante pas encore de sortes builtins 12 4 Comparaison avec d autres implantations 179 10 10 8 n o g E TD 1 l 1 z S 9 3 fla g 01 an 2 0 1 a 3 Ocaml opt z Ocaml opt 2 O x an 0 01 0 01 Pi 22 24 26 28 3 4 5 6 7 8 Fib n ack 3 n FIG 12 10 Efficacit compar e sur Fib_builtin et Ackermann Les r sultats sont int ressants parce qu ils montrent que la sp cification de addition et de la multiplication sur les entiers en n utilisant que des constructeurs et des r gles de r criture pures peut mener des calculs plus efficaces que ceux r alis s en utilis
352. pilation relativement complexe a t implant avec succ s et donne des r sultats exp rimentaux int ressants lorsqu on consid re deux sp cifications quivalentes l une crite en ASF SDF et l autre crite en ELAN les deux ex cutables obtenus apr s voir compil leur repr sentation REF ont approximativement la m me efficacit Cela signifie qu aucune surcharge n a t introduite par les tapes successives de transformation d ASF vers asFix puis d asFix vers ASF et enfin de ASF vers REF 46 Chapitre 3 Plateforme de prototypage 3 4 Vers une nouvelle architecture Comme nous l avons vu pr c demment b tir l organisation d un environnement de sp cifica tion autour d un format interm diaire unique a de nombreux avantages Borovansky Jamoussi Moreau et Ringeissen 1998 Au cours de diff rentes exp riences d velopp es dans l quipe le for mat REF s est montr bien adapt au d veloppement d outils de transformation de programmes tels qu un valuateur partiel permettant d optimiser l application des strat gies ou qu un d bogueur ELAN crit en ELAN Le format REF a cependant le d faut d tre trop proche de la repr sentation interne des donn es du parseur et de l interpr teur Cette proximit nous a permis de d velopper et d exp rimenter rapidement les possibilit s offertes par cette nouvelle architec ture mais avec le temps certaines limitations se font sentir
353. placements syntaxiques et doit tre vu comme un g n rateur de programmes Il offre une construction FOR EACH v SUCH THAT v e s 30 Chapitre 2 Outils pour sp cifier et programmer qui remplace dans la suite de lex mes s toutes les occurrences de la variable v par une forme normale du terme e On peut ainsi crire le morceau de sp cification suivant operators global FOR EACH L list identifier AND F identifier SUCH THAT L a b nil AND F listExtract extract L F term end Ici listExtract est une variante pour la sorte list identifier de la strat gie que nous avons d finie au paragraphe 1 4 La construction FOR EACH pr c dente va donc extraire les l ments a et b de la liste a b nil pour cr er les r gles de grammaire hors contexte operators global a term b term end Le pr processeur peut donc tre utilis pour g n rer automatiquement des l ments de sp cification qui sont utiles pour analyser la suite du programme Il faut aussi noter que le pr processeur a besoin de toute la puissance de l interpr teur pour effectuer ses remplacements il doit pouvoir ex cuter la strat gie ListExtract pour tre capable d analyser la suite du mo dule Ceci renforce encore l interaction existante entre les diff rentes phases de la partie frontale d ELAN le pr processeur a besoin de l interpr teur l interpr teur a besoin de l analyseur syn taxique qui a lui m me besoin du pr
354. placer de deux mani res diff rentes elle peut lire un symbole et se d placer d un cran vers la droite elle peut aussi lire un terme complet bien form et se d placer vers la droite d autant de symboles que n cessaire Un automate de filtrage A est d fini par un tuple A EF e0 F A D est un alphabet E est un ensemble fini d tats eg E est l tat initial FC E est l ensemble des tats finaux A 61 dn est l ensemble des r gles de transition d tats de A o les 0 E x EU Ty gt E sont de la forme e s s5 e avec ee e E et sE X oF WN e Les r gles de transition d tats d crivent la structure de automate en num rant tous les changements d tats possibles Elles sont utilis es pour autoriser ou non le passage d un tat vers un autre Les r gles d crivant le comportement de l automate le d placement de la t te de lecture sont appel es r gles de transition de configurations gt p Elles coordonnent les change ments d tats de automate et la position de la t te de lecture sur la bande d entr e Les r gles de transition de configurations sont d finies par e sa gt r esa ssi s EE w et e s s e1 EA e af r e 2 8 ssi ae Ty et ew s e2 E A On dit que automate de filtrage A reconna t un terme t Ts s il existe une suite de transitions qui m ne l automate dans un tat final et que le terme d
355. plement remplacer le sujet par le membre droit de la r gle sur lequel est appliqu le filtre Lorsqu aucune r gle n est applicable sur un terme on dit qu il n est plus r ductible et qu il est en forme normale Le syst me pr c dent sur les expressions bool ennes est int ressant parce qu on peut montrer qu il a les propri t s suivantes peu importe le terme de d part on sait qu une de ses formes normales sera obtenue apr s un nombre fini d tapes de r critures On dit alors que le syst me termine pour un terme donn l ordre d application des r gles de r criture et la position o s ap plique une r gle n ont aucune influence sur le r sultat on obtient toujours la m me forme normale Le syst me est alors dit confluent D un point de vue th orique il est int ressant de consid rer des syst mes terminants et confluents parce qu on sait alors que les sp cifications propos es permettent de calculer des r sultats en un temps fini et ceci quels que soient les termes d entr e On sait de plus que les r sultats retourn s seront toujours les m mes et ceci quelle que soit la fa on d implanter les sp cifications Malheureusement la pratique montre qu il est assez difficile d crire des sp cifications base de r gles de r criture qui soient confluentes et terminantes D une mani re g n rale deux grandes voies ont t tudi es pour aider les informaticiens c
356. plementation of an Optimising Compiler for OBJ3 PhD thesis Oxford University Computing Laboratory GB Henderson F Conway T et Somogyi Z 1996 The execution algorithm of Mercury an efficient purely declarative logic programming language Journal of Logic Programming 29 17 54 Henderson F Somogyi Z et Conway T 1996 Determinism analysis in the Mercury com piler Proceedings of the Nineteenth Australian Computer Science Conference Melbourne Australia pp 337 346 Hermann M et Kolaitis P G 1995 Computational complexity of simultaneous elementary AC matching problems in J Wiedermann et P Hajek eds Proceedings 20th International Symposium on Mathematical Foundations of Computer Science Prague Czech Republic Vol 969 of Lecture Notes in Computer Science Springer Verlag pp 359 370 Hintermeier C Kirchner C et Kirchner H 1994 Dynamically Typed Computations for Order Sorted Equational Presentations Extended Abstract in S Abiteboul et E Shamir eds Proceedings 21st International Colloquium on Automata Languages and Program ming Vol 820 of Lecture Notes in Computer Science Springer Verlag pp 450 461 240 Bibliographie Hintermeier C Kirchner C et Kirchner H 1995 Sort Inheritance for Order Sorted Equa tional Presentations Recent Trends in Data Types Specification Vol 906 of Lecture Notes in Computer Science Springer Verlag pp 319 335 Hodges A 1988 Alan Turing
357. pos Moi C est principalement pour cela qu avant de l envoyer dans l espace on a envie de certi fier son lectronique et ses programmes On a par exemple envie de prouver que les programmes sont corrects Le lecteur du Monde On dit qu Ariane 5 a explos parce qu il y avait une erreur dans un programme Moi Il y a du vrai et c est reli de tr s loin ce que je fais Pour revenir aux satellites on a envie qu ils r pondent nos questions de fa on coh rente et dans un temps relativement court moins de 10 minutes par exemple C est ce qu on appelle une propri t d un pro gramme Imagine que tu appuies sur la p dale de frein de ta voiture et qu elle ne freine effectivement que 30 secondes plus tard Le commercial Ce serait emb tant Moi Ne va pas imaginer que je travaille sur l envoi de satellites ou la conception d un syst me de freinage Je travaille en amont pour essayer de prouver que les programmes des satellites ou des voitures par exemple sont corrects Mais ce n est pas moi qui fais les preuves Dans l quipe il y a des chercheurs qui font des programmes pour faire les preuves automatiquement Le r confortant Ce ne doit pas tre facile tout a Moi Pas tellement mais sinon a va Tu me suis encore Maintenant on monte d un niveau en r alit je fais des outils pour les chercheurs qui fabriquent ces programmes apr s g n ralement un ou deux signes d t
358. pparaissant sous un symbole AC est lui m me lin aire Si x et y sont des variables le terme f4c y g a est semi lin raire mais pas les termes f1c y g x et fac a g 6 2 Approche one to one Pour pouvoir calculer la forme normale d un terme par rapport un syst me de r criture comportant des symboles AC l approche la plus simple consiste se donner un algorithme prenant en argument une r gle de r criture p r un terme clos s et retournant l ensemble des substitutions o telles que po et s soient gaux modulo AC Un tel algorithme est connu sous le nom de proc dure de filtrage AC one to one La r solution des probl mes de filtrage AC not s p Sio s est connue pour tre NP complet Benanav et al 1987 Hermann et Kolaitis 1995 Des m thodes de r solution n anmoins efficaces en pratique ont t propos es dans Hullot 1979 Hullot 1980 Eker 1995 par exemple Dans ce paragraphe nous pr sentons les grandes lignes d un tel algorithme afin d introduire les concepts n cessaires la bonne compr hension des m thodes propos es dans la suite du chapitre tant donn s un motif p et un sujet s en forme canonique la r solution de p Sio s nous am ne consid rer les notions de couche sup rieure syntaxique et de sous probl me de fil trage AC La couche sup rieure syntaxique d un terme t en forme canonique se note f et corres pond l limination de tous les sous termes de t apparaissant directe
359. pr senter les structures dominantes du langage source par des structures de donn es du langage cible qui sont ensuite valu es par un ensemble de fonctions bien d finies Cette approche permet 4 3 Compilation de la r criture 59 bien de cr er un ex cutable ind pendant partir d un programme initial mais elle est bas e sur une certaine tricherie Repr senter la sp cification initiale par des structures de donn es revient d finir sans l expliciter clairement un langage interm diaire destin tre interpr t par une machine abstraite Et d finir un ensemble de fonctions capables de donner un sens ces structures de donn es n est rien d autre que la r alisation d un interpr teur ou d une machine abstraite Ce sch ma appel dans certains cas compilation s apparente plus une approche hybride tendant faire cohabiter dans un m me ex cutable une machine abstraite et le code qu elle doit interpr ter La deuxi me approche consiste repr senter les caract ristiques du langage source par des structures de contr le du langage cible ce qui est fondamentalement diff rent Comme nous le verrons par la suite il est dans certains cas tr s difficile voir impossible d tablir cette correspondance Il faut alors avoir recours la technique hybride pr sent e plus haut mais tout l art de la compilation consiste minimiser le plus possible ces carts Consid rons par exemple
360. programme ELAN o toutes les constructions syntaxiques appa raissant dans les diff rents modules sont fusionn es La repr sentation d une sp cification dans ce format REF se compose des listes suivantes la liste des identificateurs apparaissant dans le programme la liste des noms de sortes utilis es dans le programme la liste des noms de modules composant la sp cification une liste de r gles de grammaires pour chaque sorte s d finissant la syntaxe des op rateurs de la sp cification la liste des r gles de r criture d finies dans la sp cification la liste des strat gies d finies dans le programme Dans une premi re tape un num ro unique est associ chaque identificateur apparaissant dans le programme Ce num ro est ensuite m moris dans la premi re liste du format REF pour tre utilis lors de chaque r f rence un identificateur du programme Consid rons par exemple la signature ELAN suivante module liste sort Element Liste end operators global a Element b Element nil Liste Element Liste Liste extract Liste Element end Son codage dans le format REF s exprime de la mani re suivante GrammarForSort Element 0 42 Chapitre 3 Plateforme de prototypage 3 a 0 8 0 0 0 Ident a nil 3 b 0 8 0 0 0 Ident b nil 3 extract 0 8 0 0 0 Ident extract Char Type Liste Char nil
361. propos e Deuxi me partie Compilation de la r criture Chapitre 4 M ta conception La compilation est un art tudi dans de nombreux domaines et c est pourquoi elle est souvent per ue diff remment d un domaine l autre Pour lever toute am biguit nous pr sentons ce que nous entendons par interpr teur compilateur et machine abstraite et les grandes lignes du compilateur que nous voulons d finir sont pr sent es Chapitre 5 Compilation du filtrage syntaxique L application de r gles de r criture est compos e d une tape de s lection appel e filtrage Les performances d une proc dure de normalisation par r criture d pendent grandement du co t de l algorithme de filtrage et c est pourquoi nous tudions particuli rement comment compiler un tel algorithme T 8 Pr sentation Chapitre 6 Compilation du filtrage associatif commutatif Les algorithmes de filtrage associatif commutatif ont t largement tudi s dans le pass aussi bien pour r aliser des outils de d duc tion automatique que des outils de calcul intensif Ici nous proposons de sp cialiser la conception d un tel algorithme dans le cadre d une proc dure de normalisation par r criture Ce contexte particulier nous am ne d finir une nouvelle structure de donn es compacte qui permet de r duire le co t des algorithmes impliqu es dans la proc dure de filtrage associatif commutatif Chapitre 7 Gestion
362. pt d examiner ce document et de participer mon jury Par ses questions et ses remarques il m a t moign un grand int r t pour les travaux effectu s C est un euph misme de dire qu Yves Caseau est tr s occup Il a pourtant imm diatement accept de me consacrer du temps en tudiant mes travaux et ce document Yves Caseau m a fait l honneur de pr sider mon jury de th se et par ses vraies questions il m a communiqu son attrait pour les probl mes complexes et son int r t pour le travail r alis L id e de travailler avec lui me motive particuli rement Je tiens remercier tout sp cialement H l ne Kirchner ma directrice de th se pour m avoir aid et guid tout au long de la pr paration de cette th se Du premier jour au dernier jour H l ne a toujours t pr sente pour discuter tudier une proposition remettre en cause un choix proposer une alternative et s int resser mes id es parfois peu claires Par sa comp tence sa confiance et sa sympathie elle m a toujours aid transformer en r ussite les situations d chec C est bien elle que je dois ma passion pour la recherche et je tiens la remercier tr s sinc rement Gr ce son livre Douglas Hofstadter a r veill en moi un int r t pour la r daction l criture et la pr sentation d id es complexes Je lui en suis tr s reconnaissant Merci tous mes amis du laboratoire de Nancy de Paris de Strasbourg de
363. qu elle permet de conna tre la sorte d un terme l ex cution ce qui facilite grandement l criture des fonctions de la biblioth que de support d ex cution tout en offrant des performances raisonnables Notons quand m me que ce type de repr sentation limite les conditions d utilisation des entiers Appelons builtinInt la sorte des entiers ainsi cod s Il n est plus possible de d finir des constructeurs de sorte builtinInt sinon le probl me se poserait nouveau le code g n r par le compilateur d pend de la sorte des sous termes et pour acc der un sous terme de sorte builtinInt le compilateur g n re une fonction qui acc de directement l entier et non un pointeur Si des termes de sorte builtinInt pouvaient avoir une forme normale qui ne soit pas un entier au sens N la fonction d acc s g n r e ne serait plus correcte puisqu il faudrait dans ce cas acc der aux pointeurs Pour lever cette limite il existe une autre solution qui consiste emballer syst ma tiquement les entiers en utilisant un constructeur interne au compilateur voir figure 11 3 L inconv nient d une telle approche tant de p naliser consid rablement les op rations sur les entiers en introduisant des tapes de d ballage et d emballage L approche choisie dans ELAN est int ressante parce qu elle offre deux possibilit s lorsque la vitesse de calcul est importante c est l utilisateur de s as
364. qu on attend de l implantation du langage L Veut on un outil rapide r aliser adaptable des extensions ventuelles du langage L r utilisable pour implanter un autre langage L fonctionnant sur diff rents types de processeurs permettant d ex cuter rapidement un programme pp autorisant des modifications dynamiques d un programme pr offrant un cycle de d veloppement relativement court permettant d int grer ou de faire coop rer un programme py avec un autre programme pr Le r ve de tout informaticien est de r aliser un produit r pondant par l affirmative toutes 56 Chapitre 4 M ta conception ces questions mais l tat de l art actuel ne permet de r pondre que partiellement l ensemble de ces questions Le choix doit donc se faire en fonction de priorit s pr d finies On a sou vent consid r qu un interpr teur permettait d implanter plus facilement un langage de haut niveau et qu un compilateur rendait plus efficace l ex cution des programmes Cette vision simpliste a du vrai mais il ne faut pas oublier le d veloppement de techniques hybrides qui per mettent de m langer des phases de compilation avec des phases d interpr tation On parle alors de semi compilation ou de machines abstraites Par opposition aux processeurs qui sont des outils tangibles permettant d ex cuter le langage machine les outils logiciels qui permettent d ex cuter un langage L sont
365. que des r gles d terministes det cela signifie que toutes les valuations locales sont det On sait alors qu un chec ne pourra provenir que d une condition insatisfaite et non d une strat gie puisqu une strat gie d terministe ne peut pas chouer Le sch ma de compilation d un ensemble de r gles peut alors tre modifi pour ne plus engendrer de fail et g n rer un saut vers l valuation de la r gle suivante en cas d chec d une condition Ainsi il n est plus n cessaire de placer un point de choix avant chaque application de r gle lorsqu une strat gie dc one dc ou dk ri rn est semi d terministe elle ne peut pas tre det parce que le filtrage peut toujours chouer on sait qu un seul r sultat doit tre calcul Il devient donc possible de modifier l tape 3 de la page 118 pour que tous les points de choix pos s pendant l valuation de la strat gie soient supprim s La g n ration des cutClose ne se fait donc plus en fonction d un crit re syntaxique pr sence ou non d un dc one mais en fonction du d mode semi d terministe ou non Cette remarque s applique aussi l tape 1 de l algorithme de compilation des strat gies dc one dc ou dk S1 pr sent e page 127 L int gration de ces optimisations dans le compilateur a un impact important sur la vitesse d ex cution des programmes g n r s Elles permettent en effet de r duire consid rablemen
366. qui prend en entr e un programme py crit dans le langage L et la suite des donn es d entr e e du programme pr l interpr teur calcule la 53 54 Chapitre 4 M ta conception suite des r sultats r L interpr tation d un programme peut ventuellement mener une erreur c est pourquoi la signature fonctionnelle d un interpr teur est la suivante Ip Lx D D U erreur o D est le domaine des donn es d entr e et de sortie du programme pr D un point de vue formel l interpr tation d un programme pr est sp cifi e par l quation suivante IL pL e r Ce qui caract rise un interpr teur c est qu il travaille simultan ment sur le programme pr et ses donn es e D une mani re g n rale un interpr teur n essaie pas d analyser le contenu d un programme avant de l ex cuter les instructions du programme pz sont d cod es et interpr t es les unes la suite des autres voir figure 4 1 Repr sentation abstraite Programme source Parseur Interpr teur FIG 4 1 Dans le cadre d un interpr teur le programme est lu par le parseur puis les instruc tions sont d cod es et interpr t es les unes la suite des autres par l interpr teur Il existe cependant des techniques de semi compilation qui permettent de r aliser des interpr teurs qui effectuent une analyse pr alable du programme interpr ter Les informations statiques peuvent ainsi tr
367. qui vont influencer les solutions techniques mettre en uvre Dans l industrie automobile par exemple lorsqu un nouveau mod le de voiture est con u il est n cessaire de faire des m ta choix avant de concevoir des solutions mettre en place Ainsi avant d tudier les probl mes de transmission par exemple il est pr f rable de conna tre le nombre de roues de la voiture et de savoir s il s agit d une traction avant ou d un mod le propulsion La remise en cause de ces choix n est pas toujours ais e partir d une voiture trois roues et lui ajouter une roue n est peut tre pas le meilleur moyen pour obtenir une bonne voiture quatre roues La recherche ou l industrie informatique travaille avec des mat riaux un peu moins tan gibles mais cela ne nous dispense pas des tapes de conception bien au contraire L objectif de ce chapitre est de dessiner les grandes lignes du syst me que nous voulons construire un compilateur pour ELAN capable de produire des outils suffisamment efficaces 4 1 Interpr teur Compilateur et Machine abstraite Pour qu un programme crit dans un certain langage L puisse tre ex cut sur un ordinateur on doit rendre disponible ce langage sur cet ordinateur D une mani re g n rale il existe deux fa ons d implanter un langage sur un calculateur r aliser un interpr teur ou un compilateur pour ce langage Un interpr teur J pour un langage L est un outil
368. quivalents 74 Chapitre 5 Compilation du filtrage syntaxique 4 B Fic 5 5 Les deux automates A et B illustrent le r sultat de l insertion du suffire p ast tus D o s est un symbole tel qu une ar te tiquet e par s doit tre cr e Dans le cas de A la pr sence du suffire awy branche droite provoque une insertion en cascade des suffices w 5 Lors de la construction de la cl ture r duite B cet effet boule de neige est vit et seule la branche y est dupliqu e Si l on compare les deux algorithmes on s aper oit qu ils ne diff rent qu deux endroits dans la partie si s w alors sinon lorsque l ar te tiquet e par s est cr e le deuxi me algorithme ajoute moins de suffixes dans la partie sinon finsi lorsque le suffixe commence par un w le deuxi me algo rithme ajoute ici aussi moins de suffixes Soit p le suffixe ins rer appelons s le premier symbole qui est un w ou qui entra ne la cr ation d une ar te Le suffixe p est alors de la forme p ast1 t4 1 o a et p sont des cha nes de X La partie correspondant a est ins r e de la m me mani re par les deux algorithmes les ar tes de l automate existant sont suivies en fonction des symboles rencontr s Lorsque le symbole s arrive en t te du suffixe ins rer deux cas peuvent se produire 1 sfw Une ar te tiquet e par s est cr e c est donc qu
369. r 1 3 Strat gies d application 15 rectes avec des langages de haut niveau mais cela arrive moins souvent qu en utilisant l assembleur par exemple Afin d illustrer les difficult s et les solutions propos es pour crire des sp cifications termi nantes essayons par exemple de d finir la fonction factorielle en ELAN rules for int n int global fact 0 gt 1 end fact 1 gt 1 end fact n gt n fact n 1 end end Pour d finir la fonction factorielle nous avons import le module int qui d finit la sorte du m me nom permettant de repr senter des entiers Des op rations l mentaires telles que Vaddition la soustraction et la multiplication sont pr d finies Le syst me pr c dent permet de calculer des valeurs de la fonction factorielle mais le r sultat n est pas enti rement satisfaisant Calculons la valeur de la fonction factorielle en 1 il suffit de calculer la forme normale du terme fact 1 Le probl me ici est que le calcul de la forme normale peut ne pas terminer fact 1 peut se simplifier en 1 en appliquant la deuxi me r gle mais si on applique la troisi me r gle cela peut nous amener calculer fact 0 puis fact 1 fact 2 etc Pour aider le programmeur crire des syst mes de r criture terminants et confluents des conditions peuvent tre ajout es pour contr ler l application des r gles On parle alors de r gles de r criture conditionnelles Il
370. r CSTR 39 Bell Laboratories Murray Hill N J Lugiez D et Moysset J L 1994 Tree automata help one to solve equational formulae in AC theories Journal of Symbolic Computation 18 4 297 318 MacMahon P A 1916 Combinatory Analysis Vol 2 Cambridge University Press chapter II A Syzygetic Theory pp 111 114 Reprinted by Chelsea New York 1960 March C 1996 Normalized rewriting an alternative to rewriting modulo a set of equations Journal of Symbolic Computation 21 3 253 288 McAloon K et Tretkoff C 1995 2LP Linear programming and logic programming in P Hentenryck et V Saraswat eds Principles and Practice of Constraint Programming MIT Press pp 101 116 McCune W W 1994 Otter 3 0 Reference manual and guide Technical Report 6 Argonne National Laboratory Meseguer J 1992 Conditional rewriting logic as a unified model of concurrency Theoretical Computer Science 96 1 73 155 Meseguer J 1998 Membership algebra as a semantic framework for equational specification in F Parisi Presicce ed Proceedings of WADT 97 Lecture Notes in Computer Science Springer Verlag Metzemakers T et Sherman D J 1995 Mingus un compilateur exp rimental pour la logique quationnelle TR 1052 95 LaBRI Universit Bordeaux 1 Bordeaux Moreau P E 1994 Compl tion avec contraintes en ELAN Rapport de DEA Universit Henri Poincar Nancy 1 Moreau P E 1998a A choice point
371. r e comme une strat gie l mentaire et le r sultat de l application d une r gle nomm e lab sur un terme t retourne l ensemble des termes atteignables en appliquant la r gle lab Si aucune r gle tiquet e par lab ne peut s appliquer on dit alors que la strat gie choue Pour comprendre comment l application d une seule r gle la racine d un terme peut retourner plusieurs r sultats il faut savoir qu un m canisme d Evaluation locale existe Sa description et son utilisation seront d taill es un peu plus loin dans ce chapitre Dans un premier temps nous pouvons consid rer que c est une construction qui permet de d clencher l application d une strat gie Si celle ci retourne plusieurs r sultats la r gle nomm e consid r e retourne elle aussi plusieurs r sultats 1 4 R gles et strat gies 17 Nous venons de voir que toute r gle nomm e est une strat gie c est pourquoi dans la suite de la pr sentation du langage de strat gies nous ne consid rons que des op rateurs qui ont des strat gies en argument pour construire de nouvelles strat gies l op rateur de concat nation not permet de composer l application de deux strat gies S et S2 La strat gie S1 S2 choue si S choue sinon elle retourne tous les r sultats de la strat gie S2 appliqu e aux r sultats de S1 La strat gie choue galement si S2 choue pour chaque r sultat de Sj l op rateur dk est une abr viation de don
372. r un interpr teur et un compilateur Les recherches portant sur l laboration d un bon environnement adapt aux sp cifications base de r gles de r criture sont toujours d actua lit L environnement ASF SDF Klint 1993 est un bon exemple de conception dans lequel les diff rents composants sont connect s par un outil appel ToolBus Cet outil g re toutes les com munications et propose un langage d change commun Bergstra et Klint 1995 L aspect r flexif de la r criture fait que pour tre int ressant un langage de programmation fond sur la notion de r criture doit tre suffisamment puissant pour permettre d implanter des outils manipulant des programmes crits dans le m me langage Dans ce cadre l existence d un format d change est clairement reli e au probl me de r flexivit dans la mesure o il doit permettre entre autres de repr senter les programmes par des termes Une grande partie des probl mes li s la r flexi vit ont t r solus et int gr s dans le langage Maude Clavel 1998 Clavel et al 1998 D une mani re g n rale l tude de la coop ration de syst mes h t rog nes est un projet ambitieux qui concerne de nombreux champs de l informatique tels que le G nie Logiciel l Intelligence Arti ficielle la D duction Automatique et la Programmation par Contraintes Dalmas Ga tano et Sausse 1996 Dalmas Ga tano et Watt 1997 Homann et Calmet 1995 La n cessit d avoir
373. r 2 fail fO 1 int result locvar 0 result setChoicePoint printf result locvar counter locvar counter printf locvar counter When setting a choice point only local variables are saved If a failure occurs only local variables are restored to the value they had when setting the choice point When executing the 102 Chapitre 7 Gestion du non d terminisme example program a first choice point is created and the computation goes on The function f is called and locvar is initialised to 0 Then a second choice point is created result and locvar are saved printed incremented and printed again Before executing the first fail counter 1 and locvar 1 Then a backtrack is performed the function fail restores the last saved environment is re activated locvar 0 and transfers the control to setChoicePoint function which returns the integer 1 This explains why the third line is result 1 locvar 0 counter 1 The function fail is called again a backtrack to the first set choice point is performed the conditional test is evaluated to true and the program stops 7 3 Known choice point implementations The implementation of choice point management most often involves two mechanisms first an environment stack called the trail to save local variable values and a continuation address second a control flow handler to perform the jump to the saved continuation address when backtracking A number o
374. r est bien adapt au cadre de la r criture D un autre cot l utilisation de points de choix et l application d une strat gie leftmost innermost font qu un grand nombre de termes les contextes ne sont pas modifi s par Vapplication de r gles sur des sous termes et dans ce cas l utilisation d un mark and sweep semble mieux adapt e Ce type de situation n est pas propre ELAN et s est pr sent e dans le cadre de implantation de langages fonctionnels tels que Caml Cousineau et al 1985 Weis et Leroy 1993 Cousineau et Mauny 1995 Leroy et Mauny 1993 Leroy 1995 par exemple S inspirant des travaux d crits dans Doligez 1995 Doligez et Leroy 1993 nous pensons qu une approche hybride utilisant deux ramasses miettes diff rents pourrait tre avantageuse L id e consiste d finir un ramasse miettes g n rations qui utilise un espace m moire de taille fixe o l allocation se fait lin airement en modifiant la valeur d un pointeur l image du copy collector Mais la diff rence du gestionnaire copie classique lorsque cet espace est plein les termes vivants ne sont plus copi s dans un autre demi espace mais copi s dans une zone de m moire g r e par un ramasse miettes mark and sweep tel que Boehm et Weiser 1988 par exemple L int r t d un tel ramasse miettes est que le co t des allocations les plus fr quentes devient constant et presque nul De plus en supposant que le taux de morta
375. r tous les sous termes u dont la racine est un symbole AC Dans ce cas extr me on a m me A l Co Consid rons la nouvelle r gle l r where u 21 where uk k qui est bien quivalente l r Deux r gles sont quivalentes lorsque les membres droits sont identiques et que l ensemble des substitutions permettant d appliquer les r gles sont identiques On dit qu une substitution permet d appliquer une r gle si le membre gauche de la r gle instanci par la substitution filtre bien le sujet et si l ensemble des valuations locales conditions et conditions de filtrage sont satisfaites lorsqu elles sont instanci es par la substitution Consid rons deux op rateurs AC Uac et eqac un constructeur e et un terme r x1 2 t3 utilisant les trois variables z x2 x3 La r gle z Uac eqac e X2 e x3 r x1 02 23 ne peut pas tre directement trait e par notre algorithme parce que le sous terme egac e x2 e x3 n appartient pas a la classe Co Cependant en introduisant une nouvelle variable y et une condition de filtrage where eqgac e x2 e x3 y la r gle suivante devient quivalente la pr c dente et son membre gauche appartient C1 x Uac y gt r x1 2 2 73 where eqac e x2 e x3 y La transformation appliqu e correspond au premier sch ma propos mais on aurait pu appliquer le deuxi me sch ma et obtenir un membre gauche appartenant la classe C2 x Uac eqac y2
376. raf 1991 Sekar Ramesh et Ramakrishnan 1992 Graf 1996 Nedjah 1997 Nedjah Walter et Eldrige 1997 elles permettent de d terminer efficacement une r gle du syst me permettant de r duire le sujet Certaines de ces m thodes Graf 1991 Nedjah et al 1997 par exemple sont dites d terministes parce qu elles permettent de d terminer l ensemble des r gles pouvant s appliquer sur le sujet pour un co t comparable aux algorithmes ne s lectionnant qu une seule r gle Dans le cadre de la th orie syntaxique les motifs ne sont compos s que de symboles de fonc tions de constantes et de variables Le sujet est un terme clos il ne comporte que des constantes 61 62 Chapitre 5 Compilation du filtrage syntaxique ou symboles constructeurs Le probl me consiste organiser intelligemment l ensemble de mo tifs pour tre capable pour un sujet donn de d terminer rapidement quels sont les motifs qui filtrent le sujet Comme mentionn pr c demment de nombreuses techniques d indexage existent alors pourquoi vouloir en inventer une nouvelle L algorithme d crit dans Graf 1991 permet d obtenir une implantation efficace en utilisant des automates d terministes qui ne remettent jamais en cause les transitions effectu es La construction de ces automates est complexe et ils sont g n ralement compos s d un tr s grand nombre d tats qui peut limiter leur utilisation Un autre algorithme permettant de r duire ce
377. ram to C without any intermediate abstract machine Indeed the previous Alma 0 program fragment can be easily translated in C extended with our two functions setChoicePoint and fail The SOME statement is replaced by the call of the fromiton function and the boolean expressions are translated into conditions and failures void main queens int n backTrackInit int col row i queens 12 for col 1 col lt n col fail row fromlton n for i 1 i lt col i if array i row int fromiton int n int i for i 1 i lt n i if setChoicePoint 0 set a choice point and return i return i return i array i row col i array i rowti col choose another row fail array col row print solution array Remark that the library is initialised by a call to the backTrackInit function which creates an initial choice point in order to prevent using fail before setChoicePoint In order to show the potential of the approach the N queens solving procedure has been implemented in several languages standard C C extended with setChoicePoint and fail Mercury Wamcc Alma 0 and 2LP In each case even if it is not the best one the same searching strategy 7 6 Concluding Remarks 111 140 318 28 0 gt w A time n seconds C C Asm C C Mercury Wamcc Alma 0 2LP Figure 7 4 Se
378. rat gie S voir algorithme 8 4 Algorithme 8 4 iterate S boucler si setChoicePoint 0 alors break finsi code correspondant fin boucle Cette strategie est particuli re dans la mesure o elle n choue jamais z ro application de S est possible La strat gie repeat S est semblable iterate S mais seuls les r sultats correspondant aux derni res applications de S sont retourn s Le sch ma de compilation est un peu plus complexe que celui d iterate S voir algorithme 8 5 En effet tout comme dans l algorithme 8 4 un point de choix doit tre pos lors de chaque it ration mais la diff rence vient du fait que tous les r sultats correspondant l application d une it ration de S ne peuvent pas tre extraits au fur et mesure l exploration doit se faire en profondeur d abord pour retourner les feuilles et non en largeur d abord comme c tait le cas d iterate S L id e consiste utiliser un marqueur succes qui est positionn T lorsque S peut s appliquer Lorsque S choue l avant derni re application de S redevient active pour pouvoir extraire les ventuelles autres solutions Mais une fois que toutes les solutions sont extraites le marqueur est inspect pour savoir si l on doit continuer ou revenir l ant p nulti me application de S lorsque le marqueur est positionn a L il ne faut videmment pas continuer sous peine de r essayer la strat gie S qui vient d
379. rchitecture logicielle Les id es pr sent es dans cette th se sont mises en pratique travers la r alisation d un compilateur Les probl mes li s la compilation modulaire de syst mes de r criture sont pr sent s Les solutions retenues l organisation g n rale du compilateur ainsi que son fonctionnement sont aussi pr sent s Chapitre 11 Support d ex cution La r alisation d un compilateur consiste essentiellement tudier des sch mas de g n ration de programmes Mais l tude de l environnement d ex cution des programmes g n r s est aussi importante Ce chapitre aborde les probl mes li s la repr sentation des donn es la d finition d op rateurs pr d finis par le langage de sp cification ainsi que diff rentes techniques de gestion m moire Chapitre 12 Exp riences pratiques Ce chapitre montre l int r t des m thodes imagin es en valuant la qualit des programmes engendr s par le compilateur Nous pr sentons ainsi des sp cifications ELAN crites dans diff rents styles de programmation et nous tudions particuli re ment apr s compilation la consommation m moire le degr de compilation les performances et l apport des techniques de compilation imagin es Premi re partie Environnement de sp cification Chapitre 1 Langage de sp cification ELAN 1 1 Grammaire et signature 11 1 2 Termes et r gles de r criture conditionnelles
380. re le terme courant lorsque c est possible La fonction C se compose en fait de deux parties la premi re implante une proc dure de filtrage qui tant donn un terme clos s lectionne l ensemble des r gles qui peuvent s appliquer La deuxi me partie a pour but de s lectionner une r gle parmi cet ensemble 60 Chapitre 4 M ta conception Compilateur Fichiers eln Fichiers c Fic 4 4 Cette figure illustre l approche consistant regrouper les r gles de r criture com men ant par un m me symbole pour g n rer une fonction C par symbole de t te diff rent Il faut remarquer que les symboles fi et fo qui taient d finis dans des fichiers diff rents sont regroup s dans des fichiers C identiques et d effectuer son application le membre droit de la r gle est instanci pour construire le terme r duit Lorsqu aucune r gle ne peut s appliquer c est que le terme d entr e est irr ductible et il est retourn sans tre modifi Il faut noter que les termes retourn s par les fonctions C sont toujours en forme normale par construction L application des r gles de r criture conditionnelles se base sur la m me approche avant de construire le terme r duit chaque terme correspondant une condition est construit mis en forme normale puis compar la constante true En cas d galit l ex cution se poursuit par l instanciation du membre droit de la r gle En cas d in galit les fonctio
381. re one 17 dont know choose 17 l mentaire 16 fail 17 first 17 first one 17 identit 17 impact sur la com pilation d une 137 iterate 17 leftmost innermost 16 leftmost outermost 16 paral lel innermost 16 parallel outermost 16 primitive 132 repeat 17 s lection d une 17 StrategyTerm 148 structure compacte de graphe biparti 88 de donn e 153 de filtrage AC 84 substitution 14 calcul d une 94 construction d une 94 to application d une substitution 14 suffixe ajout d un 68 d un terme 66 sujet 14 radical 14 s ret des sp cifications 23 symbole associatif commutatif 21 cha ne de 62 constructeur 59 d injection 157 d fini 59 niveau d un symbole AC 88 Sym bol 149 syntaxe d une signature 11 syntaxique analyse 29 compilation du filtrage 61 couche sup rieure 83 th orie 61 syst me confluent 14 de r criture 13 ou vert 45 terminant 14 T F X ensemble de termes 13 taille de la biblioth que 155 du compilateur 150 technique d indexage 62 hybride 56 terme annot 46 aplati 31 82 avec multi plicit 83 bien form 62 clos 13 co lor 127 f 83 emball 157 en forme ca nonique 82 125 ensemble de 13 Flat term 149 irr ductible 14 position dans un 13 pr fixe d un 66 r duit 124 t t 13 repr sentation d un 153 requ te 30 semi lin aire 83 sommet d un 16 t
382. re utilis pour implanter une telle proc dure de d cision il suffit de d corer les tats finaux de l automate par un ensemble de motifs reconnus voir figure 5 2 L tat e4 se voit ainsi d cor par les motifs fga fw et l tat ez par l unique motif fw Pour reconnaitre fga il suffit de suivre les ar tes reliant deux tats en respectant les r gles de transition de configurations Partant de l tat eo le symbole f est lu et on se retrouve dans l tat e avec le suffire ga restant lire Le probleme se corse parce qu il y a un choix faire quelle ar te suivre Les r gles de changement de configurations disent que nous pouvons suivre les deux lire g puis a et se retrouver dans l tat e4 ou bien lire directement le terme bien form ga et s arr ter dans l tat e3 Il faudrait avoir deux t tes de lecture pour pouvoir explorer les deux possibilit s en parall le mais ne disposant pas de ce luxe l automate doit suivre une branche et consommer les deux symboles g a avant de les remettre sur la bande de lecture pour pouvoir 5 2 Automate de filtrage 65 explorer la branche restante L automate n tant pas deterministe il faut explorer tous les tats finaux atteignables pour tre s r de retourner le plus grand sous ensemble R R se compose des diff rentes d corations rencontr es au cours de l exploration C est ce manque de d terminisme mettant en uvre une strat gie avec des retou
383. remi re r gle s lectionn e peut s appliquer toutes les substitutions m moris es sont alors d truites Notre approche consiste construire la substitution seulement apr s avoir r solu le probl me de filtrage Pour chaque sous motif pjk les positions des variables sont connues et utilis es 6 8 Extension l ensemble des motifs 95 lors de la compilation Nous pouvons utiliser cette information pour construire une fonction d acc s access pj qui prend un terme clos en argument et retourne la liste des instances des variable de p notons que la taille de cette liste est fix e et d pend seulement du pj consi d r tant donn e une solution Si amp p rl du graphe BG l ensemble des instances I access_p si 3 B x Sj peut tre calcul Consid rons les r gles fac f a z f y 9 b ra et les fonctions access_f a x t tz et access_f y g b t ti Partant de la solution S2 f a a f a x f a g b f y g b l ensemble Jz a a est facilement calcul pour construire les instances de x et y o x gt a y gt a Une implantation de ces fonctions d acces est donn e par le programme 6 3 Compilation des fonctions d acc s void variable _extract_F struct term subject int id_pattern struct term substitution int indice switch id_pattern case 0 f a x substitution indice subject gt subterm 1 indice break case 1 g a break case
384. returned Depending on the architecture these two functions may be implemented in C setjmp and longjmp are used to save and restore registers and memcpy is used to copy memory blocks This approach was successful on a PC under Linux and a DEC Alpha Station but the result is not really safe as mentioned previously longjmp is used in a non standard way since it is not possible in C to get the base pointer and the stack pointer some heuristics are used and furthermore the behaviour is not stable when using advanced optimisation options such as gcc 06 This is why we recommend this approach only to get a first easy implementation but to get a safe implementation setJump and longJump have to be re implemented in assembly language There is nothing surprising because set jmp are longjmp are themselves implemented in assembly language Some processors such as Sparc are based on a window register architecture In this case it is not possible to save and restore the window position the corresponding assembly instruction must be executed in privileged mode not accessible by users This restriction makes impossible the implementation of setJump and longJump on such architecture however in Section 7 4 4 we present a general algorithm for setChoicePoint and fail that can be implemented on almost any architectures 7 4 2 A first implementation of setChoicePoint and fail setChoicePoint and fail are somehow restrictions of setJump and longJump be
385. rire des sp cifications confluentes et terminantes la premi re consiste cr er des outils permettant d aider le programmeur v rifier qu une sp cification donn e est confluente et terminante Knuth et Bendix 1970 Kirchner et Moreau 1995 La r alisation de tels outils reste cependant complexe dans la mesure o le probl me est ind cidable De plus les r sultats trouv s ce jour montrent qu il est difficile d appliquer ces outils aux sp cifications de grande taille d une mani re g n rale les propri t s de terminaison ou de confluence ne sont pas modulaires ce qui signifie qu tant donn s deux syst mes de r critures terminants et confluents leur union n a pas forc ment les m mes propri t s On imagine alors facilement les difficult s rencontr es pour montrer qu une sp cification compos e de plusieurs centaines de modules termine bien la deuxi me voie qui n est pas antagoniste avec la premi re consiste aborder le pro bl me par l autre bout puisqu il est difficile de v rifier qu une sp cification donn e est bien terminante et confluente l approche consiste tudier les langages de sp cifications eux m mes pour am liorer leur expressivit leur s ret et permettre plus facilement aux programmeurs d crire des sp cifications correctes confluentes et terminantes Le langage ELAN fait partie de ces langages Il est bien s r possible d crire des sp cifications inco
386. ristiques de l interpr teur est d valuer la sp cification au fur et mesure sans effectuer un travail de pr paration pr alable trop important En donnant un sens aux sp cifications l interpr teur fait du langage de sp cification une entit concr te et observable En particulier le non d terminisme inh rent au langage perd son c t magique il devient compl tement cern et mod lis Au paragraphe 1 3 nous parlions de double non d terminisme le choix de la r gle appliquer et la position dans le terme o 2 3 Interpr teur 31 appliquer la r gle Le choix d appliquer les r gles en utilisant une strat gie de leftmost innermost permet de r duire un le niveau de non d terminisme la strat gie fixe la position o les r gles s appliquent dans le terme Reste le choix de la r gle appliquer qui est en partie guid par la position puisqu il faut que le symbole de t te du membre gauche soit le m me que celui se trouvant la position choisie mais il peut exister plusieurs r gles satisfaisant ce crit re Dans ce cas l interpr teur s lectionne la premi re r gle dans sa liste de r gles commen ant par un symbole donn On parle alors de r criture ordonn e puisque les r gles commen ant par un m me symbole de t te sont toujours appliqu es dans le m me ordre Mais il faut noter que ce n est absolument pas une propri t du langage de sp cification rien n indique que les volutions
387. rmettent d utiliser des symboles AC sans craindre de voir les performances diminuer dramatiquement par rapport une sp cification quivalente ne poss dant pas de symbole AC Le principal int r t est d inciter les programmeurs utiliser des symboles AC dans leurs sp cifications afin d am liorer la qualit du code ainsi crit 1 6 Modularit La sp cification d un programme relativement complexe n est jamais une chose ais e Elle peut cependant tre facilit e si l expressivit du langage de sp cification utilis e est grande Plu sieurs caract ristiques du langage ELAN visent aider le programmeur crire le plus facilement possible des sp cifications correctes la flexibilit offerte par l utilisation de grammaires hors contextes pour d finir la syntaxe et la structure des donn es Elle permet en effet de r duire l cart entre les notations habi tuellement utilis es en math matiques et celles utilis es pour programmer un algorithme la simplicit d utilisation des r gles non nomm es permet d exprimer facilement des op rations de simplification d expressions ou des fonctions d acc s aux structures de donn es la puissance des strat gies permet de mieux coordonner les diff rentes phases de calcul d un algorithme tout en s parant de mani re claire la notion de r duction de la notion de contr le Si l expressivit d ELAN se limitait ces trois points le langage ne ser
388. rons l ensemble de r gles ELAN suivant rules for Element element Element liste Liste global extractrulei extract element liste gt element end extractrule2 extract element liste gt extract liste end end Le codage au format REF du syst me est le suivant RULE extractrule1 Element liste FSYM FSYM VAR 0 Element VAR 1 Liste nil nil extract VAR 0 Element nil Jextractrule2 Element liste FSYM FSYM VAR 0 Element VAR 1 Liste nil nil extract FSYM VAR 1 Element nil extract nil Les diff rents param tres qui composent une r gle au format REF sont respectivement de gauche droite le nom de la r gle la sorte des termes transform s par la r gle le module dans lequel la r gle est d finie le membre gauche le membre droit et finalement la liste des valuations 3 2 Cr ation d outils 43 locales r duite nil dans cet exemple On peut noter que les noms des variables impliqu es dans les r gles n apparaissent pas dans le format REF et sont d sign es par un num ro et leur sorte Dans la premi re r gle expression VAR O Element d signe ainsi la variable element d finie dans la sp cification Dans le format REF une strat gie est compos e de son nom de sa sorte et d une expression construite partir des constructeurs de strat gies l mentaires pr sent s dans le paragraphe 1 4 Consid rons la
389. rs arri res qui nous d plait particuli rement En effet le terme d entr e doit souvent tre inspect autant de fois que le nombre de termes composant L ce qui est une source d inefficacit Pour viter cette exploration laborieuse une autre solution consiste construire un automate ne pouvant atteindre qu une seule et unique configuration partir d une configuration de d part Ce type d automate n effectuant aucun retour arri re est dit d terministe L id e derri re ces automates est la suivante pour chaque tat e E et pour chaque symbole s il ne doit pas y avoir plus d une r gle de transition d tats e s 5 e A Mais ces contraintes ne suffisent pas construire l automate recherch En effet l automate de la figure 5 1 respectait d j ces contraintes sans pour autant s arr ter dans un unique tat Un tel automate est dit faiblement d terministe Le non d terminisme est ainsi r duit aux situations o l automate a le choix entre lire un symbole et suivre une ar te tiquet e par le m me symbole ou lire un terme bien form et suivre une ar te tiquet e par un u Afin d liminer compl tement ces situations de choix nous allons modifier l g rement les r gles du jeu en interdisant d utiliser une ar te tiquet e par un w s il y a une autre alternative possible Les r gles de transition de configurations canoniques se d finissent de la mani re suivant
390. rti de gauche ne correspond la variable z En effet on sait l avance que la variable z filtre tous les sous termes du sujet il est donc inutile d ins rer dans le graphe une multitude d ar tes qui ne peuvent qu alourdir le processus de r solution D une mani re g n rale le calcul des instances de ces variables est pris en compte par une phase ult rieure de l algorithme de filtrage d crite au paragraphe 6 7 Dans Bachmair et al 1993 une m thode originale fond e sur l utilisation d automates est propos e pour tester l existence d une solution d un graphe biparti donn l id e consiste pr construire des automates changeant d tat en fonction des configurations d ar tes et indiquant a chaque instant si le graphe biparti consid r a au moins une solution Le revers de la m thode est que le nombre d tats y est exponentiellement proportionnel au nombre de sommets corres pondant a des motifs pour V2 pe per y n k Cela limite son application des valeurs relativement petites de y lt 5 par exemple mais s av re quand m me suffisant en pra tique il est en effet assez rare de d finir des syst mes de r criture comportant des motifs dont le nombre de sous termes d un symbole AC soit grand Lorsque cela se produit une m thode plus g n rale telle que celles d crites dans Hopcroft et Karp 1973 Fukuda et Matsui 1989 peut alors tre utilis e 6 3 Approche ma
391. ruction incr mentale des automates Son principal int r t est d acc l rer la proc dure de filtrage et de r duire la taille des automates engendr s en partageant des sous ensembles d tats Les m thodes utilis es ainsi que les r sultats obtenus sont pr sent s dans Moreau et Kirchner 1998 Cet article qui reprend les id es du chapitre 6 ne se limite pas au cadre logique ELAN car ces techniques peuvent tre utilis es pour am liorer d autres syst mes de d duction utilisant des symboles Associatifs et Commutatifs Cet article a t remarqu et r compens en recevant le EAPLS 1 Best Paper Award en automne 1998 Compilation de strat gies non d terministes Le langage ELAN a pour particularit d int grer un m canisme de d duction par r criture et un langage de strat gies qui introduit du non d terminisme en permettant d explorer un espace de recherche C est pourquoi les techniques de compilation d velopp es ont un caract re hybride d une part elles sont rapprocher des m thodes de compilation des langages fonctionnels pour Vaspect filtrage et simplification de termes d autre part elles sont rapprocher des techniques de compilation des langages logiques pour l aspect non d terministe et gestion des retours arri res Afin de d finir des sch mas de compilation simples pour les diff rentes constructions du langage de strat gies nous avons poursuivi un travail d but par Marian Vittek
392. ry Menlo Park CA USA Futatsugi K Goguen J A Jouannaud J P et Meseguer J 1985 Principles of OBJ 2 in B Reid ed Proceedings 12th ACM Symposium on Principles of Programming Languages ACM pp 52 66 Futatsugi K Goguen J A Meseguer J et Okada K 1987 Parameterized programming in OBJ 2 in R Balzer ed Proceedings of Ninth International Conference on Software Engineering IEEE Computer Society Press Monterey CA USA pp 51 60 Futatsugi K et Nakagawa A 1996 An Overview of Cafe Project Proceedings of Fist CafeOBJ workshop Yokohama Japan Futatsugi K et Sawada T 1994 Cafe as an extensible specification environment Proceedings of the Kunming International CASE Symposium 239 Genet T 1998 Contraintes d ordre et automates d arbre pour les preuves de terminaison Th se de Doctorat d Universit Universit Henri Poincar Nancy 1 France Goguen J A 1977 Abstract errors for abstract data types in E Neuhold ed Formal Description of Programming Concepts Amsterdam The Nederlands Elsevier Science Pu blishers B V North Holland Goguen J A 1978 Some design principles and theory for OBJ 0 a language for expressing and executing algebraic specifications of programs in E Blum M Paul et S Takasu eds Proceedings of Mathematical Studies of Information Processing Vol 75 Lecture Notes in Computer Science Goguen J A 1988a A brief histo
393. ry of OBJ in D Coleman R Gallimore et J Goguen eds Experience with OBJ Addison Wesley Goguen J A 1988b OBJ as a theorem prover with application to hardware verification Technical Report SRI CSL 88 4R2 SRI Goguen J A Kirchner C Kirchner H M grelis A Meseguer J et Winkler T 1987 An introduction to OBJ 3 in J P Jouannaud et S Kaplan eds Proceedings 1st International Workshop on Conditional Term Rewriting Systems Orsay France Vol 308 of Lecture Notes in Computer Science Springer Verlag pp 258 263 Also as internal report CRIN 88 R 001 Goguen J A Meseguer J et Plaisted D 1982 Programming with parameterized abstract objects in OBJ Theory And Practice of Software Technology pp 163 193 Goguen J A et Tardo J 1977 OBJ 0 preliminary users manual Semantics and Theory of Computation Technical Report 10 UCLA Los Angeles USA Graf A 1991 Left to rigth tree pattern matching in R V Book ed Proceedings 4th Conference on Rewriting Techniques and Applications Como Italy Vol 488 of Lecture Notes in Computer Science Springer Verlag pp 323 334 Graf P 1996 Term Indexing Vol 1053 of Lecture Notes in Artificial Intelligence Springer Verlag Guttag J V Horning J J Garland S J Jones K D Modet A et Wing J M 1993 Larch Languages and Tools for Formal Specification Springer Verlag Hamel L H 1995 Behavioural Verification and Im
394. s Faire une these fait peut tre partie des expressions qui ne vous impressionnent plus autant qu il y a quelques ann es au m me titre que je reviens de San Francisco ou je pars faire un expos Hawai M me sans revenir de San Francisco cette expression laisse g n ralement indiff rent l tudiant qui pr pare sa th se Mais ce n est pas toujours le cas des personnes rencontr es ici ou l Il m est ainsi arriv au cours de discussions de repas ou de f tes de rencontrer des personnes des amis ou des proches r ellement intrigu s par cette exp rience qu est la pr paration d une th se Comment dans ce cas ne pas chapper la question je n y comprendrai s rement rien mais quel est le sujet de ta th se C est videmment une preuve d int r t que de se voir questionn sur ses recherches mais ce n est pas sans rappeler le merveilleux film d Alain Resnay On conna t la chanson Qui n a pas souri en coutant la pauvre Camille Agn s Jaoui nous expliquer qu elle s int ressait aux chevaliers paysans de l an 1000 au Lac de Paladru C est principalement pour viter ce petit sourire et l immanquable r ponse qui l accompagne Ah oui ce doit tre r ellement passionnant que je n ai jamais os dire que je travaillais prin cipalement sur la compilation efficace du filtrage associatif commutatif en pr sence de strat gies non d terministes J ai toujours pr f r
395. s ou non Bool Bool pri 200 non Bool Bool pri 200 alias non end Il est parfois n cessaire de d finir une injection d une sorte vers une autre Ceci peut s expri mer facilement en utilisant un op rateur sans nom Supposons que nous voulions d finir une sorte Contrainte permettant de repr senter des formules logiques Certaines de ces formules peuvent se simplifier en des contraintes l mentaires correspondant aux valeurs de v rit vrai et faux Il est alors pratique de dire que toute expression de sorte Bool est aussi une expression de sorte Contrainte Cela s exprime en ELAN de la fa on suivante 1 2 Termes et r gles de r criture conditionnelles 13 module contrainte sort Contrainte end operators global Bool Contrainte end On dit alors que la sorte Bool est inject e dans la sorte Contrainte D un point de vue plus formel une signature X est un couple S F o S est un ensemble de sortes et F est un ensemble de symboles de fonctions sur lequel sont d finies les applications Dom F S Cod F S et F HN retournant respectivement le domaine le codomaine et l arit d un symbole de fonction Soient f e F se S et 51 8n S tels que Dom f s1 8n Cod f s et f n on dit que le symbole f a pour profil s1 Sn gt 8 1 2 Termes et r gles de r criture conditionnelles Les symboles d finis dans la signature peuvent tre utili
396. s s pour construire des termes tant donn es une signature S F et X une famille d ensembles de variables de sorte s S l ensemble des termes 7 F de sorte s est le plus petit ensemble contenant Xs et tel que f t1 stn est dans T F V Uses Ts F pour toute fonction f de profil s1 8n gt set ti T5 F pour i 1 n Je suppose connue la notion de position dans un terme la position vide qui correspond la racine est not e Le sous terme de t la position w est not t Le remplacement dans t de t par t est not t t Un terme est dit clos s il ne contient pas de variable et l ensemble des termes clos se note T F Nous avons vu comment les grammaires et les signatures permettent de d finir et de construire la structure alg brique des donn es mais nous n avons rien dit concernant le sens des op ra tions ainsi d finies En ELAN le m canisme d valuation l mentaire repose sur la r criture les r gles de r criture sont des paires de termes r not es l gt r ou 1 gt r et sont utilis es pour d finir une relation entre deux termes clos Nous pouvons ainsi d finir un ensemble de six r gles de r criture qui permettent de simplifier en vrai ou faux n importe quelle expression bool enne du module booleen rules for Bool P Bool global vrai ou P gt vrai end faux ou P gt P end vrai et P gt P end faux et P gt faux end
397. s locales Comme le montrent les chapitres 8 et 11 des sch mas complexes de compilation des strat gies sont tudi s et certaines fonctions n cessaires au filtrage AC sont amen es tre crites par un humain ce qui donne une importance suppl mentaire la lisibilit du code g n r et la facilit d utilisation des fonctions de gestion du non d terminisme C est pourquoi nous avons choisi de ne pas d naturer l utilisation du langage C et de lui ajouter deux nouvelles primitives setChoicePoint et fail qui n imposent aucune restriction la compilation modulaire l utilisation de biblioth ques ext rieures l usage de variables locales et de fonctions avec arguments restent possibles Ces deux fonctions permettent respectivement de poser un point de choix qui m morise l tat courant de l ex cution la valeur des variables locales et d y revenir ult rieurement en restaurant l tat sauvegard Leur action se situe au niveau de la pile syst me g r e par les compilateurs C ce qui nous oblige intervenir bas niveau et en particulier crire ces deux fonctions en assembleur 99 100 Chapitre 7 Gestion du non d terminisme Ce chapitre pr sente dans un premier temps le comportement de ces deux fonctions et montre comment elles peuvent tre utilis es pour programmer facilement des retours arri re en C Dans une deuxi me partie les algorithmes sont d crits en d tail pour permettre une ve
398. s un projet de plus grande ampleur Le deuxi me point est abord travers la conception du compilateur En effet la conception du nouveau composant qu est le compilateur nous a amen d une part tudier et combiner diff rentes techniques de compilation tout en gardant l esprit l id e de rendre le compilateur le plus extensible possible D autre part cela nous a aussi amen r fl chir l organisation g n rale de l environnement de sp cification et proposer des solutions Ce chapitre pr sente l architecture de l environnement de sp cification ELAN Celle ci repose essentiellement sur l existence d un format d change permettant de modulariser et d ouvrir notre syst me vers l ext rieur Le format d change retenu pour ELAN s est montr bien adapt 39 40 Chapitre 3 Plateforme de prototypage au d veloppement d outils de transformation de programmes par exemple mais il a cependant le d faut d tre trop proche de la repr sentation interne des donn es du syst me Profitant de Vexp rience du groupe ASF SDF nous proposons en fin de chapitre une nouvelle architecture d environnement fond e sur la d finition d un format plus lisible et plus modulaire 3 1 Format d change La conception d un environnement de sp cification est une t che souvent difficile parce qu elle doit prendre en compte l int gration de diff rents outils h t rog nes tels qu un parseur un pr processeu
399. s utiliser de m thodes statistiques telles que l analyse de s ries chronologiques Comme le mentionne Bailey 1995 dans sa th se il semble y avoir deux philosophies d valuation des performances d un compilateur l valuation des petits programmes facilement compr hensibles et exp rimentables dans diff rents langages ou sur diff rentes architectures Le programme qui calcul le nieme nombre de Fibonacci est un exemple typique de petit programme qui met en vidence de fa on extr me certains comportements tels que le traitement des entiers et de la r cursivit L inconv nient de ce type de programmes est qu ils ne refl tent que partiellement les capa cit s d une implantation en ne testant qu un sous ensemble restreint des constructions du 165 166 Chapitre 12 Exp riences pratiques langage source L avantage est que ces programmes sont facilement portables et exp rimen tables avec d autres compilateurs ce qui permet de se situer m me approximativement par rapport aux autres l valuation de gros exemples donne une image g n ralement plus r aliste des perfor mances moyennes d un compilateur La taille et la sp cificit des programmes rend alors plus difficile la comparaison avec d autres outils de compilation Lorsqu on dispose d un interpr teur et d un compilateur ce type d exp rimentation permet n anmoins de mesurer les apports et de mettre en valeur l in
400. ser ce ramasse miettes et de nous concentrer sur d autres aspects tels que la compilation du filtrage 162 Chapitre 11 Support d ex cution associatif commutatif par exemple L int gration du ramasse miettes Boehm et Weiser 1988 nous permis de simplifier consid rablement la g n ration du code et d am liorer d environ 20 les performances des programmes g n r s par rapport ceux qui utilisaient des compteurs de r f rences Mais depuis le d but de cette nouvelle implantation du compilateur ELAN de nombreuses am liorations ont t implant es ce qui a pour effet de r duire la proportion de temps pass e dans les tapes de filtrage et de gestion du non d terminisme par exemple et d augmenter celle pass e dans le gestionnaire de m moire qui n a pas t modifi On peut ainsi trouver des exemples de programmes dont pr s de 50 du temps d ex cution est pass g rer la m moire C est principalement ce qui nous am ne tudier des techniques de ramasse miettes sp cifiques mieux adapt es la programmation par r criture Dans ce cadre on peut remarquer qu chaque tape de r criture un grand nombre de symboles de petite taille sont allou s et que leur dur e de vie moyenne est relativement courte Lorsqu on value une condition par exemple le terme est construit mis en forme normale puis d truit imm diatement apr s Cet aspect laisse ainsi penser qu un ramasse miettes copy collecto
401. son galit dis galit pour la sorte s occur ce module est param tr par deux sortes s et s2 et d finit une op ration binaire occurs in indiquant si le terme de sorte s pass en premier argument est un sous terme du deuxi me argument de sorte s2 Consid rons les termes g a et f g a l expression occurs g a in f g a se r duit en true parce que g a appara t dans le terme f g a replace ce module est aussi param tr par deux sortes et d finit l op ration de rempla cement sur les termes Consid rons le terme replace a by b in f a apr s r duction le terme se r crit en f b Afin de faciliter l criture des sp cifications un certain nombre de structures de donn es ont t sp cifi es en ELAN et int gr es au syst me sous forme de biblioth que Cela vite aux programmeurs d avoir a red finir des types de donn es fr quemment utilis s lors de chaque uti lisation Sont ainsi d finis dans cette deuxi me couche composant la biblioth que des modules permettant de manipuler des listes des tuples ou des tableaux D autres structures de donn es plus sp cifiques aux domaines pour lesquels le syst me ELAN est destin sont aussi d finies La biblioth que contient ainsi des modules permettant de d finir et manipuler des termes substi tutions contraintes et des syst mes quationnels par exemple Cette liste n est pas exhaustive dans la mesure o le syst me volue et s enr
402. sont calcul es Le code g n r est tel que pour un terme clos s donn son ex cution correspond aux tapes suivantes 1 la structure de filtrage AC est appliqu e sur le terme s et un graphe biparti compact est ventuellement construit Cette phase d termine l ensemble des r gles rj ri qui peuvent potentiellement s appliquer Pour conna tre l ensemble des r gles qui s appliquent r ellement il reste v rifier les conditions et dans le cas AC il faut en plus extraire et r soudre un graphe biparti 2 les r gles de r r sont essay es successivement Le code de la fonction est donc compos d une suite de morceaux de programmes qui correspondent respectivement Vapplication des r gles r1 ra avant d valuer application d une r gle r on v rifie qu elle fait bien partie de r Tin puis un point de choix est plac pour contr ler l ex cution Ainsi tout chec d tect au cours de l application de r que ce soit au moment du filtrage ou au cours des valuations locales permet de revenir ce point de choix pour y essayer la r gle suivante ri si le membre gauche l contient au moins un symbole AC le graphe biparti corres pondant la r gle est extrait et r solu comme d crit dans le chapitre 6 Un point de choix est pos avant chaque solution retourn e Lorsqu aucune solution n est trouv e un chec est provoqu les valuations locales sont e
403. ssante parce que le co t d une allocation m moire est tr s faible du m me ordre qu une allocation effectu e dans une pile il suffit de changer la valeur d un pointeur indiquant la premi re zone libre du demi espace actif et l effi cacit d pend arbitrairement de l espace m moire disponible La complexit de chaque phase de r cup ration est quant elle proportionnelle la taille des objets vivants en m moire et non la taille du tas En contre partie il faut deux fois plus de m moire pour effectuer un m me calcul Il faut aussi noter que l utilisation d un tel ramasse miettes d place les objets cr s ce qui n cessite l utilisation d un algorithme particulier tel celui de Cheney 1970 pour copier les structures circulaires par exemple D une mani re g n rale aucune des deux approches n est meilleure que l autre elles ont chacune leurs avantages et leurs inconv nients Le choix doit se faire en fonction du contexte d utilisation qui d pend de la m moire totale disponible de la taille des probl mes traiter de la dur e de vie moyenne des objets cr s et de la possibilit de les d placer Pour plus de d tails concernant les diff rents types de ramasse miettes existant et leur comparaison le lecteur est invit se r f rer au livre de Jones et Lins 1996 ou au survey de Wilson 1992 Si le principe de base d un ramasse miettes est relativement simple il faut savoir que la
404. st g n r e Lorsqu aucune r gle ne peut s appliquer sur le terme s le terme s ne peut pas tre calcul on dit alors que l application de la r gle ou de la strat gie choue et un chec fail est provoqu par la fonction C correspondante Rappelons qu un fail r active le dernier point de choix cr et restaure l environnement d ex cution En particulier lorsqu un fail est engendr au cours de l ex cution d une fonction C cela peut r activer un point de choix pos pr c demment dans la fonction cela peut aussi r activer un point de choix pos par une autre fonction dont l ex cution est termin e ou non Dans ce cas la fonction courante se termine et l environnement de la fonction ayant pos le point de choix est restaur Si d un point de vue th orique l application d une strat gie sur un terme retourne un en semble de r sultats d un point de vue pratique l application d une strat gie retourne au plus un r sultat et ce sont les points de choix engendr s au cours du calcul qui permettent de m moriser les contextes interm diaires Ce sont les checs engendr s ult rieurement qui permettent de r activer une strat gie pour lui faire produire un nouveau r sultat Lorsque tous les r sultats sont engendr s la strat gie produit naturellement un chec Pour terminer cette pr sentation g n rale remarquons qu effectuer une tape de r cri ture en appliquant un
405. st pourquoi dans la suite de ce chapitre nous proposons un ensemble de sp cialisations qui permettent d am liorer l efficacit de la proc dure de filtrage pour faire de la normalisation modulo AC dans le cadre du calcul de la forme normale d un terme par rapport un syst me de r criture il n est pas n cessaire de conna tre l ensemble des r gles pouvant s appliquer sur un sujet il suffit d en s lectionner une seule Cette remarque nous am ne r soudre successivement et non plus simultan ment l ensemble des graphes bipartis engendr s d un point de vue implantation la construction d une hi rarchie de graphes bipartis est une op ration co teuse dans la mesure o de nombreuses allocations dynamiques de m moire doivent tre effectu es Nous proposons donc de limiter l application de l algorithme une certaine classe de motifs ce qui permet d viter la construction recursive d une telle hi rarchie l algorithme d crit dans ce paragraphe am ne construire autant de graphes bipartis que de motifs concern s par le probl me de filtrage Pour les m me raisons d efficacit que pr c demment nous proposons une nouvelle structure de graphes bipartis compacts permettant de repr senter cet ensemble de graphes bipartis par une structure unique limitant ainsi le nombre d allocations dynamiques la pr sence de r gles de r criture conditionnelles am ne calculer les instances d
406. strat gie toute enti re choue tous les l ments de la liste ont t extraits Afin d int grer la gestion des strat gies et de permettre l exploitation des r sultats la syntaxe et la s mantique des r gles de r criture t tendue La structure d une r gle ELAN est la suivante lt r gle gt lt tiquette gt lt terme gt gt lt terme gt lt valuation locale gt lt valuation locale gt if lt terme bool en gt where lt nom de variable gt lt strat gie gt lt terme gt where lt sorte gt lt terme gt lt strategie gt lt terme gt choose try lt valuation locale gt end Il faut noter qu une r gle se d compose en quatre composantes principales une ventuelle tiquette qui permet de donner un nom la r gle pour en faire une strat gie l mentaire un membre gauche utilis dans l tape de filtrage pour savoir si la r gle peut s appliquer ou non un membre droit qui d crit la structure du terme r duit une liste d valuations locales qui permettent de d clencher des strat gies de mettre en facteur des suites de calculs ou de sp cifier des conditions d applications de la r gle La simplification d un terme clos commence alors par une tape de filtrage permettant d li miner les r gles ne pouvant pas s appliquer sur le terme Une r gle est ensuite s lect
407. suffit d ajouter une condition introduite par le mot cl if au syst me pr c dent pour le rendre terminant et confluent rules for int n int global fact 0 gt 1 end fact 1 gt 1 end fact n gt nxfact n 1 if n gt 1 end end Dans ce cas la troisi me r gle ne peut plus s appliquer pour r duire le terme fact 1 parce que la condition if n gt 1 n est plus satisfaite On peut d ailleurs montrer que ce dernier syst me est bien terminant et confluent Mais les techniques pour montrer la confluence et la terminaison des syst mes de r criture conditionnelle sont encore plus complexes 1 3 Strat gies d application L tude de la r criture et le d veloppement d ELAN s int grent dans le cadre du g nie logiciel en essayant d am liorer la qualit des environnements de d veloppement et des logiciels ainsi produits Mais l aspect non d terministe de la r criture les r gles de r criture peuvent s appliquer dans n importe quel ordre et n importe quelle position du terme r duire n est pas vraiment compatible avec la volont de r aliser des logiciels s rs En effet m me s il existe des algorithmes permettant de prouver que certains syst mes sont confluents et terminants d une mani re g n rale ces probl mes ne sont pas d cidables parce que isomorphes l ind cidabilit de l arr t des machines de Turing Turing 1936 Delahaye 1995 il existe toujours des syst
408. surer que les symboles d finis sur les entiers sont bien compl tement d finis i e la forme normale d un terme de sorte entier doit tre un entier et non un terme et dans ce cas il peut utiliser le module builtinInt Lorsque cette contrainte n est pas satisfaite le code g n r pour le filtrage ne peut pas tre correct et l ex cution se termine par une erreur lorsque la s curit est importante et que l utilisateur ne veut pas se soucier de la compl te d finition des symboles utilis s il peut alors utiliser le module int qui utilise le module builtinInt mais introduit un nouveau symbole d injection builtinInt int per mettant d emballer les entiers Ce qui ressemble la derni re solution propos e sauf que le constructeur n est plus interne au compilateur mais d fini en ELAN Les op rations l mentaires sur les int sont d finies en ELAN de la mani re suivante 158 Chapitre 11 Support d ex cution f constructeur constructeur L 3 12 3 1 7 12 1 25 Fic 11 3 Cette figure illustre deux mani res d emballer les entiers Sur le dessin de gauche le constructeur utilis est un symbole interne au compilateur qui permet de repr senter un entier Le dessin de droite montre comment un symbole d injection builtinInt int d fini en ELAN peut tre utilis pour plonger la sorte builtinInt dans la sorte int
409. syntaxe de certains op rateurs peut tre d finie dans un module autre que celui consid r Le parseur doit donc parcourir la cl ture transitive des importations du module courant pour construire incr mentalement un parseur capable d analyser les r gles de r criture contenues dans le module La complexit des algorithmes et des techniques mettre en uvre est telle qu ce jour seul ASF SDF Deursen et al 1996 Visser 1997 poss de un parseur capable d analyser s par ment chaque module pour construire leur repr sentation interm diaire asFix Les m thodes pr sent es dans Visser 1997 sont suffisamment g n rales pour pouvoir tre r utilis es et adapt es aux langages Maude CafeOBJ ou ELAN par exemple Mais remarquons qu il n est pas n cessaire d utiliser un analyseur modulaire pour pouvoir analyser compl tement une sp cification et g n rer les modules associ s en repr sentation interm diaire il suffit de lire l ensemble des r gles hors contexte d finies dans les diff rents modules et de construire dynamiquement un parseur avec l algorithme d Earley par exemple pour pouvoir analyser chaque module s par ment C est la solution qui a t retenue pour ELAN D coupage en modules La version actuelle d ELAN permet de lire une sp cification et de construire sa repr senta tion au format REF Mais le caract re monolithique de ce format donne un aspect fig notre environnement ce qui rend di
410. t e par un symbole s ou suivre une ar te tiquet e par un w il choisit toujours de suivre celle qui est tiquet e par le symbole s w mais il m morise dans sa m moire M pr vue cet effet l tat o s est fait le choix et par la suite tous les symboles lus depuis cet tat Lorsque l automate se bloque dans un tat qui n est pas terminal c est peut tre qu un mauvais choix a t fait dans le pass L automate regarde alors la position de sa t te de lecture puis inspecte sa m moire la recherche du dernier choix effectu tel que si l ar te w avait t utilis e cela aurait permis la t te de lecture d atteindre un point plus droite sur la bande de lecture Si un tel tat e est trouv dans la m moire M un pr fixe a lui est associ le troisi me mode de d placement de la t te de lecture est alors utilis celle ci avance vers la droite en lisant autant de symboles 8 X n cessaires pour que soit un terme bien form L automate utilise alors la r gle de transition d tats 6 ew 5 e pour passer dans l tat e c est la r gle qui n avait pas t utilis e lorsque le mauvais choix a t fait La strat gie mise en uvre est dite avec retours arri re parce que l automate retourne dans un tat pass pour effectuer un autre choix La particularit de cette strat gie est qu elle ne fait jamais reculer la t te de lecture au contraire elle a tendance la fair
411. t me de r criture la proc dure de filtrage est un composant crucial elle est utilis e avant chaque application de r gle pour d terminer quelles sont celles qui peuvent potentiellement s appliquer C est pour cela que nous tenons ce que les automates soient particuli rement optimis s Au cours du filtrage lorsqu un choix se pr sente l automate doit m moriser l tat courant et tous les symboles qui vont tre lus Puis lorsque l automate se bloque dans un tat il doit inspecter sa m moire pour y trouver le choix responsable de ce blocage Dans cette partie 76 Chapitre 5 Compilation du filtrage syntaxique Fic 5 7 Cet automate a t construit partir d une cl ture r duite mais n tant pas canonique une r gle de transition d tats 6 e2 w s e3 a t ajout e afin de permettre un changement de branche et remettre en cause le dernier choix effectu Il permet en particulier de reconna tre le terme fgb sans bloquer l automate dans l tat e2 nous proposons d tendre l automate m moire en lui ajoutant des r gles de transition d tats et une r gle de transition de configuration pour l affranchir de ces deux tapes de m morisation et de recherche Commen ons par faire quelques remarques lorsque l automate doit s arr ter et faire une recherche il est forc ment dans un tat d o aucune ar te tiquet e par un w ne part si l
412. t r t des nouvelles m thodes d velopp es Pour valuer les qualit s du compilateurs ELAN nous utilisons ces deux types d approches des petits exemples pour le situer par rapport aux autres implantations et mettre en vidence les caract ristiques de l algorithme de filtrage AC propos de gros programmes pour montrer sa capacit traiter des cas r els et pour caract riser plus pr cis ment les apports de cette th se 12 1 Estimation du degr de compilation Dans le chapitre 4 page 58 nous avons pr sent deux grandes approches pour compiler un langage donn la premi re consistant repr senter les structures dominantes du langage source par des structures de donn es du langage cible la deuxi me consistant repr senter les caract ristiques du langage source par des structures de contr le du langage cible Dans cette partie nous proposons de comparer le comportement des programmes compil s et interpr t s en retenant comme indicateurs la quantit totale de m moire allou e et le nombre total de symboles de fonction construits au cours d un calcul Ces informations nous donnent une estimation du degr de traduction des structures du langage source en structures de contr le du langage cible Les r sultats exp rimentaux suivants montrent que pour effectuer un m me calcul le compilateur alloue moins de m moire et cr e moins de symboles de fonction que l interpr teur Il est videmment int
413. t BG constituent un 90 Chapitre 6 Compilation du filtrage associatif commutatif sous ensemble des sommets composant CBG et que BG se calcule de la mani re suivante V3 Be Pix Va et kj 1 lt k lt m E Bi pjk iby E et Pix e Vo BG VU V E o D un point de vue implantation cette extraction peut s effectuer efficacement si l on repr sente un graphe biparti compact par une structure de donn e ad quate Le chapitre 11 pr sente une implantation base de vecteurs qui ram ne l extraction d un graphe biparti l extraction d un ensemble de vecteurs Illustrons la m thode en l appliquant sur l exemple fac z f a x g a gt r if z 2 fac 2 2 f a x g a gt facli if z 2 fac f a 2 f y 9 0 gt ra fac z au lu g b fao 2 r2 Le syst me consid r contient les deux r gles de r criture et leurs extensions respectives qui permettent leur application sur des sous termes du sujet La valeur des membres droits r et ro n est pas significative dans la mesure o nous nous int ressons l aspect filtrage AC du processus de normalisation Il faut cependant noter que les deux premi res r gles comportent une condition bool enne if z x impliquant des variables du membre gauche c est ce type de situation qui peut amener l algorithme de filtrage AC devoir extraire plusieurs solutions pour en trouver une qui satisfasse la condition Appelons respectivemen
414. t de cat gorie Dans la pratique cette situation se produit assez rarement et g n ralement lorsqu un module est modifi c est souvent pour corriger la d finition d une r gle ou pour ajouter une nouvelle r gle Apr s chaque modification d un module l tape de r organisation reshuffling doit tre appliqu e ce qui produit un nouvel ensemble de modules Mais on s apercoit qu il est inutile de recompiler la totalit de ces modules parce qu ils correspondent dans la grande majorit des cas aux modules g n r s par l tape pr c dente Il suffit alors de ne recompiler que les modules qui sont diff rents c est pr cis ment ceux qui contiennent les r gles ajout es ou modifi es La recompilation de ces modules engendre de nouveaux fichiers C qui sont leur tour recompil s La compilation modulaire permet ainsi de r duire le nombre de compilations et le temps d attente d un cycle de compilation l autre Il faut cependant noter que la compilation mo dulaire n a pas que des avantages Comme on l a vu pr c demment elle emp che d avoir une vue globale du programme compiler ce qui limite les possibilit s d optimisation telles que l analyse du d terminisme par exemple En effet comment conna tre le d mode d une strat gie lorsque celle ci est d finie dans un module diff rent Contrairement ASF SDF qui produit de l asFix la version actuelle d ELAN ne permet pas encore d engendrer
415. t de listes qu il y a d l ments dans la liste initiale c est vrai si on consid re que la liste initiale correspond 0 application d extractrule2 Il suffit alors d appliquer la r gle extractrulei sur chaque sous liste obtenue pour en extraire l l ment de t te C est pr cis ment cette id e qui est exprim e par la strat gie suivante listExtract gt iterate dc one extractrule2 dc one extractrulei end A titre d exemple tudions lapplication de la strat gie listExtract sur le terme ex tract a b nil Dans un premier temps la r gle extractrule2 est appliqu e 0 fois c est le premier r sultat d iterate ce qui ne modifie pas le terme courant puis la premi re r gle 1 4 R gles et strat gies 19 est appliqu e pour retourner le premier r sultat de la strategie l l ment a Lorsqu une autre solution est demand e l it ration continue et la r gle extractrule2 est appliqu e sur le terme r sultat de sa derni re application savoir extract a b nil Le terme se r duit en ex tract b nil puis l l ment b est retourn Si une autre solution est de nouveau demand e Vapplication d extractrule2 r crit le terme extract b nil en extract nil mais cette fois ci la premi re r gle ne peut pas s appliquer il y a donc un chec dans la deuxi me partie de la strat gie Cet chec provoque la demande d une autre solution mais l it ration est termin e c est pourquoi la
416. t know choose Il est particulier dans la mesure o son arit est variable dk S1 S s lectionne toutes les strat gies donn es en argument et retourne pour chacune d elles l ensemble des r sultats possibles Si toutes les strat gies S1 9n chouent la strategie dk S1 S choue elle aussi l op rateur dc tient son nom de dont care choose la diff rence de dk il ne s lectionne parmi sa liste d arguments qu une seule strat gie S qui n choue pas Il retourne ensuite l ensemble des r sultats provenant de l application de La m thode de s lection de la strat gie S n est pas sp cifi e et peut tre consid r e comme non d terministe lorsque l ordre de s lection a une importance particuli re on peut alors utiliser l op rateur first qui s lectionne la premi re strat gie qui n choue pas en essayant les strat gies de la gauche vers la droite lorsque first S1 8 s lectionne la strat gie S c est que toutes les strat gies S1 5 _1 ont chou et l ensemble des r sultats de l application de S est alors retourn il arrive qu on ne soit int ress que par un seul r sultat dans ce cas il est possible d utiliser les op rateurs first one et dc one qui s lectionnent avec ou sans ordre une strat gie qui n choue pas et retournent au plus un r sultat Celui ci est choisi de mani re non d terministe parmi l ensemble des r sultats possibles la strategie i
417. t le nombre de points de choix pos s dynamiquement ce qui diminue d autant le temps pass dans la gestion du non d terminisme Compilation des strat gies Au paragraphe 8 6 nous avons pr sent un sch ma de compilation de la strat gie repeat S tel que l exploration se fait en profondeur d abord S S S S es ti Es Es tn LS fail S S S S La pose d un point de choix chaque tape permet de marquer les tapes de l it ration et de savoir lorsqu une nouvelle voie doit tre explor e Mais lorsque la strat gie S est det ou semi la question de savoir si une nouvelle voie doit tre explor e ne se pose plus Il suffit d appliquer continuellement S de m moriser le r sultat interm diaire chaque tape et de le retourner lorsque l application de S choue S t S S t et gt 1 gt wae gt n fail On peut ainsi d finir un nouveau sch ma de compilation pr sent dans l algorithme 9 1 qui ne pose plus qu un seul point de choix ind pendamment de la longueur de l it ration Cette optimisation influence naturellement le temps d ex cution mais son principal apport est de r duire consid rablement l espace n cessaire pour ex cuter une it ration le nombre de points de choix actifs simultan ment qui tait gal la longueur de l it ration est maintenant r duit 1 Sachant que le calcul d une forme normale d un terme est essentiellement l application r p titive d u
418. t p1 p1 et p2 p les motifs des deux premi res et des deux derni res r gles nous avons alors p1 2 p21 ax p1 3 g a P22 f y 9 b et Pippi Pj voir programme 6 1 Il faut noter que les sous motifs composant une r gle et son extension sont identiques C est pourquoi on peut oublier les sous termes P dans la suite des explications Initialisation des listes de motifs void init_pattern_list_F F z zExt f a x g a pattern_tab 0 0 pattern_tab 1 1 MS_pattern_list_init pattern_list_F pattern_tab F zExt f y g b f a x pattern_tab 0 2 pattern_tab 1 0 MS_pattern_list_init pattern_list_F pattern_tab Programme 6 1 Cette fonction C est un exemple de programme qu il est possible de g n rer partir des algorithmes d crits dans ce chapitre L tude des exemples de code peut tre vit e en premi re lecture La fonction init_pattern_list_F pr sent ci dessus est ex cut e au lancement du programme pour initialiser la construction des graphes bipartis compacts en donnant un num ro chaque motif et chaque sous motif fac z z f a x g a et fac z f y g b f a x deviennent les motifs 0 et 1 fac est renomm en F et seules les r gles ayant une variable d extension sont conserv es Les num ros 0 1 et 2 sont affect s respectivement aux sous motifs f a x g a et f y g b 6 5 Sp cialisation utilisant une structure compacte 91 En appliquant success
419. te parce que la strat gie d application des r gles n est plus fig e par le syst me mais param trable par l utilisateur Il dispose pour cela d un certain nombre de constructeurs pour sp cifier de quelle fa on un ensemble de r gles doit tre appliqu veut on un seul r sultat correspondant l application d une r gle tous les r sultats correspondant l application d une r gle ou tous les r sultats correspondant l application de toutes les r gles Malgr cette souplesse lorsqu on prototype un d monstrateur automatique il arrive qu un calcul se bloque ou diverge simplement parce que la strat gie d application ne permet pas de d duire un lemme particulier par exemple Il serait alors int ressant d offrir la possibilit l utilisateur d intervenir en donnant d autres strat gies de recherche Actuellement l utilisateur doit modifier la sp cification du d monstrateur et le r ex cuter Strat gies interactives Dans un premier temps nous envisageons d approfondir les travaux de Peter Borovansky 1998 et d tendre le langage de strat gies actuel pour le rendre interactif et permettre la d finition dynamique de nouvelles strat gies Dans un second temps nous envisa geons de poursuivre les travaux sur les termes de preuve d crits pr c demment pour d finir des outils d analyse La combinaison d un langage de strat gies capable de d finir dynamiquement de nouvelles strat gies avec des
420. tes les instances possibles de la variable x et v rifier qu elles n appartiennent pas 52 Il est ainsi naturel de voir la proportion de temps pass dans la gestion du non d terminisme augmenter par rapport aux pr c dents exemples mais nous estimons qu elle est ici excessive et 178 Chapitre 12 Exp riences pratiques nous envisageons de modifier l g rement nos sch mas de compilation pour r duire la taille des environnements sauvegarder lors de la pose des points de choix il suffit pour cela de favoriser l utilisation de variables globales afin de r duire le nombre de variables locales n cessaires dans les fonctions C g n r es En revanche on peut constater que le temps pass dans les fonctions de filtrage AC reste re lativement petit Le co t li la construction des substitutions est sup rieur celui des exemples pr c dents mais c est un comportement normal tant donn le nombre de substitutions calcul es et construites pour tester la satisfaisabilit de la condition if x s2 M me si la proportion de temps pass construire les substitutions peut para tre importante l encore la compilation des fonctions d acc s permet de limiter cette augmentation 12 4 Comparaison avec d autres implantations Comparer rigoureusement diff rentes implantations d un m me langage de programmation est une t che d j bien difficile Classer en fonction de leurs performances diff rentes implan ta
421. ties provide similar functions for instance world and world in Claire Caseau et Labur the 1996 try and retry in the WAM onfail fail createlog and replaylog in the Alma 0 Abstract Machine Partington 1997 setChoicePoint and fail in ELAN Vittek 1996 Recently a new approach to the implementation of tabling for Prolog Demoen et Sagonas 1998 has been pro posed The authors suggest to extend a Prolog implementation by adding some new built in predicates For their purpose a similar idea as the one presented here has been explored in a different context We propose to extend the C language by adding two control flow functions setChoicePoint and fail setChoicePoint returns the integer 0 when setting a choice point and the computation goes on When the function fail is called it performs a jump into the last call of setChoicePoint and it returns the integer 1 These functions can remind the pair of standard C functions set jmp and longjmp However the longjmp can be used only in a function called from the function setting set jmp Functions setChoicePoint and fail do not have such a limitation The following program written in C illustrates the behaviour of these two new functions The Output column shows the result obtained when executing the program Program Output static int counter 0 result 0 locvar 0 counter 0 main locvar 1 counter 1 if setChoicePoint 0 exit 0 result 1 locvar 0 counter 1 fO locvar 1 counte
422. til a t crit en ASF SDF lui m me La traduction d un formalisme l autre peut se d composer en plusieurs tapes de transformation la sp cification ASF est dans un premier temps traduite dans un format interm diaire fond sur une structure de termes le format asFix Au cours de cette tape toutes les constructions infix es sont remplac es par des constructions pr fix es quivalentes de sorte que le format asFix soit facile analyser le format asFix est ensuite traduit dans un autre format interm diaire moins riche qui ne contient plus aucune information concernant l affichage des termes manipul s Dans ce format appel ASF les noms d op rateurs sont aussi simplifi s afin de rendre les trans formations ult rieures plus faciles effectuer diff rentes transformations sont appliqu es sur le programme ASF pour en enlever des op rations complexes de list matching ces op rateurs associatifs sont remplac s par une nouvelle famille d op rateurs et de r gles qui simulent la r criture modulo l associativit seulement apr s ces trois tapes le programme ASF simplifi ne contenant plus d op rateur associatif peut tre traduit dans le format REF il reste renommer les op rateurs et les constructions propres au format ASF le programme REF obtenu peut alors tre compil par le compilateur ELAN pour produire un ex cutable ind pendant Ce sch ma de com
423. tion d une des 92 solutions qu il est possible de trouver au probl me des 8 reines vide L utilisation d un algorithme de filtrage AC one to one permet de trouver une solution par exemple pi 1 51 2U U8U90 La deuxi me valuation locale est aussi une condition de filtrage consistant r soudre le probl me po U s2 lt ie s Ici aussi on peut trouver une solution pz 2 89 gt 3U U8 U par exemple Une liste 1 nil est construite puis une condition ok 1 2 1 nil est valu e pour voir si les deux reines pr c demment plac es ne sont pas en chec l une par rapport l autre tant plac es sur une m me diagonale l valuation du pr dicat ok retourne false et la condition n est pas satisfaite ce qui provoque un fail Le dernier point de choix qui avait t pos pendant la r solution de p2U52 She 51 est r activ et une autre solution du probl me de filtrage AC est calcul e Par exemple p2 gt 3 52 2U4U U8U0 L valuation reprend alors au niveau de la troisi me valuation locale et la condition 0k 1 3 1 nil est de nouveau valu e mais avec succ s cette fois Le processus se poursuit ainsi jusqu l valuation de la derni re condition Consid rons maintenant le deuxi me programme et supposons que l valuation locale cou rante soit where p5 select 0 et que les valeurs 1 5 8 et 6 aient t trouv es pour les variables p1 p2 p3 et p4 Une repr sentation graphique de cett
424. tions de langages diff rents est quasiment impossible Il y a d une part l effet benchmarks qui fausse les mesures simplement parce que les concepteurs sont amen s optimiser les algorithmes les plus utilis s par ces ensembles de programmes Et d autre part s ajoute la difficult de choisir les benchmarks sachant que certains probl mes s expriment mieux dans un langage plut t que dans un autre Dans cette partie nous nous contentons de situer ELAN par rapport aux autres outils per mettant d effectuer de la r criture modulo AC et nous nous concentrons particuli rement sur les comparaisons avec Brute et Maude qui font partie des meilleurs moteurs de r criture diffus s ce jour Notre objectif n est pas d tablir un classement rigoureux entre ces trois implantations mais plut t d illustrer l int r t des m thodes d velopp es dans les chapitres pr c dents et de montrer que leur implantation peut tre largement comp titive avec les autres m me si dans notre situation la marge d am lioration de certains algorithmes techniques est encore importante 12 4 1 Calculs d terministes La figure 12 10 illustre les performances du compilateur dans un cadre fonctionnel o seul le filtrage syntaxique est utilis Tous les temps donn s dans cette partie ont t obtenus sur une station Sun Ultra 1 La figure de gauche montre que dans le cadre de calculs arithm tiques intensifs les tech niques de com
425. trait n en est que plus intense 4 Introduction R criture et strat gies Le principal int r t des langages de programmation fond s sur la logique de r criture est d offrir des bases th oriques solides une s mantique op rationnelle relativement simple et une expressivit g n ralement puissante et agr able utiliser Ce dernier point est tout particuli rement int ressant lorsqu on programme des algorithmes math matiques complexes ceci parce que les notations habituellement utilis es peuvent tre r utilis es sans trop de changement Cette absence de transcription d une notation l autre diminue g n ralement le nombre d erreurs et facilite la t che du programmeur Consid rons par exemple l algorithme de compl tion de Knuth Bendix 1970 qui est souvent exprim par les six r gles de transformation suivantes Delete EU s s R gt E R Compose E RU s t gt E RU s u sit RU Simplify EU s t R m EU s u R sit Ru Orient EU set R we E RU s t sis gt t Collapse E RU s t m EU uzt R si s gt u avec sb Deduce E R gt EU s t R si s t cp R Ces r gles sont appliqu es sur un couple E R o E et R repr sentent respectivement des ensembles d quations et de r gles L ordre d application des r gles est important pour assurer une certaine quit et non divergence du processus la r gle de d duction Deduce doit par exemple
426. tre vit e Les am liorations apport es se constatent non seulement au niveau des performances du programme g n r mais aussi en terme d espace m moire n cessaire pour produire des r sultats Et dans de nombreux cas l analyse du d terminisme a permis de faire terminer correctement des programmes qui s arr taient la suite d un manque de m moire Nous pr sentons dans ce paragraphe les diff rents composants du compilateur qui peuvent tirer un b n fice de cette phase d analyse du d terminisme D tection d erreurs Comme mentionn au paragraphe 9 3 analyse du d terminisme peut aider d tecter au cours de la compilation la non terminaison des strat gies du type repeat S ou iterate S lorsque le d mode de S est det ou multi Cette remarque peut para tre anodine et pourtant on sait bien que bon nombre des erreurs de programmation viennent d une mauvaise re combinaison de modules ind pendants Ici il faut voir S comme une strat gie extraite d une biblioth que de strat gies et il ne devient plus vident de savoir si sa combinaison avec l op rateur repeat construit une strat gie qui termine ou non Dans Mercury par exemple le langage impose aux programmeurs de d finir le d mode d un pr dicat au moment de sa d finition Les concepteurs du langage affirment que tout comme le typage des variables cela permet de r duire consid rablement les risques d erreurs Filtrage AC Au paragraphe
427. ts Dans ce chapitre nous tudions les difficult s de compilation modulaire li es aux langages de programmation par r criture Nous pr sentons ensuite la hi rarchie des classes Java qui com posent le compilateur et nous rappelons l ordre dans lequel les diff rentes tapes de compilation sont effectu es 10 1 Compilation modulaire et compilation s par e Les probl mes li s la compilation modulaire sont nombreux Crelier 1994 et am nent se poser les questions suivantes comment analyser s par ment les modules du langage source pour 143 144 Chapitre 10 Architecture logicielle construire leur repr sentation interm diaire dans un format tel que Efix Comment compiler s par ment chaque module cod dans sa repr sentation interm diaire Comment viter chaque cycle de compilation de recompiler les modules n ayant pas t modifi s Analyse module par module Comme mentionn dans le chapitre 2 l analyse syntaxique des langages tels qu ELAN est ren due difficile par la pr sence d op rateurs dont la syntaxe est d finie par des r gles de grammaire hors contexte Pour analyser les r gles de r criture d un module donn il faut avoir connais sance des r gles de grammaire associ es l ensemble des op rateurs utilis s dans le module et il faut aussi tre capable de construire dynamiquement un parseur d pendant de ces r gles de grammaire L aspect modulaire d ELAN fait que la
428. ue true CI Int S Set true or false in aux I S false CI Int J Int S1 Set S2 Set state U set I S1 S2 J error in I S2 true J Int S1 Set S2 Set mut state S1 S2 J state aux S1 S2 J CI Int J Int S1 Set S2 Set state aux U set I S1 S2 J mut state S1 U set I S2 I J in I S2 false compile A 1 Brute 203 produce statstics stat on reduce reduce reduce reduce reduce reduce reduce void void void void void void void mut mut mut mut mut mut mut state state state state state state state buildSet buildSet buildSet buildSet buildSet buildSet buildSet 10 empty 0 10 10 empty 0 25 5 empty 0 25 25 empty 0 100 empty 0 200 empty 0 300 empty 0 204 Annexe Programmes utilis s pour effectuer les exp rimentations A2 Caml A 2 1 Ackermann type unary 0 S of unary let rec ack function 0 x gt S x S x 0 gt ack x S 0 S x S y gt ack x ack S x y ack S S S 0 s s s s s s s s 0 A2 2 Fib_builtin let rec fib function O gt 1 1 gt 1 n gt fib n 1 fib n 2 33 print_int fib 28 print_newline A 3 Cime 205 A 3 Cime A 3 1 Bool3
429. ue le temps pass a maintenir les termes en forme canonique est relativement important mais c est principale 9 Ces donn es ont t obtenues sur un Sun Ultrasparc en utilisant l utilitaire quantify 12 3 Co t du filtrage AC 177 ment d la non lin arit droite du syst me de r criture qui entra ne de nombreuse tapes d aplatissement et de fusion de listes tri es Nat10 Cet exemple est particulier parce que les termes manipul s sont petits mais le nombre de r gles composant le syst me est important plus de 50 commen ant par le symbole AC Le temps pass construire des graphes bipartis compacts occupe pr s de 30 du temps total mais une analyse plus fine nous montre que seulement 3 de ce temps est pass dans le filtrage des sous termes et que 80 du temps restant consiste allouer de la m moire pour m moriser les 50 vecteurs de bits servant repr senter les ar tes du graphe Il faut bien voir que ces graphes bipartis sont allou s et d truits au d but et la fin de chaque application d une r gle commen ant par un symbole AC et c est pourquoi nous sommes optimiste nous envisageons de mettre en place un nouveau m canisme de gestion m moire capable de recycler les structures de donn es pour pouvoir les utiliser d une application de r gle un autre Nous pensons ainsi r duire consid rablement le temps pass dans la construction des graphes bipartis compacts ce qui am l
430. ue th orique cette d rivation est une preuve en logique de r criture Meseguer 1992 les termes t et t sont quivalents modulo une certaine relation de r criture Une id e pourrait tre de rendre explicites de telles preuves en les repr sentant par des termes appel s termes de preuve Leur construction serait alors effectu e en m me temps que le calcul d une d rivation Les termes de preuves permettent non seulement de repr senter de mani re formelle les traces d ex cution mais ils pourraient aussi tre utilis s pour analyser et comprendre comment un calcul s est effectu et aussi rejouer certaines parties de la preuve Nous proposons de d finir une structure de terme de preuve capable de repr senter toutes les informations calcul es au cours d une d rivation position o une r gle est appliqu e substitution utilis e pour appliquer la r gle strat gie d application de la r gle etc En compl ment de cette structure on peut imaginer l laboration de plusieurs outils tels que un outil de visualisation qui permettrait de lire une preuve et surtout de se d placer interactivement dedans pour mieux comprendre sa structure et le comportement d une strat gie par exemple Il faut alors voir le terme de preuve comme repr sentation de l espace de recherche les branches correspondant des succ s mais aussi les branches qui m nent des checs sont repr sent es La suite logique
431. ueens gt p8 p7 p6 p5 p4 p3 p2 pi nil where set pl U sl 1U2U3U4U5U6U7U8U empty where set p2 U s2 sl if ok 1 p2 pl nil where set p3 U s3 s2 if ok 1 p3 p2 p1 nil where set p4 U s4 s3 if ok 1 p4 p3 p2 p1 nil where set p5 U s5 s4 if ok 1 p5 p4 p3 p2 p1 nil where set p6 U s6 s5 if ok 1 p6 p5 p4 p3 p2 pi nil where set p7 U s7 s6 if ok 1 p7 p6 p5 p4 p3 p2 pl nil where set p8 U s8 s7 if ok 1 p8 p7 p6 p5 p4 p3 p2 p1 nil end end La deuxi me version du programme applique la strat gie select sur un terme quelconque le terme 0 par exemple pour obtenir des nombres compris entre 1 et 8 queensrule queens gt p8 p7 p6 p5 p4 p3 p2 pi nil where pl select 0 where p2 select where p3 select where p4 select where p5 select where p6 select where p7 select where p8 select end if ok 1 p2 p1 nil if ok 1 p3 p2 p1 nil if ok 1 p4 p3 p2 pl nil if ok 1 p5 p4 p3 p2 p1 nil if ok 1 p6 p5 p4 p3 p2 p1 nil if ok 1 p7 p6 p5 p4 p3 p2 pi nil if ok 1 p8 p7 p6 p5 p4 p3 p2 p1 nil Oo O Ces deux programmes ont volontairement des styles de programmation diff rents afin d illus trer la puissance des valuations locales et les diff rents types de non d terminisme pouvant intervenir au cours de leur ex cution L application de la r gle queensrule est contr l e par Putilisation de la strat gie queens strategies for list int queens
432. un chec fail est engen dr et aucun r sultat n est obtenu La r gle est toujours d terministe mais sa strat gie d application ne l est plus d mode one S semi si S est une r gle de r criture 136 Chapitre 9 Analyse du d terminisme Probl me li la r cursivit La d finition d une r gle ou d une strat gie peut d pendre d une mani re g n rale de stra t gies impliquant cette m me r gle ou strat gie Le calcul d un d mode particulier peut ainsi d pendre de lui m me Un probl me similaire arrive en programmation logique lorsqu il s agit de d finir le mode d un pr dicat Sawamura et Takeshima 1985 Pour viter la non terminaison de notre algorithme d analyse du d terminisme lorsqu un d mode d pend de lui m me un mode par d faut est donn Pour une primitive de strat gie donn e ce mode correspond son mode maximum en utilisant l ordre d fini au paragraphe 9 2 primitive one all repeat iterate d mode par d faut semi nondet multi multi nondet 9 4 Impact de l analyse du d terminisme Conna tre au moment de la compilation le d mode d une r gle ou d une strat gie a un im pact consid rable sur la qualit du code g n r Il devient en effet possible de g n rer un code particulier pour les strat gies d terministes ou semi d terministes et par la m me occasion la pose d un grand nombre de points de choix peut
433. un format d change commun est d sormais bien tablie Il est cependant clair que l approche consistant utiliser un format d change pour connecter diff rents composants n est pas la solution la plus efficace dans la mesure o des tapes d enco dage et de d codage sont introduites Il semble cependant que ce soit le prix payer pour d finir un environnement coh rent compos de processus atomiques De mani re analogue ce qui a t fait dans l environnement ASF SDF nous avons r cemment introduit un format d change appel REF Reduced Elan Format dans l environnement ELAN L introduction du format REF a t dans un premier temps motiv e par le d veloppement du compilateur Le syst me tait alors relativement monolithique et comprenait d j un parseur un pr processeur et un interpr teur Il fallait trouver un moyen d int grer le nouveau composant qu est le compilateur Une solution aurait pu consister tendre le syst me existant avec le risque de voir le syst me se refermer sur lui m me Notre objectif tait tout autre puisqu il consistait p renniser les exp rimentations faites jusqu ce jour L introduction d un format d change tait une bonne alternative qui avait l avantage de permettre la r alisation d un com pilateur le plus ind pendant possible du syst me existant et qui permettait aussi la r novation de l environnement composant par composant Nous tions de plus i
434. une chance au nouveau langage qu tait Java en 1996 Et pourtant c est le choix inverse qui a t fait L effet de mode de l poque a s rement eu une influence non n gligeable sur cette d cision mais c est aussi l impression de fiabilit d gag e par la lecture des sp cifications du langage et quelques exp rimentations des outils qui nous ont amen s tenter l aventure I faut avouer que c tait un pari un peu risqu l poque parce qu il n y avait pas l engouement que l on conna t aujourd hui Mais l avenir nous donn raison et si le choix tait refaire ce serait sans la moindre h sitation que nous choisirions de nouveau Java pour tre le langage d implantation du compilateur Mis part le fait d tre portable et orient objets Java est un langage vraiment agr able utiliser tous les jours pour r aliser ce type d application Les outils de d veloppement et la documentation sont bien pens s et la qualit des m canismes de gestion d erreurs sont d une aide inqualifiable Les m ta choix tant faits choix des objectifs prioritaires choix du langage cible et choix du langage d implantation il reste d finir les grandes lignes du compilateur repr sentation des r gles et des termes avant d expliquer en d tail comment celui ci a t r alis 4 3 Compilation de la r criture On peut avoir deux approches pour compiler un langage donn La premi re consiste re
435. up rieur A 1 de la sous structure de filtrage AC construite lors de l application r cursive de l algorithme Consid rons par exemple l ensemble de motifs P fac z f a x g a fac f a x f y g b o seul fac est un symbole AC On a Py fac fac et l ensemble des termes limin s est P gt z f a x g a f y g b Cette d composition nous permet de construire la structure de filtrage AC illustr e dans la figure 6 1 Tout comme la construction d un automate de filtrage les tapes pr c dentes d pendent seulement du syst me de r criture et ne sont effectu es qu une fois lors de la phase de compi 86 Chapitre 6 Compilation du filtrage associatif commutatif A N ga fla a f a g b flax f y g b f a a f ag b f a c g b Fic 6 2 Exemples de graphes bipartis associ s aux probl mes de filtrage AC de faclz f a 2 9 a et fac f a x f y g b vers fac f a a f a g b f g c g b g a lation du syst me Mais il faut bien noter que la structure de filtrage AC obtenue n est pas un automate au sens strict il ne suffit pas de parcourir le terme d entr e et d appliquer des r gles de transition d tats pour obtenir l ensemble des motifs qui filtrent le terme La complexit m me des probl mes de filtrage AC et la possibilit d avoir plusieurs solutions pour un motif donn font que l utilisation d une structure de filtrage AC n est qu un moyen
436. us avons consid r un ensemble de mo tifs p1 Dn ayant une m me couche syntaxique sup rieure r duite a fac mais le nombre de symboles composant les couches syntaxiques sup rieures n a aucune importance Il est par contre important de noter que les sommets du graphe biparti compact se composent de l en semble des motifs j apparaissant sous un symbole AC et que tous ces motifs sont des termes syntaxiques Supposons que le motif p appartienne a la classe C2 et qu il soit de la forme fac 1 57 gac x3 247 On a alors pis gac qui est consid r comme un terme syntaxique le calcul des instances des variables 21 172 273 et x4 tant fait dans une phase ult rieure de l al gorithme d crite au paragraphe 6 7 Ces remarques tant faites il est maintenant possible de percevoir les avantages apport s par l utilisation des graphes bipartis compacts leur construction se fait en utilisant uniquement des automates de filtrage syntaxique puisque l appel r cursif de la proc dure de filtrage AC n est plus n cessaire les sous termes 1 8 ne sont filtr s qu une seule fois pour d terminer l ensemble des ar tes E l automate de filtrage qui est many to one est appliqu sur chaque pour d terminer l ensemble des P g qui filtrent Il reste maintenant savoir comment reconstruire les graphes bipartis BG associ s aux motifs p Pour cela il suffit de remarquer que les sommets qui composen
437. utions ont t calcul es un fail est naturellement engendr Cet exemple montre que le m canisme de gestion du non d terminisme est uniforme que ce soit dans le code g n r pour valuer les conditions ou les strat gies par exemple ou que ce soit dans la biblioth que qui n est pas du code g n r Le point important ici est que le m canisme de gestion du non d terminisme est suffisamment clair pour permettre un programmeur d crire des fonctions utilisant les primitives de gestion de points de choix 11 3 Sortes et op rations pr d finies Lorsqu on r alise un interpr teur ou un compilateur il est souvent d licat d implanter les sortes l mentaires builtins pr d finies par le langage de sp cification parce que celles ci doivent s int grer compl tement avec les sortes d finies par l utilisateur Dans le cadre d ELAN qui manipule essentiellement des termes il faut int grer les cha nes de caract res les identifica teurs et les entiers par exemple La difficult est d offrir une implantation qui soit d une efficacit comparable celle offerte par le langage cible Dans ce paragraphe nous proposons d tudier diff rentes fa ons d implanter la sorte l mentaire repr sentant les entiers par exemple Afin d obtenir l implantation la plus efficace une solution naturelle consiste repr senter les entiers d ELAN par les entiers du langage cible le langage C Mais tant donn que les ter
438. variables et les constructeurs sont quant eux repr sent s par des structures de donn es du C il faut bien allouer des morceaux de m moire pour repr senter et m moriser les termes Nous avons pr sent la mani re dont les structures de donn es du langage cible taient traduites Il reste tudier comment les actions sur ces donn es peuvent se traduire en des actions dans le formalisme du langage cible Que deviennent la s lection et l application d une regle par exemple Nous avons choisi de regrouper et de traduire en une seule fonction C les r gles commen ant par un m me symbole de t te voir figure 4 4 Cela implique qu chaque symbole pouvant appara tre en t te du membre gauche d une r gle est associ e une fonction Ces symboles sont dits d finis et les autres sont des constructeurs Le fait d utiliser une strat gie leftmost innermost vite d avoir construire le terme avant d essayer de le r duire car ces deux tapes peuvent tre fusionn es en une seule les termes sont construits en partant des feuilles et chaque fois qu un symbole constructeur appara t une zone de m moire est allou e pour le repr senter Lorsqu un symbole d fini appara t cela signifie que le terme est potentiellement r ductible puisqu il existe au moins une r gle commen ant par ce symbole La fonction associ e ce symbole est alors appel e Son r le consiste d terminer si une r gle peut s appliquer et r dui
439. ver par exemple pour prototyper les id es imagin es long terme cela permettrait de mieux comprendre comment doit se faire l int gration et de proposer une extension du langage ELAN dans laquelle termes r gles strat gies et contraintes seraient parfaitement unifi s tude des m canismes de pr traitement ELAN poss de un m canisme de pr traitement appel pr processeur qui utilise des r gles et des strat gies pour engendrer de nouvelles sp cifications Le passage d une sp cification contenant des constructions du pr processeur une sp cification ne contenant que des expansions de ces constructions est malheureusement assez mal compris Un projet pourrait tre d tudier les liens existant entre le pr processeur et les notions de r flexivit Nous envisageons ainsi de d crire compl tement le comportement du pr processeur en utilisant le formalisme ELAN lui m me L int r t tant d avoir un cadre unifi et de pouvoir raisonner faire des preuves et des v rifications sur des programmes contenant des constructions non expans es valuation des performances d un langage base de r gles Un autre projet relatif au langage de sp cification concerne l tude de m thodes d valuation des performances De plus en plus de syst mes utilisent la r criture comme moyen de calcul pour effectuer des simplifications au sein d un r solveur de contraintes ou d un d monstrateur automatique par exemple Il ex
440. ver un cadre suffisamment g n ral nous ne pouvons pas chapper la construction dynamique de graphes bipartis de substitutions et la maintenance en forme canonique des termes manipul s Ce sont ces caract ristiques qui rendent le processus de normalisation AC difficile compiler au sens generation exclusive de structures de contr le 12 2 valuation des performances Dans cette partie notre objectif est d valuer les apports du compilateur en terme de puis sance et de performance Il est clair que comparer le compilateur avec l interpr teur ELAN ne permet pas d valuer dans l absolu la qualit des algorithmes propos s et leur implantation Cela permet n anmoins de mesurer le chemin parcouru depuis le d but de cette th se ELAN n est ni Fortran ni C ni Java et n est pas une solution tous les probl mes il est cependant intensivement utilis par notre quipe et d autres groupes de recherche travaillant en d duction automatique en r solution de contraintes et sur les langages de sp cification alg brique Divers algorithmes tels que des proc dures d unification d ordre sup rieur des outils de preuve de terminaison ou des r solveurs de contraintes ont t sp cifi s en ELAN et ont montr les limites de notre interpr teur bien que celui ci fasse partie des bons interpr teurs au m me titre qu ASF SDF ou OBJ En illustrant l apport r el des techniques de compilation d velopp es
441. veral implementations of the same algorithm are compared in order to show the potential of the approach The fastest implementation of the N queens solving procedure is implemented in standard C with a recursive function call Two others implementations have been done in C extended with setChoicePoint and fail the first one C Asm use the assembly version of the proposed library and the second one C C use the C version presented in 7 4 1 has been used a position for the current queen is chosen and is not removed from the list of remaining positions The experimental results presented in Figure 7 4 show that the presented approach is as efficient as Mercury But you should not deduce that replacing its backtracking management by the proposed library should improve the efficiency We can only deduce from these benchmarks that the proposed approach is a good compromise between simplicity and efficiency Let us mention that the use of setChoicePoint and fail is not restricted to the implementation of toy examples such as the N queens problem they are intensively used in a more general context related to the compilation of rewriting systems with strategies In this case they are frequently used in generated programs that may consist of several thousands lines of C code 7 6 Concluding Remarks The previous section has shown that setChoicePoint and fail are designed to extend the C language in order to deal in a natural way with problems that involve s
442. vient de la possibilit de d finir des op rateurs infix s la syntaxe des op rateurs est donn e dans une sp cification ELAN elle m me Il faut ainsi construire dynamiquement un analyseur d pendant de ces r gles de grammaire hors contexte pour tre capable de lire et reconna tre la suite de la sp cification C est l algorithme d Earley 1970 qui est utilis pour analyser les morceaux du programme qui d pendent des r gles de grammaire hors contexte Le reste tant analys par un automate g n r par un outil comparable Yacc La partie frontale d ELAN commence se dessiner et s organise autour d une coop ration troite entre l analyseur lexical l automate d analyse syntaxique et l analyseur fond sur l algorithme d Earley La complexit du parseur d ELAN ne s arr te pas l elle doit en effet son existence la pr sence d un pr processeur relativement original Rassurez vous l objectif de cette partie n est pas d expliquer en d tail comment le parseur actuel est implant mais plut t d expliquer son fonctionnement g n ral pour mettre en lumi re les difficult s rencontr es et aider concevoir une nouvelle ar chitecture d environnement de sp cification Dans bon nombre de langages le pr processeur est un outil relativement simple qui intervient avant la phase d analyse pour y effectuer des remplacements purement syntaxiques Le pr proces seur d ELAN ne se limite pas effectuer des rem
443. x 3 y 6 x y 0 d eq 3 x 4 y 7 C x y 0 d eq 3 x 5 y 8 Cx y 0 4 eq 3 x 6 y 9 Cx y 0 4 eq 3 x 7 y OG GG y 1 4 eq 3 x 8 y 164 G G y 104d eq 3 x 9 y 2044 Gx y 1 d eq 4 x 4 y 8 x y 0 4 eq 4 x 5 y 9 x y 0 4 eq 4 x 6 y O x y 1 d eq 4 x 7 y 1 x y 1 d eq 4 x 8 y 2 x y 1 d eq 4 x 9 y 3 x y 1 d eq 5 x 5 y O x y 1 d eq 5 x 6 y 1 x y 1 d eq 5 x 7 y 2 x y 1 d eq 5 x 8 y 3 x y 1 4 eq 5 x 9 y 4 x y 1 a eq 6 x 6 y 2 x y 1 4 eq 6 x 7 y 8 x y 1 4 eq 6 x 8 y 4 Cx y 1 4 eq 6 x 9 y 5 Cx y 1 4 eq 7 x 7 y 4 Cx y 1 4 eq 7 x 8 y 5 Cx y 1 4 A 5 Maude Obj 225 eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq 7 x 9 y 8 x 8 y 8 x 9 y 9 x 9 y multO x multi x mult2 d mult2 0 x mult2 1 x mult2 2 x mult2 3 x mult2 4 x mult2 5 x mult2 6 x mult2 7 x mult2 8 x mult2 9 x mult3 d d mult3 0 x mult3 1 x mult3 2 x
444. x C x C x C x C x CCE C x x C x C x C x C x x C x C x C x C amp C x C x CC C x C x C x Cx C x Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat Nat mult3 mult3 mult3 mult4 mult4 mult4 mult4 mult4 mult4 mult4 mult4 mult4 mult4 mult5 mult5 mult5 mult5 mult5 mult5 mult5 mult5 mult5 mult5 mult6 mult6 mult6 mult6 mult6 mult6 mult6 mult6 mult6 mult6 mult7 mult7 mult7 mult7 mult7 mult7 mult7 mult7 mult7 mult7 7 8 9 0 1 2 a 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 O 1 2 3 4 5 6 7 8 9 x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x 1 4 7 O 4 8 2 6 O 4 8 2 6 CO 5 CO 5 CO 5 O 5 CO 5 O 6 2 8 4 O 6 2 8 4 O 7 4 1 8 5 2 9 6 3
445. x y 2 et fac x y fac y z 22 Chapitre 1 Langage de sp cification ELAN En ELAN de tels op rateurs se d clarent en utilisant l attribut AC Consid rons par exemple la signature d un module d finissant les polyn mes sur les entiers operators global X Variable Y i Variable Variable Poly int Poly Poly Poly Poly assocRight pri 1 AC Poly Poly Poly assocRight pri 2 AC deriv Poly Variable Poly end En utilisant une telle signature les expressions 3 X X 2 X 1 et X 2 1 X 3 X sont des termes de sorte Poly et correspondent au m me polyn me 3X 2X 1 en tant qu objet math ma tique C est gr ce l associativit et la commutativit des op rateurs et que les expressions 3 X X X 3 X et X X 3 correspondent au m me mondme 3X et que les diff rentes possibilit s pour additionner les mon mes 1 2X et 3X m nent toutes au m me r sultat le polyn me 3X 2X 1 Soient s et t deux termes on crit s 4c t pour indiquer qu ils sont gaux modulo les axiomes d associativit et de commutativit En reprenant l exemple pr c dent on a bien 3 X X 2 X 1l sc X x2 1 Xx3xX Nous avons vu que le m canisme d valuation d ELAN repose sur la r criture Cela consiste trouver une r gle dont le membre gauche filtre vers le sujet puis appliquer cette r gle pour construire le terme r duit Mais lorsque le membre gauch
446. y where T mkSet E if not b end end mkSet E L S gt mkSet E S U mkSet L S end end rules for bool L M sequence X E F X S T set X global E in emptyset E in mkSet L end rules for int L sequence X E e K n ni n2 int b bool gt false gt E in L end end 218 Annexe A Programmes utilis s pour effectuer les exp rimentations global card emptyset gt 0 end card mkSet L gt size L end end end module sequence X import global bool int eq X end sort int X sequence X end operators global X sequence X sequence X sequence X sequence X AC elem sequence X X in X sequence X bool size 0 sequence X int end rules for sequence X S sequence X E E1 sequence X global Q E E gt E end end rules for bool S sequencel E F X global E in E gt true end E in E S gt true end E in F S gt false end end rules for int S sequencel E X global size E gt 1 end size E S gt size S 1 end end end module powerset X import global sequence X sequence set X set X set set X end sort set X set set X end operators global P set X set set X A 4 Elan 219 augment set set X set X set set X end rules for set set X S T set X L sequence set X E X EL sequence
447. ymbolInteger permet de repr senter les entiers 1 2 et 3 sont des entiers de la classe SymbolInteger par exemple SymbolIdentifier permet de repr senter les identificateurs Dans le langage les identificateurs correspondent aux suites de caract res alphanum riques a b et plus sont des identificateurs de la classe SymbolIdentifier par exemple SymbolString permet de repr senter les cha nes de caract res Ce sont des suites quelconques de caract res qui commencent et se terminent par des guillemets hello et le r sultat est 3 sont des cha nes de caract res de la classe SymbolString par exemple 150 Chapitre 10 Architecture logicielle e Lexem cette classe abstraite permet de repr senter les unit s lexicales qui sont utilis es pour construire la repr sentation abstraite d un programme REF On peut distinguer dif f rentes sous classes de lex mes LexemChar permet de repr senter un caract re Lexemldentifier permet de repr senter un identificateur LexemModule permet de repr senter un nom de module LexemNum permet de repr senter un entier LexemRuleName permet de repr senter un nom de r gle LexemSort permet de repr senter un nom de sorte LexemStrategyName permet de repr senter un nom de strat gie LexemVariableName permet de repr senter un nom de variable Dans sa version courante le compilateur de REF se compose de 80 classes Java ce qui repr sente 15
448. z where y g x where z s2 x end end Pour r duire le terme f a par exemple une r gle est s lectionn e Imaginons que ce soit la premi re et supposons que l application de la strat gie s1 sur le terme a choue Dans ce cas la deuxi me r gle est essay e et la forme normale du terme g a doit une nouvelle fois tre calcul e Pour viter ce calcul redondant on peut transformer le syst me de la mani re suivante rules for int X y z result global f x gt result where y g x choose try where z s1 x where result r1 z try where z s2 x where result r2 z end end end Ici en cas d chec de la premi re branche la deuxi me est inspect e sans avoir a recalculer la valeur de y 1 5 Op rateurs Associatifs et Commutatifs Une autre caract ristique d ELAN est de permettre au programmeur d utiliser des op rateurs associatifs et commutatifs not s AC Ces op rateurs sont binaires et ont comme premi re particularit de ne pas imposer une place fixe leurs arguments c est la commutativit L autre particularit dit que lorsqu un m me op rateur associatif commutatif apparait plusieurs fois dans une expression il n y a pas de priorit particuli re pour en valuer un plut t qu un autre c est l associativit Plus formellement un symbole fac F est dit associatif commutatif s il satisfait les deux axiomes suivants Vz y z X fac x fac y 2 fac fac

Download Pdf Manuals

image

Related Search

Related Contents

  ASUS NX500 User's Manual  Transition Networks N-GSX32-SC-03  Samsung 730BF Käyttöopas  septembre 2008 - Ville d`Eckbolsheim  LEDアナログ設定PWM調光電源 取扱説明書  Bedienungsanleitung Mode d´emploi Istruzioni operative  

Copyright © All rights reserved.
Failed to retrieve file