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 fewer function symbols and fewer 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.[2][3]
The latter variations include:
the multiset path ordering (mpo), originally called recursive path ordering (rpo)[4]
a combination of mpo and lpo, called recursive path ordering by Dershowitz, Jouannaud (1990)[6][7][8]
Dershowitz, Okada (1988) list more variants, and relate them to Ackermann's system of ordinal notations. In particular, an upper bound given on the order types of recursive path orderings with n function symbols is φ(n,0), using Veblen's function for large countable ordinals.[7]
Formal definitions
The multiset path ordering (>) can be defined as follows:[9]
O is continuous on relations, i.e. if R0, R1, R2, R3, ... is an infinite sequence of relations, then O(∪∞ i=0Ri) = ∪∞ i=0O(Ri).
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.
^Mitsuhiro Okada, Adam Steele (1988). "Ordering Structures and the Knuth–Bendix Completion Algorithm". Proc. of the Allerton Conf. on Communication, Control, and Computing.