*** 1 Progress [(O(1),O(n^1))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        a__eq(X,Y) -> false()
        a__eq(X1,X2) -> eq(X1,X2)
        a__eq(0(),0()) -> true()
        a__eq(s(X),s(Y)) -> a__eq(X,Y)
        a__inf(X) -> cons(X,inf(s(X)))
        a__inf(X) -> inf(X)
        a__length(X) -> length(X)
        a__length(cons(X,L)) -> s(length(L))
        a__length(nil()) -> 0()
        a__take(X1,X2) -> take(X1,X2)
        a__take(0(),X) -> nil()
        a__take(s(X),cons(Y,L)) -> cons(Y,take(X,L))
        mark(0()) -> 0()
        mark(cons(X1,X2)) -> cons(X1,X2)
        mark(eq(X1,X2)) -> a__eq(X1,X2)
        mark(false()) -> false()
        mark(inf(X)) -> a__inf(mark(X))
        mark(length(X)) -> a__length(mark(X))
        mark(nil()) -> nil()
        mark(s(X)) -> s(X)
        mark(take(X1,X2)) -> a__take(mark(X1),mark(X2))
        mark(true()) -> true()
      Weak DP Rules:
        
      Weak TRS Rules:
        
      Signature:
        {a__eq/2,a__inf/1,a__length/1,a__take/2,mark/1} / {0/0,cons/2,eq/2,false/0,inf/1,length/1,nil/0,s/1,take/2,true/0}
      Obligation:
        Innermost
        basic terms: {a__eq,a__inf,a__length,a__take,mark}/{0,cons,eq,false,inf,length,nil,s,take,true}
    Applied Processor:
      WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    Proof:
      The weightgap principle applies using the following nonconstant growth matrix-interpretation:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(a__inf) = {1},
          uargs(a__length) = {1},
          uargs(a__take) = {1,2}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                  p(0) = [0]                  
              p(a__eq) = [0]                  
             p(a__inf) = [1] x1 + [0]         
          p(a__length) = [1] x1 + [0]         
            p(a__take) = [1] x1 + [1] x2 + [0]
               p(cons) = [1] x1 + [0]         
                 p(eq) = [0]                  
              p(false) = [0]                  
                p(inf) = [1] x1 + [0]         
             p(length) = [1] x1 + [1]         
               p(mark) = [1] x1 + [7]         
                p(nil) = [0]                  
                  p(s) = [0]                  
               p(take) = [1] x1 + [1] x2 + [0]
               p(true) = [0]                  
        
        Following rules are strictly oriented:
                mark(0()) = [7]               
                          > [0]               
                          = 0()               
        
        mark(cons(X1,X2)) = [1] X1 + [7]      
                          > [1] X1 + [0]      
                          = cons(X1,X2)       
        
          mark(eq(X1,X2)) = [7]               
                          > [0]               
                          = a__eq(X1,X2)      
        
            mark(false()) = [7]               
                          > [0]               
                          = false()           
        
          mark(length(X)) = [1] X + [8]       
                          > [1] X + [7]       
                          = a__length(mark(X))
        
              mark(nil()) = [7]               
                          > [0]               
                          = nil()             
        
               mark(s(X)) = [7]               
                          > [0]               
                          = s(X)              
        
             mark(true()) = [7]               
                          > [0]               
                          = true()            
        
        
        Following rules are (at-least) weakly oriented:
                     a__eq(X,Y) =  [0]                       
                                >= [0]                       
                                =  false()                   
        
                   a__eq(X1,X2) =  [0]                       
                                >= [0]                       
                                =  eq(X1,X2)                 
        
                 a__eq(0(),0()) =  [0]                       
                                >= [0]                       
                                =  true()                    
        
               a__eq(s(X),s(Y)) =  [0]                       
                                >= [0]                       
                                =  a__eq(X,Y)                
        
                      a__inf(X) =  [1] X + [0]               
                                >= [1] X + [0]               
                                =  cons(X,inf(s(X)))         
        
                      a__inf(X) =  [1] X + [0]               
                                >= [1] X + [0]               
                                =  inf(X)                    
        
                   a__length(X) =  [1] X + [0]               
                                >= [1] X + [1]               
                                =  length(X)                 
        
           a__length(cons(X,L)) =  [1] X + [0]               
                                >= [0]                       
                                =  s(length(L))              
        
               a__length(nil()) =  [0]                       
                                >= [0]                       
                                =  0()                       
        
                 a__take(X1,X2) =  [1] X1 + [1] X2 + [0]     
                                >= [1] X1 + [1] X2 + [0]     
                                =  take(X1,X2)               
        
                 a__take(0(),X) =  [1] X + [0]               
                                >= [0]                       
                                =  nil()                     
        
        a__take(s(X),cons(Y,L)) =  [1] Y + [0]               
                                >= [1] Y + [0]               
                                =  cons(Y,take(X,L))         
        
                   mark(inf(X)) =  [1] X + [7]               
                                >= [1] X + [7]               
                                =  a__inf(mark(X))           
        
              mark(take(X1,X2)) =  [1] X1 + [1] X2 + [7]     
                                >= [1] X1 + [1] X2 + [14]    
                                =  a__take(mark(X1),mark(X2))
        
      Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** 1.1 Progress [(O(1),O(n^1))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        a__eq(X,Y) -> false()
        a__eq(X1,X2) -> eq(X1,X2)
        a__eq(0(),0()) -> true()
        a__eq(s(X),s(Y)) -> a__eq(X,Y)
        a__inf(X) -> cons(X,inf(s(X)))
        a__inf(X) -> inf(X)
        a__length(X) -> length(X)
        a__length(cons(X,L)) -> s(length(L))
        a__length(nil()) -> 0()
        a__take(X1,X2) -> take(X1,X2)
        a__take(0(),X) -> nil()
        a__take(s(X),cons(Y,L)) -> cons(Y,take(X,L))
        mark(inf(X)) -> a__inf(mark(X))
        mark(take(X1,X2)) -> a__take(mark(X1),mark(X2))
      Weak DP Rules:
        
      Weak TRS Rules:
        mark(0()) -> 0()
        mark(cons(X1,X2)) -> cons(X1,X2)
        mark(eq(X1,X2)) -> a__eq(X1,X2)
        mark(false()) -> false()
        mark(length(X)) -> a__length(mark(X))
        mark(nil()) -> nil()
        mark(s(X)) -> s(X)
        mark(true()) -> true()
      Signature:
        {a__eq/2,a__inf/1,a__length/1,a__take/2,mark/1} / {0/0,cons/2,eq/2,false/0,inf/1,length/1,nil/0,s/1,take/2,true/0}
      Obligation:
        Innermost
        basic terms: {a__eq,a__inf,a__length,a__take,mark}/{0,cons,eq,false,inf,length,nil,s,take,true}
    Applied Processor:
      WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    Proof:
      The weightgap principle applies using the following nonconstant growth matrix-interpretation:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(a__inf) = {1},
          uargs(a__length) = {1},
          uargs(a__take) = {1,2}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                  p(0) = [1]                  
              p(a__eq) = [1]                  
             p(a__inf) = [1] x1 + [0]         
          p(a__length) = [1] x1 + [0]         
            p(a__take) = [1] x1 + [1] x2 + [7]
               p(cons) = [1]                  
                 p(eq) = [0]                  
              p(false) = [0]                  
                p(inf) = [0]                  
             p(length) = [1] x1 + [0]         
               p(mark) = [1]                  
                p(nil) = [0]                  
                  p(s) = [1]                  
               p(take) = [1] x1 + [1] x2 + [0]
               p(true) = [0]                  
        
        Following rules are strictly oriented:
                     a__eq(X,Y) = [1]                  
                                > [0]                  
                                = false()              
        
                   a__eq(X1,X2) = [1]                  
                                > [0]                  
                                = eq(X1,X2)            
        
                 a__eq(0(),0()) = [1]                  
                                > [0]                  
                                = true()               
        
                 a__take(X1,X2) = [1] X1 + [1] X2 + [7]
                                > [1] X1 + [1] X2 + [0]
                                = take(X1,X2)          
        
                 a__take(0(),X) = [1] X + [8]          
                                > [0]                  
                                = nil()                
        
        a__take(s(X),cons(Y,L)) = [9]                  
                                > [1]                  
                                = cons(Y,take(X,L))    
        
        
        Following rules are (at-least) weakly oriented:
            a__eq(s(X),s(Y)) =  [1]                       
                             >= [1]                       
                             =  a__eq(X,Y)                
        
                   a__inf(X) =  [1] X + [0]               
                             >= [1]                       
                             =  cons(X,inf(s(X)))         
        
                   a__inf(X) =  [1] X + [0]               
                             >= [0]                       
                             =  inf(X)                    
        
                a__length(X) =  [1] X + [0]               
                             >= [1] X + [0]               
                             =  length(X)                 
        
        a__length(cons(X,L)) =  [1]                       
                             >= [1]                       
                             =  s(length(L))              
        
            a__length(nil()) =  [0]                       
                             >= [1]                       
                             =  0()                       
        
                   mark(0()) =  [1]                       
                             >= [1]                       
                             =  0()                       
        
           mark(cons(X1,X2)) =  [1]                       
                             >= [1]                       
                             =  cons(X1,X2)               
        
             mark(eq(X1,X2)) =  [1]                       
                             >= [1]                       
                             =  a__eq(X1,X2)              
        
               mark(false()) =  [1]                       
                             >= [0]                       
                             =  false()                   
        
                mark(inf(X)) =  [1]                       
                             >= [1]                       
                             =  a__inf(mark(X))           
        
             mark(length(X)) =  [1]                       
                             >= [1]                       
                             =  a__length(mark(X))        
        
                 mark(nil()) =  [1]                       
                             >= [0]                       
                             =  nil()                     
        
                  mark(s(X)) =  [1]                       
                             >= [1]                       
                             =  s(X)                      
        
           mark(take(X1,X2)) =  [1]                       
                             >= [9]                       
                             =  a__take(mark(X1),mark(X2))
        
                mark(true()) =  [1]                       
                             >= [0]                       
                             =  true()                    
        
      Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** 1.1.1 Progress [(O(1),O(n^1))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        a__eq(s(X),s(Y)) -> a__eq(X,Y)
        a__inf(X) -> cons(X,inf(s(X)))
        a__inf(X) -> inf(X)
        a__length(X) -> length(X)
        a__length(cons(X,L)) -> s(length(L))
        a__length(nil()) -> 0()
        mark(inf(X)) -> a__inf(mark(X))
        mark(take(X1,X2)) -> a__take(mark(X1),mark(X2))
      Weak DP Rules:
        
      Weak TRS Rules:
        a__eq(X,Y) -> false()
        a__eq(X1,X2) -> eq(X1,X2)
        a__eq(0(),0()) -> true()
        a__take(X1,X2) -> take(X1,X2)
        a__take(0(),X) -> nil()
        a__take(s(X),cons(Y,L)) -> cons(Y,take(X,L))
        mark(0()) -> 0()
        mark(cons(X1,X2)) -> cons(X1,X2)
        mark(eq(X1,X2)) -> a__eq(X1,X2)
        mark(false()) -> false()
        mark(length(X)) -> a__length(mark(X))
        mark(nil()) -> nil()
        mark(s(X)) -> s(X)
        mark(true()) -> true()
      Signature:
        {a__eq/2,a__inf/1,a__length/1,a__take/2,mark/1} / {0/0,cons/2,eq/2,false/0,inf/1,length/1,nil/0,s/1,take/2,true/0}
      Obligation:
        Innermost
        basic terms: {a__eq,a__inf,a__length,a__take,mark}/{0,cons,eq,false,inf,length,nil,s,take,true}
    Applied Processor:
      WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    Proof:
      The weightgap principle applies using the following nonconstant growth matrix-interpretation:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(a__inf) = {1},
          uargs(a__length) = {1},
          uargs(a__take) = {1,2}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                  p(0) = [0]                  
              p(a__eq) = [4]                  
             p(a__inf) = [1] x1 + [1]         
          p(a__length) = [1] x1 + [0]         
            p(a__take) = [1] x1 + [1] x2 + [0]
               p(cons) = [0]                  
                 p(eq) = [4]                  
              p(false) = [0]                  
                p(inf) = [0]                  
             p(length) = [0]                  
               p(mark) = [4]                  
                p(nil) = [0]                  
                  p(s) = [2]                  
               p(take) = [1] x2 + [0]         
               p(true) = [4]                  
        
        Following rules are strictly oriented:
        a__inf(X) = [1] X + [1]      
                  > [0]              
                  = cons(X,inf(s(X)))
        
        a__inf(X) = [1] X + [1]      
                  > [0]              
                  = inf(X)           
        
        
        Following rules are (at-least) weakly oriented:
                     a__eq(X,Y) =  [4]                       
                                >= [0]                       
                                =  false()                   
        
                   a__eq(X1,X2) =  [4]                       
                                >= [4]                       
                                =  eq(X1,X2)                 
        
                 a__eq(0(),0()) =  [4]                       
                                >= [4]                       
                                =  true()                    
        
               a__eq(s(X),s(Y)) =  [4]                       
                                >= [4]                       
                                =  a__eq(X,Y)                
        
                   a__length(X) =  [1] X + [0]               
                                >= [0]                       
                                =  length(X)                 
        
           a__length(cons(X,L)) =  [0]                       
                                >= [2]                       
                                =  s(length(L))              
        
               a__length(nil()) =  [0]                       
                                >= [0]                       
                                =  0()                       
        
                 a__take(X1,X2) =  [1] X1 + [1] X2 + [0]     
                                >= [1] X2 + [0]              
                                =  take(X1,X2)               
        
                 a__take(0(),X) =  [1] X + [0]               
                                >= [0]                       
                                =  nil()                     
        
        a__take(s(X),cons(Y,L)) =  [2]                       
                                >= [0]                       
                                =  cons(Y,take(X,L))         
        
                      mark(0()) =  [4]                       
                                >= [0]                       
                                =  0()                       
        
              mark(cons(X1,X2)) =  [4]                       
                                >= [0]                       
                                =  cons(X1,X2)               
        
                mark(eq(X1,X2)) =  [4]                       
                                >= [4]                       
                                =  a__eq(X1,X2)              
        
                  mark(false()) =  [4]                       
                                >= [0]                       
                                =  false()                   
        
                   mark(inf(X)) =  [4]                       
                                >= [5]                       
                                =  a__inf(mark(X))           
        
                mark(length(X)) =  [4]                       
                                >= [4]                       
                                =  a__length(mark(X))        
        
                    mark(nil()) =  [4]                       
                                >= [0]                       
                                =  nil()                     
        
                     mark(s(X)) =  [4]                       
                                >= [2]                       
                                =  s(X)                      
        
              mark(take(X1,X2)) =  [4]                       
                                >= [8]                       
                                =  a__take(mark(X1),mark(X2))
        
                   mark(true()) =  [4]                       
                                >= [4]                       
                                =  true()                    
        
      Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** 1.1.1.1 Progress [(O(1),O(n^1))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        a__eq(s(X),s(Y)) -> a__eq(X,Y)
        a__length(X) -> length(X)
        a__length(cons(X,L)) -> s(length(L))
        a__length(nil()) -> 0()
        mark(inf(X)) -> a__inf(mark(X))
        mark(take(X1,X2)) -> a__take(mark(X1),mark(X2))
      Weak DP Rules:
        
      Weak TRS Rules:
        a__eq(X,Y) -> false()
        a__eq(X1,X2) -> eq(X1,X2)
        a__eq(0(),0()) -> true()
        a__inf(X) -> cons(X,inf(s(X)))
        a__inf(X) -> inf(X)
        a__take(X1,X2) -> take(X1,X2)
        a__take(0(),X) -> nil()
        a__take(s(X),cons(Y,L)) -> cons(Y,take(X,L))
        mark(0()) -> 0()
        mark(cons(X1,X2)) -> cons(X1,X2)
        mark(eq(X1,X2)) -> a__eq(X1,X2)
        mark(false()) -> false()
        mark(length(X)) -> a__length(mark(X))
        mark(nil()) -> nil()
        mark(s(X)) -> s(X)
        mark(true()) -> true()
      Signature:
        {a__eq/2,a__inf/1,a__length/1,a__take/2,mark/1} / {0/0,cons/2,eq/2,false/0,inf/1,length/1,nil/0,s/1,take/2,true/0}
      Obligation:
        Innermost
        basic terms: {a__eq,a__inf,a__length,a__take,mark}/{0,cons,eq,false,inf,length,nil,s,take,true}
    Applied Processor:
      WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    Proof:
      The weightgap principle applies using the following nonconstant growth matrix-interpretation:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(a__inf) = {1},
          uargs(a__length) = {1},
          uargs(a__take) = {1,2}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                  p(0) = [1]                  
              p(a__eq) = [0]                  
             p(a__inf) = [1] x1 + [2]         
          p(a__length) = [1] x1 + [0]         
            p(a__take) = [1] x1 + [1] x2 + [0]
               p(cons) = [1] x1 + [2]         
                 p(eq) = [0]                  
              p(false) = [0]                  
                p(inf) = [1] x1 + [2]         
             p(length) = [1] x1 + [0]         
               p(mark) = [5] x1 + [0]         
                p(nil) = [1]                  
                  p(s) = [0]                  
               p(take) = [1] x1 + [1] x2 + [0]
               p(true) = [0]                  
        
        Following rules are strictly oriented:
        a__length(cons(X,L)) = [1] X + [2]    
                             > [0]            
                             = s(length(L))   
        
                mark(inf(X)) = [5] X + [10]   
                             > [5] X + [2]    
                             = a__inf(mark(X))
        
        
        Following rules are (at-least) weakly oriented:
                     a__eq(X,Y) =  [0]                       
                                >= [0]                       
                                =  false()                   
        
                   a__eq(X1,X2) =  [0]                       
                                >= [0]                       
                                =  eq(X1,X2)                 
        
                 a__eq(0(),0()) =  [0]                       
                                >= [0]                       
                                =  true()                    
        
               a__eq(s(X),s(Y)) =  [0]                       
                                >= [0]                       
                                =  a__eq(X,Y)                
        
                      a__inf(X) =  [1] X + [2]               
                                >= [1] X + [2]               
                                =  cons(X,inf(s(X)))         
        
                      a__inf(X) =  [1] X + [2]               
                                >= [1] X + [2]               
                                =  inf(X)                    
        
                   a__length(X) =  [1] X + [0]               
                                >= [1] X + [0]               
                                =  length(X)                 
        
               a__length(nil()) =  [1]                       
                                >= [1]                       
                                =  0()                       
        
                 a__take(X1,X2) =  [1] X1 + [1] X2 + [0]     
                                >= [1] X1 + [1] X2 + [0]     
                                =  take(X1,X2)               
        
                 a__take(0(),X) =  [1] X + [1]               
                                >= [1]                       
                                =  nil()                     
        
        a__take(s(X),cons(Y,L)) =  [1] Y + [2]               
                                >= [1] Y + [2]               
                                =  cons(Y,take(X,L))         
        
                      mark(0()) =  [5]                       
                                >= [1]                       
                                =  0()                       
        
              mark(cons(X1,X2)) =  [5] X1 + [10]             
                                >= [1] X1 + [2]              
                                =  cons(X1,X2)               
        
                mark(eq(X1,X2)) =  [0]                       
                                >= [0]                       
                                =  a__eq(X1,X2)              
        
                  mark(false()) =  [0]                       
                                >= [0]                       
                                =  false()                   
        
                mark(length(X)) =  [5] X + [0]               
                                >= [5] X + [0]               
                                =  a__length(mark(X))        
        
                    mark(nil()) =  [5]                       
                                >= [1]                       
                                =  nil()                     
        
                     mark(s(X)) =  [0]                       
                                >= [0]                       
                                =  s(X)                      
        
              mark(take(X1,X2)) =  [5] X1 + [5] X2 + [0]     
                                >= [5] X1 + [5] X2 + [0]     
                                =  a__take(mark(X1),mark(X2))
        
                   mark(true()) =  [0]                       
                                >= [0]                       
                                =  true()                    
        
      Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** 1.1.1.1.1 Progress [(O(1),O(n^1))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        a__eq(s(X),s(Y)) -> a__eq(X,Y)
        a__length(X) -> length(X)
        a__length(nil()) -> 0()
        mark(take(X1,X2)) -> a__take(mark(X1),mark(X2))
      Weak DP Rules:
        
      Weak TRS Rules:
        a__eq(X,Y) -> false()
        a__eq(X1,X2) -> eq(X1,X2)
        a__eq(0(),0()) -> true()
        a__inf(X) -> cons(X,inf(s(X)))
        a__inf(X) -> inf(X)
        a__length(cons(X,L)) -> s(length(L))
        a__take(X1,X2) -> take(X1,X2)
        a__take(0(),X) -> nil()
        a__take(s(X),cons(Y,L)) -> cons(Y,take(X,L))
        mark(0()) -> 0()
        mark(cons(X1,X2)) -> cons(X1,X2)
        mark(eq(X1,X2)) -> a__eq(X1,X2)
        mark(false()) -> false()
        mark(inf(X)) -> a__inf(mark(X))
        mark(length(X)) -> a__length(mark(X))
        mark(nil()) -> nil()
        mark(s(X)) -> s(X)
        mark(true()) -> true()
      Signature:
        {a__eq/2,a__inf/1,a__length/1,a__take/2,mark/1} / {0/0,cons/2,eq/2,false/0,inf/1,length/1,nil/0,s/1,take/2,true/0}
      Obligation:
        Innermost
        basic terms: {a__eq,a__inf,a__length,a__take,mark}/{0,cons,eq,false,inf,length,nil,s,take,true}
    Applied Processor:
      WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    Proof:
      The weightgap principle applies using the following nonconstant growth matrix-interpretation:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(a__inf) = {1},
          uargs(a__length) = {1},
          uargs(a__take) = {1,2}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                  p(0) = [2]                  
              p(a__eq) = [1]                  
             p(a__inf) = [1] x1 + [1]         
          p(a__length) = [1] x1 + [1]         
            p(a__take) = [1] x1 + [1] x2 + [1]
               p(cons) = [1] x1 + [0]         
                 p(eq) = [1]                  
              p(false) = [0]                  
                p(inf) = [1] x1 + [1]         
             p(length) = [1] x1 + [2]         
               p(mark) = [4] x1 + [0]         
                p(nil) = [2]                  
                  p(s) = [0]                  
               p(take) = [1] x1 + [1] x2 + [0]
               p(true) = [0]                  
        
        Following rules are strictly oriented:
        a__length(nil()) = [3]
                         > [2]
                         = 0()
        
        
        Following rules are (at-least) weakly oriented:
                     a__eq(X,Y) =  [1]                       
                                >= [0]                       
                                =  false()                   
        
                   a__eq(X1,X2) =  [1]                       
                                >= [1]                       
                                =  eq(X1,X2)                 
        
                 a__eq(0(),0()) =  [1]                       
                                >= [0]                       
                                =  true()                    
        
               a__eq(s(X),s(Y)) =  [1]                       
                                >= [1]                       
                                =  a__eq(X,Y)                
        
                      a__inf(X) =  [1] X + [1]               
                                >= [1] X + [0]               
                                =  cons(X,inf(s(X)))         
        
                      a__inf(X) =  [1] X + [1]               
                                >= [1] X + [1]               
                                =  inf(X)                    
        
                   a__length(X) =  [1] X + [1]               
                                >= [1] X + [2]               
                                =  length(X)                 
        
           a__length(cons(X,L)) =  [1] X + [1]               
                                >= [0]                       
                                =  s(length(L))              
        
                 a__take(X1,X2) =  [1] X1 + [1] X2 + [1]     
                                >= [1] X1 + [1] X2 + [0]     
                                =  take(X1,X2)               
        
                 a__take(0(),X) =  [1] X + [3]               
                                >= [2]                       
                                =  nil()                     
        
        a__take(s(X),cons(Y,L)) =  [1] Y + [1]               
                                >= [1] Y + [0]               
                                =  cons(Y,take(X,L))         
        
                      mark(0()) =  [8]                       
                                >= [2]                       
                                =  0()                       
        
              mark(cons(X1,X2)) =  [4] X1 + [0]              
                                >= [1] X1 + [0]              
                                =  cons(X1,X2)               
        
                mark(eq(X1,X2)) =  [4]                       
                                >= [1]                       
                                =  a__eq(X1,X2)              
        
                  mark(false()) =  [0]                       
                                >= [0]                       
                                =  false()                   
        
                   mark(inf(X)) =  [4] X + [4]               
                                >= [4] X + [1]               
                                =  a__inf(mark(X))           
        
                mark(length(X)) =  [4] X + [8]               
                                >= [4] X + [1]               
                                =  a__length(mark(X))        
        
                    mark(nil()) =  [8]                       
                                >= [2]                       
                                =  nil()                     
        
                     mark(s(X)) =  [0]                       
                                >= [0]                       
                                =  s(X)                      
        
              mark(take(X1,X2)) =  [4] X1 + [4] X2 + [0]     
                                >= [4] X1 + [4] X2 + [1]     
                                =  a__take(mark(X1),mark(X2))
        
                   mark(true()) =  [0]                       
                                >= [0]                       
                                =  true()                    
        
      Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** 1.1.1.1.1.1 Progress [(O(1),O(n^1))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        a__eq(s(X),s(Y)) -> a__eq(X,Y)
        a__length(X) -> length(X)
        mark(take(X1,X2)) -> a__take(mark(X1),mark(X2))
      Weak DP Rules:
        
      Weak TRS Rules:
        a__eq(X,Y) -> false()
        a__eq(X1,X2) -> eq(X1,X2)
        a__eq(0(),0()) -> true()
        a__inf(X) -> cons(X,inf(s(X)))
        a__inf(X) -> inf(X)
        a__length(cons(X,L)) -> s(length(L))
        a__length(nil()) -> 0()
        a__take(X1,X2) -> take(X1,X2)
        a__take(0(),X) -> nil()
        a__take(s(X),cons(Y,L)) -> cons(Y,take(X,L))
        mark(0()) -> 0()
        mark(cons(X1,X2)) -> cons(X1,X2)
        mark(eq(X1,X2)) -> a__eq(X1,X2)
        mark(false()) -> false()
        mark(inf(X)) -> a__inf(mark(X))
        mark(length(X)) -> a__length(mark(X))
        mark(nil()) -> nil()
        mark(s(X)) -> s(X)
        mark(true()) -> true()
      Signature:
        {a__eq/2,a__inf/1,a__length/1,a__take/2,mark/1} / {0/0,cons/2,eq/2,false/0,inf/1,length/1,nil/0,s/1,take/2,true/0}
      Obligation:
        Innermost
        basic terms: {a__eq,a__inf,a__length,a__take,mark}/{0,cons,eq,false,inf,length,nil,s,take,true}
    Applied Processor:
      WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    Proof:
      The weightgap principle applies using the following nonconstant growth matrix-interpretation:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(a__inf) = {1},
          uargs(a__length) = {1},
          uargs(a__take) = {1,2}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                  p(0) = [1]                  
              p(a__eq) = [0]                  
             p(a__inf) = [1] x1 + [3]         
          p(a__length) = [1] x1 + [0]         
            p(a__take) = [1] x1 + [1] x2 + [1]
               p(cons) = [2]                  
                 p(eq) = [0]                  
              p(false) = [0]                  
                p(inf) = [1] x1 + [1]         
             p(length) = [1] x1 + [0]         
               p(mark) = [4] x1 + [0]         
                p(nil) = [1]                  
                  p(s) = [0]                  
               p(take) = [1] x1 + [1] x2 + [1]
               p(true) = [0]                  
        
        Following rules are strictly oriented:
        mark(take(X1,X2)) = [4] X1 + [4] X2 + [4]     
                          > [4] X1 + [4] X2 + [1]     
                          = a__take(mark(X1),mark(X2))
        
        
        Following rules are (at-least) weakly oriented:
                     a__eq(X,Y) =  [0]                  
                                >= [0]                  
                                =  false()              
        
                   a__eq(X1,X2) =  [0]                  
                                >= [0]                  
                                =  eq(X1,X2)            
        
                 a__eq(0(),0()) =  [0]                  
                                >= [0]                  
                                =  true()               
        
               a__eq(s(X),s(Y)) =  [0]                  
                                >= [0]                  
                                =  a__eq(X,Y)           
        
                      a__inf(X) =  [1] X + [3]          
                                >= [2]                  
                                =  cons(X,inf(s(X)))    
        
                      a__inf(X) =  [1] X + [3]          
                                >= [1] X + [1]          
                                =  inf(X)               
        
                   a__length(X) =  [1] X + [0]          
                                >= [1] X + [0]          
                                =  length(X)            
        
           a__length(cons(X,L)) =  [2]                  
                                >= [0]                  
                                =  s(length(L))         
        
               a__length(nil()) =  [1]                  
                                >= [1]                  
                                =  0()                  
        
                 a__take(X1,X2) =  [1] X1 + [1] X2 + [1]
                                >= [1] X1 + [1] X2 + [1]
                                =  take(X1,X2)          
        
                 a__take(0(),X) =  [1] X + [2]          
                                >= [1]                  
                                =  nil()                
        
        a__take(s(X),cons(Y,L)) =  [3]                  
                                >= [2]                  
                                =  cons(Y,take(X,L))    
        
                      mark(0()) =  [4]                  
                                >= [1]                  
                                =  0()                  
        
              mark(cons(X1,X2)) =  [8]                  
                                >= [2]                  
                                =  cons(X1,X2)          
        
                mark(eq(X1,X2)) =  [0]                  
                                >= [0]                  
                                =  a__eq(X1,X2)         
        
                  mark(false()) =  [0]                  
                                >= [0]                  
                                =  false()              
        
                   mark(inf(X)) =  [4] X + [4]          
                                >= [4] X + [3]          
                                =  a__inf(mark(X))      
        
                mark(length(X)) =  [4] X + [0]          
                                >= [4] X + [0]          
                                =  a__length(mark(X))   
        
                    mark(nil()) =  [4]                  
                                >= [1]                  
                                =  nil()                
        
                     mark(s(X)) =  [0]                  
                                >= [0]                  
                                =  s(X)                 
        
                   mark(true()) =  [0]                  
                                >= [0]                  
                                =  true()               
        
      Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** 1.1.1.1.1.1.1 Progress [(O(1),O(n^1))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        a__eq(s(X),s(Y)) -> a__eq(X,Y)
        a__length(X) -> length(X)
      Weak DP Rules:
        
      Weak TRS Rules:
        a__eq(X,Y) -> false()
        a__eq(X1,X2) -> eq(X1,X2)
        a__eq(0(),0()) -> true()
        a__inf(X) -> cons(X,inf(s(X)))
        a__inf(X) -> inf(X)
        a__length(cons(X,L)) -> s(length(L))
        a__length(nil()) -> 0()
        a__take(X1,X2) -> take(X1,X2)
        a__take(0(),X) -> nil()
        a__take(s(X),cons(Y,L)) -> cons(Y,take(X,L))
        mark(0()) -> 0()
        mark(cons(X1,X2)) -> cons(X1,X2)
        mark(eq(X1,X2)) -> a__eq(X1,X2)
        mark(false()) -> false()
        mark(inf(X)) -> a__inf(mark(X))
        mark(length(X)) -> a__length(mark(X))
        mark(nil()) -> nil()
        mark(s(X)) -> s(X)
        mark(take(X1,X2)) -> a__take(mark(X1),mark(X2))
        mark(true()) -> true()
      Signature:
        {a__eq/2,a__inf/1,a__length/1,a__take/2,mark/1} / {0/0,cons/2,eq/2,false/0,inf/1,length/1,nil/0,s/1,take/2,true/0}
      Obligation:
        Innermost
        basic terms: {a__eq,a__inf,a__length,a__take,mark}/{0,cons,eq,false,inf,length,nil,s,take,true}
    Applied Processor:
      WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    Proof:
      The weightgap principle applies using the following nonconstant growth matrix-interpretation:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(a__inf) = {1},
          uargs(a__length) = {1},
          uargs(a__take) = {1,2}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                  p(0) = [0]                  
              p(a__eq) = [2]                  
             p(a__inf) = [1] x1 + [0]         
          p(a__length) = [1] x1 + [4]         
            p(a__take) = [1] x1 + [1] x2 + [6]
               p(cons) = [1] x1 + [0]         
                 p(eq) = [2]                  
              p(false) = [0]                  
                p(inf) = [1] x1 + [0]         
             p(length) = [1] x1 + [1]         
               p(mark) = [4] x1 + [0]         
                p(nil) = [0]                  
                  p(s) = [0]                  
               p(take) = [1] x1 + [1] x2 + [3]
               p(true) = [0]                  
        
        Following rules are strictly oriented:
        a__length(X) = [1] X + [4]
                     > [1] X + [1]
                     = length(X)  
        
        
        Following rules are (at-least) weakly oriented:
                     a__eq(X,Y) =  [2]                       
                                >= [0]                       
                                =  false()                   
        
                   a__eq(X1,X2) =  [2]                       
                                >= [2]                       
                                =  eq(X1,X2)                 
        
                 a__eq(0(),0()) =  [2]                       
                                >= [0]                       
                                =  true()                    
        
               a__eq(s(X),s(Y)) =  [2]                       
                                >= [2]                       
                                =  a__eq(X,Y)                
        
                      a__inf(X) =  [1] X + [0]               
                                >= [1] X + [0]               
                                =  cons(X,inf(s(X)))         
        
                      a__inf(X) =  [1] X + [0]               
                                >= [1] X + [0]               
                                =  inf(X)                    
        
           a__length(cons(X,L)) =  [1] X + [4]               
                                >= [0]                       
                                =  s(length(L))              
        
               a__length(nil()) =  [4]                       
                                >= [0]                       
                                =  0()                       
        
                 a__take(X1,X2) =  [1] X1 + [1] X2 + [6]     
                                >= [1] X1 + [1] X2 + [3]     
                                =  take(X1,X2)               
        
                 a__take(0(),X) =  [1] X + [6]               
                                >= [0]                       
                                =  nil()                     
        
        a__take(s(X),cons(Y,L)) =  [1] Y + [6]               
                                >= [1] Y + [0]               
                                =  cons(Y,take(X,L))         
        
                      mark(0()) =  [0]                       
                                >= [0]                       
                                =  0()                       
        
              mark(cons(X1,X2)) =  [4] X1 + [0]              
                                >= [1] X1 + [0]              
                                =  cons(X1,X2)               
        
                mark(eq(X1,X2)) =  [8]                       
                                >= [2]                       
                                =  a__eq(X1,X2)              
        
                  mark(false()) =  [0]                       
                                >= [0]                       
                                =  false()                   
        
                   mark(inf(X)) =  [4] X + [0]               
                                >= [4] X + [0]               
                                =  a__inf(mark(X))           
        
                mark(length(X)) =  [4] X + [4]               
                                >= [4] X + [4]               
                                =  a__length(mark(X))        
        
                    mark(nil()) =  [0]                       
                                >= [0]                       
                                =  nil()                     
        
                     mark(s(X)) =  [0]                       
                                >= [0]                       
                                =  s(X)                      
        
              mark(take(X1,X2)) =  [4] X1 + [4] X2 + [12]    
                                >= [4] X1 + [4] X2 + [6]     
                                =  a__take(mark(X1),mark(X2))
        
                   mark(true()) =  [0]                       
                                >= [0]                       
                                =  true()                    
        
      Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** 1.1.1.1.1.1.1.1 Progress [(O(1),O(n^1))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        a__eq(s(X),s(Y)) -> a__eq(X,Y)
      Weak DP Rules:
        
      Weak TRS Rules:
        a__eq(X,Y) -> false()
        a__eq(X1,X2) -> eq(X1,X2)
        a__eq(0(),0()) -> true()
        a__inf(X) -> cons(X,inf(s(X)))
        a__inf(X) -> inf(X)
        a__length(X) -> length(X)
        a__length(cons(X,L)) -> s(length(L))
        a__length(nil()) -> 0()
        a__take(X1,X2) -> take(X1,X2)
        a__take(0(),X) -> nil()
        a__take(s(X),cons(Y,L)) -> cons(Y,take(X,L))
        mark(0()) -> 0()
        mark(cons(X1,X2)) -> cons(X1,X2)
        mark(eq(X1,X2)) -> a__eq(X1,X2)
        mark(false()) -> false()
        mark(inf(X)) -> a__inf(mark(X))
        mark(length(X)) -> a__length(mark(X))
        mark(nil()) -> nil()
        mark(s(X)) -> s(X)
        mark(take(X1,X2)) -> a__take(mark(X1),mark(X2))
        mark(true()) -> true()
      Signature:
        {a__eq/2,a__inf/1,a__length/1,a__take/2,mark/1} / {0/0,cons/2,eq/2,false/0,inf/1,length/1,nil/0,s/1,take/2,true/0}
      Obligation:
        Innermost
        basic terms: {a__eq,a__inf,a__length,a__take,mark}/{0,cons,eq,false,inf,length,nil,s,take,true}
    Applied Processor:
      WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    Proof:
      The weightgap principle applies using the following nonconstant growth matrix-interpretation:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(a__inf) = {1},
          uargs(a__length) = {1},
          uargs(a__take) = {1,2}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                  p(0) = [0]                  
              p(a__eq) = [1] x2 + [0]         
             p(a__inf) = [1] x1 + [4]         
          p(a__length) = [1] x1 + [5]         
            p(a__take) = [1] x1 + [1] x2 + [4]
               p(cons) = [1] x2 + [0]         
                 p(eq) = [1] x2 + [0]         
              p(false) = [0]                  
                p(inf) = [1] x1 + [2]         
             p(length) = [1] x1 + [4]         
               p(mark) = [2] x1 + [4]         
                p(nil) = [1]                  
                  p(s) = [1] x1 + [1]         
               p(take) = [1] x1 + [1] x2 + [4]
               p(true) = [0]                  
        
        Following rules are strictly oriented:
        a__eq(s(X),s(Y)) = [1] Y + [1]
                         > [1] Y + [0]
                         = a__eq(X,Y) 
        
        
        Following rules are (at-least) weakly oriented:
                     a__eq(X,Y) =  [1] Y + [0]               
                                >= [0]                       
                                =  false()                   
        
                   a__eq(X1,X2) =  [1] X2 + [0]              
                                >= [1] X2 + [0]              
                                =  eq(X1,X2)                 
        
                 a__eq(0(),0()) =  [0]                       
                                >= [0]                       
                                =  true()                    
        
                      a__inf(X) =  [1] X + [4]               
                                >= [1] X + [3]               
                                =  cons(X,inf(s(X)))         
        
                      a__inf(X) =  [1] X + [4]               
                                >= [1] X + [2]               
                                =  inf(X)                    
        
                   a__length(X) =  [1] X + [5]               
                                >= [1] X + [4]               
                                =  length(X)                 
        
           a__length(cons(X,L)) =  [1] L + [5]               
                                >= [1] L + [5]               
                                =  s(length(L))              
        
               a__length(nil()) =  [6]                       
                                >= [0]                       
                                =  0()                       
        
                 a__take(X1,X2) =  [1] X1 + [1] X2 + [4]     
                                >= [1] X1 + [1] X2 + [4]     
                                =  take(X1,X2)               
        
                 a__take(0(),X) =  [1] X + [4]               
                                >= [1]                       
                                =  nil()                     
        
        a__take(s(X),cons(Y,L)) =  [1] L + [1] X + [5]       
                                >= [1] L + [1] X + [4]       
                                =  cons(Y,take(X,L))         
        
                      mark(0()) =  [4]                       
                                >= [0]                       
                                =  0()                       
        
              mark(cons(X1,X2)) =  [2] X2 + [4]              
                                >= [1] X2 + [0]              
                                =  cons(X1,X2)               
        
                mark(eq(X1,X2)) =  [2] X2 + [4]              
                                >= [1] X2 + [0]              
                                =  a__eq(X1,X2)              
        
                  mark(false()) =  [4]                       
                                >= [0]                       
                                =  false()                   
        
                   mark(inf(X)) =  [2] X + [8]               
                                >= [2] X + [8]               
                                =  a__inf(mark(X))           
        
                mark(length(X)) =  [2] X + [12]              
                                >= [2] X + [9]               
                                =  a__length(mark(X))        
        
                    mark(nil()) =  [6]                       
                                >= [1]                       
                                =  nil()                     
        
                     mark(s(X)) =  [2] X + [6]               
                                >= [1] X + [1]               
                                =  s(X)                      
        
              mark(take(X1,X2)) =  [2] X1 + [2] X2 + [12]    
                                >= [2] X1 + [2] X2 + [12]    
                                =  a__take(mark(X1),mark(X2))
        
                   mark(true()) =  [4]                       
                                >= [0]                       
                                =  true()                    
        
      Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** 1.1.1.1.1.1.1.1.1 Progress [(O(1),O(1))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        
      Weak DP Rules:
        
      Weak TRS Rules:
        a__eq(X,Y) -> false()
        a__eq(X1,X2) -> eq(X1,X2)
        a__eq(0(),0()) -> true()
        a__eq(s(X),s(Y)) -> a__eq(X,Y)
        a__inf(X) -> cons(X,inf(s(X)))
        a__inf(X) -> inf(X)
        a__length(X) -> length(X)
        a__length(cons(X,L)) -> s(length(L))
        a__length(nil()) -> 0()
        a__take(X1,X2) -> take(X1,X2)
        a__take(0(),X) -> nil()
        a__take(s(X),cons(Y,L)) -> cons(Y,take(X,L))
        mark(0()) -> 0()
        mark(cons(X1,X2)) -> cons(X1,X2)
        mark(eq(X1,X2)) -> a__eq(X1,X2)
        mark(false()) -> false()
        mark(inf(X)) -> a__inf(mark(X))
        mark(length(X)) -> a__length(mark(X))
        mark(nil()) -> nil()
        mark(s(X)) -> s(X)
        mark(take(X1,X2)) -> a__take(mark(X1),mark(X2))
        mark(true()) -> true()
      Signature:
        {a__eq/2,a__inf/1,a__length/1,a__take/2,mark/1} / {0/0,cons/2,eq/2,false/0,inf/1,length/1,nil/0,s/1,take/2,true/0}
      Obligation:
        Innermost
        basic terms: {a__eq,a__inf,a__length,a__take,mark}/{0,cons,eq,false,inf,length,nil,s,take,true}
    Applied Processor:
      EmptyProcessor
    Proof:
      The problem is already closed. The intended complexity is O(1).