YES TRS: app(nil(),y) -> y app(add(n,x),y) -> add(n,app(x,y)) reverse(nil()) -> nil() reverse(add(n,x)) -> app(reverse(x),add(n,nil())) shuffle(nil()) -> nil() shuffle(add(n,x)) -> add(n,shuffle(reverse(x))) linear polynomial interpretations on N: app_A(x1,x2) = x1 + x2 app#_A(x1,x2) = x1 + x2 nil_A = 0 nil#_A = 0 add_A(x1,x2) = x1 + x2 + 1 add#_A(x1,x2) = x1 + x2 + 1 reverse_A(x1) = x1 reverse#_A(x1) = x1 shuffle_A(x1) = x1 + 1 shuffle#_A(x1) = x1 + 1 precedence: reverse > nil > app = shuffle > add