/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. !plus : [o * o] --> o 0 : [] --> o bin : [o * o] --> o s : [o] --> o bin(X, 0) => s(0) bin(0, s(X)) => 0 bin(s(X), s(Y)) => !plus(bin(X, s(Y)), bin(X, Y)) We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): bin(X, 0) >? s(0) bin(0, s(X)) >? 0 bin(s(X), s(Y)) >? !plus(bin(X, s(Y)), bin(X, Y)) about to try horpo We use a recursive path ordering as defined in [Kop12, Chapter 5]. We choose Lex = {} and Mul = {!plus, 0, bin, s}, and the following precedence: bin > !plus > 0 > s With these choices, we have: 1] bin(X, 0) > s(0) because [2], by definition 2] bin*(X, 0) >= s(0) because bin > s and [3], by (Copy) 3] bin*(X, 0) >= 0 because bin > 0, by (Copy) 4] bin(0, s(X)) >= 0 because [5], by (Star) 5] bin*(0, s(X)) >= 0 because bin > 0, by (Copy) 6] bin(s(X), s(Y)) >= !plus(bin(X, s(Y)), bin(X, Y)) because [7], by (Star) 7] bin*(s(X), s(Y)) >= !plus(bin(X, s(Y)), bin(X, Y)) because bin > !plus, [8] and [14], by (Copy) 8] bin*(s(X), s(Y)) >= bin(X, s(Y)) because bin in Mul, [9] and [12], by (Stat) 9] s(X) > X because [10], by definition 10] s*(X) >= X because [11], by (Select) 11] X >= X by (Meta) 12] s(Y) >= s(Y) because s in Mul and [13], by (Fun) 13] Y >= Y by (Meta) 14] bin*(s(X), s(Y)) >= bin(X, Y) because bin in Mul, [15] and [16], by (Stat) 15] s(X) >= X because [10], by (Star) 16] s(Y) > Y because [17], by definition 17] s*(Y) >= Y because [13], by (Select) We can thus remove the following rules: bin(X, 0) => s(0) We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): bin(0, s(X)) >? 0 bin(s(X), s(Y)) >? !plus(bin(X, s(Y)), bin(X, Y)) about to try horpo We use a recursive path ordering as defined in [Kop12, Chapter 5]. We choose Lex = {} and Mul = {!plus, 0, bin, s}, and the following precedence: bin > !plus > 0 > s With these choices, we have: 1] bin(0, s(X)) >= 0 because [2], by (Star) 2] bin*(0, s(X)) >= 0 because bin > 0, by (Copy) 3] bin(s(X), s(Y)) > !plus(bin(X, s(Y)), bin(X, Y)) because [4], by definition 4] bin*(s(X), s(Y)) >= !plus(bin(X, s(Y)), bin(X, Y)) because bin > !plus, [5] and [11], by (Copy) 5] bin*(s(X), s(Y)) >= bin(X, s(Y)) because bin in Mul, [6] and [9], by (Stat) 6] s(X) > X because [7], by definition 7] s*(X) >= X because [8], by (Select) 8] X >= X by (Meta) 9] s(Y) >= s(Y) because s in Mul and [10], by (Fun) 10] Y >= Y by (Meta) 11] bin*(s(X), s(Y)) >= bin(X, Y) because bin in Mul, [6] and [12], by (Stat) 12] s(Y) >= Y because [13], by (Star) 13] s*(Y) >= Y because [10], by (Select) We can thus remove the following rules: bin(s(X), s(Y)) => !plus(bin(X, s(Y)), bin(X, Y)) We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): bin(0, s(X)) >? 0 We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: 0 = 0 bin = \y0y1.3 + 3y0 + 3y1 s = \y0.3 + y0 Using this interpretation, the requirements translate to: [[bin(0, s(_x0))]] = 12 + 3x0 > 0 = [[0]] We can thus remove the following rules: bin(0, s(X)) => 0 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.