Deenitional Trees

Rewriting is a computational paradigm that speciies 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 speciic 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 eeciency 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 nd 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]  Michael J. O'Donnell,et al.  Computing in systems described by equations , 1977, Lecture Notes in Computer Science.

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

[3]  Michael J. O'Donnell,et al.  Equational Logic as a Programming Language , 1985, Logic of Programs.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[18]  I. V. Ramakrishnan,et al.  Programming in equational logic: beyond strong sequentiality , 1990, [1990] Proceedings. Fifth Annual IEEE Symposium on Logic in Computer Science.

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