We consider the system 446. Alphabet: a : [] --> o f : [o -> o] --> o g : [o] --> o h : [o * o] --> o Rules: f(/\x.X(x)) => X(X(a)) g(X) => h(X, X) 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(/\x.X(x)) >? X(X(a)) g(X) >? h(X, X) We use a recursive path ordering as defined in [Kop12, Chapter 5]. Argument functions: [[a]] = _|_ We choose Lex = {} and Mul = {f, g, h}, and the following precedence: g > f > h Taking the argument function into account, and fixing the greater / greater equal choices, the constraints can be denoted as follows: f(/\x.X(x)) > X(X(_|_)) g(X) >= h(X, X) With these choices, we have: 1] f(/\x.X(x)) > X(X(_|_)) because [2], by definition 2] f*(/\x.X(x)) >= X(X(_|_)) because [3], by (Select) 3] X(f*(/\x.X(x))) >= X(X(_|_)) because [4], by (Meta) 4] f*(/\x.X(x)) >= X(_|_) because [5], by (Select) 5] X(f*(/\x.X(x))) >= X(_|_) because [6], by (Meta) 6] f*(/\x.X(x)) >= _|_ by (Bot) 7] g(X) >= h(X, X) because [8], by (Star) 8] g*(X) >= h(X, X) because g > h, [9] and [9], by (Copy) 9] g*(X) >= X because [10], by (Select) 10] X >= X by (Meta) We can thus remove the following rules: f(/\x.X(x)) => X(X(a)) We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): g(X) >? h(X, X) We use a recursive path ordering as defined in [Kop12, Chapter 5]. We choose Lex = {} and Mul = {g, h}, and the following precedence: g > h With these choices, we have: 1] g(X) > h(X, X) because [2], by definition 2] g*(X) >= h(X, X) because g > h, [3] and [3], by (Copy) 3] g*(X) >= X because [4], by (Select) 4] X >= X by (Meta) We can thus remove the following rules: g(X) => h(X, 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.