YES TRS: a__first(0(),X) -> nil() a__first(s(X),cons(Y,Z)) -> cons(mark(Y),first(X,Z)) a__from(X) -> cons(mark(X),from(s(X))) mark(first(X1,X2)) -> a__first(mark(X1),mark(X2)) mark(from(X)) -> a__from(mark(X)) mark(0()) -> 0() mark(nil()) -> nil() mark(s(X)) -> s(mark(X)) mark(cons(X1,X2)) -> cons(mark(X1),X2) a__first(X1,X2) -> first(X1,X2) a__from(X) -> from(X) linear polynomial interpretations on N: a__first_A(x1,x2) = x1 + x2 + 3 a__first#_A(x1,x2) = x1 + x2 + 3 0_A = 1 0#_A = 1 nil_A = 1 nil#_A = 0 s_A(x1) = x1 s#_A(x1) = x1 cons_A(x1,x2) = x1 + 1 cons#_A(x1,x2) = x1 mark_A(x1) = x1 mark#_A(x1) = x1 + 1 first_A(x1,x2) = x1 + x2 + 3 first#_A(x1,x2) = 2 a__from_A(x1) = x1 + 2 a__from#_A(x1) = x1 + 2 from_A(x1) = x1 + 2 from#_A(x1) = 0 precedence: a__first > first = a__from > cons = mark > 0 = s = from > nil