{"title":"BURG, IBURG, WBURG, GBURG: so many trees to rewrite, so little time (invited talk)","authors":"Todd A. Proebsting","doi":"10.1145/570186.570191","DOIUrl":"https://doi.org/10.1145/570186.570191","url":null,"abstract":"Tree-rewriting systems represent an excellent rule-based solution for many problems. Code-generator generators that rely on bottom-up tree parsing have automated one of the tasks of producing a retargetable compiler. BURG, IBURG, etc., represent general-purpose bottom-up tree-parsing systems that have been used extensively in compiler development. In this talk, I will give an overview of the algorithms behind these tools and compare their relative strengths. In addition, I will summarize the challenges faced trying to get these tools adopted in production compilers.","PeriodicalId":372177,"journal":{"name":"International Workshop on Rule-Based Programming","volume":"63 2","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-10-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"120979348","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Pattern-matching and rewriting rules for group indexed data structures","authors":"Jean-Louis Giavitto, Olivier Michel","doi":"10.1145/570186.570192","DOIUrl":"https://doi.org/10.1145/570186.570192","url":null,"abstract":"In this paper, we present a new framework for the definition of various data structures (including trees and arrays) together with a generic language of filters enabling a rule-based programming style of functions. This framework is implemented in an experimental language called MGS. The underlying notions funding our framework have a topological nature and make possible to extend the case-based definition of functions found in modern functional languages beyond algebraic data structures.","PeriodicalId":372177,"journal":{"name":"International Workshop on Rule-Based Programming","volume":"14 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-10-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133751061","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"On implementing behavioral rewriting","authors":"Grigore Roşu","doi":"10.1145/570186.570190","DOIUrl":"https://doi.org/10.1145/570186.570190","url":null,"abstract":"Behavioral specification is an important algebraic method in software technology. A subtle aspect of behavioral specification is that operations may not be compatible with the behavioral (or observational) equivalence, meaning that the typical congruence inference rule may not be sound and, implicitly, that standard term rewriting cannot be used as is to execute behavioral specifications. Behavioral rewriting is an appropriate generalization of term rewriting which is already internally implemented in two behavioral specification and verification systems, CafeOBJ and BOBJ. In this paper we propose two alternative solutions to implement behavioral rewriting, on top of almost any standard term rewriting system, without modifying it internally.","PeriodicalId":372177,"journal":{"name":"International Workshop on Rule-Based Programming","volume":"11 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-10-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125341585","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Simple termination of context-sensitive rewriting","authors":"B. Gramlich, Salvador Lucas","doi":"10.1145/570186.570189","DOIUrl":"https://doi.org/10.1145/570186.570189","url":null,"abstract":"Simple termination is the (often indirect) basis of most existing automatic techniques for proving termination of rule-based programs (e.g., Knuth-Bendix, polynomial, or recursive path orderings, but also DP-simple termination, etc.). An interesting framework for such programs is context-sensitive rewriting (CSR) that provides a bridge between the abstract world of general rewriting and the (more) applied setting of declarative specification and programming languages (e.g., OBJ*, CafeOBJ, ELAN, and Maude). In these languages, certain replacement restrictions can be specified in programs by the so-called strategy annotations. They may significantly improve the computational properties of programs, especially regarding their termination behaviour. Context-sensitive rewriting techniques (in particular, the methods for proving termination of CSR) have been proved useful for analyzing the properties of these programs. This entails the need to provide implementable methods for proving termination of CSR. Simplification orderings (corresponding to the notion of simple termination) which are well-known in term rewriting (and have nice properties) are, then, natural candidates for such an attempt. In this paper we introduce and investigate a corresponding notion of simple termination of CSR. We prove that our notion actually provides a unifying framework for proving termination of CSR by using standard simplification orderings via the existing (transformational) methods, and also covers CSRPO, a very recent proposal that extends the recursive path ordering (RPO) (a well-known simplification ordering) to context-sensitive terms. We also introduce polynomial orderings for dealing with (simple) termination of CSR. Finally, we also give criteria for the modularity of simple termination, for the case of disjoint unions as well as for constructor-sharing rewrite systems.","PeriodicalId":372177,"journal":{"name":"International Workshop on Rule-Based Programming","volume":"5 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-10-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133385148","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Some prolog macros for rule-based programming: why? how?","authors":"T. Menzies, Lindsay Mason","doi":"10.1145/570186.570194","DOIUrl":"https://doi.org/10.1145/570186.570194","url":null,"abstract":"The history, benefits, and drawbacks to pure rule-based programming is discussed. A simple extension to pure rule-based programming is described. The extensions are very quick to code and can be easily customized to support a range of knowledge engineering applications.","PeriodicalId":372177,"journal":{"name":"International Workshop on Rule-Based Programming","volume":"5 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-10-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129576305","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Design patterns for functional strategic programming","authors":"R. Lämmel, Joost Visser","doi":"10.1145/570186.570187","DOIUrl":"https://doi.org/10.1145/570186.570187","url":null,"abstract":"We believe that design patterns can be an effective means of consolidating and communicating program construction expertise for functional programming, just as they have proven to be in object-oriented programming. The emergence of combinator libraries that develop a specific domain or programming idiom has intensified, rather than reduced, the need for design patterns.In previous work, we introduced the fundamentals and a supporting combinator library for functional strategic programming. This is an idiom for (general purpose) generic programming based on the notion of a functional strategy: a first-class generic function that can not only be applied to terms of any type, but which also allows generic traversal into subterms and can be customised with type-specific behaviour.This paper seeks to provide practising functional programmers with pragmatic guidance in crafting their own generic programs using functional strategies. To this end, we propose a novel description format for functional design patterns, and we initiate a catalogue of strategy design patterns. These design patterns aim at consolidating strategic programming expertise in accessible form.","PeriodicalId":372177,"journal":{"name":"International Workshop on Rule-Based Programming","volume":"72 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-04-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130745178","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Towards generic refactoring","authors":"R. Lämmel","doi":"10.1145/570186.570188","DOIUrl":"https://doi.org/10.1145/570186.570188","url":null,"abstract":"We define a challenging and meaningful benchmark for genericity in language processing, namely the notion of generic program refactoring. We provide the first implementation of the benchmark based on functional strategic programming in Haskell. We use the basic refactoring of abstraction extraction as the running example. Our implementation comes as a functional programming framework with hot spots for the language-specific ingredients for refactoring, e.g., means for abstraction construction and destruction, and recognisers for name analysis. The language-parametric framework can be instantiated for various, rather different languages, e.g., Java, Prolog, Haskell, or XML schema.","PeriodicalId":372177,"journal":{"name":"International Workshop on Rule-Based Programming","volume":"46 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-03-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133557630","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}