*** 1 Progress [(O(1),O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        a__add(X1,X2) -> add(X1,X2)
        a__add(0(),X) -> mark(X)
        a__add(s(X),Y) -> s(add(X,Y))
        a__from(X) -> cons(mark(X),from(s(X)))
        a__from(X) -> from(X)
        a__fst(X1,X2) -> fst(X1,X2)
        a__fst(0(),Z) -> nil()
        a__fst(s(X),cons(Y,Z)) -> cons(mark(Y),fst(X,Z))
        a__len(X) -> len(X)
        a__len(cons(X,Z)) -> s(len(Z))
        a__len(nil()) -> 0()
        mark(0()) -> 0()
        mark(add(X1,X2)) -> a__add(mark(X1),mark(X2))
        mark(cons(X1,X2)) -> cons(mark(X1),X2)
        mark(from(X)) -> a__from(mark(X))
        mark(fst(X1,X2)) -> a__fst(mark(X1),mark(X2))
        mark(len(X)) -> a__len(mark(X))
        mark(nil()) -> nil()
        mark(s(X)) -> s(X)
      Weak DP Rules:
        
      Weak TRS Rules:
        
      Signature:
        {a__add/2,a__from/1,a__fst/2,a__len/1,mark/1} / {0/0,add/2,cons/2,from/1,fst/2,len/1,nil/0,s/1}
      Obligation:
        Innermost
        basic terms: {a__add,a__from,a__fst,a__len,mark}/{0,add,cons,from,fst,len,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__add) = {1,2},
          uargs(a__from) = {1},
          uargs(a__fst) = {1,2},
          uargs(a__len) = {1},
          uargs(cons) = {1}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                p(0) = [1]                  
           p(a__add) = [1] x1 + [1] x2 + [0]
          p(a__from) = [1] x1 + [0]         
           p(a__fst) = [1] x1 + [1] x2 + [0]
           p(a__len) = [1] x1 + [0]         
              p(add) = [1] x2 + [0]         
             p(cons) = [1] x1 + [0]         
             p(from) = [1] x1 + [0]         
              p(fst) = [1] x1 + [0]         
              p(len) = [1] x1 + [0]         
             p(mark) = [0]                  
              p(nil) = [0]                  
                p(s) = [0]                  
        
        Following rules are strictly oriented:
        a__add(0(),X) = [1] X + [1]
                      > [0]        
                      = mark(X)    
        
        a__fst(0(),Z) = [1] Z + [1]
                      > [0]        
                      = nil()      
        
        
        Following rules are (at-least) weakly oriented:
                 a__add(X1,X2) =  [1] X1 + [1] X2 + [0]    
                               >= [1] X2 + [0]             
                               =  add(X1,X2)               
        
                a__add(s(X),Y) =  [1] Y + [0]              
                               >= [0]                      
                               =  s(add(X,Y))              
        
                    a__from(X) =  [1] X + [0]              
                               >= [0]                      
                               =  cons(mark(X),from(s(X))) 
        
                    a__from(X) =  [1] X + [0]              
                               >= [1] X + [0]              
                               =  from(X)                  
        
                 a__fst(X1,X2) =  [1] X1 + [1] X2 + [0]    
                               >= [1] X1 + [0]             
                               =  fst(X1,X2)               
        
        a__fst(s(X),cons(Y,Z)) =  [1] Y + [0]              
                               >= [0]                      
                               =  cons(mark(Y),fst(X,Z))   
        
                     a__len(X) =  [1] X + [0]              
                               >= [1] X + [0]              
                               =  len(X)                   
        
             a__len(cons(X,Z)) =  [1] X + [0]              
                               >= [0]                      
                               =  s(len(Z))                
        
                 a__len(nil()) =  [0]                      
                               >= [1]                      
                               =  0()                      
        
                     mark(0()) =  [0]                      
                               >= [1]                      
                               =  0()                      
        
              mark(add(X1,X2)) =  [0]                      
                               >= [0]                      
                               =  a__add(mark(X1),mark(X2))
        
             mark(cons(X1,X2)) =  [0]                      
                               >= [0]                      
                               =  cons(mark(X1),X2)        
        
                 mark(from(X)) =  [0]                      
                               >= [0]                      
                               =  a__from(mark(X))         
        
              mark(fst(X1,X2)) =  [0]                      
                               >= [0]                      
                               =  a__fst(mark(X1),mark(X2))
        
                  mark(len(X)) =  [0]                      
                               >= [0]                      
                               =  a__len(mark(X))          
        
                   mark(nil()) =  [0]                      
                               >= [0]                      
                               =  nil()                    
        
                    mark(s(X)) =  [0]                      
                               >= [0]                      
                               =  s(X)                     
        
      Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** 1.1 Progress [(O(1),O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        a__add(X1,X2) -> add(X1,X2)
        a__add(s(X),Y) -> s(add(X,Y))
        a__from(X) -> cons(mark(X),from(s(X)))
        a__from(X) -> from(X)
        a__fst(X1,X2) -> fst(X1,X2)
        a__fst(s(X),cons(Y,Z)) -> cons(mark(Y),fst(X,Z))
        a__len(X) -> len(X)
        a__len(cons(X,Z)) -> s(len(Z))
        a__len(nil()) -> 0()
        mark(0()) -> 0()
        mark(add(X1,X2)) -> a__add(mark(X1),mark(X2))
        mark(cons(X1,X2)) -> cons(mark(X1),X2)
        mark(from(X)) -> a__from(mark(X))
        mark(fst(X1,X2)) -> a__fst(mark(X1),mark(X2))
        mark(len(X)) -> a__len(mark(X))
        mark(nil()) -> nil()
        mark(s(X)) -> s(X)
      Weak DP Rules:
        
      Weak TRS Rules:
        a__add(0(),X) -> mark(X)
        a__fst(0(),Z) -> nil()
      Signature:
        {a__add/2,a__from/1,a__fst/2,a__len/1,mark/1} / {0/0,add/2,cons/2,from/1,fst/2,len/1,nil/0,s/1}
      Obligation:
        Innermost
        basic terms: {a__add,a__from,a__fst,a__len,mark}/{0,add,cons,from,fst,len,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__add) = {1,2},
          uargs(a__from) = {1},
          uargs(a__fst) = {1,2},
          uargs(a__len) = {1},
          uargs(cons) = {1}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                p(0) = [4]                  
           p(a__add) = [1] x1 + [1] x2 + [1]
          p(a__from) = [1] x1 + [0]         
           p(a__fst) = [1] x1 + [1] x2 + [0]
           p(a__len) = [1] x1 + [0]         
              p(add) = [1] x1 + [1] x2 + [0]
             p(cons) = [1] x1 + [0]         
             p(from) = [1] x1 + [0]         
              p(fst) = [1] x1 + [1] x2 + [0]
              p(len) = [1] x1 + [0]         
             p(mark) = [1] x1 + [0]         
              p(nil) = [0]                  
                p(s) = [0]                  
        
        Following rules are strictly oriented:
         a__add(X1,X2) = [1] X1 + [1] X2 + [1]
                       > [1] X1 + [1] X2 + [0]
                       = add(X1,X2)           
        
        a__add(s(X),Y) = [1] Y + [1]          
                       > [0]                  
                       = s(add(X,Y))          
        
        
        Following rules are (at-least) weakly oriented:
                 a__add(0(),X) =  [1] X + [5]              
                               >= [1] X + [0]              
                               =  mark(X)                  
        
                    a__from(X) =  [1] X + [0]              
                               >= [1] X + [0]              
                               =  cons(mark(X),from(s(X))) 
        
                    a__from(X) =  [1] X + [0]              
                               >= [1] X + [0]              
                               =  from(X)                  
        
                 a__fst(X1,X2) =  [1] X1 + [1] X2 + [0]    
                               >= [1] X1 + [1] X2 + [0]    
                               =  fst(X1,X2)               
        
                 a__fst(0(),Z) =  [1] Z + [4]              
                               >= [0]                      
                               =  nil()                    
        
        a__fst(s(X),cons(Y,Z)) =  [1] Y + [0]              
                               >= [1] Y + [0]              
                               =  cons(mark(Y),fst(X,Z))   
        
                     a__len(X) =  [1] X + [0]              
                               >= [1] X + [0]              
                               =  len(X)                   
        
             a__len(cons(X,Z)) =  [1] X + [0]              
                               >= [0]                      
                               =  s(len(Z))                
        
                 a__len(nil()) =  [0]                      
                               >= [4]                      
                               =  0()                      
        
                     mark(0()) =  [4]                      
                               >= [4]                      
                               =  0()                      
        
              mark(add(X1,X2)) =  [1] X1 + [1] X2 + [0]    
                               >= [1] X1 + [1] X2 + [1]    
                               =  a__add(mark(X1),mark(X2))
        
             mark(cons(X1,X2)) =  [1] X1 + [0]             
                               >= [1] X1 + [0]             
                               =  cons(mark(X1),X2)        
        
                 mark(from(X)) =  [1] X + [0]              
                               >= [1] X + [0]              
                               =  a__from(mark(X))         
        
              mark(fst(X1,X2)) =  [1] X1 + [1] X2 + [0]    
                               >= [1] X1 + [1] X2 + [0]    
                               =  a__fst(mark(X1),mark(X2))
        
                  mark(len(X)) =  [1] X + [0]              
                               >= [1] X + [0]              
                               =  a__len(mark(X))          
        
                   mark(nil()) =  [0]                      
                               >= [0]                      
                               =  nil()                    
        
                    mark(s(X)) =  [0]                      
                               >= [0]                      
                               =  s(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^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        a__from(X) -> cons(mark(X),from(s(X)))
        a__from(X) -> from(X)
        a__fst(X1,X2) -> fst(X1,X2)
        a__fst(s(X),cons(Y,Z)) -> cons(mark(Y),fst(X,Z))
        a__len(X) -> len(X)
        a__len(cons(X,Z)) -> s(len(Z))
        a__len(nil()) -> 0()
        mark(0()) -> 0()
        mark(add(X1,X2)) -> a__add(mark(X1),mark(X2))
        mark(cons(X1,X2)) -> cons(mark(X1),X2)
        mark(from(X)) -> a__from(mark(X))
        mark(fst(X1,X2)) -> a__fst(mark(X1),mark(X2))
        mark(len(X)) -> a__len(mark(X))
        mark(nil()) -> nil()
        mark(s(X)) -> s(X)
      Weak DP Rules:
        
      Weak TRS Rules:
        a__add(X1,X2) -> add(X1,X2)
        a__add(0(),X) -> mark(X)
        a__add(s(X),Y) -> s(add(X,Y))
        a__fst(0(),Z) -> nil()
      Signature:
        {a__add/2,a__from/1,a__fst/2,a__len/1,mark/1} / {0/0,add/2,cons/2,from/1,fst/2,len/1,nil/0,s/1}
      Obligation:
        Innermost
        basic terms: {a__add,a__from,a__fst,a__len,mark}/{0,add,cons,from,fst,len,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__add) = {1,2},
          uargs(a__from) = {1},
          uargs(a__fst) = {1,2},
          uargs(a__len) = {1},
          uargs(cons) = {1}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                p(0) = [0]                  
           p(a__add) = [1] x1 + [1] x2 + [0]
          p(a__from) = [1] x1 + [4]         
           p(a__fst) = [1] x1 + [1] x2 + [0]
           p(a__len) = [1] x1 + [0]         
              p(add) = [1] x1 + [1] x2 + [0]
             p(cons) = [1] x1 + [0]         
             p(from) = [1] x1 + [0]         
              p(fst) = [1] x1 + [1] x2 + [0]
              p(len) = [1] x1 + [0]         
             p(mark) = [1] x1 + [0]         
              p(nil) = [0]                  
                p(s) = [0]                  
        
        Following rules are strictly oriented:
        a__from(X) = [1] X + [4]             
                   > [1] X + [0]             
                   = cons(mark(X),from(s(X)))
        
        a__from(X) = [1] X + [4]             
                   > [1] X + [0]             
                   = from(X)                 
        
        
        Following rules are (at-least) weakly oriented:
                 a__add(X1,X2) =  [1] X1 + [1] X2 + [0]    
                               >= [1] X1 + [1] X2 + [0]    
                               =  add(X1,X2)               
        
                 a__add(0(),X) =  [1] X + [0]              
                               >= [1] X + [0]              
                               =  mark(X)                  
        
                a__add(s(X),Y) =  [1] Y + [0]              
                               >= [0]                      
                               =  s(add(X,Y))              
        
                 a__fst(X1,X2) =  [1] X1 + [1] X2 + [0]    
                               >= [1] X1 + [1] X2 + [0]    
                               =  fst(X1,X2)               
        
                 a__fst(0(),Z) =  [1] Z + [0]              
                               >= [0]                      
                               =  nil()                    
        
        a__fst(s(X),cons(Y,Z)) =  [1] Y + [0]              
                               >= [1] Y + [0]              
                               =  cons(mark(Y),fst(X,Z))   
        
                     a__len(X) =  [1] X + [0]              
                               >= [1] X + [0]              
                               =  len(X)                   
        
             a__len(cons(X,Z)) =  [1] X + [0]              
                               >= [0]                      
                               =  s(len(Z))                
        
                 a__len(nil()) =  [0]                      
                               >= [0]                      
                               =  0()                      
        
                     mark(0()) =  [0]                      
                               >= [0]                      
                               =  0()                      
        
              mark(add(X1,X2)) =  [1] X1 + [1] X2 + [0]    
                               >= [1] X1 + [1] X2 + [0]    
                               =  a__add(mark(X1),mark(X2))
        
             mark(cons(X1,X2)) =  [1] X1 + [0]             
                               >= [1] X1 + [0]             
                               =  cons(mark(X1),X2)        
        
                 mark(from(X)) =  [1] X + [0]              
                               >= [1] X + [4]              
                               =  a__from(mark(X))         
        
              mark(fst(X1,X2)) =  [1] X1 + [1] X2 + [0]    
                               >= [1] X1 + [1] X2 + [0]    
                               =  a__fst(mark(X1),mark(X2))
        
                  mark(len(X)) =  [1] X + [0]              
                               >= [1] X + [0]              
                               =  a__len(mark(X))          
        
                   mark(nil()) =  [0]                      
                               >= [0]                      
                               =  nil()                    
        
                    mark(s(X)) =  [0]                      
                               >= [0]                      
                               =  s(X)                     
        
      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^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        a__fst(X1,X2) -> fst(X1,X2)
        a__fst(s(X),cons(Y,Z)) -> cons(mark(Y),fst(X,Z))
        a__len(X) -> len(X)
        a__len(cons(X,Z)) -> s(len(Z))
        a__len(nil()) -> 0()
        mark(0()) -> 0()
        mark(add(X1,X2)) -> a__add(mark(X1),mark(X2))
        mark(cons(X1,X2)) -> cons(mark(X1),X2)
        mark(from(X)) -> a__from(mark(X))
        mark(fst(X1,X2)) -> a__fst(mark(X1),mark(X2))
        mark(len(X)) -> a__len(mark(X))
        mark(nil()) -> nil()
        mark(s(X)) -> s(X)
      Weak DP Rules:
        
      Weak TRS Rules:
        a__add(X1,X2) -> add(X1,X2)
        a__add(0(),X) -> mark(X)
        a__add(s(X),Y) -> s(add(X,Y))
        a__from(X) -> cons(mark(X),from(s(X)))
        a__from(X) -> from(X)
        a__fst(0(),Z) -> nil()
      Signature:
        {a__add/2,a__from/1,a__fst/2,a__len/1,mark/1} / {0/0,add/2,cons/2,from/1,fst/2,len/1,nil/0,s/1}
      Obligation:
        Innermost
        basic terms: {a__add,a__from,a__fst,a__len,mark}/{0,add,cons,from,fst,len,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__add) = {1,2},
          uargs(a__from) = {1},
          uargs(a__fst) = {1,2},
          uargs(a__len) = {1},
          uargs(cons) = {1}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                p(0) = [0]                  
           p(a__add) = [1] x1 + [1] x2 + [1]
          p(a__from) = [1] x1 + [3]         
           p(a__fst) = [1] x1 + [1] x2 + [1]
           p(a__len) = [1] x1 + [0]         
              p(add) = [1] x1 + [1] x2 + [1]
             p(cons) = [1] x1 + [2]         
             p(from) = [1] x1 + [0]         
              p(fst) = [1] x1 + [1] x2 + [0]
              p(len) = [1] x1 + [0]         
             p(mark) = [1] x1 + [0]         
              p(nil) = [0]                  
                p(s) = [0]                  
        
        Following rules are strictly oriented:
                 a__fst(X1,X2) = [1] X1 + [1] X2 + [1] 
                               > [1] X1 + [1] X2 + [0] 
                               = fst(X1,X2)            
        
        a__fst(s(X),cons(Y,Z)) = [1] Y + [3]           
                               > [1] Y + [2]           
                               = cons(mark(Y),fst(X,Z))
        
             a__len(cons(X,Z)) = [1] X + [2]           
                               > [0]                   
                               = s(len(Z))             
        
        
        Following rules are (at-least) weakly oriented:
            a__add(X1,X2) =  [1] X1 + [1] X2 + [1]    
                          >= [1] X1 + [1] X2 + [1]    
                          =  add(X1,X2)               
        
            a__add(0(),X) =  [1] X + [1]              
                          >= [1] X + [0]              
                          =  mark(X)                  
        
           a__add(s(X),Y) =  [1] Y + [1]              
                          >= [0]                      
                          =  s(add(X,Y))              
        
               a__from(X) =  [1] X + [3]              
                          >= [1] X + [2]              
                          =  cons(mark(X),from(s(X))) 
        
               a__from(X) =  [1] X + [3]              
                          >= [1] X + [0]              
                          =  from(X)                  
        
            a__fst(0(),Z) =  [1] Z + [1]              
                          >= [0]                      
                          =  nil()                    
        
                a__len(X) =  [1] X + [0]              
                          >= [1] X + [0]              
                          =  len(X)                   
        
            a__len(nil()) =  [0]                      
                          >= [0]                      
                          =  0()                      
        
                mark(0()) =  [0]                      
                          >= [0]                      
                          =  0()                      
        
         mark(add(X1,X2)) =  [1] X1 + [1] X2 + [1]    
                          >= [1] X1 + [1] X2 + [1]    
                          =  a__add(mark(X1),mark(X2))
        
        mark(cons(X1,X2)) =  [1] X1 + [2]             
                          >= [1] X1 + [2]             
                          =  cons(mark(X1),X2)        
        
            mark(from(X)) =  [1] X + [0]              
                          >= [1] X + [3]              
                          =  a__from(mark(X))         
        
         mark(fst(X1,X2)) =  [1] X1 + [1] X2 + [0]    
                          >= [1] X1 + [1] X2 + [1]    
                          =  a__fst(mark(X1),mark(X2))
        
             mark(len(X)) =  [1] X + [0]              
                          >= [1] X + [0]              
                          =  a__len(mark(X))          
        
              mark(nil()) =  [0]                      
                          >= [0]                      
                          =  nil()                    
        
               mark(s(X)) =  [0]                      
                          >= [0]                      
                          =  s(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^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        a__len(X) -> len(X)
        a__len(nil()) -> 0()
        mark(0()) -> 0()
        mark(add(X1,X2)) -> a__add(mark(X1),mark(X2))
        mark(cons(X1,X2)) -> cons(mark(X1),X2)
        mark(from(X)) -> a__from(mark(X))
        mark(fst(X1,X2)) -> a__fst(mark(X1),mark(X2))
        mark(len(X)) -> a__len(mark(X))
        mark(nil()) -> nil()
        mark(s(X)) -> s(X)
      Weak DP Rules:
        
      Weak TRS Rules:
        a__add(X1,X2) -> add(X1,X2)
        a__add(0(),X) -> mark(X)
        a__add(s(X),Y) -> s(add(X,Y))
        a__from(X) -> cons(mark(X),from(s(X)))
        a__from(X) -> from(X)
        a__fst(X1,X2) -> fst(X1,X2)
        a__fst(0(),Z) -> nil()
        a__fst(s(X),cons(Y,Z)) -> cons(mark(Y),fst(X,Z))
        a__len(cons(X,Z)) -> s(len(Z))
      Signature:
        {a__add/2,a__from/1,a__fst/2,a__len/1,mark/1} / {0/0,add/2,cons/2,from/1,fst/2,len/1,nil/0,s/1}
      Obligation:
        Innermost
        basic terms: {a__add,a__from,a__fst,a__len,mark}/{0,add,cons,from,fst,len,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__add) = {1,2},
          uargs(a__from) = {1},
          uargs(a__fst) = {1,2},
          uargs(a__len) = {1},
          uargs(cons) = {1}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                p(0) = [4]                  
           p(a__add) = [1] x1 + [1] x2 + [7]
          p(a__from) = [1] x1 + [2]         
           p(a__fst) = [1] x1 + [1] x2 + [2]
           p(a__len) = [1] x1 + [0]         
              p(add) = [1] x1 + [1] x2 + [7]
             p(cons) = [1] x1 + [0]         
             p(from) = [0]                  
              p(fst) = [0]                  
              p(len) = [0]                  
             p(mark) = [2]                  
              p(nil) = [6]                  
                p(s) = [0]                  
        
        Following rules are strictly oriented:
        a__len(nil()) = [6] 
                      > [4] 
                      = 0() 
        
           mark(s(X)) = [2] 
                      > [0] 
                      = s(X)
        
        
        Following rules are (at-least) weakly oriented:
                 a__add(X1,X2) =  [1] X1 + [1] X2 + [7]    
                               >= [1] X1 + [1] X2 + [7]    
                               =  add(X1,X2)               
        
                 a__add(0(),X) =  [1] X + [11]             
                               >= [2]                      
                               =  mark(X)                  
        
                a__add(s(X),Y) =  [1] Y + [7]              
                               >= [0]                      
                               =  s(add(X,Y))              
        
                    a__from(X) =  [1] X + [2]              
                               >= [2]                      
                               =  cons(mark(X),from(s(X))) 
        
                    a__from(X) =  [1] X + [2]              
                               >= [0]                      
                               =  from(X)                  
        
                 a__fst(X1,X2) =  [1] X1 + [1] X2 + [2]    
                               >= [0]                      
                               =  fst(X1,X2)               
        
                 a__fst(0(),Z) =  [1] Z + [6]              
                               >= [6]                      
                               =  nil()                    
        
        a__fst(s(X),cons(Y,Z)) =  [1] Y + [2]              
                               >= [2]                      
                               =  cons(mark(Y),fst(X,Z))   
        
                     a__len(X) =  [1] X + [0]              
                               >= [0]                      
                               =  len(X)                   
        
             a__len(cons(X,Z)) =  [1] X + [0]              
                               >= [0]                      
                               =  s(len(Z))                
        
                     mark(0()) =  [2]                      
                               >= [4]                      
                               =  0()                      
        
              mark(add(X1,X2)) =  [2]                      
                               >= [11]                     
                               =  a__add(mark(X1),mark(X2))
        
             mark(cons(X1,X2)) =  [2]                      
                               >= [2]                      
                               =  cons(mark(X1),X2)        
        
                 mark(from(X)) =  [2]                      
                               >= [4]                      
                               =  a__from(mark(X))         
        
              mark(fst(X1,X2)) =  [2]                      
                               >= [6]                      
                               =  a__fst(mark(X1),mark(X2))
        
                  mark(len(X)) =  [2]                      
                               >= [2]                      
                               =  a__len(mark(X))          
        
                   mark(nil()) =  [2]                      
                               >= [6]                      
                               =  nil()                    
        
      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^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        a__len(X) -> len(X)
        mark(0()) -> 0()
        mark(add(X1,X2)) -> a__add(mark(X1),mark(X2))
        mark(cons(X1,X2)) -> cons(mark(X1),X2)
        mark(from(X)) -> a__from(mark(X))
        mark(fst(X1,X2)) -> a__fst(mark(X1),mark(X2))
        mark(len(X)) -> a__len(mark(X))
        mark(nil()) -> nil()
      Weak DP Rules:
        
      Weak TRS Rules:
        a__add(X1,X2) -> add(X1,X2)
        a__add(0(),X) -> mark(X)
        a__add(s(X),Y) -> s(add(X,Y))
        a__from(X) -> cons(mark(X),from(s(X)))
        a__from(X) -> from(X)
        a__fst(X1,X2) -> fst(X1,X2)
        a__fst(0(),Z) -> nil()
        a__fst(s(X),cons(Y,Z)) -> cons(mark(Y),fst(X,Z))
        a__len(cons(X,Z)) -> s(len(Z))
        a__len(nil()) -> 0()
        mark(s(X)) -> s(X)
      Signature:
        {a__add/2,a__from/1,a__fst/2,a__len/1,mark/1} / {0/0,add/2,cons/2,from/1,fst/2,len/1,nil/0,s/1}
      Obligation:
        Innermost
        basic terms: {a__add,a__from,a__fst,a__len,mark}/{0,add,cons,from,fst,len,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__add) = {1,2},
          uargs(a__from) = {1},
          uargs(a__fst) = {1,2},
          uargs(a__len) = {1},
          uargs(cons) = {1}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                p(0) = [2]                  
           p(a__add) = [1] x1 + [1] x2 + [2]
          p(a__from) = [1] x1 + [4]         
           p(a__fst) = [1] x1 + [1] x2 + [4]
           p(a__len) = [1] x1 + [0]         
              p(add) = [0]                  
             p(cons) = [1] x1 + [0]         
             p(from) = [0]                  
              p(fst) = [0]                  
              p(len) = [0]                  
             p(mark) = [4]                  
              p(nil) = [2]                  
                p(s) = [0]                  
        
        Following rules are strictly oriented:
          mark(0()) = [4]  
                    > [2]  
                    = 0()  
        
        mark(nil()) = [4]  
                    > [2]  
                    = nil()
        
        
        Following rules are (at-least) weakly oriented:
                 a__add(X1,X2) =  [1] X1 + [1] X2 + [2]    
                               >= [0]                      
                               =  add(X1,X2)               
        
                 a__add(0(),X) =  [1] X + [4]              
                               >= [4]                      
                               =  mark(X)                  
        
                a__add(s(X),Y) =  [1] Y + [2]              
                               >= [0]                      
                               =  s(add(X,Y))              
        
                    a__from(X) =  [1] X + [4]              
                               >= [4]                      
                               =  cons(mark(X),from(s(X))) 
        
                    a__from(X) =  [1] X + [4]              
                               >= [0]                      
                               =  from(X)                  
        
                 a__fst(X1,X2) =  [1] X1 + [1] X2 + [4]    
                               >= [0]                      
                               =  fst(X1,X2)               
        
                 a__fst(0(),Z) =  [1] Z + [6]              
                               >= [2]                      
                               =  nil()                    
        
        a__fst(s(X),cons(Y,Z)) =  [1] Y + [4]              
                               >= [4]                      
                               =  cons(mark(Y),fst(X,Z))   
        
                     a__len(X) =  [1] X + [0]              
                               >= [0]                      
                               =  len(X)                   
        
             a__len(cons(X,Z)) =  [1] X + [0]              
                               >= [0]                      
                               =  s(len(Z))                
        
                 a__len(nil()) =  [2]                      
                               >= [2]                      
                               =  0()                      
        
              mark(add(X1,X2)) =  [4]                      
                               >= [10]                     
                               =  a__add(mark(X1),mark(X2))
        
             mark(cons(X1,X2)) =  [4]                      
                               >= [4]                      
                               =  cons(mark(X1),X2)        
        
                 mark(from(X)) =  [4]                      
                               >= [8]                      
                               =  a__from(mark(X))         
        
              mark(fst(X1,X2)) =  [4]                      
                               >= [12]                     
                               =  a__fst(mark(X1),mark(X2))
        
                  mark(len(X)) =  [4]                      
                               >= [4]                      
                               =  a__len(mark(X))          
        
                    mark(s(X)) =  [4]                      
                               >= [0]                      
                               =  s(X)                     
        
      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^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        a__len(X) -> len(X)
        mark(add(X1,X2)) -> a__add(mark(X1),mark(X2))
        mark(cons(X1,X2)) -> cons(mark(X1),X2)
        mark(from(X)) -> a__from(mark(X))
        mark(fst(X1,X2)) -> a__fst(mark(X1),mark(X2))
        mark(len(X)) -> a__len(mark(X))
      Weak DP Rules:
        
      Weak TRS Rules:
        a__add(X1,X2) -> add(X1,X2)
        a__add(0(),X) -> mark(X)
        a__add(s(X),Y) -> s(add(X,Y))
        a__from(X) -> cons(mark(X),from(s(X)))
        a__from(X) -> from(X)
        a__fst(X1,X2) -> fst(X1,X2)
        a__fst(0(),Z) -> nil()
        a__fst(s(X),cons(Y,Z)) -> cons(mark(Y),fst(X,Z))
        a__len(cons(X,Z)) -> s(len(Z))
        a__len(nil()) -> 0()
        mark(0()) -> 0()
        mark(nil()) -> nil()
        mark(s(X)) -> s(X)
      Signature:
        {a__add/2,a__from/1,a__fst/2,a__len/1,mark/1} / {0/0,add/2,cons/2,from/1,fst/2,len/1,nil/0,s/1}
      Obligation:
        Innermost
        basic terms: {a__add,a__from,a__fst,a__len,mark}/{0,add,cons,from,fst,len,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__add) = {1,2},
          uargs(a__from) = {1},
          uargs(a__fst) = {1,2},
          uargs(a__len) = {1},
          uargs(cons) = {1}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                p(0) = [1]                  
           p(a__add) = [1] x1 + [1] x2 + [0]
          p(a__from) = [1] x1 + [5]         
           p(a__fst) = [1] x1 + [1] x2 + [1]
           p(a__len) = [1] x1 + [1]         
              p(add) = [0]                  
             p(cons) = [1] x1 + [4]         
             p(from) = [0]                  
              p(fst) = [1] x2 + [1]         
              p(len) = [0]                  
             p(mark) = [1]                  
              p(nil) = [0]                  
                p(s) = [0]                  
        
        Following rules are strictly oriented:
        a__len(X) = [1] X + [1]
                  > [0]        
                  = len(X)     
        
        
        Following rules are (at-least) weakly oriented:
                 a__add(X1,X2) =  [1] X1 + [1] X2 + [0]    
                               >= [0]                      
                               =  add(X1,X2)               
        
                 a__add(0(),X) =  [1] X + [1]              
                               >= [1]                      
                               =  mark(X)                  
        
                a__add(s(X),Y) =  [1] Y + [0]              
                               >= [0]                      
                               =  s(add(X,Y))              
        
                    a__from(X) =  [1] X + [5]              
                               >= [5]                      
                               =  cons(mark(X),from(s(X))) 
        
                    a__from(X) =  [1] X + [5]              
                               >= [0]                      
                               =  from(X)                  
        
                 a__fst(X1,X2) =  [1] X1 + [1] X2 + [1]    
                               >= [1] X2 + [1]             
                               =  fst(X1,X2)               
        
                 a__fst(0(),Z) =  [1] Z + [2]              
                               >= [0]                      
                               =  nil()                    
        
        a__fst(s(X),cons(Y,Z)) =  [1] Y + [5]              
                               >= [5]                      
                               =  cons(mark(Y),fst(X,Z))   
        
             a__len(cons(X,Z)) =  [1] X + [5]              
                               >= [0]                      
                               =  s(len(Z))                
        
                 a__len(nil()) =  [1]                      
                               >= [1]                      
                               =  0()                      
        
                     mark(0()) =  [1]                      
                               >= [1]                      
                               =  0()                      
        
              mark(add(X1,X2)) =  [1]                      
                               >= [2]                      
                               =  a__add(mark(X1),mark(X2))
        
             mark(cons(X1,X2)) =  [1]                      
                               >= [5]                      
                               =  cons(mark(X1),X2)        
        
                 mark(from(X)) =  [1]                      
                               >= [6]                      
                               =  a__from(mark(X))         
        
              mark(fst(X1,X2)) =  [1]                      
                               >= [3]                      
                               =  a__fst(mark(X1),mark(X2))
        
                  mark(len(X)) =  [1]                      
                               >= [2]                      
                               =  a__len(mark(X))          
        
                   mark(nil()) =  [1]                      
                               >= [0]                      
                               =  nil()                    
        
                    mark(s(X)) =  [1]                      
                               >= [0]                      
                               =  s(X)                     
        
      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^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        mark(add(X1,X2)) -> a__add(mark(X1),mark(X2))
        mark(cons(X1,X2)) -> cons(mark(X1),X2)
        mark(from(X)) -> a__from(mark(X))
        mark(fst(X1,X2)) -> a__fst(mark(X1),mark(X2))
        mark(len(X)) -> a__len(mark(X))
      Weak DP Rules:
        
      Weak TRS Rules:
        a__add(X1,X2) -> add(X1,X2)
        a__add(0(),X) -> mark(X)
        a__add(s(X),Y) -> s(add(X,Y))
        a__from(X) -> cons(mark(X),from(s(X)))
        a__from(X) -> from(X)
        a__fst(X1,X2) -> fst(X1,X2)
        a__fst(0(),Z) -> nil()
        a__fst(s(X),cons(Y,Z)) -> cons(mark(Y),fst(X,Z))
        a__len(X) -> len(X)
        a__len(cons(X,Z)) -> s(len(Z))
        a__len(nil()) -> 0()
        mark(0()) -> 0()
        mark(nil()) -> nil()
        mark(s(X)) -> s(X)
      Signature:
        {a__add/2,a__from/1,a__fst/2,a__len/1,mark/1} / {0/0,add/2,cons/2,from/1,fst/2,len/1,nil/0,s/1}
      Obligation:
        Innermost
        basic terms: {a__add,a__from,a__fst,a__len,mark}/{0,add,cons,from,fst,len,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__add) = {1,2},
        uargs(a__from) = {1},
        uargs(a__fst) = {1,2},
        uargs(a__len) = {1},
        uargs(cons) = {1}
      
      Following symbols are considered usable:
        {a__add,a__from,a__fst,a__len,mark}
      TcT has computed the following interpretation:
              p(0) = [0]                      
                     [1]                      
         p(a__add) = [1 4] x1 + [1 4] x2 + [2]
                     [0 1]      [0 1]      [0]
        p(a__from) = [1 6] x1 + [2]           
                     [0 1]      [0]           
         p(a__fst) = [1 0] x1 + [1 4] x2 + [0]
                     [0 1]      [0 1]      [0]
         p(a__len) = [1 0] x1 + [2]           
                     [0 1]      [1]           
            p(add) = [1 4] x1 + [1 4] x2 + [2]
                     [0 1]      [0 1]      [0]
           p(cons) = [1 0] x1 + [1]           
                     [0 1]      [0]           
           p(from) = [1 6] x1 + [2]           
                     [0 1]      [0]           
            p(fst) = [1 0] x1 + [1 4] x2 + [0]
                     [0 1]      [0 1]      [0]
            p(len) = [1 0] x1 + [0]           
                     [0 1]      [1]           
           p(mark) = [1 4] x1 + [0]           
                     [0 1]      [0]           
            p(nil) = [0]                      
                     [0]                      
              p(s) = [2]                      
                     [1]                      
      
      Following rules are strictly oriented:
      mark(len(X)) = [1 4] X + [4]  
                     [0 1]     [1]  
                   > [1 4] X + [2]  
                     [0 1]     [1]  
                   = a__len(mark(X))
      
      
      Following rules are (at-least) weakly oriented:
               a__add(X1,X2) =  [1 4] X1 + [1 4] X2 + [2]
                                [0 1]      [0 1]      [0]
                             >= [1 4] X1 + [1 4] X2 + [2]
                                [0 1]      [0 1]      [0]
                             =  add(X1,X2)               
      
               a__add(0(),X) =  [1 4] X + [6]            
                                [0 1]     [1]            
                             >= [1 4] X + [0]            
                                [0 1]     [0]            
                             =  mark(X)                  
      
              a__add(s(X),Y) =  [1 4] Y + [8]            
                                [0 1]     [1]            
                             >= [2]                      
                                [1]                      
                             =  s(add(X,Y))              
      
                  a__from(X) =  [1 6] X + [2]            
                                [0 1]     [0]            
                             >= [1 4] X + [1]            
                                [0 1]     [0]            
                             =  cons(mark(X),from(s(X))) 
      
                  a__from(X) =  [1 6] X + [2]            
                                [0 1]     [0]            
                             >= [1 6] X + [2]            
                                [0 1]     [0]            
                             =  from(X)                  
      
               a__fst(X1,X2) =  [1 0] X1 + [1 4] X2 + [0]
                                [0 1]      [0 1]      [0]
                             >= [1 0] X1 + [1 4] X2 + [0]
                                [0 1]      [0 1]      [0]
                             =  fst(X1,X2)               
      
               a__fst(0(),Z) =  [1 4] Z + [0]            
                                [0 1]     [1]            
                             >= [0]                      
                                [0]                      
                             =  nil()                    
      
      a__fst(s(X),cons(Y,Z)) =  [1 4] Y + [3]            
                                [0 1]     [1]            
                             >= [1 4] Y + [1]            
                                [0 1]     [0]            
                             =  cons(mark(Y),fst(X,Z))   
      
                   a__len(X) =  [1 0] X + [2]            
                                [0 1]     [1]            
                             >= [1 0] X + [0]            
                                [0 1]     [1]            
                             =  len(X)                   
      
           a__len(cons(X,Z)) =  [1 0] X + [3]            
                                [0 1]     [1]            
                             >= [2]                      
                                [1]                      
                             =  s(len(Z))                
      
               a__len(nil()) =  [2]                      
                                [1]                      
                             >= [0]                      
                                [1]                      
                             =  0()                      
      
                   mark(0()) =  [4]                      
                                [1]                      
                             >= [0]                      
                                [1]                      
                             =  0()                      
      
            mark(add(X1,X2)) =  [1 8] X1 + [1 8] X2 + [2]
                                [0 1]      [0 1]      [0]
                             >= [1 8] X1 + [1 8] X2 + [2]
                                [0 1]      [0 1]      [0]
                             =  a__add(mark(X1),mark(X2))
      
           mark(cons(X1,X2)) =  [1 4] X1 + [1]           
                                [0 1]      [0]           
                             >= [1 4] X1 + [1]           
                                [0 1]      [0]           
                             =  cons(mark(X1),X2)        
      
               mark(from(X)) =  [1 10] X + [2]           
                                [0  1]     [0]           
                             >= [1 10] X + [2]           
                                [0  1]     [0]           
                             =  a__from(mark(X))         
      
            mark(fst(X1,X2)) =  [1 4] X1 + [1 8] X2 + [0]
                                [0 1]      [0 1]      [0]
                             >= [1 4] X1 + [1 8] X2 + [0]
                                [0 1]      [0 1]      [0]
                             =  a__fst(mark(X1),mark(X2))
      
                 mark(nil()) =  [0]                      
                                [0]                      
                             >= [0]                      
                                [0]                      
                             =  nil()                    
      
                  mark(s(X)) =  [6]                      
                                [1]                      
                             >= [2]                      
                                [1]                      
                             =  s(X)                     
      
*** 1.1.1.1.1.1.1.1.1 Progress [(O(1),O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        mark(add(X1,X2)) -> a__add(mark(X1),mark(X2))
        mark(cons(X1,X2)) -> cons(mark(X1),X2)
        mark(from(X)) -> a__from(mark(X))
        mark(fst(X1,X2)) -> a__fst(mark(X1),mark(X2))
      Weak DP Rules:
        
      Weak TRS Rules:
        a__add(X1,X2) -> add(X1,X2)
        a__add(0(),X) -> mark(X)
        a__add(s(X),Y) -> s(add(X,Y))
        a__from(X) -> cons(mark(X),from(s(X)))
        a__from(X) -> from(X)
        a__fst(X1,X2) -> fst(X1,X2)
        a__fst(0(),Z) -> nil()
        a__fst(s(X),cons(Y,Z)) -> cons(mark(Y),fst(X,Z))
        a__len(X) -> len(X)
        a__len(cons(X,Z)) -> s(len(Z))
        a__len(nil()) -> 0()
        mark(0()) -> 0()
        mark(len(X)) -> a__len(mark(X))
        mark(nil()) -> nil()
        mark(s(X)) -> s(X)
      Signature:
        {a__add/2,a__from/1,a__fst/2,a__len/1,mark/1} / {0/0,add/2,cons/2,from/1,fst/2,len/1,nil/0,s/1}
      Obligation:
        Innermost
        basic terms: {a__add,a__from,a__fst,a__len,mark}/{0,add,cons,from,fst,len,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__add) = {1,2},
        uargs(a__from) = {1},
        uargs(a__fst) = {1,2},
        uargs(a__len) = {1},
        uargs(cons) = {1}
      
      Following symbols are considered usable:
        {a__add,a__from,a__fst,a__len,mark}
      TcT has computed the following interpretation:
              p(0) = [0]                      
                     [0]                      
         p(a__add) = [1 0] x1 + [1 1] x2 + [6]
                     [0 1]      [0 1]      [7]
        p(a__from) = [1 2] x1 + [1]           
                     [0 1]      [0]           
         p(a__fst) = [1 0] x1 + [1 2] x2 + [0]
                     [0 1]      [0 1]      [0]
         p(a__len) = [1 0] x1 + [2]           
                     [0 1]      [6]           
            p(add) = [1 0] x1 + [1 1] x2 + [5]
                     [0 1]      [0 1]      [7]
           p(cons) = [1 1] x1 + [1]           
                     [0 1]      [0]           
           p(from) = [1 2] x1 + [1]           
                     [0 1]      [0]           
            p(fst) = [1 0] x1 + [1 2] x2 + [0]
                     [0 1]      [0 1]      [0]
            p(len) = [1 0] x1 + [2]           
                     [0 1]      [6]           
           p(mark) = [1 1] x1 + [0]           
                     [0 1]      [0]           
            p(nil) = [0]                      
                     [0]                      
              p(s) = [2]                      
                     [4]                      
      
      Following rules are strictly oriented:
      mark(add(X1,X2)) = [1 1] X1 + [1 2] X2 + [12]
                         [0 1]      [0 1]      [7] 
                       > [1 1] X1 + [1 2] X2 + [6] 
                         [0 1]      [0 1]      [7] 
                       = a__add(mark(X1),mark(X2)) 
      
      
      Following rules are (at-least) weakly oriented:
               a__add(X1,X2) =  [1 0] X1 + [1 1] X2 + [6]
                                [0 1]      [0 1]      [7]
                             >= [1 0] X1 + [1 1] X2 + [5]
                                [0 1]      [0 1]      [7]
                             =  add(X1,X2)               
      
               a__add(0(),X) =  [1 1] X + [6]            
                                [0 1]     [7]            
                             >= [1 1] X + [0]            
                                [0 1]     [0]            
                             =  mark(X)                  
      
              a__add(s(X),Y) =  [1 1] Y + [8]            
                                [0 1]     [11]           
                             >= [2]                      
                                [4]                      
                             =  s(add(X,Y))              
      
                  a__from(X) =  [1 2] X + [1]            
                                [0 1]     [0]            
                             >= [1 2] X + [1]            
                                [0 1]     [0]            
                             =  cons(mark(X),from(s(X))) 
      
                  a__from(X) =  [1 2] X + [1]            
                                [0 1]     [0]            
                             >= [1 2] X + [1]            
                                [0 1]     [0]            
                             =  from(X)                  
      
               a__fst(X1,X2) =  [1 0] X1 + [1 2] X2 + [0]
                                [0 1]      [0 1]      [0]
                             >= [1 0] X1 + [1 2] X2 + [0]
                                [0 1]      [0 1]      [0]
                             =  fst(X1,X2)               
      
               a__fst(0(),Z) =  [1 2] Z + [0]            
                                [0 1]     [0]            
                             >= [0]                      
                                [0]                      
                             =  nil()                    
      
      a__fst(s(X),cons(Y,Z)) =  [1 3] Y + [3]            
                                [0 1]     [4]            
                             >= [1 2] Y + [1]            
                                [0 1]     [0]            
                             =  cons(mark(Y),fst(X,Z))   
      
                   a__len(X) =  [1 0] X + [2]            
                                [0 1]     [6]            
                             >= [1 0] X + [2]            
                                [0 1]     [6]            
                             =  len(X)                   
      
           a__len(cons(X,Z)) =  [1 1] X + [3]            
                                [0 1]     [6]            
                             >= [2]                      
                                [4]                      
                             =  s(len(Z))                
      
               a__len(nil()) =  [2]                      
                                [6]                      
                             >= [0]                      
                                [0]                      
                             =  0()                      
      
                   mark(0()) =  [0]                      
                                [0]                      
                             >= [0]                      
                                [0]                      
                             =  0()                      
      
           mark(cons(X1,X2)) =  [1 2] X1 + [1]           
                                [0 1]      [0]           
                             >= [1 2] X1 + [1]           
                                [0 1]      [0]           
                             =  cons(mark(X1),X2)        
      
               mark(from(X)) =  [1 3] X + [1]            
                                [0 1]     [0]            
                             >= [1 3] X + [1]            
                                [0 1]     [0]            
                             =  a__from(mark(X))         
      
            mark(fst(X1,X2)) =  [1 1] X1 + [1 3] X2 + [0]
                                [0 1]      [0 1]      [0]
                             >= [1 1] X1 + [1 3] X2 + [0]
                                [0 1]      [0 1]      [0]
                             =  a__fst(mark(X1),mark(X2))
      
                mark(len(X)) =  [1 1] X + [8]            
                                [0 1]     [6]            
                             >= [1 1] X + [2]            
                                [0 1]     [6]            
                             =  a__len(mark(X))          
      
                 mark(nil()) =  [0]                      
                                [0]                      
                             >= [0]                      
                                [0]                      
                             =  nil()                    
      
                  mark(s(X)) =  [6]                      
                                [4]                      
                             >= [2]                      
                                [4]                      
                             =  s(X)                     
      
*** 1.1.1.1.1.1.1.1.1.1 Progress [(O(1),O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        mark(cons(X1,X2)) -> cons(mark(X1),X2)
        mark(from(X)) -> a__from(mark(X))
        mark(fst(X1,X2)) -> a__fst(mark(X1),mark(X2))
      Weak DP Rules:
        
      Weak TRS Rules:
        a__add(X1,X2) -> add(X1,X2)
        a__add(0(),X) -> mark(X)
        a__add(s(X),Y) -> s(add(X,Y))
        a__from(X) -> cons(mark(X),from(s(X)))
        a__from(X) -> from(X)
        a__fst(X1,X2) -> fst(X1,X2)
        a__fst(0(),Z) -> nil()
        a__fst(s(X),cons(Y,Z)) -> cons(mark(Y),fst(X,Z))
        a__len(X) -> len(X)
        a__len(cons(X,Z)) -> s(len(Z))
        a__len(nil()) -> 0()
        mark(0()) -> 0()
        mark(add(X1,X2)) -> a__add(mark(X1),mark(X2))
        mark(len(X)) -> a__len(mark(X))
        mark(nil()) -> nil()
        mark(s(X)) -> s(X)
      Signature:
        {a__add/2,a__from/1,a__fst/2,a__len/1,mark/1} / {0/0,add/2,cons/2,from/1,fst/2,len/1,nil/0,s/1}
      Obligation:
        Innermost
        basic terms: {a__add,a__from,a__fst,a__len,mark}/{0,add,cons,from,fst,len,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__add) = {1,2},
        uargs(a__from) = {1},
        uargs(a__fst) = {1,2},
        uargs(a__len) = {1},
        uargs(cons) = {1}
      
      Following symbols are considered usable:
        {a__add,a__from,a__fst,a__len,mark}
      TcT has computed the following interpretation:
              p(0) = [3]                      
                     [0]                      
         p(a__add) = [1 0] x1 + [1 4] x2 + [3]
                     [0 1]      [0 1]      [1]
        p(a__from) = [1 4] x1 + [2]           
                     [0 1]      [2]           
         p(a__fst) = [1 0] x1 + [1 4] x2 + [0]
                     [0 1]      [0 1]      [0]
         p(a__len) = [1 0] x1 + [2]           
                     [0 1]      [0]           
            p(add) = [1 0] x1 + [1 4] x2 + [0]
                     [0 1]      [0 1]      [1]
           p(cons) = [1 0] x1 + [0]           
                     [0 1]      [0]           
           p(from) = [1 4] x1 + [0]           
                     [0 1]      [2]           
            p(fst) = [1 0] x1 + [1 4] x2 + [0]
                     [0 1]      [0 1]      [0]
            p(len) = [1 0] x1 + [2]           
                     [0 1]      [0]           
           p(mark) = [1 4] x1 + [0]           
                     [0 1]      [0]           
            p(nil) = [1]                      
                     [0]                      
              p(s) = [0]                      
                     [0]                      
      
      Following rules are strictly oriented:
      mark(from(X)) = [1 8] X + [8]   
                      [0 1]     [2]   
                    > [1 8] X + [2]   
                      [0 1]     [2]   
                    = a__from(mark(X))
      
      
      Following rules are (at-least) weakly oriented:
               a__add(X1,X2) =  [1 0] X1 + [1 4] X2 + [3]
                                [0 1]      [0 1]      [1]
                             >= [1 0] X1 + [1 4] X2 + [0]
                                [0 1]      [0 1]      [1]
                             =  add(X1,X2)               
      
               a__add(0(),X) =  [1 4] X + [6]            
                                [0 1]     [1]            
                             >= [1 4] X + [0]            
                                [0 1]     [0]            
                             =  mark(X)                  
      
              a__add(s(X),Y) =  [1 4] Y + [3]            
                                [0 1]     [1]            
                             >= [0]                      
                                [0]                      
                             =  s(add(X,Y))              
      
                  a__from(X) =  [1 4] X + [2]            
                                [0 1]     [2]            
                             >= [1 4] X + [0]            
                                [0 1]     [0]            
                             =  cons(mark(X),from(s(X))) 
      
                  a__from(X) =  [1 4] X + [2]            
                                [0 1]     [2]            
                             >= [1 4] X + [0]            
                                [0 1]     [2]            
                             =  from(X)                  
      
               a__fst(X1,X2) =  [1 0] X1 + [1 4] X2 + [0]
                                [0 1]      [0 1]      [0]
                             >= [1 0] X1 + [1 4] X2 + [0]
                                [0 1]      [0 1]      [0]
                             =  fst(X1,X2)               
      
               a__fst(0(),Z) =  [1 4] Z + [3]            
                                [0 1]     [0]            
                             >= [1]                      
                                [0]                      
                             =  nil()                    
      
      a__fst(s(X),cons(Y,Z)) =  [1 4] Y + [0]            
                                [0 1]     [0]            
                             >= [1 4] Y + [0]            
                                [0 1]     [0]            
                             =  cons(mark(Y),fst(X,Z))   
      
                   a__len(X) =  [1 0] X + [2]            
                                [0 1]     [0]            
                             >= [1 0] X + [2]            
                                [0 1]     [0]            
                             =  len(X)                   
      
           a__len(cons(X,Z)) =  [1 0] X + [2]            
                                [0 1]     [0]            
                             >= [0]                      
                                [0]                      
                             =  s(len(Z))                
      
               a__len(nil()) =  [3]                      
                                [0]                      
                             >= [3]                      
                                [0]                      
                             =  0()                      
      
                   mark(0()) =  [3]                      
                                [0]                      
                             >= [3]                      
                                [0]                      
                             =  0()                      
      
            mark(add(X1,X2)) =  [1 4] X1 + [1 8] X2 + [4]
                                [0 1]      [0 1]      [1]
                             >= [1 4] X1 + [1 8] X2 + [3]
                                [0 1]      [0 1]      [1]
                             =  a__add(mark(X1),mark(X2))
      
           mark(cons(X1,X2)) =  [1 4] X1 + [0]           
                                [0 1]      [0]           
                             >= [1 4] X1 + [0]           
                                [0 1]      [0]           
                             =  cons(mark(X1),X2)        
      
            mark(fst(X1,X2)) =  [1 4] X1 + [1 8] X2 + [0]
                                [0 1]      [0 1]      [0]
                             >= [1 4] X1 + [1 8] X2 + [0]
                                [0 1]      [0 1]      [0]
                             =  a__fst(mark(X1),mark(X2))
      
                mark(len(X)) =  [1 4] X + [2]            
                                [0 1]     [0]            
                             >= [1 4] X + [2]            
                                [0 1]     [0]            
                             =  a__len(mark(X))          
      
                 mark(nil()) =  [1]                      
                                [0]                      
                             >= [1]                      
                                [0]                      
                             =  nil()                    
      
                  mark(s(X)) =  [0]                      
                                [0]                      
                             >= [0]                      
                                [0]                      
                             =  s(X)                     
      
*** 1.1.1.1.1.1.1.1.1.1.1 Progress [(O(1),O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        mark(cons(X1,X2)) -> cons(mark(X1),X2)
        mark(fst(X1,X2)) -> a__fst(mark(X1),mark(X2))
      Weak DP Rules:
        
      Weak TRS Rules:
        a__add(X1,X2) -> add(X1,X2)
        a__add(0(),X) -> mark(X)
        a__add(s(X),Y) -> s(add(X,Y))
        a__from(X) -> cons(mark(X),from(s(X)))
        a__from(X) -> from(X)
        a__fst(X1,X2) -> fst(X1,X2)
        a__fst(0(),Z) -> nil()
        a__fst(s(X),cons(Y,Z)) -> cons(mark(Y),fst(X,Z))
        a__len(X) -> len(X)
        a__len(cons(X,Z)) -> s(len(Z))
        a__len(nil()) -> 0()
        mark(0()) -> 0()
        mark(add(X1,X2)) -> a__add(mark(X1),mark(X2))
        mark(from(X)) -> a__from(mark(X))
        mark(len(X)) -> a__len(mark(X))
        mark(nil()) -> nil()
        mark(s(X)) -> s(X)
      Signature:
        {a__add/2,a__from/1,a__fst/2,a__len/1,mark/1} / {0/0,add/2,cons/2,from/1,fst/2,len/1,nil/0,s/1}
      Obligation:
        Innermost
        basic terms: {a__add,a__from,a__fst,a__len,mark}/{0,add,cons,from,fst,len,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__add) = {1,2},
        uargs(a__from) = {1},
        uargs(a__fst) = {1,2},
        uargs(a__len) = {1},
        uargs(cons) = {1}
      
      Following symbols are considered usable:
        {a__add,a__from,a__fst,a__len,mark}
      TcT has computed the following interpretation:
              p(0) = [0]                      
                     [0]                      
         p(a__add) = [1 0] x1 + [1 4] x2 + [1]
                     [0 1]      [0 1]      [1]
        p(a__from) = [1 5] x1 + [5]           
                     [0 1]      [1]           
         p(a__fst) = [1 0] x1 + [1 4] x2 + [1]
                     [0 1]      [0 1]      [0]
         p(a__len) = [1 4] x1 + [3]           
                     [0 1]      [0]           
            p(add) = [1 0] x1 + [1 4] x2 + [0]
                     [0 1]      [0 1]      [1]
           p(cons) = [1 0] x1 + [3]           
                     [0 1]      [1]           
           p(from) = [1 5] x1 + [4]           
                     [0 1]      [1]           
            p(fst) = [1 0] x1 + [1 4] x2 + [1]
                     [0 1]      [0 1]      [0]
            p(len) = [1 4] x1 + [3]           
                     [0 1]      [0]           
           p(mark) = [1 4] x1 + [0]           
                     [0 1]      [0]           
            p(nil) = [0]                      
                     [0]                      
              p(s) = [3]                      
                     [0]                      
      
      Following rules are strictly oriented:
      mark(cons(X1,X2)) = [1 4] X1 + [7]   
                          [0 1]      [1]   
                        > [1 4] X1 + [3]   
                          [0 1]      [1]   
                        = cons(mark(X1),X2)
      
      
      Following rules are (at-least) weakly oriented:
               a__add(X1,X2) =  [1 0] X1 + [1 4] X2 + [1]
                                [0 1]      [0 1]      [1]
                             >= [1 0] X1 + [1 4] X2 + [0]
                                [0 1]      [0 1]      [1]
                             =  add(X1,X2)               
      
               a__add(0(),X) =  [1 4] X + [1]            
                                [0 1]     [1]            
                             >= [1 4] X + [0]            
                                [0 1]     [0]            
                             =  mark(X)                  
      
              a__add(s(X),Y) =  [1 4] Y + [4]            
                                [0 1]     [1]            
                             >= [3]                      
                                [0]                      
                             =  s(add(X,Y))              
      
                  a__from(X) =  [1 5] X + [5]            
                                [0 1]     [1]            
                             >= [1 4] X + [3]            
                                [0 1]     [1]            
                             =  cons(mark(X),from(s(X))) 
      
                  a__from(X) =  [1 5] X + [5]            
                                [0 1]     [1]            
                             >= [1 5] X + [4]            
                                [0 1]     [1]            
                             =  from(X)                  
      
               a__fst(X1,X2) =  [1 0] X1 + [1 4] X2 + [1]
                                [0 1]      [0 1]      [0]
                             >= [1 0] X1 + [1 4] X2 + [1]
                                [0 1]      [0 1]      [0]
                             =  fst(X1,X2)               
      
               a__fst(0(),Z) =  [1 4] Z + [1]            
                                [0 1]     [0]            
                             >= [0]                      
                                [0]                      
                             =  nil()                    
      
      a__fst(s(X),cons(Y,Z)) =  [1 4] Y + [11]           
                                [0 1]     [1]            
                             >= [1 4] Y + [3]            
                                [0 1]     [1]            
                             =  cons(mark(Y),fst(X,Z))   
      
                   a__len(X) =  [1 4] X + [3]            
                                [0 1]     [0]            
                             >= [1 4] X + [3]            
                                [0 1]     [0]            
                             =  len(X)                   
      
           a__len(cons(X,Z)) =  [1 4] X + [10]           
                                [0 1]     [1]            
                             >= [3]                      
                                [0]                      
                             =  s(len(Z))                
      
               a__len(nil()) =  [3]                      
                                [0]                      
                             >= [0]                      
                                [0]                      
                             =  0()                      
      
                   mark(0()) =  [0]                      
                                [0]                      
                             >= [0]                      
                                [0]                      
                             =  0()                      
      
            mark(add(X1,X2)) =  [1 4] X1 + [1 8] X2 + [4]
                                [0 1]      [0 1]      [1]
                             >= [1 4] X1 + [1 8] X2 + [1]
                                [0 1]      [0 1]      [1]
                             =  a__add(mark(X1),mark(X2))
      
               mark(from(X)) =  [1 9] X + [8]            
                                [0 1]     [1]            
                             >= [1 9] X + [5]            
                                [0 1]     [1]            
                             =  a__from(mark(X))         
      
            mark(fst(X1,X2)) =  [1 4] X1 + [1 8] X2 + [1]
                                [0 1]      [0 1]      [0]
                             >= [1 4] X1 + [1 8] X2 + [1]
                                [0 1]      [0 1]      [0]
                             =  a__fst(mark(X1),mark(X2))
      
                mark(len(X)) =  [1 8] X + [3]            
                                [0 1]     [0]            
                             >= [1 8] X + [3]            
                                [0 1]     [0]            
                             =  a__len(mark(X))          
      
                 mark(nil()) =  [0]                      
                                [0]                      
                             >= [0]                      
                                [0]                      
                             =  nil()                    
      
                  mark(s(X)) =  [3]                      
                                [0]                      
                             >= [3]                      
                                [0]                      
                             =  s(X)                     
      
*** 1.1.1.1.1.1.1.1.1.1.1.1 Progress [(O(1),O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        mark(fst(X1,X2)) -> a__fst(mark(X1),mark(X2))
      Weak DP Rules:
        
      Weak TRS Rules:
        a__add(X1,X2) -> add(X1,X2)
        a__add(0(),X) -> mark(X)
        a__add(s(X),Y) -> s(add(X,Y))
        a__from(X) -> cons(mark(X),from(s(X)))
        a__from(X) -> from(X)
        a__fst(X1,X2) -> fst(X1,X2)
        a__fst(0(),Z) -> nil()
        a__fst(s(X),cons(Y,Z)) -> cons(mark(Y),fst(X,Z))
        a__len(X) -> len(X)
        a__len(cons(X,Z)) -> s(len(Z))
        a__len(nil()) -> 0()
        mark(0()) -> 0()
        mark(add(X1,X2)) -> a__add(mark(X1),mark(X2))
        mark(cons(X1,X2)) -> cons(mark(X1),X2)
        mark(from(X)) -> a__from(mark(X))
        mark(len(X)) -> a__len(mark(X))
        mark(nil()) -> nil()
        mark(s(X)) -> s(X)
      Signature:
        {a__add/2,a__from/1,a__fst/2,a__len/1,mark/1} / {0/0,add/2,cons/2,from/1,fst/2,len/1,nil/0,s/1}
      Obligation:
        Innermost
        basic terms: {a__add,a__from,a__fst,a__len,mark}/{0,add,cons,from,fst,len,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__add) = {1,2},
        uargs(a__from) = {1},
        uargs(a__fst) = {1,2},
        uargs(a__len) = {1},
        uargs(cons) = {1}
      
      Following symbols are considered usable:
        {a__add,a__from,a__fst,a__len,mark}
      TcT has computed the following interpretation:
              p(0) = [1]                      
                     [0]                      
         p(a__add) = [1 0] x1 + [1 1] x2 + [5]
                     [0 1]      [0 1]      [0]
        p(a__from) = [1 4] x1 + [0]           
                     [0 1]      [4]           
         p(a__fst) = [1 6] x1 + [1 2] x2 + [0]
                     [0 1]      [0 1]      [1]
         p(a__len) = [1 0] x1 + [0]           
                     [0 1]      [1]           
            p(add) = [1 0] x1 + [1 1] x2 + [5]
                     [0 1]      [0 1]      [0]
           p(cons) = [1 1] x1 + [0]           
                     [0 1]      [1]           
           p(from) = [1 4] x1 + [0]           
                     [0 1]      [4]           
            p(fst) = [1 6] x1 + [1 2] x2 + [0]
                     [0 1]      [0 1]      [1]
            p(len) = [1 0] x1 + [0]           
                     [0 1]      [1]           
           p(mark) = [1 1] x1 + [0]           
                     [0 1]      [0]           
            p(nil) = [1]                      
                     [1]                      
              p(s) = [0]                      
                     [2]                      
      
      Following rules are strictly oriented:
      mark(fst(X1,X2)) = [1 7] X1 + [1 3] X2 + [1]
                         [0 1]      [0 1]      [1]
                       > [1 7] X1 + [1 3] X2 + [0]
                         [0 1]      [0 1]      [1]
                       = a__fst(mark(X1),mark(X2))
      
      
      Following rules are (at-least) weakly oriented:
               a__add(X1,X2) =  [1 0] X1 + [1 1] X2 + [5]
                                [0 1]      [0 1]      [0]
                             >= [1 0] X1 + [1 1] X2 + [5]
                                [0 1]      [0 1]      [0]
                             =  add(X1,X2)               
      
               a__add(0(),X) =  [1 1] X + [6]            
                                [0 1]     [0]            
                             >= [1 1] X + [0]            
                                [0 1]     [0]            
                             =  mark(X)                  
      
              a__add(s(X),Y) =  [1 1] Y + [5]            
                                [0 1]     [2]            
                             >= [0]                      
                                [2]                      
                             =  s(add(X,Y))              
      
                  a__from(X) =  [1 4] X + [0]            
                                [0 1]     [4]            
                             >= [1 2] X + [0]            
                                [0 1]     [1]            
                             =  cons(mark(X),from(s(X))) 
      
                  a__from(X) =  [1 4] X + [0]            
                                [0 1]     [4]            
                             >= [1 4] X + [0]            
                                [0 1]     [4]            
                             =  from(X)                  
      
               a__fst(X1,X2) =  [1 6] X1 + [1 2] X2 + [0]
                                [0 1]      [0 1]      [1]
                             >= [1 6] X1 + [1 2] X2 + [0]
                                [0 1]      [0 1]      [1]
                             =  fst(X1,X2)               
      
               a__fst(0(),Z) =  [1 2] Z + [1]            
                                [0 1]     [1]            
                             >= [1]                      
                                [1]                      
                             =  nil()                    
      
      a__fst(s(X),cons(Y,Z)) =  [1 3] Y + [14]           
                                [0 1]     [4]            
                             >= [1 2] Y + [0]            
                                [0 1]     [1]            
                             =  cons(mark(Y),fst(X,Z))   
      
                   a__len(X) =  [1 0] X + [0]            
                                [0 1]     [1]            
                             >= [1 0] X + [0]            
                                [0 1]     [1]            
                             =  len(X)                   
      
           a__len(cons(X,Z)) =  [1 1] X + [0]            
                                [0 1]     [2]            
                             >= [0]                      
                                [2]                      
                             =  s(len(Z))                
      
               a__len(nil()) =  [1]                      
                                [2]                      
                             >= [1]                      
                                [0]                      
                             =  0()                      
      
                   mark(0()) =  [1]                      
                                [0]                      
                             >= [1]                      
                                [0]                      
                             =  0()                      
      
            mark(add(X1,X2)) =  [1 1] X1 + [1 2] X2 + [5]
                                [0 1]      [0 1]      [0]
                             >= [1 1] X1 + [1 2] X2 + [5]
                                [0 1]      [0 1]      [0]
                             =  a__add(mark(X1),mark(X2))
      
           mark(cons(X1,X2)) =  [1 2] X1 + [1]           
                                [0 1]      [1]           
                             >= [1 2] X1 + [0]           
                                [0 1]      [1]           
                             =  cons(mark(X1),X2)        
      
               mark(from(X)) =  [1 5] X + [4]            
                                [0 1]     [4]            
                             >= [1 5] X + [0]            
                                [0 1]     [4]            
                             =  a__from(mark(X))         
      
                mark(len(X)) =  [1 1] X + [1]            
                                [0 1]     [1]            
                             >= [1 1] X + [0]            
                                [0 1]     [1]            
                             =  a__len(mark(X))          
      
                 mark(nil()) =  [2]                      
                                [1]                      
                             >= [1]                      
                                [1]                      
                             =  nil()                    
      
                  mark(s(X)) =  [2]                      
                                [2]                      
                             >= [0]                      
                                [2]                      
                             =  s(X)                     
      
*** 1.1.1.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__add(X1,X2) -> add(X1,X2)
        a__add(0(),X) -> mark(X)
        a__add(s(X),Y) -> s(add(X,Y))
        a__from(X) -> cons(mark(X),from(s(X)))
        a__from(X) -> from(X)
        a__fst(X1,X2) -> fst(X1,X2)
        a__fst(0(),Z) -> nil()
        a__fst(s(X),cons(Y,Z)) -> cons(mark(Y),fst(X,Z))
        a__len(X) -> len(X)
        a__len(cons(X,Z)) -> s(len(Z))
        a__len(nil()) -> 0()
        mark(0()) -> 0()
        mark(add(X1,X2)) -> a__add(mark(X1),mark(X2))
        mark(cons(X1,X2)) -> cons(mark(X1),X2)
        mark(from(X)) -> a__from(mark(X))
        mark(fst(X1,X2)) -> a__fst(mark(X1),mark(X2))
        mark(len(X)) -> a__len(mark(X))
        mark(nil()) -> nil()
        mark(s(X)) -> s(X)
      Signature:
        {a__add/2,a__from/1,a__fst/2,a__len/1,mark/1} / {0/0,add/2,cons/2,from/1,fst/2,len/1,nil/0,s/1}
      Obligation:
        Innermost
        basic terms: {a__add,a__from,a__fst,a__len,mark}/{0,add,cons,from,fst,len,nil,s}
    Applied Processor:
      EmptyProcessor
    Proof:
      The problem is already closed. The intended complexity is O(1).