* Step 1: Sum WORST_CASE(Omega(n^1),O(n^1))
    + Considered Problem:
        - Strict TRS:
            activate(X) -> X
            activate(n__cons(X1,X2)) -> cons(activate(X1),X2)
            activate(n__filter(X1,X2)) -> filter(activate(X1),activate(X2))
            activate(n__from(X)) -> from(activate(X))
            activate(n__s(X)) -> s(activate(X))
            activate(n__sieve(X)) -> sieve(activate(X))
            cons(X1,X2) -> n__cons(X1,X2)
            filter(X1,X2) -> n__filter(X1,X2)
            filter(s(s(X)),cons(Y,Z)) -> if(divides(s(s(X)),Y)
                                           ,n__filter(n__s(n__s(X)),activate(Z))
                                           ,n__cons(Y,n__filter(X,n__sieve(Y))))
            from(X) -> cons(X,n__from(n__s(X)))
            from(X) -> n__from(X)
            head(cons(X,Y)) -> X
            if(false(),X,Y) -> activate(Y)
            if(true(),X,Y) -> activate(X)
            primes() -> sieve(from(s(s(0()))))
            s(X) -> n__s(X)
            sieve(X) -> n__sieve(X)
            sieve(cons(X,Y)) -> cons(X,n__filter(X,n__sieve(activate(Y))))
            tail(cons(X,Y)) -> activate(Y)
        - Signature:
            {activate/1,cons/2,filter/2,from/1,head/1,if/3,primes/0,s/1,sieve/1,tail/1} / {0/0,divides/2,false/0
            ,n__cons/2,n__filter/2,n__from/1,n__s/1,n__sieve/1,true/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {activate,cons,filter,from,head,if,primes,s,sieve
            ,tail} and constructors {0,divides,false,n__cons,n__filter,n__from,n__s,n__sieve,true}
    + Applied Processor:
        Sum {left = someStrategy, right = someStrategy}
    + Details:
        ()
** Step 1.a:1: DecreasingLoops WORST_CASE(Omega(n^1),?)
    + Considered Problem:
        - Strict TRS:
            activate(X) -> X
            activate(n__cons(X1,X2)) -> cons(activate(X1),X2)
            activate(n__filter(X1,X2)) -> filter(activate(X1),activate(X2))
            activate(n__from(X)) -> from(activate(X))
            activate(n__s(X)) -> s(activate(X))
            activate(n__sieve(X)) -> sieve(activate(X))
            cons(X1,X2) -> n__cons(X1,X2)
            filter(X1,X2) -> n__filter(X1,X2)
            filter(s(s(X)),cons(Y,Z)) -> if(divides(s(s(X)),Y)
                                           ,n__filter(n__s(n__s(X)),activate(Z))
                                           ,n__cons(Y,n__filter(X,n__sieve(Y))))
            from(X) -> cons(X,n__from(n__s(X)))
            from(X) -> n__from(X)
            head(cons(X,Y)) -> X
            if(false(),X,Y) -> activate(Y)
            if(true(),X,Y) -> activate(X)
            primes() -> sieve(from(s(s(0()))))
            s(X) -> n__s(X)
            sieve(X) -> n__sieve(X)
            sieve(cons(X,Y)) -> cons(X,n__filter(X,n__sieve(activate(Y))))
            tail(cons(X,Y)) -> activate(Y)
        - Signature:
            {activate/1,cons/2,filter/2,from/1,head/1,if/3,primes/0,s/1,sieve/1,tail/1} / {0/0,divides/2,false/0
            ,n__cons/2,n__filter/2,n__from/1,n__s/1,n__sieve/1,true/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {activate,cons,filter,from,head,if,primes,s,sieve
            ,tail} and constructors {0,divides,false,n__cons,n__filter,n__from,n__s,n__sieve,true}
    + Applied Processor:
        DecreasingLoops {bound = AnyLoop, narrow = 10}
    + Details:
        The system has following decreasing Loops:
          activate(x){x -> n__cons(x,y)} =
            activate(n__cons(x,y)) ->^+ cons(activate(x),y)
              = C[activate(x) = activate(x){}]

** Step 1.b:1: InnermostRuleRemoval WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict TRS:
            activate(X) -> X
            activate(n__cons(X1,X2)) -> cons(activate(X1),X2)
            activate(n__filter(X1,X2)) -> filter(activate(X1),activate(X2))
            activate(n__from(X)) -> from(activate(X))
            activate(n__s(X)) -> s(activate(X))
            activate(n__sieve(X)) -> sieve(activate(X))
            cons(X1,X2) -> n__cons(X1,X2)
            filter(X1,X2) -> n__filter(X1,X2)
            filter(s(s(X)),cons(Y,Z)) -> if(divides(s(s(X)),Y)
                                           ,n__filter(n__s(n__s(X)),activate(Z))
                                           ,n__cons(Y,n__filter(X,n__sieve(Y))))
            from(X) -> cons(X,n__from(n__s(X)))
            from(X) -> n__from(X)
            head(cons(X,Y)) -> X
            if(false(),X,Y) -> activate(Y)
            if(true(),X,Y) -> activate(X)
            primes() -> sieve(from(s(s(0()))))
            s(X) -> n__s(X)
            sieve(X) -> n__sieve(X)
            sieve(cons(X,Y)) -> cons(X,n__filter(X,n__sieve(activate(Y))))
            tail(cons(X,Y)) -> activate(Y)
        - Signature:
            {activate/1,cons/2,filter/2,from/1,head/1,if/3,primes/0,s/1,sieve/1,tail/1} / {0/0,divides/2,false/0
            ,n__cons/2,n__filter/2,n__from/1,n__s/1,n__sieve/1,true/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {activate,cons,filter,from,head,if,primes,s,sieve
            ,tail} and constructors {0,divides,false,n__cons,n__filter,n__from,n__s,n__sieve,true}
    + Applied Processor:
        InnermostRuleRemoval
    + Details:
        Arguments of following rules are not normal-forms.
          filter(s(s(X)),cons(Y,Z)) -> if(divides(s(s(X)),Y)
                                         ,n__filter(n__s(n__s(X)),activate(Z))
                                         ,n__cons(Y,n__filter(X,n__sieve(Y))))
          head(cons(X,Y)) -> X
          sieve(cons(X,Y)) -> cons(X,n__filter(X,n__sieve(activate(Y))))
          tail(cons(X,Y)) -> activate(Y)
        All above mentioned rules can be savely removed.
** Step 1.b:2: WeightGap WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict TRS:
            activate(X) -> X
            activate(n__cons(X1,X2)) -> cons(activate(X1),X2)
            activate(n__filter(X1,X2)) -> filter(activate(X1),activate(X2))
            activate(n__from(X)) -> from(activate(X))
            activate(n__s(X)) -> s(activate(X))
            activate(n__sieve(X)) -> sieve(activate(X))
            cons(X1,X2) -> n__cons(X1,X2)
            filter(X1,X2) -> n__filter(X1,X2)
            from(X) -> cons(X,n__from(n__s(X)))
            from(X) -> n__from(X)
            if(false(),X,Y) -> activate(Y)
            if(true(),X,Y) -> activate(X)
            primes() -> sieve(from(s(s(0()))))
            s(X) -> n__s(X)
            sieve(X) -> n__sieve(X)
        - Signature:
            {activate/1,cons/2,filter/2,from/1,head/1,if/3,primes/0,s/1,sieve/1,tail/1} / {0/0,divides/2,false/0
            ,n__cons/2,n__filter/2,n__from/1,n__s/1,n__sieve/1,true/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {activate,cons,filter,from,head,if,primes,s,sieve
            ,tail} and constructors {0,divides,false,n__cons,n__filter,n__from,n__s,n__sieve,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(cons) = {1},
            uargs(filter) = {1,2},
            uargs(from) = {1},
            uargs(s) = {1},
            uargs(sieve) = {1}
          
          Following symbols are considered usable:
            all
          TcT has computed the following interpretation:
                    p(0) = [0]                           
             p(activate) = [7] x1 + [0]                  
                 p(cons) = [1] x1 + [5]                  
              p(divides) = [1] x1 + [1] x2 + [0]         
                p(false) = [3]                           
               p(filter) = [1] x1 + [1] x2 + [0]         
                 p(from) = [1] x1 + [5]                  
                 p(head) = [0]                           
                   p(if) = [9] x1 + [7] x2 + [7] x3 + [1]
              p(n__cons) = [1] x1 + [3]                  
            p(n__filter) = [1] x1 + [1] x2 + [0]         
              p(n__from) = [1] x1 + [1]                  
                 p(n__s) = [1] x1 + [0]                  
             p(n__sieve) = [1] x1 + [0]                  
               p(primes) = [0]                           
                    p(s) = [1] x1 + [0]                  
                p(sieve) = [1] x1 + [1]                  
                 p(tail) = [0]                           
                 p(true) = [0]                           
          
          Following rules are strictly oriented:
          activate(n__cons(X1,X2)) = [7] X1 + [21]        
                                   > [7] X1 + [5]         
                                   = cons(activate(X1),X2)
          
              activate(n__from(X)) = [7] X + [7]          
                                   > [7] X + [5]          
                                   = from(activate(X))    
          
                       cons(X1,X2) = [1] X1 + [5]         
                                   > [1] X1 + [3]         
                                   = n__cons(X1,X2)       
          
                           from(X) = [1] X + [5]          
                                   > [1] X + [1]          
                                   = n__from(X)           
          
                   if(false(),X,Y) = [7] X + [7] Y + [28] 
                                   > [7] Y + [0]          
                                   = activate(Y)          
          
                    if(true(),X,Y) = [7] X + [7] Y + [1]  
                                   > [7] X + [0]          
                                   = activate(X)          
          
                          sieve(X) = [1] X + [1]          
                                   > [1] X + [0]          
                                   = n__sieve(X)          
          
          
          Following rules are (at-least) weakly oriented:
                         activate(X) =  [7] X + [0]                      
                                     >= [1] X + [0]                      
                                     =  X                                
          
          activate(n__filter(X1,X2)) =  [7] X1 + [7] X2 + [0]            
                                     >= [7] X1 + [7] X2 + [0]            
                                     =  filter(activate(X1),activate(X2))
          
                   activate(n__s(X)) =  [7] X + [0]                      
                                     >= [7] X + [0]                      
                                     =  s(activate(X))                   
          
               activate(n__sieve(X)) =  [7] X + [0]                      
                                     >= [7] X + [1]                      
                                     =  sieve(activate(X))               
          
                       filter(X1,X2) =  [1] X1 + [1] X2 + [0]            
                                     >= [1] X1 + [1] X2 + [0]            
                                     =  n__filter(X1,X2)                 
          
                             from(X) =  [1] X + [5]                      
                                     >= [1] X + [5]                      
                                     =  cons(X,n__from(n__s(X)))         
          
                            primes() =  [0]                              
                                     >= [6]                              
                                     =  sieve(from(s(s(0()))))           
          
                                s(X) =  [1] X + [0]                      
                                     >= [1] X + [0]                      
                                     =  n__s(X)                          
          
        Further, it can be verified that all rules not oriented are covered by the weightgap condition.
** Step 1.b:3: WeightGap WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict TRS:
            activate(X) -> X
            activate(n__filter(X1,X2)) -> filter(activate(X1),activate(X2))
            activate(n__s(X)) -> s(activate(X))
            activate(n__sieve(X)) -> sieve(activate(X))
            filter(X1,X2) -> n__filter(X1,X2)
            from(X) -> cons(X,n__from(n__s(X)))
            primes() -> sieve(from(s(s(0()))))
            s(X) -> n__s(X)
        - Weak TRS:
            activate(n__cons(X1,X2)) -> cons(activate(X1),X2)
            activate(n__from(X)) -> from(activate(X))
            cons(X1,X2) -> n__cons(X1,X2)
            from(X) -> n__from(X)
            if(false(),X,Y) -> activate(Y)
            if(true(),X,Y) -> activate(X)
            sieve(X) -> n__sieve(X)
        - Signature:
            {activate/1,cons/2,filter/2,from/1,head/1,if/3,primes/0,s/1,sieve/1,tail/1} / {0/0,divides/2,false/0
            ,n__cons/2,n__filter/2,n__from/1,n__s/1,n__sieve/1,true/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {activate,cons,filter,from,head,if,primes,s,sieve
            ,tail} and constructors {0,divides,false,n__cons,n__filter,n__from,n__s,n__sieve,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(cons) = {1},
            uargs(filter) = {1,2},
            uargs(from) = {1},
            uargs(s) = {1},
            uargs(sieve) = {1}
          
          Following symbols are considered usable:
            all
          TcT has computed the following interpretation:
                    p(0) = [0]                  
             p(activate) = [1] x1 + [1]         
                 p(cons) = [1] x1 + [1]         
              p(divides) = [1] x1 + [1] x2 + [0]
                p(false) = [1]                  
               p(filter) = [1] x1 + [1] x2 + [0]
                 p(from) = [1] x1 + [2]         
                 p(head) = [0]                  
                   p(if) = [2] x2 + [1] x3 + [1]
              p(n__cons) = [1] x1 + [1]         
            p(n__filter) = [1] x1 + [1] x2 + [0]
              p(n__from) = [1] x1 + [2]         
                 p(n__s) = [1] x1 + [0]         
             p(n__sieve) = [1] x1 + [0]         
               p(primes) = [0]                  
                    p(s) = [1] x1 + [0]         
                p(sieve) = [1] x1 + [0]         
                 p(tail) = [0]                  
                 p(true) = [4]                  
          
          Following rules are strictly oriented:
          activate(X) = [1] X + [1]             
                      > [1] X + [0]             
                      = X                       
          
              from(X) = [1] X + [2]             
                      > [1] X + [1]             
                      = cons(X,n__from(n__s(X)))
          
          
          Following rules are (at-least) weakly oriented:
            activate(n__cons(X1,X2)) =  [1] X1 + [2]                     
                                     >= [1] X1 + [2]                     
                                     =  cons(activate(X1),X2)            
          
          activate(n__filter(X1,X2)) =  [1] X1 + [1] X2 + [1]            
                                     >= [1] X1 + [1] X2 + [2]            
                                     =  filter(activate(X1),activate(X2))
          
                activate(n__from(X)) =  [1] X + [3]                      
                                     >= [1] X + [3]                      
                                     =  from(activate(X))                
          
                   activate(n__s(X)) =  [1] X + [1]                      
                                     >= [1] X + [1]                      
                                     =  s(activate(X))                   
          
               activate(n__sieve(X)) =  [1] X + [1]                      
                                     >= [1] X + [1]                      
                                     =  sieve(activate(X))               
          
                         cons(X1,X2) =  [1] X1 + [1]                     
                                     >= [1] X1 + [1]                     
                                     =  n__cons(X1,X2)                   
          
                       filter(X1,X2) =  [1] X1 + [1] X2 + [0]            
                                     >= [1] X1 + [1] X2 + [0]            
                                     =  n__filter(X1,X2)                 
          
                             from(X) =  [1] X + [2]                      
                                     >= [1] X + [2]                      
                                     =  n__from(X)                       
          
                     if(false(),X,Y) =  [2] X + [1] Y + [1]              
                                     >= [1] Y + [1]                      
                                     =  activate(Y)                      
          
                      if(true(),X,Y) =  [2] X + [1] Y + [1]              
                                     >= [1] X + [1]                      
                                     =  activate(X)                      
          
                            primes() =  [0]                              
                                     >= [2]                              
                                     =  sieve(from(s(s(0()))))           
          
                                s(X) =  [1] X + [0]                      
                                     >= [1] X + [0]                      
                                     =  n__s(X)                          
          
                            sieve(X) =  [1] X + [0]                      
                                     >= [1] X + [0]                      
                                     =  n__sieve(X)                      
          
        Further, it can be verified that all rules not oriented are covered by the weightgap condition.
** Step 1.b:4: WeightGap WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict TRS:
            activate(n__filter(X1,X2)) -> filter(activate(X1),activate(X2))
            activate(n__s(X)) -> s(activate(X))
            activate(n__sieve(X)) -> sieve(activate(X))
            filter(X1,X2) -> n__filter(X1,X2)
            primes() -> sieve(from(s(s(0()))))
            s(X) -> n__s(X)
        - Weak TRS:
            activate(X) -> X
            activate(n__cons(X1,X2)) -> cons(activate(X1),X2)
            activate(n__from(X)) -> from(activate(X))
            cons(X1,X2) -> n__cons(X1,X2)
            from(X) -> cons(X,n__from(n__s(X)))
            from(X) -> n__from(X)
            if(false(),X,Y) -> activate(Y)
            if(true(),X,Y) -> activate(X)
            sieve(X) -> n__sieve(X)
        - Signature:
            {activate/1,cons/2,filter/2,from/1,head/1,if/3,primes/0,s/1,sieve/1,tail/1} / {0/0,divides/2,false/0
            ,n__cons/2,n__filter/2,n__from/1,n__s/1,n__sieve/1,true/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {activate,cons,filter,from,head,if,primes,s,sieve
            ,tail} and constructors {0,divides,false,n__cons,n__filter,n__from,n__s,n__sieve,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(cons) = {1},
            uargs(filter) = {1,2},
            uargs(from) = {1},
            uargs(s) = {1},
            uargs(sieve) = {1}
          
          Following symbols are considered usable:
            all
          TcT has computed the following interpretation:
                    p(0) = [5]                           
             p(activate) = [1] x1 + [0]                  
                 p(cons) = [1] x1 + [0]                  
              p(divides) = [1]                           
                p(false) = [0]                           
               p(filter) = [1] x1 + [1] x2 + [2]         
                 p(from) = [1] x1 + [0]                  
                 p(head) = [1] x1 + [1]                  
                   p(if) = [4] x1 + [2] x2 + [2] x3 + [4]
              p(n__cons) = [1] x1 + [0]                  
            p(n__filter) = [1] x1 + [1] x2 + [0]         
              p(n__from) = [1] x1 + [0]                  
                 p(n__s) = [1] x1 + [0]                  
             p(n__sieve) = [1] x1 + [2]                  
               p(primes) = [1]                           
                    p(s) = [1] x1 + [0]                  
                p(sieve) = [1] x1 + [3]                  
                 p(tail) = [2]                           
                 p(true) = [2]                           
          
          Following rules are strictly oriented:
          filter(X1,X2) = [1] X1 + [1] X2 + [2]
                        > [1] X1 + [1] X2 + [0]
                        = n__filter(X1,X2)     
          
          
          Following rules are (at-least) weakly oriented:
                         activate(X) =  [1] X + [0]                      
                                     >= [1] X + [0]                      
                                     =  X                                
          
            activate(n__cons(X1,X2)) =  [1] X1 + [0]                     
                                     >= [1] X1 + [0]                     
                                     =  cons(activate(X1),X2)            
          
          activate(n__filter(X1,X2)) =  [1] X1 + [1] X2 + [0]            
                                     >= [1] X1 + [1] X2 + [2]            
                                     =  filter(activate(X1),activate(X2))
          
                activate(n__from(X)) =  [1] X + [0]                      
                                     >= [1] X + [0]                      
                                     =  from(activate(X))                
          
                   activate(n__s(X)) =  [1] X + [0]                      
                                     >= [1] X + [0]                      
                                     =  s(activate(X))                   
          
               activate(n__sieve(X)) =  [1] X + [2]                      
                                     >= [1] X + [3]                      
                                     =  sieve(activate(X))               
          
                         cons(X1,X2) =  [1] X1 + [0]                     
                                     >= [1] X1 + [0]                     
                                     =  n__cons(X1,X2)                   
          
                             from(X) =  [1] X + [0]                      
                                     >= [1] X + [0]                      
                                     =  cons(X,n__from(n__s(X)))         
          
                             from(X) =  [1] X + [0]                      
                                     >= [1] X + [0]                      
                                     =  n__from(X)                       
          
                     if(false(),X,Y) =  [2] X + [2] Y + [4]              
                                     >= [1] Y + [0]                      
                                     =  activate(Y)                      
          
                      if(true(),X,Y) =  [2] X + [2] Y + [12]             
                                     >= [1] X + [0]                      
                                     =  activate(X)                      
          
                            primes() =  [1]                              
                                     >= [8]                              
                                     =  sieve(from(s(s(0()))))           
          
                                s(X) =  [1] X + [0]                      
                                     >= [1] X + [0]                      
                                     =  n__s(X)                          
          
                            sieve(X) =  [1] X + [3]                      
                                     >= [1] X + [2]                      
                                     =  n__sieve(X)                      
          
        Further, it can be verified that all rules not oriented are covered by the weightgap condition.
** Step 1.b:5: WeightGap WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict TRS:
            activate(n__filter(X1,X2)) -> filter(activate(X1),activate(X2))
            activate(n__s(X)) -> s(activate(X))
            activate(n__sieve(X)) -> sieve(activate(X))
            primes() -> sieve(from(s(s(0()))))
            s(X) -> n__s(X)
        - Weak TRS:
            activate(X) -> X
            activate(n__cons(X1,X2)) -> cons(activate(X1),X2)
            activate(n__from(X)) -> from(activate(X))
            cons(X1,X2) -> n__cons(X1,X2)
            filter(X1,X2) -> n__filter(X1,X2)
            from(X) -> cons(X,n__from(n__s(X)))
            from(X) -> n__from(X)
            if(false(),X,Y) -> activate(Y)
            if(true(),X,Y) -> activate(X)
            sieve(X) -> n__sieve(X)
        - Signature:
            {activate/1,cons/2,filter/2,from/1,head/1,if/3,primes/0,s/1,sieve/1,tail/1} / {0/0,divides/2,false/0
            ,n__cons/2,n__filter/2,n__from/1,n__s/1,n__sieve/1,true/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {activate,cons,filter,from,head,if,primes,s,sieve
            ,tail} and constructors {0,divides,false,n__cons,n__filter,n__from,n__s,n__sieve,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(cons) = {1},
            uargs(filter) = {1,2},
            uargs(from) = {1},
            uargs(s) = {1},
            uargs(sieve) = {1}
          
          Following symbols are considered usable:
            all
          TcT has computed the following interpretation:
                    p(0) = [0]                  
             p(activate) = [5] x1 + [0]         
                 p(cons) = [1] x1 + [0]         
              p(divides) = [1] x1 + [1] x2 + [0]
                p(false) = [0]                  
               p(filter) = [1] x1 + [1] x2 + [0]
                 p(from) = [1] x1 + [0]         
                 p(head) = [0]                  
                   p(if) = [5] x2 + [5] x3 + [0]
              p(n__cons) = [1] x1 + [0]         
            p(n__filter) = [1] x1 + [1] x2 + [0]
              p(n__from) = [1] x1 + [0]         
                 p(n__s) = [1] x1 + [2]         
             p(n__sieve) = [1] x1 + [0]         
               p(primes) = [0]                  
                    p(s) = [1] x1 + [7]         
                p(sieve) = [1] x1 + [0]         
                 p(tail) = [0]                  
                 p(true) = [0]                  
          
          Following rules are strictly oriented:
          activate(n__s(X)) = [5] X + [10]  
                            > [5] X + [7]   
                            = s(activate(X))
          
                       s(X) = [1] X + [7]   
                            > [1] X + [2]   
                            = n__s(X)       
          
          
          Following rules are (at-least) weakly oriented:
                         activate(X) =  [5] X + [0]                      
                                     >= [1] X + [0]                      
                                     =  X                                
          
            activate(n__cons(X1,X2)) =  [5] X1 + [0]                     
                                     >= [5] X1 + [0]                     
                                     =  cons(activate(X1),X2)            
          
          activate(n__filter(X1,X2)) =  [5] X1 + [5] X2 + [0]            
                                     >= [5] X1 + [5] X2 + [0]            
                                     =  filter(activate(X1),activate(X2))
          
                activate(n__from(X)) =  [5] X + [0]                      
                                     >= [5] X + [0]                      
                                     =  from(activate(X))                
          
               activate(n__sieve(X)) =  [5] X + [0]                      
                                     >= [5] X + [0]                      
                                     =  sieve(activate(X))               
          
                         cons(X1,X2) =  [1] X1 + [0]                     
                                     >= [1] X1 + [0]                     
                                     =  n__cons(X1,X2)                   
          
                       filter(X1,X2) =  [1] X1 + [1] X2 + [0]            
                                     >= [1] X1 + [1] X2 + [0]            
                                     =  n__filter(X1,X2)                 
          
                             from(X) =  [1] X + [0]                      
                                     >= [1] X + [0]                      
                                     =  cons(X,n__from(n__s(X)))         
          
                             from(X) =  [1] X + [0]                      
                                     >= [1] X + [0]                      
                                     =  n__from(X)                       
          
                     if(false(),X,Y) =  [5] X + [5] Y + [0]              
                                     >= [5] Y + [0]                      
                                     =  activate(Y)                      
          
                      if(true(),X,Y) =  [5] X + [5] Y + [0]              
                                     >= [5] X + [0]                      
                                     =  activate(X)                      
          
                            primes() =  [0]                              
                                     >= [14]                             
                                     =  sieve(from(s(s(0()))))           
          
                            sieve(X) =  [1] X + [0]                      
                                     >= [1] X + [0]                      
                                     =  n__sieve(X)                      
          
        Further, it can be verified that all rules not oriented are covered by the weightgap condition.
** Step 1.b:6: WeightGap WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict TRS:
            activate(n__filter(X1,X2)) -> filter(activate(X1),activate(X2))
            activate(n__sieve(X)) -> sieve(activate(X))
            primes() -> sieve(from(s(s(0()))))
        - Weak TRS:
            activate(X) -> X
            activate(n__cons(X1,X2)) -> cons(activate(X1),X2)
            activate(n__from(X)) -> from(activate(X))
            activate(n__s(X)) -> s(activate(X))
            cons(X1,X2) -> n__cons(X1,X2)
            filter(X1,X2) -> n__filter(X1,X2)
            from(X) -> cons(X,n__from(n__s(X)))
            from(X) -> n__from(X)
            if(false(),X,Y) -> activate(Y)
            if(true(),X,Y) -> activate(X)
            s(X) -> n__s(X)
            sieve(X) -> n__sieve(X)
        - Signature:
            {activate/1,cons/2,filter/2,from/1,head/1,if/3,primes/0,s/1,sieve/1,tail/1} / {0/0,divides/2,false/0
            ,n__cons/2,n__filter/2,n__from/1,n__s/1,n__sieve/1,true/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {activate,cons,filter,from,head,if,primes,s,sieve
            ,tail} and constructors {0,divides,false,n__cons,n__filter,n__from,n__s,n__sieve,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(cons) = {1},
            uargs(filter) = {1,2},
            uargs(from) = {1},
            uargs(s) = {1},
            uargs(sieve) = {1}
          
          Following symbols are considered usable:
            all
          TcT has computed the following interpretation:
                    p(0) = [2]                  
             p(activate) = [1] x1 + [0]         
                 p(cons) = [1] x1 + [2]         
              p(divides) = [1] x1 + [1] x2 + [0]
                p(false) = [0]                  
               p(filter) = [1] x1 + [1] x2 + [4]
                 p(from) = [1] x1 + [2]         
                 p(head) = [0]                  
                   p(if) = [1] x2 + [1] x3 + [0]
              p(n__cons) = [1] x1 + [2]         
            p(n__filter) = [1] x1 + [1] x2 + [4]
              p(n__from) = [1] x1 + [2]         
                 p(n__s) = [1] x1 + [0]         
             p(n__sieve) = [1] x1 + [0]         
               p(primes) = [5]                  
                    p(s) = [1] x1 + [0]         
                p(sieve) = [1] x1 + [0]         
                 p(tail) = [0]                  
                 p(true) = [0]                  
          
          Following rules are strictly oriented:
          primes() = [5]                   
                   > [4]                   
                   = sieve(from(s(s(0()))))
          
          
          Following rules are (at-least) weakly oriented:
                         activate(X) =  [1] X + [0]                      
                                     >= [1] X + [0]                      
                                     =  X                                
          
            activate(n__cons(X1,X2)) =  [1] X1 + [2]                     
                                     >= [1] X1 + [2]                     
                                     =  cons(activate(X1),X2)            
          
          activate(n__filter(X1,X2)) =  [1] X1 + [1] X2 + [4]            
                                     >= [1] X1 + [1] X2 + [4]            
                                     =  filter(activate(X1),activate(X2))
          
                activate(n__from(X)) =  [1] X + [2]                      
                                     >= [1] X + [2]                      
                                     =  from(activate(X))                
          
                   activate(n__s(X)) =  [1] X + [0]                      
                                     >= [1] X + [0]                      
                                     =  s(activate(X))                   
          
               activate(n__sieve(X)) =  [1] X + [0]                      
                                     >= [1] X + [0]                      
                                     =  sieve(activate(X))               
          
                         cons(X1,X2) =  [1] X1 + [2]                     
                                     >= [1] X1 + [2]                     
                                     =  n__cons(X1,X2)                   
          
                       filter(X1,X2) =  [1] X1 + [1] X2 + [4]            
                                     >= [1] X1 + [1] X2 + [4]            
                                     =  n__filter(X1,X2)                 
          
                             from(X) =  [1] X + [2]                      
                                     >= [1] X + [2]                      
                                     =  cons(X,n__from(n__s(X)))         
          
                             from(X) =  [1] X + [2]                      
                                     >= [1] X + [2]                      
                                     =  n__from(X)                       
          
                     if(false(),X,Y) =  [1] X + [1] Y + [0]              
                                     >= [1] Y + [0]                      
                                     =  activate(Y)                      
          
                      if(true(),X,Y) =  [1] X + [1] Y + [0]              
                                     >= [1] X + [0]                      
                                     =  activate(X)                      
          
                                s(X) =  [1] X + [0]                      
                                     >= [1] X + [0]                      
                                     =  n__s(X)                          
          
                            sieve(X) =  [1] X + [0]                      
                                     >= [1] X + [0]                      
                                     =  n__sieve(X)                      
          
        Further, it can be verified that all rules not oriented are covered by the weightgap condition.
** Step 1.b:7: WeightGap WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict TRS:
            activate(n__filter(X1,X2)) -> filter(activate(X1),activate(X2))
            activate(n__sieve(X)) -> sieve(activate(X))
        - Weak TRS:
            activate(X) -> X
            activate(n__cons(X1,X2)) -> cons(activate(X1),X2)
            activate(n__from(X)) -> from(activate(X))
            activate(n__s(X)) -> s(activate(X))
            cons(X1,X2) -> n__cons(X1,X2)
            filter(X1,X2) -> n__filter(X1,X2)
            from(X) -> cons(X,n__from(n__s(X)))
            from(X) -> n__from(X)
            if(false(),X,Y) -> activate(Y)
            if(true(),X,Y) -> activate(X)
            primes() -> sieve(from(s(s(0()))))
            s(X) -> n__s(X)
            sieve(X) -> n__sieve(X)
        - Signature:
            {activate/1,cons/2,filter/2,from/1,head/1,if/3,primes/0,s/1,sieve/1,tail/1} / {0/0,divides/2,false/0
            ,n__cons/2,n__filter/2,n__from/1,n__s/1,n__sieve/1,true/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {activate,cons,filter,from,head,if,primes,s,sieve
            ,tail} and constructors {0,divides,false,n__cons,n__filter,n__from,n__s,n__sieve,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(cons) = {1},
            uargs(filter) = {1,2},
            uargs(from) = {1},
            uargs(s) = {1},
            uargs(sieve) = {1}
          
          Following symbols are considered usable:
            all
          TcT has computed the following interpretation:
                    p(0) = [2]                  
             p(activate) = [5] x1 + [0]         
                 p(cons) = [1] x1 + [0]         
              p(divides) = [1] x1 + [1] x2 + [0]
                p(false) = [0]                  
               p(filter) = [1] x1 + [1] x2 + [2]
                 p(from) = [1] x1 + [0]         
                 p(head) = [0]                  
                   p(if) = [6] x2 + [5] x3 + [0]
              p(n__cons) = [1] x1 + [0]         
            p(n__filter) = [1] x1 + [1] x2 + [0]
              p(n__from) = [1] x1 + [0]         
                 p(n__s) = [1] x1 + [0]         
             p(n__sieve) = [1] x1 + [1]         
               p(primes) = [7]                  
                    p(s) = [1] x1 + [0]         
                p(sieve) = [1] x1 + [4]         
                 p(tail) = [4] x1 + [1]         
                 p(true) = [0]                  
          
          Following rules are strictly oriented:
          activate(n__sieve(X)) = [5] X + [5]       
                                > [5] X + [4]       
                                = sieve(activate(X))
          
          
          Following rules are (at-least) weakly oriented:
                         activate(X) =  [5] X + [0]                      
                                     >= [1] X + [0]                      
                                     =  X                                
          
            activate(n__cons(X1,X2)) =  [5] X1 + [0]                     
                                     >= [5] X1 + [0]                     
                                     =  cons(activate(X1),X2)            
          
          activate(n__filter(X1,X2)) =  [5] X1 + [5] X2 + [0]            
                                     >= [5] X1 + [5] X2 + [2]            
                                     =  filter(activate(X1),activate(X2))
          
                activate(n__from(X)) =  [5] X + [0]                      
                                     >= [5] X + [0]                      
                                     =  from(activate(X))                
          
                   activate(n__s(X)) =  [5] X + [0]                      
                                     >= [5] X + [0]                      
                                     =  s(activate(X))                   
          
                         cons(X1,X2) =  [1] X1 + [0]                     
                                     >= [1] X1 + [0]                     
                                     =  n__cons(X1,X2)                   
          
                       filter(X1,X2) =  [1] X1 + [1] X2 + [2]            
                                     >= [1] X1 + [1] X2 + [0]            
                                     =  n__filter(X1,X2)                 
          
                             from(X) =  [1] X + [0]                      
                                     >= [1] X + [0]                      
                                     =  cons(X,n__from(n__s(X)))         
          
                             from(X) =  [1] X + [0]                      
                                     >= [1] X + [0]                      
                                     =  n__from(X)                       
          
                     if(false(),X,Y) =  [6] X + [5] Y + [0]              
                                     >= [5] Y + [0]                      
                                     =  activate(Y)                      
          
                      if(true(),X,Y) =  [6] X + [5] Y + [0]              
                                     >= [5] X + [0]                      
                                     =  activate(X)                      
          
                            primes() =  [7]                              
                                     >= [6]                              
                                     =  sieve(from(s(s(0()))))           
          
                                s(X) =  [1] X + [0]                      
                                     >= [1] X + [0]                      
                                     =  n__s(X)                          
          
                            sieve(X) =  [1] X + [4]                      
                                     >= [1] X + [1]                      
                                     =  n__sieve(X)                      
          
        Further, it can be verified that all rules not oriented are covered by the weightgap condition.
** Step 1.b:8: WeightGap WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict TRS:
            activate(n__filter(X1,X2)) -> filter(activate(X1),activate(X2))
        - Weak TRS:
            activate(X) -> X
            activate(n__cons(X1,X2)) -> cons(activate(X1),X2)
            activate(n__from(X)) -> from(activate(X))
            activate(n__s(X)) -> s(activate(X))
            activate(n__sieve(X)) -> sieve(activate(X))
            cons(X1,X2) -> n__cons(X1,X2)
            filter(X1,X2) -> n__filter(X1,X2)
            from(X) -> cons(X,n__from(n__s(X)))
            from(X) -> n__from(X)
            if(false(),X,Y) -> activate(Y)
            if(true(),X,Y) -> activate(X)
            primes() -> sieve(from(s(s(0()))))
            s(X) -> n__s(X)
            sieve(X) -> n__sieve(X)
        - Signature:
            {activate/1,cons/2,filter/2,from/1,head/1,if/3,primes/0,s/1,sieve/1,tail/1} / {0/0,divides/2,false/0
            ,n__cons/2,n__filter/2,n__from/1,n__s/1,n__sieve/1,true/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {activate,cons,filter,from,head,if,primes,s,sieve
            ,tail} and constructors {0,divides,false,n__cons,n__filter,n__from,n__s,n__sieve,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(cons) = {1},
            uargs(filter) = {1,2},
            uargs(from) = {1},
            uargs(s) = {1},
            uargs(sieve) = {1}
          
          Following symbols are considered usable:
            all
          TcT has computed the following interpretation:
                    p(0) = [4]                           
             p(activate) = [3] x1 + [0]                  
                 p(cons) = [1] x1 + [0]                  
              p(divides) = [0]                           
                p(false) = [4]                           
               p(filter) = [1] x1 + [1] x2 + [2]         
                 p(from) = [1] x1 + [3]                  
                 p(head) = [2] x1 + [0]                  
                   p(if) = [1] x1 + [5] x2 + [3] x3 + [0]
              p(n__cons) = [1] x1 + [0]                  
            p(n__filter) = [1] x1 + [1] x2 + [1]         
              p(n__from) = [1] x1 + [1]                  
                 p(n__s) = [1] x1 + [0]                  
             p(n__sieve) = [1] x1 + [0]                  
               p(primes) = [7]                           
                    p(s) = [1] x1 + [0]                  
                p(sieve) = [1] x1 + [0]                  
                 p(tail) = [0]                           
                 p(true) = [5]                           
          
          Following rules are strictly oriented:
          activate(n__filter(X1,X2)) = [3] X1 + [3] X2 + [3]            
                                     > [3] X1 + [3] X2 + [2]            
                                     = filter(activate(X1),activate(X2))
          
          
          Following rules are (at-least) weakly oriented:
                       activate(X) =  [3] X + [0]             
                                   >= [1] X + [0]             
                                   =  X                       
          
          activate(n__cons(X1,X2)) =  [3] X1 + [0]            
                                   >= [3] X1 + [0]            
                                   =  cons(activate(X1),X2)   
          
              activate(n__from(X)) =  [3] X + [3]             
                                   >= [3] X + [3]             
                                   =  from(activate(X))       
          
                 activate(n__s(X)) =  [3] X + [0]             
                                   >= [3] X + [0]             
                                   =  s(activate(X))          
          
             activate(n__sieve(X)) =  [3] X + [0]             
                                   >= [3] X + [0]             
                                   =  sieve(activate(X))      
          
                       cons(X1,X2) =  [1] X1 + [0]            
                                   >= [1] X1 + [0]            
                                   =  n__cons(X1,X2)          
          
                     filter(X1,X2) =  [1] X1 + [1] X2 + [2]   
                                   >= [1] X1 + [1] X2 + [1]   
                                   =  n__filter(X1,X2)        
          
                           from(X) =  [1] X + [3]             
                                   >= [1] X + [0]             
                                   =  cons(X,n__from(n__s(X)))
          
                           from(X) =  [1] X + [3]             
                                   >= [1] X + [1]             
                                   =  n__from(X)              
          
                   if(false(),X,Y) =  [5] X + [3] Y + [4]     
                                   >= [3] Y + [0]             
                                   =  activate(Y)             
          
                    if(true(),X,Y) =  [5] X + [3] Y + [5]     
                                   >= [3] X + [0]             
                                   =  activate(X)             
          
                          primes() =  [7]                     
                                   >= [7]                     
                                   =  sieve(from(s(s(0()))))  
          
                              s(X) =  [1] X + [0]             
                                   >= [1] X + [0]             
                                   =  n__s(X)                 
          
                          sieve(X) =  [1] X + [0]             
                                   >= [1] X + [0]             
                                   =  n__sieve(X)             
          
        Further, it can be verified that all rules not oriented are covered by the weightgap condition.
** Step 1.b:9: EmptyProcessor WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak TRS:
            activate(X) -> X
            activate(n__cons(X1,X2)) -> cons(activate(X1),X2)
            activate(n__filter(X1,X2)) -> filter(activate(X1),activate(X2))
            activate(n__from(X)) -> from(activate(X))
            activate(n__s(X)) -> s(activate(X))
            activate(n__sieve(X)) -> sieve(activate(X))
            cons(X1,X2) -> n__cons(X1,X2)
            filter(X1,X2) -> n__filter(X1,X2)
            from(X) -> cons(X,n__from(n__s(X)))
            from(X) -> n__from(X)
            if(false(),X,Y) -> activate(Y)
            if(true(),X,Y) -> activate(X)
            primes() -> sieve(from(s(s(0()))))
            s(X) -> n__s(X)
            sieve(X) -> n__sieve(X)
        - Signature:
            {activate/1,cons/2,filter/2,from/1,head/1,if/3,primes/0,s/1,sieve/1,tail/1} / {0/0,divides/2,false/0
            ,n__cons/2,n__filter/2,n__from/1,n__s/1,n__sieve/1,true/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {activate,cons,filter,from,head,if,primes,s,sieve
            ,tail} and constructors {0,divides,false,n__cons,n__filter,n__from,n__s,n__sieve,true}
    + Applied Processor:
        EmptyProcessor
    + Details:
        The problem is already closed. The intended complexity is O(1).

WORST_CASE(Omega(n^1),O(n^1))