Definitional Trees

Rewriting is a computational paradigm that specifies the actions, but not the control. We introduce a hierarchical structure representing, at a high level of abstraction, a form of control. Its application solves a specific problem arising in the design and implementation of inherently sequential, lazy, functional programming languages based on rewriting. For example, we show how to extend the expressive power of Log(F ) and how to improve the efficiency of an implementation of BABEL. Our framework provides a notion of degree of parallelism of an operation and shows that the elements of a necessary set of redexes are related by an and-or relation. Both concepts find application in parallel implementations of rewriting. In an environment in which computations can be executed in parallel we are able to detect sequential computations in order to minimize overheads and/or optimize execution. Conversely, we are able to detect when inherently sequential computations can be executed in parallel without performing unnecessary rewrites.

[1]  Rita Loogen,et al.  Graph-based Implementation of a Functional Logic Langugage , 1990, ESOP.

[2]  Christoph M. Hoffmann,et al.  Implementation of an interpreter for abstract equations , 1984, POPL '84.

[3]  G Boudol Computational semantics of term rewriting systems , 1986 .

[4]  John C. Reynolds,et al.  Algebraic Methods in Semantics , 1985 .

[5]  Jean-Pierre Jouannaud,et al.  Rewrite Systems , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[6]  Gérard P. Huet,et al.  Confluent Reductions: Abstract Properties and Applications to Term Rewriting Systems , 1980, J. ACM.

[7]  Joseph A. Goguen,et al.  The Rewrite Rule Machine Project , 1989 .

[8]  Jan Willem Klop,et al.  Term Rewriting Systems: From Church-Rosser to Knuth-Bendix and Beyond , 1990, ICALP.

[9]  L. M. G. Feijs,et al.  Implementing algebraic specifications , 1992 .

[10]  Sanjai Narain,et al.  LOG(F): An Optimal Combination of Logic Programming, Rewriting and Lazy Evaluation , 1988 .

[11]  Richard Kennaway Sequential Evaluation Strategies for Parallel-Or and Related Reduction Systems , 1989, Ann. Pure Appl. Log..

[12]  Michael J. O'Donnell,et al.  Computing in systems described by equations , 1977, Lecture Notes in Computer Science.

[13]  Martin Wirsing,et al.  Algebraic Specification , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[14]  Juan José Moreno-Navarro,et al.  Logic Programming with Functions and Predicates: The Language BABEL , 1992, J. Log. Program..

[15]  Sanjai Narain,et al.  Optimization by Non-Deterministic, Lazy Rewriting , 1989, RTA.

[16]  Rita Loogen,et al.  Lazy Narrowing in a Graph Machine , 1990, ALP.

[17]  Sergio Antoy Non-Determinism and Lazy Evaluation in Logic Programming , 1991, LOPSTR.

[18]  Aart Middeldorp,et al.  Sequentiality in Orthogonal Term Rewriting Systems , 1991, J. Symb. Comput..

[19]  Michael J. O'Donnell,et al.  Equational Logic as a Programming Language. , 1987 .

[20]  Sergio Antoy Design Strategies for Rewrite Rules , 1990, CTRS.

[21]  Sanjai Narain,et al.  Lazy evaluation in logic programming , 1990, Proceedings. 1990 International Conference on Computer Languages.

[22]  Claude Kirchner,et al.  Implementing Parallel Rewriting , 1990, PLILP.

[23]  Satish Thatte A Refinement of Strong Sequentiality for Term Rewriting with Constructors , 1987, Inf. Comput..