0.00/0.32 YES 0.00/0.32 We consider the system theBenchmark. 0.00/0.32 0.00/0.32 Alphabet: 0.00/0.32 0.00/0.32 comp : [a -> a * a -> a] --> a -> a 0.00/0.32 twice : [a -> a] --> a -> a 0.00/0.32 0.00/0.32 Rules: 0.00/0.32 0.00/0.32 comp(f, g) x => f (g x) 0.00/0.32 twice(f) => comp(f, f) 0.00/0.32 0.00/0.32 This AFS is converted to an AFSM simply by replacing all free variables by meta-variables (with arity 0). 0.00/0.32 0.00/0.32 We use rule removal, following [Kop12, Theorem 2.23]. 0.00/0.32 0.00/0.32 This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): 0.00/0.32 0.00/0.32 comp(F, G) X >? F (G X) 0.00/0.32 twice(F) >? comp(F, F) 0.00/0.32 0.00/0.32 We use a recursive path ordering as defined in [Kop12, Chapter 5]. 0.00/0.32 0.00/0.32 We choose Lex = {} and Mul = {@_{o -> o}, comp, twice}, and the following precedence: twice > comp > @_{o -> o} 0.00/0.32 0.00/0.32 With these choices, we have: 0.00/0.32 0.00/0.32 1] @_{o -> o}(comp(F, G), X) >= @_{o -> o}(F, @_{o -> o}(G, X)) because [2], by (Star) 0.00/0.32 2] @_{o -> o}*(comp(F, G), X) >= @_{o -> o}(F, @_{o -> o}(G, X)) because [3], by (Select) 0.00/0.32 3] comp(F, G) @_{o -> o}*(comp(F, G), X) >= @_{o -> o}(F, @_{o -> o}(G, X)) because [4] 0.00/0.32 4] comp*(F, G, @_{o -> o}*(comp(F, G), X)) >= @_{o -> o}(F, @_{o -> o}(G, X)) because comp > @_{o -> o}, [5] and [7], by (Copy) 0.00/0.32 5] comp*(F, G, @_{o -> o}*(comp(F, G), X)) >= F because [6], by (Select) 0.00/0.32 6] F >= F by (Meta) 0.00/0.32 7] comp*(F, G, @_{o -> o}*(comp(F, G), X)) >= @_{o -> o}(G, X) because comp > @_{o -> o}, [8] and [10], by (Copy) 0.00/0.32 8] comp*(F, G, @_{o -> o}*(comp(F, G), X)) >= G because [9], by (Select) 0.00/0.32 9] G >= G by (Meta) 0.00/0.32 10] comp*(F, G, @_{o -> o}*(comp(F, G), X)) >= X because [11], by (Select) 0.00/0.32 11] @_{o -> o}*(comp(F, G), X) >= X because [12], by (Select) 0.00/0.32 12] X >= X by (Meta) 0.00/0.32 0.00/0.32 13] twice(F) > comp(F, F) because [14], by definition 0.00/0.32 14] twice*(F) >= comp(F, F) because twice > comp, [15] and [15], by (Copy) 0.00/0.32 15] twice*(F) >= F because [16], by (Select) 0.00/0.32 16] F >= F by (Meta) 0.00/0.32 0.00/0.32 We can thus remove the following rules: 0.00/0.32 0.00/0.32 twice(F) => comp(F, F) 0.00/0.32 0.00/0.32 We use rule removal, following [Kop12, Theorem 2.23]. 0.00/0.32 0.00/0.32 This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): 0.00/0.32 0.00/0.32 comp(F, G, X) >? F (G X) 0.00/0.32 0.00/0.32 We use a recursive path ordering as defined in [Kop12, Chapter 5]. 0.00/0.32 0.00/0.32 We choose Lex = {} and Mul = {@_{o -> o}, comp}, and the following precedence: comp > @_{o -> o} 0.00/0.32 0.00/0.32 With these choices, we have: 0.00/0.32 0.00/0.32 1] comp(F, G, X) > @_{o -> o}(F, @_{o -> o}(G, X)) because [2], by definition 0.00/0.32 2] comp*(F, G, X) >= @_{o -> o}(F, @_{o -> o}(G, X)) because comp > @_{o -> o}, [3] and [5], by (Copy) 0.00/0.32 3] comp*(F, G, X) >= F because [4], by (Select) 0.00/0.32 4] F >= F by (Meta) 0.00/0.32 5] comp*(F, G, X) >= @_{o -> o}(G, X) because comp > @_{o -> o}, [6] and [8], by (Copy) 0.00/0.32 6] comp*(F, G, X) >= G because [7], by (Select) 0.00/0.32 7] G >= G by (Meta) 0.00/0.32 8] comp*(F, G, X) >= X because [9], by (Select) 0.00/0.32 9] X >= X by (Meta) 0.00/0.32 0.00/0.32 We can thus remove the following rules: 0.00/0.32 0.00/0.32 comp(F, G, X) => F (G X) 0.00/0.32 0.00/0.32 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. 0.00/0.32 0.00/0.32 0.00/0.32 +++ Citations +++ 0.00/0.32 0.00/0.32 [Kop12] C. Kop. Higher Order Termination. PhD Thesis, 2012. 0.00/0.32 EOF