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