We are left with following problem, upon which TcT provides the certificate YES(?,O(n^1)). Strict Trs: { addlist(Cons(x, xs'), Cons(S(0()), xs)) -> Cons(S(x), addlist(xs', xs)) , addlist(Cons(S(0()), xs'), Cons(x, xs)) -> Cons(S(x), addlist(xs', xs)) , addlist(Nil(), ys) -> Nil() , notEmpty(Cons(x, xs)) -> True() , notEmpty(Nil()) -> False() , goal(xs, ys) -> addlist(xs, ys) } Obligation: innermost runtime complexity Answer: YES(?,O(n^1)) The input was oriented with the instance of 'Small Polynomial Path Order (PS,1-bounded)' as induced by the safe mapping safe(addlist) = {}, safe(Cons) = {1, 2}, safe(S) = {1}, safe(0) = {}, safe(Nil) = {}, safe(notEmpty) = {}, safe(True) = {}, safe(False) = {}, safe(goal) = {} and precedence goal > addlist . Following symbols are considered recursive: {addlist} The recursion depth is 1. For your convenience, here are the satisfied ordering constraints: addlist(Cons(; x, xs'), Cons(; S(; 0()), xs);) > Cons(; S(; x), addlist(xs', xs;)) addlist(Cons(; S(; 0()), xs'), Cons(; x, xs);) > Cons(; S(; x), addlist(xs', xs;)) addlist(Nil(), ys;) > Nil() notEmpty(Cons(; x, xs);) > True() notEmpty(Nil();) > False() goal(xs, ys;) > addlist(xs, ys;) Hurray, we answered YES(?,O(n^1))