WORST_CASE(?,O(n^3))
* Step 1: DependencyPairs WORST_CASE(?,O(n^3))
    + 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:
        DependencyPairs {dpKind_ = DT}
    + Details:
        We add the following dependency tuples:
        
        Strict DPs
          eq#(0(),0()) -> c_1()
          eq#(0(),s(X)) -> c_2()
          eq#(s(X),0()) -> c_3()
          eq#(s(X),s(Y)) -> c_4(eq#(X,Y))
          ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X))
          ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X))
          purge#(add(N,X)) -> c_7(purge#(rm(N,X)),rm#(N,X))
          purge#(nil()) -> c_8()
          rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M))
          rm#(N,nil()) -> c_10()
        Weak DPs
          
        
        and mark the set of starting terms.
* Step 2: PredecessorEstimation WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict DPs:
            eq#(0(),0()) -> c_1()
            eq#(0(),s(X)) -> c_2()
            eq#(s(X),0()) -> c_3()
            eq#(s(X),s(Y)) -> c_4(eq#(X,Y))
            ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X))
            ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X))
            purge#(add(N,X)) -> c_7(purge#(rm(N,X)),rm#(N,X))
            purge#(nil()) -> c_8()
            rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M))
            rm#(N,nil()) -> c_10()
        - 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,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0
            ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/2,c_8/0,c_9/2,c_10/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {eq#,ifrm#,purge#,rm#} and constructors {0,add,false,nil,s
            ,true}
    + Applied Processor:
        PredecessorEstimation {onSelection = all simple predecessor estimation selector}
    + Details:
        We estimate the number of application of
          {1,2,3,8,10}
        by application of
          Pre({1,2,3,8,10}) = {4,5,6,7,9}.
        Here rules are labelled as follows:
          1: eq#(0(),0()) -> c_1()
          2: eq#(0(),s(X)) -> c_2()
          3: eq#(s(X),0()) -> c_3()
          4: eq#(s(X),s(Y)) -> c_4(eq#(X,Y))
          5: ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X))
          6: ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X))
          7: purge#(add(N,X)) -> c_7(purge#(rm(N,X)),rm#(N,X))
          8: purge#(nil()) -> c_8()
          9: rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M))
          10: rm#(N,nil()) -> c_10()
* Step 3: RemoveWeakSuffixes WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict DPs:
            eq#(s(X),s(Y)) -> c_4(eq#(X,Y))
            ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X))
            ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X))
            purge#(add(N,X)) -> c_7(purge#(rm(N,X)),rm#(N,X))
            rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M))
        - Weak DPs:
            eq#(0(),0()) -> c_1()
            eq#(0(),s(X)) -> c_2()
            eq#(s(X),0()) -> c_3()
            purge#(nil()) -> c_8()
            rm#(N,nil()) -> c_10()
        - 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,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0
            ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/2,c_8/0,c_9/2,c_10/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {eq#,ifrm#,purge#,rm#} and constructors {0,add,false,nil,s
            ,true}
    + Applied Processor:
        RemoveWeakSuffixes
    + Details:
        Consider the dependency graph
          1:S:eq#(s(X),s(Y)) -> c_4(eq#(X,Y))
             -->_1 eq#(s(X),0()) -> c_3():8
             -->_1 eq#(0(),s(X)) -> c_2():7
             -->_1 eq#(0(),0()) -> c_1():6
             -->_1 eq#(s(X),s(Y)) -> c_4(eq#(X,Y)):1
          
          2:S:ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X))
             -->_1 rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M)):5
             -->_1 rm#(N,nil()) -> c_10():10
          
          3:S:ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X))
             -->_1 rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M)):5
             -->_1 rm#(N,nil()) -> c_10():10
          
          4:S:purge#(add(N,X)) -> c_7(purge#(rm(N,X)),rm#(N,X))
             -->_2 rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M)):5
             -->_2 rm#(N,nil()) -> c_10():10
             -->_1 purge#(nil()) -> c_8():9
             -->_1 purge#(add(N,X)) -> c_7(purge#(rm(N,X)),rm#(N,X)):4
          
          5:S:rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M))
             -->_2 eq#(s(X),0()) -> c_3():8
             -->_2 eq#(0(),s(X)) -> c_2():7
             -->_2 eq#(0(),0()) -> c_1():6
             -->_1 ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X)):3
             -->_1 ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X)):2
             -->_2 eq#(s(X),s(Y)) -> c_4(eq#(X,Y)):1
          
          6:W:eq#(0(),0()) -> c_1()
             
          
          7:W:eq#(0(),s(X)) -> c_2()
             
          
          8:W:eq#(s(X),0()) -> c_3()
             
          
          9:W:purge#(nil()) -> c_8()
             
          
          10:W:rm#(N,nil()) -> c_10()
             
          
        The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
          9: purge#(nil()) -> c_8()
          10: rm#(N,nil()) -> c_10()
          6: eq#(0(),0()) -> c_1()
          7: eq#(0(),s(X)) -> c_2()
          8: eq#(s(X),0()) -> c_3()
* Step 4: UsableRules WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict DPs:
            eq#(s(X),s(Y)) -> c_4(eq#(X,Y))
            ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X))
            ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X))
            purge#(add(N,X)) -> c_7(purge#(rm(N,X)),rm#(N,X))
            rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M))
        - 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,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0
            ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/2,c_8/0,c_9/2,c_10/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {eq#,ifrm#,purge#,rm#} and constructors {0,add,false,nil,s
            ,true}
    + Applied Processor:
        UsableRules
    + Details:
        We replace rewrite rules by usable rules:
          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)
          rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X))
          rm(N,nil()) -> nil()
          eq#(s(X),s(Y)) -> c_4(eq#(X,Y))
          ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X))
          ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X))
          purge#(add(N,X)) -> c_7(purge#(rm(N,X)),rm#(N,X))
          rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M))
* Step 5: DecomposeDG WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict DPs:
            eq#(s(X),s(Y)) -> c_4(eq#(X,Y))
            ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X))
            ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X))
            purge#(add(N,X)) -> c_7(purge#(rm(N,X)),rm#(N,X))
            rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M))
        - 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)
            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,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0
            ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/2,c_8/0,c_9/2,c_10/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {eq#,ifrm#,purge#,rm#} and constructors {0,add,false,nil,s
            ,true}
    + Applied Processor:
        DecomposeDG {onSelection = all below first cut in WDG, onUpper = Nothing, onLower = Nothing}
    + Details:
        We decompose the input problem according to the dependency graph into the upper component
          purge#(add(N,X)) -> c_7(purge#(rm(N,X)),rm#(N,X))
        and a lower component
          eq#(s(X),s(Y)) -> c_4(eq#(X,Y))
          ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X))
          ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X))
          rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M))
        Further, following extension rules are added to the lower component.
          purge#(add(N,X)) -> purge#(rm(N,X))
          purge#(add(N,X)) -> rm#(N,X)
** Step 5.a:1: SimplifyRHS WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            purge#(add(N,X)) -> c_7(purge#(rm(N,X)),rm#(N,X))
        - 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)
            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,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0
            ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/2,c_8/0,c_9/2,c_10/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {eq#,ifrm#,purge#,rm#} and constructors {0,add,false,nil,s
            ,true}
    + Applied Processor:
        SimplifyRHS
    + Details:
        Consider the dependency graph
          1:S:purge#(add(N,X)) -> c_7(purge#(rm(N,X)),rm#(N,X))
             -->_1 purge#(add(N,X)) -> c_7(purge#(rm(N,X)),rm#(N,X)):1
          
        Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified:
          purge#(add(N,X)) -> c_7(purge#(rm(N,X)))
** Step 5.a:2: WeightGap WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            purge#(add(N,X)) -> c_7(purge#(rm(N,X)))
        - 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)
            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,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0
            ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/1,c_8/0,c_9/2,c_10/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 constant 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},
            uargs(c_7) = {1}
          
          Following symbols are considered usable:
            all
          TcT has computed the following interpretation:
                 p(0) = [4]                  
               p(add) = [1] x2 + [1]         
                p(eq) = [0]                  
             p(false) = [0]                  
              p(ifrm) = [1] x1 + [1] x3 + [0]
               p(nil) = [1]                  
             p(purge) = [4] x1 + [4]         
                p(rm) = [1] x2 + [0]         
                 p(s) = [2]                  
              p(true) = [0]                  
               p(eq#) = [0]                  
             p(ifrm#) = [1] x3 + [0]         
            p(purge#) = [1] x1 + [0]         
               p(rm#) = [1] x1 + [0]         
               p(c_1) = [4]                  
               p(c_2) = [0]                  
               p(c_3) = [0]                  
               p(c_4) = [1] x1 + [0]         
               p(c_5) = [1] x1 + [0]         
               p(c_6) = [4] x1 + [1]         
               p(c_7) = [1] x1 + [0]         
               p(c_8) = [1]                  
               p(c_9) = [4] x1 + [1] x2 + [0]
              p(c_10) = [1]                  
          
          Following rules are strictly oriented:
          purge#(add(N,X)) = [1] X + [1]         
                           > [1] X + [0]         
                           = c_7(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 + [1]             
                                   >= [1] X + [1]             
                                   =  add(M,rm(N,X))          
          
           ifrm(true(),N,add(M,X)) =  [1] X + [1]             
                                   >= [1] X + [0]             
                                   =  rm(N,X)                 
          
                    rm(N,add(M,X)) =  [1] X + [1]             
                                   >= [1] X + [1]             
                                   =  ifrm(eq(N,M),N,add(M,X))
          
                       rm(N,nil()) =  [1]                     
                                   >= [1]                     
                                   =  nil()                   
          
        Further, it can be verified that all rules not oriented are covered by the weightgap condition.
** Step 5.a:3: EmptyProcessor WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak DPs:
            purge#(add(N,X)) -> c_7(purge#(rm(N,X)))
        - 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)
            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,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0
            ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/1,c_8/0,c_9/2,c_10/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).

** Step 5.b:1: DecomposeDG WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict DPs:
            eq#(s(X),s(Y)) -> c_4(eq#(X,Y))
            ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X))
            ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X))
            rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M))
        - Weak DPs:
            purge#(add(N,X)) -> purge#(rm(N,X))
            purge#(add(N,X)) -> rm#(N,X)
        - 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)
            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,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0
            ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/2,c_8/0,c_9/2,c_10/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {eq#,ifrm#,purge#,rm#} and constructors {0,add,false,nil,s
            ,true}
    + Applied Processor:
        DecomposeDG {onSelection = all below first cut in WDG, onUpper = Nothing, onLower = Nothing}
    + Details:
        We decompose the input problem according to the dependency graph into the upper component
          ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X))
          ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X))
          purge#(add(N,X)) -> purge#(rm(N,X))
          purge#(add(N,X)) -> rm#(N,X)
          rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M))
        and a lower component
          eq#(s(X),s(Y)) -> c_4(eq#(X,Y))
        Further, following extension rules are added to the lower component.
          ifrm#(false(),N,add(M,X)) -> rm#(N,X)
          ifrm#(true(),N,add(M,X)) -> rm#(N,X)
          purge#(add(N,X)) -> purge#(rm(N,X))
          purge#(add(N,X)) -> rm#(N,X)
          rm#(N,add(M,X)) -> eq#(N,M)
          rm#(N,add(M,X)) -> ifrm#(eq(N,M),N,add(M,X))
*** Step 5.b:1.a:1: SimplifyRHS WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X))
            ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X))
            rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M))
        - Weak DPs:
            purge#(add(N,X)) -> purge#(rm(N,X))
            purge#(add(N,X)) -> rm#(N,X)
        - 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)
            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,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0
            ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/2,c_8/0,c_9/2,c_10/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {eq#,ifrm#,purge#,rm#} and constructors {0,add,false,nil,s
            ,true}
    + Applied Processor:
        SimplifyRHS
    + Details:
        Consider the dependency graph
          1:S:ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X))
             -->_1 rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M)):3
          
          2:S:ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X))
             -->_1 rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M)):3
          
          3:S:rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M))
             -->_1 ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X)):2
             -->_1 ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X)):1
          
          4:W:purge#(add(N,X)) -> purge#(rm(N,X))
             -->_1 purge#(add(N,X)) -> rm#(N,X):5
             -->_1 purge#(add(N,X)) -> purge#(rm(N,X)):4
          
          5:W:purge#(add(N,X)) -> rm#(N,X)
             -->_1 rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M)):3
          
        Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified:
          rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)))
*** Step 5.b:1.a:2: WeightGap WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X))
            ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X))
            rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)))
        - Weak DPs:
            purge#(add(N,X)) -> purge#(rm(N,X))
            purge#(add(N,X)) -> rm#(N,X)
        - 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)
            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,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0
            ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/2,c_8/0,c_9/1,c_10/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 constant 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(ifrm#) = {1},
            uargs(purge#) = {1},
            uargs(c_5) = {1},
            uargs(c_6) = {1},
            uargs(c_9) = {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) = [0]                           
              p(ifrm) = [1] x1 + [1] x2 + [1] x3 + [0]
               p(nil) = [5]                           
             p(purge) = [0]                           
                p(rm) = [1] x1 + [1] x2 + [0]         
                 p(s) = [1] x1 + [0]                  
              p(true) = [0]                           
               p(eq#) = [0]                           
             p(ifrm#) = [1] x1 + [0]                  
            p(purge#) = [1] x1 + [4]                  
               p(rm#) = [1]                           
               p(c_1) = [0]                           
               p(c_2) = [0]                           
               p(c_3) = [0]                           
               p(c_4) = [0]                           
               p(c_5) = [1] x1 + [0]                  
               p(c_6) = [1] x1 + [0]                  
               p(c_7) = [1] x1 + [1]                  
               p(c_8) = [0]                           
               p(c_9) = [1] x1 + [0]                  
              p(c_10) = [1]                           
          
          Following rules are strictly oriented:
          rm#(N,add(M,X)) = [1]                           
                          > [0]                           
                          = c_9(ifrm#(eq(N,M),N,add(M,X)))
          
          
          Following rules are (at-least) weakly oriented:
          ifrm#(false(),N,add(M,X)) =  [0]                        
                                    >= [1]                        
                                    =  c_5(rm#(N,X))              
          
           ifrm#(true(),N,add(M,X)) =  [0]                        
                                    >= [1]                        
                                    =  c_6(rm#(N,X))              
          
                   purge#(add(N,X)) =  [1] N + [1] X + [4]        
                                    >= [1] N + [1] X + [4]        
                                    =  purge#(rm(N,X))            
          
                   purge#(add(N,X)) =  [1] N + [1] X + [4]        
                                    >= [1]                        
                                    =  rm#(N,X)                   
          
                        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] M + [1] N + [1] X + [0]
                                    >= [1] M + [1] N + [1] X + [0]
                                    =  add(M,rm(N,X))             
          
            ifrm(true(),N,add(M,X)) =  [1] M + [1] N + [1] X + [0]
                                    >= [1] N + [1] X + [0]        
                                    =  rm(N,X)                    
          
                     rm(N,add(M,X)) =  [1] M + [1] N + [1] X + [0]
                                    >= [1] M + [1] N + [1] X + [0]
                                    =  ifrm(eq(N,M),N,add(M,X))   
          
                        rm(N,nil()) =  [1] N + [5]                
                                    >= [5]                        
                                    =  nil()                      
          
        Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** Step 5.b:1.a:3: WeightGap WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X))
            ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X))
        - Weak DPs:
            purge#(add(N,X)) -> purge#(rm(N,X))
            purge#(add(N,X)) -> rm#(N,X)
            rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)))
        - 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)
            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,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0
            ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/2,c_8/0,c_9/1,c_10/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 constant 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(ifrm#) = {1},
            uargs(purge#) = {1},
            uargs(c_5) = {1},
            uargs(c_6) = {1},
            uargs(c_9) = {1}
          
          Following symbols are considered usable:
            all
          TcT has computed the following interpretation:
                 p(0) = [0]                  
               p(add) = [1] x2 + [1]         
                p(eq) = [0]                  
             p(false) = [0]                  
              p(ifrm) = [1] x1 + [1] x3 + [0]
               p(nil) = [1]                  
             p(purge) = [1] x1 + [1]         
                p(rm) = [1] x2 + [0]         
                 p(s) = [1] x1 + [1]         
              p(true) = [0]                  
               p(eq#) = [4] x2 + [0]         
             p(ifrm#) = [1] x1 + [1] x3 + [0]
            p(purge#) = [1] x1 + [0]         
               p(rm#) = [1] x2 + [0]         
               p(c_1) = [1]                  
               p(c_2) = [2]                  
               p(c_3) = [0]                  
               p(c_4) = [0]                  
               p(c_5) = [1] x1 + [0]         
               p(c_6) = [1] x1 + [2]         
               p(c_7) = [2] x1 + [4] x2 + [1]
               p(c_8) = [0]                  
               p(c_9) = [1] x1 + [0]         
              p(c_10) = [0]                  
          
          Following rules are strictly oriented:
          ifrm#(false(),N,add(M,X)) = [1] X + [1]  
                                    > [1] X + [0]  
                                    = c_5(rm#(N,X))
          
          
          Following rules are (at-least) weakly oriented:
          ifrm#(true(),N,add(M,X)) =  [1] X + [1]                   
                                   >= [1] X + [2]                   
                                   =  c_6(rm#(N,X))                 
          
                  purge#(add(N,X)) =  [1] X + [1]                   
                                   >= [1] X + [0]                   
                                   =  purge#(rm(N,X))               
          
                  purge#(add(N,X)) =  [1] X + [1]                   
                                   >= [1] X + [0]                   
                                   =  rm#(N,X)                      
          
                   rm#(N,add(M,X)) =  [1] X + [1]                   
                                   >= [1] X + [1]                   
                                   =  c_9(ifrm#(eq(N,M),N,add(M,X)))
          
                       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 + [1]                   
                                   >= [1] X + [1]                   
                                   =  add(M,rm(N,X))                
          
           ifrm(true(),N,add(M,X)) =  [1] X + [1]                   
                                   >= [1] X + [0]                   
                                   =  rm(N,X)                       
          
                    rm(N,add(M,X)) =  [1] X + [1]                   
                                   >= [1] X + [1]                   
                                   =  ifrm(eq(N,M),N,add(M,X))      
          
                       rm(N,nil()) =  [1]                           
                                   >= [1]                           
                                   =  nil()                         
          
        Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** Step 5.b:1.a:4: WeightGap WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X))
        - Weak DPs:
            ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X))
            purge#(add(N,X)) -> purge#(rm(N,X))
            purge#(add(N,X)) -> rm#(N,X)
            rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)))
        - 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)
            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,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0
            ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/2,c_8/0,c_9/1,c_10/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 constant 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(ifrm#) = {1},
            uargs(purge#) = {1},
            uargs(c_5) = {1},
            uargs(c_6) = {1},
            uargs(c_9) = {1}
          
          Following symbols are considered usable:
            all
          TcT has computed the following interpretation:
                 p(0) = [0]                  
               p(add) = [1] x2 + [4]         
                p(eq) = [0]                  
             p(false) = [0]                  
              p(ifrm) = [1] x1 + [1] x3 + [2]
               p(nil) = [5]                  
             p(purge) = [1] x1 + [0]         
                p(rm) = [1] x2 + [2]         
                 p(s) = [1] x1 + [1]         
              p(true) = [0]                  
               p(eq#) = [1] x1 + [0]         
             p(ifrm#) = [1] x1 + [1] x3 + [5]
            p(purge#) = [1] x1 + [5]         
               p(rm#) = [1] x2 + [6]         
               p(c_1) = [1]                  
               p(c_2) = [1]                  
               p(c_3) = [1]                  
               p(c_4) = [1] x1 + [1]         
               p(c_5) = [1] x1 + [1]         
               p(c_6) = [1] x1 + [1]         
               p(c_7) = [4] x2 + [1]         
               p(c_8) = [0]                  
               p(c_9) = [1] x1 + [1]         
              p(c_10) = [2]                  
          
          Following rules are strictly oriented:
          ifrm#(true(),N,add(M,X)) = [1] X + [9]  
                                   > [1] X + [7]  
                                   = c_6(rm#(N,X))
          
          
          Following rules are (at-least) weakly oriented:
          ifrm#(false(),N,add(M,X)) =  [1] X + [9]                   
                                    >= [1] X + [7]                   
                                    =  c_5(rm#(N,X))                 
          
                   purge#(add(N,X)) =  [1] X + [9]                   
                                    >= [1] X + [7]                   
                                    =  purge#(rm(N,X))               
          
                   purge#(add(N,X)) =  [1] X + [9]                   
                                    >= [1] X + [6]                   
                                    =  rm#(N,X)                      
          
                    rm#(N,add(M,X)) =  [1] X + [10]                  
                                    >= [1] X + [10]                  
                                    =  c_9(ifrm#(eq(N,M),N,add(M,X)))
          
                        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 + [6]                   
                                    >= [1] X + [6]                   
                                    =  add(M,rm(N,X))                
          
            ifrm(true(),N,add(M,X)) =  [1] X + [6]                   
                                    >= [1] X + [2]                   
                                    =  rm(N,X)                       
          
                     rm(N,add(M,X)) =  [1] X + [6]                   
                                    >= [1] X + [6]                   
                                    =  ifrm(eq(N,M),N,add(M,X))      
          
                        rm(N,nil()) =  [7]                           
                                    >= [5]                           
                                    =  nil()                         
          
        Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** Step 5.b:1.a:5: EmptyProcessor WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak DPs:
            ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X))
            ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X))
            purge#(add(N,X)) -> purge#(rm(N,X))
            purge#(add(N,X)) -> rm#(N,X)
            rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)))
        - 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)
            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,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0
            ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/2,c_8/0,c_9/1,c_10/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).

*** Step 5.b:1.b:1: WeightGap WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            eq#(s(X),s(Y)) -> c_4(eq#(X,Y))
        - Weak DPs:
            ifrm#(false(),N,add(M,X)) -> rm#(N,X)
            ifrm#(true(),N,add(M,X)) -> rm#(N,X)
            purge#(add(N,X)) -> purge#(rm(N,X))
            purge#(add(N,X)) -> rm#(N,X)
            rm#(N,add(M,X)) -> eq#(N,M)
            rm#(N,add(M,X)) -> ifrm#(eq(N,M),N,add(M,X))
        - 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)
            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,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0
            ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/2,c_8/0,c_9/2,c_10/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 constant 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(ifrm#) = {1},
            uargs(purge#) = {1},
            uargs(c_4) = {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) = [0]                           
              p(ifrm) = [1] x1 + [1] x2 + [1] x3 + [0]
               p(nil) = [4]                           
             p(purge) = [2] x1 + [0]                  
                p(rm) = [1] x1 + [1] x2 + [0]         
                 p(s) = [1] x1 + [6]                  
              p(true) = [0]                           
               p(eq#) = [1] x2 + [0]                  
             p(ifrm#) = [1] x1 + [1] x3 + [0]         
            p(purge#) = [1] x1 + [2]                  
               p(rm#) = [1] x2 + [0]                  
               p(c_1) = [2]                           
               p(c_2) = [0]                           
               p(c_3) = [4]                           
               p(c_4) = [1] x1 + [0]                  
               p(c_5) = [1]                           
               p(c_6) = [1] x1 + [0]                  
               p(c_7) = [0]                           
               p(c_8) = [1]                           
               p(c_9) = [2]                           
              p(c_10) = [0]                           
          
          Following rules are strictly oriented:
          eq#(s(X),s(Y)) = [1] Y + [6]  
                         > [1] Y + [0]  
                         = c_4(eq#(X,Y))
          
          
          Following rules are (at-least) weakly oriented:
          ifrm#(false(),N,add(M,X)) =  [1] M + [1] X + [0]        
                                    >= [1] X + [0]                
                                    =  rm#(N,X)                   
          
           ifrm#(true(),N,add(M,X)) =  [1] M + [1] X + [0]        
                                    >= [1] X + [0]                
                                    =  rm#(N,X)                   
          
                   purge#(add(N,X)) =  [1] N + [1] X + [2]        
                                    >= [1] N + [1] X + [2]        
                                    =  purge#(rm(N,X))            
          
                   purge#(add(N,X)) =  [1] N + [1] X + [2]        
                                    >= [1] X + [0]                
                                    =  rm#(N,X)                   
          
                    rm#(N,add(M,X)) =  [1] M + [1] X + [0]        
                                    >= [1] M + [0]                
                                    =  eq#(N,M)                   
          
                    rm#(N,add(M,X)) =  [1] M + [1] X + [0]        
                                    >= [1] M + [1] X + [0]        
                                    =  ifrm#(eq(N,M),N,add(M,X))  
          
                        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] M + [1] N + [1] X + [0]
                                    >= [1] M + [1] N + [1] X + [0]
                                    =  add(M,rm(N,X))             
          
            ifrm(true(),N,add(M,X)) =  [1] M + [1] N + [1] X + [0]
                                    >= [1] N + [1] X + [0]        
                                    =  rm(N,X)                    
          
                     rm(N,add(M,X)) =  [1] M + [1] N + [1] X + [0]
                                    >= [1] M + [1] N + [1] X + [0]
                                    =  ifrm(eq(N,M),N,add(M,X))   
          
                        rm(N,nil()) =  [1] N + [4]                
                                    >= [4]                        
                                    =  nil()                      
          
        Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** Step 5.b:1.b:2: EmptyProcessor WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak DPs:
            eq#(s(X),s(Y)) -> c_4(eq#(X,Y))
            ifrm#(false(),N,add(M,X)) -> rm#(N,X)
            ifrm#(true(),N,add(M,X)) -> rm#(N,X)
            purge#(add(N,X)) -> purge#(rm(N,X))
            purge#(add(N,X)) -> rm#(N,X)
            rm#(N,add(M,X)) -> eq#(N,M)
            rm#(N,add(M,X)) -> ifrm#(eq(N,M),N,add(M,X))
        - 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)
            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,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0
            ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/2,c_8/0,c_9/2,c_10/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^3))