MAYBE We are left with following problem, upon which TcT provides the certificate MAYBE. Strict Trs: { empty(nil()) -> true() , empty(cons(x, l)) -> false() , head(cons(x, l)) -> x , tail(nil()) -> nil() , tail(cons(x, l)) -> l , rev(nil()) -> nil() , rev(cons(x, l)) -> cons(rev1(x, l), rev2(x, l)) , rev2(x, nil()) -> nil() , rev2(x, cons(y, l)) -> rev(cons(x, rev2(y, l))) , last(x, l) -> if(empty(l), x, l) , if(true(), x, l) -> x , if(false(), x, l) -> last(head(l), tail(l)) } Obligation: innermost runtime complexity Answer: MAYBE We add following dependency tuples: Strict DPs: { empty^#(nil()) -> c_1() , empty^#(cons(x, l)) -> c_2() , head^#(cons(x, l)) -> c_3() , tail^#(nil()) -> c_4() , tail^#(cons(x, l)) -> c_5() , rev^#(nil()) -> c_6() , rev^#(cons(x, l)) -> c_7(rev2^#(x, l)) , rev2^#(x, nil()) -> c_8() , rev2^#(x, cons(y, l)) -> c_9(rev^#(cons(x, rev2(y, l))), rev2^#(y, l)) , last^#(x, l) -> c_10(if^#(empty(l), x, l), empty^#(l)) , if^#(true(), x, l) -> c_11() , if^#(false(), x, l) -> c_12(last^#(head(l), tail(l)), head^#(l), tail^#(l)) } and mark the set of starting terms. We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { empty^#(nil()) -> c_1() , empty^#(cons(x, l)) -> c_2() , head^#(cons(x, l)) -> c_3() , tail^#(nil()) -> c_4() , tail^#(cons(x, l)) -> c_5() , rev^#(nil()) -> c_6() , rev^#(cons(x, l)) -> c_7(rev2^#(x, l)) , rev2^#(x, nil()) -> c_8() , rev2^#(x, cons(y, l)) -> c_9(rev^#(cons(x, rev2(y, l))), rev2^#(y, l)) , last^#(x, l) -> c_10(if^#(empty(l), x, l), empty^#(l)) , if^#(true(), x, l) -> c_11() , if^#(false(), x, l) -> c_12(last^#(head(l), tail(l)), head^#(l), tail^#(l)) } Weak Trs: { empty(nil()) -> true() , empty(cons(x, l)) -> false() , head(cons(x, l)) -> x , tail(nil()) -> nil() , tail(cons(x, l)) -> l , rev(nil()) -> nil() , rev(cons(x, l)) -> cons(rev1(x, l), rev2(x, l)) , rev2(x, nil()) -> nil() , rev2(x, cons(y, l)) -> rev(cons(x, rev2(y, l))) , last(x, l) -> if(empty(l), x, l) , if(true(), x, l) -> x , if(false(), x, l) -> last(head(l), tail(l)) } Obligation: innermost runtime complexity Answer: MAYBE We estimate the number of application of {1,2,3,4,5,6,8,11} by applications of Pre({1,2,3,4,5,6,8,11}) = {7,9,10,12}. Here rules are labeled as follows: DPs: { 1: empty^#(nil()) -> c_1() , 2: empty^#(cons(x, l)) -> c_2() , 3: head^#(cons(x, l)) -> c_3() , 4: tail^#(nil()) -> c_4() , 5: tail^#(cons(x, l)) -> c_5() , 6: rev^#(nil()) -> c_6() , 7: rev^#(cons(x, l)) -> c_7(rev2^#(x, l)) , 8: rev2^#(x, nil()) -> c_8() , 9: rev2^#(x, cons(y, l)) -> c_9(rev^#(cons(x, rev2(y, l))), rev2^#(y, l)) , 10: last^#(x, l) -> c_10(if^#(empty(l), x, l), empty^#(l)) , 11: if^#(true(), x, l) -> c_11() , 12: if^#(false(), x, l) -> c_12(last^#(head(l), tail(l)), head^#(l), tail^#(l)) } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { rev^#(cons(x, l)) -> c_7(rev2^#(x, l)) , rev2^#(x, cons(y, l)) -> c_9(rev^#(cons(x, rev2(y, l))), rev2^#(y, l)) , last^#(x, l) -> c_10(if^#(empty(l), x, l), empty^#(l)) , if^#(false(), x, l) -> c_12(last^#(head(l), tail(l)), head^#(l), tail^#(l)) } Weak DPs: { empty^#(nil()) -> c_1() , empty^#(cons(x, l)) -> c_2() , head^#(cons(x, l)) -> c_3() , tail^#(nil()) -> c_4() , tail^#(cons(x, l)) -> c_5() , rev^#(nil()) -> c_6() , rev2^#(x, nil()) -> c_8() , if^#(true(), x, l) -> c_11() } Weak Trs: { empty(nil()) -> true() , empty(cons(x, l)) -> false() , head(cons(x, l)) -> x , tail(nil()) -> nil() , tail(cons(x, l)) -> l , rev(nil()) -> nil() , rev(cons(x, l)) -> cons(rev1(x, l), rev2(x, l)) , rev2(x, nil()) -> nil() , rev2(x, cons(y, l)) -> rev(cons(x, rev2(y, l))) , last(x, l) -> if(empty(l), x, l) , if(true(), x, l) -> x , if(false(), x, l) -> last(head(l), tail(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. { empty^#(nil()) -> c_1() , empty^#(cons(x, l)) -> c_2() , head^#(cons(x, l)) -> c_3() , tail^#(nil()) -> c_4() , tail^#(cons(x, l)) -> c_5() , rev^#(nil()) -> c_6() , rev2^#(x, nil()) -> c_8() , if^#(true(), x, l) -> c_11() } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { rev^#(cons(x, l)) -> c_7(rev2^#(x, l)) , rev2^#(x, cons(y, l)) -> c_9(rev^#(cons(x, rev2(y, l))), rev2^#(y, l)) , last^#(x, l) -> c_10(if^#(empty(l), x, l), empty^#(l)) , if^#(false(), x, l) -> c_12(last^#(head(l), tail(l)), head^#(l), tail^#(l)) } Weak Trs: { empty(nil()) -> true() , empty(cons(x, l)) -> false() , head(cons(x, l)) -> x , tail(nil()) -> nil() , tail(cons(x, l)) -> l , rev(nil()) -> nil() , rev(cons(x, l)) -> cons(rev1(x, l), rev2(x, l)) , rev2(x, nil()) -> nil() , rev2(x, cons(y, l)) -> rev(cons(x, rev2(y, l))) , last(x, l) -> if(empty(l), x, l) , if(true(), x, l) -> x , if(false(), x, l) -> last(head(l), tail(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: { last^#(x, l) -> c_10(if^#(empty(l), x, l), empty^#(l)) , if^#(false(), x, l) -> c_12(last^#(head(l), tail(l)), head^#(l), tail^#(l)) } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { rev^#(cons(x, l)) -> c_1(rev2^#(x, l)) , rev2^#(x, cons(y, l)) -> c_2(rev^#(cons(x, rev2(y, l))), rev2^#(y, l)) , last^#(x, l) -> c_3(if^#(empty(l), x, l)) , if^#(false(), x, l) -> c_4(last^#(head(l), tail(l))) } Weak Trs: { empty(nil()) -> true() , empty(cons(x, l)) -> false() , head(cons(x, l)) -> x , tail(nil()) -> nil() , tail(cons(x, l)) -> l , rev(nil()) -> nil() , rev(cons(x, l)) -> cons(rev1(x, l), rev2(x, l)) , rev2(x, nil()) -> nil() , rev2(x, cons(y, l)) -> rev(cons(x, rev2(y, l))) , last(x, l) -> if(empty(l), x, l) , if(true(), x, l) -> x , if(false(), x, l) -> last(head(l), tail(l)) } Obligation: innermost runtime complexity Answer: MAYBE We replace rewrite rules by usable rules: Weak Usable Rules: { empty(nil()) -> true() , empty(cons(x, l)) -> false() , head(cons(x, l)) -> x , tail(nil()) -> nil() , tail(cons(x, l)) -> l , rev(nil()) -> nil() , rev(cons(x, l)) -> cons(rev1(x, l), rev2(x, l)) , rev2(x, nil()) -> nil() , rev2(x, cons(y, l)) -> rev(cons(x, rev2(y, l))) } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { rev^#(cons(x, l)) -> c_1(rev2^#(x, l)) , rev2^#(x, cons(y, l)) -> c_2(rev^#(cons(x, rev2(y, l))), rev2^#(y, l)) , last^#(x, l) -> c_3(if^#(empty(l), x, l)) , if^#(false(), x, l) -> c_4(last^#(head(l), tail(l))) } Weak Trs: { empty(nil()) -> true() , empty(cons(x, l)) -> false() , head(cons(x, l)) -> x , tail(nil()) -> nil() , tail(cons(x, l)) -> l , rev(nil()) -> nil() , rev(cons(x, l)) -> cons(rev1(x, l), rev2(x, l)) , rev2(x, nil()) -> nil() , rev2(x, cons(y, l)) -> rev(cons(x, rev2(y, l))) } Obligation: innermost runtime complexity Answer: MAYBE The input cannot be shown compatible Arrrr..