MAYBE We are left with following problem, upon which TcT provides the certificate MAYBE. Strict Trs: { prod(xs) -> prodIter(xs, s(0())) , prodIter(xs, x) -> ifProd(isempty(xs), xs, x) , ifProd(true(), xs, x) -> x , ifProd(false(), xs, x) -> prodIter(tail(xs), times(x, head(xs))) , isempty(nil()) -> true() , isempty(cons(x, xs)) -> false() , tail(nil()) -> nil() , tail(cons(x, xs)) -> xs , times(x, y) -> timesIter(x, y, 0(), 0()) , head(nil()) -> error() , head(cons(x, xs)) -> x , plus(s(x), y) -> s(plus(x, y)) , plus(0(), y) -> y , timesIter(x, y, z, u) -> ifTimes(ge(u, x), x, y, z, u) , ifTimes(true(), x, y, z, u) -> z , ifTimes(false(), x, y, z, u) -> timesIter(x, y, plus(y, z), s(u)) , ge(x, 0()) -> true() , ge(s(x), s(y)) -> ge(x, y) , ge(0(), s(y)) -> false() , a() -> b() , a() -> c() } Obligation: innermost runtime complexity Answer: MAYBE We add following dependency tuples: Strict DPs: { prod^#(xs) -> c_1(prodIter^#(xs, s(0()))) , prodIter^#(xs, x) -> c_2(ifProd^#(isempty(xs), xs, x), isempty^#(xs)) , ifProd^#(true(), xs, x) -> c_3() , ifProd^#(false(), xs, x) -> c_4(prodIter^#(tail(xs), times(x, head(xs))), tail^#(xs), times^#(x, head(xs)), head^#(xs)) , isempty^#(nil()) -> c_5() , isempty^#(cons(x, xs)) -> c_6() , tail^#(nil()) -> c_7() , tail^#(cons(x, xs)) -> c_8() , times^#(x, y) -> c_9(timesIter^#(x, y, 0(), 0())) , head^#(nil()) -> c_10() , head^#(cons(x, xs)) -> c_11() , timesIter^#(x, y, z, u) -> c_14(ifTimes^#(ge(u, x), x, y, z, u), ge^#(u, x)) , plus^#(s(x), y) -> c_12(plus^#(x, y)) , plus^#(0(), y) -> c_13() , ifTimes^#(true(), x, y, z, u) -> c_15() , ifTimes^#(false(), x, y, z, u) -> c_16(timesIter^#(x, y, plus(y, z), s(u)), plus^#(y, z)) , ge^#(x, 0()) -> c_17() , ge^#(s(x), s(y)) -> c_18(ge^#(x, y)) , ge^#(0(), s(y)) -> c_19() , a^#() -> c_20() , a^#() -> c_21() } and mark the set of starting terms. We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { prod^#(xs) -> c_1(prodIter^#(xs, s(0()))) , prodIter^#(xs, x) -> c_2(ifProd^#(isempty(xs), xs, x), isempty^#(xs)) , ifProd^#(true(), xs, x) -> c_3() , ifProd^#(false(), xs, x) -> c_4(prodIter^#(tail(xs), times(x, head(xs))), tail^#(xs), times^#(x, head(xs)), head^#(xs)) , isempty^#(nil()) -> c_5() , isempty^#(cons(x, xs)) -> c_6() , tail^#(nil()) -> c_7() , tail^#(cons(x, xs)) -> c_8() , times^#(x, y) -> c_9(timesIter^#(x, y, 0(), 0())) , head^#(nil()) -> c_10() , head^#(cons(x, xs)) -> c_11() , timesIter^#(x, y, z, u) -> c_14(ifTimes^#(ge(u, x), x, y, z, u), ge^#(u, x)) , plus^#(s(x), y) -> c_12(plus^#(x, y)) , plus^#(0(), y) -> c_13() , ifTimes^#(true(), x, y, z, u) -> c_15() , ifTimes^#(false(), x, y, z, u) -> c_16(timesIter^#(x, y, plus(y, z), s(u)), plus^#(y, z)) , ge^#(x, 0()) -> c_17() , ge^#(s(x), s(y)) -> c_18(ge^#(x, y)) , ge^#(0(), s(y)) -> c_19() , a^#() -> c_20() , a^#() -> c_21() } Weak Trs: { prod(xs) -> prodIter(xs, s(0())) , prodIter(xs, x) -> ifProd(isempty(xs), xs, x) , ifProd(true(), xs, x) -> x , ifProd(false(), xs, x) -> prodIter(tail(xs), times(x, head(xs))) , isempty(nil()) -> true() , isempty(cons(x, xs)) -> false() , tail(nil()) -> nil() , tail(cons(x, xs)) -> xs , times(x, y) -> timesIter(x, y, 0(), 0()) , head(nil()) -> error() , head(cons(x, xs)) -> x , plus(s(x), y) -> s(plus(x, y)) , plus(0(), y) -> y , timesIter(x, y, z, u) -> ifTimes(ge(u, x), x, y, z, u) , ifTimes(true(), x, y, z, u) -> z , ifTimes(false(), x, y, z, u) -> timesIter(x, y, plus(y, z), s(u)) , ge(x, 0()) -> true() , ge(s(x), s(y)) -> ge(x, y) , ge(0(), s(y)) -> false() , a() -> b() , a() -> c() } Obligation: innermost runtime complexity Answer: MAYBE We estimate the number of application of {3,5,6,7,8,10,11,14,15,17,19,20,21} by applications of Pre({3,5,6,7,8,10,11,14,15,17,19,20,21}) = {2,4,12,13,16,18}. Here rules are labeled as follows: DPs: { 1: prod^#(xs) -> c_1(prodIter^#(xs, s(0()))) , 2: prodIter^#(xs, x) -> c_2(ifProd^#(isempty(xs), xs, x), isempty^#(xs)) , 3: ifProd^#(true(), xs, x) -> c_3() , 4: ifProd^#(false(), xs, x) -> c_4(prodIter^#(tail(xs), times(x, head(xs))), tail^#(xs), times^#(x, head(xs)), head^#(xs)) , 5: isempty^#(nil()) -> c_5() , 6: isempty^#(cons(x, xs)) -> c_6() , 7: tail^#(nil()) -> c_7() , 8: tail^#(cons(x, xs)) -> c_8() , 9: times^#(x, y) -> c_9(timesIter^#(x, y, 0(), 0())) , 10: head^#(nil()) -> c_10() , 11: head^#(cons(x, xs)) -> c_11() , 12: timesIter^#(x, y, z, u) -> c_14(ifTimes^#(ge(u, x), x, y, z, u), ge^#(u, x)) , 13: plus^#(s(x), y) -> c_12(plus^#(x, y)) , 14: plus^#(0(), y) -> c_13() , 15: ifTimes^#(true(), x, y, z, u) -> c_15() , 16: ifTimes^#(false(), x, y, z, u) -> c_16(timesIter^#(x, y, plus(y, z), s(u)), plus^#(y, z)) , 17: ge^#(x, 0()) -> c_17() , 18: ge^#(s(x), s(y)) -> c_18(ge^#(x, y)) , 19: ge^#(0(), s(y)) -> c_19() , 20: a^#() -> c_20() , 21: a^#() -> c_21() } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { prod^#(xs) -> c_1(prodIter^#(xs, s(0()))) , prodIter^#(xs, x) -> c_2(ifProd^#(isempty(xs), xs, x), isempty^#(xs)) , ifProd^#(false(), xs, x) -> c_4(prodIter^#(tail(xs), times(x, head(xs))), tail^#(xs), times^#(x, head(xs)), head^#(xs)) , times^#(x, y) -> c_9(timesIter^#(x, y, 0(), 0())) , timesIter^#(x, y, z, u) -> c_14(ifTimes^#(ge(u, x), x, y, z, u), ge^#(u, x)) , plus^#(s(x), y) -> c_12(plus^#(x, y)) , ifTimes^#(false(), x, y, z, u) -> c_16(timesIter^#(x, y, plus(y, z), s(u)), plus^#(y, z)) , ge^#(s(x), s(y)) -> c_18(ge^#(x, y)) } Weak DPs: { ifProd^#(true(), xs, x) -> c_3() , isempty^#(nil()) -> c_5() , isempty^#(cons(x, xs)) -> c_6() , tail^#(nil()) -> c_7() , tail^#(cons(x, xs)) -> c_8() , head^#(nil()) -> c_10() , head^#(cons(x, xs)) -> c_11() , plus^#(0(), y) -> c_13() , ifTimes^#(true(), x, y, z, u) -> c_15() , ge^#(x, 0()) -> c_17() , ge^#(0(), s(y)) -> c_19() , a^#() -> c_20() , a^#() -> c_21() } Weak Trs: { prod(xs) -> prodIter(xs, s(0())) , prodIter(xs, x) -> ifProd(isempty(xs), xs, x) , ifProd(true(), xs, x) -> x , ifProd(false(), xs, x) -> prodIter(tail(xs), times(x, head(xs))) , isempty(nil()) -> true() , isempty(cons(x, xs)) -> false() , tail(nil()) -> nil() , tail(cons(x, xs)) -> xs , times(x, y) -> timesIter(x, y, 0(), 0()) , head(nil()) -> error() , head(cons(x, xs)) -> x , plus(s(x), y) -> s(plus(x, y)) , plus(0(), y) -> y , timesIter(x, y, z, u) -> ifTimes(ge(u, x), x, y, z, u) , ifTimes(true(), x, y, z, u) -> z , ifTimes(false(), x, y, z, u) -> timesIter(x, y, plus(y, z), s(u)) , ge(x, 0()) -> true() , ge(s(x), s(y)) -> ge(x, y) , ge(0(), s(y)) -> false() , a() -> b() , a() -> c() } Obligation: innermost runtime complexity Answer: MAYBE The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. { ifProd^#(true(), xs, x) -> c_3() , isempty^#(nil()) -> c_5() , isempty^#(cons(x, xs)) -> c_6() , tail^#(nil()) -> c_7() , tail^#(cons(x, xs)) -> c_8() , head^#(nil()) -> c_10() , head^#(cons(x, xs)) -> c_11() , plus^#(0(), y) -> c_13() , ifTimes^#(true(), x, y, z, u) -> c_15() , ge^#(x, 0()) -> c_17() , ge^#(0(), s(y)) -> c_19() , a^#() -> c_20() , a^#() -> c_21() } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { prod^#(xs) -> c_1(prodIter^#(xs, s(0()))) , prodIter^#(xs, x) -> c_2(ifProd^#(isempty(xs), xs, x), isempty^#(xs)) , ifProd^#(false(), xs, x) -> c_4(prodIter^#(tail(xs), times(x, head(xs))), tail^#(xs), times^#(x, head(xs)), head^#(xs)) , times^#(x, y) -> c_9(timesIter^#(x, y, 0(), 0())) , timesIter^#(x, y, z, u) -> c_14(ifTimes^#(ge(u, x), x, y, z, u), ge^#(u, x)) , plus^#(s(x), y) -> c_12(plus^#(x, y)) , ifTimes^#(false(), x, y, z, u) -> c_16(timesIter^#(x, y, plus(y, z), s(u)), plus^#(y, z)) , ge^#(s(x), s(y)) -> c_18(ge^#(x, y)) } Weak Trs: { prod(xs) -> prodIter(xs, s(0())) , prodIter(xs, x) -> ifProd(isempty(xs), xs, x) , ifProd(true(), xs, x) -> x , ifProd(false(), xs, x) -> prodIter(tail(xs), times(x, head(xs))) , isempty(nil()) -> true() , isempty(cons(x, xs)) -> false() , tail(nil()) -> nil() , tail(cons(x, xs)) -> xs , times(x, y) -> timesIter(x, y, 0(), 0()) , head(nil()) -> error() , head(cons(x, xs)) -> x , plus(s(x), y) -> s(plus(x, y)) , plus(0(), y) -> y , timesIter(x, y, z, u) -> ifTimes(ge(u, x), x, y, z, u) , ifTimes(true(), x, y, z, u) -> z , ifTimes(false(), x, y, z, u) -> timesIter(x, y, plus(y, z), s(u)) , ge(x, 0()) -> true() , ge(s(x), s(y)) -> ge(x, y) , ge(0(), s(y)) -> false() , a() -> b() , a() -> c() } Obligation: innermost runtime complexity Answer: MAYBE Due to missing edges in the dependency-graph, the right-hand sides of following rules could be simplified: { prodIter^#(xs, x) -> c_2(ifProd^#(isempty(xs), xs, x), isempty^#(xs)) , ifProd^#(false(), xs, x) -> c_4(prodIter^#(tail(xs), times(x, head(xs))), tail^#(xs), times^#(x, head(xs)), head^#(xs)) } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { prod^#(xs) -> c_1(prodIter^#(xs, s(0()))) , prodIter^#(xs, x) -> c_2(ifProd^#(isempty(xs), xs, x)) , ifProd^#(false(), xs, x) -> c_3(prodIter^#(tail(xs), times(x, head(xs))), times^#(x, head(xs))) , times^#(x, y) -> c_4(timesIter^#(x, y, 0(), 0())) , timesIter^#(x, y, z, u) -> c_5(ifTimes^#(ge(u, x), x, y, z, u), ge^#(u, x)) , plus^#(s(x), y) -> c_6(plus^#(x, y)) , ifTimes^#(false(), x, y, z, u) -> c_7(timesIter^#(x, y, plus(y, z), s(u)), plus^#(y, z)) , ge^#(s(x), s(y)) -> c_8(ge^#(x, y)) } Weak Trs: { prod(xs) -> prodIter(xs, s(0())) , prodIter(xs, x) -> ifProd(isempty(xs), xs, x) , ifProd(true(), xs, x) -> x , ifProd(false(), xs, x) -> prodIter(tail(xs), times(x, head(xs))) , isempty(nil()) -> true() , isempty(cons(x, xs)) -> false() , tail(nil()) -> nil() , tail(cons(x, xs)) -> xs , times(x, y) -> timesIter(x, y, 0(), 0()) , head(nil()) -> error() , head(cons(x, xs)) -> x , plus(s(x), y) -> s(plus(x, y)) , plus(0(), y) -> y , timesIter(x, y, z, u) -> ifTimes(ge(u, x), x, y, z, u) , ifTimes(true(), x, y, z, u) -> z , ifTimes(false(), x, y, z, u) -> timesIter(x, y, plus(y, z), s(u)) , ge(x, 0()) -> true() , ge(s(x), s(y)) -> ge(x, y) , ge(0(), s(y)) -> false() , a() -> b() , a() -> c() } Obligation: innermost runtime complexity Answer: MAYBE We replace rewrite rules by usable rules: Weak Usable Rules: { isempty(nil()) -> true() , isempty(cons(x, xs)) -> false() , tail(nil()) -> nil() , tail(cons(x, xs)) -> xs , times(x, y) -> timesIter(x, y, 0(), 0()) , head(nil()) -> error() , head(cons(x, xs)) -> x , plus(s(x), y) -> s(plus(x, y)) , plus(0(), y) -> y , timesIter(x, y, z, u) -> ifTimes(ge(u, x), x, y, z, u) , ifTimes(true(), x, y, z, u) -> z , ifTimes(false(), x, y, z, u) -> timesIter(x, y, plus(y, z), s(u)) , ge(x, 0()) -> true() , ge(s(x), s(y)) -> ge(x, y) , ge(0(), s(y)) -> false() } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { prod^#(xs) -> c_1(prodIter^#(xs, s(0()))) , prodIter^#(xs, x) -> c_2(ifProd^#(isempty(xs), xs, x)) , ifProd^#(false(), xs, x) -> c_3(prodIter^#(tail(xs), times(x, head(xs))), times^#(x, head(xs))) , times^#(x, y) -> c_4(timesIter^#(x, y, 0(), 0())) , timesIter^#(x, y, z, u) -> c_5(ifTimes^#(ge(u, x), x, y, z, u), ge^#(u, x)) , plus^#(s(x), y) -> c_6(plus^#(x, y)) , ifTimes^#(false(), x, y, z, u) -> c_7(timesIter^#(x, y, plus(y, z), s(u)), plus^#(y, z)) , ge^#(s(x), s(y)) -> c_8(ge^#(x, y)) } Weak Trs: { isempty(nil()) -> true() , isempty(cons(x, xs)) -> false() , tail(nil()) -> nil() , tail(cons(x, xs)) -> xs , times(x, y) -> timesIter(x, y, 0(), 0()) , head(nil()) -> error() , head(cons(x, xs)) -> x , plus(s(x), y) -> s(plus(x, y)) , plus(0(), y) -> y , timesIter(x, y, z, u) -> ifTimes(ge(u, x), x, y, z, u) , ifTimes(true(), x, y, z, u) -> z , ifTimes(false(), x, y, z, u) -> timesIter(x, y, plus(y, z), s(u)) , ge(x, 0()) -> true() , ge(s(x), s(y)) -> ge(x, y) , ge(0(), s(y)) -> false() } Obligation: innermost runtime complexity Answer: MAYBE Consider the dependency graph 1: prod^#(xs) -> c_1(prodIter^#(xs, s(0()))) -->_1 prodIter^#(xs, x) -> c_2(ifProd^#(isempty(xs), xs, x)) :2 2: prodIter^#(xs, x) -> c_2(ifProd^#(isempty(xs), xs, x)) -->_1 ifProd^#(false(), xs, x) -> c_3(prodIter^#(tail(xs), times(x, head(xs))), times^#(x, head(xs))) :3 3: ifProd^#(false(), xs, x) -> c_3(prodIter^#(tail(xs), times(x, head(xs))), times^#(x, head(xs))) -->_2 times^#(x, y) -> c_4(timesIter^#(x, y, 0(), 0())) :4 -->_1 prodIter^#(xs, x) -> c_2(ifProd^#(isempty(xs), xs, x)) :2 4: times^#(x, y) -> c_4(timesIter^#(x, y, 0(), 0())) -->_1 timesIter^#(x, y, z, u) -> c_5(ifTimes^#(ge(u, x), x, y, z, u), ge^#(u, x)) :5 5: timesIter^#(x, y, z, u) -> c_5(ifTimes^#(ge(u, x), x, y, z, u), ge^#(u, x)) -->_2 ge^#(s(x), s(y)) -> c_8(ge^#(x, y)) :8 -->_1 ifTimes^#(false(), x, y, z, u) -> c_7(timesIter^#(x, y, plus(y, z), s(u)), plus^#(y, z)) :7 6: plus^#(s(x), y) -> c_6(plus^#(x, y)) -->_1 plus^#(s(x), y) -> c_6(plus^#(x, y)) :6 7: ifTimes^#(false(), x, y, z, u) -> c_7(timesIter^#(x, y, plus(y, z), s(u)), plus^#(y, z)) -->_2 plus^#(s(x), y) -> c_6(plus^#(x, y)) :6 -->_1 timesIter^#(x, y, z, u) -> c_5(ifTimes^#(ge(u, x), x, y, z, u), ge^#(u, x)) :5 8: ge^#(s(x), s(y)) -> c_8(ge^#(x, y)) -->_1 ge^#(s(x), s(y)) -> c_8(ge^#(x, y)) :8 Following roots of the dependency graph are removed, as the considered set of starting terms is closed under reduction with respect to these rules (modulo compound contexts). { prod^#(xs) -> c_1(prodIter^#(xs, s(0()))) } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { prodIter^#(xs, x) -> c_2(ifProd^#(isempty(xs), xs, x)) , ifProd^#(false(), xs, x) -> c_3(prodIter^#(tail(xs), times(x, head(xs))), times^#(x, head(xs))) , times^#(x, y) -> c_4(timesIter^#(x, y, 0(), 0())) , timesIter^#(x, y, z, u) -> c_5(ifTimes^#(ge(u, x), x, y, z, u), ge^#(u, x)) , plus^#(s(x), y) -> c_6(plus^#(x, y)) , ifTimes^#(false(), x, y, z, u) -> c_7(timesIter^#(x, y, plus(y, z), s(u)), plus^#(y, z)) , ge^#(s(x), s(y)) -> c_8(ge^#(x, y)) } Weak Trs: { isempty(nil()) -> true() , isempty(cons(x, xs)) -> false() , tail(nil()) -> nil() , tail(cons(x, xs)) -> xs , times(x, y) -> timesIter(x, y, 0(), 0()) , head(nil()) -> error() , head(cons(x, xs)) -> x , plus(s(x), y) -> s(plus(x, y)) , plus(0(), y) -> y , timesIter(x, y, z, u) -> ifTimes(ge(u, x), x, y, z, u) , ifTimes(true(), x, y, z, u) -> z , ifTimes(false(), x, y, z, u) -> timesIter(x, y, plus(y, z), s(u)) , ge(x, 0()) -> true() , ge(s(x), s(y)) -> ge(x, y) , ge(0(), s(y)) -> false() } Obligation: innermost runtime complexity Answer: MAYBE None of the processors succeeded. Details of failed attempt(s): ----------------------------- 1) 'matrices' failed due to the following reason: None of the processors succeeded. Details of failed attempt(s): ----------------------------- 1) 'matrix interpretation of dimension 4' failed due to the following reason: The input cannot be shown compatible 2) 'matrix interpretation of dimension 3' failed due to the following reason: The input cannot be shown compatible 3) 'matrix interpretation of dimension 3' failed due to the following reason: The input cannot be shown compatible 4) 'matrix interpretation of dimension 2' failed due to the following reason: The input cannot be shown compatible 5) 'matrix interpretation of dimension 2' failed due to the following reason: The input cannot be shown compatible 6) 'matrix interpretation of dimension 1' failed due to the following reason: The input cannot be shown compatible 2) 'empty' failed due to the following reason: Empty strict component of the problem is NOT empty. Arrrr..