/export/starexec/sandbox2/solver/bin/starexec_run_FirstOrder /export/starexec/sandbox2/benchmark/theBenchmark.xml /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES We consider the system theBenchmark. We are asked to determine termination of the following first-order TRS. a : [] --> o activate : [o] --> o c : [o] --> o f : [o] --> o g : [o] --> o n!6220!6220a : [] --> o n!6220!6220f : [o] --> o n!6220!6220g : [o] --> o f(f(a)) => c(n!6220!6220f(n!6220!6220g(n!6220!6220f(n!6220!6220a)))) f(X) => n!6220!6220f(X) g(X) => n!6220!6220g(X) a => n!6220!6220a activate(n!6220!6220f(X)) => f(activate(X)) activate(n!6220!6220g(X)) => g(activate(X)) activate(n!6220!6220a) => a activate(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(f(a)) >? c(n!6220!6220f(n!6220!6220g(n!6220!6220f(n!6220!6220a)))) f(X) >? n!6220!6220f(X) g(X) >? n!6220!6220g(X) a >? n!6220!6220a activate(n!6220!6220f(X)) >? f(activate(X)) activate(n!6220!6220g(X)) >? g(activate(X)) activate(n!6220!6220a) >? a activate(X) >? X We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: a = 0 activate = \y0.1 + 2y0 c = \y0.y0 f = \y0.y0 g = \y0.y0 n!6220!6220a = 0 n!6220!6220f = \y0.y0 n!6220!6220g = \y0.y0 Using this interpretation, the requirements translate to: [[f(f(a))]] = 0 >= 0 = [[c(n!6220!6220f(n!6220!6220g(n!6220!6220f(n!6220!6220a))))]] [[f(_x0)]] = x0 >= x0 = [[n!6220!6220f(_x0)]] [[g(_x0)]] = x0 >= x0 = [[n!6220!6220g(_x0)]] [[a]] = 0 >= 0 = [[n!6220!6220a]] [[activate(n!6220!6220f(_x0))]] = 1 + 2x0 >= 1 + 2x0 = [[f(activate(_x0))]] [[activate(n!6220!6220g(_x0))]] = 1 + 2x0 >= 1 + 2x0 = [[g(activate(_x0))]] [[activate(n!6220!6220a)]] = 1 > 0 = [[a]] [[activate(_x0)]] = 1 + 2x0 > x0 = [[_x0]] We can thus remove the following rules: activate(n!6220!6220a) => a activate(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(f(a)) >? c(n!6220!6220f(n!6220!6220g(n!6220!6220f(n!6220!6220a)))) f(X) >? n!6220!6220f(X) g(X) >? n!6220!6220g(X) a >? n!6220!6220a activate(n!6220!6220f(X)) >? f(activate(X)) activate(n!6220!6220g(X)) >? g(activate(X)) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: a = 3 activate = \y0.y0 c = \y0.y0 f = \y0.y0 g = \y0.2y0 n!6220!6220a = 0 n!6220!6220f = \y0.y0 n!6220!6220g = \y0.2y0 Using this interpretation, the requirements translate to: [[f(f(a))]] = 3 > 0 = [[c(n!6220!6220f(n!6220!6220g(n!6220!6220f(n!6220!6220a))))]] [[f(_x0)]] = x0 >= x0 = [[n!6220!6220f(_x0)]] [[g(_x0)]] = 2x0 >= 2x0 = [[n!6220!6220g(_x0)]] [[a]] = 3 > 0 = [[n!6220!6220a]] [[activate(n!6220!6220f(_x0))]] = x0 >= x0 = [[f(activate(_x0))]] [[activate(n!6220!6220g(_x0))]] = 2x0 >= 2x0 = [[g(activate(_x0))]] We can thus remove the following rules: f(f(a)) => c(n!6220!6220f(n!6220!6220g(n!6220!6220f(n!6220!6220a)))) a => n!6220!6220a 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) >? n!6220!6220f(X) g(X) >? n!6220!6220g(X) activate(n!6220!6220f(X)) >? f(activate(X)) activate(n!6220!6220g(X)) >? g(activate(X)) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: activate = \y0.2y0 f = \y0.y0 g = \y0.1 + 2y0 n!6220!6220f = \y0.y0 n!6220!6220g = \y0.1 + 2y0 Using this interpretation, the requirements translate to: [[f(_x0)]] = x0 >= x0 = [[n!6220!6220f(_x0)]] [[g(_x0)]] = 1 + 2x0 >= 1 + 2x0 = [[n!6220!6220g(_x0)]] [[activate(n!6220!6220f(_x0))]] = 2x0 >= 2x0 = [[f(activate(_x0))]] [[activate(n!6220!6220g(_x0))]] = 2 + 4x0 > 1 + 4x0 = [[g(activate(_x0))]] We can thus remove the following rules: activate(n!6220!6220g(X)) => g(activate(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) >? n!6220!6220f(X) g(X) >? n!6220!6220g(X) activate(n!6220!6220f(X)) >? f(activate(X)) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: activate = \y0.y0 f = \y0.y0 g = \y0.3 + y0 n!6220!6220f = \y0.y0 n!6220!6220g = \y0.y0 Using this interpretation, the requirements translate to: [[f(_x0)]] = x0 >= x0 = [[n!6220!6220f(_x0)]] [[g(_x0)]] = 3 + x0 > x0 = [[n!6220!6220g(_x0)]] [[activate(n!6220!6220f(_x0))]] = x0 >= x0 = [[f(activate(_x0))]] We can thus remove the following rules: g(X) => n!6220!6220g(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) >? n!6220!6220f(X) activate(n!6220!6220f(X)) >? f(activate(X)) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: activate = \y0.2y0 f = \y0.3 + 2y0 n!6220!6220f = \y0.2 + 2y0 Using this interpretation, the requirements translate to: [[f(_x0)]] = 3 + 2x0 > 2 + 2x0 = [[n!6220!6220f(_x0)]] [[activate(n!6220!6220f(_x0))]] = 4 + 4x0 > 3 + 4x0 = [[f(activate(_x0))]] We can thus remove the following rules: f(X) => n!6220!6220f(X) activate(n!6220!6220f(X)) => f(activate(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.