YES TRS: fst(0(),Z) -> nil() fst(s(),cons(Y)) -> cons(Y) from(X) -> cons(X) add(0(),X) -> X add(s(),Y) -> s() len(nil()) -> 0() len(cons(X)) -> s() linear polynomial interpretations on N: fst_A(x1,x2) = x1 + x2 + 2 fst#_A(x1,x2) = x1 + x2 + 2 0_A = 0 0#_A = 0 nil_A = 1 nil#_A = 1 s_A = 0 s#_A = 0 cons_A(x1) = x1 + 1 cons#_A(x1) = x1 + 1 from_A(x1) = x1 + 2 from#_A(x1) = x1 + 2 add_A(x1,x2) = x1 + x2 + 1 add#_A(x1,x2) = x1 + x2 + 1 len_A(x1) = x1 len#_A(x1) = x1 precedence: nil > fst > cons > 0 = s = from > add = len