WORST_CASE(?,O(n^3))
* Step 1: NaturalMI WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict TRS:
            a__first(X1,X2) -> first(X1,X2)
            a__first(0(),X) -> nil()
            a__first(s(X),cons(Y,Z)) -> cons(mark(Y),first(X,Z))
            a__from(X) -> cons(mark(X),from(s(X)))
            a__from(X) -> from(X)
            mark(0()) -> 0()
            mark(cons(X1,X2)) -> cons(mark(X1),X2)
            mark(first(X1,X2)) -> a__first(mark(X1),mark(X2))
            mark(from(X)) -> a__from(mark(X))
            mark(nil()) -> nil()
            mark(s(X)) -> s(mark(X))
        - Signature:
            {a__first/2,a__from/1,mark/1} / {0/0,cons/2,first/2,from/1,nil/0,s/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {a__first,a__from,mark} and constructors {0,cons,first
            ,from,nil,s}
    + Applied Processor:
        NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules}
    + Details:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(a__first) = {1,2},
          uargs(a__from) = {1},
          uargs(cons) = {1},
          uargs(s) = {1}
        
        Following symbols are considered usable:
          {a__first,a__from,mark}
        TcT has computed the following interpretation:
                 p(0) = [0]                  
          p(a__first) = [1] x1 + [1] x2 + [0]
           p(a__from) = [1] x1 + [0]         
              p(cons) = [1] x1 + [0]         
             p(first) = [1] x1 + [1] x2 + [0]
              p(from) = [1] x1 + [0]         
              p(mark) = [1] x1 + [0]         
               p(nil) = [0]                  
                 p(s) = [1] x1 + [4]         
        
        Following rules are strictly oriented:
        a__first(s(X),cons(Y,Z)) = [1] X + [1] Y + [4]     
                                 > [1] Y + [0]             
                                 = cons(mark(Y),first(X,Z))
        
        
        Following rules are (at-least) weakly oriented:
           a__first(X1,X2) =  [1] X1 + [1] X2 + [0]      
                           >= [1] X1 + [1] X2 + [0]      
                           =  first(X1,X2)               
        
           a__first(0(),X) =  [1] X + [0]                
                           >= [0]                        
                           =  nil()                      
        
                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)                    
        
                 mark(0()) =  [0]                        
                           >= [0]                        
                           =  0()                        
        
         mark(cons(X1,X2)) =  [1] X1 + [0]               
                           >= [1] X1 + [0]               
                           =  cons(mark(X1),X2)          
        
        mark(first(X1,X2)) =  [1] X1 + [1] X2 + [0]      
                           >= [1] X1 + [1] X2 + [0]      
                           =  a__first(mark(X1),mark(X2))
        
             mark(from(X)) =  [1] X + [0]                
                           >= [1] X + [0]                
                           =  a__from(mark(X))           
        
               mark(nil()) =  [0]                        
                           >= [0]                        
                           =  nil()                      
        
                mark(s(X)) =  [1] X + [4]                
                           >= [1] X + [4]                
                           =  s(mark(X))                 
        
* Step 2: NaturalMI WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict TRS:
            a__first(X1,X2) -> first(X1,X2)
            a__first(0(),X) -> nil()
            a__from(X) -> cons(mark(X),from(s(X)))
            a__from(X) -> from(X)
            mark(0()) -> 0()
            mark(cons(X1,X2)) -> cons(mark(X1),X2)
            mark(first(X1,X2)) -> a__first(mark(X1),mark(X2))
            mark(from(X)) -> a__from(mark(X))
            mark(nil()) -> nil()
            mark(s(X)) -> s(mark(X))
        - Weak TRS:
            a__first(s(X),cons(Y,Z)) -> cons(mark(Y),first(X,Z))
        - Signature:
            {a__first/2,a__from/1,mark/1} / {0/0,cons/2,first/2,from/1,nil/0,s/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {a__first,a__from,mark} and constructors {0,cons,first
            ,from,nil,s}
    + Applied Processor:
        NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules}
    + Details:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(a__first) = {1,2},
          uargs(a__from) = {1},
          uargs(cons) = {1},
          uargs(s) = {1}
        
        Following symbols are considered usable:
          {a__first,a__from,mark}
        TcT has computed the following interpretation:
                 p(0) = [2]                  
          p(a__first) = [1] x1 + [1] x2 + [0]
           p(a__from) = [1] x1 + [10]        
              p(cons) = [1] x1 + [10]        
             p(first) = [1] x1 + [1] x2 + [0]
              p(from) = [1] x1 + [10]        
              p(mark) = [1] x1 + [0]         
               p(nil) = [0]                  
                 p(s) = [1] x1 + [0]         
        
        Following rules are strictly oriented:
        a__first(0(),X) = [1] X + [2]
                        > [0]        
                        = nil()      
        
        
        Following rules are (at-least) weakly oriented:
                 a__first(X1,X2) =  [1] X1 + [1] X2 + [0]      
                                 >= [1] X1 + [1] X2 + [0]      
                                 =  first(X1,X2)               
        
        a__first(s(X),cons(Y,Z)) =  [1] X + [1] Y + [10]       
                                 >= [1] Y + [10]               
                                 =  cons(mark(Y),first(X,Z))   
        
                      a__from(X) =  [1] X + [10]               
                                 >= [1] X + [10]               
                                 =  cons(mark(X),from(s(X)))   
        
                      a__from(X) =  [1] X + [10]               
                                 >= [1] X + [10]               
                                 =  from(X)                    
        
                       mark(0()) =  [2]                        
                                 >= [2]                        
                                 =  0()                        
        
               mark(cons(X1,X2)) =  [1] X1 + [10]              
                                 >= [1] X1 + [10]              
                                 =  cons(mark(X1),X2)          
        
              mark(first(X1,X2)) =  [1] X1 + [1] X2 + [0]      
                                 >= [1] X1 + [1] X2 + [0]      
                                 =  a__first(mark(X1),mark(X2))
        
                   mark(from(X)) =  [1] X + [10]               
                                 >= [1] X + [10]               
                                 =  a__from(mark(X))           
        
                     mark(nil()) =  [0]                        
                                 >= [0]                        
                                 =  nil()                      
        
                      mark(s(X)) =  [1] X + [0]                
                                 >= [1] X + [0]                
                                 =  s(mark(X))                 
        
* Step 3: NaturalMI WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict TRS:
            a__first(X1,X2) -> first(X1,X2)
            a__from(X) -> cons(mark(X),from(s(X)))
            a__from(X) -> from(X)
            mark(0()) -> 0()
            mark(cons(X1,X2)) -> cons(mark(X1),X2)
            mark(first(X1,X2)) -> a__first(mark(X1),mark(X2))
            mark(from(X)) -> a__from(mark(X))
            mark(nil()) -> nil()
            mark(s(X)) -> s(mark(X))
        - Weak TRS:
            a__first(0(),X) -> nil()
            a__first(s(X),cons(Y,Z)) -> cons(mark(Y),first(X,Z))
        - Signature:
            {a__first/2,a__from/1,mark/1} / {0/0,cons/2,first/2,from/1,nil/0,s/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {a__first,a__from,mark} and constructors {0,cons,first
            ,from,nil,s}
    + Applied Processor:
        NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules}
    + Details:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(a__first) = {1,2},
          uargs(a__from) = {1},
          uargs(cons) = {1},
          uargs(s) = {1}
        
        Following symbols are considered usable:
          {a__first,a__from,mark}
        TcT has computed the following interpretation:
                 p(0) = [0]                  
          p(a__first) = [1] x1 + [1] x2 + [0]
           p(a__from) = [1] x1 + [8]         
              p(cons) = [1] x1 + [0]         
             p(first) = [1] x1 + [1] x2 + [0]
              p(from) = [1] x1 + [8]         
              p(mark) = [1] x1 + [0]         
               p(nil) = [0]                  
                 p(s) = [1] x1 + [0]         
        
        Following rules are strictly oriented:
        a__from(X) = [1] X + [8]             
                   > [1] X + [0]             
                   = cons(mark(X),from(s(X)))
        
        
        Following rules are (at-least) weakly oriented:
                 a__first(X1,X2) =  [1] X1 + [1] X2 + [0]      
                                 >= [1] X1 + [1] X2 + [0]      
                                 =  first(X1,X2)               
        
                 a__first(0(),X) =  [1] X + [0]                
                                 >= [0]                        
                                 =  nil()                      
        
        a__first(s(X),cons(Y,Z)) =  [1] X + [1] Y + [0]        
                                 >= [1] Y + [0]                
                                 =  cons(mark(Y),first(X,Z))   
        
                      a__from(X) =  [1] X + [8]                
                                 >= [1] X + [8]                
                                 =  from(X)                    
        
                       mark(0()) =  [0]                        
                                 >= [0]                        
                                 =  0()                        
        
               mark(cons(X1,X2)) =  [1] X1 + [0]               
                                 >= [1] X1 + [0]               
                                 =  cons(mark(X1),X2)          
        
              mark(first(X1,X2)) =  [1] X1 + [1] X2 + [0]      
                                 >= [1] X1 + [1] X2 + [0]      
                                 =  a__first(mark(X1),mark(X2))
        
                   mark(from(X)) =  [1] X + [8]                
                                 >= [1] X + [8]                
                                 =  a__from(mark(X))           
        
                     mark(nil()) =  [0]                        
                                 >= [0]                        
                                 =  nil()                      
        
                      mark(s(X)) =  [1] X + [0]                
                                 >= [1] X + [0]                
                                 =  s(mark(X))                 
        
* Step 4: NaturalMI WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict TRS:
            a__first(X1,X2) -> first(X1,X2)
            a__from(X) -> from(X)
            mark(0()) -> 0()
            mark(cons(X1,X2)) -> cons(mark(X1),X2)
            mark(first(X1,X2)) -> a__first(mark(X1),mark(X2))
            mark(from(X)) -> a__from(mark(X))
            mark(nil()) -> nil()
            mark(s(X)) -> s(mark(X))
        - Weak TRS:
            a__first(0(),X) -> nil()
            a__first(s(X),cons(Y,Z)) -> cons(mark(Y),first(X,Z))
            a__from(X) -> cons(mark(X),from(s(X)))
        - Signature:
            {a__first/2,a__from/1,mark/1} / {0/0,cons/2,first/2,from/1,nil/0,s/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {a__first,a__from,mark} and constructors {0,cons,first
            ,from,nil,s}
    + Applied Processor:
        NaturalMI {miDimension = 3, miDegree = 3, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules}
    + Details:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(a__first) = {1,2},
          uargs(a__from) = {1},
          uargs(cons) = {1},
          uargs(s) = {1}
        
        Following symbols are considered usable:
          {a__first,a__from,mark}
        TcT has computed the following interpretation:
                 p(0) = [0]                          
                        [0]                          
                        [0]                          
          p(a__first) = [1 3 2]      [1 0 2]      [1]
                        [0 0 0] x1 + [0 0 0] x2 + [1]
                        [0 0 1]      [0 0 1]      [2]
           p(a__from) = [1 0 2]      [0]             
                        [0 0 0] x1 + [1]             
                        [0 0 1]      [0]             
              p(cons) = [1 0 0]      [0]             
                        [0 0 0] x1 + [0]             
                        [0 0 1]      [0]             
             p(first) = [1 0 2]      [1 0 2]      [0]
                        [0 0 0] x1 + [0 0 0] x2 + [0]
                        [0 0 1]      [0 0 1]      [2]
              p(from) = [1 0 2]      [0]             
                        [0 0 0] x1 + [0]             
                        [0 0 1]      [0]             
              p(mark) = [1 0 2]      [0]             
                        [0 0 0] x1 + [1]             
                        [0 0 1]      [0]             
               p(nil) = [0]                          
                        [1]                          
                        [0]                          
                 p(s) = [1 0 0]      [0]             
                        [0 0 0] x1 + [0]             
                        [0 0 1]      [0]             
        
        Following rules are strictly oriented:
        a__first(X1,X2) = [1 3 2]      [1 0 2]      [1]
                          [0 0 0] X1 + [0 0 0] X2 + [1]
                          [0 0 1]      [0 0 1]      [2]
                        > [1 0 2]      [1 0 2]      [0]
                          [0 0 0] X1 + [0 0 0] X2 + [0]
                          [0 0 1]      [0 0 1]      [2]
                        = first(X1,X2)                 
        
        
        Following rules are (at-least) weakly oriented:
                 a__first(0(),X) =  [1 0 2]     [1]              
                                    [0 0 0] X + [1]              
                                    [0 0 1]     [2]              
                                 >= [0]                          
                                    [1]                          
                                    [0]                          
                                 =  nil()                        
        
        a__first(s(X),cons(Y,Z)) =  [1 0 2]     [1 0 2]     [1]  
                                    [0 0 0] X + [0 0 0] Y + [1]  
                                    [0 0 1]     [0 0 1]     [2]  
                                 >= [1 0 2]     [0]              
                                    [0 0 0] Y + [0]              
                                    [0 0 1]     [0]              
                                 =  cons(mark(Y),first(X,Z))     
        
                      a__from(X) =  [1 0 2]     [0]              
                                    [0 0 0] X + [1]              
                                    [0 0 1]     [0]              
                                 >= [1 0 2]     [0]              
                                    [0 0 0] X + [0]              
                                    [0 0 1]     [0]              
                                 =  cons(mark(X),from(s(X)))     
        
                      a__from(X) =  [1 0 2]     [0]              
                                    [0 0 0] X + [1]              
                                    [0 0 1]     [0]              
                                 >= [1 0 2]     [0]              
                                    [0 0 0] X + [0]              
                                    [0 0 1]     [0]              
                                 =  from(X)                      
        
                       mark(0()) =  [0]                          
                                    [1]                          
                                    [0]                          
                                 >= [0]                          
                                    [0]                          
                                    [0]                          
                                 =  0()                          
        
               mark(cons(X1,X2)) =  [1 0 2]      [0]             
                                    [0 0 0] X1 + [1]             
                                    [0 0 1]      [0]             
                                 >= [1 0 2]      [0]             
                                    [0 0 0] X1 + [0]             
                                    [0 0 1]      [0]             
                                 =  cons(mark(X1),X2)            
        
              mark(first(X1,X2)) =  [1 0 4]      [1 0 4]      [4]
                                    [0 0 0] X1 + [0 0 0] X2 + [1]
                                    [0 0 1]      [0 0 1]      [2]
                                 >= [1 0 4]      [1 0 4]      [4]
                                    [0 0 0] X1 + [0 0 0] X2 + [1]
                                    [0 0 1]      [0 0 1]      [2]
                                 =  a__first(mark(X1),mark(X2))  
        
                   mark(from(X)) =  [1 0 4]     [0]              
                                    [0 0 0] X + [1]              
                                    [0 0 1]     [0]              
                                 >= [1 0 4]     [0]              
                                    [0 0 0] X + [1]              
                                    [0 0 1]     [0]              
                                 =  a__from(mark(X))             
        
                     mark(nil()) =  [0]                          
                                    [1]                          
                                    [0]                          
                                 >= [0]                          
                                    [1]                          
                                    [0]                          
                                 =  nil()                        
        
                      mark(s(X)) =  [1 0 2]     [0]              
                                    [0 0 0] X + [1]              
                                    [0 0 1]     [0]              
                                 >= [1 0 2]     [0]              
                                    [0 0 0] X + [0]              
                                    [0 0 1]     [0]              
                                 =  s(mark(X))                   
        
* Step 5: NaturalMI WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict TRS:
            a__from(X) -> from(X)
            mark(0()) -> 0()
            mark(cons(X1,X2)) -> cons(mark(X1),X2)
            mark(first(X1,X2)) -> a__first(mark(X1),mark(X2))
            mark(from(X)) -> a__from(mark(X))
            mark(nil()) -> nil()
            mark(s(X)) -> s(mark(X))
        - Weak TRS:
            a__first(X1,X2) -> first(X1,X2)
            a__first(0(),X) -> nil()
            a__first(s(X),cons(Y,Z)) -> cons(mark(Y),first(X,Z))
            a__from(X) -> cons(mark(X),from(s(X)))
        - Signature:
            {a__first/2,a__from/1,mark/1} / {0/0,cons/2,first/2,from/1,nil/0,s/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {a__first,a__from,mark} and constructors {0,cons,first
            ,from,nil,s}
    + Applied Processor:
        NaturalMI {miDimension = 3, miDegree = 3, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules}
    + Details:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(a__first) = {1,2},
          uargs(a__from) = {1},
          uargs(cons) = {1},
          uargs(s) = {1}
        
        Following symbols are considered usable:
          {a__first,a__from,mark}
        TcT has computed the following interpretation:
                 p(0) = [0]                          
                        [0]                          
                        [0]                          
          p(a__first) = [1 0 0]      [1 0 1]      [0]
                        [0 0 0] x1 + [0 0 0] x2 + [0]
                        [0 0 1]      [0 0 1]      [0]
           p(a__from) = [1 0 2]      [1]             
                        [0 0 0] x1 + [0]             
                        [0 0 1]      [3]             
              p(cons) = [1 0 0]      [0]             
                        [0 0 0] x1 + [0]             
                        [0 0 1]      [0]             
             p(first) = [1 0 0]      [1 0 1]      [0]
                        [0 0 0] x1 + [0 0 0] x2 + [0]
                        [0 0 1]      [0 0 1]      [0]
              p(from) = [1 0 2]      [1]             
                        [0 0 0] x1 + [0]             
                        [0 0 1]      [3]             
              p(mark) = [1 0 1]      [0]             
                        [0 0 0] x1 + [0]             
                        [0 0 1]      [0]             
               p(nil) = [0]                          
                        [0]                          
                        [0]                          
                 p(s) = [1 0 0]      [0]             
                        [0 1 0] x1 + [0]             
                        [0 0 1]      [2]             
        
        Following rules are strictly oriented:
        mark(from(X)) = [1 0 3]     [4] 
                        [0 0 0] X + [0] 
                        [0 0 1]     [3] 
                      > [1 0 3]     [1] 
                        [0 0 0] X + [0] 
                        [0 0 1]     [3] 
                      = a__from(mark(X))
        
           mark(s(X)) = [1 0 1]     [2] 
                        [0 0 0] X + [0] 
                        [0 0 1]     [2] 
                      > [1 0 1]     [0] 
                        [0 0 0] X + [0] 
                        [0 0 1]     [2] 
                      = s(mark(X))      
        
        
        Following rules are (at-least) weakly oriented:
                 a__first(X1,X2) =  [1 0 0]      [1 0 1]      [0]
                                    [0 0 0] X1 + [0 0 0] X2 + [0]
                                    [0 0 1]      [0 0 1]      [0]
                                 >= [1 0 0]      [1 0 1]      [0]
                                    [0 0 0] X1 + [0 0 0] X2 + [0]
                                    [0 0 1]      [0 0 1]      [0]
                                 =  first(X1,X2)                 
        
                 a__first(0(),X) =  [1 0 1]     [0]              
                                    [0 0 0] X + [0]              
                                    [0 0 1]     [0]              
                                 >= [0]                          
                                    [0]                          
                                    [0]                          
                                 =  nil()                        
        
        a__first(s(X),cons(Y,Z)) =  [1 0 0]     [1 0 1]     [0]  
                                    [0 0 0] X + [0 0 0] Y + [0]  
                                    [0 0 1]     [0 0 1]     [2]  
                                 >= [1 0 1]     [0]              
                                    [0 0 0] Y + [0]              
                                    [0 0 1]     [0]              
                                 =  cons(mark(Y),first(X,Z))     
        
                      a__from(X) =  [1 0 2]     [1]              
                                    [0 0 0] X + [0]              
                                    [0 0 1]     [3]              
                                 >= [1 0 1]     [0]              
                                    [0 0 0] X + [0]              
                                    [0 0 1]     [0]              
                                 =  cons(mark(X),from(s(X)))     
        
                      a__from(X) =  [1 0 2]     [1]              
                                    [0 0 0] X + [0]              
                                    [0 0 1]     [3]              
                                 >= [1 0 2]     [1]              
                                    [0 0 0] X + [0]              
                                    [0 0 1]     [3]              
                                 =  from(X)                      
        
                       mark(0()) =  [0]                          
                                    [0]                          
                                    [0]                          
                                 >= [0]                          
                                    [0]                          
                                    [0]                          
                                 =  0()                          
        
               mark(cons(X1,X2)) =  [1 0 1]      [0]             
                                    [0 0 0] X1 + [0]             
                                    [0 0 1]      [0]             
                                 >= [1 0 1]      [0]             
                                    [0 0 0] X1 + [0]             
                                    [0 0 1]      [0]             
                                 =  cons(mark(X1),X2)            
        
              mark(first(X1,X2)) =  [1 0 1]      [1 0 2]      [0]
                                    [0 0 0] X1 + [0 0 0] X2 + [0]
                                    [0 0 1]      [0 0 1]      [0]
                                 >= [1 0 1]      [1 0 2]      [0]
                                    [0 0 0] X1 + [0 0 0] X2 + [0]
                                    [0 0 1]      [0 0 1]      [0]
                                 =  a__first(mark(X1),mark(X2))  
        
                     mark(nil()) =  [0]                          
                                    [0]                          
                                    [0]                          
                                 >= [0]                          
                                    [0]                          
                                    [0]                          
                                 =  nil()                        
        
* Step 6: NaturalMI WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict TRS:
            a__from(X) -> from(X)
            mark(0()) -> 0()
            mark(cons(X1,X2)) -> cons(mark(X1),X2)
            mark(first(X1,X2)) -> a__first(mark(X1),mark(X2))
            mark(nil()) -> nil()
        - Weak TRS:
            a__first(X1,X2) -> first(X1,X2)
            a__first(0(),X) -> nil()
            a__first(s(X),cons(Y,Z)) -> cons(mark(Y),first(X,Z))
            a__from(X) -> cons(mark(X),from(s(X)))
            mark(from(X)) -> a__from(mark(X))
            mark(s(X)) -> s(mark(X))
        - Signature:
            {a__first/2,a__from/1,mark/1} / {0/0,cons/2,first/2,from/1,nil/0,s/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {a__first,a__from,mark} and constructors {0,cons,first
            ,from,nil,s}
    + Applied Processor:
        NaturalMI {miDimension = 3, miDegree = 3, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules}
    + Details:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(a__first) = {1,2},
          uargs(a__from) = {1},
          uargs(cons) = {1},
          uargs(s) = {1}
        
        Following symbols are considered usable:
          {a__first,a__from,mark}
        TcT has computed the following interpretation:
                 p(0) = [0]                          
                        [0]                          
                        [0]                          
          p(a__first) = [1 0 0]      [1 3 0]      [0]
                        [0 1 0] x1 + [0 1 0] x2 + [0]
                        [0 0 0]      [0 0 1]      [0]
           p(a__from) = [1 2 0]      [1]             
                        [0 1 0] x1 + [2]             
                        [0 0 0]      [0]             
              p(cons) = [1 0 0]      [0]             
                        [0 1 0] x1 + [0]             
                        [0 0 0]      [0]             
             p(first) = [1 0 0]      [1 3 0]      [0]
                        [0 1 0] x1 + [0 1 0] x2 + [0]
                        [0 0 0]      [0 0 0]      [0]
              p(from) = [1 2 0]      [0]             
                        [0 1 0] x1 + [2]             
                        [0 0 0]      [0]             
              p(mark) = [1 2 0]      [0]             
                        [0 1 0] x1 + [0]             
                        [1 0 0]      [0]             
               p(nil) = [0]                          
                        [0]                          
                        [0]                          
                 p(s) = [1 0 0]      [1]             
                        [0 1 0] x1 + [0]             
                        [0 0 0]      [1]             
        
        Following rules are strictly oriented:
        a__from(X) = [1 2 0]     [1]
                     [0 1 0] X + [2]
                     [0 0 0]     [0]
                   > [1 2 0]     [0]
                     [0 1 0] X + [2]
                     [0 0 0]     [0]
                   = from(X)        
        
        
        Following rules are (at-least) weakly oriented:
                 a__first(X1,X2) =  [1 0 0]      [1 3 0]      [0]
                                    [0 1 0] X1 + [0 1 0] X2 + [0]
                                    [0 0 0]      [0 0 1]      [0]
                                 >= [1 0 0]      [1 3 0]      [0]
                                    [0 1 0] X1 + [0 1 0] X2 + [0]
                                    [0 0 0]      [0 0 0]      [0]
                                 =  first(X1,X2)                 
        
                 a__first(0(),X) =  [1 3 0]     [0]              
                                    [0 1 0] X + [0]              
                                    [0 0 1]     [0]              
                                 >= [0]                          
                                    [0]                          
                                    [0]                          
                                 =  nil()                        
        
        a__first(s(X),cons(Y,Z)) =  [1 0 0]     [1 3 0]     [1]  
                                    [0 1 0] X + [0 1 0] Y + [0]  
                                    [0 0 0]     [0 0 0]     [0]  
                                 >= [1 2 0]     [0]              
                                    [0 1 0] Y + [0]              
                                    [0 0 0]     [0]              
                                 =  cons(mark(Y),first(X,Z))     
        
                      a__from(X) =  [1 2 0]     [1]              
                                    [0 1 0] X + [2]              
                                    [0 0 0]     [0]              
                                 >= [1 2 0]     [0]              
                                    [0 1 0] X + [0]              
                                    [0 0 0]     [0]              
                                 =  cons(mark(X),from(s(X)))     
        
                       mark(0()) =  [0]                          
                                    [0]                          
                                    [0]                          
                                 >= [0]                          
                                    [0]                          
                                    [0]                          
                                 =  0()                          
        
               mark(cons(X1,X2)) =  [1 2 0]      [0]             
                                    [0 1 0] X1 + [0]             
                                    [1 0 0]      [0]             
                                 >= [1 2 0]      [0]             
                                    [0 1 0] X1 + [0]             
                                    [0 0 0]      [0]             
                                 =  cons(mark(X1),X2)            
        
              mark(first(X1,X2)) =  [1 2 0]      [1 5 0]      [0]
                                    [0 1 0] X1 + [0 1 0] X2 + [0]
                                    [1 0 0]      [1 3 0]      [0]
                                 >= [1 2 0]      [1 5 0]      [0]
                                    [0 1 0] X1 + [0 1 0] X2 + [0]
                                    [0 0 0]      [1 0 0]      [0]
                                 =  a__first(mark(X1),mark(X2))  
        
                   mark(from(X)) =  [1 4 0]     [4]              
                                    [0 1 0] X + [2]              
                                    [1 2 0]     [0]              
                                 >= [1 4 0]     [1]              
                                    [0 1 0] X + [2]              
                                    [0 0 0]     [0]              
                                 =  a__from(mark(X))             
        
                     mark(nil()) =  [0]                          
                                    [0]                          
                                    [0]                          
                                 >= [0]                          
                                    [0]                          
                                    [0]                          
                                 =  nil()                        
        
                      mark(s(X)) =  [1 2 0]     [1]              
                                    [0 1 0] X + [0]              
                                    [1 0 0]     [1]              
                                 >= [1 2 0]     [1]              
                                    [0 1 0] X + [0]              
                                    [0 0 0]     [1]              
                                 =  s(mark(X))                   
        
* Step 7: NaturalMI WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict TRS:
            mark(0()) -> 0()
            mark(cons(X1,X2)) -> cons(mark(X1),X2)
            mark(first(X1,X2)) -> a__first(mark(X1),mark(X2))
            mark(nil()) -> nil()
        - Weak TRS:
            a__first(X1,X2) -> first(X1,X2)
            a__first(0(),X) -> nil()
            a__first(s(X),cons(Y,Z)) -> cons(mark(Y),first(X,Z))
            a__from(X) -> cons(mark(X),from(s(X)))
            a__from(X) -> from(X)
            mark(from(X)) -> a__from(mark(X))
            mark(s(X)) -> s(mark(X))
        - Signature:
            {a__first/2,a__from/1,mark/1} / {0/0,cons/2,first/2,from/1,nil/0,s/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {a__first,a__from,mark} and constructors {0,cons,first
            ,from,nil,s}
    + Applied Processor:
        NaturalMI {miDimension = 3, miDegree = 3, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules}
    + Details:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(a__first) = {1,2},
          uargs(a__from) = {1},
          uargs(cons) = {1},
          uargs(s) = {1}
        
        Following symbols are considered usable:
          {a__first,a__from,mark}
        TcT has computed the following interpretation:
                 p(0) = [0]                          
                        [0]                          
                        [0]                          
          p(a__first) = [1 0 2]      [1 2 0]      [3]
                        [0 1 1] x1 + [0 1 0] x2 + [0]
                        [0 0 0]      [0 0 1]      [1]
           p(a__from) = [1 1 3]      [0]             
                        [0 1 2] x1 + [0]             
                        [0 0 0]      [0]             
              p(cons) = [1 0 2]      [0 0 3]      [0]
                        [0 1 1] x1 + [0 0 2] x2 + [0]
                        [0 0 0]      [0 0 0]      [0]
             p(first) = [1 0 2]      [1 2 0]      [3]
                        [0 1 1] x1 + [0 1 0] x2 + [0]
                        [0 0 0]      [0 0 1]      [1]
              p(from) = [1 1 2]      [0]             
                        [0 1 2] x1 + [0]             
                        [0 0 0]      [0]             
              p(mark) = [1 1 1]      [0]             
                        [0 1 0] x1 + [0]             
                        [0 0 1]      [0]             
               p(nil) = [0]                          
                        [0]                          
                        [0]                          
                 p(s) = [1 0 1]      [0]             
                        [0 1 2] x1 + [2]             
                        [0 0 0]      [0]             
        
        Following rules are strictly oriented:
        mark(first(X1,X2)) = [1 1 3]      [1 3 1]      [4]
                             [0 1 1] X1 + [0 1 0] X2 + [0]
                             [0 0 0]      [0 0 1]      [1]
                           > [1 1 3]      [1 3 1]      [3]
                             [0 1 1] X1 + [0 1 0] X2 + [0]
                             [0 0 0]      [0 0 1]      [1]
                           = a__first(mark(X1),mark(X2))  
        
        
        Following rules are (at-least) weakly oriented:
                 a__first(X1,X2) =  [1 0 2]      [1 2 0]      [3]          
                                    [0 1 1] X1 + [0 1 0] X2 + [0]          
                                    [0 0 0]      [0 0 1]      [1]          
                                 >= [1 0 2]      [1 2 0]      [3]          
                                    [0 1 1] X1 + [0 1 0] X2 + [0]          
                                    [0 0 0]      [0 0 1]      [1]          
                                 =  first(X1,X2)                           
        
                 a__first(0(),X) =  [1 2 0]     [3]                        
                                    [0 1 0] X + [0]                        
                                    [0 0 1]     [1]                        
                                 >= [0]                                    
                                    [0]                                    
                                    [0]                                    
                                 =  nil()                                  
        
        a__first(s(X),cons(Y,Z)) =  [1 0 1]     [1 2 4]     [0 0 7]     [3]
                                    [0 1 2] X + [0 1 1] Y + [0 0 2] Z + [2]
                                    [0 0 0]     [0 0 0]     [0 0 0]     [1]
                                 >= [1 1 3]     [0 0 3]     [3]            
                                    [0 1 1] Y + [0 0 2] Z + [2]            
                                    [0 0 0]     [0 0 0]     [0]            
                                 =  cons(mark(Y),first(X,Z))               
        
                      a__from(X) =  [1 1 3]     [0]                        
                                    [0 1 2] X + [0]                        
                                    [0 0 0]     [0]                        
                                 >= [1 1 3]     [0]                        
                                    [0 1 1] X + [0]                        
                                    [0 0 0]     [0]                        
                                 =  cons(mark(X),from(s(X)))               
        
                      a__from(X) =  [1 1 3]     [0]                        
                                    [0 1 2] X + [0]                        
                                    [0 0 0]     [0]                        
                                 >= [1 1 2]     [0]                        
                                    [0 1 2] X + [0]                        
                                    [0 0 0]     [0]                        
                                 =  from(X)                                
        
                       mark(0()) =  [0]                                    
                                    [0]                                    
                                    [0]                                    
                                 >= [0]                                    
                                    [0]                                    
                                    [0]                                    
                                 =  0()                                    
        
               mark(cons(X1,X2)) =  [1 1 3]      [0 0 5]      [0]          
                                    [0 1 1] X1 + [0 0 2] X2 + [0]          
                                    [0 0 0]      [0 0 0]      [0]          
                                 >= [1 1 3]      [0 0 3]      [0]          
                                    [0 1 1] X1 + [0 0 2] X2 + [0]          
                                    [0 0 0]      [0 0 0]      [0]          
                                 =  cons(mark(X1),X2)                      
        
                   mark(from(X)) =  [1 2 4]     [0]                        
                                    [0 1 2] X + [0]                        
                                    [0 0 0]     [0]                        
                                 >= [1 2 4]     [0]                        
                                    [0 1 2] X + [0]                        
                                    [0 0 0]     [0]                        
                                 =  a__from(mark(X))                       
        
                     mark(nil()) =  [0]                                    
                                    [0]                                    
                                    [0]                                    
                                 >= [0]                                    
                                    [0]                                    
                                    [0]                                    
                                 =  nil()                                  
        
                      mark(s(X)) =  [1 1 3]     [2]                        
                                    [0 1 2] X + [2]                        
                                    [0 0 0]     [0]                        
                                 >= [1 1 2]     [0]                        
                                    [0 1 2] X + [2]                        
                                    [0 0 0]     [0]                        
                                 =  s(mark(X))                             
        
* Step 8: NaturalMI WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict TRS:
            mark(0()) -> 0()
            mark(cons(X1,X2)) -> cons(mark(X1),X2)
            mark(nil()) -> nil()
        - Weak TRS:
            a__first(X1,X2) -> first(X1,X2)
            a__first(0(),X) -> nil()
            a__first(s(X),cons(Y,Z)) -> cons(mark(Y),first(X,Z))
            a__from(X) -> cons(mark(X),from(s(X)))
            a__from(X) -> from(X)
            mark(first(X1,X2)) -> a__first(mark(X1),mark(X2))
            mark(from(X)) -> a__from(mark(X))
            mark(s(X)) -> s(mark(X))
        - Signature:
            {a__first/2,a__from/1,mark/1} / {0/0,cons/2,first/2,from/1,nil/0,s/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {a__first,a__from,mark} and constructors {0,cons,first
            ,from,nil,s}
    + Applied Processor:
        NaturalMI {miDimension = 3, miDegree = 3, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules}
    + Details:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(a__first) = {1,2},
          uargs(a__from) = {1},
          uargs(cons) = {1},
          uargs(s) = {1}
        
        Following symbols are considered usable:
          {a__first,a__from,mark}
        TcT has computed the following interpretation:
                 p(0) = [0]                          
                        [0]                          
                        [2]                          
          p(a__first) = [1 0 2]      [1 0 2]      [0]
                        [2 0 0] x1 + [2 0 0] x2 + [0]
                        [0 0 1]      [0 0 1]      [0]
           p(a__from) = [1 0 2]      [0]             
                        [2 0 0] x1 + [0]             
                        [0 0 1]      [0]             
              p(cons) = [1 0 0]      [0 2 0]      [0]
                        [0 0 0] x1 + [0 0 0] x2 + [0]
                        [0 0 1]      [0 0 0]      [0]
             p(first) = [1 0 2]      [1 0 2]      [0]
                        [0 0 0] x1 + [0 0 0] x2 + [0]
                        [0 0 1]      [0 0 1]      [0]
              p(from) = [1 0 2]      [0]             
                        [0 0 0] x1 + [0]             
                        [0 0 1]      [0]             
              p(mark) = [1 0 2]      [0]             
                        [2 0 0] x1 + [0]             
                        [0 0 1]      [0]             
               p(nil) = [0]                          
                        [0]                          
                        [0]                          
                 p(s) = [1 0 1]      [3]             
                        [0 0 2] x1 + [3]             
                        [0 0 1]      [1]             
        
        Following rules are strictly oriented:
        mark(0()) = [4]
                    [0]
                    [2]
                  > [0]
                    [0]
                    [2]
                  = 0()
        
        
        Following rules are (at-least) weakly oriented:
                 a__first(X1,X2) =  [1 0 2]      [1 0 2]      [0]          
                                    [2 0 0] X1 + [2 0 0] X2 + [0]          
                                    [0 0 1]      [0 0 1]      [0]          
                                 >= [1 0 2]      [1 0 2]      [0]          
                                    [0 0 0] X1 + [0 0 0] X2 + [0]          
                                    [0 0 1]      [0 0 1]      [0]          
                                 =  first(X1,X2)                           
        
                 a__first(0(),X) =  [1 0 2]     [4]                        
                                    [2 0 0] X + [0]                        
                                    [0 0 1]     [2]                        
                                 >= [0]                                    
                                    [0]                                    
                                    [0]                                    
                                 =  nil()                                  
        
        a__first(s(X),cons(Y,Z)) =  [1 0 3]     [1 0 2]     [0 2 0]     [5]
                                    [2 0 2] X + [2 0 0] Y + [0 4 0] Z + [6]
                                    [0 0 1]     [0 0 1]     [0 0 0]     [1]
                                 >= [1 0 2]     [0]                        
                                    [0 0 0] Y + [0]                        
                                    [0 0 1]     [0]                        
                                 =  cons(mark(Y),first(X,Z))               
        
                      a__from(X) =  [1 0 2]     [0]                        
                                    [2 0 0] X + [0]                        
                                    [0 0 1]     [0]                        
                                 >= [1 0 2]     [0]                        
                                    [0 0 0] X + [0]                        
                                    [0 0 1]     [0]                        
                                 =  cons(mark(X),from(s(X)))               
        
                      a__from(X) =  [1 0 2]     [0]                        
                                    [2 0 0] X + [0]                        
                                    [0 0 1]     [0]                        
                                 >= [1 0 2]     [0]                        
                                    [0 0 0] X + [0]                        
                                    [0 0 1]     [0]                        
                                 =  from(X)                                
        
               mark(cons(X1,X2)) =  [1 0 2]      [0 2 0]      [0]          
                                    [2 0 0] X1 + [0 4 0] X2 + [0]          
                                    [0 0 1]      [0 0 0]      [0]          
                                 >= [1 0 2]      [0 2 0]      [0]          
                                    [0 0 0] X1 + [0 0 0] X2 + [0]          
                                    [0 0 1]      [0 0 0]      [0]          
                                 =  cons(mark(X1),X2)                      
        
              mark(first(X1,X2)) =  [1 0 4]      [1 0 4]      [0]          
                                    [2 0 4] X1 + [2 0 4] X2 + [0]          
                                    [0 0 1]      [0 0 1]      [0]          
                                 >= [1 0 4]      [1 0 4]      [0]          
                                    [2 0 4] X1 + [2 0 4] X2 + [0]          
                                    [0 0 1]      [0 0 1]      [0]          
                                 =  a__first(mark(X1),mark(X2))            
        
                   mark(from(X)) =  [1 0 4]     [0]                        
                                    [2 0 4] X + [0]                        
                                    [0 0 1]     [0]                        
                                 >= [1 0 4]     [0]                        
                                    [2 0 4] X + [0]                        
                                    [0 0 1]     [0]                        
                                 =  a__from(mark(X))                       
        
                     mark(nil()) =  [0]                                    
                                    [0]                                    
                                    [0]                                    
                                 >= [0]                                    
                                    [0]                                    
                                    [0]                                    
                                 =  nil()                                  
        
                      mark(s(X)) =  [1 0 3]     [5]                        
                                    [2 0 2] X + [6]                        
                                    [0 0 1]     [1]                        
                                 >= [1 0 3]     [3]                        
                                    [0 0 2] X + [3]                        
                                    [0 0 1]     [1]                        
                                 =  s(mark(X))                             
        
* Step 9: NaturalMI WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict TRS:
            mark(cons(X1,X2)) -> cons(mark(X1),X2)
            mark(nil()) -> nil()
        - Weak TRS:
            a__first(X1,X2) -> first(X1,X2)
            a__first(0(),X) -> nil()
            a__first(s(X),cons(Y,Z)) -> cons(mark(Y),first(X,Z))
            a__from(X) -> cons(mark(X),from(s(X)))
            a__from(X) -> from(X)
            mark(0()) -> 0()
            mark(first(X1,X2)) -> a__first(mark(X1),mark(X2))
            mark(from(X)) -> a__from(mark(X))
            mark(s(X)) -> s(mark(X))
        - Signature:
            {a__first/2,a__from/1,mark/1} / {0/0,cons/2,first/2,from/1,nil/0,s/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {a__first,a__from,mark} and constructors {0,cons,first
            ,from,nil,s}
    + Applied Processor:
        NaturalMI {miDimension = 3, miDegree = 3, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules}
    + Details:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(a__first) = {1,2},
          uargs(a__from) = {1},
          uargs(cons) = {1},
          uargs(s) = {1}
        
        Following symbols are considered usable:
          {a__first,a__from,mark}
        TcT has computed the following interpretation:
                 p(0) = [0]                          
                        [3]                          
                        [0]                          
          p(a__first) = [1 1 0]      [1 1 0]      [0]
                        [0 1 0] x1 + [0 1 0] x2 + [0]
                        [0 0 0]      [0 0 0]      [2]
           p(a__from) = [1 1 0]      [0]             
                        [0 1 0] x1 + [0]             
                        [0 0 0]      [0]             
              p(cons) = [1 0 0]      [0]             
                        [0 1 0] x1 + [0]             
                        [0 0 0]      [0]             
             p(first) = [1 1 0]      [1 1 0]      [0]
                        [0 1 0] x1 + [0 1 0] x2 + [0]
                        [0 0 0]      [0 0 0]      [1]
              p(from) = [1 1 0]      [0]             
                        [0 1 0] x1 + [0]             
                        [0 0 0]      [0]             
              p(mark) = [1 1 0]      [0]             
                        [0 1 0] x1 + [0]             
                        [0 2 2]      [0]             
               p(nil) = [0]                          
                        [2]                          
                        [0]                          
                 p(s) = [1 3 0]      [3]             
                        [0 1 0] x1 + [0]             
                        [0 0 1]      [2]             
        
        Following rules are strictly oriented:
        mark(nil()) = [2]  
                      [2]  
                      [4]  
                    > [0]  
                      [2]  
                      [0]  
                    = nil()
        
        
        Following rules are (at-least) weakly oriented:
                 a__first(X1,X2) =  [1 1 0]      [1 1 0]      [0]
                                    [0 1 0] X1 + [0 1 0] X2 + [0]
                                    [0 0 0]      [0 0 0]      [2]
                                 >= [1 1 0]      [1 1 0]      [0]
                                    [0 1 0] X1 + [0 1 0] X2 + [0]
                                    [0 0 0]      [0 0 0]      [1]
                                 =  first(X1,X2)                 
        
                 a__first(0(),X) =  [1 1 0]     [3]              
                                    [0 1 0] X + [3]              
                                    [0 0 0]     [2]              
                                 >= [0]                          
                                    [2]                          
                                    [0]                          
                                 =  nil()                        
        
        a__first(s(X),cons(Y,Z)) =  [1 4 0]     [1 1 0]     [3]  
                                    [0 1 0] X + [0 1 0] Y + [0]  
                                    [0 0 0]     [0 0 0]     [2]  
                                 >= [1 1 0]     [0]              
                                    [0 1 0] Y + [0]              
                                    [0 0 0]     [0]              
                                 =  cons(mark(Y),first(X,Z))     
        
                      a__from(X) =  [1 1 0]     [0]              
                                    [0 1 0] X + [0]              
                                    [0 0 0]     [0]              
                                 >= [1 1 0]     [0]              
                                    [0 1 0] X + [0]              
                                    [0 0 0]     [0]              
                                 =  cons(mark(X),from(s(X)))     
        
                      a__from(X) =  [1 1 0]     [0]              
                                    [0 1 0] X + [0]              
                                    [0 0 0]     [0]              
                                 >= [1 1 0]     [0]              
                                    [0 1 0] X + [0]              
                                    [0 0 0]     [0]              
                                 =  from(X)                      
        
                       mark(0()) =  [3]                          
                                    [3]                          
                                    [6]                          
                                 >= [0]                          
                                    [3]                          
                                    [0]                          
                                 =  0()                          
        
               mark(cons(X1,X2)) =  [1 1 0]      [0]             
                                    [0 1 0] X1 + [0]             
                                    [0 2 0]      [0]             
                                 >= [1 1 0]      [0]             
                                    [0 1 0] X1 + [0]             
                                    [0 0 0]      [0]             
                                 =  cons(mark(X1),X2)            
        
              mark(first(X1,X2)) =  [1 2 0]      [1 2 0]      [0]
                                    [0 1 0] X1 + [0 1 0] X2 + [0]
                                    [0 2 0]      [0 2 0]      [2]
                                 >= [1 2 0]      [1 2 0]      [0]
                                    [0 1 0] X1 + [0 1 0] X2 + [0]
                                    [0 0 0]      [0 0 0]      [2]
                                 =  a__first(mark(X1),mark(X2))  
        
                   mark(from(X)) =  [1 2 0]     [0]              
                                    [0 1 0] X + [0]              
                                    [0 2 0]     [0]              
                                 >= [1 2 0]     [0]              
                                    [0 1 0] X + [0]              
                                    [0 0 0]     [0]              
                                 =  a__from(mark(X))             
        
                      mark(s(X)) =  [1 4 0]     [3]              
                                    [0 1 0] X + [0]              
                                    [0 2 2]     [4]              
                                 >= [1 4 0]     [3]              
                                    [0 1 0] X + [0]              
                                    [0 2 2]     [2]              
                                 =  s(mark(X))                   
        
* Step 10: NaturalMI WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict TRS:
            mark(cons(X1,X2)) -> cons(mark(X1),X2)
        - Weak TRS:
            a__first(X1,X2) -> first(X1,X2)
            a__first(0(),X) -> nil()
            a__first(s(X),cons(Y,Z)) -> cons(mark(Y),first(X,Z))
            a__from(X) -> cons(mark(X),from(s(X)))
            a__from(X) -> from(X)
            mark(0()) -> 0()
            mark(first(X1,X2)) -> a__first(mark(X1),mark(X2))
            mark(from(X)) -> a__from(mark(X))
            mark(nil()) -> nil()
            mark(s(X)) -> s(mark(X))
        - Signature:
            {a__first/2,a__from/1,mark/1} / {0/0,cons/2,first/2,from/1,nil/0,s/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {a__first,a__from,mark} and constructors {0,cons,first
            ,from,nil,s}
    + Applied Processor:
        NaturalMI {miDimension = 3, miDegree = 3, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules}
    + Details:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(a__first) = {1,2},
          uargs(a__from) = {1},
          uargs(cons) = {1},
          uargs(s) = {1}
        
        Following symbols are considered usable:
          {a__first,a__from,mark}
        TcT has computed the following interpretation:
                 p(0) = [2]                          
                        [0]                          
                        [1]                          
          p(a__first) = [1 0 0]      [1 0 2]      [0]
                        [0 1 0] x1 + [0 1 0] x2 + [2]
                        [0 0 1]      [0 0 1]      [2]
           p(a__from) = [1 2 2]      [3]             
                        [0 0 1] x1 + [2]             
                        [0 0 1]      [2]             
              p(cons) = [1 2 0]      [0]             
                        [0 0 1] x1 + [2]             
                        [0 0 1]      [2]             
             p(first) = [1 0 0]      [1 0 2]      [0]
                        [0 1 0] x1 + [0 1 0] x2 + [1]
                        [0 0 1]      [0 0 1]      [2]
              p(from) = [1 2 2]      [3]             
                        [0 0 1] x1 + [0]             
                        [0 0 1]      [2]             
              p(mark) = [1 2 0]      [2]             
                        [0 0 1] x1 + [0]             
                        [0 0 1]      [0]             
               p(nil) = [0]                          
                        [0]                          
                        [3]                          
                 p(s) = [1 2 2]      [0]             
                        [0 0 1] x1 + [0]             
                        [0 0 1]      [0]             
        
        Following rules are strictly oriented:
        mark(cons(X1,X2)) = [1 2 2]      [6] 
                            [0 0 1] X1 + [2] 
                            [0 0 1]      [2] 
                          > [1 2 2]      [2] 
                            [0 0 1] X1 + [2] 
                            [0 0 1]      [2] 
                          = cons(mark(X1),X2)
        
        
        Following rules are (at-least) weakly oriented:
                 a__first(X1,X2) =  [1 0 0]      [1 0 2]      [0]
                                    [0 1 0] X1 + [0 1 0] X2 + [2]
                                    [0 0 1]      [0 0 1]      [2]
                                 >= [1 0 0]      [1 0 2]      [0]
                                    [0 1 0] X1 + [0 1 0] X2 + [1]
                                    [0 0 1]      [0 0 1]      [2]
                                 =  first(X1,X2)                 
        
                 a__first(0(),X) =  [1 0 2]     [2]              
                                    [0 1 0] X + [2]              
                                    [0 0 1]     [3]              
                                 >= [0]                          
                                    [0]                          
                                    [3]                          
                                 =  nil()                        
        
        a__first(s(X),cons(Y,Z)) =  [1 2 2]     [1 2 2]     [4]  
                                    [0 0 1] X + [0 0 1] Y + [4]  
                                    [0 0 1]     [0 0 1]     [4]  
                                 >= [1 2 2]     [2]              
                                    [0 0 1] Y + [2]              
                                    [0 0 1]     [2]              
                                 =  cons(mark(Y),first(X,Z))     
        
                      a__from(X) =  [1 2 2]     [3]              
                                    [0 0 1] X + [2]              
                                    [0 0 1]     [2]              
                                 >= [1 2 2]     [2]              
                                    [0 0 1] X + [2]              
                                    [0 0 1]     [2]              
                                 =  cons(mark(X),from(s(X)))     
        
                      a__from(X) =  [1 2 2]     [3]              
                                    [0 0 1] X + [2]              
                                    [0 0 1]     [2]              
                                 >= [1 2 2]     [3]              
                                    [0 0 1] X + [0]              
                                    [0 0 1]     [2]              
                                 =  from(X)                      
        
                       mark(0()) =  [4]                          
                                    [1]                          
                                    [1]                          
                                 >= [2]                          
                                    [0]                          
                                    [1]                          
                                 =  0()                          
        
              mark(first(X1,X2)) =  [1 2 0]      [1 2 2]      [4]
                                    [0 0 1] X1 + [0 0 1] X2 + [2]
                                    [0 0 1]      [0 0 1]      [2]
                                 >= [1 2 0]      [1 2 2]      [4]
                                    [0 0 1] X1 + [0 0 1] X2 + [2]
                                    [0 0 1]      [0 0 1]      [2]
                                 =  a__first(mark(X1),mark(X2))  
        
                   mark(from(X)) =  [1 2 4]     [5]              
                                    [0 0 1] X + [2]              
                                    [0 0 1]     [2]              
                                 >= [1 2 4]     [5]              
                                    [0 0 1] X + [2]              
                                    [0 0 1]     [2]              
                                 =  a__from(mark(X))             
        
                     mark(nil()) =  [2]                          
                                    [3]                          
                                    [3]                          
                                 >= [0]                          
                                    [0]                          
                                    [3]                          
                                 =  nil()                        
        
                      mark(s(X)) =  [1 2 4]     [2]              
                                    [0 0 1] X + [0]              
                                    [0 0 1]     [0]              
                                 >= [1 2 4]     [2]              
                                    [0 0 1] X + [0]              
                                    [0 0 1]     [0]              
                                 =  s(mark(X))                   
        
* Step 11: EmptyProcessor WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak TRS:
            a__first(X1,X2) -> first(X1,X2)
            a__first(0(),X) -> nil()
            a__first(s(X),cons(Y,Z)) -> cons(mark(Y),first(X,Z))
            a__from(X) -> cons(mark(X),from(s(X)))
            a__from(X) -> from(X)
            mark(0()) -> 0()
            mark(cons(X1,X2)) -> cons(mark(X1),X2)
            mark(first(X1,X2)) -> a__first(mark(X1),mark(X2))
            mark(from(X)) -> a__from(mark(X))
            mark(nil()) -> nil()
            mark(s(X)) -> s(mark(X))
        - Signature:
            {a__first/2,a__from/1,mark/1} / {0/0,cons/2,first/2,from/1,nil/0,s/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {a__first,a__from,mark} and constructors {0,cons,first
            ,from,nil,s}
    + Applied Processor:
        EmptyProcessor
    + Details:
        The problem is already closed. The intended complexity is O(1).

WORST_CASE(?,O(n^3))