Results 1  10
of
10
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
Constructor Equivalent Term Rewriting Systems are Strongly Sequential: a direct proof
 Information Processing Letters
, 1993
"... In [8], Thatte demonstrated the possibility of simulating an orthogonal TRS with a leftlinear constructor system obtained from the original system via a simple transformation. The class of strongly sequential systems (SS) was defined in [3]. In [2], we have defined the class of constructor equivale ..."
Abstract

Cited by 7 (3 self)
 Add to MetaCart
In [8], Thatte demonstrated the possibility of simulating an orthogonal TRS with a leftlinear constructor system obtained from the original system via a simple transformation. The class of strongly sequential systems (SS) was defined in [3]. In [2], we have defined the class of constructor equivalent systems (CE) for which Thatte's transformation preserves strong sequentiality; in that same article, we prove that CE ae SS by showing that CE is a strict subset of the forwardbranching class [7] which is itself a strict subset of SS [1]. In this article, we give a direct proof (i.e. a proof which does not involve the forwardbranching class) of the inclusion CE ae SS. It uses parts of the proof given in [6] for deciding strong sequentiality.
FineGrain Partial Evaluation of Intermediate Code from Equational Programs
, 1991
"... Partial evaluation is greatly simplified if the target language is simple. In [SS90] we define an extremely simple language that is used as an intermediate language for equational programming [O'D85]. Although the intermediate language is a general graph manipulation language, we take advantage ..."
Abstract

Cited by 3 (2 self)
 Add to MetaCart
Partial evaluation is greatly simplified if the target language is simple. In [SS90] we define an extremely simple language that is used as an intermediate language for equational programming [O'D85]. Although the intermediate language is a general graph manipulation language, we take advantage of the particular properties of programs generated from equational programs. For partial evaluation to be successful, we need both a set of transformations that preserve the semantics of the program and a strategy that tells us when to apply a particular transformation. The strategy includes termination criteria to avoid infinite computations. In this paper we concentrate on a set of transformations that preserve the semantics of the program. We also show a small example of how these transformations can be applied to a program in order to improve its execution speed. The strategy, however, is only sketchy at the present time. The complete strategy is left for a future paper. Furthermore, we do n...
Deciding Strong Sequentiality for orthogonal term rewriting systems is in CoNP
, 1995
"... In [KM91], Klop and Middeldorp conjectured that deciding strong sequentiality for orthogonal term rewriting systems is NPComplete. This problem appeared as "Problem 8" in the list of open problems in rewriting published in [DJK91]. In this article we show that the problem is in coNP. If, ..."
Abstract

Cited by 3 (0 self)
 Add to MetaCart
In [KM91], Klop and Middeldorp conjectured that deciding strong sequentiality for orthogonal term rewriting systems is NPComplete. This problem appeared as "Problem 8" in the list of open problems in rewriting published in [DJK91]. In this article we show that the problem is in coNP. If, as we conjecture, the problem is also in NP , this reduces its chances of being NPComplete.
Call Unfolding Strategies for Equational Logic Programs
 In Proceedings of the ACM SIGPLAN Workshop on Partial Evaluation and SemanticsBased Program Manipulation
, 1992
"... For a programming system based on term rewrite rules such as equational logic programming, a serious efficiency problem of the generated code is the creation of terms that only serve to drive further pattern matching. In this paper, we define a terminating call unfolding strategy based on finegrain ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
For a programming system based on term rewrite rules such as equational logic programming, a serious efficiency problem of the generated code is the creation of terms that only serve to drive further pattern matching. In this paper, we define a terminating call unfolding strategy based on finegrain partial evaluation that removes much of this unnecessary term allocation for programs in intermediate EM code generated from equational logic programs. Our approach is based on calculation, for each instruction, of two sets that reflect the usage of registers in finite execution paths of the program. These sets are calculated using fixedpoint iteration over the graph representation of the intermediate code. 1 Introduction Finding call unfolding strategies for partial evaluation is an annoying problem. On the one hand, the basic problem knowing how much unfolding is necessary to expose a particular computation if it occursis undecidable. Nearly any recursive definition can lead to u...
Sharing Common Subexpressions in EM code Programs
, 1990
"... We present a simple method for compiletime detection of opportunities for commonsubterm sharing in termrewriting systems. Our method is a code transformation on EM code, an intermediate language for termrewriting systems based on pattern matching. We demonstrate how appropriate subterm sharing ca ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
(Show Context)
We present a simple method for compiletime detection of opportunities for commonsubterm sharing in termrewriting systems. Our method is a code transformation on EM code, an intermediate language for termrewriting systems based on pattern matching. We demonstrate how appropriate subterm sharing can save an exponential amount of time in certain problems. 1 Introduction One important property of functional programming systems is that if two invocations of a function have identical arguments, the result in both cases will be the same. By saving the result of the computation and reusing it in place of the second invocation of the function, we need not perform the recomputation. The equivalent idea in confluent termrewriting systems is that equivalent terms will be rewritten to the same form, and that this form should be used as the normal form of both original terms and should only be computed once. This is usually accomplished by representing the equivalent terms with the same physica...
Programming with Equations: A Framework for Lazy Parallel Evaluation
 Proceedings of the 11th International Conference on Automated Deduction
, 1992
"... Huet and Levy pioneered lazy sequential evaluation of equational programs based on the concepts of strongsequentiality and needed redexes. Natural extensions of their strategy are not wellsuited for parallel evaluation since they do not support independent searches for needed redexes along diff ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
Huet and Levy pioneered lazy sequential evaluation of equational programs based on the concepts of strongsequentiality and needed redexes. Natural extensions of their strategy are not wellsuited for parallel evaluation since they do not support independent searches for needed redexes along different paths in the input term. Furthermore, the size of compiled code can be exponential in program size. We therefore propose a different notion of sequentiality called pathsequentiality that overcomes these drawbacks and thus provides a natural framework for lazy parallel evaluation. We present a sound and complete algorithm for lazy parallel normalization of pathsequential systems. We show that our algorithm is optimal in the sense that its time complexity is bounded only by the time required to perform the needed reductions. The results presented in this paper are applicable to functional languages as well through the transformation of Laville.
EM code Semantics, Analysis, and Optimization
"... This paper is a complete presentation of EM code, an intermediate code for representing the patternmatching automata produced by the Equational Logic Programming system. We present the abstract syntax and operational and denotational semantics of EM code. We then describe in detail methods for ..."
Abstract
 Add to MetaCart
This paper is a complete presentation of EM code, an intermediate code for representing the patternmatching automata produced by the Equational Logic Programming system. We present the abstract syntax and operational and denotational semantics of EM code. We then describe in detail methods for analysis, optimization, and partial evaluation of EM code programs. This paper is intended as a general reference, and does not assume any prior knowledge of EM code or equational logic programming (except as motivation for reading this paper). Familiarity with termrewriting systems and lazy evaluation is helpful. Contents 1 Introduction 3 2 Abstract Syntax and Operational Semantics 5 2.1 Abstract Machine : : : : : : : : : : : : : : : : : : : : : : : : : : : 5 2.2 Abstract Syntax : : : : : : : : : : : : : : : : : : : : : : : : : : : 7 2.3 Operational Semantics : : : : : : : : : : : : : : : : : : : : : : : : 8 2.3.1 Heap Memory : : : : : : : : : : : : : : : : : : : : : : : : : 8 2.3.2...
Optimization of Equational Programs Using Partial Evaluation
 Proceedings of the ACM SIGPLAN Symposium on Partial Evaluation and SemanticsBased Program Manipulation, SIGPLAN Notices
, 1991
"... We describe an application of partial evaluation to the optimization of Equational Logic programs. Our method treats the righthand sides of reduction rules as partial input to subsequent reduction steps, allowing us to produce specialized forms of the rewriting system that are more efficient in spa ..."
Abstract
 Add to MetaCart
We describe an application of partial evaluation to the optimization of Equational Logic programs. Our method treats the righthand sides of reduction rules as partial input to subsequent reduction steps, allowing us to produce specialized forms of the rewriting system that are more efficient in space and time. Our implementation of Equational Logic Programming compiles source equations into a termrewriting system that is subsequently compiled into assembly code. The termrewriting system is implemented by an intermediate code called EM code, and we perform our program optimizations on this intermediate form. Use of EM code allows us to perform the optimizing transformations with a succinct set of rewrite rules. One interesting feature of our method is that the partial evaluation can be carried out by straightforward generalpurpose program optimizations, and does not require complicated interpreters or semantic analysis. 1 Introduction The traditional rewrite engine of an equatio...