Results 1  10
of
11
Lazy rewriting on eager machinery
 ACM Transactions on Programming Languages and Systems
, 2000
"... The article introduces a novel notion of lazy rewriting. By annotating argument positions as lazy, redundant rewrite steps are avoided, and the termination behaviour of a term rewriting system can be improved. Some transformations of rewrite rules enable an implementation using the same primitives a ..."
Abstract

Cited by 23 (1 self)
 Add to MetaCart
The article introduces a novel notion of lazy rewriting. By annotating argument positions as lazy, redundant rewrite steps are avoided, and the termination behaviour of a term rewriting system can be improved. Some transformations of rewrite rules enable an implementation using the same primitives as an implementation of eager rewriting. 1
Origin Tracking for HigherOrder Term Rewriting Systems
 PROCEEDINGS OF THE INTERNATIONAL WORKSHOP ON HIGHERORDER ALGEBRA, LOGIC AND TERM REWRITING HOA93
, 1994
"... Origin Tracking is a technique which, in the framework of firstorder term rewriting systems, establishes relations between each subterm t of a normal form and a set of subterms, the origins of t, in the initial term. Origin tracking is based on the notion of residuals. It has been used successfully ..."
Abstract

Cited by 3 (2 self)
 Add to MetaCart
Origin Tracking is a technique which, in the framework of firstorder term rewriting systems, establishes relations between each subterm t of a normal form and a set of subterms, the origins of t, in the initial term. Origin tracking is based on the notion of residuals. It has been used successfully for the generation of error handlers and debuggers from algebraic specifications of programming languages. Recent experiments with the use of higherorder algebraic specifications for the definition of programming languages revealed a need to extend origin tracking for higherorder term rewriting systems. In this paper, we discuss how origin information can be maintained for fij reductions and expansions, during higherorder rewriting. We give a definition of higherorder origin tracking. The suitability of this definition is illustrated with a small, existing specification.
Origin Tracking in Primitive Recursive Schemes
 CONFERENCE PROCEEDINGS COMPUTING SCIENCE IN THE NETHERLANDS CSN'93
, 1993
"... Algebraic specifications of programming languages can be used to generate languagespecific programming support tools. Some of these can be obtained in a straightforward way by executing language specifications as term rewriting systems. More advanced tools can be obtained if the term rewriting ma ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
Algebraic specifications of programming languages can be used to generate languagespecific programming support tools. Some of these can be obtained in a straightforward way by executing language specifications as term rewriting systems. More advanced tools can be obtained if the term rewriting machinery is extended with origin tracking . Origin tracking is a technique which automatically establishes a relation between subterms of the result value (normal form) and their origins , which are subterms of the initial term. For specifications having a syntaxdirected nature, as formalized by the class of socalled primitive recursive schemes, highquality origins can be established. The definition, properties, extensions, and implementation of these socalled syntaxdirected origins are discussed.
Abstract Vicious Circles in Rewriting Systems
"... We continue our study of the difference between Weak Normalisation (WN) and Strong Normalisation (SN). We extend our earlier result that orthogonal TRSs with the property WN do not admit cyclic reductions, into three distinct directions: (i) to the higherorder case, where terms may contain bound va ..."
Abstract
 Add to MetaCart
(Show Context)
We continue our study of the difference between Weak Normalisation (WN) and Strong Normalisation (SN). We extend our earlier result that orthogonal TRSs with the property WN do not admit cyclic reductions, into three distinct directions: (i) to the higherorder case, where terms may contain bound variables, (ii) to the weakly orthogonal case, where rules may have (trivial) conflicts, and (iii) to weak head normalisation (WHN), where terms have head normal forms. By adapting the techniques introduced for each of the three extensions separately, we even are able to show the result generalises to each pair of combinations and to various λcalculi. The combination of all three extensions remains open however.
Four Equivalent Equivalences of Reductions
, 2002
"... Two coinitial reductions in a term rewriting system are said to be equivalent if they perform the same steps, albeit maybe in a di#erent order. We present four characterisations of such a notion of equivalence, based on permutation, standardisation, labelling and projection, respectively. We prove ..."
Abstract
 Add to MetaCart
Two coinitial reductions in a term rewriting system are said to be equivalent if they perform the same steps, albeit maybe in a di#erent order. We present four characterisations of such a notion of equivalence, based on permutation, standardisation, labelling and projection, respectively. We prove that the characterisations all yield the same notion of equivalence, for the class of firstorder leftlinear term rewriting systems. A crucial role in our development is played by the notion of a proof term. 1
Normalisation for Dynamic Pattern Calculi
"... The Pure Pattern Calculus (PPC) [10, 11] extends the λcalculus, as well as the family of algebraic pattern calculi [20, 6, 12], with firstclass patterns i.e. patterns can be passed as arguments, evaluated and returned as results. The notion of matching failure of PPC in [11] not only provides a me ..."
Abstract
 Add to MetaCart
(Show Context)
The Pure Pattern Calculus (PPC) [10, 11] extends the λcalculus, as well as the family of algebraic pattern calculi [20, 6, 12], with firstclass patterns i.e. patterns can be passed as arguments, evaluated and returned as results. The notion of matching failure of PPC in [11] not only provides a mechanism to define functions by pattern matching on cases but also supplies PPC with parallelorlike, nonsequential behaviour. Therefore, devising normalising strategies for PPC to obtain wellbehaved implementations turns out to be challenging. This paper focuses on normalising reduction strategies for PPC. We define a (multistep) strategy and show that it is normalising. The strategy generalises the leftmostoutermost strategy for λcalculus and is strictly finer than paralleloutermost. The normalisation proof is based on the notion of necessary set of redexes, a generalisation of the notion of needed redex encompassing nonsequential reduction systems.
Ensuring the QuasiTermination of Needed Narrowing Computations ⋆
"... We present a characterization of firstorder functional programs which are quasiterminating w.r.t. the symbolic execution mechanism of needed narrowing, i.e., computations in these programs consist of a sequence of finitely many different function calls (up to variable renaming). Quasiterminating p ..."
Abstract
 Add to MetaCart
(Show Context)
We present a characterization of firstorder functional programs which are quasiterminating w.r.t. the symbolic execution mechanism of needed narrowing, i.e., computations in these programs consist of a sequence of finitely many different function calls (up to variable renaming). Quasiterminating programs are particularly useful for program analysis and transformation, since in this context quasitermination often amounts to full termination. Key words: Programming languages, functional programming, formal semantics 1
Implementing χ
, 2004
"... Calculi are used to reason about functional languages from a theoretical perspective. They allows us to make bold statements about programs based on sound and correct deductive methods. Methods of visualization allow us to gain a better understanding of the communication and interaction involved bet ..."
Abstract
 Add to MetaCart
(Show Context)
Calculi are used to reason about functional languages from a theoretical perspective. They allows us to make bold statements about programs based on sound and correct deductive methods. Methods of visualization allow us to gain a better understanding of the communication and interaction involved between processes. Often, graphs are used because of the level of intuition they can bring to a system. A specific type of graph, called a ‘TermGraph ’ is one method of implementing functional programming languages. It has the added benefit of increasing the efficiency of computations through a concept known as sharing. In this report we present the design and implementation of a termgraph rewriting system that implements a higherorder calculus. We evaluate the tool and present the main conclusions of the project. Acknowledgements I would like to thank the following people who have helped throughout the project. First and foremost, Dr. Steffen van Bakel, my supervisor, who not only gave great help and excellent guidance throughout the course of the project, but also kept me motivated through continued enthusiasm and positive feedback on my progress. Professor Chris Hankin, for taking the time to explain concepts I was unsure of, and giving guidance on where to research certain aspects of the project. Alex Summers, for testing the many implementations of the project (and giving insightful feedback).
Software ENgineering Vicious circles in rewriting systems
, 2004
"... CWI is the National Research Institute for Mathematics and Computer Science. It is sponsored by the Netherlands Organization for Scientific Research (NWO). CWI is a founding member of ERCIM, the European Research Consortium for Informatics and Mathematics. CWI's research has a themeoriented st ..."
Abstract
 Add to MetaCart
(Show Context)
CWI is the National Research Institute for Mathematics and Computer Science. It is sponsored by the Netherlands Organization for Scientific Research (NWO). CWI is a founding member of ERCIM, the European Research Consortium for Informatics and Mathematics. CWI's research has a themeoriented structure and is grouped into four clusters. Listed below are the names of the clusters and in parentheses their acronyms.