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