*** 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:
        Full
        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:
        Full
        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:
        {}
      TcT has computed the following interpretation:
          p(append) = [4] x1 + [1] x2 + [8]
            p(cons) = [1] x1 + [1] x2 + [4]
           p(false) = [1]                  
              p(hd) = [2] x1 + [4]         
        p(ifappend) = [1] x2 + [4] x3 + [0]
        p(is_empty) = [8]                  
             p(nil) = [2]                  
              p(tl) = [2] x1 + [2]         
            p(true) = [8]                  
      
      Following rules are strictly oriented:
                  append(l1,l2) = [4] l1 + [1] l2 + [8]        
                                > [4] l1 + [1] l2 + [0]        
                                = ifappend(l1,l2,l1)           
      
      ifappend(l1,l2,cons(x,l)) = [4] l + [1] l2 + [4] x + [16]
                                > [4] l + [1] l2 + [1] x + [12]
                                = cons(x,append(l,l2))         
      
          ifappend(l1,l2,nil()) = [1] l2 + [8]                 
                                > [1] l2 + [0]                 
                                = l2                           
      
            is_empty(cons(x,l)) = [8]                          
                                > [1]                          
                                = false()                      
      
      
      Following rules are (at-least) weakly oriented:
        hd(cons(x,l)) =  [2] l + [2] x + [12]
                      >= [1] x + [0]         
                      =  x                   
      
      is_empty(nil()) =  [8]                 
                      >= [8]                 
                      =  true()              
      
        tl(cons(x,l)) =  [2] l + [2] x + [10]
                      >= [1] l + [0]         
                      =  l                   
      
*** 1.1.1 Progress [(O(1),O(n^1))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        is_empty(nil()) -> true()
      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()
        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:
        Full
        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) = [1]                  
                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(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                          
        
              is_empty(cons(x,l)) =  [1]                         
                                  >= [1]                         
                                  =  false()                     
        
                    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.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:
        Full
        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).