Path ordering
editIn theoretical computer science, in particular in term rewriting, a path ordering is a strict well-founded strict total order (>) on the set of all terms such that
- f(...) > g(s1,...,sn) if f .> g and f(...) > si for i=1,...,n,
where (.>) is a user-given total precedence order on the set of all function symbols.
Intuitively, a term f(...) is bigger than any term g(...) built from terms si smaller than f(...) using a lower-precedence root symbol g. In particular, by structural induction, a term f(...) is bigger than any term containing only symbols smaller than f.
A path ordering is often used as reduction ordering in term rewriting, in particular in the Knuth–Bendix completion algorithm. As an example, a term rewriting system for "multiplying out" mathematical expressions could contain a rule x*(y+z) → (x*y) + (x*z). In order to prove termination, a reduction ordering (>) must be found with respect to which the term x*(y+z) is greater than the term (x*y)+(x*z). This is not trivial, since the former term contains both less function symbols and less variables than the latter. However, setting the precedence (*) .> (+), a path ordering can be used, since both x*(y+z) > x*y and x*(y+z) > x*z is easy to achieve.
Given two terms s and t, with a root symbol f and g, respectively, to decide their relation their root symbols are compared first.
- If f <. g, then s can dominate t only if one of s's subterms does.
- If f .> g, then s dominates t if s dominates each of t's subterms.
- If f = g, then the immediate subterms of s and t need to be compared recursively. Depending on the particular method, different variations of path orderings exist.[1][2]
The latter variations include:
- the multiset path ordering (mpo), originally called recursive path ordering (rpo)[3]
- the lexicographic path ordering (lpo)[4]
- a combination of mpo and lpo, called recursive path ordering by Dershowitz, Jouannaud (1990)[5][6][7]
Dershowitz, Okada (1988) list more variants, and relate them to Ackermann's system of ordinals.
Formal definitions
editAs an auxiliary notion, define an order functional to be a function O mapping an ordering to another one, and satisfying the following properties:[8]
- If (>) is transitive, then so is O(>).
- If (>) is irreflexive, then so is O(>).
- If s > t, then f(...,s,...) O(>) f(...,t,...).
- O is continuous on relations, i.e. if R0, R1, R2, R3, ... is an infinite sequence of relations, then O(∪∞
i=0 Ri) = ∪∞
i=0 O(Ri).
The most general rpo version in use is called recursive path ordering with status, due to Lescanne (1983).[9][10] It is parametrized by
- a well-quasi-ordering (.>) on function symbols, and
- an order functional Of for each function symbol f.
The recursive path ordering with status is defined recursively as follows: Define s = f(s1,...,sm) > t = g(t1,...,tn) if
- f .> g and s > tj for each j∈{1,...,n}, or
- si > t or si = t for some i∈{1,...,m}, or
- f .= g and s O(>) t.
where
- { s1,...,sm } denotes the multiset of s’s subterms, similar for t, and
- (>>) denotes the multiset extension of (>), defined by { s1,...,sm } >> { t1,...,tn } if { t1,...,tn } can be obtained from { s1,...,sm }
- by deleting at least one element, or
- by replacing an element by a multiset of strictly smaller (w.r.t. the mpo) elements.[11]
The multiset extension, mapping (>) above to (>>) above is one example of an order functional: (>>)=O(>). Another order functional is the lexicographic extension, leading to the lexicographic path ordering.
References
edit- ^ N. Dershowitz, J.-P. Jouannaud (1990). Jan van Leeuwen (ed.). Rewrite Systems. Handbook of Theoretical Computer Science. Vol. B. Elsevier. pp. 243–320. Here: sect.5.3, p.275
- ^ Gerard Huet (May 1986). Formal Structures for Computation and Deduction. International Summer School on Logic of Programming and Calculi of Discrete Design.
{{cite book}}
: CS1 maint: date and year (link) Here: chapter 4, p.55-64 - ^ N. Dershowitz (1982). "Orderings for Term-Rewriting Systems" (PDF). Theoret. Comput. Sci. 17 (3): 279–301. doi:10.1016/0304-3975(82)90026-3.
- ^ S. Kamin, J.-J. Levy (1980). Two Generalizations of the Recursive Path Ordering (Technical report). Univ. of Illinois, Urbana/IL.
- ^ Kamin, Levy (1980)
- ^ N. Dershowitz, M. Okada (1988). "Proof-Theoretic Techniques for Term Rewriting Theory". Proc. 3rd IEEE Symp. on Logic in Computer Science (PDF). pp. 104–111.
- ^ Mitsuhiro Okada, Adam Steele (1988). "Ordering Structures and the Knuth–Bendix Completion Algorithm". Proc. of the Allerton Conf. on Communication, Control, and Computing.
- ^ Huet (1986), sect.4.3, p. 58
- ^ Pierre Lescanne (1983). "Computer Experiments with the REVE Term Rewriting System Generator". Proc. 10th ACM Symp. on Principles of Programming Languages (POPL) (PDF). ACM. pp. 99–108.
- ^ Solange Coupet-Grimal, William Delobel (2006). A Constructive Axiomatization of the Recursive Path Ordering (PDF) (Technical report). Laboratoire d'Informatique Fondamentale de Marseille (LIF). p. 15. 28-2006.
{{cite tech report}}
: Unknown parameter|month=
ignored (help) - ^ Huet (1986), sect.4.1.3, p.56