/export/starexec/sandbox/solver/bin/starexec_run_FirstOrder /export/starexec/sandbox/benchmark/theBenchmark.xml /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- YES We consider the system theBenchmark. We are asked to determine termination of the following first-order TRS. a : [] --> o a!6220!6220b : [] --> o a!6220!6220f : [o * o * o] --> o b : [] --> o f : [o * o * o] --> o mark : [o] --> o a!6220!6220f(a, X, X) => a!6220!6220f(X, a!6220!6220b, b) a!6220!6220b => a mark(f(X, Y, Z)) => a!6220!6220f(X, mark(Y), Z) mark(b) => a!6220!6220b mark(a) => a a!6220!6220f(X, Y, Z) => f(X, Y, Z) a!6220!6220b => 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]): a!6220!6220f(a, X, X) >? a!6220!6220f(X, a!6220!6220b, b) a!6220!6220b >? a mark(f(X, Y, Z)) >? a!6220!6220f(X, mark(Y), Z) mark(b) >? a!6220!6220b mark(a) >? a a!6220!6220f(X, Y, Z) >? f(X, Y, Z) a!6220!6220b >? b We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: a = 2 a!6220!6220b = 3 a!6220!6220f = \y0y1y2.3 + y1 + 2y0 + 2y2 b = 0 f = \y0y1y2.3 + y0 + y1 + 2y2 mark = \y0.3 + 2y0 Using this interpretation, the requirements translate to: [[a!6220!6220f(a, _x0, _x0)]] = 7 + 3x0 > 6 + 2x0 = [[a!6220!6220f(_x0, a!6220!6220b, b)]] [[a!6220!6220b]] = 3 > 2 = [[a]] [[mark(f(_x0, _x1, _x2))]] = 9 + 2x0 + 2x1 + 4x2 > 6 + 2x0 + 2x1 + 2x2 = [[a!6220!6220f(_x0, mark(_x1), _x2)]] [[mark(b)]] = 3 >= 3 = [[a!6220!6220b]] [[mark(a)]] = 7 > 2 = [[a]] [[a!6220!6220f(_x0, _x1, _x2)]] = 3 + x1 + 2x0 + 2x2 >= 3 + x0 + x1 + 2x2 = [[f(_x0, _x1, _x2)]] [[a!6220!6220b]] = 3 > 0 = [[b]] We can thus remove the following rules: a!6220!6220f(a, X, X) => a!6220!6220f(X, a!6220!6220b, b) a!6220!6220b => a mark(f(X, Y, Z)) => a!6220!6220f(X, mark(Y), Z) mark(a) => a a!6220!6220b => 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]): mark(b) >? a!6220!6220b a!6220!6220f(X, Y, Z) >? f(X, Y, Z) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: a!6220!6220b = 0 a!6220!6220f = \y0y1y2.3 + y0 + y1 + y2 b = 3 f = \y0y1y2.y0 + y1 + y2 mark = \y0.3 + y0 Using this interpretation, the requirements translate to: [[mark(b)]] = 6 > 0 = [[a!6220!6220b]] [[a!6220!6220f(_x0, _x1, _x2)]] = 3 + x0 + x1 + x2 > x0 + x1 + x2 = [[f(_x0, _x1, _x2)]] We can thus remove the following rules: mark(b) => a!6220!6220b a!6220!6220f(X, Y, Z) => f(X, Y, Z) 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.