/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. !colon : [o * o] --> o e : [] --> o i : [o] --> o !colon(X, X) => e !colon(X, e) => X i(!colon(X, Y)) => !colon(Y, X) !colon(!colon(X, Y), Z) => !colon(X, !colon(Z, i(Y))) !colon(e, X) => i(X) i(i(X)) => X i(e) => e !colon(X, !colon(Y, i(X))) => i(Y) !colon(X, !colon(Y, !colon(i(X), Z))) => !colon(i(Z), Y) !colon(i(X), !colon(Y, X)) => i(Y) !colon(i(X), !colon(Y, !colon(X, Z))) => !colon(i(Z), 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]): !colon(X, X) >? e !colon(X, e) >? X i(!colon(X, Y)) >? !colon(Y, X) !colon(!colon(X, Y), Z) >? !colon(X, !colon(Z, i(Y))) !colon(e, X) >? i(X) i(i(X)) >? X i(e) >? e !colon(X, !colon(Y, i(X))) >? i(Y) !colon(X, !colon(Y, !colon(i(X), Z))) >? !colon(i(Z), Y) !colon(i(X), !colon(Y, X)) >? i(Y) !colon(i(X), !colon(Y, !colon(X, Z))) >? !colon(i(Z), Y) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: !colon = \y0y1.1 + y0 + y1 e = 0 i = \y0.y0 Using this interpretation, the requirements translate to: [[!colon(_x0, _x0)]] = 1 + 2x0 > 0 = [[e]] [[!colon(_x0, e)]] = 1 + x0 > x0 = [[_x0]] [[i(!colon(_x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[!colon(_x1, _x0)]] [[!colon(!colon(_x0, _x1), _x2)]] = 2 + x0 + x1 + x2 >= 2 + x0 + x1 + x2 = [[!colon(_x0, !colon(_x2, i(_x1)))]] [[!colon(e, _x0)]] = 1 + x0 > x0 = [[i(_x0)]] [[i(i(_x0))]] = x0 >= x0 = [[_x0]] [[i(e)]] = 0 >= 0 = [[e]] [[!colon(_x0, !colon(_x1, i(_x0)))]] = 2 + x1 + 2x0 > x1 = [[i(_x1)]] [[!colon(_x0, !colon(_x1, !colon(i(_x0), _x2)))]] = 3 + x1 + x2 + 2x0 > 1 + x1 + x2 = [[!colon(i(_x2), _x1)]] [[!colon(i(_x0), !colon(_x1, _x0))]] = 2 + x1 + 2x0 > x1 = [[i(_x1)]] [[!colon(i(_x0), !colon(_x1, !colon(_x0, _x2)))]] = 3 + x1 + x2 + 2x0 > 1 + x1 + x2 = [[!colon(i(_x2), _x1)]] We can thus remove the following rules: !colon(X, X) => e !colon(X, e) => X !colon(e, X) => i(X) !colon(X, !colon(Y, i(X))) => i(Y) !colon(X, !colon(Y, !colon(i(X), Z))) => !colon(i(Z), Y) !colon(i(X), !colon(Y, X)) => i(Y) !colon(i(X), !colon(Y, !colon(X, Z))) => !colon(i(Z), Y) We use the dependency pair framework as described in [Kop12, Ch. 6/7], with static dependency pairs (see [KusIsoSakBla09] and the adaptation for AFSMs in [Kop12, Ch. 7.8]). We thus obtain the following dependency pair problem (P_0, R_0, minimal, formative): Dependency Pairs P_0: 0] i#(!colon(X, Y)) =#> !colon#(Y, X) 1] !colon#(!colon(X, Y), Z) =#> !colon#(X, !colon(Z, i(Y))) 2] !colon#(!colon(X, Y), Z) =#> !colon#(Z, i(Y)) 3] !colon#(!colon(X, Y), Z) =#> i#(Y) Rules R_0: i(!colon(X, Y)) => !colon(Y, X) !colon(!colon(X, Y), Z) => !colon(X, !colon(Z, i(Y))) i(i(X)) => X i(e) => e Thus, the original system is terminating if (P_0, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_0, R_0, minimal, formative). The formative rules of (P_0, R_0) are R_1 ::= i(!colon(X, Y)) => !colon(Y, X) !colon(!colon(X, Y), Z) => !colon(X, !colon(Z, i(Y))) i(i(X)) => X By [Kop12, Thm. 7.17], we may replace the dependency pair problem (P_0, R_0, minimal, formative) by (P_0, R_1, minimal, formative). Thus, the original system is terminating if (P_0, R_1, minimal, formative) is finite. We consider the dependency pair problem (P_0, R_1, minimal, formative). We will use the reduction pair processor [Kop12, Thm. 7.16]. It suffices to find a standard reduction pair [Kop12, Def. 6.69]. Thus, we must orient: i#(!colon(X, Y)) >? !colon#(Y, X) !colon#(!colon(X, Y), Z) >? !colon#(X, !colon(Z, i(Y))) !colon#(!colon(X, Y), Z) >? !colon#(Z, i(Y)) !colon#(!colon(X, Y), Z) >? i#(Y) i(!colon(X, Y)) >= !colon(Y, X) !colon(!colon(X, Y), Z) >= !colon(X, !colon(Z, i(Y))) i(i(X)) >= X We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: !colon = \y0y1.2 + y0 + y1 !colon# = \y0y1.2y0 + 2y1 i = \y0.y0 i# = \y0.2y0 Using this interpretation, the requirements translate to: [[i#(!colon(_x0, _x1))]] = 4 + 2x0 + 2x1 > 2x0 + 2x1 = [[!colon#(_x1, _x0)]] [[!colon#(!colon(_x0, _x1), _x2)]] = 4 + 2x0 + 2x1 + 2x2 >= 4 + 2x0 + 2x1 + 2x2 = [[!colon#(_x0, !colon(_x2, i(_x1)))]] [[!colon#(!colon(_x0, _x1), _x2)]] = 4 + 2x0 + 2x1 + 2x2 > 2x1 + 2x2 = [[!colon#(_x2, i(_x1))]] [[!colon#(!colon(_x0, _x1), _x2)]] = 4 + 2x0 + 2x1 + 2x2 > 2x1 = [[i#(_x1)]] [[i(!colon(_x0, _x1))]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[!colon(_x1, _x0)]] [[!colon(!colon(_x0, _x1), _x2)]] = 4 + x0 + x1 + x2 >= 4 + x0 + x1 + x2 = [[!colon(_x0, !colon(_x2, i(_x1)))]] [[i(i(_x0))]] = x0 >= x0 = [[_x0]] By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_0, R_1, minimal, formative) by (P_1, R_1, minimal, formative), where P_1 consists of: !colon#(!colon(X, Y), Z) =#> !colon#(X, !colon(Z, i(Y))) Thus, the original system is terminating if (P_1, R_1, minimal, formative) is finite. We consider the dependency pair problem (P_1, R_1, minimal, formative). We apply the subterm criterion with the following projection function: nu(!colon#) = 1 Thus, we can orient the dependency pairs as follows: nu(!colon#(!colon(X, Y), Z)) = !colon(X, Y) |> X = nu(!colon#(X, !colon(Z, i(Y)))) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_1, R_1, minimal, f) by ({}, R_1, minimal, f). By the empty set processor [Kop12, Thm. 7.15] this problem may be immediately removed. As all dependency pair problems were succesfully simplified with sound (and complete) processors until nothing remained, we conclude termination. +++ Citations +++ [Kop12] C. Kop. Higher Order Termination. PhD Thesis, 2012. [KusIsoSakBla09] K. Kusakari, Y. Isogai, M. Sakai, and F. Blanqui. Static Dependency Pair Method Based On Strong Computability for Higher-Order Rewrite Systems. In volume 92(10) of IEICE Transactions on Information and Systems. 2007--2015, 2009.