WORST_CASE(?,O(n^2))
* Step 1: WeightGap WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            eq(0(),0()) -> true()
            eq(0(),s(X)) -> false()
            eq(s(X),0()) -> false()
            eq(s(X),s(Y)) -> eq(X,Y)
            ifrm(false(),N,add(M,X)) -> add(M,rm(N,X))
            ifrm(true(),N,add(M,X)) -> rm(N,X)
            purge(add(N,X)) -> add(N,purge(rm(N,X)))
            purge(nil()) -> nil()
            rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X))
            rm(N,nil()) -> nil()
        - Signature:
            {eq/2,ifrm/3,purge/1,rm/2} / {0/0,add/2,false/0,nil/0,s/1,true/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {eq,ifrm,purge,rm} and constructors {0,add,false,nil,s
            ,true}
    + Applied Processor:
        WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    + Details:
        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(add) = {2},
            uargs(ifrm) = {1},
            uargs(purge) = {1}
          
          Following symbols are considered usable:
            all
          TcT has computed the following interpretation:
                p(0) = [0]                  
              p(add) = [1] x1 + [1] x2 + [0]
               p(eq) = [0]                  
            p(false) = [5]                  
             p(ifrm) = [1] x1 + [1] x3 + [0]
              p(nil) = [0]                  
            p(purge) = [1] x1 + [0]         
               p(rm) = [1] x2 + [1]         
                p(s) = [1] x1 + [0]         
             p(true) = [0]                  
          
          Following rules are strictly oriented:
          ifrm(false(),N,add(M,X)) = [1] M + [1] X + [5]     
                                   > [1] M + [1] X + [1]     
                                   = add(M,rm(N,X))          
          
                    rm(N,add(M,X)) = [1] M + [1] X + [1]     
                                   > [1] M + [1] X + [0]     
                                   = ifrm(eq(N,M),N,add(M,X))
          
                       rm(N,nil()) = [1]                     
                                   > [0]                     
                                   = nil()                   
          
          
          Following rules are (at-least) weakly oriented:
                      eq(0(),0()) =  [0]                  
                                  >= [0]                  
                                  =  true()               
          
                     eq(0(),s(X)) =  [0]                  
                                  >= [5]                  
                                  =  false()              
          
                     eq(s(X),0()) =  [0]                  
                                  >= [5]                  
                                  =  false()              
          
                    eq(s(X),s(Y)) =  [0]                  
                                  >= [0]                  
                                  =  eq(X,Y)              
          
          ifrm(true(),N,add(M,X)) =  [1] M + [1] X + [0]  
                                  >= [1] X + [1]          
                                  =  rm(N,X)              
          
                  purge(add(N,X)) =  [1] N + [1] X + [0]  
                                  >= [1] N + [1] X + [1]  
                                  =  add(N,purge(rm(N,X)))
          
                     purge(nil()) =  [0]                  
                                  >= [0]                  
                                  =  nil()                
          
        Further, it can be verified that all rules not oriented are covered by the weightgap condition.
* Step 2: WeightGap WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            eq(0(),0()) -> true()
            eq(0(),s(X)) -> false()
            eq(s(X),0()) -> false()
            eq(s(X),s(Y)) -> eq(X,Y)
            ifrm(true(),N,add(M,X)) -> rm(N,X)
            purge(add(N,X)) -> add(N,purge(rm(N,X)))
            purge(nil()) -> nil()
        - Weak TRS:
            ifrm(false(),N,add(M,X)) -> add(M,rm(N,X))
            rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X))
            rm(N,nil()) -> nil()
        - Signature:
            {eq/2,ifrm/3,purge/1,rm/2} / {0/0,add/2,false/0,nil/0,s/1,true/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {eq,ifrm,purge,rm} and constructors {0,add,false,nil,s
            ,true}
    + Applied Processor:
        WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    + Details:
        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(add) = {2},
            uargs(ifrm) = {1},
            uargs(purge) = {1}
          
          Following symbols are considered usable:
            all
          TcT has computed the following interpretation:
                p(0) = [1]          
              p(add) = [1] x2 + [0] 
               p(eq) = [4]          
            p(false) = [8]          
             p(ifrm) = [1] x1 + [0] 
              p(nil) = [4]          
            p(purge) = [1] x1 + [10]
               p(rm) = [4]          
                p(s) = [1] x1 + [8] 
             p(true) = [8]          
          
          Following rules are strictly oriented:
          ifrm(true(),N,add(M,X)) = [8]    
                                  > [4]    
                                  = rm(N,X)
          
                     purge(nil()) = [14]   
                                  > [4]    
                                  = nil()  
          
          
          Following rules are (at-least) weakly oriented:
                       eq(0(),0()) =  [4]                     
                                   >= [8]                     
                                   =  true()                  
          
                      eq(0(),s(X)) =  [4]                     
                                   >= [8]                     
                                   =  false()                 
          
                      eq(s(X),0()) =  [4]                     
                                   >= [8]                     
                                   =  false()                 
          
                     eq(s(X),s(Y)) =  [4]                     
                                   >= [4]                     
                                   =  eq(X,Y)                 
          
          ifrm(false(),N,add(M,X)) =  [8]                     
                                   >= [4]                     
                                   =  add(M,rm(N,X))          
          
                   purge(add(N,X)) =  [1] X + [10]            
                                   >= [14]                    
                                   =  add(N,purge(rm(N,X)))   
          
                    rm(N,add(M,X)) =  [4]                     
                                   >= [4]                     
                                   =  ifrm(eq(N,M),N,add(M,X))
          
                       rm(N,nil()) =  [4]                     
                                   >= [4]                     
                                   =  nil()                   
          
        Further, it can be verified that all rules not oriented are covered by the weightgap condition.
* Step 3: WeightGap WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            eq(0(),0()) -> true()
            eq(0(),s(X)) -> false()
            eq(s(X),0()) -> false()
            eq(s(X),s(Y)) -> eq(X,Y)
            purge(add(N,X)) -> add(N,purge(rm(N,X)))
        - Weak TRS:
            ifrm(false(),N,add(M,X)) -> add(M,rm(N,X))
            ifrm(true(),N,add(M,X)) -> rm(N,X)
            purge(nil()) -> nil()
            rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X))
            rm(N,nil()) -> nil()
        - Signature:
            {eq/2,ifrm/3,purge/1,rm/2} / {0/0,add/2,false/0,nil/0,s/1,true/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {eq,ifrm,purge,rm} and constructors {0,add,false,nil,s
            ,true}
    + Applied Processor:
        WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    + Details:
        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(add) = {2},
            uargs(ifrm) = {1},
            uargs(purge) = {1}
          
          Following symbols are considered usable:
            all
          TcT has computed the following interpretation:
                p(0) = [0]                  
              p(add) = [1] x2 + [4]         
               p(eq) = [2]                  
            p(false) = [2]                  
             p(ifrm) = [1] x1 + [1] x3 + [0]
              p(nil) = [0]                  
            p(purge) = [1] x1 + [1]         
               p(rm) = [1] x2 + [2]         
                p(s) = [0]                  
             p(true) = [0]                  
          
          Following rules are strictly oriented:
          eq(0(),0()) = [2]   
                      > [0]   
                      = true()
          
          
          Following rules are (at-least) weakly oriented:
                      eq(0(),s(X)) =  [2]                     
                                   >= [2]                     
                                   =  false()                 
          
                      eq(s(X),0()) =  [2]                     
                                   >= [2]                     
                                   =  false()                 
          
                     eq(s(X),s(Y)) =  [2]                     
                                   >= [2]                     
                                   =  eq(X,Y)                 
          
          ifrm(false(),N,add(M,X)) =  [1] X + [6]             
                                   >= [1] X + [6]             
                                   =  add(M,rm(N,X))          
          
           ifrm(true(),N,add(M,X)) =  [1] X + [4]             
                                   >= [1] X + [2]             
                                   =  rm(N,X)                 
          
                   purge(add(N,X)) =  [1] X + [5]             
                                   >= [1] X + [7]             
                                   =  add(N,purge(rm(N,X)))   
          
                      purge(nil()) =  [1]                     
                                   >= [0]                     
                                   =  nil()                   
          
                    rm(N,add(M,X)) =  [1] X + [6]             
                                   >= [1] X + [6]             
                                   =  ifrm(eq(N,M),N,add(M,X))
          
                       rm(N,nil()) =  [2]                     
                                   >= [0]                     
                                   =  nil()                   
          
        Further, it can be verified that all rules not oriented are covered by the weightgap condition.
* Step 4: NaturalMI WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            eq(0(),s(X)) -> false()
            eq(s(X),0()) -> false()
            eq(s(X),s(Y)) -> eq(X,Y)
            purge(add(N,X)) -> add(N,purge(rm(N,X)))
        - Weak TRS:
            eq(0(),0()) -> true()
            ifrm(false(),N,add(M,X)) -> add(M,rm(N,X))
            ifrm(true(),N,add(M,X)) -> rm(N,X)
            purge(nil()) -> nil()
            rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X))
            rm(N,nil()) -> nil()
        - Signature:
            {eq/2,ifrm/3,purge/1,rm/2} / {0/0,add/2,false/0,nil/0,s/1,true/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {eq,ifrm,purge,rm} and constructors {0,add,false,nil,s
            ,true}
    + 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(add) = {2},
          uargs(ifrm) = {1},
          uargs(purge) = {1}
        
        Following symbols are considered usable:
          {eq,ifrm,purge,rm}
        TcT has computed the following interpretation:
              p(0) = [0]                  
            p(add) = [1] x2 + [8]         
             p(eq) = [0]                  
          p(false) = [0]                  
           p(ifrm) = [8] x1 + [1] x3 + [0]
            p(nil) = [2]                  
          p(purge) = [2] x1 + [0]         
             p(rm) = [1] x2 + [0]         
              p(s) = [0]                  
           p(true) = [0]                  
        
        Following rules are strictly oriented:
        purge(add(N,X)) = [2] X + [16]         
                        > [2] X + [8]          
                        = add(N,purge(rm(N,X)))
        
        
        Following rules are (at-least) weakly oriented:
                     eq(0(),0()) =  [0]                     
                                 >= [0]                     
                                 =  true()                  
        
                    eq(0(),s(X)) =  [0]                     
                                 >= [0]                     
                                 =  false()                 
        
                    eq(s(X),0()) =  [0]                     
                                 >= [0]                     
                                 =  false()                 
        
                   eq(s(X),s(Y)) =  [0]                     
                                 >= [0]                     
                                 =  eq(X,Y)                 
        
        ifrm(false(),N,add(M,X)) =  [1] X + [8]             
                                 >= [1] X + [8]             
                                 =  add(M,rm(N,X))          
        
         ifrm(true(),N,add(M,X)) =  [1] X + [8]             
                                 >= [1] X + [0]             
                                 =  rm(N,X)                 
        
                    purge(nil()) =  [4]                     
                                 >= [2]                     
                                 =  nil()                   
        
                  rm(N,add(M,X)) =  [1] X + [8]             
                                 >= [1] X + [8]             
                                 =  ifrm(eq(N,M),N,add(M,X))
        
                     rm(N,nil()) =  [2]                     
                                 >= [2]                     
                                 =  nil()                   
        
* Step 5: NaturalMI WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            eq(0(),s(X)) -> false()
            eq(s(X),0()) -> false()
            eq(s(X),s(Y)) -> eq(X,Y)
        - Weak TRS:
            eq(0(),0()) -> true()
            ifrm(false(),N,add(M,X)) -> add(M,rm(N,X))
            ifrm(true(),N,add(M,X)) -> rm(N,X)
            purge(add(N,X)) -> add(N,purge(rm(N,X)))
            purge(nil()) -> nil()
            rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X))
            rm(N,nil()) -> nil()
        - Signature:
            {eq/2,ifrm/3,purge/1,rm/2} / {0/0,add/2,false/0,nil/0,s/1,true/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {eq,ifrm,purge,rm} and constructors {0,add,false,nil,s
            ,true}
    + Applied Processor:
        NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules}
    + Details:
        We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 2 non-zero interpretation-entries in the diagonal of the component-wise maxima):
        The following argument positions are considered usable:
          uargs(add) = {2},
          uargs(ifrm) = {1},
          uargs(purge) = {1}
        
        Following symbols are considered usable:
          {eq,ifrm,purge,rm}
        TcT has computed the following interpretation:
              p(0) = [0]                                       
                     [0]                                       
                     [0]                                       
            p(add) = [1 0 0]      [1 0 2]      [0]             
                     [0 0 0] x1 + [0 0 2] x2 + [0]             
                     [0 0 1]      [0 0 1]      [2]             
             p(eq) = [0 0 0]      [1]                          
                     [0 0 0] x2 + [0]                          
                     [0 0 1]      [1]                          
          p(false) = [0]                                       
                     [0]                                       
                     [0]                                       
           p(ifrm) = [1 0 0]      [0 0 0]      [1 0 1]      [0]
                     [2 0 2] x1 + [0 0 1] x2 + [0 1 0] x3 + [0]
                     [0 0 0]      [0 0 0]      [0 0 1]      [0]
            p(nil) = [0]                                       
                     [0]                                       
                     [0]                                       
          p(purge) = [2 1 1]      [0]                          
                     [1 1 0] x1 + [1]                          
                     [0 0 1]      [0]                          
             p(rm) = [0 0 0]      [1 0 1]      [1]             
                     [0 0 1] x1 + [0 0 2] x2 + [0]             
                     [0 0 0]      [0 0 1]      [0]             
              p(s) = [0 0 0]      [0]                          
                     [0 0 0] x1 + [0]                          
                     [0 0 1]      [0]                          
           p(true) = [0]                                       
                     [0]                                       
                     [1]                                       
        
        Following rules are strictly oriented:
        eq(0(),s(X)) = [0 0 0]     [1]
                       [0 0 0] X + [0]
                       [0 0 1]     [1]
                     > [0]            
                       [0]            
                       [0]            
                     = false()        
        
        eq(s(X),0()) = [1]            
                       [0]            
                       [1]            
                     > [0]            
                       [0]            
                       [0]            
                     = false()        
        
        
        Following rules are (at-least) weakly oriented:
                     eq(0(),0()) =  [1]                                    
                                    [0]                                    
                                    [1]                                    
                                 >= [0]                                    
                                    [0]                                    
                                    [1]                                    
                                 =  true()                                 
        
                   eq(s(X),s(Y)) =  [0 0 0]     [1]                        
                                    [0 0 0] Y + [0]                        
                                    [0 0 1]     [1]                        
                                 >= [0 0 0]     [1]                        
                                    [0 0 0] Y + [0]                        
                                    [0 0 1]     [1]                        
                                 =  eq(X,Y)                                
        
        ifrm(false(),N,add(M,X)) =  [1 0 1]     [0 0 0]     [1 0 3]     [2]
                                    [0 0 0] M + [0 0 1] N + [0 0 2] X + [0]
                                    [0 0 1]     [0 0 0]     [0 0 1]     [2]
                                 >= [1 0 0]     [1 0 3]     [1]            
                                    [0 0 0] M + [0 0 2] X + [0]            
                                    [0 0 1]     [0 0 1]     [2]            
                                 =  add(M,rm(N,X))                         
        
         ifrm(true(),N,add(M,X)) =  [1 0 1]     [0 0 0]     [1 0 3]     [2]
                                    [0 0 0] M + [0 0 1] N + [0 0 2] X + [2]
                                    [0 0 1]     [0 0 0]     [0 0 1]     [2]
                                 >= [0 0 0]     [1 0 1]     [1]            
                                    [0 0 1] N + [0 0 2] X + [0]            
                                    [0 0 0]     [0 0 1]     [0]            
                                 =  rm(N,X)                                
        
                 purge(add(N,X)) =  [2 0 1]     [2 0 7]     [2]            
                                    [1 0 0] N + [1 0 4] X + [1]            
                                    [0 0 1]     [0 0 1]     [2]            
                                 >= [1 0 1]     [2 0 7]     [2]            
                                    [0 0 0] N + [0 0 2] X + [0]            
                                    [0 0 1]     [0 0 1]     [2]            
                                 =  add(N,purge(rm(N,X)))                  
        
                    purge(nil()) =  [0]                                    
                                    [1]                                    
                                    [0]                                    
                                 >= [0]                                    
                                    [0]                                    
                                    [0]                                    
                                 =  nil()                                  
        
                  rm(N,add(M,X)) =  [1 0 1]     [0 0 0]     [1 0 3]     [3]
                                    [0 0 2] M + [0 0 1] N + [0 0 2] X + [4]
                                    [0 0 1]     [0 0 0]     [0 0 1]     [2]
                                 >= [1 0 1]     [0 0 0]     [1 0 3]     [3]
                                    [0 0 2] M + [0 0 1] N + [0 0 2] X + [4]
                                    [0 0 1]     [0 0 0]     [0 0 1]     [2]
                                 =  ifrm(eq(N,M),N,add(M,X))               
        
                     rm(N,nil()) =  [0 0 0]     [1]                        
                                    [0 0 1] N + [0]                        
                                    [0 0 0]     [0]                        
                                 >= [0]                                    
                                    [0]                                    
                                    [0]                                    
                                 =  nil()                                  
        
* Step 6: NaturalMI WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            eq(s(X),s(Y)) -> eq(X,Y)
        - Weak TRS:
            eq(0(),0()) -> true()
            eq(0(),s(X)) -> false()
            eq(s(X),0()) -> false()
            ifrm(false(),N,add(M,X)) -> add(M,rm(N,X))
            ifrm(true(),N,add(M,X)) -> rm(N,X)
            purge(add(N,X)) -> add(N,purge(rm(N,X)))
            purge(nil()) -> nil()
            rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X))
            rm(N,nil()) -> nil()
        - Signature:
            {eq/2,ifrm/3,purge/1,rm/2} / {0/0,add/2,false/0,nil/0,s/1,true/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {eq,ifrm,purge,rm} and constructors {0,add,false,nil,s
            ,true}
    + Applied Processor:
        NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules}
    + Details:
        We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 2 non-zero interpretation-entries in the diagonal of the component-wise maxima):
        The following argument positions are considered usable:
          uargs(add) = {2},
          uargs(ifrm) = {1},
          uargs(purge) = {1}
        
        Following symbols are considered usable:
          {eq,ifrm,purge,rm}
        TcT has computed the following interpretation:
              p(0) = [1]                                       
                     [0]                                       
                     [0]                                       
            p(add) = [0 0 0]      [1 0 2]      [0]             
                     [0 0 0] x1 + [0 0 1] x2 + [0]             
                     [0 0 1]      [0 0 1]      [0]             
             p(eq) = [0 0 0]      [0 0 1]      [0]             
                     [2 0 0] x1 + [2 3 0] x2 + [0]             
                     [1 0 0]      [2 1 0]      [1]             
          p(false) = [0]                                       
                     [2]                                       
                     [0]                                       
           p(ifrm) = [1 0 0]      [0 0 0]      [1 1 0]      [0]
                     [0 0 0] x1 + [0 2 0] x2 + [0 0 1] x3 + [2]
                     [0 0 0]      [0 0 0]      [0 0 1]      [0]
            p(nil) = [2]                                       
                     [0]                                       
                     [0]                                       
          p(purge) = [2 0 2]      [0]                          
                     [0 0 2] x1 + [0]                          
                     [0 0 1]      [0]                          
             p(rm) = [0 0 0]      [1 0 1]      [0]             
                     [0 2 0] x1 + [0 0 1] x2 + [2]             
                     [0 0 0]      [0 0 1]      [0]             
              p(s) = [1 2 2]      [0]                          
                     [0 0 0] x1 + [1]                          
                     [0 0 1]      [2]                          
           p(true) = [0]                                       
                     [0]                                       
                     [0]                                       
        
        Following rules are strictly oriented:
        eq(s(X),s(Y)) = [0 0 0]     [0 0 1]     [2]
                        [2 4 4] X + [2 4 4] Y + [3]
                        [1 2 2]     [2 4 4]     [2]
                      > [0 0 0]     [0 0 1]     [0]
                        [2 0 0] X + [2 3 0] Y + [0]
                        [1 0 0]     [2 1 0]     [1]
                      = eq(X,Y)                    
        
        
        Following rules are (at-least) weakly oriented:
                     eq(0(),0()) =  [0]                                    
                                    [4]                                    
                                    [4]                                    
                                 >= [0]                                    
                                    [0]                                    
                                    [0]                                    
                                 =  true()                                 
        
                    eq(0(),s(X)) =  [0 0 1]     [2]                        
                                    [2 4 4] X + [5]                        
                                    [2 4 4]     [3]                        
                                 >= [0]                                    
                                    [2]                                    
                                    [0]                                    
                                 =  false()                                
        
                    eq(s(X),0()) =  [0 0 0]     [0]                        
                                    [2 4 4] X + [2]                        
                                    [1 2 2]     [3]                        
                                 >= [0]                                    
                                    [2]                                    
                                    [0]                                    
                                 =  false()                                
        
        ifrm(false(),N,add(M,X)) =  [0 0 0]     [0 0 0]     [1 0 3]     [0]
                                    [0 0 1] M + [0 2 0] N + [0 0 1] X + [2]
                                    [0 0 1]     [0 0 0]     [0 0 1]     [0]
                                 >= [0 0 0]     [1 0 3]     [0]            
                                    [0 0 0] M + [0 0 1] X + [0]            
                                    [0 0 1]     [0 0 1]     [0]            
                                 =  add(M,rm(N,X))                         
        
         ifrm(true(),N,add(M,X)) =  [0 0 0]     [0 0 0]     [1 0 3]     [0]
                                    [0 0 1] M + [0 2 0] N + [0 0 1] X + [2]
                                    [0 0 1]     [0 0 0]     [0 0 1]     [0]
                                 >= [0 0 0]     [1 0 1]     [0]            
                                    [0 2 0] N + [0 0 1] X + [2]            
                                    [0 0 0]     [0 0 1]     [0]            
                                 =  rm(N,X)                                
        
                 purge(add(N,X)) =  [0 0 2]     [2 0 6]     [0]            
                                    [0 0 2] N + [0 0 2] X + [0]            
                                    [0 0 1]     [0 0 1]     [0]            
                                 >= [0 0 0]     [2 0 6]     [0]            
                                    [0 0 0] N + [0 0 1] X + [0]            
                                    [0 0 1]     [0 0 1]     [0]            
                                 =  add(N,purge(rm(N,X)))                  
        
                    purge(nil()) =  [4]                                    
                                    [0]                                    
                                    [0]                                    
                                 >= [2]                                    
                                    [0]                                    
                                    [0]                                    
                                 =  nil()                                  
        
                  rm(N,add(M,X)) =  [0 0 1]     [0 0 0]     [1 0 3]     [0]
                                    [0 0 1] M + [0 2 0] N + [0 0 1] X + [2]
                                    [0 0 1]     [0 0 0]     [0 0 1]     [0]
                                 >= [0 0 1]     [0 0 0]     [1 0 3]     [0]
                                    [0 0 1] M + [0 2 0] N + [0 0 1] X + [2]
                                    [0 0 1]     [0 0 0]     [0 0 1]     [0]
                                 =  ifrm(eq(N,M),N,add(M,X))               
        
                     rm(N,nil()) =  [0 0 0]     [2]                        
                                    [0 2 0] N + [2]                        
                                    [0 0 0]     [0]                        
                                 >= [2]                                    
                                    [0]                                    
                                    [0]                                    
                                 =  nil()                                  
        
* Step 7: EmptyProcessor WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak TRS:
            eq(0(),0()) -> true()
            eq(0(),s(X)) -> false()
            eq(s(X),0()) -> false()
            eq(s(X),s(Y)) -> eq(X,Y)
            ifrm(false(),N,add(M,X)) -> add(M,rm(N,X))
            ifrm(true(),N,add(M,X)) -> rm(N,X)
            purge(add(N,X)) -> add(N,purge(rm(N,X)))
            purge(nil()) -> nil()
            rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X))
            rm(N,nil()) -> nil()
        - Signature:
            {eq/2,ifrm/3,purge/1,rm/2} / {0/0,add/2,false/0,nil/0,s/1,true/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {eq,ifrm,purge,rm} and constructors {0,add,false,nil,s
            ,true}
    + Applied Processor:
        EmptyProcessor
    + Details:
        The problem is already closed. The intended complexity is O(1).

WORST_CASE(?,O(n^2))