/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. 0 : [] --> o activate : [o] --> o div : [o * o] --> o false : [] --> o geq : [o * o] --> o if : [o * o * o] --> o minus : [o * o] --> o n!6220!62200 : [] --> o n!6220!6220s : [o] --> o s : [o] --> o true : [] --> o minus(n!6220!62200, X) => 0 minus(n!6220!6220s(X), n!6220!6220s(Y)) => minus(activate(X), activate(Y)) geq(X, n!6220!62200) => true geq(n!6220!62200, n!6220!6220s(X)) => false geq(n!6220!6220s(X), n!6220!6220s(Y)) => geq(activate(X), activate(Y)) div(0, n!6220!6220s(X)) => 0 div(s(X), n!6220!6220s(Y)) => if(geq(X, activate(Y)), n!6220!6220s(div(minus(X, activate(Y)), n!6220!6220s(activate(Y)))), n!6220!62200) if(true, X, Y) => activate(X) if(false, X, Y) => activate(Y) 0 => n!6220!62200 s(X) => n!6220!6220s(X) activate(n!6220!62200) => 0 activate(n!6220!6220s(X)) => s(X) activate(X) => X 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] minus#(n!6220!62200, X) =#> 0# 1] minus#(n!6220!6220s(X), n!6220!6220s(Y)) =#> minus#(activate(X), activate(Y)) 2] minus#(n!6220!6220s(X), n!6220!6220s(Y)) =#> activate#(X) 3] minus#(n!6220!6220s(X), n!6220!6220s(Y)) =#> activate#(Y) 4] geq#(n!6220!6220s(X), n!6220!6220s(Y)) =#> geq#(activate(X), activate(Y)) 5] geq#(n!6220!6220s(X), n!6220!6220s(Y)) =#> activate#(X) 6] geq#(n!6220!6220s(X), n!6220!6220s(Y)) =#> activate#(Y) 7] div#(0, n!6220!6220s(X)) =#> 0# 8] div#(s(X), n!6220!6220s(Y)) =#> if#(geq(X, activate(Y)), n!6220!6220s(div(minus(X, activate(Y)), n!6220!6220s(activate(Y)))), n!6220!62200) 9] div#(s(X), n!6220!6220s(Y)) =#> geq#(X, activate(Y)) 10] div#(s(X), n!6220!6220s(Y)) =#> activate#(Y) 11] div#(s(X), n!6220!6220s(Y)) =#> div#(minus(X, activate(Y)), n!6220!6220s(activate(Y))) 12] div#(s(X), n!6220!6220s(Y)) =#> minus#(X, activate(Y)) 13] div#(s(X), n!6220!6220s(Y)) =#> activate#(Y) 14] div#(s(X), n!6220!6220s(Y)) =#> activate#(Y) 15] if#(true, X, Y) =#> activate#(X) 16] if#(false, X, Y) =#> activate#(Y) 17] activate#(n!6220!62200) =#> 0# 18] activate#(n!6220!6220s(X)) =#> s#(X) Rules R_0: minus(n!6220!62200, X) => 0 minus(n!6220!6220s(X), n!6220!6220s(Y)) => minus(activate(X), activate(Y)) geq(X, n!6220!62200) => true geq(n!6220!62200, n!6220!6220s(X)) => false geq(n!6220!6220s(X), n!6220!6220s(Y)) => geq(activate(X), activate(Y)) div(0, n!6220!6220s(X)) => 0 div(s(X), n!6220!6220s(Y)) => if(geq(X, activate(Y)), n!6220!6220s(div(minus(X, activate(Y)), n!6220!6220s(activate(Y)))), n!6220!62200) if(true, X, Y) => activate(X) if(false, X, Y) => activate(Y) 0 => n!6220!62200 s(X) => n!6220!6220s(X) activate(n!6220!62200) => 0 activate(n!6220!6220s(X)) => s(X) activate(X) => X 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 : * 1 : 0, 1, 2, 3 * 2 : 17, 18 * 3 : 17, 18 * 4 : 4, 5, 6 * 5 : 17, 18 * 6 : 17, 18 * 7 : * 8 : 15, 16 * 9 : 4, 5, 6 * 10 : 17, 18 * 11 : 7 * 12 : 0, 1, 2, 3 * 13 : 17, 18 * 14 : 17, 18 * 15 : 17, 18 * 16 : 17, 18 * 17 : * 18 : This graph has the following strongly connected components: P_1: minus#(n!6220!6220s(X), n!6220!6220s(Y)) =#> minus#(activate(X), activate(Y)) P_2: geq#(n!6220!6220s(X), n!6220!6220s(Y)) =#> geq#(activate(X), activate(Y)) 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 will use the reduction pair processor with usable rules [Kop12, Thm. 7.44]. The usable rules of (P_2, R_0) are: 0 => n!6220!62200 s(X) => n!6220!6220s(X) activate(n!6220!62200) => 0 activate(n!6220!6220s(X)) => s(X) activate(X) => X It suffices to find a standard reduction pair [Kop12, Def. 6.69]. Thus, we must orient: geq#(n!6220!6220s(X), n!6220!6220s(Y)) >? geq#(activate(X), activate(Y)) 0 >= n!6220!62200 s(X) >= n!6220!6220s(X) activate(n!6220!62200) >= 0 activate(n!6220!6220s(X)) >= s(X) activate(X) >= X We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: 0 = 2 activate = \y0.2 + 3y0 geq# = \y0y1.3y0 + 3y1 n!6220!62200 = 1 n!6220!6220s = \y0.3 + 3y0 s = \y0.3 + 3y0 Using this interpretation, the requirements translate to: [[geq#(n!6220!6220s(_x0), n!6220!6220s(_x1))]] = 18 + 9x0 + 9x1 > 12 + 9x0 + 9x1 = [[geq#(activate(_x0), activate(_x1))]] [[0]] = 2 >= 1 = [[n!6220!62200]] [[s(_x0)]] = 3 + 3x0 >= 3 + 3x0 = [[n!6220!6220s(_x0)]] [[activate(n!6220!62200)]] = 5 >= 2 = [[0]] [[activate(n!6220!6220s(_x0))]] = 11 + 9x0 >= 3 + 3x0 = [[s(_x0)]] [[activate(_x0)]] = 2 + 3x0 >= x0 = [[_x0]] By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace a dependency pair problem (P_2, R_0) by ({}, R_0). 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 with usable rules [Kop12, Thm. 7.44]. The usable rules of (P_1, R_0) are: 0 => n!6220!62200 s(X) => n!6220!6220s(X) activate(n!6220!62200) => 0 activate(n!6220!6220s(X)) => s(X) activate(X) => X It suffices to find a standard reduction pair [Kop12, Def. 6.69]. Thus, we must orient: minus#(n!6220!6220s(X), n!6220!6220s(Y)) >? minus#(activate(X), activate(Y)) 0 >= n!6220!62200 s(X) >= n!6220!6220s(X) activate(n!6220!62200) >= 0 activate(n!6220!6220s(X)) >= s(X) activate(X) >= X We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: 0 = 2 activate = \y0.2 + 3y0 minus# = \y0y1.3y0 + 3y1 n!6220!62200 = 1 n!6220!6220s = \y0.3 + 3y0 s = \y0.3 + 3y0 Using this interpretation, the requirements translate to: [[minus#(n!6220!6220s(_x0), n!6220!6220s(_x1))]] = 18 + 9x0 + 9x1 > 12 + 9x0 + 9x1 = [[minus#(activate(_x0), activate(_x1))]] [[0]] = 2 >= 1 = [[n!6220!62200]] [[s(_x0)]] = 3 + 3x0 >= 3 + 3x0 = [[n!6220!6220s(_x0)]] [[activate(n!6220!62200)]] = 5 >= 2 = [[0]] [[activate(n!6220!6220s(_x0))]] = 11 + 9x0 >= 3 + 3x0 = [[s(_x0)]] [[activate(_x0)]] = 2 + 3x0 >= x0 = [[_x0]] By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace a dependency pair problem (P_1, R_0) by ({}, R_0). 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.