*** 1 Progress [(O(1),O(n^3))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        a__from(X) -> cons(mark(X),from(s(X)))
        a__from(X) -> from(X)
        a__length(X) -> length(X)
        a__length(cons(X,Y)) -> s(a__length1(Y))
        a__length(nil()) -> 0()
        a__length1(X) -> a__length(X)
        a__length1(X) -> length1(X)
        mark(0()) -> 0()
        mark(cons(X1,X2)) -> cons(mark(X1),X2)
        mark(from(X)) -> a__from(mark(X))
        mark(length(X)) -> a__length(X)
        mark(length1(X)) -> a__length1(X)
        mark(nil()) -> nil()
        mark(s(X)) -> s(mark(X))
      Weak DP Rules:
        
      Weak TRS Rules:
        
      Signature:
        {a__from/1,a__length/1,a__length1/1,mark/1} / {0/0,cons/2,from/1,length/1,length1/1,nil/0,s/1}
      Obligation:
        Innermost
        basic terms: {a__from,a__length,a__length1,mark}/{0,cons,from,length,length1,nil,s}
    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__from) = {1},
          uargs(cons) = {1},
          uargs(s) = {1}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                   p(0) = [11]        
             p(a__from) = [1] x1 + [1]
           p(a__length) = [0]         
          p(a__length1) = [0]         
                p(cons) = [1] x1 + [0]
                p(from) = [1] x1 + [0]
              p(length) = [0]         
             p(length1) = [0]         
                p(mark) = [1] x1 + [0]
                 p(nil) = [0]         
                   p(s) = [1] x1 + [0]
        
        Following rules are strictly oriented:
        a__from(X) = [1] X + [1]             
                   > [1] X + [0]             
                   = cons(mark(X),from(s(X)))
        
        a__from(X) = [1] X + [1]             
                   > [1] X + [0]             
                   = from(X)                 
        
        
        Following rules are (at-least) weakly oriented:
                a__length(X) =  [0]              
                             >= [0]              
                             =  length(X)        
        
        a__length(cons(X,Y)) =  [0]              
                             >= [0]              
                             =  s(a__length1(Y)) 
        
            a__length(nil()) =  [0]              
                             >= [11]             
                             =  0()              
        
               a__length1(X) =  [0]              
                             >= [0]              
                             =  a__length(X)     
        
               a__length1(X) =  [0]              
                             >= [0]              
                             =  length1(X)       
        
                   mark(0()) =  [11]             
                             >= [11]             
                             =  0()              
        
           mark(cons(X1,X2)) =  [1] X1 + [0]     
                             >= [1] X1 + [0]     
                             =  cons(mark(X1),X2)
        
               mark(from(X)) =  [1] X + [0]      
                             >= [1] X + [1]      
                             =  a__from(mark(X)) 
        
             mark(length(X)) =  [0]              
                             >= [0]              
                             =  a__length(X)     
        
            mark(length1(X)) =  [0]              
                             >= [0]              
                             =  a__length1(X)    
        
                 mark(nil()) =  [0]              
                             >= [0]              
                             =  nil()            
        
                  mark(s(X)) =  [1] X + [0]      
                             >= [1] X + [0]      
                             =  s(mark(X))       
        
      Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** 1.1 Progress [(O(1),O(n^3))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        a__length(X) -> length(X)
        a__length(cons(X,Y)) -> s(a__length1(Y))
        a__length(nil()) -> 0()
        a__length1(X) -> a__length(X)
        a__length1(X) -> length1(X)
        mark(0()) -> 0()
        mark(cons(X1,X2)) -> cons(mark(X1),X2)
        mark(from(X)) -> a__from(mark(X))
        mark(length(X)) -> a__length(X)
        mark(length1(X)) -> a__length1(X)
        mark(nil()) -> nil()
        mark(s(X)) -> s(mark(X))
      Weak DP Rules:
        
      Weak TRS Rules:
        a__from(X) -> cons(mark(X),from(s(X)))
        a__from(X) -> from(X)
      Signature:
        {a__from/1,a__length/1,a__length1/1,mark/1} / {0/0,cons/2,from/1,length/1,length1/1,nil/0,s/1}
      Obligation:
        Innermost
        basic terms: {a__from,a__length,a__length1,mark}/{0,cons,from,length,length1,nil,s}
    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__from) = {1},
          uargs(cons) = {1},
          uargs(s) = {1}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                   p(0) = [0]         
             p(a__from) = [1] x1 + [1]
           p(a__length) = [7]         
          p(a__length1) = [0]         
                p(cons) = [1] x1 + [1]
                p(from) = [1] x1 + [1]
              p(length) = [9]         
             p(length1) = [0]         
                p(mark) = [1] x1 + [0]
                 p(nil) = [0]         
                   p(s) = [1] x1 + [9]
        
        Following rules are strictly oriented:
        a__length(nil()) = [7]         
                         > [0]         
                         = 0()         
        
         mark(length(X)) = [9]         
                         > [7]         
                         = a__length(X)
        
        
        Following rules are (at-least) weakly oriented:
                  a__from(X) =  [1] X + [1]             
                             >= [1] X + [1]             
                             =  cons(mark(X),from(s(X)))
        
                  a__from(X) =  [1] X + [1]             
                             >= [1] X + [1]             
                             =  from(X)                 
        
                a__length(X) =  [7]                     
                             >= [9]                     
                             =  length(X)               
        
        a__length(cons(X,Y)) =  [7]                     
                             >= [9]                     
                             =  s(a__length1(Y))        
        
               a__length1(X) =  [0]                     
                             >= [7]                     
                             =  a__length(X)            
        
               a__length1(X) =  [0]                     
                             >= [0]                     
                             =  length1(X)              
        
                   mark(0()) =  [0]                     
                             >= [0]                     
                             =  0()                     
        
           mark(cons(X1,X2)) =  [1] X1 + [1]            
                             >= [1] X1 + [1]            
                             =  cons(mark(X1),X2)       
        
               mark(from(X)) =  [1] X + [1]             
                             >= [1] X + [1]             
                             =  a__from(mark(X))        
        
            mark(length1(X)) =  [0]                     
                             >= [0]                     
                             =  a__length1(X)           
        
                 mark(nil()) =  [0]                     
                             >= [0]                     
                             =  nil()                   
        
                  mark(s(X)) =  [1] X + [9]             
                             >= [1] X + [9]             
                             =  s(mark(X))              
        
      Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** 1.1.1 Progress [(O(1),O(n^3))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        a__length(X) -> length(X)
        a__length(cons(X,Y)) -> s(a__length1(Y))
        a__length1(X) -> a__length(X)
        a__length1(X) -> length1(X)
        mark(0()) -> 0()
        mark(cons(X1,X2)) -> cons(mark(X1),X2)
        mark(from(X)) -> a__from(mark(X))
        mark(length1(X)) -> a__length1(X)
        mark(nil()) -> nil()
        mark(s(X)) -> s(mark(X))
      Weak DP Rules:
        
      Weak TRS Rules:
        a__from(X) -> cons(mark(X),from(s(X)))
        a__from(X) -> from(X)
        a__length(nil()) -> 0()
        mark(length(X)) -> a__length(X)
      Signature:
        {a__from/1,a__length/1,a__length1/1,mark/1} / {0/0,cons/2,from/1,length/1,length1/1,nil/0,s/1}
      Obligation:
        Innermost
        basic terms: {a__from,a__length,a__length1,mark}/{0,cons,from,length,length1,nil,s}
    Applied Processor:
      NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules, greedy = NoGreedy}
    Proof:
      We apply a matrix interpretation of kind constructor based matrix interpretation:
      The following argument positions are considered usable:
        uargs(a__from) = {1},
        uargs(cons) = {1},
        uargs(s) = {1}
      
      Following symbols are considered usable:
        {a__from,a__length,a__length1,mark}
      TcT has computed the following interpretation:
                 p(0) = [3]         
           p(a__from) = [1] x1 + [5]
         p(a__length) = [3]         
        p(a__length1) = [3]         
              p(cons) = [1] x1 + [0]
              p(from) = [1] x1 + [5]
            p(length) = [0]         
           p(length1) = [3]         
              p(mark) = [1] x1 + [4]
               p(nil) = [12]        
                 p(s) = [1] x1 + [0]
      
      Following rules are strictly oriented:
          a__length(X) = [3]          
                       > [0]          
                       = length(X)    
      
             mark(0()) = [7]          
                       > [3]          
                       = 0()          
      
      mark(length1(X)) = [7]          
                       > [3]          
                       = a__length1(X)
      
           mark(nil()) = [16]         
                       > [12]         
                       = nil()        
      
      
      Following rules are (at-least) weakly oriented:
                a__from(X) =  [1] X + [5]             
                           >= [1] X + [4]             
                           =  cons(mark(X),from(s(X)))
      
                a__from(X) =  [1] X + [5]             
                           >= [1] X + [5]             
                           =  from(X)                 
      
      a__length(cons(X,Y)) =  [3]                     
                           >= [3]                     
                           =  s(a__length1(Y))        
      
          a__length(nil()) =  [3]                     
                           >= [3]                     
                           =  0()                     
      
             a__length1(X) =  [3]                     
                           >= [3]                     
                           =  a__length(X)            
      
             a__length1(X) =  [3]                     
                           >= [3]                     
                           =  length1(X)              
      
         mark(cons(X1,X2)) =  [1] X1 + [4]            
                           >= [1] X1 + [4]            
                           =  cons(mark(X1),X2)       
      
             mark(from(X)) =  [1] X + [9]             
                           >= [1] X + [9]             
                           =  a__from(mark(X))        
      
           mark(length(X)) =  [4]                     
                           >= [3]                     
                           =  a__length(X)            
      
                mark(s(X)) =  [1] X + [4]             
                           >= [1] X + [4]             
                           =  s(mark(X))              
      
*** 1.1.1.1 Progress [(O(1),O(n^3))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        a__length(cons(X,Y)) -> s(a__length1(Y))
        a__length1(X) -> a__length(X)
        a__length1(X) -> length1(X)
        mark(cons(X1,X2)) -> cons(mark(X1),X2)
        mark(from(X)) -> a__from(mark(X))
        mark(s(X)) -> s(mark(X))
      Weak DP Rules:
        
      Weak TRS Rules:
        a__from(X) -> cons(mark(X),from(s(X)))
        a__from(X) -> from(X)
        a__length(X) -> length(X)
        a__length(nil()) -> 0()
        mark(0()) -> 0()
        mark(length(X)) -> a__length(X)
        mark(length1(X)) -> a__length1(X)
        mark(nil()) -> nil()
      Signature:
        {a__from/1,a__length/1,a__length1/1,mark/1} / {0/0,cons/2,from/1,length/1,length1/1,nil/0,s/1}
      Obligation:
        Innermost
        basic terms: {a__from,a__length,a__length1,mark}/{0,cons,from,length,length1,nil,s}
    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__from) = {1},
          uargs(cons) = {1},
          uargs(s) = {1}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                   p(0) = [1]         
             p(a__from) = [1] x1 + [6]
           p(a__length) = [2]         
          p(a__length1) = [0]         
                p(cons) = [1] x1 + [6]
                p(from) = [1] x1 + [6]
              p(length) = [2]         
             p(length1) = [0]         
                p(mark) = [1] x1 + [0]
                 p(nil) = [2]         
                   p(s) = [1] x1 + [0]
        
        Following rules are strictly oriented:
        a__length(cons(X,Y)) = [2]             
                             > [0]             
                             = s(a__length1(Y))
        
        
        Following rules are (at-least) weakly oriented:
               a__from(X) =  [1] X + [6]             
                          >= [1] X + [6]             
                          =  cons(mark(X),from(s(X)))
        
               a__from(X) =  [1] X + [6]             
                          >= [1] X + [6]             
                          =  from(X)                 
        
             a__length(X) =  [2]                     
                          >= [2]                     
                          =  length(X)               
        
         a__length(nil()) =  [2]                     
                          >= [1]                     
                          =  0()                     
        
            a__length1(X) =  [0]                     
                          >= [2]                     
                          =  a__length(X)            
        
            a__length1(X) =  [0]                     
                          >= [0]                     
                          =  length1(X)              
        
                mark(0()) =  [1]                     
                          >= [1]                     
                          =  0()                     
        
        mark(cons(X1,X2)) =  [1] X1 + [6]            
                          >= [1] X1 + [6]            
                          =  cons(mark(X1),X2)       
        
            mark(from(X)) =  [1] X + [6]             
                          >= [1] X + [6]             
                          =  a__from(mark(X))        
        
          mark(length(X)) =  [2]                     
                          >= [2]                     
                          =  a__length(X)            
        
         mark(length1(X)) =  [0]                     
                          >= [0]                     
                          =  a__length1(X)           
        
              mark(nil()) =  [2]                     
                          >= [2]                     
                          =  nil()                   
        
               mark(s(X)) =  [1] X + [0]             
                          >= [1] X + [0]             
                          =  s(mark(X))              
        
      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^3))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        a__length1(X) -> a__length(X)
        a__length1(X) -> length1(X)
        mark(cons(X1,X2)) -> cons(mark(X1),X2)
        mark(from(X)) -> a__from(mark(X))
        mark(s(X)) -> s(mark(X))
      Weak DP Rules:
        
      Weak TRS Rules:
        a__from(X) -> cons(mark(X),from(s(X)))
        a__from(X) -> from(X)
        a__length(X) -> length(X)
        a__length(cons(X,Y)) -> s(a__length1(Y))
        a__length(nil()) -> 0()
        mark(0()) -> 0()
        mark(length(X)) -> a__length(X)
        mark(length1(X)) -> a__length1(X)
        mark(nil()) -> nil()
      Signature:
        {a__from/1,a__length/1,a__length1/1,mark/1} / {0/0,cons/2,from/1,length/1,length1/1,nil/0,s/1}
      Obligation:
        Innermost
        basic terms: {a__from,a__length,a__length1,mark}/{0,cons,from,length,length1,nil,s}
    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__from) = {1},
          uargs(cons) = {1},
          uargs(s) = {1}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                   p(0) = [8]         
             p(a__from) = [1] x1 + [1]
           p(a__length) = [8]         
          p(a__length1) = [8]         
                p(cons) = [1] x1 + [0]
                p(from) = [1] x1 + [1]
              p(length) = [8]         
             p(length1) = [7]         
                p(mark) = [1] x1 + [1]
                 p(nil) = [0]         
                   p(s) = [1] x1 + [0]
        
        Following rules are strictly oriented:
        a__length1(X) = [8]       
                      > [7]       
                      = length1(X)
        
        
        Following rules are (at-least) weakly oriented:
                  a__from(X) =  [1] X + [1]             
                             >= [1] X + [1]             
                             =  cons(mark(X),from(s(X)))
        
                  a__from(X) =  [1] X + [1]             
                             >= [1] X + [1]             
                             =  from(X)                 
        
                a__length(X) =  [8]                     
                             >= [8]                     
                             =  length(X)               
        
        a__length(cons(X,Y)) =  [8]                     
                             >= [8]                     
                             =  s(a__length1(Y))        
        
            a__length(nil()) =  [8]                     
                             >= [8]                     
                             =  0()                     
        
               a__length1(X) =  [8]                     
                             >= [8]                     
                             =  a__length(X)            
        
                   mark(0()) =  [9]                     
                             >= [8]                     
                             =  0()                     
        
           mark(cons(X1,X2)) =  [1] X1 + [1]            
                             >= [1] X1 + [1]            
                             =  cons(mark(X1),X2)       
        
               mark(from(X)) =  [1] X + [2]             
                             >= [1] X + [2]             
                             =  a__from(mark(X))        
        
             mark(length(X)) =  [9]                     
                             >= [8]                     
                             =  a__length(X)            
        
            mark(length1(X)) =  [8]                     
                             >= [8]                     
                             =  a__length1(X)           
        
                 mark(nil()) =  [1]                     
                             >= [0]                     
                             =  nil()                   
        
                  mark(s(X)) =  [1] X + [1]             
                             >= [1] X + [1]             
                             =  s(mark(X))              
        
      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^3))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        a__length1(X) -> a__length(X)
        mark(cons(X1,X2)) -> cons(mark(X1),X2)
        mark(from(X)) -> a__from(mark(X))
        mark(s(X)) -> s(mark(X))
      Weak DP Rules:
        
      Weak TRS Rules:
        a__from(X) -> cons(mark(X),from(s(X)))
        a__from(X) -> from(X)
        a__length(X) -> length(X)
        a__length(cons(X,Y)) -> s(a__length1(Y))
        a__length(nil()) -> 0()
        a__length1(X) -> length1(X)
        mark(0()) -> 0()
        mark(length(X)) -> a__length(X)
        mark(length1(X)) -> a__length1(X)
        mark(nil()) -> nil()
      Signature:
        {a__from/1,a__length/1,a__length1/1,mark/1} / {0/0,cons/2,from/1,length/1,length1/1,nil/0,s/1}
      Obligation:
        Innermost
        basic terms: {a__from,a__length,a__length1,mark}/{0,cons,from,length,length1,nil,s}
    Applied Processor:
      NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules, greedy = NoGreedy}
    Proof:
      We apply a matrix interpretation of kind constructor based matrix interpretation:
      The following argument positions are considered usable:
        uargs(a__from) = {1},
        uargs(cons) = {1},
        uargs(s) = {1}
      
      Following symbols are considered usable:
        {a__from,a__length,a__length1,mark}
      TcT has computed the following interpretation:
                 p(0) = [1]                      
                        [0]                      
           p(a__from) = [1 0] x1 + [0]           
                        [0 0]      [7]           
         p(a__length) = [0 1] x1 + [0]           
                        [0 0]      [0]           
        p(a__length1) = [0 1] x1 + [4]           
                        [0 0]      [0]           
              p(cons) = [1 0] x1 + [0 0] x2 + [0]
                        [0 0]      [0 1]      [4]
              p(from) = [1 0] x1 + [0]           
                        [0 0]      [2]           
            p(length) = [0 1] x1 + [0]           
                        [0 0]      [0]           
           p(length1) = [0 1] x1 + [4]           
                        [0 0]      [0]           
              p(mark) = [1 0] x1 + [0]           
                        [2 2]      [5]           
               p(nil) = [0]                      
                        [2]                      
                 p(s) = [1 0] x1 + [0]           
                        [0 1]      [0]           
      
      Following rules are strictly oriented:
      a__length1(X) = [0 1] X + [4]
                      [0 0]     [0]
                    > [0 1] X + [0]
                      [0 0]     [0]
                    = a__length(X) 
      
      
      Following rules are (at-least) weakly oriented:
                a__from(X) =  [1 0] X + [0]             
                              [0 0]     [7]             
                           >= [1 0] X + [0]             
                              [0 0]     [6]             
                           =  cons(mark(X),from(s(X)))  
      
                a__from(X) =  [1 0] X + [0]             
                              [0 0]     [7]             
                           >= [1 0] X + [0]             
                              [0 0]     [2]             
                           =  from(X)                   
      
              a__length(X) =  [0 1] X + [0]             
                              [0 0]     [0]             
                           >= [0 1] X + [0]             
                              [0 0]     [0]             
                           =  length(X)                 
      
      a__length(cons(X,Y)) =  [0 1] Y + [4]             
                              [0 0]     [0]             
                           >= [0 1] Y + [4]             
                              [0 0]     [0]             
                           =  s(a__length1(Y))          
      
          a__length(nil()) =  [2]                       
                              [0]                       
                           >= [1]                       
                              [0]                       
                           =  0()                       
      
             a__length1(X) =  [0 1] X + [4]             
                              [0 0]     [0]             
                           >= [0 1] X + [4]             
                              [0 0]     [0]             
                           =  length1(X)                
      
                 mark(0()) =  [1]                       
                              [7]                       
                           >= [1]                       
                              [0]                       
                           =  0()                       
      
         mark(cons(X1,X2)) =  [1 0] X1 + [0 0] X2 + [0] 
                              [2 0]      [0 2]      [13]
                           >= [1 0] X1 + [0 0] X2 + [0] 
                              [0 0]      [0 1]      [4] 
                           =  cons(mark(X1),X2)         
      
             mark(from(X)) =  [1 0] X + [0]             
                              [2 0]     [9]             
                           >= [1 0] X + [0]             
                              [0 0]     [7]             
                           =  a__from(mark(X))          
      
           mark(length(X)) =  [0 1] X + [0]             
                              [0 2]     [5]             
                           >= [0 1] X + [0]             
                              [0 0]     [0]             
                           =  a__length(X)              
      
          mark(length1(X)) =  [0 1] X + [4]             
                              [0 2]     [13]            
                           >= [0 1] X + [4]             
                              [0 0]     [0]             
                           =  a__length1(X)             
      
               mark(nil()) =  [0]                       
                              [9]                       
                           >= [0]                       
                              [2]                       
                           =  nil()                     
      
                mark(s(X)) =  [1 0] X + [0]             
                              [2 2]     [5]             
                           >= [1 0] X + [0]             
                              [2 2]     [5]             
                           =  s(mark(X))                
      
*** 1.1.1.1.1.1.1 Progress [(O(1),O(n^3))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        mark(cons(X1,X2)) -> cons(mark(X1),X2)
        mark(from(X)) -> a__from(mark(X))
        mark(s(X)) -> s(mark(X))
      Weak DP Rules:
        
      Weak TRS Rules:
        a__from(X) -> cons(mark(X),from(s(X)))
        a__from(X) -> from(X)
        a__length(X) -> length(X)
        a__length(cons(X,Y)) -> s(a__length1(Y))
        a__length(nil()) -> 0()
        a__length1(X) -> a__length(X)
        a__length1(X) -> length1(X)
        mark(0()) -> 0()
        mark(length(X)) -> a__length(X)
        mark(length1(X)) -> a__length1(X)
        mark(nil()) -> nil()
      Signature:
        {a__from/1,a__length/1,a__length1/1,mark/1} / {0/0,cons/2,from/1,length/1,length1/1,nil/0,s/1}
      Obligation:
        Innermost
        basic terms: {a__from,a__length,a__length1,mark}/{0,cons,from,length,length1,nil,s}
    Applied Processor:
      NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules, greedy = NoGreedy}
    Proof:
      We apply a matrix interpretation of kind constructor based matrix interpretation:
      The following argument positions are considered usable:
        uargs(a__from) = {1},
        uargs(cons) = {1},
        uargs(s) = {1}
      
      Following symbols are considered usable:
        {a__from,a__length,a__length1,mark}
      TcT has computed the following interpretation:
                 p(0) = [0]                      
                        [0]                      
           p(a__from) = [1 4] x1 + [5]           
                        [0 1]      [3]           
         p(a__length) = [0]                      
                        [0]                      
        p(a__length1) = [0]                      
                        [0]                      
              p(cons) = [1 0] x1 + [0 1] x2 + [0]
                        [0 1]      [0 0]      [0]
              p(from) = [1 4] x1 + [0]           
                        [0 1]      [3]           
            p(length) = [0]                      
                        [0]                      
           p(length1) = [0]                      
                        [0]                      
              p(mark) = [1 3] x1 + [0]           
                        [0 1]      [0]           
               p(nil) = [0]                      
                        [0]                      
                 p(s) = [1 0] x1 + [0]           
                        [0 1]      [0]           
      
      Following rules are strictly oriented:
      mark(from(X)) = [1 7] X + [9]   
                      [0 1]     [3]   
                    > [1 7] X + [5]   
                      [0 1]     [3]   
                    = a__from(mark(X))
      
      
      Following rules are (at-least) weakly oriented:
                a__from(X) =  [1 4] X + [5]            
                              [0 1]     [3]            
                           >= [1 4] X + [3]            
                              [0 1]     [0]            
                           =  cons(mark(X),from(s(X))) 
      
                a__from(X) =  [1 4] X + [5]            
                              [0 1]     [3]            
                           >= [1 4] X + [0]            
                              [0 1]     [3]            
                           =  from(X)                  
      
              a__length(X) =  [0]                      
                              [0]                      
                           >= [0]                      
                              [0]                      
                           =  length(X)                
      
      a__length(cons(X,Y)) =  [0]                      
                              [0]                      
                           >= [0]                      
                              [0]                      
                           =  s(a__length1(Y))         
      
          a__length(nil()) =  [0]                      
                              [0]                      
                           >= [0]                      
                              [0]                      
                           =  0()                      
      
             a__length1(X) =  [0]                      
                              [0]                      
                           >= [0]                      
                              [0]                      
                           =  a__length(X)             
      
             a__length1(X) =  [0]                      
                              [0]                      
                           >= [0]                      
                              [0]                      
                           =  length1(X)               
      
                 mark(0()) =  [0]                      
                              [0]                      
                           >= [0]                      
                              [0]                      
                           =  0()                      
      
         mark(cons(X1,X2)) =  [1 3] X1 + [0 1] X2 + [0]
                              [0 1]      [0 0]      [0]
                           >= [1 3] X1 + [0 1] X2 + [0]
                              [0 1]      [0 0]      [0]
                           =  cons(mark(X1),X2)        
      
           mark(length(X)) =  [0]                      
                              [0]                      
                           >= [0]                      
                              [0]                      
                           =  a__length(X)             
      
          mark(length1(X)) =  [0]                      
                              [0]                      
                           >= [0]                      
                              [0]                      
                           =  a__length1(X)            
      
               mark(nil()) =  [0]                      
                              [0]                      
                           >= [0]                      
                              [0]                      
                           =  nil()                    
      
                mark(s(X)) =  [1 3] X + [0]            
                              [0 1]     [0]            
                           >= [1 3] X + [0]            
                              [0 1]     [0]            
                           =  s(mark(X))               
      
*** 1.1.1.1.1.1.1.1 Progress [(O(1),O(n^3))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        mark(cons(X1,X2)) -> cons(mark(X1),X2)
        mark(s(X)) -> s(mark(X))
      Weak DP Rules:
        
      Weak TRS Rules:
        a__from(X) -> cons(mark(X),from(s(X)))
        a__from(X) -> from(X)
        a__length(X) -> length(X)
        a__length(cons(X,Y)) -> s(a__length1(Y))
        a__length(nil()) -> 0()
        a__length1(X) -> a__length(X)
        a__length1(X) -> length1(X)
        mark(0()) -> 0()
        mark(from(X)) -> a__from(mark(X))
        mark(length(X)) -> a__length(X)
        mark(length1(X)) -> a__length1(X)
        mark(nil()) -> nil()
      Signature:
        {a__from/1,a__length/1,a__length1/1,mark/1} / {0/0,cons/2,from/1,length/1,length1/1,nil/0,s/1}
      Obligation:
        Innermost
        basic terms: {a__from,a__length,a__length1,mark}/{0,cons,from,length,length1,nil,s}
    Applied Processor:
      NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules, greedy = NoGreedy}
    Proof:
      We apply a matrix interpretation of kind constructor based matrix interpretation:
      The following argument positions are considered usable:
        uargs(a__from) = {1},
        uargs(cons) = {1},
        uargs(s) = {1}
      
      Following symbols are considered usable:
        {a__from,a__length,a__length1,mark}
      TcT has computed the following interpretation:
                 p(0) = [0]           
                        [0]           
           p(a__from) = [1 4] x1 + [5]
                        [0 1]      [4]
         p(a__length) = [0]           
                        [0]           
        p(a__length1) = [0]           
                        [0]           
              p(cons) = [1 0] x1 + [0]
                        [0 1]      [2]
              p(from) = [1 4] x1 + [1]
                        [0 1]      [4]
            p(length) = [0]           
                        [0]           
           p(length1) = [0]           
                        [0]           
              p(mark) = [1 1] x1 + [0]
                        [0 1]      [0]
               p(nil) = [4]           
                        [4]           
                 p(s) = [1 0] x1 + [0]
                        [0 1]      [0]
      
      Following rules are strictly oriented:
      mark(cons(X1,X2)) = [1 1] X1 + [2]   
                          [0 1]      [2]   
                        > [1 1] X1 + [0]   
                          [0 1]      [2]   
                        = cons(mark(X1),X2)
      
      
      Following rules are (at-least) weakly oriented:
                a__from(X) =  [1 4] X + [5]           
                              [0 1]     [4]           
                           >= [1 1] X + [0]           
                              [0 1]     [2]           
                           =  cons(mark(X),from(s(X)))
      
                a__from(X) =  [1 4] X + [5]           
                              [0 1]     [4]           
                           >= [1 4] X + [1]           
                              [0 1]     [4]           
                           =  from(X)                 
      
              a__length(X) =  [0]                     
                              [0]                     
                           >= [0]                     
                              [0]                     
                           =  length(X)               
      
      a__length(cons(X,Y)) =  [0]                     
                              [0]                     
                           >= [0]                     
                              [0]                     
                           =  s(a__length1(Y))        
      
          a__length(nil()) =  [0]                     
                              [0]                     
                           >= [0]                     
                              [0]                     
                           =  0()                     
      
             a__length1(X) =  [0]                     
                              [0]                     
                           >= [0]                     
                              [0]                     
                           =  a__length(X)            
      
             a__length1(X) =  [0]                     
                              [0]                     
                           >= [0]                     
                              [0]                     
                           =  length1(X)              
      
                 mark(0()) =  [0]                     
                              [0]                     
                           >= [0]                     
                              [0]                     
                           =  0()                     
      
             mark(from(X)) =  [1 5] X + [5]           
                              [0 1]     [4]           
                           >= [1 5] X + [5]           
                              [0 1]     [4]           
                           =  a__from(mark(X))        
      
           mark(length(X)) =  [0]                     
                              [0]                     
                           >= [0]                     
                              [0]                     
                           =  a__length(X)            
      
          mark(length1(X)) =  [0]                     
                              [0]                     
                           >= [0]                     
                              [0]                     
                           =  a__length1(X)           
      
               mark(nil()) =  [8]                     
                              [4]                     
                           >= [4]                     
                              [4]                     
                           =  nil()                   
      
                mark(s(X)) =  [1 1] X + [0]           
                              [0 1]     [0]           
                           >= [1 1] X + [0]           
                              [0 1]     [0]           
                           =  s(mark(X))              
      
*** 1.1.1.1.1.1.1.1.1 Progress [(O(1),O(n^3))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        mark(s(X)) -> s(mark(X))
      Weak DP Rules:
        
      Weak TRS Rules:
        a__from(X) -> cons(mark(X),from(s(X)))
        a__from(X) -> from(X)
        a__length(X) -> length(X)
        a__length(cons(X,Y)) -> s(a__length1(Y))
        a__length(nil()) -> 0()
        a__length1(X) -> a__length(X)
        a__length1(X) -> length1(X)
        mark(0()) -> 0()
        mark(cons(X1,X2)) -> cons(mark(X1),X2)
        mark(from(X)) -> a__from(mark(X))
        mark(length(X)) -> a__length(X)
        mark(length1(X)) -> a__length1(X)
        mark(nil()) -> nil()
      Signature:
        {a__from/1,a__length/1,a__length1/1,mark/1} / {0/0,cons/2,from/1,length/1,length1/1,nil/0,s/1}
      Obligation:
        Innermost
        basic terms: {a__from,a__length,a__length1,mark}/{0,cons,from,length,length1,nil,s}
    Applied Processor:
      NaturalMI {miDimension = 4, miDegree = 3, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules, greedy = NoGreedy}
    Proof:
      We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 3 non-zero interpretation-entries in the diagonal of the component-wise maxima):
      The following argument positions are considered usable:
        uargs(a__from) = {1},
        uargs(cons) = {1},
        uargs(s) = {1}
      
      Following symbols are considered usable:
        {a__from,a__length,a__length1,mark}
      TcT has computed the following interpretation:
                 p(0) = [0]                  
                        [0]                  
                        [0]                  
                        [0]                  
           p(a__from) = [1 1 0 0]      [1]   
                        [0 1 0 0] x1 + [1]   
                        [0 0 0 0]      [0]   
                        [0 0 1 0]      [1]   
         p(a__length) = [0 0 0 0]      [1]   
                        [0 0 0 1] x1 + [0]   
                        [0 0 0 0]      [0]   
                        [0 0 0 0]      [0]   
        p(a__length1) = [0 0 0 0]      [1]   
                        [0 0 0 1] x1 + [0]   
                        [0 0 0 0]      [0]   
                        [0 0 0 0]      [0]   
              p(cons) = [1 0 0 0]      [0 0 0
                        1]      [1]          
                        [0 1 0 0] x1 + [0 0 0
                        0] x2 + [1]          
                        [0 0 0 0]      [0 0 0
                        0]      [0]          
                        [0 0 0 0]      [0 0 0
                        1]      [1]          
              p(from) = [1 1 0 0]      [1]   
                        [0 1 0 0] x1 + [1]   
                        [0 0 0 0]      [0]   
                        [0 0 0 0]      [0]   
            p(length) = [0 0 0 0]      [1]   
                        [0 0 0 1] x1 + [0]   
                        [0 0 0 0]      [0]   
                        [0 0 0 0]      [0]   
           p(length1) = [0 0 0 0]      [1]   
                        [0 0 0 1] x1 + [0]   
                        [0 0 0 0]      [0]   
                        [0 0 0 0]      [0]   
              p(mark) = [1 1 0 0]      [0]   
                        [0 1 0 0] x1 + [0]   
                        [0 0 0 0]      [0]   
                        [1 0 0 0]      [0]   
               p(nil) = [0]                  
                        [0]                  
                        [0]                  
                        [0]                  
                 p(s) = [1 0 0 0]      [0]   
                        [0 1 0 0] x1 + [1]   
                        [0 0 0 0]      [0]   
                        [0 0 0 0]      [0]   
      
      Following rules are strictly oriented:
      mark(s(X)) = [1 1 0 0]     [1]
                   [0 1 0 0] X + [1]
                   [0 0 0 0]     [0]
                   [1 0 0 0]     [0]
                 > [1 1 0 0]     [0]
                   [0 1 0 0] X + [1]
                   [0 0 0 0]     [0]
                   [0 0 0 0]     [0]
                 = s(mark(X))       
      
      
      Following rules are (at-least) weakly oriented:
                a__from(X) =  [1 1 0 0]     [1]       
                              [0 1 0 0] X + [1]       
                              [0 0 0 0]     [0]       
                              [0 0 1 0]     [1]       
                           >= [1 1 0 0]     [1]       
                              [0 1 0 0] X + [1]       
                              [0 0 0 0]     [0]       
                              [0 0 0 0]     [1]       
                           =  cons(mark(X),from(s(X)))
      
                a__from(X) =  [1 1 0 0]     [1]       
                              [0 1 0 0] X + [1]       
                              [0 0 0 0]     [0]       
                              [0 0 1 0]     [1]       
                           >= [1 1 0 0]     [1]       
                              [0 1 0 0] X + [1]       
                              [0 0 0 0]     [0]       
                              [0 0 0 0]     [0]       
                           =  from(X)                 
      
              a__length(X) =  [0 0 0 0]     [1]       
                              [0 0 0 1] X + [0]       
                              [0 0 0 0]     [0]       
                              [0 0 0 0]     [0]       
                           >= [0 0 0 0]     [1]       
                              [0 0 0 1] X + [0]       
                              [0 0 0 0]     [0]       
                              [0 0 0 0]     [0]       
                           =  length(X)               
      
      a__length(cons(X,Y)) =  [0 0 0 0]     [1]       
                              [0 0 0 1] Y + [1]       
                              [0 0 0 0]     [0]       
                              [0 0 0 0]     [0]       
                           >= [0 0 0 0]     [1]       
                              [0 0 0 1] Y + [1]       
                              [0 0 0 0]     [0]       
                              [0 0 0 0]     [0]       
                           =  s(a__length1(Y))        
      
          a__length(nil()) =  [1]                     
                              [0]                     
                              [0]                     
                              [0]                     
                           >= [0]                     
                              [0]                     
                              [0]                     
                              [0]                     
                           =  0()                     
      
             a__length1(X) =  [0 0 0 0]     [1]       
                              [0 0 0 1] X + [0]       
                              [0 0 0 0]     [0]       
                              [0 0 0 0]     [0]       
                           >= [0 0 0 0]     [1]       
                              [0 0 0 1] X + [0]       
                              [0 0 0 0]     [0]       
                              [0 0 0 0]     [0]       
                           =  a__length(X)            
      
             a__length1(X) =  [0 0 0 0]     [1]       
                              [0 0 0 1] X + [0]       
                              [0 0 0 0]     [0]       
                              [0 0 0 0]     [0]       
                           >= [0 0 0 0]     [1]       
                              [0 0 0 1] X + [0]       
                              [0 0 0 0]     [0]       
                              [0 0 0 0]     [0]       
                           =  length1(X)              
      
                 mark(0()) =  [0]                     
                              [0]                     
                              [0]                     
                              [0]                     
                           >= [0]                     
                              [0]                     
                              [0]                     
                              [0]                     
                           =  0()                     
      
         mark(cons(X1,X2)) =  [1 1 0 0]      [0 0 0   
                              1]      [2]             
                              [0 1 0 0] X1 + [0 0 0   
                              0] X2 + [1]             
                              [0 0 0 0]      [0 0 0   
                              0]      [0]             
                              [1 0 0 0]      [0 0 0   
                              1]      [1]             
                           >= [1 1 0 0]      [0 0 0   
                              1]      [1]             
                              [0 1 0 0] X1 + [0 0 0   
                              0] X2 + [1]             
                              [0 0 0 0]      [0 0 0   
                              0]      [0]             
                              [0 0 0 0]      [0 0 0   
                              1]      [1]             
                           =  cons(mark(X1),X2)       
      
             mark(from(X)) =  [1 2 0 0]     [2]       
                              [0 1 0 0] X + [1]       
                              [0 0 0 0]     [0]       
                              [1 1 0 0]     [1]       
                           >= [1 2 0 0]     [1]       
                              [0 1 0 0] X + [1]       
                              [0 0 0 0]     [0]       
                              [0 0 0 0]     [1]       
                           =  a__from(mark(X))        
      
           mark(length(X)) =  [0 0 0 1]     [1]       
                              [0 0 0 1] X + [0]       
                              [0 0 0 0]     [0]       
                              [0 0 0 0]     [1]       
                           >= [0 0 0 0]     [1]       
                              [0 0 0 1] X + [0]       
                              [0 0 0 0]     [0]       
                              [0 0 0 0]     [0]       
                           =  a__length(X)            
      
          mark(length1(X)) =  [0 0 0 1]     [1]       
                              [0 0 0 1] X + [0]       
                              [0 0 0 0]     [0]       
                              [0 0 0 0]     [1]       
                           >= [0 0 0 0]     [1]       
                              [0 0 0 1] X + [0]       
                              [0 0 0 0]     [0]       
                              [0 0 0 0]     [0]       
                           =  a__length1(X)           
      
               mark(nil()) =  [0]                     
                              [0]                     
                              [0]                     
                              [0]                     
                           >= [0]                     
                              [0]                     
                              [0]                     
                              [0]                     
                           =  nil()                   
      
*** 1.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__from(X) -> cons(mark(X),from(s(X)))
        a__from(X) -> from(X)
        a__length(X) -> length(X)
        a__length(cons(X,Y)) -> s(a__length1(Y))
        a__length(nil()) -> 0()
        a__length1(X) -> a__length(X)
        a__length1(X) -> length1(X)
        mark(0()) -> 0()
        mark(cons(X1,X2)) -> cons(mark(X1),X2)
        mark(from(X)) -> a__from(mark(X))
        mark(length(X)) -> a__length(X)
        mark(length1(X)) -> a__length1(X)
        mark(nil()) -> nil()
        mark(s(X)) -> s(mark(X))
      Signature:
        {a__from/1,a__length/1,a__length1/1,mark/1} / {0/0,cons/2,from/1,length/1,length1/1,nil/0,s/1}
      Obligation:
        Innermost
        basic terms: {a__from,a__length,a__length1,mark}/{0,cons,from,length,length1,nil,s}
    Applied Processor:
      EmptyProcessor
    Proof:
      The problem is already closed. The intended complexity is O(1).