YES

Problem:
 rev1(0(),nil()) -> 0()
 rev1(s(X),nil()) -> s(X)
 rev1(X,cons(Y,L)) -> rev1(Y,L)
 rev(nil()) -> nil()
 rev(cons(X,L)) -> cons(rev1(X,L),rev2(X,L))
 rev2(X,nil()) -> nil()
 rev2(X,cons(Y,L)) -> rev(cons(X,rev(rev2(Y,L))))

Proof:
 DP Processor:
  DPs:
   rev1#(X,cons(Y,L)) -> rev1#(Y,L)
   rev#(cons(X,L)) -> rev2#(X,L)
   rev#(cons(X,L)) -> rev1#(X,L)
   rev2#(X,cons(Y,L)) -> rev2#(Y,L)
   rev2#(X,cons(Y,L)) -> rev#(rev2(Y,L))
   rev2#(X,cons(Y,L)) -> rev#(cons(X,rev(rev2(Y,L))))
  TRS:
   rev1(0(),nil()) -> 0()
   rev1(s(X),nil()) -> s(X)
   rev1(X,cons(Y,L)) -> rev1(Y,L)
   rev(nil()) -> nil()
   rev(cons(X,L)) -> cons(rev1(X,L),rev2(X,L))
   rev2(X,nil()) -> nil()
   rev2(X,cons(Y,L)) -> rev(cons(X,rev(rev2(Y,L))))
  TDG Processor:
   DPs:
    rev1#(X,cons(Y,L)) -> rev1#(Y,L)
    rev#(cons(X,L)) -> rev2#(X,L)
    rev#(cons(X,L)) -> rev1#(X,L)
    rev2#(X,cons(Y,L)) -> rev2#(Y,L)
    rev2#(X,cons(Y,L)) -> rev#(rev2(Y,L))
    rev2#(X,cons(Y,L)) -> rev#(cons(X,rev(rev2(Y,L))))
   TRS:
    rev1(0(),nil()) -> 0()
    rev1(s(X),nil()) -> s(X)
    rev1(X,cons(Y,L)) -> rev1(Y,L)
    rev(nil()) -> nil()
    rev(cons(X,L)) -> cons(rev1(X,L),rev2(X,L))
    rev2(X,nil()) -> nil()
    rev2(X,cons(Y,L)) -> rev(cons(X,rev(rev2(Y,L))))
   graph:
    rev2#(X,cons(Y,L)) -> rev2#(Y,L) ->
    rev2#(X,cons(Y,L)) -> rev#(cons(X,rev(rev2(Y,L))))
    rev2#(X,cons(Y,L)) -> rev2#(Y,L) ->
    rev2#(X,cons(Y,L)) -> rev#(rev2(Y,L))
    rev2#(X,cons(Y,L)) -> rev2#(Y,L) ->
    rev2#(X,cons(Y,L)) -> rev2#(Y,L)
    rev2#(X,cons(Y,L)) -> rev#(rev2(Y,L)) ->
    rev#(cons(X,L)) -> rev1#(X,L)
    rev2#(X,cons(Y,L)) -> rev#(rev2(Y,L)) ->
    rev#(cons(X,L)) -> rev2#(X,L)
    rev2#(X,cons(Y,L)) -> rev#(cons(X,rev(rev2(Y,L)))) ->
    rev#(cons(X,L)) -> rev1#(X,L)
    rev2#(X,cons(Y,L)) -> rev#(cons(X,rev(rev2(Y,L)))) ->
    rev#(cons(X,L)) -> rev2#(X,L)
    rev#(cons(X,L)) -> rev2#(X,L) ->
    rev2#(X,cons(Y,L)) -> rev#(cons(X,rev(rev2(Y,L))))
    rev#(cons(X,L)) -> rev2#(X,L) ->
    rev2#(X,cons(Y,L)) -> rev#(rev2(Y,L))
    rev#(cons(X,L)) -> rev2#(X,L) -> rev2#(X,cons(Y,L)) -> rev2#(Y,L)
    rev#(cons(X,L)) -> rev1#(X,L) ->
    rev1#(X,cons(Y,L)) -> rev1#(Y,L)
    rev1#(X,cons(Y,L)) -> rev1#(Y,L) -> rev1#(X,cons(Y,L)) -> rev1#(Y,L)
   SCC Processor:
    #sccs: 2
    #rules: 5
    #arcs: 12/36
    DPs:
     rev2#(X,cons(Y,L)) -> rev2#(Y,L)
     rev2#(X,cons(Y,L)) -> rev#(rev2(Y,L))
     rev#(cons(X,L)) -> rev2#(X,L)
     rev2#(X,cons(Y,L)) -> rev#(cons(X,rev(rev2(Y,L))))
    TRS:
     rev1(0(),nil()) -> 0()
     rev1(s(X),nil()) -> s(X)
     rev1(X,cons(Y,L)) -> rev1(Y,L)
     rev(nil()) -> nil()
     rev(cons(X,L)) -> cons(rev1(X,L),rev2(X,L))
     rev2(X,nil()) -> nil()
     rev2(X,cons(Y,L)) -> rev(cons(X,rev(rev2(Y,L))))
    Matrix Interpretation Processor: dim=1
     
     interpretation:
      [rev2#](x0, x1) = 4x1 + 6,
      
      [rev#](x0) = 4x0 + 2,
      
      [rev2](x0, x1) = x1,
      
      [rev](x0) = x0,
      
      [cons](x0, x1) = 4x1 + 4,
      
      [s](x0) = 0,
      
      [rev1](x0, x1) = 2x1 + 4,
      
      [nil] = 4,
      
      [0] = 0
     orientation:
      rev2#(X,cons(Y,L)) = 16L + 22 >= 4L + 6 = rev2#(Y,L)
      
      rev2#(X,cons(Y,L)) = 16L + 22 >= 4L + 2 = rev#(rev2(Y,L))
      
      rev#(cons(X,L)) = 16L + 18 >= 4L + 6 = rev2#(X,L)
      
      rev2#(X,cons(Y,L)) = 16L + 22 >= 16L + 18 = rev#(cons(X,rev(rev2(Y,L))))
      
      rev1(0(),nil()) = 12 >= 0 = 0()
      
      rev1(s(X),nil()) = 12 >= 0 = s(X)
      
      rev1(X,cons(Y,L)) = 8L + 12 >= 2L + 4 = rev1(Y,L)
      
      rev(nil()) = 4 >= 4 = nil()
      
      rev(cons(X,L)) = 4L + 4 >= 4L + 4 = cons(rev1(X,L),rev2(X,L))
      
      rev2(X,nil()) = 4 >= 4 = nil()
      
      rev2(X,cons(Y,L)) = 4L + 4 >= 4L + 4 = rev(cons(X,rev(rev2(Y,L))))
     problem:
      DPs:
       
      TRS:
       rev1(0(),nil()) -> 0()
       rev1(s(X),nil()) -> s(X)
       rev1(X,cons(Y,L)) -> rev1(Y,L)
       rev(nil()) -> nil()
       rev(cons(X,L)) -> cons(rev1(X,L),rev2(X,L))
       rev2(X,nil()) -> nil()
       rev2(X,cons(Y,L)) -> rev(cons(X,rev(rev2(Y,L))))
     Qed
    
    DPs:
     rev1#(X,cons(Y,L)) -> rev1#(Y,L)
    TRS:
     rev1(0(),nil()) -> 0()
     rev1(s(X),nil()) -> s(X)
     rev1(X,cons(Y,L)) -> rev1(Y,L)
     rev(nil()) -> nil()
     rev(cons(X,L)) -> cons(rev1(X,L),rev2(X,L))
     rev2(X,nil()) -> nil()
     rev2(X,cons(Y,L)) -> rev(cons(X,rev(rev2(Y,L))))
    KBO Processor:
     argument filtering:
      pi(0) = []
      pi(nil) = []
      pi(rev1) = []
      pi(s) = []
      pi(cons) = [1]
      pi(rev) = 0
      pi(rev2) = 1
      pi(rev1#) = 1
     weight function:
      w0 = 1
      w(rev1#) = w(rev2) = w(rev) = w(cons) = w(s) = w(rev1) = w(nil) = w(0) = 1
     precedence:
      rev1# ~ rev ~ cons ~ rev1 ~ nil > rev2 ~ s ~ 0
     problem:
      DPs:
       
      TRS:
       rev1(0(),nil()) -> 0()
       rev1(s(X),nil()) -> s(X)
       rev1(X,cons(Y,L)) -> rev1(Y,L)
       rev(nil()) -> nil()
       rev(cons(X,L)) -> cons(rev1(X,L),rev2(X,L))
       rev2(X,nil()) -> nil()
       rev2(X,cons(Y,L)) -> rev(cons(X,rev(rev2(Y,L))))
     Qed