*** 1 Progress [(O(1),O(n^1))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        append(l1,l2) -> ifappend(l1,l2,l1)
        hd(cons(x,l)) -> x
        ifappend(l1,l2,cons(x,l)) -> cons(x,append(l,l2))
        ifappend(l1,l2,nil()) -> l2
        is_empty(cons(x,l)) -> false()
        is_empty(nil()) -> true()
        tl(cons(x,l)) -> l
      Weak DP Rules:
        
      Weak TRS Rules:
        
      Signature:
        {append/2,hd/1,ifappend/3,is_empty/1,tl/1} / {cons/2,false/0,nil/0,true/0}
      Obligation:
        Innermost
        basic terms: {append,hd,ifappend,is_empty,tl}/{cons,false,nil,true}
    Applied Processor:
      WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    Proof:
      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) = {2}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
            p(append) = [1] x1 + [2] x2 + [0]
              p(cons) = [1] x1 + [1] x2 + [9]
             p(false) = [0]                  
                p(hd) = [2] x1 + [0]         
          p(ifappend) = [2] x2 + [1] x3 + [0]
          p(is_empty) = [0]                  
               p(nil) = [0]                  
                p(tl) = [2] x1 + [0]         
              p(true) = [0]                  
        
        Following rules are strictly oriented:
        hd(cons(x,l)) = [2] l + [2] x + [18]
                      > [1] x + [0]         
                      = x                   
        
        tl(cons(x,l)) = [2] l + [2] x + [18]
                      > [1] l + [0]         
                      = l                   
        
        
        Following rules are (at-least) weakly oriented:
                    append(l1,l2) =  [1] l1 + [2] l2 + [0]       
                                  >= [1] l1 + [2] l2 + [0]       
                                  =  ifappend(l1,l2,l1)          
        
        ifappend(l1,l2,cons(x,l)) =  [1] l + [2] l2 + [1] x + [9]
                                  >= [1] l + [2] l2 + [1] x + [9]
                                  =  cons(x,append(l,l2))        
        
            ifappend(l1,l2,nil()) =  [2] l2 + [0]                
                                  >= [1] l2 + [0]                
                                  =  l2                          
        
              is_empty(cons(x,l)) =  [0]                         
                                  >= [0]                         
                                  =  false()                     
        
                  is_empty(nil()) =  [0]                         
                                  >= [0]                         
                                  =  true()                      
        
      Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** 1.1 Progress [(O(1),O(n^1))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        append(l1,l2) -> ifappend(l1,l2,l1)
        ifappend(l1,l2,cons(x,l)) -> cons(x,append(l,l2))
        ifappend(l1,l2,nil()) -> l2
        is_empty(cons(x,l)) -> false()
        is_empty(nil()) -> true()
      Weak DP Rules:
        
      Weak TRS Rules:
        hd(cons(x,l)) -> x
        tl(cons(x,l)) -> l
      Signature:
        {append/2,hd/1,ifappend/3,is_empty/1,tl/1} / {cons/2,false/0,nil/0,true/0}
      Obligation:
        Innermost
        basic terms: {append,hd,ifappend,is_empty,tl}/{cons,false,nil,true}
    Applied Processor:
      WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    Proof:
      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) = {2}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
            p(append) = [1] x1 + [2] x2 + [0]
              p(cons) = [1] x1 + [1] x2 + [0]
             p(false) = [0]                  
                p(hd) = [1] x1 + [0]         
          p(ifappend) = [2] x2 + [1] x3 + [0]
          p(is_empty) = [1]                  
               p(nil) = [0]                  
                p(tl) = [2] x1 + [0]         
              p(true) = [0]                  
        
        Following rules are strictly oriented:
        is_empty(cons(x,l)) = [1]    
                            > [0]    
                            = false()
        
            is_empty(nil()) = [1]    
                            > [0]    
                            = true() 
        
        
        Following rules are (at-least) weakly oriented:
                    append(l1,l2) =  [1] l1 + [2] l2 + [0]       
                                  >= [1] l1 + [2] l2 + [0]       
                                  =  ifappend(l1,l2,l1)          
        
                    hd(cons(x,l)) =  [1] l + [1] x + [0]         
                                  >= [1] x + [0]                 
                                  =  x                           
        
        ifappend(l1,l2,cons(x,l)) =  [1] l + [2] l2 + [1] x + [0]
                                  >= [1] l + [2] l2 + [1] x + [0]
                                  =  cons(x,append(l,l2))        
        
            ifappend(l1,l2,nil()) =  [2] l2 + [0]                
                                  >= [1] l2 + [0]                
                                  =  l2                          
        
                    tl(cons(x,l)) =  [2] l + [2] x + [0]         
                                  >= [1] l + [0]                 
                                  =  l                           
        
      Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** 1.1.1 Progress [(O(1),O(n^1))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        append(l1,l2) -> ifappend(l1,l2,l1)
        ifappend(l1,l2,cons(x,l)) -> cons(x,append(l,l2))
        ifappend(l1,l2,nil()) -> l2
      Weak DP Rules:
        
      Weak TRS Rules:
        hd(cons(x,l)) -> x
        is_empty(cons(x,l)) -> false()
        is_empty(nil()) -> true()
        tl(cons(x,l)) -> l
      Signature:
        {append/2,hd/1,ifappend/3,is_empty/1,tl/1} / {cons/2,false/0,nil/0,true/0}
      Obligation:
        Innermost
        basic terms: {append,hd,ifappend,is_empty,tl}/{cons,false,nil,true}
    Applied Processor:
      NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules, greedy = NoGreedy}
    Proof:
      We apply a matrix interpretation of kind constructor based matrix interpretation:
      The following argument positions are considered usable:
        uargs(cons) = {2}
      
      Following symbols are considered usable:
        {append,hd,ifappend,is_empty,tl}
      TcT has computed the following interpretation:
          p(append) = [4] x1 + [1] x2 + [0]
            p(cons) = [1] x1 + [1] x2 + [0]
           p(false) = [1]                  
              p(hd) = [1] x1 + [9]         
        p(ifappend) = [1] x2 + [4] x3 + [0]
        p(is_empty) = [10]                 
             p(nil) = [2]                  
              p(tl) = [1] x1 + [0]         
            p(true) = [2]                  
      
      Following rules are strictly oriented:
      ifappend(l1,l2,nil()) = [1] l2 + [8]
                            > [1] l2 + [0]
                            = l2          
      
      
      Following rules are (at-least) weakly oriented:
                  append(l1,l2) =  [4] l1 + [1] l2 + [0]       
                                >= [4] l1 + [1] l2 + [0]       
                                =  ifappend(l1,l2,l1)          
      
                  hd(cons(x,l)) =  [1] l + [1] x + [9]         
                                >= [1] x + [0]                 
                                =  x                           
      
      ifappend(l1,l2,cons(x,l)) =  [4] l + [1] l2 + [4] x + [0]
                                >= [4] l + [1] l2 + [1] x + [0]
                                =  cons(x,append(l,l2))        
      
            is_empty(cons(x,l)) =  [10]                        
                                >= [1]                         
                                =  false()                     
      
                is_empty(nil()) =  [10]                        
                                >= [2]                         
                                =  true()                      
      
                  tl(cons(x,l)) =  [1] l + [1] x + [0]         
                                >= [1] l + [0]                 
                                =  l                           
      
*** 1.1.1.1 Progress [(O(1),O(n^1))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        append(l1,l2) -> ifappend(l1,l2,l1)
        ifappend(l1,l2,cons(x,l)) -> cons(x,append(l,l2))
      Weak DP Rules:
        
      Weak TRS Rules:
        hd(cons(x,l)) -> x
        ifappend(l1,l2,nil()) -> l2
        is_empty(cons(x,l)) -> false()
        is_empty(nil()) -> true()
        tl(cons(x,l)) -> l
      Signature:
        {append/2,hd/1,ifappend/3,is_empty/1,tl/1} / {cons/2,false/0,nil/0,true/0}
      Obligation:
        Innermost
        basic terms: {append,hd,ifappend,is_empty,tl}/{cons,false,nil,true}
    Applied Processor:
      WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    Proof:
      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) = {2}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
            p(append) = [8] x1 + [1] x2 + [10]
              p(cons) = [1] x1 + [1] x2 + [2] 
             p(false) = [2]                   
                p(hd) = [1] x1 + [10]         
          p(ifappend) = [1] x2 + [8] x3 + [8] 
          p(is_empty) = [4]                   
               p(nil) = [2]                   
                p(tl) = [2] x1 + [0]          
              p(true) = [4]                   
        
        Following rules are strictly oriented:
                    append(l1,l2) = [8] l1 + [1] l2 + [10]       
                                  > [8] l1 + [1] l2 + [8]        
                                  = ifappend(l1,l2,l1)           
        
        ifappend(l1,l2,cons(x,l)) = [8] l + [1] l2 + [8] x + [24]
                                  > [8] l + [1] l2 + [1] x + [12]
                                  = cons(x,append(l,l2))         
        
        
        Following rules are (at-least) weakly oriented:
                hd(cons(x,l)) =  [1] l + [1] x + [12]
                              >= [1] x + [0]         
                              =  x                   
        
        ifappend(l1,l2,nil()) =  [1] l2 + [24]       
                              >= [1] l2 + [0]        
                              =  l2                  
        
          is_empty(cons(x,l)) =  [4]                 
                              >= [2]                 
                              =  false()             
        
              is_empty(nil()) =  [4]                 
                              >= [4]                 
                              =  true()              
        
                tl(cons(x,l)) =  [2] l + [2] x + [4] 
                              >= [1] l + [0]         
                              =  l                   
        
      Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** 1.1.1.1.1 Progress [(O(1),O(1))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        
      Weak DP Rules:
        
      Weak TRS Rules:
        append(l1,l2) -> ifappend(l1,l2,l1)
        hd(cons(x,l)) -> x
        ifappend(l1,l2,cons(x,l)) -> cons(x,append(l,l2))
        ifappend(l1,l2,nil()) -> l2
        is_empty(cons(x,l)) -> false()
        is_empty(nil()) -> true()
        tl(cons(x,l)) -> l
      Signature:
        {append/2,hd/1,ifappend/3,is_empty/1,tl/1} / {cons/2,false/0,nil/0,true/0}
      Obligation:
        Innermost
        basic terms: {append,hd,ifappend,is_empty,tl}/{cons,false,nil,true}
    Applied Processor:
      EmptyProcessor
    Proof:
      The problem is already closed. The intended complexity is O(1).