MAYBE We are left with following problem, upon which TcT provides the certificate MAYBE. Strict Trs: { is_empty(nil()) -> true() , is_empty(cons(x, l)) -> false() , hd(cons(x, l)) -> x , tl(cons(x, l)) -> l , append(l1, l2) -> ifappend(l1, l2, is_empty(l1)) , ifappend(l1, l2, true()) -> l2 , ifappend(l1, l2, false()) -> cons(hd(l1), append(tl(l1), l2)) } Obligation: innermost runtime complexity Answer: MAYBE We add following weak dependency pairs: Strict DPs: { is_empty^#(nil()) -> c_1() , is_empty^#(cons(x, l)) -> c_2() , hd^#(cons(x, l)) -> c_3() , tl^#(cons(x, l)) -> c_4() , append^#(l1, l2) -> c_5(ifappend^#(l1, l2, is_empty(l1))) , ifappend^#(l1, l2, true()) -> c_6() , ifappend^#(l1, l2, false()) -> c_7(hd^#(l1), append^#(tl(l1), l2)) } and mark the set of starting terms. We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { is_empty^#(nil()) -> c_1() , is_empty^#(cons(x, l)) -> c_2() , hd^#(cons(x, l)) -> c_3() , tl^#(cons(x, l)) -> c_4() , append^#(l1, l2) -> c_5(ifappend^#(l1, l2, is_empty(l1))) , ifappend^#(l1, l2, true()) -> c_6() , ifappend^#(l1, l2, false()) -> c_7(hd^#(l1), append^#(tl(l1), l2)) } Strict Trs: { is_empty(nil()) -> true() , is_empty(cons(x, l)) -> false() , hd(cons(x, l)) -> x , tl(cons(x, l)) -> l , append(l1, l2) -> ifappend(l1, l2, is_empty(l1)) , ifappend(l1, l2, true()) -> l2 , ifappend(l1, l2, false()) -> cons(hd(l1), append(tl(l1), l2)) } Obligation: innermost runtime complexity Answer: MAYBE We replace rewrite rules by usable rules: Strict Usable Rules: { is_empty(nil()) -> true() , is_empty(cons(x, l)) -> false() , tl(cons(x, l)) -> l } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { is_empty^#(nil()) -> c_1() , is_empty^#(cons(x, l)) -> c_2() , hd^#(cons(x, l)) -> c_3() , tl^#(cons(x, l)) -> c_4() , append^#(l1, l2) -> c_5(ifappend^#(l1, l2, is_empty(l1))) , ifappend^#(l1, l2, true()) -> c_6() , ifappend^#(l1, l2, false()) -> c_7(hd^#(l1), append^#(tl(l1), l2)) } Strict Trs: { is_empty(nil()) -> true() , is_empty(cons(x, l)) -> false() , tl(cons(x, l)) -> l } Obligation: innermost runtime complexity Answer: MAYBE The weightgap principle applies (using the following constant growth matrix-interpretation) The following argument positions are usable: Uargs(append^#) = {1}, Uargs(c_5) = {1}, Uargs(ifappend^#) = {3}, Uargs(c_7) = {1, 2} TcT has computed following constructor-restricted matrix interpretation. [is_empty](x1) = [2] [nil] = [2] [true] = [1] [cons](x1, x2) = [1] x2 + [1] [false] = [1] [tl](x1) = [1] x1 + [1] [is_empty^#](x1) = [1] x1 + [1] [c_1] = [1] [c_2] = [1] [hd^#](x1) = [2] [c_3] = [1] [tl^#](x1) = [2] x1 + [1] [c_4] = [2] [append^#](x1, x2) = [2] x1 + [2] x2 + [2] [c_5](x1) = [1] x1 + [2] [ifappend^#](x1, x2, x3) = [2] x1 + [2] x2 + [1] x3 + [2] [c_6] = [2] [c_7](x1, x2) = [1] x1 + [1] x2 + [1] This order satisfies following ordering constraints: [is_empty(nil())] = [2] > [1] = [true()] [is_empty(cons(x, l))] = [2] > [1] = [false()] [tl(cons(x, l))] = [1] l + [2] > [1] l + [0] = [l] 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 DPs: { append^#(l1, l2) -> c_5(ifappend^#(l1, l2, is_empty(l1))) , ifappend^#(l1, l2, false()) -> c_7(hd^#(l1), append^#(tl(l1), l2)) } Weak DPs: { is_empty^#(nil()) -> c_1() , is_empty^#(cons(x, l)) -> c_2() , hd^#(cons(x, l)) -> c_3() , tl^#(cons(x, l)) -> c_4() , ifappend^#(l1, l2, true()) -> c_6() } Weak Trs: { is_empty(nil()) -> true() , is_empty(cons(x, l)) -> false() , tl(cons(x, l)) -> l } 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. { is_empty^#(nil()) -> c_1() , is_empty^#(cons(x, l)) -> c_2() , hd^#(cons(x, l)) -> c_3() , tl^#(cons(x, l)) -> c_4() , ifappend^#(l1, l2, true()) -> c_6() } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { append^#(l1, l2) -> c_5(ifappend^#(l1, l2, is_empty(l1))) , ifappend^#(l1, l2, false()) -> c_7(hd^#(l1), append^#(tl(l1), l2)) } Weak Trs: { is_empty(nil()) -> true() , is_empty(cons(x, l)) -> false() , tl(cons(x, l)) -> l } Obligation: innermost runtime complexity Answer: MAYBE Due to missing edges in the dependency-graph, the right-hand sides of following rules could be simplified: { ifappend^#(l1, l2, false()) -> c_7(hd^#(l1), append^#(tl(l1), l2)) } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { append^#(l1, l2) -> c_1(ifappend^#(l1, l2, is_empty(l1))) , ifappend^#(l1, l2, false()) -> c_2(append^#(tl(l1), l2)) } Weak Trs: { is_empty(nil()) -> true() , is_empty(cons(x, l)) -> false() , tl(cons(x, l)) -> l } 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..