We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(n^2)).

Strict Trs:
  { a__minus(X1, X2) -> minus(X1, X2)
  , a__minus(0(), Y) -> 0()
  , a__minus(s(X), s(Y)) -> a__minus(X, Y)
  , a__geq(X1, X2) -> geq(X1, X2)
  , a__geq(X, 0()) -> true()
  , a__geq(0(), s(Y)) -> false()
  , a__geq(s(X), s(Y)) -> a__geq(X, Y)
  , 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__if(X1, X2, X3) -> if(X1, X2, X3)
  , a__if(true(), X, Y) -> mark(X)
  , a__if(false(), X, Y) -> mark(Y)
  , mark(0()) -> 0()
  , mark(s(X)) -> s(mark(X))
  , mark(true()) -> true()
  , mark(false()) -> false()
  , mark(div(X1, X2)) -> a__div(mark(X1), X2)
  , mark(minus(X1, X2)) -> a__minus(X1, X2)
  , mark(geq(X1, X2)) -> a__geq(X1, X2)
  , mark(if(X1, X2, X3)) -> a__if(mark(X1), X2, X3) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^2))

We add the following dependency tuples:

Strict DPs:
  { a__minus^#(X1, X2) -> c_1()
  , a__minus^#(0(), Y) -> c_2()
  , a__minus^#(s(X), s(Y)) -> c_3(a__minus^#(X, Y))
  , a__geq^#(X1, X2) -> c_4()
  , a__geq^#(X, 0()) -> c_5()
  , a__geq^#(0(), s(Y)) -> c_6()
  , a__geq^#(s(X), s(Y)) -> c_7(a__geq^#(X, Y))
  , a__div^#(X1, X2) -> c_8()
  , a__div^#(0(), s(Y)) -> c_9()
  , a__div^#(s(X), s(Y)) ->
    c_10(a__if^#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0()),
         a__geq^#(X, Y))
  , a__if^#(X1, X2, X3) -> c_11()
  , a__if^#(true(), X, Y) -> c_12(mark^#(X))
  , a__if^#(false(), X, Y) -> c_13(mark^#(Y))
  , mark^#(0()) -> c_14()
  , mark^#(s(X)) -> c_15(mark^#(X))
  , mark^#(true()) -> c_16()
  , mark^#(false()) -> c_17()
  , mark^#(div(X1, X2)) -> c_18(a__div^#(mark(X1), X2), mark^#(X1))
  , mark^#(minus(X1, X2)) -> c_19(a__minus^#(X1, X2))
  , mark^#(geq(X1, X2)) -> c_20(a__geq^#(X1, X2))
  , mark^#(if(X1, X2, X3)) ->
    c_21(a__if^#(mark(X1), X2, X3), mark^#(X1)) }

and mark the set of starting terms.

We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(n^2)).

Strict DPs:
  { a__minus^#(X1, X2) -> c_1()
  , a__minus^#(0(), Y) -> c_2()
  , a__minus^#(s(X), s(Y)) -> c_3(a__minus^#(X, Y))
  , a__geq^#(X1, X2) -> c_4()
  , a__geq^#(X, 0()) -> c_5()
  , a__geq^#(0(), s(Y)) -> c_6()
  , a__geq^#(s(X), s(Y)) -> c_7(a__geq^#(X, Y))
  , a__div^#(X1, X2) -> c_8()
  , a__div^#(0(), s(Y)) -> c_9()
  , a__div^#(s(X), s(Y)) ->
    c_10(a__if^#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0()),
         a__geq^#(X, Y))
  , a__if^#(X1, X2, X3) -> c_11()
  , a__if^#(true(), X, Y) -> c_12(mark^#(X))
  , a__if^#(false(), X, Y) -> c_13(mark^#(Y))
  , mark^#(0()) -> c_14()
  , mark^#(s(X)) -> c_15(mark^#(X))
  , mark^#(true()) -> c_16()
  , mark^#(false()) -> c_17()
  , mark^#(div(X1, X2)) -> c_18(a__div^#(mark(X1), X2), mark^#(X1))
  , mark^#(minus(X1, X2)) -> c_19(a__minus^#(X1, X2))
  , mark^#(geq(X1, X2)) -> c_20(a__geq^#(X1, X2))
  , mark^#(if(X1, X2, X3)) ->
    c_21(a__if^#(mark(X1), X2, X3), mark^#(X1)) }
Weak Trs:
  { a__minus(X1, X2) -> minus(X1, X2)
  , a__minus(0(), Y) -> 0()
  , a__minus(s(X), s(Y)) -> a__minus(X, Y)
  , a__geq(X1, X2) -> geq(X1, X2)
  , a__geq(X, 0()) -> true()
  , a__geq(0(), s(Y)) -> false()
  , a__geq(s(X), s(Y)) -> a__geq(X, Y)
  , 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__if(X1, X2, X3) -> if(X1, X2, X3)
  , a__if(true(), X, Y) -> mark(X)
  , a__if(false(), X, Y) -> mark(Y)
  , mark(0()) -> 0()
  , mark(s(X)) -> s(mark(X))
  , mark(true()) -> true()
  , mark(false()) -> false()
  , mark(div(X1, X2)) -> a__div(mark(X1), X2)
  , mark(minus(X1, X2)) -> a__minus(X1, X2)
  , mark(geq(X1, X2)) -> a__geq(X1, X2)
  , mark(if(X1, X2, X3)) -> a__if(mark(X1), X2, X3) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^2))

We estimate the number of application of
{1,2,4,5,6,8,9,11,14,16,17} by applications of
Pre({1,2,4,5,6,8,9,11,14,16,17}) = {3,7,10,12,13,15,18,19,20,21}.
Here rules are labeled as follows:

  DPs:
    { 1: a__minus^#(X1, X2) -> c_1()
    , 2: a__minus^#(0(), Y) -> c_2()
    , 3: a__minus^#(s(X), s(Y)) -> c_3(a__minus^#(X, Y))
    , 4: a__geq^#(X1, X2) -> c_4()
    , 5: a__geq^#(X, 0()) -> c_5()
    , 6: a__geq^#(0(), s(Y)) -> c_6()
    , 7: a__geq^#(s(X), s(Y)) -> c_7(a__geq^#(X, Y))
    , 8: a__div^#(X1, X2) -> c_8()
    , 9: a__div^#(0(), s(Y)) -> c_9()
    , 10: a__div^#(s(X), s(Y)) ->
          c_10(a__if^#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0()),
               a__geq^#(X, Y))
    , 11: a__if^#(X1, X2, X3) -> c_11()
    , 12: a__if^#(true(), X, Y) -> c_12(mark^#(X))
    , 13: a__if^#(false(), X, Y) -> c_13(mark^#(Y))
    , 14: mark^#(0()) -> c_14()
    , 15: mark^#(s(X)) -> c_15(mark^#(X))
    , 16: mark^#(true()) -> c_16()
    , 17: mark^#(false()) -> c_17()
    , 18: mark^#(div(X1, X2)) ->
          c_18(a__div^#(mark(X1), X2), mark^#(X1))
    , 19: mark^#(minus(X1, X2)) -> c_19(a__minus^#(X1, X2))
    , 20: mark^#(geq(X1, X2)) -> c_20(a__geq^#(X1, X2))
    , 21: mark^#(if(X1, X2, X3)) ->
          c_21(a__if^#(mark(X1), X2, X3), mark^#(X1)) }

We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(n^2)).

Strict DPs:
  { a__minus^#(s(X), s(Y)) -> c_3(a__minus^#(X, Y))
  , a__geq^#(s(X), s(Y)) -> c_7(a__geq^#(X, Y))
  , a__div^#(s(X), s(Y)) ->
    c_10(a__if^#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0()),
         a__geq^#(X, Y))
  , a__if^#(true(), X, Y) -> c_12(mark^#(X))
  , a__if^#(false(), X, Y) -> c_13(mark^#(Y))
  , mark^#(s(X)) -> c_15(mark^#(X))
  , mark^#(div(X1, X2)) -> c_18(a__div^#(mark(X1), X2), mark^#(X1))
  , mark^#(minus(X1, X2)) -> c_19(a__minus^#(X1, X2))
  , mark^#(geq(X1, X2)) -> c_20(a__geq^#(X1, X2))
  , mark^#(if(X1, X2, X3)) ->
    c_21(a__if^#(mark(X1), X2, X3), mark^#(X1)) }
Weak DPs:
  { a__minus^#(X1, X2) -> c_1()
  , a__minus^#(0(), Y) -> c_2()
  , a__geq^#(X1, X2) -> c_4()
  , a__geq^#(X, 0()) -> c_5()
  , a__geq^#(0(), s(Y)) -> c_6()
  , a__div^#(X1, X2) -> c_8()
  , a__div^#(0(), s(Y)) -> c_9()
  , a__if^#(X1, X2, X3) -> c_11()
  , mark^#(0()) -> c_14()
  , mark^#(true()) -> c_16()
  , mark^#(false()) -> c_17() }
Weak Trs:
  { a__minus(X1, X2) -> minus(X1, X2)
  , a__minus(0(), Y) -> 0()
  , a__minus(s(X), s(Y)) -> a__minus(X, Y)
  , a__geq(X1, X2) -> geq(X1, X2)
  , a__geq(X, 0()) -> true()
  , a__geq(0(), s(Y)) -> false()
  , a__geq(s(X), s(Y)) -> a__geq(X, Y)
  , 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__if(X1, X2, X3) -> if(X1, X2, X3)
  , a__if(true(), X, Y) -> mark(X)
  , a__if(false(), X, Y) -> mark(Y)
  , mark(0()) -> 0()
  , mark(s(X)) -> s(mark(X))
  , mark(true()) -> true()
  , mark(false()) -> false()
  , mark(div(X1, X2)) -> a__div(mark(X1), X2)
  , mark(minus(X1, X2)) -> a__minus(X1, X2)
  , mark(geq(X1, X2)) -> a__geq(X1, X2)
  , mark(if(X1, X2, X3)) -> a__if(mark(X1), X2, X3) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^2))

The following weak DPs constitute a sub-graph of the DG that is
closed under successors. The DPs are removed.

{ a__minus^#(X1, X2) -> c_1()
, a__minus^#(0(), Y) -> c_2()
, a__geq^#(X1, X2) -> c_4()
, a__geq^#(X, 0()) -> c_5()
, a__geq^#(0(), s(Y)) -> c_6()
, a__div^#(X1, X2) -> c_8()
, a__div^#(0(), s(Y)) -> c_9()
, a__if^#(X1, X2, X3) -> c_11()
, mark^#(0()) -> c_14()
, mark^#(true()) -> c_16()
, mark^#(false()) -> c_17() }

We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(n^2)).

Strict DPs:
  { a__minus^#(s(X), s(Y)) -> c_3(a__minus^#(X, Y))
  , a__geq^#(s(X), s(Y)) -> c_7(a__geq^#(X, Y))
  , a__div^#(s(X), s(Y)) ->
    c_10(a__if^#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0()),
         a__geq^#(X, Y))
  , a__if^#(true(), X, Y) -> c_12(mark^#(X))
  , a__if^#(false(), X, Y) -> c_13(mark^#(Y))
  , mark^#(s(X)) -> c_15(mark^#(X))
  , mark^#(div(X1, X2)) -> c_18(a__div^#(mark(X1), X2), mark^#(X1))
  , mark^#(minus(X1, X2)) -> c_19(a__minus^#(X1, X2))
  , mark^#(geq(X1, X2)) -> c_20(a__geq^#(X1, X2))
  , mark^#(if(X1, X2, X3)) ->
    c_21(a__if^#(mark(X1), X2, X3), mark^#(X1)) }
Weak Trs:
  { a__minus(X1, X2) -> minus(X1, X2)
  , a__minus(0(), Y) -> 0()
  , a__minus(s(X), s(Y)) -> a__minus(X, Y)
  , a__geq(X1, X2) -> geq(X1, X2)
  , a__geq(X, 0()) -> true()
  , a__geq(0(), s(Y)) -> false()
  , a__geq(s(X), s(Y)) -> a__geq(X, Y)
  , 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__if(X1, X2, X3) -> if(X1, X2, X3)
  , a__if(true(), X, Y) -> mark(X)
  , a__if(false(), X, Y) -> mark(Y)
  , mark(0()) -> 0()
  , mark(s(X)) -> s(mark(X))
  , mark(true()) -> true()
  , mark(false()) -> false()
  , mark(div(X1, X2)) -> a__div(mark(X1), X2)
  , mark(minus(X1, X2)) -> a__minus(X1, X2)
  , mark(geq(X1, X2)) -> a__geq(X1, X2)
  , mark(if(X1, X2, X3)) -> a__if(mark(X1), X2, X3) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^2))

We decompose the input problem according to the dependency graph
into the upper component

  { a__div^#(s(X), s(Y)) ->
    c_10(a__if^#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0()),
         a__geq^#(X, Y))
  , a__if^#(true(), X, Y) -> c_12(mark^#(X))
  , a__if^#(false(), X, Y) -> c_13(mark^#(Y))
  , mark^#(s(X)) -> c_15(mark^#(X))
  , mark^#(div(X1, X2)) -> c_18(a__div^#(mark(X1), X2), mark^#(X1))
  , mark^#(if(X1, X2, X3)) ->
    c_21(a__if^#(mark(X1), X2, X3), mark^#(X1)) }

and lower component

  { a__minus^#(s(X), s(Y)) -> c_3(a__minus^#(X, Y))
  , a__geq^#(s(X), s(Y)) -> c_7(a__geq^#(X, Y))
  , mark^#(minus(X1, X2)) -> c_19(a__minus^#(X1, X2))
  , mark^#(geq(X1, X2)) -> c_20(a__geq^#(X1, X2)) }

Further, following extension rules are added to the lower
component.

{ a__div^#(s(X), s(Y)) -> a__geq^#(X, Y)
, a__div^#(s(X), s(Y)) ->
  a__if^#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0())
, a__if^#(true(), X, Y) -> mark^#(X)
, a__if^#(false(), X, Y) -> mark^#(Y)
, mark^#(s(X)) -> mark^#(X)
, mark^#(div(X1, X2)) -> a__div^#(mark(X1), X2)
, mark^#(div(X1, X2)) -> mark^#(X1)
, mark^#(if(X1, X2, X3)) -> a__if^#(mark(X1), X2, X3)
, mark^#(if(X1, X2, X3)) -> mark^#(X1) }

TcT solves the upper component with certificate YES(O(1),O(n^1)).

Sub-proof:
----------
  We are left with following problem, upon which TcT provides the
  certificate YES(O(1),O(n^1)).
  
  Strict DPs:
    { a__div^#(s(X), s(Y)) ->
      c_10(a__if^#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0()),
           a__geq^#(X, Y))
    , a__if^#(true(), X, Y) -> c_12(mark^#(X))
    , a__if^#(false(), X, Y) -> c_13(mark^#(Y))
    , mark^#(s(X)) -> c_15(mark^#(X))
    , mark^#(div(X1, X2)) -> c_18(a__div^#(mark(X1), X2), mark^#(X1))
    , mark^#(if(X1, X2, X3)) ->
      c_21(a__if^#(mark(X1), X2, X3), mark^#(X1)) }
  Weak Trs:
    { a__minus(X1, X2) -> minus(X1, X2)
    , a__minus(0(), Y) -> 0()
    , a__minus(s(X), s(Y)) -> a__minus(X, Y)
    , a__geq(X1, X2) -> geq(X1, X2)
    , a__geq(X, 0()) -> true()
    , a__geq(0(), s(Y)) -> false()
    , a__geq(s(X), s(Y)) -> a__geq(X, Y)
    , 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__if(X1, X2, X3) -> if(X1, X2, X3)
    , a__if(true(), X, Y) -> mark(X)
    , a__if(false(), X, Y) -> mark(Y)
    , mark(0()) -> 0()
    , mark(s(X)) -> s(mark(X))
    , mark(true()) -> true()
    , mark(false()) -> false()
    , mark(div(X1, X2)) -> a__div(mark(X1), X2)
    , mark(minus(X1, X2)) -> a__minus(X1, X2)
    , mark(geq(X1, X2)) -> a__geq(X1, X2)
    , mark(if(X1, X2, X3)) -> a__if(mark(X1), X2, X3) }
  Obligation:
    innermost runtime complexity
  Answer:
    YES(O(1),O(n^1))
  
  We use the processor 'matrix interpretation of dimension 1' to
  orient following rules strictly.
  
  DPs:
    { 6: mark^#(if(X1, X2, X3)) ->
         c_21(a__if^#(mark(X1), X2, X3), mark^#(X1)) }
  Trs:
    { a__div(0(), s(Y)) -> 0()
    , mark(if(X1, X2, X3)) -> a__if(mark(X1), X2, X3) }
  
  Sub-proof:
  ----------
    The following argument positions are usable:
      Uargs(c_10) = {1}, Uargs(c_12) = {1}, Uargs(c_13) = {1},
      Uargs(c_15) = {1}, Uargs(c_18) = {1, 2}, Uargs(c_21) = {1, 2}
    
    TcT has computed the following constructor-based matrix
    interpretation satisfying not(EDA).
    
         [a__minus](x1, x2) = [0]                           
                                                            
                        [0] = [0]                           
                                                            
                    [s](x1) = [1] x1 + [0]                  
                                                            
           [a__geq](x1, x2) = [0]                           
                                                            
                     [true] = [0]                           
                                                            
                    [false] = [0]                           
                                                            
           [a__div](x1, x2) = [1] x1 + [7]                  
                                                            
        [a__if](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0]
                                                            
              [div](x1, x2) = [1] x1 + [7]                  
                                                            
            [minus](x1, x2) = [0]                           
                                                            
                 [mark](x1) = [1] x1 + [0]                  
                                                            
              [geq](x1, x2) = [0]                           
                                                            
           [if](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [4]
                                                            
         [a__geq^#](x1, x2) = [0]                           
                                                            
         [a__div^#](x1, x2) = [7]                           
                                                            
             [c_10](x1, x2) = [1] x1 + [1] x2 + [0]         
                                                            
      [a__if^#](x1, x2, x3) = [1] x2 + [1] x3 + [0]         
                                                            
                 [c_12](x1) = [1] x1 + [0]                  
                                                            
               [mark^#](x1) = [1] x1 + [0]                  
                                                            
                 [c_13](x1) = [1] x1 + [0]                  
                                                            
                 [c_15](x1) = [1] x1 + [0]                  
                                                            
             [c_18](x1, x2) = [1] x1 + [1] x2 + [0]         
                                                            
             [c_21](x1, x2) = [1] x1 + [1] x2 + [1]         
    
    The order satisfies the following ordering constraints:
    
            [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)]                                            
                                                                                              
              [a__geq(X1, X2)] =  [0]                                                         
                               >= [0]                                                         
                               =  [geq(X1, X2)]                                               
                                                                                              
              [a__geq(X, 0())] =  [0]                                                         
                               >= [0]                                                         
                               =  [true()]                                                    
                                                                                              
           [a__geq(0(), s(Y))] =  [0]                                                         
                               >= [0]                                                         
                               =  [false()]                                                   
                                                                                              
          [a__geq(s(X), s(Y))] =  [0]                                                         
                               >= [0]                                                         
                               =  [a__geq(X, Y)]                                              
                                                                                              
              [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]                                                 
                               >= [7]                                                         
                               =  [a__if(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0())]       
                                                                                              
           [a__if(X1, X2, X3)] =  [1] X1 + [1] X2 + [1] X3 + [0]                              
                               ?  [1] X1 + [1] X2 + [1] X3 + [4]                              
                               =  [if(X1, X2, X3)]                                            
                                                                                              
         [a__if(true(), X, Y)] =  [1] Y + [1] X + [0]                                         
                               >= [1] X + [0]                                                 
                               =  [mark(X)]                                                   
                                                                                              
        [a__if(false(), X, Y)] =  [1] Y + [1] X + [0]                                         
                               >= [1] Y + [0]                                                 
                               =  [mark(Y)]                                                   
                                                                                              
                   [mark(0())] =  [0]                                                         
                               >= [0]                                                         
                               =  [0()]                                                       
                                                                                              
                  [mark(s(X))] =  [1] X + [0]                                                 
                               >= [1] X + [0]                                                 
                               =  [s(mark(X))]                                                
                                                                                              
                [mark(true())] =  [0]                                                         
                               >= [0]                                                         
                               =  [true()]                                                    
                                                                                              
               [mark(false())] =  [0]                                                         
                               >= [0]                                                         
                               =  [false()]                                                   
                                                                                              
           [mark(div(X1, X2))] =  [1] X1 + [7]                                                
                               >= [1] X1 + [7]                                                
                               =  [a__div(mark(X1), X2)]                                      
                                                                                              
         [mark(minus(X1, X2))] =  [0]                                                         
                               >= [0]                                                         
                               =  [a__minus(X1, X2)]                                          
                                                                                              
           [mark(geq(X1, X2))] =  [0]                                                         
                               >= [0]                                                         
                               =  [a__geq(X1, X2)]                                            
                                                                                              
        [mark(if(X1, X2, X3))] =  [1] X1 + [1] X2 + [1] X3 + [4]                              
                               >  [1] X1 + [1] X2 + [1] X3 + [0]                              
                               =  [a__if(mark(X1), X2, X3)]                                   
                                                                                              
        [a__div^#(s(X), s(Y))] =  [7]                                                         
                               >= [7]                                                         
                               =  [c_10(a__if^#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0()),
                                        a__geq^#(X, Y))]                                      
                                                                                              
       [a__if^#(true(), X, Y)] =  [1] Y + [1] X + [0]                                         
                               >= [1] X + [0]                                                 
                               =  [c_12(mark^#(X))]                                           
                                                                                              
      [a__if^#(false(), X, Y)] =  [1] Y + [1] X + [0]                                         
                               >= [1] Y + [0]                                                 
                               =  [c_13(mark^#(Y))]                                           
                                                                                              
                [mark^#(s(X))] =  [1] X + [0]                                                 
                               >= [1] X + [0]                                                 
                               =  [c_15(mark^#(X))]                                           
                                                                                              
         [mark^#(div(X1, X2))] =  [1] X1 + [7]                                                
                               >= [1] X1 + [7]                                                
                               =  [c_18(a__div^#(mark(X1), X2), mark^#(X1))]                  
                                                                                              
      [mark^#(if(X1, X2, X3))] =  [1] X1 + [1] X2 + [1] X3 + [4]                              
                               >  [1] X1 + [1] X2 + [1] X3 + [1]                              
                               =  [c_21(a__if^#(mark(X1), X2, X3), mark^#(X1))]               
                                                                                              
  
  The strictly oriented rules are moved into the weak component.
  
  We are left with following problem, upon which TcT provides the
  certificate YES(O(1),O(n^1)).
  
  Strict DPs:
    { a__div^#(s(X), s(Y)) ->
      c_10(a__if^#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0()),
           a__geq^#(X, Y))
    , a__if^#(true(), X, Y) -> c_12(mark^#(X))
    , a__if^#(false(), X, Y) -> c_13(mark^#(Y))
    , mark^#(s(X)) -> c_15(mark^#(X))
    , mark^#(div(X1, X2)) -> c_18(a__div^#(mark(X1), X2), mark^#(X1)) }
  Weak DPs:
    { mark^#(if(X1, X2, X3)) ->
      c_21(a__if^#(mark(X1), X2, X3), mark^#(X1)) }
  Weak Trs:
    { a__minus(X1, X2) -> minus(X1, X2)
    , a__minus(0(), Y) -> 0()
    , a__minus(s(X), s(Y)) -> a__minus(X, Y)
    , a__geq(X1, X2) -> geq(X1, X2)
    , a__geq(X, 0()) -> true()
    , a__geq(0(), s(Y)) -> false()
    , a__geq(s(X), s(Y)) -> a__geq(X, Y)
    , 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__if(X1, X2, X3) -> if(X1, X2, X3)
    , a__if(true(), X, Y) -> mark(X)
    , a__if(false(), X, Y) -> mark(Y)
    , mark(0()) -> 0()
    , mark(s(X)) -> s(mark(X))
    , mark(true()) -> true()
    , mark(false()) -> false()
    , mark(div(X1, X2)) -> a__div(mark(X1), X2)
    , mark(minus(X1, X2)) -> a__minus(X1, X2)
    , mark(geq(X1, X2)) -> a__geq(X1, X2)
    , mark(if(X1, X2, X3)) -> a__if(mark(X1), X2, X3) }
  Obligation:
    innermost runtime complexity
  Answer:
    YES(O(1),O(n^1))
  
  We use the processor 'matrix interpretation of dimension 2' to
  orient following rules strictly.
  
  DPs:
    { 4: mark^#(s(X)) -> c_15(mark^#(X)) }
  Trs:
    { a__minus(0(), Y) -> 0()
    , a__div(0(), s(Y)) -> 0()
    , mark(0()) -> 0()
    , mark(s(X)) -> s(mark(X))
    , mark(true()) -> true()
    , mark(false()) -> false()
    , mark(div(X1, X2)) -> a__div(mark(X1), X2)
    , mark(minus(X1, X2)) -> a__minus(X1, X2)
    , mark(geq(X1, X2)) -> a__geq(X1, X2) }
  
  Sub-proof:
  ----------
    The following argument positions are usable:
      Uargs(c_10) = {1}, Uargs(c_12) = {1}, Uargs(c_13) = {1},
      Uargs(c_15) = {1}, Uargs(c_18) = {1, 2}, Uargs(c_21) = {1, 2}
    
    TcT has computed the following constructor-based matrix
    interpretation satisfying not(EDA) and not(IDA(1)).
    
         [a__minus](x1, x2) = [1]                                 
                              [0]                                 
                                                                  
                        [0] = [0]                                 
                              [0]                                 
                                                                  
                    [s](x1) = [1 1] x1 + [2]                      
                              [0 0]      [2]                      
                                                                  
           [a__geq](x1, x2) = [0]                                 
                              [3]                                 
                                                                  
                     [true] = [0]                                 
                              [1]                                 
                                                                  
                    [false] = [0]                                 
                              [1]                                 
                                                                  
           [a__div](x1, x2) = [1 6] x1 + [1]                      
                              [0 0]      [4]                      
                                                                  
        [a__if](x1, x2, x3) = [1 1] x1 + [2 0] x2 + [2 0] x3 + [0]
                              [0 0]      [0 2]      [0 2]      [0]
                                                                  
              [div](x1, x2) = [1 6] x1 + [1]                      
                              [0 0]      [2]                      
                                                                  
            [minus](x1, x2) = [1]                                 
                              [0]                                 
                                                                  
                 [mark](x1) = [2 0] x1 + [1]                      
                              [0 2]      [0]                      
                                                                  
              [geq](x1, x2) = [0]                                 
                              [3]                                 
                                                                  
           [if](x1, x2, x3) = [1 1] x1 + [1 0] x2 + [1 0] x3 + [0]
                              [0 0]      [0 1]      [0 1]      [0]
                                                                  
         [a__geq^#](x1, x2) = [0]                                 
                              [1]                                 
                                                                  
         [a__div^#](x1, x2) = [0 5] x1 + [4]                      
                              [0 0]      [0]                      
                                                                  
             [c_10](x1, x2) = [1 1] x1 + [1 0] x2 + [0]           
                              [0 0]      [0 0]      [0]           
                                                                  
      [a__if^#](x1, x2, x3) = [0 0] x1 + [2 1] x2 + [2 1] x3 + [0]
                              [4 0]      [0 0]      [0 1]      [0]
                                                                  
                 [c_12](x1) = [1 0] x1 + [0]                      
                              [0 0]      [0]                      
                                                                  
               [mark^#](x1) = [2 1] x1 + [0]                      
                              [0 1]      [0]                      
                                                                  
                 [c_13](x1) = [1 0] x1 + [0]                      
                              [0 0]      [0]                      
                                                                  
                 [c_15](x1) = [1 1] x1 + [1]                      
                              [0 0]      [0]                      
                                                                  
             [c_18](x1, x2) = [1 1] x1 + [1 1] x2 + [0]           
                              [0 0]      [0 0]      [0]           
                                                                  
             [c_21](x1, x2) = [1 0] x1 + [1 1] x2 + [0]           
                              [0 0]      [0 0]      [0]           
    
    The order satisfies the following ordering constraints:
    
            [a__minus(X1, X2)] =  [1]                                                         
                                  [0]                                                         
                               >= [1]                                                         
                                  [0]                                                         
                               =  [minus(X1, X2)]                                             
                                                                                              
            [a__minus(0(), Y)] =  [1]                                                         
                                  [0]                                                         
                               >  [0]                                                         
                                  [0]                                                         
                               =  [0()]                                                       
                                                                                              
        [a__minus(s(X), s(Y))] =  [1]                                                         
                                  [0]                                                         
                               >= [1]                                                         
                                  [0]                                                         
                               =  [a__minus(X, Y)]                                            
                                                                                              
              [a__geq(X1, X2)] =  [0]                                                         
                                  [3]                                                         
                               >= [0]                                                         
                                  [3]                                                         
                               =  [geq(X1, X2)]                                               
                                                                                              
              [a__geq(X, 0())] =  [0]                                                         
                                  [3]                                                         
                               >= [0]                                                         
                                  [1]                                                         
                               =  [true()]                                                    
                                                                                              
           [a__geq(0(), s(Y))] =  [0]                                                         
                                  [3]                                                         
                               >= [0]                                                         
                                  [1]                                                         
                               =  [false()]                                                   
                                                                                              
          [a__geq(s(X), s(Y))] =  [0]                                                         
                                  [3]                                                         
                               >= [0]                                                         
                                  [3]                                                         
                               =  [a__geq(X, Y)]                                              
                                                                                              
              [a__div(X1, X2)] =  [1 6] X1 + [1]                                              
                                  [0 0]      [4]                                              
                               >= [1 6] X1 + [1]                                              
                                  [0 0]      [2]                                              
                               =  [div(X1, X2)]                                               
                                                                                              
           [a__div(0(), s(Y))] =  [1]                                                         
                                  [4]                                                         
                               >  [0]                                                         
                                  [0]                                                         
                               =  [0()]                                                       
                                                                                              
          [a__div(s(X), s(Y))] =  [1 1] X + [15]                                              
                                  [0 0]     [4]                                               
                               >= [15]                                                        
                                  [4]                                                         
                               =  [a__if(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0())]       
                                                                                              
           [a__if(X1, X2, X3)] =  [1 1] X1 + [2 0] X2 + [2 0] X3 + [0]                        
                                  [0 0]      [0 2]      [0 2]      [0]                        
                               >= [1 1] X1 + [1 0] X2 + [1 0] X3 + [0]                        
                                  [0 0]      [0 1]      [0 1]      [0]                        
                               =  [if(X1, X2, X3)]                                            
                                                                                              
         [a__if(true(), X, Y)] =  [2 0] Y + [2 0] X + [1]                                     
                                  [0 2]     [0 2]     [0]                                     
                               >= [2 0] X + [1]                                               
                                  [0 2]     [0]                                               
                               =  [mark(X)]                                                   
                                                                                              
        [a__if(false(), X, Y)] =  [2 0] Y + [2 0] X + [1]                                     
                                  [0 2]     [0 2]     [0]                                     
                               >= [2 0] Y + [1]                                               
                                  [0 2]     [0]                                               
                               =  [mark(Y)]                                                   
                                                                                              
                   [mark(0())] =  [1]                                                         
                                  [0]                                                         
                               >  [0]                                                         
                                  [0]                                                         
                               =  [0()]                                                       
                                                                                              
                  [mark(s(X))] =  [2 2] X + [5]                                               
                                  [0 0]     [4]                                               
                               >  [2 2] X + [3]                                               
                                  [0 0]     [2]                                               
                               =  [s(mark(X))]                                                
                                                                                              
                [mark(true())] =  [1]                                                         
                                  [2]                                                         
                               >  [0]                                                         
                                  [1]                                                         
                               =  [true()]                                                    
                                                                                              
               [mark(false())] =  [1]                                                         
                                  [2]                                                         
                               >  [0]                                                         
                                  [1]                                                         
                               =  [false()]                                                   
                                                                                              
           [mark(div(X1, X2))] =  [2 12] X1 + [3]                                             
                                  [0  0]      [4]                                             
                               >  [2 12] X1 + [2]                                             
                                  [0  0]      [4]                                             
                               =  [a__div(mark(X1), X2)]                                      
                                                                                              
         [mark(minus(X1, X2))] =  [3]                                                         
                                  [0]                                                         
                               >  [1]                                                         
                                  [0]                                                         
                               =  [a__minus(X1, X2)]                                          
                                                                                              
           [mark(geq(X1, X2))] =  [1]                                                         
                                  [6]                                                         
                               >  [0]                                                         
                                  [3]                                                         
                               =  [a__geq(X1, X2)]                                            
                                                                                              
        [mark(if(X1, X2, X3))] =  [2 2] X1 + [2 0] X2 + [2 0] X3 + [1]                        
                                  [0 0]      [0 2]      [0 2]      [0]                        
                               >= [2 2] X1 + [2 0] X2 + [2 0] X3 + [1]                        
                                  [0 0]      [0 2]      [0 2]      [0]                        
                               =  [a__if(mark(X1), X2, X3)]                                   
                                                                                              
        [a__div^#(s(X), s(Y))] =  [14]                                                        
                                  [0]                                                         
                               >= [14]                                                        
                                  [0]                                                         
                               =  [c_10(a__if^#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0()),
                                        a__geq^#(X, Y))]                                      
                                                                                              
       [a__if^#(true(), X, Y)] =  [2 1] Y + [2 1] X + [0]                                     
                                  [0 1]     [0 0]     [0]                                     
                               >= [2 1] X + [0]                                               
                                  [0 0]     [0]                                               
                               =  [c_12(mark^#(X))]                                           
                                                                                              
      [a__if^#(false(), X, Y)] =  [2 1] Y + [2 1] X + [0]                                     
                                  [0 1]     [0 0]     [0]                                     
                               >= [2 1] Y + [0]                                               
                                  [0 0]     [0]                                               
                               =  [c_13(mark^#(Y))]                                           
                                                                                              
                [mark^#(s(X))] =  [2 2] X + [6]                                               
                                  [0 0]     [2]                                               
                               >  [2 2] X + [1]                                               
                                  [0 0]     [0]                                               
                               =  [c_15(mark^#(X))]                                           
                                                                                              
         [mark^#(div(X1, X2))] =  [2 12] X1 + [4]                                             
                                  [0  0]      [2]                                             
                               >= [2 12] X1 + [4]                                             
                                  [0  0]      [0]                                             
                               =  [c_18(a__div^#(mark(X1), X2), mark^#(X1))]                  
                                                                                              
      [mark^#(if(X1, X2, X3))] =  [2 2] X1 + [2 1] X2 + [2 1] X3 + [0]                        
                                  [0 0]      [0 1]      [0 1]      [0]                        
                               >= [2 2] X1 + [2 1] X2 + [2 1] X3 + [0]                        
                                  [0 0]      [0 0]      [0 0]      [0]                        
                               =  [c_21(a__if^#(mark(X1), X2, X3), mark^#(X1))]               
                                                                                              
  
  The strictly oriented rules are moved into the weak component.
  
  We are left with following problem, upon which TcT provides the
  certificate YES(O(1),O(n^1)).
  
  Strict DPs:
    { a__div^#(s(X), s(Y)) ->
      c_10(a__if^#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0()),
           a__geq^#(X, Y))
    , a__if^#(true(), X, Y) -> c_12(mark^#(X))
    , a__if^#(false(), X, Y) -> c_13(mark^#(Y))
    , mark^#(div(X1, X2)) -> c_18(a__div^#(mark(X1), X2), mark^#(X1)) }
  Weak DPs:
    { mark^#(s(X)) -> c_15(mark^#(X))
    , mark^#(if(X1, X2, X3)) ->
      c_21(a__if^#(mark(X1), X2, X3), mark^#(X1)) }
  Weak Trs:
    { a__minus(X1, X2) -> minus(X1, X2)
    , a__minus(0(), Y) -> 0()
    , a__minus(s(X), s(Y)) -> a__minus(X, Y)
    , a__geq(X1, X2) -> geq(X1, X2)
    , a__geq(X, 0()) -> true()
    , a__geq(0(), s(Y)) -> false()
    , a__geq(s(X), s(Y)) -> a__geq(X, Y)
    , 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__if(X1, X2, X3) -> if(X1, X2, X3)
    , a__if(true(), X, Y) -> mark(X)
    , a__if(false(), X, Y) -> mark(Y)
    , mark(0()) -> 0()
    , mark(s(X)) -> s(mark(X))
    , mark(true()) -> true()
    , mark(false()) -> false()
    , mark(div(X1, X2)) -> a__div(mark(X1), X2)
    , mark(minus(X1, X2)) -> a__minus(X1, X2)
    , mark(geq(X1, X2)) -> a__geq(X1, X2)
    , mark(if(X1, X2, X3)) -> a__if(mark(X1), X2, X3) }
  Obligation:
    innermost runtime complexity
  Answer:
    YES(O(1),O(n^1))
  
  We use the processor 'matrix interpretation of dimension 2' to
  orient following rules strictly.
  
  DPs:
    { 1: a__div^#(s(X), s(Y)) ->
         c_10(a__if^#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0()),
              a__geq^#(X, Y))
    , 4: mark^#(div(X1, X2)) ->
         c_18(a__div^#(mark(X1), X2), mark^#(X1))
    , 6: mark^#(if(X1, X2, X3)) ->
         c_21(a__if^#(mark(X1), X2, X3), mark^#(X1)) }
  Trs:
    { 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__if(X1, X2, X3) -> if(X1, X2, X3)
    , a__if(true(), X, Y) -> mark(X)
    , a__if(false(), X, Y) -> mark(Y)
    , mark(0()) -> 0()
    , mark(true()) -> true()
    , mark(false()) -> false()
    , mark(minus(X1, X2)) -> a__minus(X1, X2)
    , mark(geq(X1, X2)) -> a__geq(X1, X2) }
  
  Sub-proof:
  ----------
    The following argument positions are usable:
      Uargs(c_10) = {1}, Uargs(c_12) = {1}, Uargs(c_13) = {1},
      Uargs(c_15) = {1}, Uargs(c_18) = {1, 2}, Uargs(c_21) = {1, 2}
    
    TcT has computed the following constructor-based matrix
    interpretation satisfying not(EDA) and not(IDA(1)).
    
         [a__minus](x1, x2) = [0]                                 
                              [1]                                 
                                                                  
                        [0] = [0]                                 
                              [0]                                 
                                                                  
                    [s](x1) = [1 0] x1 + [0]                      
                              [0 0]      [7]                      
                                                                  
           [a__geq](x1, x2) = [0]                                 
                              [2]                                 
                                                                  
                     [true] = [0]                                 
                              [2]                                 
                                                                  
                    [false] = [0]                                 
                              [2]                                 
                                                                  
           [a__div](x1, x2) = [1 2] x1 + [0 0] x2 + [1]           
                              [0 0]      [0 2]      [1]           
                                                                  
        [a__if](x1, x2, x3) = [1 3] x1 + [3 0] x2 + [3 0] x3 + [3]
                              [0 0]      [0 2]      [0 2]      [1]
                                                                  
              [div](x1, x2) = [1 2] x1 + [0 0] x2 + [1]           
                              [0 0]      [0 1]      [1]           
                                                                  
            [minus](x1, x2) = [0]                                 
                              [0]                                 
                                                                  
                 [mark](x1) = [3 0] x1 + [6]                      
                              [0 2]      [1]                      
                                                                  
              [geq](x1, x2) = [0]                                 
                              [2]                                 
                                                                  
           [if](x1, x2, x3) = [1 3] x1 + [1 0] x2 + [1 0] x3 + [2]
                              [0 0]      [0 1]      [0 1]      [1]
                                                                  
         [a__geq^#](x1, x2) = [1]                                 
                              [0]                                 
                                                                  
         [a__div^#](x1, x2) = [0 1] x1 + [0]                      
                              [0 0]      [1]                      
                                                                  
             [c_10](x1, x2) = [1 0] x1 + [1 1] x2 + [0]           
                              [0 0]      [0 0]      [0]           
                                                                  
      [a__if^#](x1, x2, x3) = [0 0] x1 + [5 0] x2 + [5 0] x3 + [0]
                              [4 0]      [1 0]      [0 1]      [0]
                                                                  
                 [c_12](x1) = [1 0] x1 + [0]                      
                              [0 0]      [0]                      
                                                                  
               [mark^#](x1) = [5 0] x1 + [0]                      
                              [0 0]      [0]                      
                                                                  
                 [c_13](x1) = [1 0] x1 + [0]                      
                              [0 0]      [0]                      
                                                                  
                 [c_15](x1) = [1 0] x1 + [0]                      
                              [0 0]      [0]                      
                                                                  
             [c_18](x1, x2) = [4 0] x1 + [1 1] x2 + [0]           
                              [0 0]      [0 0]      [0]           
                                                                  
             [c_21](x1, x2) = [1 0] x1 + [1 0] x2 + [0]           
                              [0 0]      [0 0]      [0]           
    
    The order satisfies the following ordering constraints:
    
            [a__minus(X1, X2)] =  [0]                                                         
                                  [1]                                                         
                               >= [0]                                                         
                                  [0]                                                         
                               =  [minus(X1, X2)]                                             
                                                                                              
            [a__minus(0(), Y)] =  [0]                                                         
                                  [1]                                                         
                               >= [0]                                                         
                                  [0]                                                         
                               =  [0()]                                                       
                                                                                              
        [a__minus(s(X), s(Y))] =  [0]                                                         
                                  [1]                                                         
                               >= [0]                                                         
                                  [1]                                                         
                               =  [a__minus(X, Y)]                                            
                                                                                              
              [a__geq(X1, X2)] =  [0]                                                         
                                  [2]                                                         
                               >= [0]                                                         
                                  [2]                                                         
                               =  [geq(X1, X2)]                                               
                                                                                              
              [a__geq(X, 0())] =  [0]                                                         
                                  [2]                                                         
                               >= [0]                                                         
                                  [2]                                                         
                               =  [true()]                                                    
                                                                                              
           [a__geq(0(), s(Y))] =  [0]                                                         
                                  [2]                                                         
                               >= [0]                                                         
                                  [2]                                                         
                               =  [false()]                                                   
                                                                                              
          [a__geq(s(X), s(Y))] =  [0]                                                         
                                  [2]                                                         
                               >= [0]                                                         
                                  [2]                                                         
                               =  [a__geq(X, Y)]                                              
                                                                                              
              [a__div(X1, X2)] =  [1 2] X1 + [0 0] X2 + [1]                                   
                                  [0 0]      [0 2]      [1]                                   
                               >= [1 2] X1 + [0 0] X2 + [1]                                   
                                  [0 0]      [0 1]      [1]                                   
                               =  [div(X1, X2)]                                               
                                                                                              
           [a__div(0(), s(Y))] =  [1]                                                         
                                  [15]                                                        
                               >  [0]                                                         
                                  [0]                                                         
                               =  [0()]                                                       
                                                                                              
          [a__div(s(X), s(Y))] =  [1 0] X + [15]                                              
                                  [0 0]     [15]                                              
                               >  [12]                                                        
                                  [15]                                                        
                               =  [a__if(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0())]       
                                                                                              
           [a__if(X1, X2, X3)] =  [1 3] X1 + [3 0] X2 + [3 0] X3 + [3]                        
                                  [0 0]      [0 2]      [0 2]      [1]                        
                               >  [1 3] X1 + [1 0] X2 + [1 0] X3 + [2]                        
                                  [0 0]      [0 1]      [0 1]      [1]                        
                               =  [if(X1, X2, X3)]                                            
                                                                                              
         [a__if(true(), X, Y)] =  [3 0] Y + [3 0] X + [9]                                     
                                  [0 2]     [0 2]     [1]                                     
                               >  [3 0] X + [6]                                               
                                  [0 2]     [1]                                               
                               =  [mark(X)]                                                   
                                                                                              
        [a__if(false(), X, Y)] =  [3 0] Y + [3 0] X + [9]                                     
                                  [0 2]     [0 2]     [1]                                     
                               >  [3 0] Y + [6]                                               
                                  [0 2]     [1]                                               
                               =  [mark(Y)]                                                   
                                                                                              
                   [mark(0())] =  [6]                                                         
                                  [1]                                                         
                               >  [0]                                                         
                                  [0]                                                         
                               =  [0()]                                                       
                                                                                              
                  [mark(s(X))] =  [3 0] X + [6]                                               
                                  [0 0]     [15]                                              
                               >= [3 0] X + [6]                                               
                                  [0 0]     [7]                                               
                               =  [s(mark(X))]                                                
                                                                                              
                [mark(true())] =  [6]                                                         
                                  [5]                                                         
                               >  [0]                                                         
                                  [2]                                                         
                               =  [true()]                                                    
                                                                                              
               [mark(false())] =  [6]                                                         
                                  [5]                                                         
                               >  [0]                                                         
                                  [2]                                                         
                               =  [false()]                                                   
                                                                                              
           [mark(div(X1, X2))] =  [3 6] X1 + [0 0] X2 + [9]                                   
                                  [0 0]      [0 2]      [3]                                   
                               >= [3 4] X1 + [0 0] X2 + [9]                                   
                                  [0 0]      [0 2]      [1]                                   
                               =  [a__div(mark(X1), X2)]                                      
                                                                                              
         [mark(minus(X1, X2))] =  [6]                                                         
                                  [1]                                                         
                               >  [0]                                                         
                                  [1]                                                         
                               =  [a__minus(X1, X2)]                                          
                                                                                              
           [mark(geq(X1, X2))] =  [6]                                                         
                                  [5]                                                         
                               >  [0]                                                         
                                  [2]                                                         
                               =  [a__geq(X1, X2)]                                            
                                                                                              
        [mark(if(X1, X2, X3))] =  [3 9] X1 + [3 0] X2 + [3 0] X3 + [12]                       
                                  [0 0]      [0 2]      [0 2]      [3]                        
                               >= [3 6] X1 + [3 0] X2 + [3 0] X3 + [12]                       
                                  [0 0]      [0 2]      [0 2]      [1]                        
                               =  [a__if(mark(X1), X2, X3)]                                   
                                                                                              
        [a__div^#(s(X), s(Y))] =  [7]                                                         
                                  [1]                                                         
                               >  [6]                                                         
                                  [0]                                                         
                               =  [c_10(a__if^#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0()),
                                        a__geq^#(X, Y))]                                      
                                                                                              
       [a__if^#(true(), X, Y)] =  [5 0] Y + [5 0] X + [0]                                     
                                  [0 1]     [1 0]     [0]                                     
                               >= [5 0] X + [0]                                               
                                  [0 0]     [0]                                               
                               =  [c_12(mark^#(X))]                                           
                                                                                              
      [a__if^#(false(), X, Y)] =  [5 0] Y + [5 0] X + [0]                                     
                                  [0 1]     [1 0]     [0]                                     
                               >= [5 0] Y + [0]                                               
                                  [0 0]     [0]                                               
                               =  [c_13(mark^#(Y))]                                           
                                                                                              
                [mark^#(s(X))] =  [5 0] X + [0]                                               
                                  [0 0]     [0]                                               
                               >= [5 0] X + [0]                                               
                                  [0 0]     [0]                                               
                               =  [c_15(mark^#(X))]                                           
                                                                                              
         [mark^#(div(X1, X2))] =  [5 10] X1 + [5]                                             
                                  [0  0]      [0]                                             
                               >  [5 8] X1 + [4]                                              
                                  [0 0]      [0]                                              
                               =  [c_18(a__div^#(mark(X1), X2), mark^#(X1))]                  
                                                                                              
      [mark^#(if(X1, X2, X3))] =  [5 15] X1 + [5 0] X2 + [5 0] X3 + [10]                      
                                  [0  0]      [0 0]      [0 0]      [0]                       
                               >  [5 0] X1 + [5 0] X2 + [5 0] X3 + [0]                        
                                  [0 0]      [0 0]      [0 0]      [0]                        
                               =  [c_21(a__if^#(mark(X1), X2, X3), mark^#(X1))]               
                                                                                              
  
  We return to the main proof. Consider the set of all dependency
  pairs
  
  :
    { 1: a__div^#(s(X), s(Y)) ->
         c_10(a__if^#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0()),
              a__geq^#(X, Y))
    , 2: a__if^#(true(), X, Y) -> c_12(mark^#(X))
    , 3: a__if^#(false(), X, Y) -> c_13(mark^#(Y))
    , 4: mark^#(div(X1, X2)) ->
         c_18(a__div^#(mark(X1), X2), mark^#(X1))
    , 5: mark^#(s(X)) -> c_15(mark^#(X))
    , 6: mark^#(if(X1, X2, X3)) ->
         c_21(a__if^#(mark(X1), X2, X3), mark^#(X1)) }
  
  Processor 'matrix interpretation of dimension 2' induces the
  complexity certificate YES(?,O(n^1)) on application of dependency
  pairs {1,4,6}. These cover all (indirect) predecessors of
  dependency pairs {1,2,3,4,6}, their number of application is
  equally bounded. The dependency pairs are shifted into the weak
  component.
  
  We are left with following problem, upon which TcT provides the
  certificate YES(O(1),O(1)).
  
  Weak DPs:
    { a__div^#(s(X), s(Y)) ->
      c_10(a__if^#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0()),
           a__geq^#(X, Y))
    , a__if^#(true(), X, Y) -> c_12(mark^#(X))
    , a__if^#(false(), X, Y) -> c_13(mark^#(Y))
    , mark^#(s(X)) -> c_15(mark^#(X))
    , mark^#(div(X1, X2)) -> c_18(a__div^#(mark(X1), X2), mark^#(X1))
    , mark^#(if(X1, X2, X3)) ->
      c_21(a__if^#(mark(X1), X2, X3), mark^#(X1)) }
  Weak Trs:
    { a__minus(X1, X2) -> minus(X1, X2)
    , a__minus(0(), Y) -> 0()
    , a__minus(s(X), s(Y)) -> a__minus(X, Y)
    , a__geq(X1, X2) -> geq(X1, X2)
    , a__geq(X, 0()) -> true()
    , a__geq(0(), s(Y)) -> false()
    , a__geq(s(X), s(Y)) -> a__geq(X, Y)
    , 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__if(X1, X2, X3) -> if(X1, X2, X3)
    , a__if(true(), X, Y) -> mark(X)
    , a__if(false(), X, Y) -> mark(Y)
    , mark(0()) -> 0()
    , mark(s(X)) -> s(mark(X))
    , mark(true()) -> true()
    , mark(false()) -> false()
    , mark(div(X1, X2)) -> a__div(mark(X1), X2)
    , mark(minus(X1, X2)) -> a__minus(X1, X2)
    , mark(geq(X1, X2)) -> a__geq(X1, X2)
    , mark(if(X1, X2, X3)) -> a__if(mark(X1), X2, X3) }
  Obligation:
    innermost runtime complexity
  Answer:
    YES(O(1),O(1))
  
  The following weak DPs constitute a sub-graph of the DG that is
  closed under successors. The DPs are removed.
  
  { a__div^#(s(X), s(Y)) ->
    c_10(a__if^#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0()),
         a__geq^#(X, Y))
  , a__if^#(true(), X, Y) -> c_12(mark^#(X))
  , a__if^#(false(), X, Y) -> c_13(mark^#(Y))
  , mark^#(s(X)) -> c_15(mark^#(X))
  , mark^#(div(X1, X2)) -> c_18(a__div^#(mark(X1), X2), mark^#(X1))
  , mark^#(if(X1, X2, X3)) ->
    c_21(a__if^#(mark(X1), X2, X3), mark^#(X1)) }
  
  We are left with following problem, upon which TcT provides the
  certificate YES(O(1),O(1)).
  
  Weak Trs:
    { a__minus(X1, X2) -> minus(X1, X2)
    , a__minus(0(), Y) -> 0()
    , a__minus(s(X), s(Y)) -> a__minus(X, Y)
    , a__geq(X1, X2) -> geq(X1, X2)
    , a__geq(X, 0()) -> true()
    , a__geq(0(), s(Y)) -> false()
    , a__geq(s(X), s(Y)) -> a__geq(X, Y)
    , 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__if(X1, X2, X3) -> if(X1, X2, X3)
    , a__if(true(), X, Y) -> mark(X)
    , a__if(false(), X, Y) -> mark(Y)
    , mark(0()) -> 0()
    , mark(s(X)) -> s(mark(X))
    , mark(true()) -> true()
    , mark(false()) -> false()
    , mark(div(X1, X2)) -> a__div(mark(X1), X2)
    , mark(minus(X1, X2)) -> a__minus(X1, X2)
    , mark(geq(X1, X2)) -> a__geq(X1, X2)
    , mark(if(X1, X2, X3)) -> a__if(mark(X1), X2, X3) }
  Obligation:
    innermost runtime complexity
  Answer:
    YES(O(1),O(1))
  
  No rule is usable, rules are removed from the input problem.
  
  We are left with following problem, upon which TcT provides the
  certificate YES(O(1),O(1)).
  
  Rules: Empty
  Obligation:
    innermost runtime complexity
  Answer:
    YES(O(1),O(1))
  
  Empty rules are trivially bounded

We return to the main proof.

We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(n^1)).

Strict DPs:
  { a__minus^#(s(X), s(Y)) -> c_3(a__minus^#(X, Y))
  , a__geq^#(s(X), s(Y)) -> c_7(a__geq^#(X, Y))
  , mark^#(minus(X1, X2)) -> c_19(a__minus^#(X1, X2))
  , mark^#(geq(X1, X2)) -> c_20(a__geq^#(X1, X2)) }
Weak DPs:
  { a__div^#(s(X), s(Y)) -> a__geq^#(X, Y)
  , a__div^#(s(X), s(Y)) ->
    a__if^#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0())
  , a__if^#(true(), X, Y) -> mark^#(X)
  , a__if^#(false(), X, Y) -> mark^#(Y)
  , mark^#(s(X)) -> mark^#(X)
  , mark^#(div(X1, X2)) -> a__div^#(mark(X1), X2)
  , mark^#(div(X1, X2)) -> mark^#(X1)
  , mark^#(if(X1, X2, X3)) -> a__if^#(mark(X1), X2, X3)
  , mark^#(if(X1, X2, X3)) -> mark^#(X1) }
Weak Trs:
  { a__minus(X1, X2) -> minus(X1, X2)
  , a__minus(0(), Y) -> 0()
  , a__minus(s(X), s(Y)) -> a__minus(X, Y)
  , a__geq(X1, X2) -> geq(X1, X2)
  , a__geq(X, 0()) -> true()
  , a__geq(0(), s(Y)) -> false()
  , a__geq(s(X), s(Y)) -> a__geq(X, Y)
  , 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__if(X1, X2, X3) -> if(X1, X2, X3)
  , a__if(true(), X, Y) -> mark(X)
  , a__if(false(), X, Y) -> mark(Y)
  , mark(0()) -> 0()
  , mark(s(X)) -> s(mark(X))
  , mark(true()) -> true()
  , mark(false()) -> false()
  , mark(div(X1, X2)) -> a__div(mark(X1), X2)
  , mark(minus(X1, X2)) -> a__minus(X1, X2)
  , mark(geq(X1, X2)) -> a__geq(X1, X2)
  , mark(if(X1, X2, X3)) -> a__if(mark(X1), X2, X3) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^1))

We use the processor 'matrix interpretation of dimension 1' to
orient following rules strictly.

DPs:
  { 2: a__geq^#(s(X), s(Y)) -> c_7(a__geq^#(X, Y))
  , 5: a__div^#(s(X), s(Y)) -> a__geq^#(X, Y)
  , 9: mark^#(s(X)) -> mark^#(X)
  , 11: mark^#(div(X1, X2)) -> mark^#(X1) }
Trs:
  { a__geq(s(X), s(Y)) -> a__geq(X, Y)
  , a__div(0(), s(Y)) -> 0() }

Sub-proof:
----------
  The following argument positions are usable:
    Uargs(c_3) = {1}, Uargs(c_7) = {1}, Uargs(c_19) = {1},
    Uargs(c_20) = {1}
  
  TcT has computed the following constructor-based matrix
  interpretation satisfying not(EDA).
  
       [a__minus](x1, x2) = [0]                           
                                                          
                      [0] = [0]                           
                                                          
                  [s](x1) = [1] x1 + [1]                  
                                                          
         [a__geq](x1, x2) = [1] x1 + [0]                  
                                                          
                   [true] = [0]                           
                                                          
                  [false] = [0]                           
                                                          
         [a__div](x1, x2) = [1] x1 + [1] x2 + [1]         
                                                          
      [a__if](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0]
                                                          
            [div](x1, x2) = [1] x1 + [1] x2 + [1]         
                                                          
          [minus](x1, x2) = [0]                           
                                                          
               [mark](x1) = [1] x1 + [0]                  
                                                          
            [geq](x1, x2) = [1] x1 + [0]                  
                                                          
         [if](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0]
                                                          
     [a__minus^#](x1, x2) = [0]                           
                                                          
                [c_3](x1) = [3] x1 + [0]                  
                                                          
       [a__geq^#](x1, x2) = [1] x1 + [0]                  
                                                          
                [c_7](x1) = [1] x1 + [0]                  
                                                          
       [a__div^#](x1, x2) = [5] x1 + [5] x2 + [5]         
                                                          
    [a__if^#](x1, x2, x3) = [5] x1 + [5] x2 + [5] x3 + [0]
                                                          
             [mark^#](x1) = [5] x1 + [0]                  
                                                          
               [c_19](x1) = [1] x1 + [0]                  
                                                          
               [c_20](x1) = [1] x1 + [0]                  
  
  The order satisfies the following ordering constraints:
  
          [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)]                                       
                                                                                       
            [a__geq(X1, X2)] =  [1] X1 + [0]                                           
                             >= [1] X1 + [0]                                           
                             =  [geq(X1, X2)]                                          
                                                                                       
            [a__geq(X, 0())] =  [1] X + [0]                                            
                             >= [0]                                                    
                             =  [true()]                                               
                                                                                       
         [a__geq(0(), s(Y))] =  [0]                                                    
                             >= [0]                                                    
                             =  [false()]                                              
                                                                                       
        [a__geq(s(X), s(Y))] =  [1] X + [1]                                            
                             >  [1] X + [0]                                            
                             =  [a__geq(X, Y)]                                         
                                                                                       
            [a__div(X1, X2)] =  [1] X1 + [1] X2 + [1]                                  
                             >= [1] X1 + [1] X2 + [1]                                  
                             =  [div(X1, X2)]                                          
                                                                                       
         [a__div(0(), s(Y))] =  [1] Y + [2]                                            
                             >  [0]                                                    
                             =  [0()]                                                  
                                                                                       
        [a__div(s(X), s(Y))] =  [1] Y + [1] X + [3]                                    
                             >= [1] Y + [1] X + [3]                                    
                             =  [a__if(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0())]  
                                                                                       
         [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(true(), X, Y)] =  [1] Y + [1] X + [0]                                    
                             >= [1] X + [0]                                            
                             =  [mark(X)]                                              
                                                                                       
      [a__if(false(), X, Y)] =  [1] Y + [1] X + [0]                                    
                             >= [1] Y + [0]                                            
                             =  [mark(Y)]                                              
                                                                                       
                 [mark(0())] =  [0]                                                    
                             >= [0]                                                    
                             =  [0()]                                                  
                                                                                       
                [mark(s(X))] =  [1] X + [1]                                            
                             >= [1] X + [1]                                            
                             =  [s(mark(X))]                                           
                                                                                       
              [mark(true())] =  [0]                                                    
                             >= [0]                                                    
                             =  [true()]                                               
                                                                                       
             [mark(false())] =  [0]                                                    
                             >= [0]                                                    
                             =  [false()]                                              
                                                                                       
         [mark(div(X1, X2))] =  [1] X1 + [1] X2 + [1]                                  
                             >= [1] X1 + [1] X2 + [1]                                  
                             =  [a__div(mark(X1), X2)]                                 
                                                                                       
       [mark(minus(X1, X2))] =  [0]                                                    
                             >= [0]                                                    
                             =  [a__minus(X1, X2)]                                     
                                                                                       
         [mark(geq(X1, X2))] =  [1] X1 + [0]                                           
                             >= [1] X1 + [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)]                              
                                                                                       
    [a__minus^#(s(X), s(Y))] =  [0]                                                    
                             >= [0]                                                    
                             =  [c_3(a__minus^#(X, Y))]                                
                                                                                       
      [a__geq^#(s(X), s(Y))] =  [1] X + [1]                                            
                             >  [1] X + [0]                                            
                             =  [c_7(a__geq^#(X, Y))]                                  
                                                                                       
      [a__div^#(s(X), s(Y))] =  [5] Y + [5] X + [15]                                   
                             >  [1] X + [0]                                            
                             =  [a__geq^#(X, Y)]                                       
                                                                                       
      [a__div^#(s(X), s(Y))] =  [5] Y + [5] X + [15]                                   
                             >= [5] Y + [5] X + [15]                                   
                             =  [a__if^#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0())]
                                                                                       
     [a__if^#(true(), X, Y)] =  [5] Y + [5] X + [0]                                    
                             >= [5] X + [0]                                            
                             =  [mark^#(X)]                                            
                                                                                       
    [a__if^#(false(), X, Y)] =  [5] Y + [5] X + [0]                                    
                             >= [5] Y + [0]                                            
                             =  [mark^#(Y)]                                            
                                                                                       
              [mark^#(s(X))] =  [5] X + [5]                                            
                             >  [5] X + [0]                                            
                             =  [mark^#(X)]                                            
                                                                                       
       [mark^#(div(X1, X2))] =  [5] X1 + [5] X2 + [5]                                  
                             >= [5] X1 + [5] X2 + [5]                                  
                             =  [a__div^#(mark(X1), X2)]                               
                                                                                       
       [mark^#(div(X1, X2))] =  [5] X1 + [5] X2 + [5]                                  
                             >  [5] X1 + [0]                                           
                             =  [mark^#(X1)]                                           
                                                                                       
     [mark^#(minus(X1, X2))] =  [0]                                                    
                             >= [0]                                                    
                             =  [c_19(a__minus^#(X1, X2))]                             
                                                                                       
       [mark^#(geq(X1, X2))] =  [5] X1 + [0]                                           
                             >= [1] X1 + [0]                                           
                             =  [c_20(a__geq^#(X1, X2))]                               
                                                                                       
    [mark^#(if(X1, X2, X3))] =  [5] X1 + [5] X2 + [5] X3 + [0]                         
                             >= [5] X1 + [5] X2 + [5] X3 + [0]                         
                             =  [a__if^#(mark(X1), X2, X3)]                            
                                                                                       
    [mark^#(if(X1, X2, X3))] =  [5] X1 + [5] X2 + [5] X3 + [0]                         
                             >= [5] X1 + [0]                                           
                             =  [mark^#(X1)]                                           
                                                                                       

The strictly oriented rules are moved into the weak component.

We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(n^1)).

Strict DPs:
  { a__minus^#(s(X), s(Y)) -> c_3(a__minus^#(X, Y))
  , mark^#(minus(X1, X2)) -> c_19(a__minus^#(X1, X2))
  , mark^#(geq(X1, X2)) -> c_20(a__geq^#(X1, X2)) }
Weak DPs:
  { a__geq^#(s(X), s(Y)) -> c_7(a__geq^#(X, Y))
  , a__div^#(s(X), s(Y)) -> a__geq^#(X, Y)
  , a__div^#(s(X), s(Y)) ->
    a__if^#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0())
  , a__if^#(true(), X, Y) -> mark^#(X)
  , a__if^#(false(), X, Y) -> mark^#(Y)
  , mark^#(s(X)) -> mark^#(X)
  , mark^#(div(X1, X2)) -> a__div^#(mark(X1), X2)
  , mark^#(div(X1, X2)) -> mark^#(X1)
  , mark^#(if(X1, X2, X3)) -> a__if^#(mark(X1), X2, X3)
  , mark^#(if(X1, X2, X3)) -> mark^#(X1) }
Weak Trs:
  { a__minus(X1, X2) -> minus(X1, X2)
  , a__minus(0(), Y) -> 0()
  , a__minus(s(X), s(Y)) -> a__minus(X, Y)
  , a__geq(X1, X2) -> geq(X1, X2)
  , a__geq(X, 0()) -> true()
  , a__geq(0(), s(Y)) -> false()
  , a__geq(s(X), s(Y)) -> a__geq(X, Y)
  , 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__if(X1, X2, X3) -> if(X1, X2, X3)
  , a__if(true(), X, Y) -> mark(X)
  , a__if(false(), X, Y) -> mark(Y)
  , mark(0()) -> 0()
  , mark(s(X)) -> s(mark(X))
  , mark(true()) -> true()
  , mark(false()) -> false()
  , mark(div(X1, X2)) -> a__div(mark(X1), X2)
  , mark(minus(X1, X2)) -> a__minus(X1, X2)
  , mark(geq(X1, X2)) -> a__geq(X1, X2)
  , mark(if(X1, X2, X3)) -> a__if(mark(X1), X2, X3) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^1))

The following weak DPs constitute a sub-graph of the DG that is
closed under successors. The DPs are removed.

{ a__geq^#(s(X), s(Y)) -> c_7(a__geq^#(X, Y))
, a__div^#(s(X), s(Y)) -> a__geq^#(X, Y) }

We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(n^1)).

Strict DPs:
  { a__minus^#(s(X), s(Y)) -> c_3(a__minus^#(X, Y))
  , mark^#(minus(X1, X2)) -> c_19(a__minus^#(X1, X2))
  , mark^#(geq(X1, X2)) -> c_20(a__geq^#(X1, X2)) }
Weak DPs:
  { a__div^#(s(X), s(Y)) ->
    a__if^#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0())
  , a__if^#(true(), X, Y) -> mark^#(X)
  , a__if^#(false(), X, Y) -> mark^#(Y)
  , mark^#(s(X)) -> mark^#(X)
  , mark^#(div(X1, X2)) -> a__div^#(mark(X1), X2)
  , mark^#(div(X1, X2)) -> mark^#(X1)
  , mark^#(if(X1, X2, X3)) -> a__if^#(mark(X1), X2, X3)
  , mark^#(if(X1, X2, X3)) -> mark^#(X1) }
Weak Trs:
  { a__minus(X1, X2) -> minus(X1, X2)
  , a__minus(0(), Y) -> 0()
  , a__minus(s(X), s(Y)) -> a__minus(X, Y)
  , a__geq(X1, X2) -> geq(X1, X2)
  , a__geq(X, 0()) -> true()
  , a__geq(0(), s(Y)) -> false()
  , a__geq(s(X), s(Y)) -> a__geq(X, Y)
  , 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__if(X1, X2, X3) -> if(X1, X2, X3)
  , a__if(true(), X, Y) -> mark(X)
  , a__if(false(), X, Y) -> mark(Y)
  , mark(0()) -> 0()
  , mark(s(X)) -> s(mark(X))
  , mark(true()) -> true()
  , mark(false()) -> false()
  , mark(div(X1, X2)) -> a__div(mark(X1), X2)
  , mark(minus(X1, X2)) -> a__minus(X1, X2)
  , mark(geq(X1, X2)) -> a__geq(X1, X2)
  , mark(if(X1, X2, X3)) -> a__if(mark(X1), X2, X3) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^1))

Due to missing edges in the dependency-graph, the right-hand sides
of following rules could be simplified:

  { mark^#(geq(X1, X2)) -> c_20(a__geq^#(X1, X2)) }

We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(n^1)).

Strict DPs:
  { a__minus^#(s(X), s(Y)) -> c_1(a__minus^#(X, Y))
  , mark^#(minus(X1, X2)) -> c_2(a__minus^#(X1, X2))
  , mark^#(geq(X1, X2)) -> c_3() }
Weak DPs:
  { a__div^#(s(X), s(Y)) ->
    c_4(a__if^#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0()))
  , a__if^#(true(), X, Y) -> c_5(mark^#(X))
  , a__if^#(false(), X, Y) -> c_6(mark^#(Y))
  , mark^#(s(X)) -> c_7(mark^#(X))
  , mark^#(div(X1, X2)) -> c_8(a__div^#(mark(X1), X2))
  , mark^#(div(X1, X2)) -> c_9(mark^#(X1))
  , mark^#(if(X1, X2, X3)) -> c_10(a__if^#(mark(X1), X2, X3))
  , mark^#(if(X1, X2, X3)) -> c_11(mark^#(X1)) }
Weak Trs:
  { a__minus(X1, X2) -> minus(X1, X2)
  , a__minus(0(), Y) -> 0()
  , a__minus(s(X), s(Y)) -> a__minus(X, Y)
  , a__geq(X1, X2) -> geq(X1, X2)
  , a__geq(X, 0()) -> true()
  , a__geq(0(), s(Y)) -> false()
  , a__geq(s(X), s(Y)) -> a__geq(X, Y)
  , 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__if(X1, X2, X3) -> if(X1, X2, X3)
  , a__if(true(), X, Y) -> mark(X)
  , a__if(false(), X, Y) -> mark(Y)
  , mark(0()) -> 0()
  , mark(s(X)) -> s(mark(X))
  , mark(true()) -> true()
  , mark(false()) -> false()
  , mark(div(X1, X2)) -> a__div(mark(X1), X2)
  , mark(minus(X1, X2)) -> a__minus(X1, X2)
  , mark(geq(X1, X2)) -> a__geq(X1, X2)
  , mark(if(X1, X2, X3)) -> a__if(mark(X1), X2, X3) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^1))

We use the processor 'matrix interpretation of dimension 1' to
orient following rules strictly.

DPs:
  { 2: mark^#(minus(X1, X2)) -> c_2(a__minus^#(X1, X2))
  , 3: mark^#(geq(X1, X2)) -> c_3() }

Sub-proof:
----------
  The following argument positions are usable:
    Uargs(c_1) = {1}, Uargs(c_2) = {1}, Uargs(c_4) = {1},
    Uargs(c_5) = {1}, Uargs(c_6) = {1}, Uargs(c_7) = {1},
    Uargs(c_8) = {1}, Uargs(c_9) = {1}, Uargs(c_10) = {1},
    Uargs(c_11) = {1}
  
  TcT has computed the following constructor-restricted matrix
  interpretation. Note that the diagonal of the component-wise maxima
  of interpretation-entries (of constructors) contains no more than 0
  non-zero entries.
  
       [a__minus](x1, x2) = [0]         
                                        
                      [0] = [0]         
                                        
                  [s](x1) = [0]         
                                        
         [a__geq](x1, x2) = [0]         
                                        
                   [true] = [0]         
                                        
                  [false] = [0]         
                                        
         [a__div](x1, x2) = [0]         
                                        
      [a__if](x1, x2, x3) = [0]         
                                        
            [div](x1, x2) = [0]         
                                        
          [minus](x1, x2) = [0]         
                                        
               [mark](x1) = [0]         
                                        
            [geq](x1, x2) = [0]         
                                        
         [if](x1, x2, x3) = [0]         
                                        
     [a__minus^#](x1, x2) = [0]         
                                        
                [c_3](x1) = [0]         
                                        
       [a__geq^#](x1, x2) = [0]         
                                        
                [c_7](x1) = [0]         
                                        
       [a__div^#](x1, x2) = [1]         
                                        
    [a__if^#](x1, x2, x3) = [1]         
                                        
             [mark^#](x1) = [1]         
                                        
               [c_19](x1) = [0]         
                                        
               [c_20](x1) = [0]         
                                        
                      [c] = [0]         
                                        
                [c_1](x1) = [4] x1 + [0]
                                        
                [c_2](x1) = [4] x1 + [0]
                                        
                    [c_3] = [0]         
                                        
                [c_4](x1) = [1] x1 + [0]
                                        
                [c_5](x1) = [1] x1 + [0]
                                        
                [c_6](x1) = [1] x1 + [0]
                                        
                [c_7](x1) = [1] x1 + [0]
                                        
                [c_8](x1) = [1] x1 + [0]
                                        
                [c_9](x1) = [1] x1 + [0]
                                        
               [c_10](x1) = [1] x1 + [0]
                                        
               [c_11](x1) = [1] x1 + [0]
  
  The order satisfies the following ordering constraints:
  
          [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)]                                            
                                                                                            
            [a__geq(X1, X2)] =  [0]                                                         
                             >= [0]                                                         
                             =  [geq(X1, X2)]                                               
                                                                                            
            [a__geq(X, 0())] =  [0]                                                         
                             >= [0]                                                         
                             =  [true()]                                                    
                                                                                            
         [a__geq(0(), s(Y))] =  [0]                                                         
                             >= [0]                                                         
                             =  [false()]                                                   
                                                                                            
        [a__geq(s(X), s(Y))] =  [0]                                                         
                             >= [0]                                                         
                             =  [a__geq(X, Y)]                                              
                                                                                            
            [a__div(X1, X2)] =  [0]                                                         
                             >= [0]                                                         
                             =  [div(X1, X2)]                                               
                                                                                            
         [a__div(0(), s(Y))] =  [0]                                                         
                             >= [0]                                                         
                             =  [0()]                                                       
                                                                                            
        [a__div(s(X), s(Y))] =  [0]                                                         
                             >= [0]                                                         
                             =  [a__if(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0())]       
                                                                                            
         [a__if(X1, X2, X3)] =  [0]                                                         
                             >= [0]                                                         
                             =  [if(X1, X2, X3)]                                            
                                                                                            
       [a__if(true(), X, Y)] =  [0]                                                         
                             >= [0]                                                         
                             =  [mark(X)]                                                   
                                                                                            
      [a__if(false(), X, Y)] =  [0]                                                         
                             >= [0]                                                         
                             =  [mark(Y)]                                                   
                                                                                            
                 [mark(0())] =  [0]                                                         
                             >= [0]                                                         
                             =  [0()]                                                       
                                                                                            
                [mark(s(X))] =  [0]                                                         
                             >= [0]                                                         
                             =  [s(mark(X))]                                                
                                                                                            
              [mark(true())] =  [0]                                                         
                             >= [0]                                                         
                             =  [true()]                                                    
                                                                                            
             [mark(false())] =  [0]                                                         
                             >= [0]                                                         
                             =  [false()]                                                   
                                                                                            
         [mark(div(X1, X2))] =  [0]                                                         
                             >= [0]                                                         
                             =  [a__div(mark(X1), X2)]                                      
                                                                                            
       [mark(minus(X1, X2))] =  [0]                                                         
                             >= [0]                                                         
                             =  [a__minus(X1, X2)]                                          
                                                                                            
         [mark(geq(X1, X2))] =  [0]                                                         
                             >= [0]                                                         
                             =  [a__geq(X1, X2)]                                            
                                                                                            
      [mark(if(X1, X2, X3))] =  [0]                                                         
                             >= [0]                                                         
                             =  [a__if(mark(X1), X2, X3)]                                   
                                                                                            
    [a__minus^#(s(X), s(Y))] =  [0]                                                         
                             >= [0]                                                         
                             =  [c_1(a__minus^#(X, Y))]                                     
                                                                                            
      [a__div^#(s(X), s(Y))] =  [1]                                                         
                             >= [1]                                                         
                             =  [c_4(a__if^#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0()))]
                                                                                            
     [a__if^#(true(), X, Y)] =  [1]                                                         
                             >= [1]                                                         
                             =  [c_5(mark^#(X))]                                            
                                                                                            
    [a__if^#(false(), X, Y)] =  [1]                                                         
                             >= [1]                                                         
                             =  [c_6(mark^#(Y))]                                            
                                                                                            
              [mark^#(s(X))] =  [1]                                                         
                             >= [1]                                                         
                             =  [c_7(mark^#(X))]                                            
                                                                                            
       [mark^#(div(X1, X2))] =  [1]                                                         
                             >= [1]                                                         
                             =  [c_8(a__div^#(mark(X1), X2))]                               
                                                                                            
       [mark^#(div(X1, X2))] =  [1]                                                         
                             >= [1]                                                         
                             =  [c_9(mark^#(X1))]                                           
                                                                                            
     [mark^#(minus(X1, X2))] =  [1]                                                         
                             >  [0]                                                         
                             =  [c_2(a__minus^#(X1, X2))]                                   
                                                                                            
       [mark^#(geq(X1, X2))] =  [1]                                                         
                             >  [0]                                                         
                             =  [c_3()]                                                     
                                                                                            
    [mark^#(if(X1, X2, X3))] =  [1]                                                         
                             >= [1]                                                         
                             =  [c_10(a__if^#(mark(X1), X2, X3))]                           
                                                                                            
    [mark^#(if(X1, X2, X3))] =  [1]                                                         
                             >= [1]                                                         
                             =  [c_11(mark^#(X1))]                                          
                                                                                            

The strictly oriented rules are moved into the weak component.

We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(n^1)).

Strict DPs: { a__minus^#(s(X), s(Y)) -> c_1(a__minus^#(X, Y)) }
Weak DPs:
  { a__div^#(s(X), s(Y)) ->
    c_4(a__if^#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0()))
  , a__if^#(true(), X, Y) -> c_5(mark^#(X))
  , a__if^#(false(), X, Y) -> c_6(mark^#(Y))
  , mark^#(s(X)) -> c_7(mark^#(X))
  , mark^#(div(X1, X2)) -> c_8(a__div^#(mark(X1), X2))
  , mark^#(div(X1, X2)) -> c_9(mark^#(X1))
  , mark^#(minus(X1, X2)) -> c_2(a__minus^#(X1, X2))
  , mark^#(geq(X1, X2)) -> c_3()
  , mark^#(if(X1, X2, X3)) -> c_10(a__if^#(mark(X1), X2, X3))
  , mark^#(if(X1, X2, X3)) -> c_11(mark^#(X1)) }
Weak Trs:
  { a__minus(X1, X2) -> minus(X1, X2)
  , a__minus(0(), Y) -> 0()
  , a__minus(s(X), s(Y)) -> a__minus(X, Y)
  , a__geq(X1, X2) -> geq(X1, X2)
  , a__geq(X, 0()) -> true()
  , a__geq(0(), s(Y)) -> false()
  , a__geq(s(X), s(Y)) -> a__geq(X, Y)
  , 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__if(X1, X2, X3) -> if(X1, X2, X3)
  , a__if(true(), X, Y) -> mark(X)
  , a__if(false(), X, Y) -> mark(Y)
  , mark(0()) -> 0()
  , mark(s(X)) -> s(mark(X))
  , mark(true()) -> true()
  , mark(false()) -> false()
  , mark(div(X1, X2)) -> a__div(mark(X1), X2)
  , mark(minus(X1, X2)) -> a__minus(X1, X2)
  , mark(geq(X1, X2)) -> a__geq(X1, X2)
  , mark(if(X1, X2, X3)) -> a__if(mark(X1), X2, X3) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^1))

The following weak DPs constitute a sub-graph of the DG that is
closed under successors. The DPs are removed.

{ mark^#(geq(X1, X2)) -> c_3() }

We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(n^1)).

Strict DPs: { a__minus^#(s(X), s(Y)) -> c_1(a__minus^#(X, Y)) }
Weak DPs:
  { a__div^#(s(X), s(Y)) ->
    c_4(a__if^#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0()))
  , a__if^#(true(), X, Y) -> c_5(mark^#(X))
  , a__if^#(false(), X, Y) -> c_6(mark^#(Y))
  , mark^#(s(X)) -> c_7(mark^#(X))
  , mark^#(div(X1, X2)) -> c_8(a__div^#(mark(X1), X2))
  , mark^#(div(X1, X2)) -> c_9(mark^#(X1))
  , mark^#(minus(X1, X2)) -> c_2(a__minus^#(X1, X2))
  , mark^#(if(X1, X2, X3)) -> c_10(a__if^#(mark(X1), X2, X3))
  , mark^#(if(X1, X2, X3)) -> c_11(mark^#(X1)) }
Weak Trs:
  { a__minus(X1, X2) -> minus(X1, X2)
  , a__minus(0(), Y) -> 0()
  , a__minus(s(X), s(Y)) -> a__minus(X, Y)
  , a__geq(X1, X2) -> geq(X1, X2)
  , a__geq(X, 0()) -> true()
  , a__geq(0(), s(Y)) -> false()
  , a__geq(s(X), s(Y)) -> a__geq(X, Y)
  , 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__if(X1, X2, X3) -> if(X1, X2, X3)
  , a__if(true(), X, Y) -> mark(X)
  , a__if(false(), X, Y) -> mark(Y)
  , mark(0()) -> 0()
  , mark(s(X)) -> s(mark(X))
  , mark(true()) -> true()
  , mark(false()) -> false()
  , mark(div(X1, X2)) -> a__div(mark(X1), X2)
  , mark(minus(X1, X2)) -> a__minus(X1, X2)
  , mark(geq(X1, X2)) -> a__geq(X1, X2)
  , mark(if(X1, X2, X3)) -> a__if(mark(X1), X2, X3) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^1))

We use the processor 'matrix interpretation of dimension 1' to
orient following rules strictly.

DPs:
  { 1: a__minus^#(s(X), s(Y)) -> c_1(a__minus^#(X, Y))
  , 5: mark^#(s(X)) -> c_7(mark^#(X))
  , 8: mark^#(minus(X1, X2)) -> c_2(a__minus^#(X1, X2)) }
Trs: { a__minus(s(X), s(Y)) -> a__minus(X, Y) }

Sub-proof:
----------
  The following argument positions are usable:
    Uargs(c_1) = {1}, Uargs(c_2) = {1}, Uargs(c_4) = {1},
    Uargs(c_5) = {1}, Uargs(c_6) = {1}, Uargs(c_7) = {1},
    Uargs(c_8) = {1}, Uargs(c_9) = {1}, Uargs(c_10) = {1},
    Uargs(c_11) = {1}
  
  TcT has computed the following constructor-based matrix
  interpretation satisfying not(EDA).
  
       [a__minus](x1, x2) = [1] x1 + [0]                  
                                                          
                      [0] = [0]                           
                                                          
                  [s](x1) = [1] x1 + [3]                  
                                                          
         [a__geq](x1, x2) = [0]                           
                                                          
                   [true] = [0]                           
                                                          
                  [false] = [0]                           
                                                          
         [a__div](x1, x2) = [1] x1 + [0]                  
                                                          
      [a__if](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0]
                                                          
            [div](x1, x2) = [1] x1 + [0]                  
                                                          
          [minus](x1, x2) = [1] x1 + [0]                  
                                                          
               [mark](x1) = [1] x1 + [0]                  
                                                          
            [geq](x1, x2) = [0]                           
                                                          
         [if](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0]
                                                          
     [a__minus^#](x1, x2) = [2] x1 + [1]                  
                                                          
                [c_3](x1) = [0]                           
                                                          
       [a__geq^#](x1, x2) = [0]                           
                                                          
                [c_7](x1) = [0]                           
                                                          
       [a__div^#](x1, x2) = [4] x1 + [3]                  
                                                          
    [a__if^#](x1, x2, x3) = [2] x1 + [4] x2 + [4] x3 + [3]
                                                          
             [mark^#](x1) = [4] x1 + [3]                  
                                                          
               [c_19](x1) = [0]                           
                                                          
               [c_20](x1) = [0]                           
                                                          
                      [c] = [0]                           
                                                          
                [c_1](x1) = [1] x1 + [0]                  
                                                          
                [c_2](x1) = [2] x1 + [0]                  
                                                          
                    [c_3] = [0]                           
                                                          
                [c_4](x1) = [1] x1 + [0]                  
                                                          
                [c_5](x1) = [1] x1 + [0]                  
                                                          
                [c_6](x1) = [1] x1 + [0]                  
                                                          
                [c_7](x1) = [1] x1 + [0]                  
                                                          
                [c_8](x1) = [1] x1 + [0]                  
                                                          
                [c_9](x1) = [1] x1 + [0]                  
                                                          
               [c_10](x1) = [1] x1 + [0]                  
                                                          
               [c_11](x1) = [1] x1 + [0]                  
  
  The order satisfies the following ordering constraints:
  
          [a__minus(X1, X2)] =  [1] X1 + [0]                                                
                             >= [1] X1 + [0]                                                
                             =  [minus(X1, X2)]                                             
                                                                                            
          [a__minus(0(), Y)] =  [0]                                                         
                             >= [0]                                                         
                             =  [0()]                                                       
                                                                                            
      [a__minus(s(X), s(Y))] =  [1] X + [3]                                                 
                             >  [1] X + [0]                                                 
                             =  [a__minus(X, Y)]                                            
                                                                                            
            [a__geq(X1, X2)] =  [0]                                                         
                             >= [0]                                                         
                             =  [geq(X1, X2)]                                               
                                                                                            
            [a__geq(X, 0())] =  [0]                                                         
                             >= [0]                                                         
                             =  [true()]                                                    
                                                                                            
         [a__geq(0(), s(Y))] =  [0]                                                         
                             >= [0]                                                         
                             =  [false()]                                                   
                                                                                            
        [a__geq(s(X), s(Y))] =  [0]                                                         
                             >= [0]                                                         
                             =  [a__geq(X, Y)]                                              
                                                                                            
            [a__div(X1, X2)] =  [1] X1 + [0]                                                
                             >= [1] X1 + [0]                                                
                             =  [div(X1, X2)]                                               
                                                                                            
         [a__div(0(), s(Y))] =  [0]                                                         
                             >= [0]                                                         
                             =  [0()]                                                       
                                                                                            
        [a__div(s(X), s(Y))] =  [1] X + [3]                                                 
                             >= [1] X + [3]                                                 
                             =  [a__if(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0())]       
                                                                                            
         [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(true(), X, Y)] =  [1] Y + [1] X + [0]                                         
                             >= [1] X + [0]                                                 
                             =  [mark(X)]                                                   
                                                                                            
      [a__if(false(), X, Y)] =  [1] Y + [1] X + [0]                                         
                             >= [1] Y + [0]                                                 
                             =  [mark(Y)]                                                   
                                                                                            
                 [mark(0())] =  [0]                                                         
                             >= [0]                                                         
                             =  [0()]                                                       
                                                                                            
                [mark(s(X))] =  [1] X + [3]                                                 
                             >= [1] X + [3]                                                 
                             =  [s(mark(X))]                                                
                                                                                            
              [mark(true())] =  [0]                                                         
                             >= [0]                                                         
                             =  [true()]                                                    
                                                                                            
             [mark(false())] =  [0]                                                         
                             >= [0]                                                         
                             =  [false()]                                                   
                                                                                            
         [mark(div(X1, X2))] =  [1] X1 + [0]                                                
                             >= [1] X1 + [0]                                                
                             =  [a__div(mark(X1), X2)]                                      
                                                                                            
       [mark(minus(X1, X2))] =  [1] X1 + [0]                                                
                             >= [1] X1 + [0]                                                
                             =  [a__minus(X1, X2)]                                          
                                                                                            
         [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)]                                   
                                                                                            
    [a__minus^#(s(X), s(Y))] =  [2] X + [7]                                                 
                             >  [2] X + [1]                                                 
                             =  [c_1(a__minus^#(X, Y))]                                     
                                                                                            
      [a__div^#(s(X), s(Y))] =  [4] X + [15]                                                
                             >= [4] X + [15]                                                
                             =  [c_4(a__if^#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0()))]
                                                                                            
     [a__if^#(true(), X, Y)] =  [4] Y + [4] X + [3]                                         
                             >= [4] X + [3]                                                 
                             =  [c_5(mark^#(X))]                                            
                                                                                            
    [a__if^#(false(), X, Y)] =  [4] Y + [4] X + [3]                                         
                             >= [4] Y + [3]                                                 
                             =  [c_6(mark^#(Y))]                                            
                                                                                            
              [mark^#(s(X))] =  [4] X + [15]                                                
                             >  [4] X + [3]                                                 
                             =  [c_7(mark^#(X))]                                            
                                                                                            
       [mark^#(div(X1, X2))] =  [4] X1 + [3]                                                
                             >= [4] X1 + [3]                                                
                             =  [c_8(a__div^#(mark(X1), X2))]                               
                                                                                            
       [mark^#(div(X1, X2))] =  [4] X1 + [3]                                                
                             >= [4] X1 + [3]                                                
                             =  [c_9(mark^#(X1))]                                           
                                                                                            
     [mark^#(minus(X1, X2))] =  [4] X1 + [3]                                                
                             >  [4] X1 + [2]                                                
                             =  [c_2(a__minus^#(X1, X2))]                                   
                                                                                            
    [mark^#(if(X1, X2, X3))] =  [4] X1 + [4] X2 + [4] X3 + [3]                              
                             >= [2] X1 + [4] X2 + [4] X3 + [3]                              
                             =  [c_10(a__if^#(mark(X1), X2, X3))]                           
                                                                                            
    [mark^#(if(X1, X2, X3))] =  [4] X1 + [4] X2 + [4] X3 + [3]                              
                             >= [4] X1 + [3]                                                
                             =  [c_11(mark^#(X1))]                                          
                                                                                            

The strictly oriented rules are moved into the weak component.

We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).

Weak DPs:
  { a__minus^#(s(X), s(Y)) -> c_1(a__minus^#(X, Y))
  , a__div^#(s(X), s(Y)) ->
    c_4(a__if^#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0()))
  , a__if^#(true(), X, Y) -> c_5(mark^#(X))
  , a__if^#(false(), X, Y) -> c_6(mark^#(Y))
  , mark^#(s(X)) -> c_7(mark^#(X))
  , mark^#(div(X1, X2)) -> c_8(a__div^#(mark(X1), X2))
  , mark^#(div(X1, X2)) -> c_9(mark^#(X1))
  , mark^#(minus(X1, X2)) -> c_2(a__minus^#(X1, X2))
  , mark^#(if(X1, X2, X3)) -> c_10(a__if^#(mark(X1), X2, X3))
  , mark^#(if(X1, X2, X3)) -> c_11(mark^#(X1)) }
Weak Trs:
  { a__minus(X1, X2) -> minus(X1, X2)
  , a__minus(0(), Y) -> 0()
  , a__minus(s(X), s(Y)) -> a__minus(X, Y)
  , a__geq(X1, X2) -> geq(X1, X2)
  , a__geq(X, 0()) -> true()
  , a__geq(0(), s(Y)) -> false()
  , a__geq(s(X), s(Y)) -> a__geq(X, Y)
  , 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__if(X1, X2, X3) -> if(X1, X2, X3)
  , a__if(true(), X, Y) -> mark(X)
  , a__if(false(), X, Y) -> mark(Y)
  , mark(0()) -> 0()
  , mark(s(X)) -> s(mark(X))
  , mark(true()) -> true()
  , mark(false()) -> false()
  , mark(div(X1, X2)) -> a__div(mark(X1), X2)
  , mark(minus(X1, X2)) -> a__minus(X1, X2)
  , mark(geq(X1, X2)) -> a__geq(X1, X2)
  , mark(if(X1, X2, X3)) -> a__if(mark(X1), X2, X3) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(1))

The following weak DPs constitute a sub-graph of the DG that is
closed under successors. The DPs are removed.

{ a__minus^#(s(X), s(Y)) -> c_1(a__minus^#(X, Y))
, a__div^#(s(X), s(Y)) ->
  c_4(a__if^#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0()))
, a__if^#(true(), X, Y) -> c_5(mark^#(X))
, a__if^#(false(), X, Y) -> c_6(mark^#(Y))
, mark^#(s(X)) -> c_7(mark^#(X))
, mark^#(div(X1, X2)) -> c_8(a__div^#(mark(X1), X2))
, mark^#(div(X1, X2)) -> c_9(mark^#(X1))
, mark^#(minus(X1, X2)) -> c_2(a__minus^#(X1, X2))
, mark^#(if(X1, X2, X3)) -> c_10(a__if^#(mark(X1), X2, X3))
, mark^#(if(X1, X2, X3)) -> c_11(mark^#(X1)) }

We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).

Weak Trs:
  { a__minus(X1, X2) -> minus(X1, X2)
  , a__minus(0(), Y) -> 0()
  , a__minus(s(X), s(Y)) -> a__minus(X, Y)
  , a__geq(X1, X2) -> geq(X1, X2)
  , a__geq(X, 0()) -> true()
  , a__geq(0(), s(Y)) -> false()
  , a__geq(s(X), s(Y)) -> a__geq(X, Y)
  , 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__if(X1, X2, X3) -> if(X1, X2, X3)
  , a__if(true(), X, Y) -> mark(X)
  , a__if(false(), X, Y) -> mark(Y)
  , mark(0()) -> 0()
  , mark(s(X)) -> s(mark(X))
  , mark(true()) -> true()
  , mark(false()) -> false()
  , mark(div(X1, X2)) -> a__div(mark(X1), X2)
  , mark(minus(X1, X2)) -> a__minus(X1, X2)
  , mark(geq(X1, X2)) -> a__geq(X1, X2)
  , mark(if(X1, X2, X3)) -> a__if(mark(X1), X2, X3) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(1))

No rule is usable, rules are removed from the input problem.

We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).

Rules: Empty
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(1))

Empty rules are trivially bounded

Hurray, we answered YES(O(1),O(n^2))