MAYBE We are left with following problem, upon which TcT provides the certificate MAYBE. Strict Trs: { minus(X, s(Y)) -> pred(minus(X, Y)) , minus(X, 0()) -> X , pred(s(X)) -> X , le(s(X), s(Y)) -> le(X, Y) , le(s(X), 0()) -> false() , le(0(), Y) -> true() , gcd(s(X), s(Y)) -> if(le(Y, X), s(X), s(Y)) , gcd(s(X), 0()) -> s(X) , gcd(0(), Y) -> 0() , if(false(), s(X), s(Y)) -> gcd(minus(Y, X), s(X)) , if(true(), s(X), s(Y)) -> gcd(minus(X, Y), s(Y)) } Obligation: runtime complexity Answer: MAYBE None of the processors succeeded. Details of failed attempt(s): ----------------------------- 1) 'WithProblem (timeout of 60 seconds)' failed due to the following reason: Computation stopped due to timeout after 60.0 seconds. 2) 'Best' failed due to the following reason: None of the processors succeeded. Details of failed attempt(s): ----------------------------- 1) 'WithProblem (timeout of 30 seconds) (timeout of 60 seconds)' failed due to the following reason: The weightgap principle applies (using the following nonconstant growth matrix-interpretation) The following argument positions are usable: Uargs(pred) = {1}, Uargs(gcd) = {1}, Uargs(if) = {1} TcT has computed the following matrix interpretation satisfying not(EDA) and not(IDA(1)). [minus](x1, x2) = [1] x1 + [7] [s](x1) = [1] x1 + [7] [pred](x1) = [1] x1 + [7] [0] = [7] [le](x1, x2) = [1] [false] = [1] [true] = [1] [gcd](x1, x2) = [1] x1 + [1] x2 + [1] [if](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] The following symbols are considered usable {minus, pred, le, gcd, if} The order satisfies the following ordering constraints: [minus(X, s(Y))] = [1] X + [7] ? [1] X + [14] = [pred(minus(X, Y))] [minus(X, 0())] = [1] X + [7] > [1] X + [0] = [X] [pred(s(X))] = [1] X + [14] > [1] X + [0] = [X] [le(s(X), s(Y))] = [1] >= [1] = [le(X, Y)] [le(s(X), 0())] = [1] >= [1] = [false()] [le(0(), Y)] = [1] >= [1] = [true()] [gcd(s(X), s(Y))] = [1] X + [1] Y + [15] >= [1] X + [1] Y + [15] = [if(le(Y, X), s(X), s(Y))] [gcd(s(X), 0())] = [1] X + [15] > [1] X + [7] = [s(X)] [gcd(0(), Y)] = [1] Y + [8] > [7] = [0()] [if(false(), s(X), s(Y))] = [1] X + [1] Y + [15] >= [1] X + [1] Y + [15] = [gcd(minus(Y, X), s(X))] [if(true(), s(X), s(Y))] = [1] X + [1] Y + [15] >= [1] X + [1] Y + [15] = [gcd(minus(X, Y), s(Y))] Further, it can be verified that all rules not oriented are covered by the weightgap condition. We are left with following problem, upon which TcT provides the certificate MAYBE. Strict Trs: { minus(X, s(Y)) -> pred(minus(X, Y)) , le(s(X), s(Y)) -> le(X, Y) , le(s(X), 0()) -> false() , le(0(), Y) -> true() , gcd(s(X), s(Y)) -> if(le(Y, X), s(X), s(Y)) , if(false(), s(X), s(Y)) -> gcd(minus(Y, X), s(X)) , if(true(), s(X), s(Y)) -> gcd(minus(X, Y), s(Y)) } Weak Trs: { minus(X, 0()) -> X , pred(s(X)) -> X , gcd(s(X), 0()) -> s(X) , gcd(0(), Y) -> 0() } Obligation: runtime complexity Answer: MAYBE The weightgap principle applies (using the following nonconstant growth matrix-interpretation) The following argument positions are usable: Uargs(pred) = {1}, Uargs(gcd) = {1}, Uargs(if) = {1} TcT has computed the following matrix interpretation satisfying not(EDA) and not(IDA(1)). [minus](x1, x2) = [1] x1 + [0] [s](x1) = [1] x1 + [0] [pred](x1) = [1] x1 + [7] [0] = [7] [le](x1, x2) = [1] [false] = [0] [true] = [0] [gcd](x1, x2) = [1] x1 + [1] x2 + [0] [if](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] The following symbols are considered usable {minus, pred, le, gcd, if} The order satisfies the following ordering constraints: [minus(X, s(Y))] = [1] X + [0] ? [1] X + [7] = [pred(minus(X, Y))] [minus(X, 0())] = [1] X + [0] >= [1] X + [0] = [X] [pred(s(X))] = [1] X + [7] > [1] X + [0] = [X] [le(s(X), s(Y))] = [1] >= [1] = [le(X, Y)] [le(s(X), 0())] = [1] > [0] = [false()] [le(0(), Y)] = [1] > [0] = [true()] [gcd(s(X), s(Y))] = [1] X + [1] Y + [0] ? [1] X + [1] Y + [1] = [if(le(Y, X), s(X), s(Y))] [gcd(s(X), 0())] = [1] X + [7] > [1] X + [0] = [s(X)] [gcd(0(), Y)] = [1] Y + [7] >= [7] = [0()] [if(false(), s(X), s(Y))] = [1] X + [1] Y + [0] >= [1] X + [1] Y + [0] = [gcd(minus(Y, X), s(X))] [if(true(), s(X), s(Y))] = [1] X + [1] Y + [0] >= [1] X + [1] Y + [0] = [gcd(minus(X, Y), s(Y))] Further, it can be verified that all rules not oriented are covered by the weightgap condition. We are left with following problem, upon which TcT provides the certificate MAYBE. Strict Trs: { minus(X, s(Y)) -> pred(minus(X, Y)) , le(s(X), s(Y)) -> le(X, Y) , gcd(s(X), s(Y)) -> if(le(Y, X), s(X), s(Y)) , if(false(), s(X), s(Y)) -> gcd(minus(Y, X), s(X)) , if(true(), s(X), s(Y)) -> gcd(minus(X, Y), s(Y)) } Weak Trs: { minus(X, 0()) -> X , pred(s(X)) -> X , le(s(X), 0()) -> false() , le(0(), Y) -> true() , gcd(s(X), 0()) -> s(X) , gcd(0(), Y) -> 0() } Obligation: runtime complexity Answer: MAYBE The weightgap principle applies (using the following nonconstant growth matrix-interpretation) The following argument positions are usable: Uargs(pred) = {1}, Uargs(gcd) = {1}, Uargs(if) = {1} TcT has computed the following matrix interpretation satisfying not(EDA) and not(IDA(1)). [minus](x1, x2) = [1] x1 + [0] [s](x1) = [1] x1 + [0] [pred](x1) = [1] x1 + [7] [0] = [7] [le](x1, x2) = [4] [false] = [1] [true] = [0] [gcd](x1, x2) = [1] x1 + [1] x2 + [0] [if](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] The following symbols are considered usable {minus, pred, le, gcd, if} The order satisfies the following ordering constraints: [minus(X, s(Y))] = [1] X + [0] ? [1] X + [7] = [pred(minus(X, Y))] [minus(X, 0())] = [1] X + [0] >= [1] X + [0] = [X] [pred(s(X))] = [1] X + [7] > [1] X + [0] = [X] [le(s(X), s(Y))] = [4] >= [4] = [le(X, Y)] [le(s(X), 0())] = [4] > [1] = [false()] [le(0(), Y)] = [4] > [0] = [true()] [gcd(s(X), s(Y))] = [1] X + [1] Y + [0] ? [1] X + [1] Y + [4] = [if(le(Y, X), s(X), s(Y))] [gcd(s(X), 0())] = [1] X + [7] > [1] X + [0] = [s(X)] [gcd(0(), Y)] = [1] Y + [7] >= [7] = [0()] [if(false(), s(X), s(Y))] = [1] X + [1] Y + [1] > [1] X + [1] Y + [0] = [gcd(minus(Y, X), s(X))] [if(true(), s(X), s(Y))] = [1] X + [1] Y + [0] >= [1] X + [1] Y + [0] = [gcd(minus(X, Y), s(Y))] Further, it can be verified that all rules not oriented are covered by the weightgap condition. We are left with following problem, upon which TcT provides the certificate MAYBE. Strict Trs: { minus(X, s(Y)) -> pred(minus(X, Y)) , le(s(X), s(Y)) -> le(X, Y) , gcd(s(X), s(Y)) -> if(le(Y, X), s(X), s(Y)) , if(true(), s(X), s(Y)) -> gcd(minus(X, Y), s(Y)) } Weak Trs: { minus(X, 0()) -> X , pred(s(X)) -> X , le(s(X), 0()) -> false() , le(0(), Y) -> true() , gcd(s(X), 0()) -> s(X) , gcd(0(), Y) -> 0() , if(false(), s(X), s(Y)) -> gcd(minus(Y, X), s(X)) } Obligation: runtime complexity Answer: MAYBE The weightgap principle applies (using the following nonconstant growth matrix-interpretation) The following argument positions are usable: Uargs(pred) = {1}, Uargs(gcd) = {1}, Uargs(if) = {1} TcT has computed the following matrix interpretation satisfying not(EDA) and not(IDA(1)). [minus](x1, x2) = [1] x1 + [0] [s](x1) = [1] x1 + [4] [pred](x1) = [1] x1 + [7] [0] = [7] [le](x1, x2) = [0] [false] = [0] [true] = [0] [gcd](x1, x2) = [1] x1 + [1] x2 + [0] [if](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] The following symbols are considered usable {minus, pred, le, gcd, if} The order satisfies the following ordering constraints: [minus(X, s(Y))] = [1] X + [0] ? [1] X + [7] = [pred(minus(X, Y))] [minus(X, 0())] = [1] X + [0] >= [1] X + [0] = [X] [pred(s(X))] = [1] X + [11] > [1] X + [0] = [X] [le(s(X), s(Y))] = [0] >= [0] = [le(X, Y)] [le(s(X), 0())] = [0] >= [0] = [false()] [le(0(), Y)] = [0] >= [0] = [true()] [gcd(s(X), s(Y))] = [1] X + [1] Y + [8] >= [1] X + [1] Y + [8] = [if(le(Y, X), s(X), s(Y))] [gcd(s(X), 0())] = [1] X + [11] > [1] X + [4] = [s(X)] [gcd(0(), Y)] = [1] Y + [7] >= [7] = [0()] [if(false(), s(X), s(Y))] = [1] X + [1] Y + [8] > [1] X + [1] Y + [4] = [gcd(minus(Y, X), s(X))] [if(true(), s(X), s(Y))] = [1] X + [1] Y + [8] > [1] X + [1] Y + [4] = [gcd(minus(X, Y), s(Y))] Further, it can be verified that all rules not oriented are covered by the weightgap condition. We are left with following problem, upon which TcT provides the certificate MAYBE. Strict Trs: { minus(X, s(Y)) -> pred(minus(X, Y)) , le(s(X), s(Y)) -> le(X, Y) , gcd(s(X), s(Y)) -> if(le(Y, X), s(X), s(Y)) } Weak Trs: { minus(X, 0()) -> X , pred(s(X)) -> X , le(s(X), 0()) -> false() , le(0(), Y) -> true() , gcd(s(X), 0()) -> s(X) , gcd(0(), Y) -> 0() , if(false(), s(X), s(Y)) -> gcd(minus(Y, X), s(X)) , if(true(), s(X), s(Y)) -> gcd(minus(X, Y), s(Y)) } Obligation: runtime complexity Answer: MAYBE The weightgap principle applies (using the following nonconstant growth matrix-interpretation) The following argument positions are usable: Uargs(pred) = {1}, Uargs(gcd) = {1}, Uargs(if) = {1} TcT has computed the following matrix interpretation satisfying not(EDA) and not(IDA(1)). [minus](x1, x2) = [1] x1 + [0] [s](x1) = [1] x1 + [4] [pred](x1) = [1] x1 + [7] [0] = [7] [le](x1, x2) = [0] [false] = [0] [true] = [0] [gcd](x1, x2) = [1] x1 + [1] x2 + [4] [if](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] The following symbols are considered usable {minus, pred, le, gcd, if} The order satisfies the following ordering constraints: [minus(X, s(Y))] = [1] X + [0] ? [1] X + [7] = [pred(minus(X, Y))] [minus(X, 0())] = [1] X + [0] >= [1] X + [0] = [X] [pred(s(X))] = [1] X + [11] > [1] X + [0] = [X] [le(s(X), s(Y))] = [0] >= [0] = [le(X, Y)] [le(s(X), 0())] = [0] >= [0] = [false()] [le(0(), Y)] = [0] >= [0] = [true()] [gcd(s(X), s(Y))] = [1] X + [1] Y + [12] > [1] X + [1] Y + [8] = [if(le(Y, X), s(X), s(Y))] [gcd(s(X), 0())] = [1] X + [15] > [1] X + [4] = [s(X)] [gcd(0(), Y)] = [1] Y + [11] > [7] = [0()] [if(false(), s(X), s(Y))] = [1] X + [1] Y + [8] >= [1] X + [1] Y + [8] = [gcd(minus(Y, X), s(X))] [if(true(), s(X), s(Y))] = [1] X + [1] Y + [8] >= [1] X + [1] Y + [8] = [gcd(minus(X, Y), s(Y))] Further, it can be verified that all rules not oriented are covered by the weightgap condition. We are left with following problem, upon which TcT provides the certificate MAYBE. Strict Trs: { minus(X, s(Y)) -> pred(minus(X, Y)) , le(s(X), s(Y)) -> le(X, Y) } Weak Trs: { minus(X, 0()) -> X , pred(s(X)) -> X , le(s(X), 0()) -> false() , le(0(), Y) -> true() , gcd(s(X), s(Y)) -> if(le(Y, X), s(X), s(Y)) , gcd(s(X), 0()) -> s(X) , gcd(0(), Y) -> 0() , if(false(), s(X), s(Y)) -> gcd(minus(Y, X), s(X)) , if(true(), s(X), s(Y)) -> gcd(minus(X, Y), s(Y)) } Obligation: runtime complexity Answer: MAYBE None of the processors succeeded. Details of failed attempt(s): ----------------------------- 1) 'empty' failed due to the following reason: Empty strict component of the problem is NOT empty. 2) 'WithProblem' failed due to the following reason: None of the processors succeeded. Details of failed attempt(s): ----------------------------- 1) 'empty' failed due to the following reason: Empty strict component of the problem is NOT empty. 2) 'Fastest' failed due to the following reason: None of the processors succeeded. Details of failed attempt(s): ----------------------------- 1) 'WithProblem' failed due to the following reason: We use the processor 'polynomial interpretation' to orient following rules strictly. Trs: { le(s(X), s(Y)) -> le(X, Y) } The induced complexity on above rules (modulo remaining rules) is YES(?,O(n^2)) . These rules are moved into the corresponding weak component(s). Sub-proof: ---------- The following argument positions are considered usable: Uargs(pred) = {1}, Uargs(gcd) = {1}, Uargs(if) = {1} TcT has computed the following constructor-restricted polynomial interpretation. [minus](x1, x2) = x1 [s](x1) = 1 + x1 [pred](x1) = x1 [0]() = 0 [le](x1, x2) = x2 [false]() = 0 [true]() = 0 [gcd](x1, x2) = 3*x1 + x1*x2 + x1^2 + x2 + x2^2 [if](x1, x2, x3) = 2*x1 + x2 + x2*x3 + x2^2 + x3 + x3^2 The following symbols are considered usable {minus, pred, le, gcd, if} This order satisfies the following ordering constraints. [minus(X, s(Y))] = X >= X = [pred(minus(X, Y))] [minus(X, 0())] = X >= X = [X] [pred(s(X))] = 1 + X > X = [X] [le(s(X), s(Y))] = 1 + Y > Y = [le(X, Y)] [le(s(X), 0())] = >= = [false()] [le(0(), Y)] = Y >= = [true()] [gcd(s(X), s(Y))] = 7 + 6*X + 4*Y + X*Y + X^2 + Y^2 > 6*X + 5 + 4*Y + X*Y + X^2 + Y^2 = [if(le(Y, X), s(X), s(Y))] [gcd(s(X), 0())] = 4 + 5*X + X^2 > 1 + X = [s(X)] [gcd(0(), Y)] = Y + Y^2 >= = [0()] [if(false(), s(X), s(Y))] = 5 + 4*X + 4*Y + X*Y + X^2 + Y^2 > 4*Y + Y*X + Y^2 + 2 + 3*X + X^2 = [gcd(minus(Y, X), s(X))] [if(true(), s(X), s(Y))] = 5 + 4*X + 4*Y + X*Y + X^2 + Y^2 > 4*X + X*Y + X^2 + 2 + 3*Y + Y^2 = [gcd(minus(X, Y), s(Y))] We return to the main proof. We are left with following problem, upon which TcT provides the certificate MAYBE. Strict Trs: { minus(X, s(Y)) -> pred(minus(X, Y)) } Weak Trs: { minus(X, 0()) -> X , pred(s(X)) -> X , le(s(X), s(Y)) -> le(X, Y) , le(s(X), 0()) -> false() , le(0(), Y) -> true() , gcd(s(X), s(Y)) -> if(le(Y, X), s(X), s(Y)) , gcd(s(X), 0()) -> s(X) , gcd(0(), Y) -> 0() , if(false(), s(X), s(Y)) -> gcd(minus(Y, X), s(X)) , if(true(), s(X), s(Y)) -> gcd(minus(X, Y), s(Y)) } Obligation: runtime complexity Answer: MAYBE None of the processors succeeded. Details of failed attempt(s): ----------------------------- 1) 'empty' failed due to the following reason: Empty strict component of the problem is NOT empty. 2) 'WithProblem' failed due to the following reason: Empty strict component of the problem is NOT empty. 2) 'WithProblem' failed due to the following reason: None of the processors succeeded. Details of failed attempt(s): ----------------------------- 1) 'empty' failed due to the following reason: Empty strict component of the problem is NOT empty. 2) 'WithProblem' failed due to the following reason: We use the processor 'matrix interpretation of dimension 2' to orient following rules strictly. Trs: { le(s(X), s(Y)) -> le(X, Y) } The induced complexity on above rules (modulo remaining rules) is YES(?,O(n^2)) . These rules are moved into the corresponding weak component(s). Sub-proof: ---------- The following argument positions are usable: Uargs(pred) = {1}, Uargs(gcd) = {1}, Uargs(if) = {1} TcT has computed the following constructor-based matrix interpretation satisfying not(EDA). [minus](x1, x2) = [1 0] x1 + [0] [0 1] [0] [s](x1) = [1 1] x1 + [0] [0 1] [2] [pred](x1) = [1 0] x1 + [0] [0 1] [0] [0] = [0] [4] [le](x1, x2) = [0 1] x2 + [0] [0 1] [0] [false] = [0] [0] [true] = [0] [0] [gcd](x1, x2) = [2 3] x1 + [2 1] x2 + [0] [1 0] [1 0] [4] [if](x1, x2, x3) = [1 1] x1 + [2 1] x2 + [2 1] x3 + [0] [0 0] [1 0] [1 0] [4] The following symbols are considered usable {minus, pred, le, gcd, if} The order satisfies the following ordering constraints: [minus(X, s(Y))] = [1 0] X + [0] [0 1] [0] >= [1 0] X + [0] [0 1] [0] = [pred(minus(X, Y))] [minus(X, 0())] = [1 0] X + [0] [0 1] [0] >= [1 0] X + [0] [0 1] [0] = [X] [pred(s(X))] = [1 1] X + [0] [0 1] [2] >= [1 0] X + [0] [0 1] [0] = [X] [le(s(X), s(Y))] = [0 1] Y + [2] [0 1] [2] > [0 1] Y + [0] [0 1] [0] = [le(X, Y)] [le(s(X), 0())] = [4] [4] > [0] [0] = [false()] [le(0(), Y)] = [0 1] Y + [0] [0 1] [0] >= [0] [0] = [true()] [gcd(s(X), s(Y))] = [2 5] X + [2 3] Y + [8] [1 1] [1 1] [4] > [2 5] X + [2 3] Y + [4] [1 1] [1 1] [4] = [if(le(Y, X), s(X), s(Y))] [gcd(s(X), 0())] = [2 5] X + [10] [1 1] [4] > [1 1] X + [0] [0 1] [2] = [s(X)] [gcd(0(), Y)] = [2 1] Y + [12] [1 0] [4] > [0] [4] = [0()] [if(false(), s(X), s(Y))] = [2 3] X + [2 3] Y + [4] [1 1] [1 1] [4] > [2 3] X + [2 3] Y + [2] [1 1] [1 0] [4] = [gcd(minus(Y, X), s(X))] [if(true(), s(X), s(Y))] = [2 3] X + [2 3] Y + [4] [1 1] [1 1] [4] > [2 3] X + [2 3] Y + [2] [1 0] [1 1] [4] = [gcd(minus(X, Y), s(Y))] We return to the main proof. We are left with following problem, upon which TcT provides the certificate MAYBE. Strict Trs: { minus(X, s(Y)) -> pred(minus(X, Y)) } Weak Trs: { minus(X, 0()) -> X , pred(s(X)) -> X , le(s(X), s(Y)) -> le(X, Y) , le(s(X), 0()) -> false() , le(0(), Y) -> true() , gcd(s(X), s(Y)) -> if(le(Y, X), s(X), s(Y)) , gcd(s(X), 0()) -> s(X) , gcd(0(), Y) -> 0() , if(false(), s(X), s(Y)) -> gcd(minus(Y, X), s(X)) , if(true(), s(X), s(Y)) -> gcd(minus(X, Y), s(Y)) } Obligation: runtime complexity Answer: MAYBE None of the processors succeeded. Details of failed attempt(s): ----------------------------- 1) 'empty' failed due to the following reason: Empty strict component of the problem is NOT empty. 2) 'WithProblem' failed due to the following reason: None of the processors succeeded. Details of failed attempt(s): ----------------------------- 1) 'empty' failed due to the following reason: Empty strict component of the problem is NOT empty. 2) 'WithProblem' failed due to the following reason: Empty strict component of the problem is NOT empty. 2) 'Best' failed due to the following reason: None of the processors succeeded. Details of failed attempt(s): ----------------------------- 1) 'bsearch-popstar (timeout of 60 seconds)' failed due to the following reason: The processor is inapplicable, reason: Processor only applicable for innermost runtime complexity analysis 2) 'Polynomial Path Order (PS) (timeout of 60 seconds)' failed due to the following reason: The processor is inapplicable, reason: Processor only applicable for innermost runtime complexity analysis 3) 'Fastest (timeout of 5 seconds) (timeout of 60 seconds)' failed due to the following reason: None of the processors succeeded. Details of failed attempt(s): ----------------------------- 1) 'Bounds with perSymbol-enrichment and initial automaton 'match'' failed due to the following reason: match-boundness of the problem could not be verified. 2) 'Bounds with minimal-enrichment and initial automaton 'match'' failed due to the following reason: match-boundness of the problem could not be verified. 3) 'Innermost Weak Dependency Pairs (timeout of 60 seconds)' failed due to the following reason: We add the following weak dependency pairs: Strict DPs: { minus^#(X, s(Y)) -> c_1(pred^#(minus(X, Y))) , minus^#(X, 0()) -> c_2(X) , pred^#(s(X)) -> c_3(X) , le^#(s(X), s(Y)) -> c_4(le^#(X, Y)) , le^#(s(X), 0()) -> c_5() , le^#(0(), Y) -> c_6() , gcd^#(s(X), s(Y)) -> c_7(if^#(le(Y, X), s(X), s(Y))) , gcd^#(s(X), 0()) -> c_8(X) , gcd^#(0(), Y) -> c_9() , if^#(false(), s(X), s(Y)) -> c_10(gcd^#(minus(Y, X), s(X))) , if^#(true(), s(X), s(Y)) -> c_11(gcd^#(minus(X, Y), s(Y))) } and mark the set of starting terms. We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { minus^#(X, s(Y)) -> c_1(pred^#(minus(X, Y))) , minus^#(X, 0()) -> c_2(X) , pred^#(s(X)) -> c_3(X) , le^#(s(X), s(Y)) -> c_4(le^#(X, Y)) , le^#(s(X), 0()) -> c_5() , le^#(0(), Y) -> c_6() , gcd^#(s(X), s(Y)) -> c_7(if^#(le(Y, X), s(X), s(Y))) , gcd^#(s(X), 0()) -> c_8(X) , gcd^#(0(), Y) -> c_9() , if^#(false(), s(X), s(Y)) -> c_10(gcd^#(minus(Y, X), s(X))) , if^#(true(), s(X), s(Y)) -> c_11(gcd^#(minus(X, Y), s(Y))) } Strict Trs: { minus(X, s(Y)) -> pred(minus(X, Y)) , minus(X, 0()) -> X , pred(s(X)) -> X , le(s(X), s(Y)) -> le(X, Y) , le(s(X), 0()) -> false() , le(0(), Y) -> true() , gcd(s(X), s(Y)) -> if(le(Y, X), s(X), s(Y)) , gcd(s(X), 0()) -> s(X) , gcd(0(), Y) -> 0() , if(false(), s(X), s(Y)) -> gcd(minus(Y, X), s(X)) , if(true(), s(X), s(Y)) -> gcd(minus(X, Y), s(Y)) } Obligation: runtime complexity Answer: MAYBE We estimate the number of application of {5,6,9} by applications of Pre({5,6,9}) = {2,3,4,8,10,11}. Here rules are labeled as follows: DPs: { 1: minus^#(X, s(Y)) -> c_1(pred^#(minus(X, Y))) , 2: minus^#(X, 0()) -> c_2(X) , 3: pred^#(s(X)) -> c_3(X) , 4: le^#(s(X), s(Y)) -> c_4(le^#(X, Y)) , 5: le^#(s(X), 0()) -> c_5() , 6: le^#(0(), Y) -> c_6() , 7: gcd^#(s(X), s(Y)) -> c_7(if^#(le(Y, X), s(X), s(Y))) , 8: gcd^#(s(X), 0()) -> c_8(X) , 9: gcd^#(0(), Y) -> c_9() , 10: if^#(false(), s(X), s(Y)) -> c_10(gcd^#(minus(Y, X), s(X))) , 11: if^#(true(), s(X), s(Y)) -> c_11(gcd^#(minus(X, Y), s(Y))) } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { minus^#(X, s(Y)) -> c_1(pred^#(minus(X, Y))) , minus^#(X, 0()) -> c_2(X) , pred^#(s(X)) -> c_3(X) , le^#(s(X), s(Y)) -> c_4(le^#(X, Y)) , gcd^#(s(X), s(Y)) -> c_7(if^#(le(Y, X), s(X), s(Y))) , gcd^#(s(X), 0()) -> c_8(X) , if^#(false(), s(X), s(Y)) -> c_10(gcd^#(minus(Y, X), s(X))) , if^#(true(), s(X), s(Y)) -> c_11(gcd^#(minus(X, Y), s(Y))) } Strict Trs: { minus(X, s(Y)) -> pred(minus(X, Y)) , minus(X, 0()) -> X , pred(s(X)) -> X , le(s(X), s(Y)) -> le(X, Y) , le(s(X), 0()) -> false() , le(0(), Y) -> true() , gcd(s(X), s(Y)) -> if(le(Y, X), s(X), s(Y)) , gcd(s(X), 0()) -> s(X) , gcd(0(), Y) -> 0() , if(false(), s(X), s(Y)) -> gcd(minus(Y, X), s(X)) , if(true(), s(X), s(Y)) -> gcd(minus(X, Y), s(Y)) } Weak DPs: { le^#(s(X), 0()) -> c_5() , le^#(0(), Y) -> c_6() , gcd^#(0(), Y) -> c_9() } Obligation: runtime complexity Answer: MAYBE Empty strict component of the problem is NOT empty. Arrrr..