/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 active : [o] --> o cons : [o * o] --> o from : [o] --> o length : [o] --> o length1 : [o] --> o mark : [o] --> o nil : [] --> o s : [o] --> o active(from(X)) => mark(cons(X, from(s(X)))) active(length(nil)) => mark(0) active(length(cons(X, Y))) => mark(s(length1(Y))) active(length1(X)) => mark(length(X)) mark(from(X)) => active(from(mark(X))) mark(cons(X, Y)) => active(cons(mark(X), Y)) mark(s(X)) => active(s(mark(X))) mark(length(X)) => active(length(X)) mark(nil) => active(nil) mark(0) => active(0) mark(length1(X)) => active(length1(X)) from(mark(X)) => from(X) from(active(X)) => from(X) cons(mark(X), Y) => cons(X, Y) cons(X, mark(Y)) => cons(X, Y) cons(active(X), Y) => cons(X, Y) cons(X, active(Y)) => cons(X, Y) s(mark(X)) => s(X) s(active(X)) => s(X) length(mark(X)) => length(X) length(active(X)) => length(X) length1(mark(X)) => length1(X) length1(active(X)) => length1(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] active#(from(X)) =#> mark#(cons(X, from(s(X)))) 1] active#(from(X)) =#> cons#(X, from(s(X))) 2] active#(from(X)) =#> from#(s(X)) 3] active#(from(X)) =#> s#(X) 4] active#(length(nil)) =#> mark#(0) 5] active#(length(cons(X, Y))) =#> mark#(s(length1(Y))) 6] active#(length(cons(X, Y))) =#> s#(length1(Y)) 7] active#(length(cons(X, Y))) =#> length1#(Y) 8] active#(length1(X)) =#> mark#(length(X)) 9] active#(length1(X)) =#> length#(X) 10] mark#(from(X)) =#> active#(from(mark(X))) 11] mark#(from(X)) =#> from#(mark(X)) 12] mark#(from(X)) =#> mark#(X) 13] mark#(cons(X, Y)) =#> active#(cons(mark(X), Y)) 14] mark#(cons(X, Y)) =#> cons#(mark(X), Y) 15] mark#(cons(X, Y)) =#> mark#(X) 16] mark#(s(X)) =#> active#(s(mark(X))) 17] mark#(s(X)) =#> s#(mark(X)) 18] mark#(s(X)) =#> mark#(X) 19] mark#(length(X)) =#> active#(length(X)) 20] mark#(length(X)) =#> length#(X) 21] mark#(nil) =#> active#(nil) 22] mark#(0) =#> active#(0) 23] mark#(length1(X)) =#> active#(length1(X)) 24] mark#(length1(X)) =#> length1#(X) 25] from#(mark(X)) =#> from#(X) 26] from#(active(X)) =#> from#(X) 27] cons#(mark(X), Y) =#> cons#(X, Y) 28] cons#(X, mark(Y)) =#> cons#(X, Y) 29] cons#(active(X), Y) =#> cons#(X, Y) 30] cons#(X, active(Y)) =#> cons#(X, Y) 31] s#(mark(X)) =#> s#(X) 32] s#(active(X)) =#> s#(X) 33] length#(mark(X)) =#> length#(X) 34] length#(active(X)) =#> length#(X) 35] length1#(mark(X)) =#> length1#(X) 36] length1#(active(X)) =#> length1#(X) Rules R_0: active(from(X)) => mark(cons(X, from(s(X)))) active(length(nil)) => mark(0) active(length(cons(X, Y))) => mark(s(length1(Y))) active(length1(X)) => mark(length(X)) mark(from(X)) => active(from(mark(X))) mark(cons(X, Y)) => active(cons(mark(X), Y)) mark(s(X)) => active(s(mark(X))) mark(length(X)) => active(length(X)) mark(nil) => active(nil) mark(0) => active(0) mark(length1(X)) => active(length1(X)) from(mark(X)) => from(X) from(active(X)) => from(X) cons(mark(X), Y) => cons(X, Y) cons(X, mark(Y)) => cons(X, Y) cons(active(X), Y) => cons(X, Y) cons(X, active(Y)) => cons(X, Y) s(mark(X)) => s(X) s(active(X)) => s(X) length(mark(X)) => length(X) length(active(X)) => length(X) length1(mark(X)) => length1(X) length1(active(X)) => length1(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 : 13, 14, 15 * 1 : 27, 29 * 2 : * 3 : 31, 32 * 4 : 22 * 5 : 16, 17, 18 * 6 : * 7 : 35, 36 * 8 : 19, 20 * 9 : 33, 34 * 10 : 0, 1, 2, 3 * 11 : 25, 26 * 12 : 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 * 13 : * 14 : 27, 28, 29, 30 * 15 : 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 * 16 : * 17 : 31, 32 * 18 : 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 * 19 : 4, 5, 6, 7 * 20 : 33, 34 * 21 : * 22 : * 23 : 8, 9 * 24 : 35, 36 * 25 : 25, 26 * 26 : 25, 26 * 27 : 27, 28, 29, 30 * 28 : 27, 28, 29, 30 * 29 : 27, 28, 29, 30 * 30 : 27, 28, 29, 30 * 31 : 31, 32 * 32 : 31, 32 * 33 : 33, 34 * 34 : 33, 34 * 35 : 35, 36 * 36 : 35, 36 This graph has the following strongly connected components: P_1: active#(from(X)) =#> mark#(cons(X, from(s(X)))) active#(length(cons(X, Y))) =#> mark#(s(length1(Y))) active#(length1(X)) =#> mark#(length(X)) mark#(from(X)) =#> active#(from(mark(X))) mark#(from(X)) =#> mark#(X) mark#(cons(X, Y)) =#> mark#(X) mark#(s(X)) =#> mark#(X) mark#(length(X)) =#> active#(length(X)) mark#(length1(X)) =#> active#(length1(X)) P_2: from#(mark(X)) =#> from#(X) from#(active(X)) =#> from#(X) P_3: cons#(mark(X), Y) =#> cons#(X, Y) cons#(X, mark(Y)) =#> cons#(X, Y) cons#(active(X), Y) =#> cons#(X, Y) cons#(X, active(Y)) =#> cons#(X, Y) P_4: s#(mark(X)) =#> s#(X) s#(active(X)) =#> s#(X) P_5: length#(mark(X)) =#> length#(X) length#(active(X)) =#> length#(X) P_6: length1#(mark(X)) =#> length1#(X) length1#(active(X)) =#> length1#(X) 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), (P_2, R_0, m, f), (P_3, R_0, m, f), (P_4, R_0, m, f), (P_5, R_0, m, f) and (P_6, R_0, m, f). Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative) and (P_6, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_6, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(length1#) = 1 Thus, we can orient the dependency pairs as follows: nu(length1#(mark(X))) = mark(X) |> X = nu(length1#(X)) nu(length1#(active(X))) = active(X) |> X = nu(length1#(X)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_6, 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 each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative) and (P_5, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_5, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(length#) = 1 Thus, we can orient the dependency pairs as follows: nu(length#(mark(X))) = mark(X) |> X = nu(length#(X)) nu(length#(active(X))) = active(X) |> X = nu(length#(X)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_5, 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 each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative) and (P_4, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_4, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(s#) = 1 Thus, we can orient the dependency pairs as follows: nu(s#(mark(X))) = mark(X) |> X = nu(s#(X)) nu(s#(active(X))) = active(X) |> X = nu(s#(X)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_4, 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 each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative) and (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(cons#) = 1 Thus, we can orient the dependency pairs as follows: nu(cons#(mark(X), Y)) = mark(X) |> X = nu(cons#(X, Y)) nu(cons#(X, mark(Y))) = X = X = nu(cons#(X, Y)) nu(cons#(active(X), Y)) = active(X) |> X = nu(cons#(X, Y)) nu(cons#(X, active(Y))) = X = X = nu(cons#(X, Y)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_3, R_0, minimal, f) by (P_7, R_0, minimal, f), where P_7 contains: cons#(X, mark(Y)) =#> cons#(X, Y) cons#(X, active(Y)) =#> cons#(X, Y) Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative) and (P_7, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_7, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(cons#) = 2 Thus, we can orient the dependency pairs as follows: nu(cons#(X, mark(Y))) = mark(Y) |> Y = nu(cons#(X, Y)) nu(cons#(X, active(Y))) = active(Y) |> Y = nu(cons#(X, Y)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_7, 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 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(from#) = 1 Thus, we can orient the dependency pairs as follows: nu(from#(mark(X))) = mark(X) |> X = nu(from#(X)) nu(from#(active(X))) = active(X) |> X = nu(from#(X)) 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: active#(from(X)) >? mark#(cons(X, from(s(X)))) active#(length(cons(X, Y))) >? mark#(s(length1(Y))) active#(length1(X)) >? mark#(length(X)) mark#(from(X)) >? active#(from(mark(X))) mark#(from(X)) >? mark#(X) mark#(cons(X, Y)) >? mark#(X) mark#(s(X)) >? mark#(X) mark#(length(X)) >? active#(length(X)) mark#(length1(X)) >? active#(length1(X)) active(from(X)) >= mark(cons(X, from(s(X)))) active(length(nil)) >= mark(0) active(length(cons(X, Y))) >= mark(s(length1(Y))) active(length1(X)) >= mark(length(X)) mark(from(X)) >= active(from(mark(X))) mark(cons(X, Y)) >= active(cons(mark(X), Y)) mark(s(X)) >= active(s(mark(X))) mark(length(X)) >= active(length(X)) mark(nil) >= active(nil) mark(0) >= active(0) mark(length1(X)) >= active(length1(X)) from(mark(X)) >= from(X) from(active(X)) >= from(X) cons(mark(X), Y) >= cons(X, Y) cons(X, mark(Y)) >= cons(X, Y) cons(active(X), Y) >= cons(X, Y) cons(X, active(Y)) >= cons(X, Y) s(mark(X)) >= s(X) s(active(X)) >= s(X) length(mark(X)) >= length(X) length(active(X)) >= length(X) length1(mark(X)) >= length1(X) length1(active(X)) >= length1(X) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: 0 = 0 active = \y0.y0 active# = \y0.2y0 cons = \y0y1.y0 from = \y0.1 + y0 length = \y0.0 length1 = \y0.0 mark = \y0.y0 mark# = \y0.2y0 nil = 0 s = \y0.y0 Using this interpretation, the requirements translate to: [[active#(from(_x0))]] = 2 + 2x0 > 2x0 = [[mark#(cons(_x0, from(s(_x0))))]] [[active#(length(cons(_x0, _x1)))]] = 0 >= 0 = [[mark#(s(length1(_x1)))]] [[active#(length1(_x0))]] = 0 >= 0 = [[mark#(length(_x0))]] [[mark#(from(_x0))]] = 2 + 2x0 >= 2 + 2x0 = [[active#(from(mark(_x0)))]] [[mark#(from(_x0))]] = 2 + 2x0 > 2x0 = [[mark#(_x0)]] [[mark#(cons(_x0, _x1))]] = 2x0 >= 2x0 = [[mark#(_x0)]] [[mark#(s(_x0))]] = 2x0 >= 2x0 = [[mark#(_x0)]] [[mark#(length(_x0))]] = 0 >= 0 = [[active#(length(_x0))]] [[mark#(length1(_x0))]] = 0 >= 0 = [[active#(length1(_x0))]] [[active(from(_x0))]] = 1 + x0 >= x0 = [[mark(cons(_x0, from(s(_x0))))]] [[active(length(nil))]] = 0 >= 0 = [[mark(0)]] [[active(length(cons(_x0, _x1)))]] = 0 >= 0 = [[mark(s(length1(_x1)))]] [[active(length1(_x0))]] = 0 >= 0 = [[mark(length(_x0))]] [[mark(from(_x0))]] = 1 + x0 >= 1 + x0 = [[active(from(mark(_x0)))]] [[mark(cons(_x0, _x1))]] = x0 >= x0 = [[active(cons(mark(_x0), _x1))]] [[mark(s(_x0))]] = x0 >= x0 = [[active(s(mark(_x0)))]] [[mark(length(_x0))]] = 0 >= 0 = [[active(length(_x0))]] [[mark(nil)]] = 0 >= 0 = [[active(nil)]] [[mark(0)]] = 0 >= 0 = [[active(0)]] [[mark(length1(_x0))]] = 0 >= 0 = [[active(length1(_x0))]] [[from(mark(_x0))]] = 1 + x0 >= 1 + x0 = [[from(_x0)]] [[from(active(_x0))]] = 1 + x0 >= 1 + x0 = [[from(_x0)]] [[cons(mark(_x0), _x1)]] = x0 >= x0 = [[cons(_x0, _x1)]] [[cons(_x0, mark(_x1))]] = x0 >= x0 = [[cons(_x0, _x1)]] [[cons(active(_x0), _x1)]] = x0 >= x0 = [[cons(_x0, _x1)]] [[cons(_x0, active(_x1))]] = x0 >= x0 = [[cons(_x0, _x1)]] [[s(mark(_x0))]] = x0 >= x0 = [[s(_x0)]] [[s(active(_x0))]] = x0 >= x0 = [[s(_x0)]] [[length(mark(_x0))]] = 0 >= 0 = [[length(_x0)]] [[length(active(_x0))]] = 0 >= 0 = [[length(_x0)]] [[length1(mark(_x0))]] = 0 >= 0 = [[length1(_x0)]] [[length1(active(_x0))]] = 0 >= 0 = [[length1(_x0)]] 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_8, R_0, minimal, formative), where P_8 consists of: active#(length(cons(X, Y))) =#> mark#(s(length1(Y))) active#(length1(X)) =#> mark#(length(X)) mark#(from(X)) =#> active#(from(mark(X))) mark#(cons(X, Y)) =#> mark#(X) mark#(s(X)) =#> mark#(X) mark#(length(X)) =#> active#(length(X)) mark#(length1(X)) =#> active#(length1(X)) Thus, the original system is terminating if (P_8, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_8, 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 : 4 * 1 : 5 * 2 : * 3 : 2, 3, 4, 5, 6 * 4 : 2, 3, 4, 5, 6 * 5 : 0 * 6 : 1 This graph has the following strongly connected components: P_9: active#(length(cons(X, Y))) =#> mark#(s(length1(Y))) active#(length1(X)) =#> mark#(length(X)) mark#(cons(X, Y)) =#> mark#(X) mark#(s(X)) =#> mark#(X) mark#(length(X)) =#> active#(length(X)) mark#(length1(X)) =#> active#(length1(X)) By [Kop12, Thm. 7.31], we may replace any dependency pair problem (P_8, R_0, m, f) by (P_9, R_0, m, f). Thus, the original system is terminating if (P_9, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_9, R_0, minimal, formative). The formative rules of (P_9, R_0) are R_1 ::= active(from(X)) => mark(cons(X, from(s(X)))) active(length(nil)) => mark(0) active(length(cons(X, Y))) => mark(s(length1(Y))) active(length1(X)) => mark(length(X)) mark(from(X)) => active(from(mark(X))) mark(cons(X, Y)) => active(cons(mark(X), Y)) mark(s(X)) => active(s(mark(X))) mark(length(X)) => active(length(X)) mark(nil) => active(nil) mark(0) => active(0) mark(length1(X)) => active(length1(X)) cons(mark(X), Y) => cons(X, Y) cons(X, mark(Y)) => cons(X, Y) cons(active(X), Y) => cons(X, Y) cons(X, active(Y)) => cons(X, Y) s(mark(X)) => s(X) s(active(X)) => s(X) length(mark(X)) => length(X) length(active(X)) => length(X) length1(mark(X)) => length1(X) length1(active(X)) => length1(X) By [Kop12, Thm. 7.17], we may replace the dependency pair problem (P_9, R_0, minimal, formative) by (P_9, R_1, minimal, formative). Thus, the original system is terminating if (P_9, R_1, minimal, formative) is finite. We consider the dependency pair problem (P_9, R_1, minimal, formative). We will use the reduction pair processor with usable rules [Kop12, Thm. 7.44]. The usable rules of (P_9, R_1) are: s(mark(X)) => s(X) s(active(X)) => s(X) length(mark(X)) => length(X) length(active(X)) => length(X) length1(mark(X)) => length1(X) length1(active(X)) => length1(X) It suffices to find a standard reduction pair [Kop12, Def. 6.69]. Thus, we must orient: active#(length(cons(X, Y))) >? mark#(s(length1(Y))) active#(length1(X)) >? mark#(length(X)) mark#(cons(X, Y)) >? mark#(X) mark#(s(X)) >? mark#(X) mark#(length(X)) >? active#(length(X)) mark#(length1(X)) >? active#(length1(X)) s(mark(X)) >= s(X) s(active(X)) >= s(X) length(mark(X)) >= length(X) length(active(X)) >= length(X) length1(mark(X)) >= length1(X) length1(active(X)) >= length1(X) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: active = \y0.y0 active# = \y0.y0 cons = \y0y1.3 + 2y0 + 2y1 length = \y0.y0 length1 = \y0.2y0 mark = \y0.2y0 mark# = \y0.y0 s = \y0.y0 Using this interpretation, the requirements translate to: [[active#(length(cons(_x0, _x1)))]] = 3 + 2x0 + 2x1 > 2x1 = [[mark#(s(length1(_x1)))]] [[active#(length1(_x0))]] = 2x0 >= x0 = [[mark#(length(_x0))]] [[mark#(cons(_x0, _x1))]] = 3 + 2x0 + 2x1 > x0 = [[mark#(_x0)]] [[mark#(s(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(length(_x0))]] = x0 >= x0 = [[active#(length(_x0))]] [[mark#(length1(_x0))]] = 2x0 >= 2x0 = [[active#(length1(_x0))]] [[s(mark(_x0))]] = 2x0 >= x0 = [[s(_x0)]] [[s(active(_x0))]] = x0 >= x0 = [[s(_x0)]] [[length(mark(_x0))]] = 2x0 >= x0 = [[length(_x0)]] [[length(active(_x0))]] = x0 >= x0 = [[length(_x0)]] [[length1(mark(_x0))]] = 4x0 >= 2x0 = [[length1(_x0)]] [[length1(active(_x0))]] = 2x0 >= 2x0 = [[length1(_x0)]] By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_9, R_1, minimal, formative) by (P_10, R_1, minimal, formative), where P_10 consists of: active#(length1(X)) =#> mark#(length(X)) mark#(s(X)) =#> mark#(X) mark#(length(X)) =#> active#(length(X)) mark#(length1(X)) =#> active#(length1(X)) Thus, the original system is terminating if (P_10, R_1, minimal, formative) is finite. We consider the dependency pair problem (P_10, R_1, 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 : 2 * 1 : 1, 2, 3 * 2 : * 3 : 0 This graph has the following strongly connected components: P_11: mark#(s(X)) =#> mark#(X) By [Kop12, Thm. 7.31], we may replace any dependency pair problem (P_10, R_1, m, f) by (P_11, R_1, m, f). Thus, the original system is terminating if (P_11, R_1, minimal, formative) is finite. We consider the dependency pair problem (P_11, R_1, minimal, formative). We apply the subterm criterion with the following projection function: nu(mark#) = 1 Thus, we can orient the dependency pairs as follows: nu(mark#(s(X))) = s(X) |> X = nu(mark#(X)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_11, 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.