YES TRS: is_empty(nil()) -> true() is_empty(cons(x,l)) -> false() hd(cons(x,l)) -> x tl(cons(x,l)) -> l append(l1,l2) -> ifappend(l1,l2,l1) ifappend(l1,l2,nil()) -> l2 ifappend(l1,l2,cons(x,l)) -> cons(x,append(l,l2)) linear polynomial interpretations on N: is_empty_A(x1) = 0 is_empty#_A(x1) = 2 nil_A = 1 nil#_A = 0 true_A = 0 true#_A = 1 cons_A(x1,x2) = x1 + x2 + 2 cons#_A(x1,x2) = 4 false_A = 0 false#_A = 3 hd_A(x1) = x1 hd#_A(x1) = x1 tl_A(x1) = x1 tl#_A(x1) = x1 append_A(x1,x2) = x1 + x2 + 1 append#_A(x1,x2) = x1 + x2 + 4 ifappend_A(x1,x2,x3) = x2 + x3 + 1 ifappend#_A(x1,x2,x3) = x2 + x3 + 3 precedence: ifappend > is_empty = nil = cons = hd = tl = append > true = false