We consider the system 453. Alphabet: a : [] --> o b : [] --> o c : [] --> o f : [o * o] --> o Rules: f(a, X) => f(b, X) a => b b => c We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): f(a, X) >? f(b, X) a >? b b >? c We use a recursive path ordering as defined in [Kop12, Chapter 5]. Argument functions: [[b]] = _|_ [[c]] = _|_ We choose Lex = {} and Mul = {a, f}, and the following precedence: a > f Taking the argument function into account, and fixing the greater / greater equal choices, the constraints can be denoted as follows: f(a, X) >= f(_|_, X) a > _|_ _|_ >= _|_ With these choices, we have: 1] f(a, X) >= f(_|_, X) because f in Mul, [2] and [3], by (Fun) 2] a >= _|_ by (Bot) 3] X >= X by (Meta) 4] a > _|_ because [5], by definition 5] a* >= _|_ by (Bot) 6] _|_ >= _|_ by (Bot) We can thus remove the following rules: a => b We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): f(a, X) >? f(b, X) b >? c We use a recursive path ordering as defined in [Kop12, Chapter 5]. Argument functions: [[c]] = _|_ We choose Lex = {} and Mul = {a, b, f}, and the following precedence: a > b > f Taking the argument function into account, and fixing the greater / greater equal choices, the constraints can be denoted as follows: f(a, X) >= f(b, X) b > _|_ With these choices, we have: 1] f(a, X) >= f(b, X) because [2], by (Star) 2] f*(a, X) >= f(b, X) because f in Mul, [3] and [5], by (Stat) 3] a > b because [4], by definition 4] a* >= b because a > b, by (Copy) 5] X >= X by (Meta) 6] b > _|_ because [7], by definition 7] b* >= _|_ by (Bot) We can thus remove the following rules: b => c We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): f(a, X) >? f(b, X) We use a recursive path ordering as defined in [Kop12, Chapter 5]. Argument functions: [[b]] = _|_ [[f(x_1, x_2)]] = f(x_2, x_1) We choose Lex = {f} and Mul = {a}, and the following precedence: f > a Taking the argument function into account, and fixing the greater / greater equal choices, the constraints can be denoted as follows: f(a, X) > f(_|_, X) With these choices, we have: 1] f(a, X) > f(_|_, X) because [2], by definition 2] f*(a, X) >= f(_|_, X) because [3], [5], [6] and [7], by (Stat) 3] a > _|_ because [4], by definition 4] a* >= _|_ by (Bot) 5] X >= X by (Meta) 6] f*(a, X) >= _|_ by (Bot) 7] f*(a, X) >= X because [5], by (Select) We can thus remove the following rules: f(a, X) => f(b, X) All rules were succesfully removed. Thus, termination of the original system has been reduced to termination of the beta-rule, which is well-known to hold. +++ Citations +++ [Kop12] C. Kop. Higher Order Termination. PhD Thesis, 2012.