YES TRS: merge(x,nil()) -> x merge(nil(),y) -> y merge(++(x,y),++(u(),v())) -> ++(x,merge(y,++(u(),v()))) merge(++(x,y),++(u(),v())) -> ++(u(),merge(++(x,y),v())) linear polynomial interpretations on N: merge_A(x1,x2) = x1 + x2 merge#_A(x1,x2) = x2 nil_A = 0 nil#_A = 0 ++_A(x1,x2) = x1 + x2 + 1 ++#_A(x1,x2) = 2 u_A = 1 u#_A = 0 v_A = 1 v#_A = 1 precedence: merge = nil > ++ > v > u