/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 !times : [o * o] --> o !times(X, !plus(Y, Z)) => !plus(!times(X, Y), !times(X, Z)) !times(!plus(X, Y), Z) => !plus(!times(Z, X), !times(Z, Y)) !times(!times(X, Y), Z) => !times(X, !times(Y, Z)) !plus(!plus(X, Y), Z) => !plus(X, !plus(Y, Z)) 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] !times#(X, !plus(Y, Z)) =#> !plus#(!times(X, Y), !times(X, Z)) 1] !times#(X, !plus(Y, Z)) =#> !times#(X, Y) 2] !times#(X, !plus(Y, Z)) =#> !times#(X, Z) 3] !times#(!plus(X, Y), Z) =#> !plus#(!times(Z, X), !times(Z, Y)) 4] !times#(!plus(X, Y), Z) =#> !times#(Z, X) 5] !times#(!plus(X, Y), Z) =#> !times#(Z, Y) 6] !times#(!times(X, Y), Z) =#> !times#(X, !times(Y, Z)) 7] !times#(!times(X, Y), Z) =#> !times#(Y, Z) 8] !plus#(!plus(X, Y), Z) =#> !plus#(X, !plus(Y, Z)) 9] !plus#(!plus(X, Y), Z) =#> !plus#(Y, Z) Rules R_0: !times(X, !plus(Y, Z)) => !plus(!times(X, Y), !times(X, Z)) !times(!plus(X, Y), Z) => !plus(!times(Z, X), !times(Z, Y)) !times(!times(X, Y), Z) => !times(X, !times(Y, Z)) !plus(!plus(X, Y), Z) => !plus(X, !plus(Y, Z)) 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). We place the elements of P in a dependency graph approximation G (see e.g. [Kop12, Thm. 7.27, 7.29], as follows: * 0 : 8, 9 * 1 : 0, 1, 2, 3, 4, 5, 6, 7 * 2 : 0, 1, 2, 3, 4, 5, 6, 7 * 3 : 8, 9 * 4 : 0, 1, 2, 3, 4, 5, 6, 7 * 5 : 0, 1, 2, 3, 4, 5, 6, 7 * 6 : 0, 1, 2, 3, 4, 5, 6, 7 * 7 : 0, 1, 2, 3, 4, 5, 6, 7 * 8 : 8, 9 * 9 : 8, 9 This graph has the following strongly connected components: P_1: !times#(X, !plus(Y, Z)) =#> !times#(X, Y) !times#(X, !plus(Y, Z)) =#> !times#(X, Z) !times#(!plus(X, Y), Z) =#> !times#(Z, X) !times#(!plus(X, Y), Z) =#> !times#(Z, Y) !times#(!times(X, Y), Z) =#> !times#(X, !times(Y, Z)) !times#(!times(X, Y), Z) =#> !times#(Y, Z) P_2: !plus#(!plus(X, Y), Z) =#> !plus#(X, !plus(Y, Z)) !plus#(!plus(X, Y), Z) =#> !plus#(Y, Z) By [Kop12, Thm. 7.31], we may replace any dependency pair problem (P_0, R_0, m, f) by (P_1, R_0, m, f) and (P_2, R_0, m, f). Thus, the original system is terminating if each of (P_1, R_0, minimal, formative) and (P_2, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_2, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(!plus#) = 1 Thus, we can orient the dependency pairs as follows: nu(!plus#(!plus(X, Y), Z)) = !plus(X, Y) |> X = nu(!plus#(X, !plus(Y, Z))) nu(!plus#(!plus(X, Y), Z)) = !plus(X, Y) |> Y = nu(!plus#(Y, Z)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_2, R_0, minimal, f) by ({}, R_0, minimal, f). By the empty set processor [Kop12, Thm. 7.15] this problem may be immediately removed. Thus, the original system is terminating if (P_1, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_1, R_0, 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: !times#(X, !plus(Y, Z)) >? !times#(X, Y) !times#(X, !plus(Y, Z)) >? !times#(X, Z) !times#(!plus(X, Y), Z) >? !times#(Z, X) !times#(!plus(X, Y), Z) >? !times#(Z, Y) !times#(!times(X, Y), Z) >? !times#(X, !times(Y, Z)) !times#(!times(X, Y), Z) >? !times#(Y, Z) !times(X, !plus(Y, Z)) >= !plus(!times(X, Y), !times(X, Z)) !times(!plus(X, Y), Z) >= !plus(!times(Z, X), !times(Z, Y)) !times(!times(X, Y), Z) >= !times(X, !times(Y, Z)) !plus(!plus(X, Y), Z) >= !plus(X, !plus(Y, Z)) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: !plus = \y0y1.3 + y0 + y1 !times = \y0y1.3 + 2y0y1 + 2y1 + 3y0 !times# = \y0y1.3y0 + y0y1 Using this interpretation, the requirements translate to: [[!times#(_x0, !plus(_x1, _x2))]] = 6x0 + x0x1 + x0x2 >= 3x0 + x0x1 = [[!times#(_x0, _x1)]] [[!times#(_x0, !plus(_x1, _x2))]] = 6x0 + x0x1 + x0x2 >= 3x0 + x0x2 = [[!times#(_x0, _x2)]] [[!times#(!plus(_x0, _x1), _x2)]] = 9 + 3x0 + 3x1 + 3x2 + x0x2 + x1x2 > 3x2 + x0x2 = [[!times#(_x2, _x0)]] [[!times#(!plus(_x0, _x1), _x2)]] = 9 + 3x0 + 3x1 + 3x2 + x0x2 + x1x2 > 3x2 + x1x2 = [[!times#(_x2, _x1)]] [[!times#(!times(_x0, _x1), _x2)]] = 9 + 2x0x1x2 + 2x1x2 + 3x0x2 + 3x2 + 6x0x1 + 6x1 + 9x0 > 2x0x1x2 + 2x0x2 + 3x0x1 + 6x0 = [[!times#(_x0, !times(_x1, _x2))]] [[!times#(!times(_x0, _x1), _x2)]] = 9 + 2x0x1x2 + 2x1x2 + 3x0x2 + 3x2 + 6x0x1 + 6x1 + 9x0 > 3x1 + x1x2 = [[!times#(_x1, _x2)]] [[!times(_x0, !plus(_x1, _x2))]] = 9 + 2x0x1 + 2x0x2 + 2x1 + 2x2 + 9x0 >= 9 + 2x0x1 + 2x0x2 + 2x1 + 2x2 + 6x0 = [[!plus(!times(_x0, _x1), !times(_x0, _x2))]] [[!times(!plus(_x0, _x1), _x2)]] = 12 + 2x0x2 + 2x1x2 + 3x0 + 3x1 + 8x2 >= 9 + 2x0 + 2x0x2 + 2x1 + 2x1x2 + 6x2 = [[!plus(!times(_x2, _x0), !times(_x2, _x1))]] [[!times(!times(_x0, _x1), _x2)]] = 12 + 4x0x1x2 + 4x1x2 + 6x0x1 + 6x0x2 + 6x1 + 8x2 + 9x0 >= 9 + 4x0x1x2 + 4x0x2 + 4x1x2 + 4x2 + 6x0x1 + 6x1 + 9x0 = [[!times(_x0, !times(_x1, _x2))]] [[!plus(!plus(_x0, _x1), _x2)]] = 6 + x0 + x1 + x2 >= 6 + x0 + x1 + x2 = [[!plus(_x0, !plus(_x1, _x2))]] By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_1, R_0, minimal, formative) by (P_3, R_0, minimal, formative), where P_3 consists of: !times#(X, !plus(Y, Z)) =#> !times#(X, Y) !times#(X, !plus(Y, Z)) =#> !times#(X, Z) Thus, the original system is terminating if (P_3, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_3, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(!times#) = 2 Thus, we can orient the dependency pairs as follows: nu(!times#(X, !plus(Y, Z))) = !plus(Y, Z) |> Y = nu(!times#(X, Y)) nu(!times#(X, !plus(Y, Z))) = !plus(Y, Z) |> Z = nu(!times#(X, Z)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_3, R_0, minimal, f) by ({}, R_0, 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.