YES

Problem:
 a__from(X) -> cons(mark(X),from(s(X)))
 a__length(nil()) -> 0()
 a__length(cons(X,Y)) -> s(a__length1(Y))
 a__length1(X) -> a__length(X)
 mark(from(X)) -> a__from(mark(X))
 mark(length(X)) -> a__length(X)
 mark(length1(X)) -> a__length1(X)
 mark(cons(X1,X2)) -> cons(mark(X1),X2)
 mark(s(X)) -> s(mark(X))
 mark(nil()) -> nil()
 mark(0()) -> 0()
 a__from(X) -> from(X)
 a__length(X) -> length(X)
 a__length1(X) -> length1(X)

Proof:
 DP Processor:
  DPs:
   a__from#(X) -> mark#(X)
   a__length#(cons(X,Y)) -> a__length1#(Y)
   a__length1#(X) -> a__length#(X)
   mark#(from(X)) -> mark#(X)
   mark#(from(X)) -> a__from#(mark(X))
   mark#(length(X)) -> a__length#(X)
   mark#(length1(X)) -> a__length1#(X)
   mark#(cons(X1,X2)) -> mark#(X1)
   mark#(s(X)) -> mark#(X)
  TRS:
   a__from(X) -> cons(mark(X),from(s(X)))
   a__length(nil()) -> 0()
   a__length(cons(X,Y)) -> s(a__length1(Y))
   a__length1(X) -> a__length(X)
   mark(from(X)) -> a__from(mark(X))
   mark(length(X)) -> a__length(X)
   mark(length1(X)) -> a__length1(X)
   mark(cons(X1,X2)) -> cons(mark(X1),X2)
   mark(s(X)) -> s(mark(X))
   mark(nil()) -> nil()
   mark(0()) -> 0()
   a__from(X) -> from(X)
   a__length(X) -> length(X)
   a__length1(X) -> length1(X)
  Matrix Interpretation Processor: dim=2
   
   usable rules:
    a__from(X) -> cons(mark(X),from(s(X)))
    a__length(nil()) -> 0()
    a__length(cons(X,Y)) -> s(a__length1(Y))
    a__length1(X) -> a__length(X)
    mark(from(X)) -> a__from(mark(X))
    mark(length(X)) -> a__length(X)
    mark(length1(X)) -> a__length1(X)
    mark(cons(X1,X2)) -> cons(mark(X1),X2)
    mark(s(X)) -> s(mark(X))
    mark(nil()) -> nil()
    mark(0()) -> 0()
    a__from(X) -> from(X)
    a__length(X) -> length(X)
    a__length1(X) -> length1(X)
   interpretation:
    [a__length1#](x0) = [0 1]x0 + [1],
    
    [a__length#](x0) = [0 1]x0,
    
    [mark#](x0) = [2 0]x0,
    
    [a__from#](x0) = [2 0]x0 + [1],
    
                    [0 2]     [2]
    [length1](x0) = [0 0]x0 + [1],
    
                   [0 2]     [2]
    [length](x0) = [0 0]x0 + [2],
    
                       [0 2]     [3]
    [a__length1](x0) = [0 0]x0 + [3],
    
          [0]
    [0] = [2],
    
                      [0 2]     [2]
    [a__length](x0) = [0 0]x0 + [3],
    
            [0]
    [nil] = [0],
    
                     [1 0]     [0 0]     [2]
    [cons](x0, x1) = [0 0]x0 + [0 1]x1 + [2],
    
                 [2 0]     [1]
    [from](x0) = [0 1]x0 + [1],
    
                   [1]
    [s](x0) = x0 + [0],
    
                 [2 0]     [0]
    [mark](x0) = [2 1]x0 + [1],
    
                    [2 0]     [2]
    [a__from](x0) = [0 1]x0 + [3]
   orientation:
    a__from#(X) = [2 0]X + [1] >= [2 0]X = mark#(X)
    
    a__length#(cons(X,Y)) = [0 1]Y + [2] >= [0 1]Y + [1] = a__length1#(Y)
    
    a__length1#(X) = [0 1]X + [1] >= [0 1]X = a__length#(X)
    
    mark#(from(X)) = [4 0]X + [2] >= [2 0]X = mark#(X)
    
    mark#(from(X)) = [4 0]X + [2] >= [4 0]X + [1] = a__from#(mark(X))
    
    mark#(length(X)) = [0 4]X + [4] >= [0 1]X = a__length#(X)
    
    mark#(length1(X)) = [0 4]X + [4] >= [0 1]X + [1] = a__length1#(X)
    
    mark#(cons(X1,X2)) = [2 0]X1 + [4] >= [2 0]X1 = mark#(X1)
    
    mark#(s(X)) = [2 0]X + [2] >= [2 0]X = mark#(X)
    
                 [2 0]    [2]    [2 0]    [2]                           
    a__from(X) = [0 1]X + [3] >= [0 1]X + [3] = cons(mark(X),from(s(X)))
    
                       [2]    [0]      
    a__length(nil()) = [3] >= [2] = 0()
    
                           [0 2]    [6]    [0 2]    [4]                   
    a__length(cons(X,Y)) = [0 0]Y + [3] >= [0 0]Y + [3] = s(a__length1(Y))
    
                    [0 2]    [3]    [0 2]    [2]               
    a__length1(X) = [0 0]X + [3] >= [0 0]X + [3] = a__length(X)
    
                    [4 0]    [2]    [4 0]    [2]                   
    mark(from(X)) = [4 1]X + [4] >= [2 1]X + [4] = a__from(mark(X))
    
                      [0 4]    [4]    [0 2]    [2]               
    mark(length(X)) = [0 4]X + [7] >= [0 0]X + [3] = a__length(X)
    
                       [0 4]    [4]    [0 2]    [3]                
    mark(length1(X)) = [0 4]X + [6] >= [0 0]X + [3] = a__length1(X)
    
                        [2 0]     [0 0]     [4]    [2 0]     [0 0]     [2]                    
    mark(cons(X1,X2)) = [2 0]X1 + [0 1]X2 + [7] >= [0 0]X1 + [0 1]X2 + [2] = cons(mark(X1),X2)
    
                 [2 0]    [2]    [2 0]    [1]             
    mark(s(X)) = [2 1]X + [3] >= [2 1]X + [1] = s(mark(X))
    
                  [0]    [0]        
    mark(nil()) = [1] >= [0] = nil()
    
                [0]    [0]      
    mark(0()) = [3] >= [2] = 0()
    
                 [2 0]    [2]    [2 0]    [1]          
    a__from(X) = [0 1]X + [3] >= [0 1]X + [1] = from(X)
    
                   [0 2]    [2]    [0 2]    [2]            
    a__length(X) = [0 0]X + [3] >= [0 0]X + [2] = length(X)
    
                    [0 2]    [3]    [0 2]    [2]             
    a__length1(X) = [0 0]X + [3] >= [0 0]X + [1] = length1(X)
   problem:
    DPs:
     
    TRS:
     a__from(X) -> cons(mark(X),from(s(X)))
     a__length(nil()) -> 0()
     a__length(cons(X,Y)) -> s(a__length1(Y))
     a__length1(X) -> a__length(X)
     mark(from(X)) -> a__from(mark(X))
     mark(length(X)) -> a__length(X)
     mark(length1(X)) -> a__length1(X)
     mark(cons(X1,X2)) -> cons(mark(X1),X2)
     mark(s(X)) -> s(mark(X))
     mark(nil()) -> nil()
     mark(0()) -> 0()
     a__from(X) -> from(X)
     a__length(X) -> length(X)
     a__length1(X) -> length1(X)
   Qed