YES
O(n^2)
TRS:
 {
           app(nil(), YS) -> YS,
         app(cons(X), YS) -> cons(X),
                  from(X) -> cons(X),
         zWadr(XS, nil()) -> nil(),
         zWadr(nil(), YS) -> nil(),
  zWadr(cons(X), cons(Y)) -> cons(app(Y, cons(X))),
                prefix(L) -> cons(nil())
 }
 Natural interpretation:
  Strict:
   {
             app(nil(), YS) -> YS,
           app(cons(X), YS) -> cons(X),
                    from(X) -> cons(X),
           zWadr(XS, nil()) -> nil(),
           zWadr(nil(), YS) -> nil(),
    zWadr(cons(X), cons(Y)) -> cons(app(Y, cons(X))),
                  prefix(L) -> cons(nil())
   }
  Weak:
   {}
  Interpretation class: deltarestricted
  [prefix](delta, X0) = + 1*X0 + 1 + 1*X0*delta + 1*delta
  [zWadr](delta, X1, X0) = + 0*X0 + 0*X1 + 1 + 1*X0*delta + 1*X1*delta + 1*delta
  [from](delta, X0) = + 0*X0 + 1 + 1*X0*delta + 1*delta
  [cons](delta, X0) = + 0*X0 + 1 + 1*X0*delta + 0*delta
  [nil](delta) = + 0 + 0*delta
  [app](delta, X1, X0) = + 1*X0 + 1*X1 + 0 + 0*X0*delta + 0*X1*delta + 1*delta
  prefix_tau_1(delta) = delta/(1 + 1 * delta)
  zWadr_tau_1(delta) = delta/(0 + 1 * delta)zWadr_tau_2(delta) = delta/(0 + 1 * delta)
  from_tau_1(delta) = delta/(0 + 1 * delta)
  cons_tau_1(delta) = delta/(0 + 1 * delta)
  
  app_tau_1(delta) = delta/(1 + 0 * delta)app_tau_2(delta) = delta/(1 + 0 * delta)
  
  Qed