MAYBE We are left with following problem, upon which TcT provides the certificate MAYBE. Strict Trs: { isEmpty(cons(x, xs)) -> false() , isEmpty(nil()) -> true() , isZero(0()) -> true() , isZero(s(x)) -> false() , head(cons(x, xs)) -> x , tail(cons(x, xs)) -> xs , tail(nil()) -> nil() , append(cons(y, ys), x) -> cons(y, append(ys, x)) , append(nil(), x) -> cons(x, nil()) , p(0()) -> 0() , p(s(0())) -> 0() , p(s(s(x))) -> s(p(s(x))) , inc(0()) -> s(0()) , inc(s(x)) -> s(inc(x)) , addLists(xs, ys, zs) -> if(isEmpty(xs), isEmpty(ys), isZero(head(xs)), tail(xs), tail(ys), cons(p(head(xs)), tail(xs)), cons(inc(head(ys)), tail(ys)), zs, append(zs, head(ys))) , if(false(), false(), false(), xs, ys, xs2, ys2, zs, zs2) -> addLists(xs2, ys2, zs) , if(false(), false(), true(), xs, ys, xs2, ys2, zs, zs2) -> addLists(xs, ys, zs2) , if(false(), true(), b, xs, ys, xs2, ys2, zs, zs2) -> differentLengthError() , if(true(), false(), b, xs, ys, xs2, ys2, zs, zs2) -> differentLengthError() , if(true(), true(), b, xs, ys, xs2, ys2, zs, zs2) -> zs , addList(xs, ys) -> addLists(xs, ys, nil()) } Obligation: innermost runtime complexity Answer: MAYBE We add following dependency tuples: Strict DPs: { isEmpty^#(cons(x, xs)) -> c_1() , isEmpty^#(nil()) -> c_2() , isZero^#(0()) -> c_3() , isZero^#(s(x)) -> c_4() , head^#(cons(x, xs)) -> c_5() , tail^#(cons(x, xs)) -> c_6() , tail^#(nil()) -> c_7() , append^#(cons(y, ys), x) -> c_8(append^#(ys, x)) , append^#(nil(), x) -> c_9() , p^#(0()) -> c_10() , p^#(s(0())) -> c_11() , p^#(s(s(x))) -> c_12(p^#(s(x))) , inc^#(0()) -> c_13() , inc^#(s(x)) -> c_14(inc^#(x)) , addLists^#(xs, ys, zs) -> c_15(if^#(isEmpty(xs), isEmpty(ys), isZero(head(xs)), tail(xs), tail(ys), cons(p(head(xs)), tail(xs)), cons(inc(head(ys)), tail(ys)), zs, append(zs, head(ys))), isEmpty^#(xs), isEmpty^#(ys), isZero^#(head(xs)), head^#(xs), tail^#(xs), tail^#(ys), p^#(head(xs)), head^#(xs), tail^#(xs), inc^#(head(ys)), head^#(ys), tail^#(ys), append^#(zs, head(ys)), head^#(ys)) , if^#(false(), false(), false(), xs, ys, xs2, ys2, zs, zs2) -> c_16(addLists^#(xs2, ys2, zs)) , if^#(false(), false(), true(), xs, ys, xs2, ys2, zs, zs2) -> c_17(addLists^#(xs, ys, zs2)) , if^#(false(), true(), b, xs, ys, xs2, ys2, zs, zs2) -> c_18() , if^#(true(), false(), b, xs, ys, xs2, ys2, zs, zs2) -> c_19() , if^#(true(), true(), b, xs, ys, xs2, ys2, zs, zs2) -> c_20() , addList^#(xs, ys) -> c_21(addLists^#(xs, ys, nil())) } and mark the set of starting terms. We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { isEmpty^#(cons(x, xs)) -> c_1() , isEmpty^#(nil()) -> c_2() , isZero^#(0()) -> c_3() , isZero^#(s(x)) -> c_4() , head^#(cons(x, xs)) -> c_5() , tail^#(cons(x, xs)) -> c_6() , tail^#(nil()) -> c_7() , append^#(cons(y, ys), x) -> c_8(append^#(ys, x)) , append^#(nil(), x) -> c_9() , p^#(0()) -> c_10() , p^#(s(0())) -> c_11() , p^#(s(s(x))) -> c_12(p^#(s(x))) , inc^#(0()) -> c_13() , inc^#(s(x)) -> c_14(inc^#(x)) , addLists^#(xs, ys, zs) -> c_15(if^#(isEmpty(xs), isEmpty(ys), isZero(head(xs)), tail(xs), tail(ys), cons(p(head(xs)), tail(xs)), cons(inc(head(ys)), tail(ys)), zs, append(zs, head(ys))), isEmpty^#(xs), isEmpty^#(ys), isZero^#(head(xs)), head^#(xs), tail^#(xs), tail^#(ys), p^#(head(xs)), head^#(xs), tail^#(xs), inc^#(head(ys)), head^#(ys), tail^#(ys), append^#(zs, head(ys)), head^#(ys)) , if^#(false(), false(), false(), xs, ys, xs2, ys2, zs, zs2) -> c_16(addLists^#(xs2, ys2, zs)) , if^#(false(), false(), true(), xs, ys, xs2, ys2, zs, zs2) -> c_17(addLists^#(xs, ys, zs2)) , if^#(false(), true(), b, xs, ys, xs2, ys2, zs, zs2) -> c_18() , if^#(true(), false(), b, xs, ys, xs2, ys2, zs, zs2) -> c_19() , if^#(true(), true(), b, xs, ys, xs2, ys2, zs, zs2) -> c_20() , addList^#(xs, ys) -> c_21(addLists^#(xs, ys, nil())) } Weak Trs: { isEmpty(cons(x, xs)) -> false() , isEmpty(nil()) -> true() , isZero(0()) -> true() , isZero(s(x)) -> false() , head(cons(x, xs)) -> x , tail(cons(x, xs)) -> xs , tail(nil()) -> nil() , append(cons(y, ys), x) -> cons(y, append(ys, x)) , append(nil(), x) -> cons(x, nil()) , p(0()) -> 0() , p(s(0())) -> 0() , p(s(s(x))) -> s(p(s(x))) , inc(0()) -> s(0()) , inc(s(x)) -> s(inc(x)) , addLists(xs, ys, zs) -> if(isEmpty(xs), isEmpty(ys), isZero(head(xs)), tail(xs), tail(ys), cons(p(head(xs)), tail(xs)), cons(inc(head(ys)), tail(ys)), zs, append(zs, head(ys))) , if(false(), false(), false(), xs, ys, xs2, ys2, zs, zs2) -> addLists(xs2, ys2, zs) , if(false(), false(), true(), xs, ys, xs2, ys2, zs, zs2) -> addLists(xs, ys, zs2) , if(false(), true(), b, xs, ys, xs2, ys2, zs, zs2) -> differentLengthError() , if(true(), false(), b, xs, ys, xs2, ys2, zs, zs2) -> differentLengthError() , if(true(), true(), b, xs, ys, xs2, ys2, zs, zs2) -> zs , addList(xs, ys) -> addLists(xs, ys, nil()) } Obligation: innermost runtime complexity Answer: MAYBE We estimate the number of application of {1,2,3,4,5,6,7,9,10,11,13,18,19,20} by applications of Pre({1,2,3,4,5,6,7,9,10,11,13,18,19,20}) = {8,12,14,15}. Here rules are labeled as follows: DPs: { 1: isEmpty^#(cons(x, xs)) -> c_1() , 2: isEmpty^#(nil()) -> c_2() , 3: isZero^#(0()) -> c_3() , 4: isZero^#(s(x)) -> c_4() , 5: head^#(cons(x, xs)) -> c_5() , 6: tail^#(cons(x, xs)) -> c_6() , 7: tail^#(nil()) -> c_7() , 8: append^#(cons(y, ys), x) -> c_8(append^#(ys, x)) , 9: append^#(nil(), x) -> c_9() , 10: p^#(0()) -> c_10() , 11: p^#(s(0())) -> c_11() , 12: p^#(s(s(x))) -> c_12(p^#(s(x))) , 13: inc^#(0()) -> c_13() , 14: inc^#(s(x)) -> c_14(inc^#(x)) , 15: addLists^#(xs, ys, zs) -> c_15(if^#(isEmpty(xs), isEmpty(ys), isZero(head(xs)), tail(xs), tail(ys), cons(p(head(xs)), tail(xs)), cons(inc(head(ys)), tail(ys)), zs, append(zs, head(ys))), isEmpty^#(xs), isEmpty^#(ys), isZero^#(head(xs)), head^#(xs), tail^#(xs), tail^#(ys), p^#(head(xs)), head^#(xs), tail^#(xs), inc^#(head(ys)), head^#(ys), tail^#(ys), append^#(zs, head(ys)), head^#(ys)) , 16: if^#(false(), false(), false(), xs, ys, xs2, ys2, zs, zs2) -> c_16(addLists^#(xs2, ys2, zs)) , 17: if^#(false(), false(), true(), xs, ys, xs2, ys2, zs, zs2) -> c_17(addLists^#(xs, ys, zs2)) , 18: if^#(false(), true(), b, xs, ys, xs2, ys2, zs, zs2) -> c_18() , 19: if^#(true(), false(), b, xs, ys, xs2, ys2, zs, zs2) -> c_19() , 20: if^#(true(), true(), b, xs, ys, xs2, ys2, zs, zs2) -> c_20() , 21: addList^#(xs, ys) -> c_21(addLists^#(xs, ys, nil())) } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { append^#(cons(y, ys), x) -> c_8(append^#(ys, x)) , p^#(s(s(x))) -> c_12(p^#(s(x))) , inc^#(s(x)) -> c_14(inc^#(x)) , addLists^#(xs, ys, zs) -> c_15(if^#(isEmpty(xs), isEmpty(ys), isZero(head(xs)), tail(xs), tail(ys), cons(p(head(xs)), tail(xs)), cons(inc(head(ys)), tail(ys)), zs, append(zs, head(ys))), isEmpty^#(xs), isEmpty^#(ys), isZero^#(head(xs)), head^#(xs), tail^#(xs), tail^#(ys), p^#(head(xs)), head^#(xs), tail^#(xs), inc^#(head(ys)), head^#(ys), tail^#(ys), append^#(zs, head(ys)), head^#(ys)) , if^#(false(), false(), false(), xs, ys, xs2, ys2, zs, zs2) -> c_16(addLists^#(xs2, ys2, zs)) , if^#(false(), false(), true(), xs, ys, xs2, ys2, zs, zs2) -> c_17(addLists^#(xs, ys, zs2)) , addList^#(xs, ys) -> c_21(addLists^#(xs, ys, nil())) } Weak DPs: { isEmpty^#(cons(x, xs)) -> c_1() , isEmpty^#(nil()) -> c_2() , isZero^#(0()) -> c_3() , isZero^#(s(x)) -> c_4() , head^#(cons(x, xs)) -> c_5() , tail^#(cons(x, xs)) -> c_6() , tail^#(nil()) -> c_7() , append^#(nil(), x) -> c_9() , p^#(0()) -> c_10() , p^#(s(0())) -> c_11() , inc^#(0()) -> c_13() , if^#(false(), true(), b, xs, ys, xs2, ys2, zs, zs2) -> c_18() , if^#(true(), false(), b, xs, ys, xs2, ys2, zs, zs2) -> c_19() , if^#(true(), true(), b, xs, ys, xs2, ys2, zs, zs2) -> c_20() } Weak Trs: { isEmpty(cons(x, xs)) -> false() , isEmpty(nil()) -> true() , isZero(0()) -> true() , isZero(s(x)) -> false() , head(cons(x, xs)) -> x , tail(cons(x, xs)) -> xs , tail(nil()) -> nil() , append(cons(y, ys), x) -> cons(y, append(ys, x)) , append(nil(), x) -> cons(x, nil()) , p(0()) -> 0() , p(s(0())) -> 0() , p(s(s(x))) -> s(p(s(x))) , inc(0()) -> s(0()) , inc(s(x)) -> s(inc(x)) , addLists(xs, ys, zs) -> if(isEmpty(xs), isEmpty(ys), isZero(head(xs)), tail(xs), tail(ys), cons(p(head(xs)), tail(xs)), cons(inc(head(ys)), tail(ys)), zs, append(zs, head(ys))) , if(false(), false(), false(), xs, ys, xs2, ys2, zs, zs2) -> addLists(xs2, ys2, zs) , if(false(), false(), true(), xs, ys, xs2, ys2, zs, zs2) -> addLists(xs, ys, zs2) , if(false(), true(), b, xs, ys, xs2, ys2, zs, zs2) -> differentLengthError() , if(true(), false(), b, xs, ys, xs2, ys2, zs, zs2) -> differentLengthError() , if(true(), true(), b, xs, ys, xs2, ys2, zs, zs2) -> zs , addList(xs, ys) -> addLists(xs, ys, nil()) } 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. { isEmpty^#(cons(x, xs)) -> c_1() , isEmpty^#(nil()) -> c_2() , isZero^#(0()) -> c_3() , isZero^#(s(x)) -> c_4() , head^#(cons(x, xs)) -> c_5() , tail^#(cons(x, xs)) -> c_6() , tail^#(nil()) -> c_7() , append^#(nil(), x) -> c_9() , p^#(0()) -> c_10() , p^#(s(0())) -> c_11() , inc^#(0()) -> c_13() , if^#(false(), true(), b, xs, ys, xs2, ys2, zs, zs2) -> c_18() , if^#(true(), false(), b, xs, ys, xs2, ys2, zs, zs2) -> c_19() , if^#(true(), true(), b, xs, ys, xs2, ys2, zs, zs2) -> c_20() } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { append^#(cons(y, ys), x) -> c_8(append^#(ys, x)) , p^#(s(s(x))) -> c_12(p^#(s(x))) , inc^#(s(x)) -> c_14(inc^#(x)) , addLists^#(xs, ys, zs) -> c_15(if^#(isEmpty(xs), isEmpty(ys), isZero(head(xs)), tail(xs), tail(ys), cons(p(head(xs)), tail(xs)), cons(inc(head(ys)), tail(ys)), zs, append(zs, head(ys))), isEmpty^#(xs), isEmpty^#(ys), isZero^#(head(xs)), head^#(xs), tail^#(xs), tail^#(ys), p^#(head(xs)), head^#(xs), tail^#(xs), inc^#(head(ys)), head^#(ys), tail^#(ys), append^#(zs, head(ys)), head^#(ys)) , if^#(false(), false(), false(), xs, ys, xs2, ys2, zs, zs2) -> c_16(addLists^#(xs2, ys2, zs)) , if^#(false(), false(), true(), xs, ys, xs2, ys2, zs, zs2) -> c_17(addLists^#(xs, ys, zs2)) , addList^#(xs, ys) -> c_21(addLists^#(xs, ys, nil())) } Weak Trs: { isEmpty(cons(x, xs)) -> false() , isEmpty(nil()) -> true() , isZero(0()) -> true() , isZero(s(x)) -> false() , head(cons(x, xs)) -> x , tail(cons(x, xs)) -> xs , tail(nil()) -> nil() , append(cons(y, ys), x) -> cons(y, append(ys, x)) , append(nil(), x) -> cons(x, nil()) , p(0()) -> 0() , p(s(0())) -> 0() , p(s(s(x))) -> s(p(s(x))) , inc(0()) -> s(0()) , inc(s(x)) -> s(inc(x)) , addLists(xs, ys, zs) -> if(isEmpty(xs), isEmpty(ys), isZero(head(xs)), tail(xs), tail(ys), cons(p(head(xs)), tail(xs)), cons(inc(head(ys)), tail(ys)), zs, append(zs, head(ys))) , if(false(), false(), false(), xs, ys, xs2, ys2, zs, zs2) -> addLists(xs2, ys2, zs) , if(false(), false(), true(), xs, ys, xs2, ys2, zs, zs2) -> addLists(xs, ys, zs2) , if(false(), true(), b, xs, ys, xs2, ys2, zs, zs2) -> differentLengthError() , if(true(), false(), b, xs, ys, xs2, ys2, zs, zs2) -> differentLengthError() , if(true(), true(), b, xs, ys, xs2, ys2, zs, zs2) -> zs , addList(xs, ys) -> addLists(xs, ys, nil()) } Obligation: innermost runtime complexity Answer: MAYBE Due to missing edges in the dependency-graph, the right-hand sides of following rules could be simplified: { addLists^#(xs, ys, zs) -> c_15(if^#(isEmpty(xs), isEmpty(ys), isZero(head(xs)), tail(xs), tail(ys), cons(p(head(xs)), tail(xs)), cons(inc(head(ys)), tail(ys)), zs, append(zs, head(ys))), isEmpty^#(xs), isEmpty^#(ys), isZero^#(head(xs)), head^#(xs), tail^#(xs), tail^#(ys), p^#(head(xs)), head^#(xs), tail^#(xs), inc^#(head(ys)), head^#(ys), tail^#(ys), append^#(zs, head(ys)), head^#(ys)) } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { append^#(cons(y, ys), x) -> c_1(append^#(ys, x)) , p^#(s(s(x))) -> c_2(p^#(s(x))) , inc^#(s(x)) -> c_3(inc^#(x)) , addLists^#(xs, ys, zs) -> c_4(if^#(isEmpty(xs), isEmpty(ys), isZero(head(xs)), tail(xs), tail(ys), cons(p(head(xs)), tail(xs)), cons(inc(head(ys)), tail(ys)), zs, append(zs, head(ys))), p^#(head(xs)), inc^#(head(ys)), append^#(zs, head(ys))) , if^#(false(), false(), false(), xs, ys, xs2, ys2, zs, zs2) -> c_5(addLists^#(xs2, ys2, zs)) , if^#(false(), false(), true(), xs, ys, xs2, ys2, zs, zs2) -> c_6(addLists^#(xs, ys, zs2)) , addList^#(xs, ys) -> c_7(addLists^#(xs, ys, nil())) } Weak Trs: { isEmpty(cons(x, xs)) -> false() , isEmpty(nil()) -> true() , isZero(0()) -> true() , isZero(s(x)) -> false() , head(cons(x, xs)) -> x , tail(cons(x, xs)) -> xs , tail(nil()) -> nil() , append(cons(y, ys), x) -> cons(y, append(ys, x)) , append(nil(), x) -> cons(x, nil()) , p(0()) -> 0() , p(s(0())) -> 0() , p(s(s(x))) -> s(p(s(x))) , inc(0()) -> s(0()) , inc(s(x)) -> s(inc(x)) , addLists(xs, ys, zs) -> if(isEmpty(xs), isEmpty(ys), isZero(head(xs)), tail(xs), tail(ys), cons(p(head(xs)), tail(xs)), cons(inc(head(ys)), tail(ys)), zs, append(zs, head(ys))) , if(false(), false(), false(), xs, ys, xs2, ys2, zs, zs2) -> addLists(xs2, ys2, zs) , if(false(), false(), true(), xs, ys, xs2, ys2, zs, zs2) -> addLists(xs, ys, zs2) , if(false(), true(), b, xs, ys, xs2, ys2, zs, zs2) -> differentLengthError() , if(true(), false(), b, xs, ys, xs2, ys2, zs, zs2) -> differentLengthError() , if(true(), true(), b, xs, ys, xs2, ys2, zs, zs2) -> zs , addList(xs, ys) -> addLists(xs, ys, nil()) } Obligation: innermost runtime complexity Answer: MAYBE We replace rewrite rules by usable rules: Weak Usable Rules: { isEmpty(cons(x, xs)) -> false() , isEmpty(nil()) -> true() , isZero(0()) -> true() , isZero(s(x)) -> false() , head(cons(x, xs)) -> x , tail(cons(x, xs)) -> xs , tail(nil()) -> nil() , append(cons(y, ys), x) -> cons(y, append(ys, x)) , append(nil(), x) -> cons(x, nil()) , p(0()) -> 0() , p(s(0())) -> 0() , p(s(s(x))) -> s(p(s(x))) , inc(0()) -> s(0()) , inc(s(x)) -> s(inc(x)) } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { append^#(cons(y, ys), x) -> c_1(append^#(ys, x)) , p^#(s(s(x))) -> c_2(p^#(s(x))) , inc^#(s(x)) -> c_3(inc^#(x)) , addLists^#(xs, ys, zs) -> c_4(if^#(isEmpty(xs), isEmpty(ys), isZero(head(xs)), tail(xs), tail(ys), cons(p(head(xs)), tail(xs)), cons(inc(head(ys)), tail(ys)), zs, append(zs, head(ys))), p^#(head(xs)), inc^#(head(ys)), append^#(zs, head(ys))) , if^#(false(), false(), false(), xs, ys, xs2, ys2, zs, zs2) -> c_5(addLists^#(xs2, ys2, zs)) , if^#(false(), false(), true(), xs, ys, xs2, ys2, zs, zs2) -> c_6(addLists^#(xs, ys, zs2)) , addList^#(xs, ys) -> c_7(addLists^#(xs, ys, nil())) } Weak Trs: { isEmpty(cons(x, xs)) -> false() , isEmpty(nil()) -> true() , isZero(0()) -> true() , isZero(s(x)) -> false() , head(cons(x, xs)) -> x , tail(cons(x, xs)) -> xs , tail(nil()) -> nil() , append(cons(y, ys), x) -> cons(y, append(ys, x)) , append(nil(), x) -> cons(x, nil()) , p(0()) -> 0() , p(s(0())) -> 0() , p(s(s(x))) -> s(p(s(x))) , inc(0()) -> s(0()) , inc(s(x)) -> s(inc(x)) } Obligation: innermost runtime complexity Answer: MAYBE Consider the dependency graph 1: append^#(cons(y, ys), x) -> c_1(append^#(ys, x)) -->_1 append^#(cons(y, ys), x) -> c_1(append^#(ys, x)) :1 2: p^#(s(s(x))) -> c_2(p^#(s(x))) -->_1 p^#(s(s(x))) -> c_2(p^#(s(x))) :2 3: inc^#(s(x)) -> c_3(inc^#(x)) -->_1 inc^#(s(x)) -> c_3(inc^#(x)) :3 4: addLists^#(xs, ys, zs) -> c_4(if^#(isEmpty(xs), isEmpty(ys), isZero(head(xs)), tail(xs), tail(ys), cons(p(head(xs)), tail(xs)), cons(inc(head(ys)), tail(ys)), zs, append(zs, head(ys))), p^#(head(xs)), inc^#(head(ys)), append^#(zs, head(ys))) -->_1 if^#(false(), false(), true(), xs, ys, xs2, ys2, zs, zs2) -> c_6(addLists^#(xs, ys, zs2)) :6 -->_1 if^#(false(), false(), false(), xs, ys, xs2, ys2, zs, zs2) -> c_5(addLists^#(xs2, ys2, zs)) :5 -->_3 inc^#(s(x)) -> c_3(inc^#(x)) :3 -->_2 p^#(s(s(x))) -> c_2(p^#(s(x))) :2 -->_4 append^#(cons(y, ys), x) -> c_1(append^#(ys, x)) :1 5: if^#(false(), false(), false(), xs, ys, xs2, ys2, zs, zs2) -> c_5(addLists^#(xs2, ys2, zs)) -->_1 addLists^#(xs, ys, zs) -> c_4(if^#(isEmpty(xs), isEmpty(ys), isZero(head(xs)), tail(xs), tail(ys), cons(p(head(xs)), tail(xs)), cons(inc(head(ys)), tail(ys)), zs, append(zs, head(ys))), p^#(head(xs)), inc^#(head(ys)), append^#(zs, head(ys))) :4 6: if^#(false(), false(), true(), xs, ys, xs2, ys2, zs, zs2) -> c_6(addLists^#(xs, ys, zs2)) -->_1 addLists^#(xs, ys, zs) -> c_4(if^#(isEmpty(xs), isEmpty(ys), isZero(head(xs)), tail(xs), tail(ys), cons(p(head(xs)), tail(xs)), cons(inc(head(ys)), tail(ys)), zs, append(zs, head(ys))), p^#(head(xs)), inc^#(head(ys)), append^#(zs, head(ys))) :4 7: addList^#(xs, ys) -> c_7(addLists^#(xs, ys, nil())) -->_1 addLists^#(xs, ys, zs) -> c_4(if^#(isEmpty(xs), isEmpty(ys), isZero(head(xs)), tail(xs), tail(ys), cons(p(head(xs)), tail(xs)), cons(inc(head(ys)), tail(ys)), zs, append(zs, head(ys))), p^#(head(xs)), inc^#(head(ys)), append^#(zs, head(ys))) :4 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). { addList^#(xs, ys) -> c_7(addLists^#(xs, ys, nil())) } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { append^#(cons(y, ys), x) -> c_1(append^#(ys, x)) , p^#(s(s(x))) -> c_2(p^#(s(x))) , inc^#(s(x)) -> c_3(inc^#(x)) , addLists^#(xs, ys, zs) -> c_4(if^#(isEmpty(xs), isEmpty(ys), isZero(head(xs)), tail(xs), tail(ys), cons(p(head(xs)), tail(xs)), cons(inc(head(ys)), tail(ys)), zs, append(zs, head(ys))), p^#(head(xs)), inc^#(head(ys)), append^#(zs, head(ys))) , if^#(false(), false(), false(), xs, ys, xs2, ys2, zs, zs2) -> c_5(addLists^#(xs2, ys2, zs)) , if^#(false(), false(), true(), xs, ys, xs2, ys2, zs, zs2) -> c_6(addLists^#(xs, ys, zs2)) } Weak Trs: { isEmpty(cons(x, xs)) -> false() , isEmpty(nil()) -> true() , isZero(0()) -> true() , isZero(s(x)) -> false() , head(cons(x, xs)) -> x , tail(cons(x, xs)) -> xs , tail(nil()) -> nil() , append(cons(y, ys), x) -> cons(y, append(ys, x)) , append(nil(), x) -> cons(x, nil()) , p(0()) -> 0() , p(s(0())) -> 0() , p(s(s(x))) -> s(p(s(x))) , inc(0()) -> s(0()) , inc(s(x)) -> s(inc(x)) } Obligation: innermost runtime complexity Answer: MAYBE The input cannot be shown compatible Arrrr..