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 = 1 0#_A = 1 nil_A = 2 nil#_A = 2 s_A = 1 s#_A = 1 cons_A(x1) = x1 + 2 cons#_A(x1) = x1 + 2 from_A(x1) = x1 + 3 from#_A(x1) = x1 + 3 add_A(x1,x2) = x1 + x2 + 1 add#_A(x1,x2) = x1 + x2 + 1 len_A(x1) = x1 + 1 len#_A(x1) = x1 + 1 precedence: nil > fst = 0 = add > cons > s > from > len