*** 1 Progress [(O(1),O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        a__div(X1,X2) -> div(X1,X2)
        a__div(0(),s(Y)) -> 0()
        a__div(s(X),s(Y)) -> a__if(a__geq(X,Y),s(div(minus(X,Y),s(Y))),0())
        a__geq(X,0()) -> true()
        a__geq(X1,X2) -> geq(X1,X2)
        a__geq(0(),s(Y)) -> false()
        a__geq(s(X),s(Y)) -> a__geq(X,Y)
        a__if(X1,X2,X3) -> if(X1,X2,X3)
        a__if(false(),X,Y) -> mark(Y)
        a__if(true(),X,Y) -> mark(X)
        a__minus(X1,X2) -> minus(X1,X2)
        a__minus(0(),Y) -> 0()
        a__minus(s(X),s(Y)) -> a__minus(X,Y)
        mark(0()) -> 0()
        mark(div(X1,X2)) -> a__div(mark(X1),X2)
        mark(false()) -> false()
        mark(geq(X1,X2)) -> a__geq(X1,X2)
        mark(if(X1,X2,X3)) -> a__if(mark(X1),X2,X3)
        mark(minus(X1,X2)) -> a__minus(X1,X2)
        mark(s(X)) -> s(mark(X))
        mark(true()) -> true()
      Weak DP Rules:
        
      Weak TRS Rules:
        
      Signature:
        {a__div/2,a__geq/2,a__if/3,a__minus/2,mark/1} / {0/0,div/2,false/0,geq/2,if/3,minus/2,s/1,true/0}
      Obligation:
        Innermost
        basic terms: {a__div,a__geq,a__if,a__minus,mark}/{0,div,false,geq,if,minus,s,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(a__div) = {1},
          uargs(a__if) = {1},
          uargs(s) = {1}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                 p(0) = [0]         
            p(a__div) = [1] x1 + [1]
            p(a__geq) = [0]         
             p(a__if) = [1] x1 + [3]
          p(a__minus) = [0]         
               p(div) = [0]         
             p(false) = [0]         
               p(geq) = [0]         
                p(if) = [1] x1 + [0]
              p(mark) = [0]         
             p(minus) = [0]         
                 p(s) = [1] x1 + [0]
              p(true) = [0]         
        
        Following rules are strictly oriented:
             a__div(X1,X2) = [1] X1 + [1]
                           > [0]         
                           = div(X1,X2)  
        
          a__div(0(),s(Y)) = [1]         
                           > [0]         
                           = 0()         
        
           a__if(X1,X2,X3) = [1] X1 + [3]
                           > [1] X1 + [0]
                           = if(X1,X2,X3)
        
        a__if(false(),X,Y) = [3]         
                           > [0]         
                           = mark(Y)     
        
         a__if(true(),X,Y) = [3]         
                           > [0]         
                           = mark(X)     
        
        
        Following rules are (at-least) weakly oriented:
          a__div(s(X),s(Y)) =  [1] X + [1]                  
                            >= [3]                          
                            =  a__if(a__geq(X,Y)            
                                    ,s(div(minus(X,Y),s(Y)))
                                    ,0())                   
        
              a__geq(X,0()) =  [0]                          
                            >= [0]                          
                            =  true()                       
        
              a__geq(X1,X2) =  [0]                          
                            >= [0]                          
                            =  geq(X1,X2)                   
        
           a__geq(0(),s(Y)) =  [0]                          
                            >= [0]                          
                            =  false()                      
        
          a__geq(s(X),s(Y)) =  [0]                          
                            >= [0]                          
                            =  a__geq(X,Y)                  
        
            a__minus(X1,X2) =  [0]                          
                            >= [0]                          
                            =  minus(X1,X2)                 
        
            a__minus(0(),Y) =  [0]                          
                            >= [0]                          
                            =  0()                          
        
        a__minus(s(X),s(Y)) =  [0]                          
                            >= [0]                          
                            =  a__minus(X,Y)                
        
                  mark(0()) =  [0]                          
                            >= [0]                          
                            =  0()                          
        
           mark(div(X1,X2)) =  [0]                          
                            >= [1]                          
                            =  a__div(mark(X1),X2)          
        
              mark(false()) =  [0]                          
                            >= [0]                          
                            =  false()                      
        
           mark(geq(X1,X2)) =  [0]                          
                            >= [0]                          
                            =  a__geq(X1,X2)                
        
         mark(if(X1,X2,X3)) =  [0]                          
                            >= [3]                          
                            =  a__if(mark(X1),X2,X3)        
        
         mark(minus(X1,X2)) =  [0]                          
                            >= [0]                          
                            =  a__minus(X1,X2)              
        
                 mark(s(X)) =  [0]                          
                            >= [0]                          
                            =  s(mark(X))                   
        
               mark(true()) =  [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^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        a__div(s(X),s(Y)) -> a__if(a__geq(X,Y),s(div(minus(X,Y),s(Y))),0())
        a__geq(X,0()) -> true()
        a__geq(X1,X2) -> geq(X1,X2)
        a__geq(0(),s(Y)) -> false()
        a__geq(s(X),s(Y)) -> a__geq(X,Y)
        a__minus(X1,X2) -> minus(X1,X2)
        a__minus(0(),Y) -> 0()
        a__minus(s(X),s(Y)) -> a__minus(X,Y)
        mark(0()) -> 0()
        mark(div(X1,X2)) -> a__div(mark(X1),X2)
        mark(false()) -> false()
        mark(geq(X1,X2)) -> a__geq(X1,X2)
        mark(if(X1,X2,X3)) -> a__if(mark(X1),X2,X3)
        mark(minus(X1,X2)) -> a__minus(X1,X2)
        mark(s(X)) -> s(mark(X))
        mark(true()) -> true()
      Weak DP Rules:
        
      Weak TRS Rules:
        a__div(X1,X2) -> div(X1,X2)
        a__div(0(),s(Y)) -> 0()
        a__if(X1,X2,X3) -> if(X1,X2,X3)
        a__if(false(),X,Y) -> mark(Y)
        a__if(true(),X,Y) -> mark(X)
      Signature:
        {a__div/2,a__geq/2,a__if/3,a__minus/2,mark/1} / {0/0,div/2,false/0,geq/2,if/3,minus/2,s/1,true/0}
      Obligation:
        Innermost
        basic terms: {a__div,a__geq,a__if,a__minus,mark}/{0,div,false,geq,if,minus,s,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(a__div) = {1},
          uargs(a__if) = {1},
          uargs(s) = {1}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                 p(0) = [2]         
            p(a__div) = [1] x1 + [7]
            p(a__geq) = [6]         
             p(a__if) = [1] x1 + [4]
          p(a__minus) = [0]         
               p(div) = [1] x1 + [5]
             p(false) = [7]         
               p(geq) = [0]         
                p(if) = [1] x1 + [1]
              p(mark) = [2]         
             p(minus) = [1]         
                 p(s) = [1] x1 + [0]
              p(true) = [5]         
        
        Following rules are strictly oriented:
             a__geq(X,0()) = [6]            
                           > [5]            
                           = true()         
        
             a__geq(X1,X2) = [6]            
                           > [0]            
                           = geq(X1,X2)     
        
        mark(minus(X1,X2)) = [2]            
                           > [0]            
                           = a__minus(X1,X2)
        
        
        Following rules are (at-least) weakly oriented:
              a__div(X1,X2) =  [1] X1 + [7]                 
                            >= [1] X1 + [5]                 
                            =  div(X1,X2)                   
        
           a__div(0(),s(Y)) =  [9]                          
                            >= [2]                          
                            =  0()                          
        
          a__div(s(X),s(Y)) =  [1] X + [7]                  
                            >= [10]                         
                            =  a__if(a__geq(X,Y)            
                                    ,s(div(minus(X,Y),s(Y)))
                                    ,0())                   
        
           a__geq(0(),s(Y)) =  [6]                          
                            >= [7]                          
                            =  false()                      
        
          a__geq(s(X),s(Y)) =  [6]                          
                            >= [6]                          
                            =  a__geq(X,Y)                  
        
            a__if(X1,X2,X3) =  [1] X1 + [4]                 
                            >= [1] X1 + [1]                 
                            =  if(X1,X2,X3)                 
        
         a__if(false(),X,Y) =  [11]                         
                            >= [2]                          
                            =  mark(Y)                      
        
          a__if(true(),X,Y) =  [9]                          
                            >= [2]                          
                            =  mark(X)                      
        
            a__minus(X1,X2) =  [0]                          
                            >= [1]                          
                            =  minus(X1,X2)                 
        
            a__minus(0(),Y) =  [0]                          
                            >= [2]                          
                            =  0()                          
        
        a__minus(s(X),s(Y)) =  [0]                          
                            >= [0]                          
                            =  a__minus(X,Y)                
        
                  mark(0()) =  [2]                          
                            >= [2]                          
                            =  0()                          
        
           mark(div(X1,X2)) =  [2]                          
                            >= [9]                          
                            =  a__div(mark(X1),X2)          
        
              mark(false()) =  [2]                          
                            >= [7]                          
                            =  false()                      
        
           mark(geq(X1,X2)) =  [2]                          
                            >= [6]                          
                            =  a__geq(X1,X2)                
        
         mark(if(X1,X2,X3)) =  [2]                          
                            >= [6]                          
                            =  a__if(mark(X1),X2,X3)        
        
                 mark(s(X)) =  [2]                          
                            >= [2]                          
                            =  s(mark(X))                   
        
               mark(true()) =  [2]                          
                            >= [5]                          
                            =  true()                       
        
      Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** 1.1.1 Progress [(O(1),O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        a__div(s(X),s(Y)) -> a__if(a__geq(X,Y),s(div(minus(X,Y),s(Y))),0())
        a__geq(0(),s(Y)) -> false()
        a__geq(s(X),s(Y)) -> a__geq(X,Y)
        a__minus(X1,X2) -> minus(X1,X2)
        a__minus(0(),Y) -> 0()
        a__minus(s(X),s(Y)) -> a__minus(X,Y)
        mark(0()) -> 0()
        mark(div(X1,X2)) -> a__div(mark(X1),X2)
        mark(false()) -> false()
        mark(geq(X1,X2)) -> a__geq(X1,X2)
        mark(if(X1,X2,X3)) -> a__if(mark(X1),X2,X3)
        mark(s(X)) -> s(mark(X))
        mark(true()) -> true()
      Weak DP Rules:
        
      Weak TRS Rules:
        a__div(X1,X2) -> div(X1,X2)
        a__div(0(),s(Y)) -> 0()
        a__geq(X,0()) -> true()
        a__geq(X1,X2) -> geq(X1,X2)
        a__if(X1,X2,X3) -> if(X1,X2,X3)
        a__if(false(),X,Y) -> mark(Y)
        a__if(true(),X,Y) -> mark(X)
        mark(minus(X1,X2)) -> a__minus(X1,X2)
      Signature:
        {a__div/2,a__geq/2,a__if/3,a__minus/2,mark/1} / {0/0,div/2,false/0,geq/2,if/3,minus/2,s/1,true/0}
      Obligation:
        Innermost
        basic terms: {a__div,a__geq,a__if,a__minus,mark}/{0,div,false,geq,if,minus,s,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(a__div) = {1},
          uargs(a__if) = {1},
          uargs(s) = {1}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                 p(0) = [0]         
            p(a__div) = [1] x1 + [0]
            p(a__geq) = [0]         
             p(a__if) = [1] x1 + [1]
          p(a__minus) = [1]         
               p(div) = [0]         
             p(false) = [0]         
               p(geq) = [0]         
                p(if) = [1]         
              p(mark) = [1]         
             p(minus) = [0]         
                 p(s) = [1] x1 + [0]
              p(true) = [0]         
        
        Following rules are strictly oriented:
         a__minus(X1,X2) = [1]          
                         > [0]          
                         = minus(X1,X2) 
        
         a__minus(0(),Y) = [1]          
                         > [0]          
                         = 0()          
        
               mark(0()) = [1]          
                         > [0]          
                         = 0()          
        
           mark(false()) = [1]          
                         > [0]          
                         = false()      
        
        mark(geq(X1,X2)) = [1]          
                         > [0]          
                         = a__geq(X1,X2)
        
            mark(true()) = [1]          
                         > [0]          
                         = true()       
        
        
        Following rules are (at-least) weakly oriented:
              a__div(X1,X2) =  [1] X1 + [0]                 
                            >= [0]                          
                            =  div(X1,X2)                   
        
           a__div(0(),s(Y)) =  [0]                          
                            >= [0]                          
                            =  0()                          
        
          a__div(s(X),s(Y)) =  [1] X + [0]                  
                            >= [1]                          
                            =  a__if(a__geq(X,Y)            
                                    ,s(div(minus(X,Y),s(Y)))
                                    ,0())                   
        
              a__geq(X,0()) =  [0]                          
                            >= [0]                          
                            =  true()                       
        
              a__geq(X1,X2) =  [0]                          
                            >= [0]                          
                            =  geq(X1,X2)                   
        
           a__geq(0(),s(Y)) =  [0]                          
                            >= [0]                          
                            =  false()                      
        
          a__geq(s(X),s(Y)) =  [0]                          
                            >= [0]                          
                            =  a__geq(X,Y)                  
        
            a__if(X1,X2,X3) =  [1] X1 + [1]                 
                            >= [1]                          
                            =  if(X1,X2,X3)                 
        
         a__if(false(),X,Y) =  [1]                          
                            >= [1]                          
                            =  mark(Y)                      
        
          a__if(true(),X,Y) =  [1]                          
                            >= [1]                          
                            =  mark(X)                      
        
        a__minus(s(X),s(Y)) =  [1]                          
                            >= [1]                          
                            =  a__minus(X,Y)                
        
           mark(div(X1,X2)) =  [1]                          
                            >= [1]                          
                            =  a__div(mark(X1),X2)          
        
         mark(if(X1,X2,X3)) =  [1]                          
                            >= [2]                          
                            =  a__if(mark(X1),X2,X3)        
        
         mark(minus(X1,X2)) =  [1]                          
                            >= [1]                          
                            =  a__minus(X1,X2)              
        
                 mark(s(X)) =  [1]                          
                            >= [1]                          
                            =  s(mark(X))                   
        
      Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** 1.1.1.1 Progress [(O(1),O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        a__div(s(X),s(Y)) -> a__if(a__geq(X,Y),s(div(minus(X,Y),s(Y))),0())
        a__geq(0(),s(Y)) -> false()
        a__geq(s(X),s(Y)) -> a__geq(X,Y)
        a__minus(s(X),s(Y)) -> a__minus(X,Y)
        mark(div(X1,X2)) -> a__div(mark(X1),X2)
        mark(if(X1,X2,X3)) -> a__if(mark(X1),X2,X3)
        mark(s(X)) -> s(mark(X))
      Weak DP Rules:
        
      Weak TRS Rules:
        a__div(X1,X2) -> div(X1,X2)
        a__div(0(),s(Y)) -> 0()
        a__geq(X,0()) -> true()
        a__geq(X1,X2) -> geq(X1,X2)
        a__if(X1,X2,X3) -> if(X1,X2,X3)
        a__if(false(),X,Y) -> mark(Y)
        a__if(true(),X,Y) -> mark(X)
        a__minus(X1,X2) -> minus(X1,X2)
        a__minus(0(),Y) -> 0()
        mark(0()) -> 0()
        mark(false()) -> false()
        mark(geq(X1,X2)) -> a__geq(X1,X2)
        mark(minus(X1,X2)) -> a__minus(X1,X2)
        mark(true()) -> true()
      Signature:
        {a__div/2,a__geq/2,a__if/3,a__minus/2,mark/1} / {0/0,div/2,false/0,geq/2,if/3,minus/2,s/1,true/0}
      Obligation:
        Innermost
        basic terms: {a__div,a__geq,a__if,a__minus,mark}/{0,div,false,geq,if,minus,s,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(a__div) = {1},
          uargs(a__if) = {1},
          uargs(s) = {1}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                 p(0) = [0]         
            p(a__div) = [1] x1 + [1]
            p(a__geq) = [0]         
             p(a__if) = [1] x1 + [0]
          p(a__minus) = [0]         
               p(div) = [0]         
             p(false) = [0]         
               p(geq) = [0]         
                p(if) = [0]         
              p(mark) = [0]         
             p(minus) = [0]         
                 p(s) = [1] x1 + [1]
              p(true) = [0]         
        
        Following rules are strictly oriented:
        a__div(s(X),s(Y)) = [1] X + [2]                  
                          > [0]                          
                          = a__if(a__geq(X,Y)            
                                 ,s(div(minus(X,Y),s(Y)))
                                 ,0())                   
        
        
        Following rules are (at-least) weakly oriented:
              a__div(X1,X2) =  [1] X1 + [1]         
                            >= [0]                  
                            =  div(X1,X2)           
        
           a__div(0(),s(Y)) =  [1]                  
                            >= [0]                  
                            =  0()                  
        
              a__geq(X,0()) =  [0]                  
                            >= [0]                  
                            =  true()               
        
              a__geq(X1,X2) =  [0]                  
                            >= [0]                  
                            =  geq(X1,X2)           
        
           a__geq(0(),s(Y)) =  [0]                  
                            >= [0]                  
                            =  false()              
        
          a__geq(s(X),s(Y)) =  [0]                  
                            >= [0]                  
                            =  a__geq(X,Y)          
        
            a__if(X1,X2,X3) =  [1] X1 + [0]         
                            >= [0]                  
                            =  if(X1,X2,X3)         
        
         a__if(false(),X,Y) =  [0]                  
                            >= [0]                  
                            =  mark(Y)              
        
          a__if(true(),X,Y) =  [0]                  
                            >= [0]                  
                            =  mark(X)              
        
            a__minus(X1,X2) =  [0]                  
                            >= [0]                  
                            =  minus(X1,X2)         
        
            a__minus(0(),Y) =  [0]                  
                            >= [0]                  
                            =  0()                  
        
        a__minus(s(X),s(Y)) =  [0]                  
                            >= [0]                  
                            =  a__minus(X,Y)        
        
                  mark(0()) =  [0]                  
                            >= [0]                  
                            =  0()                  
        
           mark(div(X1,X2)) =  [0]                  
                            >= [1]                  
                            =  a__div(mark(X1),X2)  
        
              mark(false()) =  [0]                  
                            >= [0]                  
                            =  false()              
        
           mark(geq(X1,X2)) =  [0]                  
                            >= [0]                  
                            =  a__geq(X1,X2)        
        
         mark(if(X1,X2,X3)) =  [0]                  
                            >= [0]                  
                            =  a__if(mark(X1),X2,X3)
        
         mark(minus(X1,X2)) =  [0]                  
                            >= [0]                  
                            =  a__minus(X1,X2)      
        
                 mark(s(X)) =  [0]                  
                            >= [1]                  
                            =  s(mark(X))           
        
               mark(true()) =  [0]                  
                            >= [0]                  
                            =  true()               
        
      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(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        a__geq(0(),s(Y)) -> false()
        a__geq(s(X),s(Y)) -> a__geq(X,Y)
        a__minus(s(X),s(Y)) -> a__minus(X,Y)
        mark(div(X1,X2)) -> a__div(mark(X1),X2)
        mark(if(X1,X2,X3)) -> a__if(mark(X1),X2,X3)
        mark(s(X)) -> s(mark(X))
      Weak DP Rules:
        
      Weak TRS Rules:
        a__div(X1,X2) -> div(X1,X2)
        a__div(0(),s(Y)) -> 0()
        a__div(s(X),s(Y)) -> a__if(a__geq(X,Y),s(div(minus(X,Y),s(Y))),0())
        a__geq(X,0()) -> true()
        a__geq(X1,X2) -> geq(X1,X2)
        a__if(X1,X2,X3) -> if(X1,X2,X3)
        a__if(false(),X,Y) -> mark(Y)
        a__if(true(),X,Y) -> mark(X)
        a__minus(X1,X2) -> minus(X1,X2)
        a__minus(0(),Y) -> 0()
        mark(0()) -> 0()
        mark(false()) -> false()
        mark(geq(X1,X2)) -> a__geq(X1,X2)
        mark(minus(X1,X2)) -> a__minus(X1,X2)
        mark(true()) -> true()
      Signature:
        {a__div/2,a__geq/2,a__if/3,a__minus/2,mark/1} / {0/0,div/2,false/0,geq/2,if/3,minus/2,s/1,true/0}
      Obligation:
        Innermost
        basic terms: {a__div,a__geq,a__if,a__minus,mark}/{0,div,false,geq,if,minus,s,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(a__div) = {1},
          uargs(a__if) = {1},
          uargs(s) = {1}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                 p(0) = [0]         
            p(a__div) = [1] x1 + [7]
            p(a__geq) = [1]         
             p(a__if) = [1] x1 + [2]
          p(a__minus) = [1]         
               p(div) = [1] x1 + [7]
             p(false) = [0]         
               p(geq) = [0]         
                p(if) = [0]         
              p(mark) = [1]         
             p(minus) = [1]         
                 p(s) = [1] x1 + [0]
              p(true) = [1]         
        
        Following rules are strictly oriented:
        a__geq(0(),s(Y)) = [1]    
                         > [0]    
                         = false()
        
        
        Following rules are (at-least) weakly oriented:
              a__div(X1,X2) =  [1] X1 + [7]                 
                            >= [1] X1 + [7]                 
                            =  div(X1,X2)                   
        
           a__div(0(),s(Y)) =  [7]                          
                            >= [0]                          
                            =  0()                          
        
          a__div(s(X),s(Y)) =  [1] X + [7]                  
                            >= [3]                          
                            =  a__if(a__geq(X,Y)            
                                    ,s(div(minus(X,Y),s(Y)))
                                    ,0())                   
        
              a__geq(X,0()) =  [1]                          
                            >= [1]                          
                            =  true()                       
        
              a__geq(X1,X2) =  [1]                          
                            >= [0]                          
                            =  geq(X1,X2)                   
        
          a__geq(s(X),s(Y)) =  [1]                          
                            >= [1]                          
                            =  a__geq(X,Y)                  
        
            a__if(X1,X2,X3) =  [1] X1 + [2]                 
                            >= [0]                          
                            =  if(X1,X2,X3)                 
        
         a__if(false(),X,Y) =  [2]                          
                            >= [1]                          
                            =  mark(Y)                      
        
          a__if(true(),X,Y) =  [3]                          
                            >= [1]                          
                            =  mark(X)                      
        
            a__minus(X1,X2) =  [1]                          
                            >= [1]                          
                            =  minus(X1,X2)                 
        
            a__minus(0(),Y) =  [1]                          
                            >= [0]                          
                            =  0()                          
        
        a__minus(s(X),s(Y)) =  [1]                          
                            >= [1]                          
                            =  a__minus(X,Y)                
        
                  mark(0()) =  [1]                          
                            >= [0]                          
                            =  0()                          
        
           mark(div(X1,X2)) =  [1]                          
                            >= [8]                          
                            =  a__div(mark(X1),X2)          
        
              mark(false()) =  [1]                          
                            >= [0]                          
                            =  false()                      
        
           mark(geq(X1,X2)) =  [1]                          
                            >= [1]                          
                            =  a__geq(X1,X2)                
        
         mark(if(X1,X2,X3)) =  [1]                          
                            >= [3]                          
                            =  a__if(mark(X1),X2,X3)        
        
         mark(minus(X1,X2)) =  [1]                          
                            >= [1]                          
                            =  a__minus(X1,X2)              
        
                 mark(s(X)) =  [1]                          
                            >= [1]                          
                            =  s(mark(X))                   
        
               mark(true()) =  [1]                          
                            >= [1]                          
                            =  true()                       
        
      Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** 1.1.1.1.1.1 Progress [(O(1),O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        a__geq(s(X),s(Y)) -> a__geq(X,Y)
        a__minus(s(X),s(Y)) -> a__minus(X,Y)
        mark(div(X1,X2)) -> a__div(mark(X1),X2)
        mark(if(X1,X2,X3)) -> a__if(mark(X1),X2,X3)
        mark(s(X)) -> s(mark(X))
      Weak DP Rules:
        
      Weak TRS Rules:
        a__div(X1,X2) -> div(X1,X2)
        a__div(0(),s(Y)) -> 0()
        a__div(s(X),s(Y)) -> a__if(a__geq(X,Y),s(div(minus(X,Y),s(Y))),0())
        a__geq(X,0()) -> true()
        a__geq(X1,X2) -> geq(X1,X2)
        a__geq(0(),s(Y)) -> false()
        a__if(X1,X2,X3) -> if(X1,X2,X3)
        a__if(false(),X,Y) -> mark(Y)
        a__if(true(),X,Y) -> mark(X)
        a__minus(X1,X2) -> minus(X1,X2)
        a__minus(0(),Y) -> 0()
        mark(0()) -> 0()
        mark(false()) -> false()
        mark(geq(X1,X2)) -> a__geq(X1,X2)
        mark(minus(X1,X2)) -> a__minus(X1,X2)
        mark(true()) -> true()
      Signature:
        {a__div/2,a__geq/2,a__if/3,a__minus/2,mark/1} / {0/0,div/2,false/0,geq/2,if/3,minus/2,s/1,true/0}
      Obligation:
        Innermost
        basic terms: {a__div,a__geq,a__if,a__minus,mark}/{0,div,false,geq,if,minus,s,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(a__div) = {1},
          uargs(a__if) = {1},
          uargs(s) = {1}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                 p(0) = [0]                           
            p(a__div) = [1] x1 + [3]                  
            p(a__geq) = [1] x1 + [0]                  
             p(a__if) = [1] x1 + [4] x2 + [4] x3 + [0]
          p(a__minus) = [0]                           
               p(div) = [1] x1 + [0]                  
             p(false) = [0]                           
               p(geq) = [1] x1 + [0]                  
                p(if) = [1] x1 + [1] x2 + [1] x3 + [0]
              p(mark) = [4] x1 + [0]                  
             p(minus) = [0]                           
                 p(s) = [1] x1 + [1]                  
              p(true) = [0]                           
        
        Following rules are strictly oriented:
        a__geq(s(X),s(Y)) = [1] X + [1]
                          > [1] X + [0]
                          = a__geq(X,Y)
        
               mark(s(X)) = [4] X + [4]
                          > [4] X + [1]
                          = s(mark(X)) 
        
        
        Following rules are (at-least) weakly oriented:
              a__div(X1,X2) =  [1] X1 + [3]                  
                            >= [1] X1 + [0]                  
                            =  div(X1,X2)                    
        
           a__div(0(),s(Y)) =  [3]                           
                            >= [0]                           
                            =  0()                           
        
          a__div(s(X),s(Y)) =  [1] X + [4]                   
                            >= [1] X + [4]                   
                            =  a__if(a__geq(X,Y)             
                                    ,s(div(minus(X,Y),s(Y))) 
                                    ,0())                    
        
              a__geq(X,0()) =  [1] X + [0]                   
                            >= [0]                           
                            =  true()                        
        
              a__geq(X1,X2) =  [1] X1 + [0]                  
                            >= [1] X1 + [0]                  
                            =  geq(X1,X2)                    
        
           a__geq(0(),s(Y)) =  [0]                           
                            >= [0]                           
                            =  false()                       
        
            a__if(X1,X2,X3) =  [1] X1 + [4] X2 + [4] X3 + [0]
                            >= [1] X1 + [1] X2 + [1] X3 + [0]
                            =  if(X1,X2,X3)                  
        
         a__if(false(),X,Y) =  [4] X + [4] Y + [0]           
                            >= [4] Y + [0]                   
                            =  mark(Y)                       
        
          a__if(true(),X,Y) =  [4] X + [4] Y + [0]           
                            >= [4] X + [0]                   
                            =  mark(X)                       
        
            a__minus(X1,X2) =  [0]                           
                            >= [0]                           
                            =  minus(X1,X2)                  
        
            a__minus(0(),Y) =  [0]                           
                            >= [0]                           
                            =  0()                           
        
        a__minus(s(X),s(Y)) =  [0]                           
                            >= [0]                           
                            =  a__minus(X,Y)                 
        
                  mark(0()) =  [0]                           
                            >= [0]                           
                            =  0()                           
        
           mark(div(X1,X2)) =  [4] X1 + [0]                  
                            >= [4] X1 + [3]                  
                            =  a__div(mark(X1),X2)           
        
              mark(false()) =  [0]                           
                            >= [0]                           
                            =  false()                       
        
           mark(geq(X1,X2)) =  [4] X1 + [0]                  
                            >= [1] X1 + [0]                  
                            =  a__geq(X1,X2)                 
        
         mark(if(X1,X2,X3)) =  [4] X1 + [4] X2 + [4] X3 + [0]
                            >= [4] X1 + [4] X2 + [4] X3 + [0]
                            =  a__if(mark(X1),X2,X3)         
        
         mark(minus(X1,X2)) =  [0]                           
                            >= [0]                           
                            =  a__minus(X1,X2)               
        
               mark(true()) =  [0]                           
                            >= [0]                           
                            =  true()                        
        
      Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** 1.1.1.1.1.1.1 Progress [(O(1),O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        a__minus(s(X),s(Y)) -> a__minus(X,Y)
        mark(div(X1,X2)) -> a__div(mark(X1),X2)
        mark(if(X1,X2,X3)) -> a__if(mark(X1),X2,X3)
      Weak DP Rules:
        
      Weak TRS Rules:
        a__div(X1,X2) -> div(X1,X2)
        a__div(0(),s(Y)) -> 0()
        a__div(s(X),s(Y)) -> a__if(a__geq(X,Y),s(div(minus(X,Y),s(Y))),0())
        a__geq(X,0()) -> true()
        a__geq(X1,X2) -> geq(X1,X2)
        a__geq(0(),s(Y)) -> false()
        a__geq(s(X),s(Y)) -> a__geq(X,Y)
        a__if(X1,X2,X3) -> if(X1,X2,X3)
        a__if(false(),X,Y) -> mark(Y)
        a__if(true(),X,Y) -> mark(X)
        a__minus(X1,X2) -> minus(X1,X2)
        a__minus(0(),Y) -> 0()
        mark(0()) -> 0()
        mark(false()) -> false()
        mark(geq(X1,X2)) -> a__geq(X1,X2)
        mark(minus(X1,X2)) -> a__minus(X1,X2)
        mark(s(X)) -> s(mark(X))
        mark(true()) -> true()
      Signature:
        {a__div/2,a__geq/2,a__if/3,a__minus/2,mark/1} / {0/0,div/2,false/0,geq/2,if/3,minus/2,s/1,true/0}
      Obligation:
        Innermost
        basic terms: {a__div,a__geq,a__if,a__minus,mark}/{0,div,false,geq,if,minus,s,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(a__div) = {1},
          uargs(a__if) = {1},
          uargs(s) = {1}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                 p(0) = [0]                           
            p(a__div) = [1] x1 + [2]                  
            p(a__geq) = [0]                           
             p(a__if) = [1] x1 + [4] x2 + [4] x3 + [2]
          p(a__minus) = [0]                           
               p(div) = [1] x1 + [0]                  
             p(false) = [0]                           
               p(geq) = [0]                           
                p(if) = [1] x1 + [1] x2 + [1] x3 + [1]
              p(mark) = [4] x1 + [0]                  
             p(minus) = [0]                           
                 p(s) = [1] x1 + [0]                  
              p(true) = [0]                           
        
        Following rules are strictly oriented:
        mark(if(X1,X2,X3)) = [4] X1 + [4] X2 + [4] X3 + [4]
                           > [4] X1 + [4] X2 + [4] X3 + [2]
                           = a__if(mark(X1),X2,X3)         
        
        
        Following rules are (at-least) weakly oriented:
              a__div(X1,X2) =  [1] X1 + [2]                  
                            >= [1] X1 + [0]                  
                            =  div(X1,X2)                    
        
           a__div(0(),s(Y)) =  [2]                           
                            >= [0]                           
                            =  0()                           
        
          a__div(s(X),s(Y)) =  [1] X + [2]                   
                            >= [2]                           
                            =  a__if(a__geq(X,Y)             
                                    ,s(div(minus(X,Y),s(Y))) 
                                    ,0())                    
        
              a__geq(X,0()) =  [0]                           
                            >= [0]                           
                            =  true()                        
        
              a__geq(X1,X2) =  [0]                           
                            >= [0]                           
                            =  geq(X1,X2)                    
        
           a__geq(0(),s(Y)) =  [0]                           
                            >= [0]                           
                            =  false()                       
        
          a__geq(s(X),s(Y)) =  [0]                           
                            >= [0]                           
                            =  a__geq(X,Y)                   
        
            a__if(X1,X2,X3) =  [1] X1 + [4] X2 + [4] X3 + [2]
                            >= [1] X1 + [1] X2 + [1] X3 + [1]
                            =  if(X1,X2,X3)                  
        
         a__if(false(),X,Y) =  [4] X + [4] Y + [2]           
                            >= [4] Y + [0]                   
                            =  mark(Y)                       
        
          a__if(true(),X,Y) =  [4] X + [4] Y + [2]           
                            >= [4] X + [0]                   
                            =  mark(X)                       
        
            a__minus(X1,X2) =  [0]                           
                            >= [0]                           
                            =  minus(X1,X2)                  
        
            a__minus(0(),Y) =  [0]                           
                            >= [0]                           
                            =  0()                           
        
        a__minus(s(X),s(Y)) =  [0]                           
                            >= [0]                           
                            =  a__minus(X,Y)                 
        
                  mark(0()) =  [0]                           
                            >= [0]                           
                            =  0()                           
        
           mark(div(X1,X2)) =  [4] X1 + [0]                  
                            >= [4] X1 + [2]                  
                            =  a__div(mark(X1),X2)           
        
              mark(false()) =  [0]                           
                            >= [0]                           
                            =  false()                       
        
           mark(geq(X1,X2)) =  [0]                           
                            >= [0]                           
                            =  a__geq(X1,X2)                 
        
         mark(minus(X1,X2)) =  [0]                           
                            >= [0]                           
                            =  a__minus(X1,X2)               
        
                 mark(s(X)) =  [4] X + [0]                   
                            >= [4] X + [0]                   
                            =  s(mark(X))                    
        
               mark(true()) =  [0]                           
                            >= [0]                           
                            =  true()                        
        
      Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** 1.1.1.1.1.1.1.1 Progress [(O(1),O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        a__minus(s(X),s(Y)) -> a__minus(X,Y)
        mark(div(X1,X2)) -> a__div(mark(X1),X2)
      Weak DP Rules:
        
      Weak TRS Rules:
        a__div(X1,X2) -> div(X1,X2)
        a__div(0(),s(Y)) -> 0()
        a__div(s(X),s(Y)) -> a__if(a__geq(X,Y),s(div(minus(X,Y),s(Y))),0())
        a__geq(X,0()) -> true()
        a__geq(X1,X2) -> geq(X1,X2)
        a__geq(0(),s(Y)) -> false()
        a__geq(s(X),s(Y)) -> a__geq(X,Y)
        a__if(X1,X2,X3) -> if(X1,X2,X3)
        a__if(false(),X,Y) -> mark(Y)
        a__if(true(),X,Y) -> mark(X)
        a__minus(X1,X2) -> minus(X1,X2)
        a__minus(0(),Y) -> 0()
        mark(0()) -> 0()
        mark(false()) -> false()
        mark(geq(X1,X2)) -> a__geq(X1,X2)
        mark(if(X1,X2,X3)) -> a__if(mark(X1),X2,X3)
        mark(minus(X1,X2)) -> a__minus(X1,X2)
        mark(s(X)) -> s(mark(X))
        mark(true()) -> true()
      Signature:
        {a__div/2,a__geq/2,a__if/3,a__minus/2,mark/1} / {0/0,div/2,false/0,geq/2,if/3,minus/2,s/1,true/0}
      Obligation:
        Innermost
        basic terms: {a__div,a__geq,a__if,a__minus,mark}/{0,div,false,geq,if,minus,s,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(a__div) = {1},
          uargs(a__if) = {1},
          uargs(s) = {1}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
                 p(0) = [1]                           
            p(a__div) = [1] x1 + [1]                  
            p(a__geq) = [0]                           
             p(a__if) = [1] x1 + [1] x2 + [1] x3 + [0]
          p(a__minus) = [1] x1 + [0]                  
               p(div) = [1] x1 + [0]                  
             p(false) = [0]                           
               p(geq) = [0]                           
                p(if) = [1] x1 + [1] x2 + [1] x3 + [0]
              p(mark) = [1] x1 + [0]                  
             p(minus) = [1] x1 + [0]                  
                 p(s) = [1] x1 + [5]                  
              p(true) = [0]                           
        
        Following rules are strictly oriented:
        a__minus(s(X),s(Y)) = [1] X + [5]  
                            > [1] X + [0]  
                            = a__minus(X,Y)
        
        
        Following rules are (at-least) weakly oriented:
             a__div(X1,X2) =  [1] X1 + [1]                  
                           >= [1] X1 + [0]                  
                           =  div(X1,X2)                    
        
          a__div(0(),s(Y)) =  [2]                           
                           >= [1]                           
                           =  0()                           
        
         a__div(s(X),s(Y)) =  [1] X + [6]                   
                           >= [1] X + [6]                   
                           =  a__if(a__geq(X,Y)             
                                   ,s(div(minus(X,Y),s(Y))) 
                                   ,0())                    
        
             a__geq(X,0()) =  [0]                           
                           >= [0]                           
                           =  true()                        
        
             a__geq(X1,X2) =  [0]                           
                           >= [0]                           
                           =  geq(X1,X2)                    
        
          a__geq(0(),s(Y)) =  [0]                           
                           >= [0]                           
                           =  false()                       
        
         a__geq(s(X),s(Y)) =  [0]                           
                           >= [0]                           
                           =  a__geq(X,Y)                   
        
           a__if(X1,X2,X3) =  [1] X1 + [1] X2 + [1] X3 + [0]
                           >= [1] X1 + [1] X2 + [1] X3 + [0]
                           =  if(X1,X2,X3)                  
        
        a__if(false(),X,Y) =  [1] X + [1] Y + [0]           
                           >= [1] Y + [0]                   
                           =  mark(Y)                       
        
         a__if(true(),X,Y) =  [1] X + [1] Y + [0]           
                           >= [1] X + [0]                   
                           =  mark(X)                       
        
           a__minus(X1,X2) =  [1] X1 + [0]                  
                           >= [1] X1 + [0]                  
                           =  minus(X1,X2)                  
        
           a__minus(0(),Y) =  [1]                           
                           >= [1]                           
                           =  0()                           
        
                 mark(0()) =  [1]                           
                           >= [1]                           
                           =  0()                           
        
          mark(div(X1,X2)) =  [1] X1 + [0]                  
                           >= [1] X1 + [1]                  
                           =  a__div(mark(X1),X2)           
        
             mark(false()) =  [0]                           
                           >= [0]                           
                           =  false()                       
        
          mark(geq(X1,X2)) =  [0]                           
                           >= [0]                           
                           =  a__geq(X1,X2)                 
        
        mark(if(X1,X2,X3)) =  [1] X1 + [1] X2 + [1] X3 + [0]
                           >= [1] X1 + [1] X2 + [1] X3 + [0]
                           =  a__if(mark(X1),X2,X3)         
        
        mark(minus(X1,X2)) =  [1] X1 + [0]                  
                           >= [1] X1 + [0]                  
                           =  a__minus(X1,X2)               
        
                mark(s(X)) =  [1] X + [5]                   
                           >= [1] X + [5]                   
                           =  s(mark(X))                    
        
              mark(true()) =  [0]                           
                           >= [0]                           
                           =  true()                        
        
      Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** 1.1.1.1.1.1.1.1.1 Progress [(O(1),O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        mark(div(X1,X2)) -> a__div(mark(X1),X2)
      Weak DP Rules:
        
      Weak TRS Rules:
        a__div(X1,X2) -> div(X1,X2)
        a__div(0(),s(Y)) -> 0()
        a__div(s(X),s(Y)) -> a__if(a__geq(X,Y),s(div(minus(X,Y),s(Y))),0())
        a__geq(X,0()) -> true()
        a__geq(X1,X2) -> geq(X1,X2)
        a__geq(0(),s(Y)) -> false()
        a__geq(s(X),s(Y)) -> a__geq(X,Y)
        a__if(X1,X2,X3) -> if(X1,X2,X3)
        a__if(false(),X,Y) -> mark(Y)
        a__if(true(),X,Y) -> mark(X)
        a__minus(X1,X2) -> minus(X1,X2)
        a__minus(0(),Y) -> 0()
        a__minus(s(X),s(Y)) -> a__minus(X,Y)
        mark(0()) -> 0()
        mark(false()) -> false()
        mark(geq(X1,X2)) -> a__geq(X1,X2)
        mark(if(X1,X2,X3)) -> a__if(mark(X1),X2,X3)
        mark(minus(X1,X2)) -> a__minus(X1,X2)
        mark(s(X)) -> s(mark(X))
        mark(true()) -> true()
      Signature:
        {a__div/2,a__geq/2,a__if/3,a__minus/2,mark/1} / {0/0,div/2,false/0,geq/2,if/3,minus/2,s/1,true/0}
      Obligation:
        Innermost
        basic terms: {a__div,a__geq,a__if,a__minus,mark}/{0,div,false,geq,if,minus,s,true}
    Applied Processor:
      NaturalMI {miDimension = 2, miDegree = 2, 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(a__div) = {1},
        uargs(a__if) = {1},
        uargs(s) = {1}
      
      Following symbols are considered usable:
        {a__div,a__geq,a__if,a__minus,mark}
      TcT has computed the following interpretation:
               p(0) = [0]                     
                      [0]                     
          p(a__div) = [1 5] x1 + [2]          
                      [0 0]      [3]          
          p(a__geq) = [0]                     
                      [2]                     
           p(a__if) = [1 1] x1 + [4 0] x2 + [4
                      2] x3 + [2]             
                      [0 0]      [0 1]      [0
                      1]      [1]             
        p(a__minus) = [0]                     
                      [0]                     
             p(div) = [1 2] x1 + [2]          
                      [0 0]      [2]          
           p(false) = [0]                     
                      [0]                     
             p(geq) = [0]                     
                      [2]                     
              p(if) = [1 1] x1 + [1 0] x2 + [1
                      2] x3 + [1]             
                      [0 0]      [0 1]      [0
                      1]      [0]             
            p(mark) = [4 0] x1 + [0]          
                      [0 1]      [1]          
           p(minus) = [0]                     
                      [0]                     
               p(s) = [1 0] x1 + [0]          
                      [0 0]      [2]          
            p(true) = [0]                     
                      [1]                     
      
      Following rules are strictly oriented:
      mark(div(X1,X2)) = [4 8] X1 + [8]     
                         [0 0]      [3]     
                       > [4 5] X1 + [7]     
                         [0 0]      [3]     
                       = a__div(mark(X1),X2)
      
      
      Following rules are (at-least) weakly oriented:
            a__div(X1,X2) =  [1 5] X1 + [2]               
                             [0 0]      [3]               
                          >= [1 2] X1 + [2]               
                             [0 0]      [2]               
                          =  div(X1,X2)                   
      
         a__div(0(),s(Y)) =  [2]                          
                             [3]                          
                          >= [0]                          
                             [0]                          
                          =  0()                          
      
        a__div(s(X),s(Y)) =  [1 0] X + [12]               
                             [0 0]     [3]                
                          >= [12]                         
                             [3]                          
                          =  a__if(a__geq(X,Y)            
                                  ,s(div(minus(X,Y),s(Y)))
                                  ,0())                   
      
            a__geq(X,0()) =  [0]                          
                             [2]                          
                          >= [0]                          
                             [1]                          
                          =  true()                       
      
            a__geq(X1,X2) =  [0]                          
                             [2]                          
                          >= [0]                          
                             [2]                          
                          =  geq(X1,X2)                   
      
         a__geq(0(),s(Y)) =  [0]                          
                             [2]                          
                          >= [0]                          
                             [0]                          
                          =  false()                      
      
        a__geq(s(X),s(Y)) =  [0]                          
                             [2]                          
                          >= [0]                          
                             [2]                          
                          =  a__geq(X,Y)                  
      
          a__if(X1,X2,X3) =  [1 1] X1 + [4 0] X2 + [4     
                             2] X3 + [2]                  
                             [0 0]      [0 1]      [0     
                             1]      [1]                  
                          >= [1 1] X1 + [1 0] X2 + [1     
                             2] X3 + [1]                  
                             [0 0]      [0 1]      [0     
                             1]      [0]                  
                          =  if(X1,X2,X3)                 
      
       a__if(false(),X,Y) =  [4 0] X + [4 2] Y + [2]      
                             [0 1]     [0 1]     [1]      
                          >= [4 0] Y + [0]                
                             [0 1]     [1]                
                          =  mark(Y)                      
      
        a__if(true(),X,Y) =  [4 0] X + [4 2] Y + [3]      
                             [0 1]     [0 1]     [1]      
                          >= [4 0] X + [0]                
                             [0 1]     [1]                
                          =  mark(X)                      
      
          a__minus(X1,X2) =  [0]                          
                             [0]                          
                          >= [0]                          
                             [0]                          
                          =  minus(X1,X2)                 
      
          a__minus(0(),Y) =  [0]                          
                             [0]                          
                          >= [0]                          
                             [0]                          
                          =  0()                          
      
      a__minus(s(X),s(Y)) =  [0]                          
                             [0]                          
                          >= [0]                          
                             [0]                          
                          =  a__minus(X,Y)                
      
                mark(0()) =  [0]                          
                             [1]                          
                          >= [0]                          
                             [0]                          
                          =  0()                          
      
            mark(false()) =  [0]                          
                             [1]                          
                          >= [0]                          
                             [0]                          
                          =  false()                      
      
         mark(geq(X1,X2)) =  [0]                          
                             [3]                          
                          >= [0]                          
                             [2]                          
                          =  a__geq(X1,X2)                
      
       mark(if(X1,X2,X3)) =  [4 4] X1 + [4 0] X2 + [4     
                             8] X3 + [4]                  
                             [0 0]      [0 1]      [0     
                             1]      [1]                  
                          >= [4 1] X1 + [4 0] X2 + [4     
                             2] X3 + [3]                  
                             [0 0]      [0 1]      [0     
                             1]      [1]                  
                          =  a__if(mark(X1),X2,X3)        
      
       mark(minus(X1,X2)) =  [0]                          
                             [1]                          
                          >= [0]                          
                             [0]                          
                          =  a__minus(X1,X2)              
      
               mark(s(X)) =  [4 0] X + [0]                
                             [0 0]     [3]                
                          >= [4 0] X + [0]                
                             [0 0]     [2]                
                          =  s(mark(X))                   
      
             mark(true()) =  [0]                          
                             [2]                          
                          >= [0]                          
                             [1]                          
                          =  true()                       
      
*** 1.1.1.1.1.1.1.1.1.1 Progress [(O(1),O(1))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        
      Weak DP Rules:
        
      Weak TRS Rules:
        a__div(X1,X2) -> div(X1,X2)
        a__div(0(),s(Y)) -> 0()
        a__div(s(X),s(Y)) -> a__if(a__geq(X,Y),s(div(minus(X,Y),s(Y))),0())
        a__geq(X,0()) -> true()
        a__geq(X1,X2) -> geq(X1,X2)
        a__geq(0(),s(Y)) -> false()
        a__geq(s(X),s(Y)) -> a__geq(X,Y)
        a__if(X1,X2,X3) -> if(X1,X2,X3)
        a__if(false(),X,Y) -> mark(Y)
        a__if(true(),X,Y) -> mark(X)
        a__minus(X1,X2) -> minus(X1,X2)
        a__minus(0(),Y) -> 0()
        a__minus(s(X),s(Y)) -> a__minus(X,Y)
        mark(0()) -> 0()
        mark(div(X1,X2)) -> a__div(mark(X1),X2)
        mark(false()) -> false()
        mark(geq(X1,X2)) -> a__geq(X1,X2)
        mark(if(X1,X2,X3)) -> a__if(mark(X1),X2,X3)
        mark(minus(X1,X2)) -> a__minus(X1,X2)
        mark(s(X)) -> s(mark(X))
        mark(true()) -> true()
      Signature:
        {a__div/2,a__geq/2,a__if/3,a__minus/2,mark/1} / {0/0,div/2,false/0,geq/2,if/3,minus/2,s/1,true/0}
      Obligation:
        Innermost
        basic terms: {a__div,a__geq,a__if,a__minus,mark}/{0,div,false,geq,if,minus,s,true}
    Applied Processor:
      EmptyProcessor
    Proof:
      The problem is already closed. The intended complexity is O(1).