*** 1 Progress [(?,O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        check(cons(x,y)) -> cons(x,y)
        check(cons(x,y)) -> cons(x,check(y))
        check(cons(x,y)) -> cons(check(x),y)
        check(rest(x)) -> rest(check(x))
        check(sent(x)) -> sent(check(x))
        rest(cons(x,y)) -> sent(y)
        rest(nil()) -> sent(nil())
        top(sent(x)) -> top(check(rest(x)))
      Weak DP Rules:
        
      Weak TRS Rules:
        
      Signature:
        {check/1,rest/1,top/1} / {cons/2,nil/0,sent/1}
      Obligation:
        Innermost
        basic terms: {check,rest,top}/{cons,nil,sent}
    Applied Processor:
      DependencyPairs {dpKind_ = DT}
    Proof:
      We add the following dependency tuples:
      
      Strict DPs
        check#(cons(x,y)) -> c_1()
        check#(cons(x,y)) -> c_2(check#(y))
        check#(cons(x,y)) -> c_3(check#(x))
        check#(rest(x)) -> c_4(rest#(check(x)),check#(x))
        check#(sent(x)) -> c_5(check#(x))
        rest#(cons(x,y)) -> c_6()
        rest#(nil()) -> c_7()
        top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x)),rest#(x))
      Weak DPs
        
      
      and mark the set of starting terms.
*** 1.1 Progress [(?,O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        check#(cons(x,y)) -> c_1()
        check#(cons(x,y)) -> c_2(check#(y))
        check#(cons(x,y)) -> c_3(check#(x))
        check#(rest(x)) -> c_4(rest#(check(x)),check#(x))
        check#(sent(x)) -> c_5(check#(x))
        rest#(cons(x,y)) -> c_6()
        rest#(nil()) -> c_7()
        top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x)),rest#(x))
      Strict TRS Rules:
        
      Weak DP Rules:
        
      Weak TRS Rules:
        check(cons(x,y)) -> cons(x,y)
        check(cons(x,y)) -> cons(x,check(y))
        check(cons(x,y)) -> cons(check(x),y)
        check(rest(x)) -> rest(check(x))
        check(sent(x)) -> sent(check(x))
        rest(cons(x,y)) -> sent(y)
        rest(nil()) -> sent(nil())
        top(sent(x)) -> top(check(rest(x)))
      Signature:
        {check/1,rest/1,top/1,check#/1,rest#/1,top#/1} / {cons/2,nil/0,sent/1,c_1/0,c_2/1,c_3/1,c_4/2,c_5/1,c_6/0,c_7/0,c_8/3}
      Obligation:
        Innermost
        basic terms: {check#,rest#,top#}/{cons,nil,sent}
    Applied Processor:
      UsableRules
    Proof:
      We replace rewrite rules by usable rules:
        check(cons(x,y)) -> cons(x,y)
        check(cons(x,y)) -> cons(x,check(y))
        check(cons(x,y)) -> cons(check(x),y)
        check(rest(x)) -> rest(check(x))
        check(sent(x)) -> sent(check(x))
        rest(cons(x,y)) -> sent(y)
        rest(nil()) -> sent(nil())
        check#(cons(x,y)) -> c_1()
        check#(cons(x,y)) -> c_2(check#(y))
        check#(cons(x,y)) -> c_3(check#(x))
        check#(rest(x)) -> c_4(rest#(check(x)),check#(x))
        check#(sent(x)) -> c_5(check#(x))
        rest#(cons(x,y)) -> c_6()
        rest#(nil()) -> c_7()
        top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x)),rest#(x))
*** 1.1.1 Progress [(?,O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        check#(cons(x,y)) -> c_1()
        check#(cons(x,y)) -> c_2(check#(y))
        check#(cons(x,y)) -> c_3(check#(x))
        check#(rest(x)) -> c_4(rest#(check(x)),check#(x))
        check#(sent(x)) -> c_5(check#(x))
        rest#(cons(x,y)) -> c_6()
        rest#(nil()) -> c_7()
        top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x)),rest#(x))
      Strict TRS Rules:
        
      Weak DP Rules:
        
      Weak TRS Rules:
        check(cons(x,y)) -> cons(x,y)
        check(cons(x,y)) -> cons(x,check(y))
        check(cons(x,y)) -> cons(check(x),y)
        check(rest(x)) -> rest(check(x))
        check(sent(x)) -> sent(check(x))
        rest(cons(x,y)) -> sent(y)
        rest(nil()) -> sent(nil())
      Signature:
        {check/1,rest/1,top/1,check#/1,rest#/1,top#/1} / {cons/2,nil/0,sent/1,c_1/0,c_2/1,c_3/1,c_4/2,c_5/1,c_6/0,c_7/0,c_8/3}
      Obligation:
        Innermost
        basic terms: {check#,rest#,top#}/{cons,nil,sent}
    Applied Processor:
      PredecessorEstimation {onSelection = all simple predecessor estimation selector}
    Proof:
      We estimate the number of application of
        {1,6,7}
      by application of
        Pre({1,6,7}) = {2,3,4,5,8}.
      Here rules are labelled as follows:
        1: check#(cons(x,y)) -> c_1()      
        2: check#(cons(x,y)) ->            
             c_2(check#(y))                
        3: check#(cons(x,y)) ->            
             c_3(check#(x))                
        4: check#(rest(x)) ->              
             c_4(rest#(check(x)),check#(x))
        5: check#(sent(x)) ->              
             c_5(check#(x))                
        6: rest#(cons(x,y)) -> c_6()       
        7: rest#(nil()) -> c_7()           
        8: top#(sent(x)) ->                
             c_8(top#(check(rest(x)))      
                ,check#(rest(x))           
                ,rest#(x))                 
*** 1.1.1.1 Progress [(?,O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        check#(cons(x,y)) -> c_2(check#(y))
        check#(cons(x,y)) -> c_3(check#(x))
        check#(rest(x)) -> c_4(rest#(check(x)),check#(x))
        check#(sent(x)) -> c_5(check#(x))
        top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x)),rest#(x))
      Strict TRS Rules:
        
      Weak DP Rules:
        check#(cons(x,y)) -> c_1()
        rest#(cons(x,y)) -> c_6()
        rest#(nil()) -> c_7()
      Weak TRS Rules:
        check(cons(x,y)) -> cons(x,y)
        check(cons(x,y)) -> cons(x,check(y))
        check(cons(x,y)) -> cons(check(x),y)
        check(rest(x)) -> rest(check(x))
        check(sent(x)) -> sent(check(x))
        rest(cons(x,y)) -> sent(y)
        rest(nil()) -> sent(nil())
      Signature:
        {check/1,rest/1,top/1,check#/1,rest#/1,top#/1} / {cons/2,nil/0,sent/1,c_1/0,c_2/1,c_3/1,c_4/2,c_5/1,c_6/0,c_7/0,c_8/3}
      Obligation:
        Innermost
        basic terms: {check#,rest#,top#}/{cons,nil,sent}
    Applied Processor:
      RemoveWeakSuffixes
    Proof:
      Consider the dependency graph
        1:S:check#(cons(x,y)) -> c_2(check#(y))
           -->_1 check#(sent(x)) -> c_5(check#(x)):4
           -->_1 check#(rest(x)) -> c_4(rest#(check(x)),check#(x)):3
           -->_1 check#(cons(x,y)) -> c_3(check#(x)):2
           -->_1 check#(cons(x,y)) -> c_1():6
           -->_1 check#(cons(x,y)) -> c_2(check#(y)):1
        
        2:S:check#(cons(x,y)) -> c_3(check#(x))
           -->_1 check#(sent(x)) -> c_5(check#(x)):4
           -->_1 check#(rest(x)) -> c_4(rest#(check(x)),check#(x)):3
           -->_1 check#(cons(x,y)) -> c_1():6
           -->_1 check#(cons(x,y)) -> c_3(check#(x)):2
           -->_1 check#(cons(x,y)) -> c_2(check#(y)):1
        
        3:S:check#(rest(x)) -> c_4(rest#(check(x)),check#(x))
           -->_2 check#(sent(x)) -> c_5(check#(x)):4
           -->_1 rest#(nil()) -> c_7():8
           -->_1 rest#(cons(x,y)) -> c_6():7
           -->_2 check#(cons(x,y)) -> c_1():6
           -->_2 check#(rest(x)) -> c_4(rest#(check(x)),check#(x)):3
           -->_2 check#(cons(x,y)) -> c_3(check#(x)):2
           -->_2 check#(cons(x,y)) -> c_2(check#(y)):1
        
        4:S:check#(sent(x)) -> c_5(check#(x))
           -->_1 check#(cons(x,y)) -> c_1():6
           -->_1 check#(sent(x)) -> c_5(check#(x)):4
           -->_1 check#(rest(x)) -> c_4(rest#(check(x)),check#(x)):3
           -->_1 check#(cons(x,y)) -> c_3(check#(x)):2
           -->_1 check#(cons(x,y)) -> c_2(check#(y)):1
        
        5:S:top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x)),rest#(x))
           -->_3 rest#(nil()) -> c_7():8
           -->_3 rest#(cons(x,y)) -> c_6():7
           -->_2 check#(cons(x,y)) -> c_1():6
           -->_1 top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x)),rest#(x)):5
           -->_2 check#(sent(x)) -> c_5(check#(x)):4
           -->_2 check#(rest(x)) -> c_4(rest#(check(x)),check#(x)):3
           -->_2 check#(cons(x,y)) -> c_3(check#(x)):2
           -->_2 check#(cons(x,y)) -> c_2(check#(y)):1
        
        6:W:check#(cons(x,y)) -> c_1()
           
        
        7:W:rest#(cons(x,y)) -> c_6()
           
        
        8:W:rest#(nil()) -> c_7()
           
        
      The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
        7: rest#(cons(x,y)) -> c_6() 
        8: rest#(nil()) -> c_7()     
        6: check#(cons(x,y)) -> c_1()
*** 1.1.1.1.1 Progress [(?,O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        check#(cons(x,y)) -> c_2(check#(y))
        check#(cons(x,y)) -> c_3(check#(x))
        check#(rest(x)) -> c_4(rest#(check(x)),check#(x))
        check#(sent(x)) -> c_5(check#(x))
        top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x)),rest#(x))
      Strict TRS Rules:
        
      Weak DP Rules:
        
      Weak TRS Rules:
        check(cons(x,y)) -> cons(x,y)
        check(cons(x,y)) -> cons(x,check(y))
        check(cons(x,y)) -> cons(check(x),y)
        check(rest(x)) -> rest(check(x))
        check(sent(x)) -> sent(check(x))
        rest(cons(x,y)) -> sent(y)
        rest(nil()) -> sent(nil())
      Signature:
        {check/1,rest/1,top/1,check#/1,rest#/1,top#/1} / {cons/2,nil/0,sent/1,c_1/0,c_2/1,c_3/1,c_4/2,c_5/1,c_6/0,c_7/0,c_8/3}
      Obligation:
        Innermost
        basic terms: {check#,rest#,top#}/{cons,nil,sent}
    Applied Processor:
      SimplifyRHS
    Proof:
      Consider the dependency graph
        1:S:check#(cons(x,y)) -> c_2(check#(y))
           -->_1 check#(sent(x)) -> c_5(check#(x)):4
           -->_1 check#(rest(x)) -> c_4(rest#(check(x)),check#(x)):3
           -->_1 check#(cons(x,y)) -> c_3(check#(x)):2
           -->_1 check#(cons(x,y)) -> c_2(check#(y)):1
        
        2:S:check#(cons(x,y)) -> c_3(check#(x))
           -->_1 check#(sent(x)) -> c_5(check#(x)):4
           -->_1 check#(rest(x)) -> c_4(rest#(check(x)),check#(x)):3
           -->_1 check#(cons(x,y)) -> c_3(check#(x)):2
           -->_1 check#(cons(x,y)) -> c_2(check#(y)):1
        
        3:S:check#(rest(x)) -> c_4(rest#(check(x)),check#(x))
           -->_2 check#(sent(x)) -> c_5(check#(x)):4
           -->_2 check#(rest(x)) -> c_4(rest#(check(x)),check#(x)):3
           -->_2 check#(cons(x,y)) -> c_3(check#(x)):2
           -->_2 check#(cons(x,y)) -> c_2(check#(y)):1
        
        4:S:check#(sent(x)) -> c_5(check#(x))
           -->_1 check#(sent(x)) -> c_5(check#(x)):4
           -->_1 check#(rest(x)) -> c_4(rest#(check(x)),check#(x)):3
           -->_1 check#(cons(x,y)) -> c_3(check#(x)):2
           -->_1 check#(cons(x,y)) -> c_2(check#(y)):1
        
        5:S:top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x)),rest#(x))
           -->_1 top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x)),rest#(x)):5
           -->_2 check#(sent(x)) -> c_5(check#(x)):4
           -->_2 check#(rest(x)) -> c_4(rest#(check(x)),check#(x)):3
           -->_2 check#(cons(x,y)) -> c_3(check#(x)):2
           -->_2 check#(cons(x,y)) -> c_2(check#(y)):1
        
      Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified:
        check#(rest(x)) -> c_4(check#(x))
        top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x)))
*** 1.1.1.1.1.1 Progress [(?,O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        check#(cons(x,y)) -> c_2(check#(y))
        check#(cons(x,y)) -> c_3(check#(x))
        check#(rest(x)) -> c_4(check#(x))
        check#(sent(x)) -> c_5(check#(x))
        top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x)))
      Strict TRS Rules:
        
      Weak DP Rules:
        
      Weak TRS Rules:
        check(cons(x,y)) -> cons(x,y)
        check(cons(x,y)) -> cons(x,check(y))
        check(cons(x,y)) -> cons(check(x),y)
        check(rest(x)) -> rest(check(x))
        check(sent(x)) -> sent(check(x))
        rest(cons(x,y)) -> sent(y)
        rest(nil()) -> sent(nil())
      Signature:
        {check/1,rest/1,top/1,check#/1,rest#/1,top#/1} / {cons/2,nil/0,sent/1,c_1/0,c_2/1,c_3/1,c_4/1,c_5/1,c_6/0,c_7/0,c_8/2}
      Obligation:
        Innermost
        basic terms: {check#,rest#,top#}/{cons,nil,sent}
    Applied Processor:
      Decompose {onSelection = all cycle independent sub-graph, withBound = RelativeAdd}
    Proof:
      We analyse the complexity of following sub-problems (R) and (S).
      Problem (S) is obtained from the input problem by shifting strict rules from (R) into the weak component.
      
      Problem (R)
        Strict DP Rules:
          check#(cons(x,y)) -> c_2(check#(y))
          check#(cons(x,y)) -> c_3(check#(x))
          check#(rest(x)) -> c_4(check#(x))
          check#(sent(x)) -> c_5(check#(x))
        Strict TRS Rules:
          
        Weak DP Rules:
          top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x)))
        Weak TRS Rules:
          check(cons(x,y)) -> cons(x,y)
          check(cons(x,y)) -> cons(x,check(y))
          check(cons(x,y)) -> cons(check(x),y)
          check(rest(x)) -> rest(check(x))
          check(sent(x)) -> sent(check(x))
          rest(cons(x,y)) -> sent(y)
          rest(nil()) -> sent(nil())
        Signature:
          {check/1,rest/1,top/1,check#/1,rest#/1,top#/1} / {cons/2,nil/0,sent/1,c_1/0,c_2/1,c_3/1,c_4/1,c_5/1,c_6/0,c_7/0,c_8/2}
        Obligation:
          Innermost
          basic terms: {check#,rest#,top#}/{cons,nil,sent}
      
      Problem (S)
        Strict DP Rules:
          top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x)))
        Strict TRS Rules:
          
        Weak DP Rules:
          check#(cons(x,y)) -> c_2(check#(y))
          check#(cons(x,y)) -> c_3(check#(x))
          check#(rest(x)) -> c_4(check#(x))
          check#(sent(x)) -> c_5(check#(x))
        Weak TRS Rules:
          check(cons(x,y)) -> cons(x,y)
          check(cons(x,y)) -> cons(x,check(y))
          check(cons(x,y)) -> cons(check(x),y)
          check(rest(x)) -> rest(check(x))
          check(sent(x)) -> sent(check(x))
          rest(cons(x,y)) -> sent(y)
          rest(nil()) -> sent(nil())
        Signature:
          {check/1,rest/1,top/1,check#/1,rest#/1,top#/1} / {cons/2,nil/0,sent/1,c_1/0,c_2/1,c_3/1,c_4/1,c_5/1,c_6/0,c_7/0,c_8/2}
        Obligation:
          Innermost
          basic terms: {check#,rest#,top#}/{cons,nil,sent}
  *** 1.1.1.1.1.1.1 Progress [(?,O(n^2))]  ***
      Considered Problem:
        Strict DP Rules:
          check#(cons(x,y)) -> c_2(check#(y))
          check#(cons(x,y)) -> c_3(check#(x))
          check#(rest(x)) -> c_4(check#(x))
          check#(sent(x)) -> c_5(check#(x))
        Strict TRS Rules:
          
        Weak DP Rules:
          top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x)))
        Weak TRS Rules:
          check(cons(x,y)) -> cons(x,y)
          check(cons(x,y)) -> cons(x,check(y))
          check(cons(x,y)) -> cons(check(x),y)
          check(rest(x)) -> rest(check(x))
          check(sent(x)) -> sent(check(x))
          rest(cons(x,y)) -> sent(y)
          rest(nil()) -> sent(nil())
        Signature:
          {check/1,rest/1,top/1,check#/1,rest#/1,top#/1} / {cons/2,nil/0,sent/1,c_1/0,c_2/1,c_3/1,c_4/1,c_5/1,c_6/0,c_7/0,c_8/2}
        Obligation:
          Innermost
          basic terms: {check#,rest#,top#}/{cons,nil,sent}
      Applied Processor:
        PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy}}
      Proof:
        We first use the processor NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy} to orient following rules strictly:
          1: check#(cons(x,y)) ->
               c_2(check#(y))    
          2: check#(cons(x,y)) ->
               c_3(check#(x))    
          
        The strictly oriented rules are moved into the weak component.
    *** 1.1.1.1.1.1.1.1 Progress [(?,O(n^2))]  ***
        Considered Problem:
          Strict DP Rules:
            check#(cons(x,y)) -> c_2(check#(y))
            check#(cons(x,y)) -> c_3(check#(x))
            check#(rest(x)) -> c_4(check#(x))
            check#(sent(x)) -> c_5(check#(x))
          Strict TRS Rules:
            
          Weak DP Rules:
            top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x)))
          Weak TRS Rules:
            check(cons(x,y)) -> cons(x,y)
            check(cons(x,y)) -> cons(x,check(y))
            check(cons(x,y)) -> cons(check(x),y)
            check(rest(x)) -> rest(check(x))
            check(sent(x)) -> sent(check(x))
            rest(cons(x,y)) -> sent(y)
            rest(nil()) -> sent(nil())
          Signature:
            {check/1,rest/1,top/1,check#/1,rest#/1,top#/1} / {cons/2,nil/0,sent/1,c_1/0,c_2/1,c_3/1,c_4/1,c_5/1,c_6/0,c_7/0,c_8/2}
          Obligation:
            Innermost
            basic terms: {check#,rest#,top#}/{cons,nil,sent}
        Applied Processor:
          NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation any intersect of rules of CDG leaf and strict-rules, greedy = NoGreedy}
        Proof:
          We apply a matrix interpretation of kind constructor based matrix interpretation:
          The following argument positions are considered usable:
            uargs(c_2) = {1},
            uargs(c_3) = {1},
            uargs(c_4) = {1},
            uargs(c_5) = {1},
            uargs(c_8) = {1,2}
          
          Following symbols are considered usable:
            {check,rest,check#,rest#,top#}
          TcT has computed the following interpretation:
             p(check) = [1 0] x1 + [0]           
                        [0 1]      [0]           
              p(cons) = [0 0] x1 + [1 4] x2 + [0]
                        [0 1]      [0 1]      [2]
               p(nil) = [0]                      
                        [0]                      
              p(rest) = [1 0] x1 + [1]           
                        [0 4]      [0]           
              p(sent) = [1 4] x1 + [1]           
                        [0 1]      [0]           
               p(top) = [0 2] x1 + [1]           
                        [1 0]      [0]           
            p(check#) = [0 1] x1 + [0]           
                        [0 2]      [0]           
             p(rest#) = [2 0] x1 + [2]           
                        [0 0]      [1]           
              p(top#) = [1 0] x1 + [3]           
                        [2 2]      [6]           
               p(c_1) = [4]                      
                        [1]                      
               p(c_2) = [1 0] x1 + [0]           
                        [0 1]      [4]           
               p(c_3) = [1 0] x1 + [0]           
                        [0 0]      [0]           
               p(c_4) = [1 1] x1 + [0]           
                        [6 0]      [0]           
               p(c_5) = [1 0] x1 + [0]           
                        [2 0]      [0]           
               p(c_6) = [1]                      
                        [0]                      
               p(c_7) = [0]                      
                        [0]                      
               p(c_8) = [1 0] x1 + [1 0] x2 + [0]
                        [2 0]      [0 0]      [0]
          
          Following rules are strictly oriented:
          check#(cons(x,y)) = [0 1] x + [0 1] y + [2]
                              [0 2]     [0 2]     [4]
                            > [0 1] y + [0]          
                              [0 2]     [4]          
                            = c_2(check#(y))         
          
          check#(cons(x,y)) = [0 1] x + [0 1] y + [2]
                              [0 2]     [0 2]     [4]
                            > [0 1] x + [0]          
                              [0 0]     [0]          
                            = c_3(check#(x))         
          
          
          Following rules are (at-least) weakly oriented:
           check#(rest(x)) =  [0 4] x + [0]           
                              [0 8]     [0]           
                           >= [0 3] x + [0]           
                              [0 6]     [0]           
                           =  c_4(check#(x))          
          
           check#(sent(x)) =  [0 1] x + [0]           
                              [0 2]     [0]           
                           >= [0 1] x + [0]           
                              [0 2]     [0]           
                           =  c_5(check#(x))          
          
             top#(sent(x)) =  [1  4] x + [4]          
                              [2 10]     [8]          
                           >= [1 4] x + [4]           
                              [2 0]     [8]           
                           =  c_8(top#(check(rest(x)))
                                 ,check#(rest(x)))    
          
          check(cons(x,y)) =  [0 0] x + [1 4] y + [0] 
                              [0 1]     [0 1]     [2] 
                           >= [0 0] x + [1 4] y + [0] 
                              [0 1]     [0 1]     [2] 
                           =  cons(x,y)               
          
          check(cons(x,y)) =  [0 0] x + [1 4] y + [0] 
                              [0 1]     [0 1]     [2] 
                           >= [0 0] x + [1 4] y + [0] 
                              [0 1]     [0 1]     [2] 
                           =  cons(x,check(y))        
          
          check(cons(x,y)) =  [0 0] x + [1 4] y + [0] 
                              [0 1]     [0 1]     [2] 
                           >= [0 0] x + [1 4] y + [0] 
                              [0 1]     [0 1]     [2] 
                           =  cons(check(x),y)        
          
            check(rest(x)) =  [1 0] x + [1]           
                              [0 4]     [0]           
                           >= [1 0] x + [1]           
                              [0 4]     [0]           
                           =  rest(check(x))          
          
            check(sent(x)) =  [1 4] x + [1]           
                              [0 1]     [0]           
                           >= [1 4] x + [1]           
                              [0 1]     [0]           
                           =  sent(check(x))          
          
           rest(cons(x,y)) =  [0 0] x + [1 4] y + [1] 
                              [0 4]     [0 4]     [8] 
                           >= [1 4] y + [1]           
                              [0 1]     [0]           
                           =  sent(y)                 
          
               rest(nil()) =  [1]                     
                              [0]                     
                           >= [1]                     
                              [0]                     
                           =  sent(nil())             
          
    *** 1.1.1.1.1.1.1.1.1 Progress [(?,O(1))]  ***
        Considered Problem:
          Strict DP Rules:
            check#(rest(x)) -> c_4(check#(x))
            check#(sent(x)) -> c_5(check#(x))
          Strict TRS Rules:
            
          Weak DP Rules:
            check#(cons(x,y)) -> c_2(check#(y))
            check#(cons(x,y)) -> c_3(check#(x))
            top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x)))
          Weak TRS Rules:
            check(cons(x,y)) -> cons(x,y)
            check(cons(x,y)) -> cons(x,check(y))
            check(cons(x,y)) -> cons(check(x),y)
            check(rest(x)) -> rest(check(x))
            check(sent(x)) -> sent(check(x))
            rest(cons(x,y)) -> sent(y)
            rest(nil()) -> sent(nil())
          Signature:
            {check/1,rest/1,top/1,check#/1,rest#/1,top#/1} / {cons/2,nil/0,sent/1,c_1/0,c_2/1,c_3/1,c_4/1,c_5/1,c_6/0,c_7/0,c_8/2}
          Obligation:
            Innermost
            basic terms: {check#,rest#,top#}/{cons,nil,sent}
        Applied Processor:
          Assumption
        Proof:
          ()
    
    *** 1.1.1.1.1.1.1.2 Progress [(?,O(n^2))]  ***
        Considered Problem:
          Strict DP Rules:
            check#(rest(x)) -> c_4(check#(x))
            check#(sent(x)) -> c_5(check#(x))
          Strict TRS Rules:
            
          Weak DP Rules:
            check#(cons(x,y)) -> c_2(check#(y))
            check#(cons(x,y)) -> c_3(check#(x))
            top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x)))
          Weak TRS Rules:
            check(cons(x,y)) -> cons(x,y)
            check(cons(x,y)) -> cons(x,check(y))
            check(cons(x,y)) -> cons(check(x),y)
            check(rest(x)) -> rest(check(x))
            check(sent(x)) -> sent(check(x))
            rest(cons(x,y)) -> sent(y)
            rest(nil()) -> sent(nil())
          Signature:
            {check/1,rest/1,top/1,check#/1,rest#/1,top#/1} / {cons/2,nil/0,sent/1,c_1/0,c_2/1,c_3/1,c_4/1,c_5/1,c_6/0,c_7/0,c_8/2}
          Obligation:
            Innermost
            basic terms: {check#,rest#,top#}/{cons,nil,sent}
        Applied Processor:
          DecomposeDG {onSelection = all below first cut in WDG, onUpper = Just someStrategy, onLower = Nothing}
        Proof:
          We decompose the input problem according to the dependency graph into the upper component
            top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x)))
          and a lower component
            check#(cons(x,y)) -> c_2(check#(y))
            check#(cons(x,y)) -> c_3(check#(x))
            check#(rest(x)) -> c_4(check#(x))
            check#(sent(x)) -> c_5(check#(x))
          Further, following extension rules are added to the lower component.
            top#(sent(x)) -> check#(rest(x))
            top#(sent(x)) -> top#(check(rest(x)))
      *** 1.1.1.1.1.1.1.2.1 Progress [(?,O(n^1))]  ***
          Considered Problem:
            Strict DP Rules:
              top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x)))
            Strict TRS Rules:
              
            Weak DP Rules:
              
            Weak TRS Rules:
              check(cons(x,y)) -> cons(x,y)
              check(cons(x,y)) -> cons(x,check(y))
              check(cons(x,y)) -> cons(check(x),y)
              check(rest(x)) -> rest(check(x))
              check(sent(x)) -> sent(check(x))
              rest(cons(x,y)) -> sent(y)
              rest(nil()) -> sent(nil())
            Signature:
              {check/1,rest/1,top/1,check#/1,rest#/1,top#/1} / {cons/2,nil/0,sent/1,c_1/0,c_2/1,c_3/1,c_4/1,c_5/1,c_6/0,c_7/0,c_8/2}
            Obligation:
              Innermost
              basic terms: {check#,rest#,top#}/{cons,nil,sent}
          Applied Processor:
            PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy}}
          Proof:
            We first use the processor NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy} to orient following rules strictly:
              1: top#(sent(x)) ->          
                   c_8(top#(check(rest(x)))
                      ,check#(rest(x)))    
              
            The strictly oriented rules are moved into the weak component.
        *** 1.1.1.1.1.1.1.2.1.1 Progress [(?,O(n^1))]  ***
            Considered Problem:
              Strict DP Rules:
                top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x)))
              Strict TRS Rules:
                
              Weak DP Rules:
                
              Weak TRS Rules:
                check(cons(x,y)) -> cons(x,y)
                check(cons(x,y)) -> cons(x,check(y))
                check(cons(x,y)) -> cons(check(x),y)
                check(rest(x)) -> rest(check(x))
                check(sent(x)) -> sent(check(x))
                rest(cons(x,y)) -> sent(y)
                rest(nil()) -> sent(nil())
              Signature:
                {check/1,rest/1,top/1,check#/1,rest#/1,top#/1} / {cons/2,nil/0,sent/1,c_1/0,c_2/1,c_3/1,c_4/1,c_5/1,c_6/0,c_7/0,c_8/2}
              Obligation:
                Innermost
                basic terms: {check#,rest#,top#}/{cons,nil,sent}
            Applied Processor:
              NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation any intersect of rules of CDG leaf and strict-rules, greedy = NoGreedy}
            Proof:
              We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 2 non-zero interpretation-entries in the diagonal of the component-wise maxima):
              The following argument positions are considered usable:
                uargs(c_8) = {1,2}
              
              Following symbols are considered usable:
                {check,rest,check#,rest#,top#}
              TcT has computed the following interpretation:
                 p(check) = [0 2 0]      [0]             
                            [0 1 0] x1 + [0]             
                            [0 0 0]      [0]             
                  p(cons) = [0 0 0]      [0 2 0]      [0]
                            [0 0 3] x1 + [0 1 2] x2 + [2]
                            [0 0 0]      [0 0 0]      [0]
                   p(nil) = [0]                          
                            [0]                          
                            [2]                          
                  p(rest) = [0 2 3]      [0]             
                            [0 1 1] x1 + [0]             
                            [0 0 0]      [0]             
                  p(sent) = [0 2 2]      [1]             
                            [0 1 0] x1 + [2]             
                            [0 0 0]      [0]             
                   p(top) = [0 2 0]      [1]             
                            [2 1 0] x1 + [1]             
                            [0 1 0]      [0]             
                p(check#) = [0 0 0]      [0]             
                            [0 2 0] x1 + [1]             
                            [0 0 0]      [0]             
                 p(rest#) = [0]                          
                            [0]                          
                            [2]                          
                  p(top#) = [2 0 0]      [0]             
                            [0 0 0] x1 + [0]             
                            [2 0 0]      [0]             
                   p(c_1) = [1]                          
                            [2]                          
                            [1]                          
                   p(c_2) = [0]                          
                            [1]                          
                            [2]                          
                   p(c_3) = [0 0 0]      [0]             
                            [0 0 0] x1 + [0]             
                            [0 2 2]      [2]             
                   p(c_4) = [0]                          
                            [0]                          
                            [1]                          
                   p(c_5) = [0 0 0]      [0]             
                            [0 0 0] x1 + [2]             
                            [0 0 1]      [0]             
                   p(c_6) = [1]                          
                            [0]                          
                            [1]                          
                   p(c_7) = [0]                          
                            [0]                          
                            [2]                          
                   p(c_8) = [1 0 0]      [1 0 0]      [1]
                            [0 0 0] x1 + [0 0 1] x2 + [0]
                            [0 0 0]      [1 2 2]      [0]
              
              Following rules are strictly oriented:
              top#(sent(x)) = [0 4 4]     [2]         
                              [0 0 0] x + [0]         
                              [0 4 4]     [2]         
                            > [0 4 4]     [1]         
                              [0 0 0] x + [0]         
                              [0 4 4]     [2]         
                            = c_8(top#(check(rest(x)))
                                 ,check#(rest(x)))    
              
              
              Following rules are (at-least) weakly oriented:
              check(cons(x,y)) =  [0 0 6]     [0 2 4]     [4]
                                  [0 0 3] x + [0 1 2] y + [2]
                                  [0 0 0]     [0 0 0]     [0]
                               >= [0 0 0]     [0 2 0]     [0]
                                  [0 0 3] x + [0 1 2] y + [2]
                                  [0 0 0]     [0 0 0]     [0]
                               =  cons(x,y)                  
              
              check(cons(x,y)) =  [0 0 6]     [0 2 4]     [4]
                                  [0 0 3] x + [0 1 2] y + [2]
                                  [0 0 0]     [0 0 0]     [0]
                               >= [0 0 0]     [0 2 0]     [0]
                                  [0 0 3] x + [0 1 0] y + [2]
                                  [0 0 0]     [0 0 0]     [0]
                               =  cons(x,check(y))           
              
              check(cons(x,y)) =  [0 0 6]     [0 2 4]     [4]
                                  [0 0 3] x + [0 1 2] y + [2]
                                  [0 0 0]     [0 0 0]     [0]
                               >= [0 2 0]     [0]            
                                  [0 1 2] y + [2]            
                                  [0 0 0]     [0]            
                               =  cons(check(x),y)           
              
                check(rest(x)) =  [0 2 2]     [0]            
                                  [0 1 1] x + [0]            
                                  [0 0 0]     [0]            
                               >= [0 2 0]     [0]            
                                  [0 1 0] x + [0]            
                                  [0 0 0]     [0]            
                               =  rest(check(x))             
              
                check(sent(x)) =  [0 2 0]     [4]            
                                  [0 1 0] x + [2]            
                                  [0 0 0]     [0]            
                               >= [0 2 0]     [1]            
                                  [0 1 0] x + [2]            
                                  [0 0 0]     [0]            
                               =  sent(check(x))             
              
               rest(cons(x,y)) =  [0 0 6]     [0 2 4]     [4]
                                  [0 0 3] x + [0 1 2] y + [2]
                                  [0 0 0]     [0 0 0]     [0]
                               >= [0 2 2]     [1]            
                                  [0 1 0] y + [2]            
                                  [0 0 0]     [0]            
                               =  sent(y)                    
              
                   rest(nil()) =  [6]                        
                                  [2]                        
                                  [0]                        
                               >= [5]                        
                                  [2]                        
                                  [0]                        
                               =  sent(nil())                
              
        *** 1.1.1.1.1.1.1.2.1.1.1 Progress [(?,O(1))]  ***
            Considered Problem:
              Strict DP Rules:
                
              Strict TRS Rules:
                
              Weak DP Rules:
                top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x)))
              Weak TRS Rules:
                check(cons(x,y)) -> cons(x,y)
                check(cons(x,y)) -> cons(x,check(y))
                check(cons(x,y)) -> cons(check(x),y)
                check(rest(x)) -> rest(check(x))
                check(sent(x)) -> sent(check(x))
                rest(cons(x,y)) -> sent(y)
                rest(nil()) -> sent(nil())
              Signature:
                {check/1,rest/1,top/1,check#/1,rest#/1,top#/1} / {cons/2,nil/0,sent/1,c_1/0,c_2/1,c_3/1,c_4/1,c_5/1,c_6/0,c_7/0,c_8/2}
              Obligation:
                Innermost
                basic terms: {check#,rest#,top#}/{cons,nil,sent}
            Applied Processor:
              Assumption
            Proof:
              ()
        
        *** 1.1.1.1.1.1.1.2.1.2 Progress [(O(1),O(1))]  ***
            Considered Problem:
              Strict DP Rules:
                
              Strict TRS Rules:
                
              Weak DP Rules:
                top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x)))
              Weak TRS Rules:
                check(cons(x,y)) -> cons(x,y)
                check(cons(x,y)) -> cons(x,check(y))
                check(cons(x,y)) -> cons(check(x),y)
                check(rest(x)) -> rest(check(x))
                check(sent(x)) -> sent(check(x))
                rest(cons(x,y)) -> sent(y)
                rest(nil()) -> sent(nil())
              Signature:
                {check/1,rest/1,top/1,check#/1,rest#/1,top#/1} / {cons/2,nil/0,sent/1,c_1/0,c_2/1,c_3/1,c_4/1,c_5/1,c_6/0,c_7/0,c_8/2}
              Obligation:
                Innermost
                basic terms: {check#,rest#,top#}/{cons,nil,sent}
            Applied Processor:
              RemoveWeakSuffixes
            Proof:
              Consider the dependency graph
                1:W:top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x)))
                   -->_1 top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x))):1
                
              The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
                1: top#(sent(x)) ->          
                     c_8(top#(check(rest(x)))
                        ,check#(rest(x)))    
        *** 1.1.1.1.1.1.1.2.1.2.1 Progress [(O(1),O(1))]  ***
            Considered Problem:
              Strict DP Rules:
                
              Strict TRS Rules:
                
              Weak DP Rules:
                
              Weak TRS Rules:
                check(cons(x,y)) -> cons(x,y)
                check(cons(x,y)) -> cons(x,check(y))
                check(cons(x,y)) -> cons(check(x),y)
                check(rest(x)) -> rest(check(x))
                check(sent(x)) -> sent(check(x))
                rest(cons(x,y)) -> sent(y)
                rest(nil()) -> sent(nil())
              Signature:
                {check/1,rest/1,top/1,check#/1,rest#/1,top#/1} / {cons/2,nil/0,sent/1,c_1/0,c_2/1,c_3/1,c_4/1,c_5/1,c_6/0,c_7/0,c_8/2}
              Obligation:
                Innermost
                basic terms: {check#,rest#,top#}/{cons,nil,sent}
            Applied Processor:
              EmptyProcessor
            Proof:
              The problem is already closed. The intended complexity is O(1).
        
      *** 1.1.1.1.1.1.1.2.2 Progress [(?,O(n^1))]  ***
          Considered Problem:
            Strict DP Rules:
              check#(rest(x)) -> c_4(check#(x))
              check#(sent(x)) -> c_5(check#(x))
            Strict TRS Rules:
              
            Weak DP Rules:
              check#(cons(x,y)) -> c_2(check#(y))
              check#(cons(x,y)) -> c_3(check#(x))
              top#(sent(x)) -> check#(rest(x))
              top#(sent(x)) -> top#(check(rest(x)))
            Weak TRS Rules:
              check(cons(x,y)) -> cons(x,y)
              check(cons(x,y)) -> cons(x,check(y))
              check(cons(x,y)) -> cons(check(x),y)
              check(rest(x)) -> rest(check(x))
              check(sent(x)) -> sent(check(x))
              rest(cons(x,y)) -> sent(y)
              rest(nil()) -> sent(nil())
            Signature:
              {check/1,rest/1,top/1,check#/1,rest#/1,top#/1} / {cons/2,nil/0,sent/1,c_1/0,c_2/1,c_3/1,c_4/1,c_5/1,c_6/0,c_7/0,c_8/2}
            Obligation:
              Innermost
              basic terms: {check#,rest#,top#}/{cons,nil,sent}
          Applied Processor:
            PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy}}
          Proof:
            We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy} to orient following rules strictly:
              1: check#(rest(x)) ->
                   c_4(check#(x))  
              2: check#(sent(x)) ->
                   c_5(check#(x))  
              
            The strictly oriented rules are moved into the weak component.
        *** 1.1.1.1.1.1.1.2.2.1 Progress [(?,O(n^1))]  ***
            Considered Problem:
              Strict DP Rules:
                check#(rest(x)) -> c_4(check#(x))
                check#(sent(x)) -> c_5(check#(x))
              Strict TRS Rules:
                
              Weak DP Rules:
                check#(cons(x,y)) -> c_2(check#(y))
                check#(cons(x,y)) -> c_3(check#(x))
                top#(sent(x)) -> check#(rest(x))
                top#(sent(x)) -> top#(check(rest(x)))
              Weak TRS Rules:
                check(cons(x,y)) -> cons(x,y)
                check(cons(x,y)) -> cons(x,check(y))
                check(cons(x,y)) -> cons(check(x),y)
                check(rest(x)) -> rest(check(x))
                check(sent(x)) -> sent(check(x))
                rest(cons(x,y)) -> sent(y)
                rest(nil()) -> sent(nil())
              Signature:
                {check/1,rest/1,top/1,check#/1,rest#/1,top#/1} / {cons/2,nil/0,sent/1,c_1/0,c_2/1,c_3/1,c_4/1,c_5/1,c_6/0,c_7/0,c_8/2}
              Obligation:
                Innermost
                basic terms: {check#,rest#,top#}/{cons,nil,sent}
            Applied Processor:
              NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation any intersect of rules of CDG leaf and strict-rules, greedy = NoGreedy}
            Proof:
              We apply a matrix interpretation of kind constructor based matrix interpretation:
              The following argument positions are considered usable:
                uargs(c_2) = {1},
                uargs(c_3) = {1},
                uargs(c_4) = {1},
                uargs(c_5) = {1}
              
              Following symbols are considered usable:
                {check,rest,check#,rest#,top#}
              TcT has computed the following interpretation:
                 p(check) = [1] x1 + [0]         
                  p(cons) = [1] x1 + [1] x2 + [0]
                   p(nil) = [1]                  
                  p(rest) = [1] x1 + [2]         
                  p(sent) = [1] x1 + [2]         
                   p(top) = [0]                  
                p(check#) = [8] x1 + [0]         
                 p(rest#) = [1] x1 + [2]         
                  p(top#) = [8] x1 + [7]         
                   p(c_1) = [4]                  
                   p(c_2) = [1] x1 + [0]         
                   p(c_3) = [1] x1 + [0]         
                   p(c_4) = [1] x1 + [6]         
                   p(c_5) = [1] x1 + [9]         
                   p(c_6) = [2]                  
                   p(c_7) = [0]                  
                   p(c_8) = [2] x1 + [1] x2 + [2]
              
              Following rules are strictly oriented:
              check#(rest(x)) = [8] x + [16]  
                              > [8] x + [6]   
                              = c_4(check#(x))
              
              check#(sent(x)) = [8] x + [16]  
                              > [8] x + [9]   
                              = c_5(check#(x))
              
              
              Following rules are (at-least) weakly oriented:
              check#(cons(x,y)) =  [8] x + [8] y + [0] 
                                >= [8] y + [0]         
                                =  c_2(check#(y))      
              
              check#(cons(x,y)) =  [8] x + [8] y + [0] 
                                >= [8] x + [0]         
                                =  c_3(check#(x))      
              
                  top#(sent(x)) =  [8] x + [23]        
                                >= [8] x + [16]        
                                =  check#(rest(x))     
              
                  top#(sent(x)) =  [8] x + [23]        
                                >= [8] x + [23]        
                                =  top#(check(rest(x)))
              
               check(cons(x,y)) =  [1] x + [1] y + [0] 
                                >= [1] x + [1] y + [0] 
                                =  cons(x,y)           
              
               check(cons(x,y)) =  [1] x + [1] y + [0] 
                                >= [1] x + [1] y + [0] 
                                =  cons(x,check(y))    
              
               check(cons(x,y)) =  [1] x + [1] y + [0] 
                                >= [1] x + [1] y + [0] 
                                =  cons(check(x),y)    
              
                 check(rest(x)) =  [1] x + [2]         
                                >= [1] x + [2]         
                                =  rest(check(x))      
              
                 check(sent(x)) =  [1] x + [2]         
                                >= [1] x + [2]         
                                =  sent(check(x))      
              
                rest(cons(x,y)) =  [1] x + [1] y + [2] 
                                >= [1] y + [2]         
                                =  sent(y)             
              
                    rest(nil()) =  [3]                 
                                >= [3]                 
                                =  sent(nil())         
              
        *** 1.1.1.1.1.1.1.2.2.1.1 Progress [(?,O(1))]  ***
            Considered Problem:
              Strict DP Rules:
                
              Strict TRS Rules:
                
              Weak DP Rules:
                check#(cons(x,y)) -> c_2(check#(y))
                check#(cons(x,y)) -> c_3(check#(x))
                check#(rest(x)) -> c_4(check#(x))
                check#(sent(x)) -> c_5(check#(x))
                top#(sent(x)) -> check#(rest(x))
                top#(sent(x)) -> top#(check(rest(x)))
              Weak TRS Rules:
                check(cons(x,y)) -> cons(x,y)
                check(cons(x,y)) -> cons(x,check(y))
                check(cons(x,y)) -> cons(check(x),y)
                check(rest(x)) -> rest(check(x))
                check(sent(x)) -> sent(check(x))
                rest(cons(x,y)) -> sent(y)
                rest(nil()) -> sent(nil())
              Signature:
                {check/1,rest/1,top/1,check#/1,rest#/1,top#/1} / {cons/2,nil/0,sent/1,c_1/0,c_2/1,c_3/1,c_4/1,c_5/1,c_6/0,c_7/0,c_8/2}
              Obligation:
                Innermost
                basic terms: {check#,rest#,top#}/{cons,nil,sent}
            Applied Processor:
              Assumption
            Proof:
              ()
        
        *** 1.1.1.1.1.1.1.2.2.2 Progress [(O(1),O(1))]  ***
            Considered Problem:
              Strict DP Rules:
                
              Strict TRS Rules:
                
              Weak DP Rules:
                check#(cons(x,y)) -> c_2(check#(y))
                check#(cons(x,y)) -> c_3(check#(x))
                check#(rest(x)) -> c_4(check#(x))
                check#(sent(x)) -> c_5(check#(x))
                top#(sent(x)) -> check#(rest(x))
                top#(sent(x)) -> top#(check(rest(x)))
              Weak TRS Rules:
                check(cons(x,y)) -> cons(x,y)
                check(cons(x,y)) -> cons(x,check(y))
                check(cons(x,y)) -> cons(check(x),y)
                check(rest(x)) -> rest(check(x))
                check(sent(x)) -> sent(check(x))
                rest(cons(x,y)) -> sent(y)
                rest(nil()) -> sent(nil())
              Signature:
                {check/1,rest/1,top/1,check#/1,rest#/1,top#/1} / {cons/2,nil/0,sent/1,c_1/0,c_2/1,c_3/1,c_4/1,c_5/1,c_6/0,c_7/0,c_8/2}
              Obligation:
                Innermost
                basic terms: {check#,rest#,top#}/{cons,nil,sent}
            Applied Processor:
              RemoveWeakSuffixes
            Proof:
              Consider the dependency graph
                1:W:check#(cons(x,y)) -> c_2(check#(y))
                   -->_1 check#(sent(x)) -> c_5(check#(x)):4
                   -->_1 check#(rest(x)) -> c_4(check#(x)):3
                   -->_1 check#(cons(x,y)) -> c_3(check#(x)):2
                   -->_1 check#(cons(x,y)) -> c_2(check#(y)):1
                
                2:W:check#(cons(x,y)) -> c_3(check#(x))
                   -->_1 check#(sent(x)) -> c_5(check#(x)):4
                   -->_1 check#(rest(x)) -> c_4(check#(x)):3
                   -->_1 check#(cons(x,y)) -> c_3(check#(x)):2
                   -->_1 check#(cons(x,y)) -> c_2(check#(y)):1
                
                3:W:check#(rest(x)) -> c_4(check#(x))
                   -->_1 check#(sent(x)) -> c_5(check#(x)):4
                   -->_1 check#(rest(x)) -> c_4(check#(x)):3
                   -->_1 check#(cons(x,y)) -> c_3(check#(x)):2
                   -->_1 check#(cons(x,y)) -> c_2(check#(y)):1
                
                4:W:check#(sent(x)) -> c_5(check#(x))
                   -->_1 check#(sent(x)) -> c_5(check#(x)):4
                   -->_1 check#(rest(x)) -> c_4(check#(x)):3
                   -->_1 check#(cons(x,y)) -> c_3(check#(x)):2
                   -->_1 check#(cons(x,y)) -> c_2(check#(y)):1
                
                5:W:top#(sent(x)) -> check#(rest(x))
                   -->_1 check#(sent(x)) -> c_5(check#(x)):4
                   -->_1 check#(rest(x)) -> c_4(check#(x)):3
                   -->_1 check#(cons(x,y)) -> c_3(check#(x)):2
                   -->_1 check#(cons(x,y)) -> c_2(check#(y)):1
                
                6:W:top#(sent(x)) -> top#(check(rest(x)))
                   -->_1 top#(sent(x)) -> top#(check(rest(x))):6
                   -->_1 top#(sent(x)) -> check#(rest(x)):5
                
              The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
                6: top#(sent(x)) ->                
                     top#(check(rest(x)))          
                5: top#(sent(x)) -> check#(rest(x))
                1: check#(cons(x,y)) ->            
                     c_2(check#(y))                
                4: check#(sent(x)) ->              
                     c_5(check#(x))                
                3: check#(rest(x)) ->              
                     c_4(check#(x))                
                2: check#(cons(x,y)) ->            
                     c_3(check#(x))                
        *** 1.1.1.1.1.1.1.2.2.2.1 Progress [(O(1),O(1))]  ***
            Considered Problem:
              Strict DP Rules:
                
              Strict TRS Rules:
                
              Weak DP Rules:
                
              Weak TRS Rules:
                check(cons(x,y)) -> cons(x,y)
                check(cons(x,y)) -> cons(x,check(y))
                check(cons(x,y)) -> cons(check(x),y)
                check(rest(x)) -> rest(check(x))
                check(sent(x)) -> sent(check(x))
                rest(cons(x,y)) -> sent(y)
                rest(nil()) -> sent(nil())
              Signature:
                {check/1,rest/1,top/1,check#/1,rest#/1,top#/1} / {cons/2,nil/0,sent/1,c_1/0,c_2/1,c_3/1,c_4/1,c_5/1,c_6/0,c_7/0,c_8/2}
              Obligation:
                Innermost
                basic terms: {check#,rest#,top#}/{cons,nil,sent}
            Applied Processor:
              EmptyProcessor
            Proof:
              The problem is already closed. The intended complexity is O(1).
        
  *** 1.1.1.1.1.1.2 Progress [(?,O(n^1))]  ***
      Considered Problem:
        Strict DP Rules:
          top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x)))
        Strict TRS Rules:
          
        Weak DP Rules:
          check#(cons(x,y)) -> c_2(check#(y))
          check#(cons(x,y)) -> c_3(check#(x))
          check#(rest(x)) -> c_4(check#(x))
          check#(sent(x)) -> c_5(check#(x))
        Weak TRS Rules:
          check(cons(x,y)) -> cons(x,y)
          check(cons(x,y)) -> cons(x,check(y))
          check(cons(x,y)) -> cons(check(x),y)
          check(rest(x)) -> rest(check(x))
          check(sent(x)) -> sent(check(x))
          rest(cons(x,y)) -> sent(y)
          rest(nil()) -> sent(nil())
        Signature:
          {check/1,rest/1,top/1,check#/1,rest#/1,top#/1} / {cons/2,nil/0,sent/1,c_1/0,c_2/1,c_3/1,c_4/1,c_5/1,c_6/0,c_7/0,c_8/2}
        Obligation:
          Innermost
          basic terms: {check#,rest#,top#}/{cons,nil,sent}
      Applied Processor:
        RemoveWeakSuffixes
      Proof:
        Consider the dependency graph
          1:S:top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x)))
             -->_2 check#(sent(x)) -> c_5(check#(x)):5
             -->_2 check#(rest(x)) -> c_4(check#(x)):4
             -->_2 check#(cons(x,y)) -> c_3(check#(x)):3
             -->_2 check#(cons(x,y)) -> c_2(check#(y)):2
             -->_1 top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x))):1
          
          2:W:check#(cons(x,y)) -> c_2(check#(y))
             -->_1 check#(sent(x)) -> c_5(check#(x)):5
             -->_1 check#(rest(x)) -> c_4(check#(x)):4
             -->_1 check#(cons(x,y)) -> c_3(check#(x)):3
             -->_1 check#(cons(x,y)) -> c_2(check#(y)):2
          
          3:W:check#(cons(x,y)) -> c_3(check#(x))
             -->_1 check#(sent(x)) -> c_5(check#(x)):5
             -->_1 check#(rest(x)) -> c_4(check#(x)):4
             -->_1 check#(cons(x,y)) -> c_3(check#(x)):3
             -->_1 check#(cons(x,y)) -> c_2(check#(y)):2
          
          4:W:check#(rest(x)) -> c_4(check#(x))
             -->_1 check#(sent(x)) -> c_5(check#(x)):5
             -->_1 check#(rest(x)) -> c_4(check#(x)):4
             -->_1 check#(cons(x,y)) -> c_3(check#(x)):3
             -->_1 check#(cons(x,y)) -> c_2(check#(y)):2
          
          5:W:check#(sent(x)) -> c_5(check#(x))
             -->_1 check#(sent(x)) -> c_5(check#(x)):5
             -->_1 check#(rest(x)) -> c_4(check#(x)):4
             -->_1 check#(cons(x,y)) -> c_3(check#(x)):3
             -->_1 check#(cons(x,y)) -> c_2(check#(y)):2
          
        The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
          5: check#(sent(x)) ->  
               c_5(check#(x))    
          4: check#(rest(x)) ->  
               c_4(check#(x))    
          3: check#(cons(x,y)) ->
               c_3(check#(x))    
          2: check#(cons(x,y)) ->
               c_2(check#(y))    
  *** 1.1.1.1.1.1.2.1 Progress [(?,O(n^1))]  ***
      Considered Problem:
        Strict DP Rules:
          top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x)))
        Strict TRS Rules:
          
        Weak DP Rules:
          
        Weak TRS Rules:
          check(cons(x,y)) -> cons(x,y)
          check(cons(x,y)) -> cons(x,check(y))
          check(cons(x,y)) -> cons(check(x),y)
          check(rest(x)) -> rest(check(x))
          check(sent(x)) -> sent(check(x))
          rest(cons(x,y)) -> sent(y)
          rest(nil()) -> sent(nil())
        Signature:
          {check/1,rest/1,top/1,check#/1,rest#/1,top#/1} / {cons/2,nil/0,sent/1,c_1/0,c_2/1,c_3/1,c_4/1,c_5/1,c_6/0,c_7/0,c_8/2}
        Obligation:
          Innermost
          basic terms: {check#,rest#,top#}/{cons,nil,sent}
      Applied Processor:
        SimplifyRHS
      Proof:
        Consider the dependency graph
          1:S:top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x)))
             -->_1 top#(sent(x)) -> c_8(top#(check(rest(x))),check#(rest(x))):1
          
        Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified:
          top#(sent(x)) -> c_8(top#(check(rest(x))))
  *** 1.1.1.1.1.1.2.1.1 Progress [(?,O(n^1))]  ***
      Considered Problem:
        Strict DP Rules:
          top#(sent(x)) -> c_8(top#(check(rest(x))))
        Strict TRS Rules:
          
        Weak DP Rules:
          
        Weak TRS Rules:
          check(cons(x,y)) -> cons(x,y)
          check(cons(x,y)) -> cons(x,check(y))
          check(cons(x,y)) -> cons(check(x),y)
          check(rest(x)) -> rest(check(x))
          check(sent(x)) -> sent(check(x))
          rest(cons(x,y)) -> sent(y)
          rest(nil()) -> sent(nil())
        Signature:
          {check/1,rest/1,top/1,check#/1,rest#/1,top#/1} / {cons/2,nil/0,sent/1,c_1/0,c_2/1,c_3/1,c_4/1,c_5/1,c_6/0,c_7/0,c_8/1}
        Obligation:
          Innermost
          basic terms: {check#,rest#,top#}/{cons,nil,sent}
      Applied Processor:
        PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy}}
      Proof:
        We first use the processor NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy} to orient following rules strictly:
          1: top#(sent(x)) ->           
               c_8(top#(check(rest(x))))
          
        The strictly oriented rules are moved into the weak component.
    *** 1.1.1.1.1.1.2.1.1.1 Progress [(?,O(n^1))]  ***
        Considered Problem:
          Strict DP Rules:
            top#(sent(x)) -> c_8(top#(check(rest(x))))
          Strict TRS Rules:
            
          Weak DP Rules:
            
          Weak TRS Rules:
            check(cons(x,y)) -> cons(x,y)
            check(cons(x,y)) -> cons(x,check(y))
            check(cons(x,y)) -> cons(check(x),y)
            check(rest(x)) -> rest(check(x))
            check(sent(x)) -> sent(check(x))
            rest(cons(x,y)) -> sent(y)
            rest(nil()) -> sent(nil())
          Signature:
            {check/1,rest/1,top/1,check#/1,rest#/1,top#/1} / {cons/2,nil/0,sent/1,c_1/0,c_2/1,c_3/1,c_4/1,c_5/1,c_6/0,c_7/0,c_8/1}
          Obligation:
            Innermost
            basic terms: {check#,rest#,top#}/{cons,nil,sent}
        Applied Processor:
          NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation any intersect of rules of CDG leaf and strict-rules, greedy = NoGreedy}
        Proof:
          We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 2 non-zero interpretation-entries in the diagonal of the component-wise maxima):
          The following argument positions are considered usable:
            uargs(c_8) = {1}
          
          Following symbols are considered usable:
            {check,rest,check#,rest#,top#}
          TcT has computed the following interpretation:
             p(check) = [0 2 0]      [0]             
                        [0 1 0] x1 + [0]             
                        [0 0 0]      [0]             
              p(cons) = [0 2 2]      [0 2 3]      [0]
                        [0 1 1] x1 + [0 1 2] x2 + [2]
                        [0 0 0]      [0 0 0]      [0]
               p(nil) = [2]                          
                        [0]                          
                        [2]                          
              p(rest) = [1 0 2]      [0]             
                        [0 1 1] x1 + [0]             
                        [0 0 0]      [0]             
              p(sent) = [0 2 3]      [0]             
                        [0 1 0] x1 + [2]             
                        [0 0 0]      [0]             
               p(top) = [0 1 0]      [1]             
                        [1 0 0] x1 + [0]             
                        [1 1 0]      [1]             
            p(check#) = [0 0 2]      [0]             
                        [0 0 0] x1 + [1]             
                        [0 2 2]      [0]             
             p(rest#) = [0 2 0]      [2]             
                        [0 2 0] x1 + [2]             
                        [1 0 2]      [0]             
              p(top#) = [1 1 0]      [0]             
                        [0 1 2] x1 + [1]             
                        [2 0 1]      [3]             
               p(c_1) = [0]                          
                        [1]                          
                        [1]                          
               p(c_2) = [1 0 2]      [0]             
                        [2 1 1] x1 + [2]             
                        [1 1 0]      [1]             
               p(c_3) = [1 0 0]      [0]             
                        [0 2 2] x1 + [2]             
                        [2 0 0]      [0]             
               p(c_4) = [0 0 0]      [2]             
                        [0 0 0] x1 + [2]             
                        [0 0 1]      [1]             
               p(c_5) = [0 0 0]      [2]             
                        [0 0 0] x1 + [2]             
                        [0 1 0]      [0]             
               p(c_6) = [2]                          
                        [0]                          
                        [2]                          
               p(c_7) = [1]                          
                        [0]                          
                        [0]                          
               p(c_8) = [1 0 0]      [0]             
                        [0 0 0] x1 + [1]             
                        [1 1 0]      [2]             
          
          Following rules are strictly oriented:
          top#(sent(x)) = [0 3 3]     [2]          
                          [0 1 0] x + [3]          
                          [0 4 6]     [3]          
                        > [0 3 3]     [0]          
                          [0 0 0] x + [1]          
                          [0 4 4]     [3]          
                        = c_8(top#(check(rest(x))))
          
          
          Following rules are (at-least) weakly oriented:
          check(cons(x,y)) =  [0 2 2]     [0 2 4]     [4]
                              [0 1 1] x + [0 1 2] y + [2]
                              [0 0 0]     [0 0 0]     [0]
                           >= [0 2 2]     [0 2 3]     [0]
                              [0 1 1] x + [0 1 2] y + [2]
                              [0 0 0]     [0 0 0]     [0]
                           =  cons(x,y)                  
          
          check(cons(x,y)) =  [0 2 2]     [0 2 4]     [4]
                              [0 1 1] x + [0 1 2] y + [2]
                              [0 0 0]     [0 0 0]     [0]
                           >= [0 2 2]     [0 2 0]     [0]
                              [0 1 1] x + [0 1 0] y + [2]
                              [0 0 0]     [0 0 0]     [0]
                           =  cons(x,check(y))           
          
          check(cons(x,y)) =  [0 2 2]     [0 2 4]     [4]
                              [0 1 1] x + [0 1 2] y + [2]
                              [0 0 0]     [0 0 0]     [0]
                           >= [0 2 0]     [0 2 3]     [0]
                              [0 1 0] x + [0 1 2] y + [2]
                              [0 0 0]     [0 0 0]     [0]
                           =  cons(check(x),y)           
          
            check(rest(x)) =  [0 2 2]     [0]            
                              [0 1 1] x + [0]            
                              [0 0 0]     [0]            
                           >= [0 2 0]     [0]            
                              [0 1 0] x + [0]            
                              [0 0 0]     [0]            
                           =  rest(check(x))             
          
            check(sent(x)) =  [0 2 0]     [4]            
                              [0 1 0] x + [2]            
                              [0 0 0]     [0]            
                           >= [0 2 0]     [0]            
                              [0 1 0] x + [2]            
                              [0 0 0]     [0]            
                           =  sent(check(x))             
          
           rest(cons(x,y)) =  [0 2 2]     [0 2 3]     [0]
                              [0 1 1] x + [0 1 2] y + [2]
                              [0 0 0]     [0 0 0]     [0]
                           >= [0 2 3]     [0]            
                              [0 1 0] y + [2]            
                              [0 0 0]     [0]            
                           =  sent(y)                    
          
               rest(nil()) =  [6]                        
                              [2]                        
                              [0]                        
                           >= [6]                        
                              [2]                        
                              [0]                        
                           =  sent(nil())                
          
    *** 1.1.1.1.1.1.2.1.1.1.1 Progress [(?,O(1))]  ***
        Considered Problem:
          Strict DP Rules:
            
          Strict TRS Rules:
            
          Weak DP Rules:
            top#(sent(x)) -> c_8(top#(check(rest(x))))
          Weak TRS Rules:
            check(cons(x,y)) -> cons(x,y)
            check(cons(x,y)) -> cons(x,check(y))
            check(cons(x,y)) -> cons(check(x),y)
            check(rest(x)) -> rest(check(x))
            check(sent(x)) -> sent(check(x))
            rest(cons(x,y)) -> sent(y)
            rest(nil()) -> sent(nil())
          Signature:
            {check/1,rest/1,top/1,check#/1,rest#/1,top#/1} / {cons/2,nil/0,sent/1,c_1/0,c_2/1,c_3/1,c_4/1,c_5/1,c_6/0,c_7/0,c_8/1}
          Obligation:
            Innermost
            basic terms: {check#,rest#,top#}/{cons,nil,sent}
        Applied Processor:
          Assumption
        Proof:
          ()
    
    *** 1.1.1.1.1.1.2.1.1.2 Progress [(O(1),O(1))]  ***
        Considered Problem:
          Strict DP Rules:
            
          Strict TRS Rules:
            
          Weak DP Rules:
            top#(sent(x)) -> c_8(top#(check(rest(x))))
          Weak TRS Rules:
            check(cons(x,y)) -> cons(x,y)
            check(cons(x,y)) -> cons(x,check(y))
            check(cons(x,y)) -> cons(check(x),y)
            check(rest(x)) -> rest(check(x))
            check(sent(x)) -> sent(check(x))
            rest(cons(x,y)) -> sent(y)
            rest(nil()) -> sent(nil())
          Signature:
            {check/1,rest/1,top/1,check#/1,rest#/1,top#/1} / {cons/2,nil/0,sent/1,c_1/0,c_2/1,c_3/1,c_4/1,c_5/1,c_6/0,c_7/0,c_8/1}
          Obligation:
            Innermost
            basic terms: {check#,rest#,top#}/{cons,nil,sent}
        Applied Processor:
          RemoveWeakSuffixes
        Proof:
          Consider the dependency graph
            1:W:top#(sent(x)) -> c_8(top#(check(rest(x))))
               -->_1 top#(sent(x)) -> c_8(top#(check(rest(x)))):1
            
          The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
            1: top#(sent(x)) ->           
                 c_8(top#(check(rest(x))))
    *** 1.1.1.1.1.1.2.1.1.2.1 Progress [(O(1),O(1))]  ***
        Considered Problem:
          Strict DP Rules:
            
          Strict TRS Rules:
            
          Weak DP Rules:
            
          Weak TRS Rules:
            check(cons(x,y)) -> cons(x,y)
            check(cons(x,y)) -> cons(x,check(y))
            check(cons(x,y)) -> cons(check(x),y)
            check(rest(x)) -> rest(check(x))
            check(sent(x)) -> sent(check(x))
            rest(cons(x,y)) -> sent(y)
            rest(nil()) -> sent(nil())
          Signature:
            {check/1,rest/1,top/1,check#/1,rest#/1,top#/1} / {cons/2,nil/0,sent/1,c_1/0,c_2/1,c_3/1,c_4/1,c_5/1,c_6/0,c_7/0,c_8/1}
          Obligation:
            Innermost
            basic terms: {check#,rest#,top#}/{cons,nil,sent}
        Applied Processor:
          EmptyProcessor
        Proof:
          The problem is already closed. The intended complexity is O(1).