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

Strict Trs:
  { active(f(X1, X2, X3)) -> f(X1, active(X2), X3)
  , active(f(a(), X, X)) -> mark(f(X, b(), b()))
  , active(b()) -> mark(a())
  , f(X1, mark(X2), X3) -> mark(f(X1, X2, X3))
  , f(ok(X1), ok(X2), ok(X3)) -> ok(f(X1, X2, X3))
  , proper(f(X1, X2, X3)) -> f(proper(X1), proper(X2), proper(X3))
  , proper(a()) -> ok(a())
  , proper(b()) -> ok(b())
  , top(mark(X)) -> top(proper(X))
  , top(ok(X)) -> top(active(X)) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^2))

We add the following dependency tuples:

Strict DPs:
  { active^#(f(X1, X2, X3)) ->
    c_1(f^#(X1, active(X2), X3), active^#(X2))
  , active^#(f(a(), X, X)) -> c_2(f^#(X, b(), b()))
  , active^#(b()) -> c_3()
  , f^#(X1, mark(X2), X3) -> c_4(f^#(X1, X2, X3))
  , f^#(ok(X1), ok(X2), ok(X3)) -> c_5(f^#(X1, X2, X3))
  , proper^#(f(X1, X2, X3)) ->
    c_6(f^#(proper(X1), proper(X2), proper(X3)),
        proper^#(X1),
        proper^#(X2),
        proper^#(X3))
  , proper^#(a()) -> c_7()
  , proper^#(b()) -> c_8()
  , top^#(mark(X)) -> c_9(top^#(proper(X)), proper^#(X))
  , top^#(ok(X)) -> c_10(top^#(active(X)), active^#(X)) }

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:
  { active^#(f(X1, X2, X3)) ->
    c_1(f^#(X1, active(X2), X3), active^#(X2))
  , active^#(f(a(), X, X)) -> c_2(f^#(X, b(), b()))
  , active^#(b()) -> c_3()
  , f^#(X1, mark(X2), X3) -> c_4(f^#(X1, X2, X3))
  , f^#(ok(X1), ok(X2), ok(X3)) -> c_5(f^#(X1, X2, X3))
  , proper^#(f(X1, X2, X3)) ->
    c_6(f^#(proper(X1), proper(X2), proper(X3)),
        proper^#(X1),
        proper^#(X2),
        proper^#(X3))
  , proper^#(a()) -> c_7()
  , proper^#(b()) -> c_8()
  , top^#(mark(X)) -> c_9(top^#(proper(X)), proper^#(X))
  , top^#(ok(X)) -> c_10(top^#(active(X)), active^#(X)) }
Weak Trs:
  { active(f(X1, X2, X3)) -> f(X1, active(X2), X3)
  , active(f(a(), X, X)) -> mark(f(X, b(), b()))
  , active(b()) -> mark(a())
  , f(X1, mark(X2), X3) -> mark(f(X1, X2, X3))
  , f(ok(X1), ok(X2), ok(X3)) -> ok(f(X1, X2, X3))
  , proper(f(X1, X2, X3)) -> f(proper(X1), proper(X2), proper(X3))
  , proper(a()) -> ok(a())
  , proper(b()) -> ok(b())
  , top(mark(X)) -> top(proper(X))
  , top(ok(X)) -> top(active(X)) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^2))

We estimate the number of application of {2,3,7,8} by applications
of Pre({2,3,7,8}) = {1,6,9,10}. Here rules are labeled as follows:

  DPs:
    { 1: active^#(f(X1, X2, X3)) ->
         c_1(f^#(X1, active(X2), X3), active^#(X2))
    , 2: active^#(f(a(), X, X)) -> c_2(f^#(X, b(), b()))
    , 3: active^#(b()) -> c_3()
    , 4: f^#(X1, mark(X2), X3) -> c_4(f^#(X1, X2, X3))
    , 5: f^#(ok(X1), ok(X2), ok(X3)) -> c_5(f^#(X1, X2, X3))
    , 6: proper^#(f(X1, X2, X3)) ->
         c_6(f^#(proper(X1), proper(X2), proper(X3)),
             proper^#(X1),
             proper^#(X2),
             proper^#(X3))
    , 7: proper^#(a()) -> c_7()
    , 8: proper^#(b()) -> c_8()
    , 9: top^#(mark(X)) -> c_9(top^#(proper(X)), proper^#(X))
    , 10: top^#(ok(X)) -> c_10(top^#(active(X)), active^#(X)) }

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

Strict DPs:
  { active^#(f(X1, X2, X3)) ->
    c_1(f^#(X1, active(X2), X3), active^#(X2))
  , f^#(X1, mark(X2), X3) -> c_4(f^#(X1, X2, X3))
  , f^#(ok(X1), ok(X2), ok(X3)) -> c_5(f^#(X1, X2, X3))
  , proper^#(f(X1, X2, X3)) ->
    c_6(f^#(proper(X1), proper(X2), proper(X3)),
        proper^#(X1),
        proper^#(X2),
        proper^#(X3))
  , top^#(mark(X)) -> c_9(top^#(proper(X)), proper^#(X))
  , top^#(ok(X)) -> c_10(top^#(active(X)), active^#(X)) }
Weak DPs:
  { active^#(f(a(), X, X)) -> c_2(f^#(X, b(), b()))
  , active^#(b()) -> c_3()
  , proper^#(a()) -> c_7()
  , proper^#(b()) -> c_8() }
Weak Trs:
  { active(f(X1, X2, X3)) -> f(X1, active(X2), X3)
  , active(f(a(), X, X)) -> mark(f(X, b(), b()))
  , active(b()) -> mark(a())
  , f(X1, mark(X2), X3) -> mark(f(X1, X2, X3))
  , f(ok(X1), ok(X2), ok(X3)) -> ok(f(X1, X2, X3))
  , proper(f(X1, X2, X3)) -> f(proper(X1), proper(X2), proper(X3))
  , proper(a()) -> ok(a())
  , proper(b()) -> ok(b())
  , top(mark(X)) -> top(proper(X))
  , top(ok(X)) -> top(active(X)) }
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.

{ active^#(f(a(), X, X)) -> c_2(f^#(X, b(), b()))
, active^#(b()) -> c_3()
, proper^#(a()) -> c_7()
, proper^#(b()) -> c_8() }

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

Strict DPs:
  { active^#(f(X1, X2, X3)) ->
    c_1(f^#(X1, active(X2), X3), active^#(X2))
  , f^#(X1, mark(X2), X3) -> c_4(f^#(X1, X2, X3))
  , f^#(ok(X1), ok(X2), ok(X3)) -> c_5(f^#(X1, X2, X3))
  , proper^#(f(X1, X2, X3)) ->
    c_6(f^#(proper(X1), proper(X2), proper(X3)),
        proper^#(X1),
        proper^#(X2),
        proper^#(X3))
  , top^#(mark(X)) -> c_9(top^#(proper(X)), proper^#(X))
  , top^#(ok(X)) -> c_10(top^#(active(X)), active^#(X)) }
Weak Trs:
  { active(f(X1, X2, X3)) -> f(X1, active(X2), X3)
  , active(f(a(), X, X)) -> mark(f(X, b(), b()))
  , active(b()) -> mark(a())
  , f(X1, mark(X2), X3) -> mark(f(X1, X2, X3))
  , f(ok(X1), ok(X2), ok(X3)) -> ok(f(X1, X2, X3))
  , proper(f(X1, X2, X3)) -> f(proper(X1), proper(X2), proper(X3))
  , proper(a()) -> ok(a())
  , proper(b()) -> ok(b())
  , top(mark(X)) -> top(proper(X))
  , top(ok(X)) -> top(active(X)) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^2))

We replace rewrite rules by usable rules:

  Weak Usable Rules:
    { active(f(X1, X2, X3)) -> f(X1, active(X2), X3)
    , active(f(a(), X, X)) -> mark(f(X, b(), b()))
    , active(b()) -> mark(a())
    , f(X1, mark(X2), X3) -> mark(f(X1, X2, X3))
    , f(ok(X1), ok(X2), ok(X3)) -> ok(f(X1, X2, X3))
    , proper(f(X1, X2, X3)) -> f(proper(X1), proper(X2), proper(X3))
    , proper(a()) -> ok(a())
    , proper(b()) -> ok(b()) }

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

Strict DPs:
  { active^#(f(X1, X2, X3)) ->
    c_1(f^#(X1, active(X2), X3), active^#(X2))
  , f^#(X1, mark(X2), X3) -> c_4(f^#(X1, X2, X3))
  , f^#(ok(X1), ok(X2), ok(X3)) -> c_5(f^#(X1, X2, X3))
  , proper^#(f(X1, X2, X3)) ->
    c_6(f^#(proper(X1), proper(X2), proper(X3)),
        proper^#(X1),
        proper^#(X2),
        proper^#(X3))
  , top^#(mark(X)) -> c_9(top^#(proper(X)), proper^#(X))
  , top^#(ok(X)) -> c_10(top^#(active(X)), active^#(X)) }
Weak Trs:
  { active(f(X1, X2, X3)) -> f(X1, active(X2), X3)
  , active(f(a(), X, X)) -> mark(f(X, b(), b()))
  , active(b()) -> mark(a())
  , f(X1, mark(X2), X3) -> mark(f(X1, X2, X3))
  , f(ok(X1), ok(X2), ok(X3)) -> ok(f(X1, X2, X3))
  , proper(f(X1, X2, X3)) -> f(proper(X1), proper(X2), proper(X3))
  , proper(a()) -> ok(a())
  , proper(b()) -> ok(b()) }
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

  { top^#(mark(X)) -> c_9(top^#(proper(X)), proper^#(X))
  , top^#(ok(X)) -> c_10(top^#(active(X)), active^#(X)) }

and lower component

  { active^#(f(X1, X2, X3)) ->
    c_1(f^#(X1, active(X2), X3), active^#(X2))
  , f^#(X1, mark(X2), X3) -> c_4(f^#(X1, X2, X3))
  , f^#(ok(X1), ok(X2), ok(X3)) -> c_5(f^#(X1, X2, X3))
  , proper^#(f(X1, X2, X3)) ->
    c_6(f^#(proper(X1), proper(X2), proper(X3)),
        proper^#(X1),
        proper^#(X2),
        proper^#(X3)) }

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

{ top^#(mark(X)) -> proper^#(X)
, top^#(mark(X)) -> top^#(proper(X))
, top^#(ok(X)) -> active^#(X)
, top^#(ok(X)) -> top^#(active(X)) }

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:
    { top^#(mark(X)) -> c_9(top^#(proper(X)), proper^#(X))
    , top^#(ok(X)) -> c_10(top^#(active(X)), active^#(X)) }
  Weak Trs:
    { active(f(X1, X2, X3)) -> f(X1, active(X2), X3)
    , active(f(a(), X, X)) -> mark(f(X, b(), b()))
    , active(b()) -> mark(a())
    , f(X1, mark(X2), X3) -> mark(f(X1, X2, X3))
    , f(ok(X1), ok(X2), ok(X3)) -> ok(f(X1, X2, X3))
    , proper(f(X1, X2, X3)) -> f(proper(X1), proper(X2), proper(X3))
    , proper(a()) -> ok(a())
    , proper(b()) -> ok(b()) }
  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: top^#(mark(X)) -> c_9(top^#(proper(X)), proper^#(X)) }
  Trs:
    { active(f(a(), X, X)) -> mark(f(X, b(), b()))
    , active(b()) -> mark(a()) }
  
  Sub-proof:
  ----------
    The following argument positions are usable:
      Uargs(c_9) = {1}, Uargs(c_10) = {1}
    
    TcT has computed the following constructor-based matrix
    interpretation satisfying not(EDA) and not(IDA(1)).
    
         [active](x1) = [0 2] x1 + [0]                      
                        [0 1]      [0]                      
                                                            
      [f](x1, x2, x3) = [1 3] x1 + [1 0] x2 + [1 0] x3 + [0]
                        [1 2]      [0 1]      [4 1]      [0]
                                                            
                  [a] = [6]                                 
                        [0]                                 
                                                            
           [mark](x1) = [0 0] x1 + [3]                      
                        [0 1]      [2]                      
                                                            
                  [b] = [0]                                 
                        [2]                                 
                                                            
         [proper](x1) = [1 0] x1 + [0]                      
                        [0 1]      [0]                      
                                                            
             [ok](x1) = [1 0] x1 + [0]                      
                        [0 1]      [0]                      
                                                            
       [active^#](x1) = [0 1] x1 + [1]                      
                        [0 0]      [1]                      
                                                            
       [proper^#](x1) = [2]                                 
                        [1]                                 
                                                            
          [top^#](x1) = [0 7] x1 + [0]                      
                        [1 1]      [0]                      
                                                            
        [c_9](x1, x2) = [1 0] x1 + [1]                      
                        [0 0]      [0]                      
                                                            
       [c_10](x1, x2) = [1 0] x1 + [0]                      
                        [0 0]      [0]                      
    
    The order satisfies the following ordering constraints:
    
          [active(f(X1, X2, X3))] =  [2 4] X1 + [0 2] X2 + [8 2] X3 + [0]   
                                     [1 2]      [0 1]      [4 1]      [0]   
                                  >= [1 3] X1 + [0 2] X2 + [1 0] X3 + [0]   
                                     [1 2]      [0 1]      [4 1]      [0]   
                                  =  [f(X1, active(X2), X3)]                
                                                                            
           [active(f(a(), X, X))] =  [8 4] X + [12]                         
                                     [4 2]     [6]                          
                                  >  [0 0] X + [3]                          
                                     [1 2]     [6]                          
                                  =  [mark(f(X, b(), b()))]                 
                                                                            
                    [active(b())] =  [4]                                    
                                     [2]                                    
                                  >  [3]                                    
                                     [2]                                    
                                  =  [mark(a())]                            
                                                                            
            [f(X1, mark(X2), X3)] =  [1 3] X1 + [0 0] X2 + [1 0] X3 + [3]   
                                     [1 2]      [0 1]      [4 1]      [2]   
                                  >= [0 0] X1 + [0 0] X2 + [0 0] X3 + [3]   
                                     [1 2]      [0 1]      [4 1]      [2]   
                                  =  [mark(f(X1, X2, X3))]                  
                                                                            
      [f(ok(X1), ok(X2), ok(X3))] =  [1 3] X1 + [1 0] X2 + [1 0] X3 + [0]   
                                     [1 2]      [0 1]      [4 1]      [0]   
                                  >= [1 3] X1 + [1 0] X2 + [1 0] X3 + [0]   
                                     [1 2]      [0 1]      [4 1]      [0]   
                                  =  [ok(f(X1, X2, X3))]                    
                                                                            
          [proper(f(X1, X2, X3))] =  [1 3] X1 + [1 0] X2 + [1 0] X3 + [0]   
                                     [1 2]      [0 1]      [4 1]      [0]   
                                  >= [1 3] X1 + [1 0] X2 + [1 0] X3 + [0]   
                                     [1 2]      [0 1]      [4 1]      [0]   
                                  =  [f(proper(X1), proper(X2), proper(X3))]
                                                                            
                    [proper(a())] =  [6]                                    
                                     [0]                                    
                                  >= [6]                                    
                                     [0]                                    
                                  =  [ok(a())]                              
                                                                            
                    [proper(b())] =  [0]                                    
                                     [2]                                    
                                  >= [0]                                    
                                     [2]                                    
                                  =  [ok(b())]                              
                                                                            
                 [top^#(mark(X))] =  [0 7] X + [14]                         
                                     [0 1]     [5]                          
                                  >  [0 7] X + [1]                          
                                     [0 0]     [0]                          
                                  =  [c_9(top^#(proper(X)), proper^#(X))]   
                                                                            
                   [top^#(ok(X))] =  [0 7] X + [0]                          
                                     [1 1]     [0]                          
                                  >= [0 7] X + [0]                          
                                     [0 0]     [0]                          
                                  =  [c_10(top^#(active(X)), active^#(X))]  
                                                                            
  
  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: { top^#(ok(X)) -> c_10(top^#(active(X)), active^#(X)) }
  Weak DPs: { top^#(mark(X)) -> c_9(top^#(proper(X)), proper^#(X)) }
  Weak Trs:
    { active(f(X1, X2, X3)) -> f(X1, active(X2), X3)
    , active(f(a(), X, X)) -> mark(f(X, b(), b()))
    , active(b()) -> mark(a())
    , f(X1, mark(X2), X3) -> mark(f(X1, X2, X3))
    , f(ok(X1), ok(X2), ok(X3)) -> ok(f(X1, X2, X3))
    , proper(f(X1, X2, X3)) -> f(proper(X1), proper(X2), proper(X3))
    , proper(a()) -> ok(a())
    , proper(b()) -> ok(b()) }
  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: top^#(ok(X)) -> c_10(top^#(active(X)), active^#(X)) }
  
  Sub-proof:
  ----------
    The following argument positions are usable:
      Uargs(c_9) = {1}, Uargs(c_10) = {1}
    
    TcT has computed the following constructor-based matrix
    interpretation satisfying not(EDA) and not(IDA(1)).
    
         [active](x1) = [0 0] x1 + [0]                      
                        [1 1]      [1]                      
                                                            
      [f](x1, x2, x3) = [0 0] x1 + [1 0] x2 + [0 0] x3 + [0]
                        [2 0]      [0 1]      [1 0]      [1]
                                                            
                  [a] = [2]                                 
                        [0]                                 
                                                            
           [mark](x1) = [0 0] x1 + [0]                      
                        [1 1]      [2]                      
                                                            
                  [b] = [0]                                 
                        [3]                                 
                                                            
         [proper](x1) = [1 0] x1 + [0]                      
                        [0 1]      [2]                      
                                                            
             [ok](x1) = [1 0] x1 + [0]                      
                        [0 1]      [2]                      
                                                            
       [active^#](x1) = [0]                                 
                        [1]                                 
                                                            
       [proper^#](x1) = [0]                                 
                        [0]                                 
                                                            
          [top^#](x1) = [6 6] x1 + [0]                      
                        [0 0]      [5]                      
                                                            
        [c_9](x1, x2) = [1 0] x1 + [0]                      
                        [0 0]      [0]                      
                                                            
       [c_10](x1, x2) = [1 0] x1 + [1 0] x2 + [0]           
                        [0 0]      [0 0]      [0]           
    
    The order satisfies the following ordering constraints:
    
          [active(f(X1, X2, X3))] =  [0 0] X1 + [0 0] X2 + [0 0] X3 + [0]   
                                     [2 0]      [1 1]      [1 0]      [2]   
                                  >= [0 0] X1 + [0 0] X2 + [0 0] X3 + [0]   
                                     [2 0]      [1 1]      [1 0]      [2]   
                                  =  [f(X1, active(X2), X3)]                
                                                                            
           [active(f(a(), X, X))] =  [0 0] X + [0]                          
                                     [2 1]     [6]                          
                                  >= [0 0] X + [0]                          
                                     [2 0]     [6]                          
                                  =  [mark(f(X, b(), b()))]                 
                                                                            
                    [active(b())] =  [0]                                    
                                     [4]                                    
                                  >= [0]                                    
                                     [4]                                    
                                  =  [mark(a())]                            
                                                                            
            [f(X1, mark(X2), X3)] =  [0 0] X1 + [0 0] X2 + [0 0] X3 + [0]   
                                     [2 0]      [1 1]      [1 0]      [3]   
                                  >= [0 0] X1 + [0 0] X2 + [0 0] X3 + [0]   
                                     [2 0]      [1 1]      [1 0]      [3]   
                                  =  [mark(f(X1, X2, X3))]                  
                                                                            
      [f(ok(X1), ok(X2), ok(X3))] =  [0 0] X1 + [1 0] X2 + [0 0] X3 + [0]   
                                     [2 0]      [0 1]      [1 0]      [3]   
                                  >= [0 0] X1 + [1 0] X2 + [0 0] X3 + [0]   
                                     [2 0]      [0 1]      [1 0]      [3]   
                                  =  [ok(f(X1, X2, X3))]                    
                                                                            
          [proper(f(X1, X2, X3))] =  [0 0] X1 + [1 0] X2 + [0 0] X3 + [0]   
                                     [2 0]      [0 1]      [1 0]      [3]   
                                  >= [0 0] X1 + [1 0] X2 + [0 0] X3 + [0]   
                                     [2 0]      [0 1]      [1 0]      [3]   
                                  =  [f(proper(X1), proper(X2), proper(X3))]
                                                                            
                    [proper(a())] =  [2]                                    
                                     [2]                                    
                                  >= [2]                                    
                                     [2]                                    
                                  =  [ok(a())]                              
                                                                            
                    [proper(b())] =  [0]                                    
                                     [5]                                    
                                  >= [0]                                    
                                     [5]                                    
                                  =  [ok(b())]                              
                                                                            
                 [top^#(mark(X))] =  [6 6] X + [12]                         
                                     [0 0]     [5]                          
                                  >= [6 6] X + [12]                         
                                     [0 0]     [0]                          
                                  =  [c_9(top^#(proper(X)), proper^#(X))]   
                                                                            
                   [top^#(ok(X))] =  [6 6] X + [12]                         
                                     [0 0]     [5]                          
                                  >  [6 6] X + [6]                          
                                     [0 0]     [0]                          
                                  =  [c_10(top^#(active(X)), active^#(X))]  
                                                                            
  
  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:
    { top^#(mark(X)) -> c_9(top^#(proper(X)), proper^#(X))
    , top^#(ok(X)) -> c_10(top^#(active(X)), active^#(X)) }
  Weak Trs:
    { active(f(X1, X2, X3)) -> f(X1, active(X2), X3)
    , active(f(a(), X, X)) -> mark(f(X, b(), b()))
    , active(b()) -> mark(a())
    , f(X1, mark(X2), X3) -> mark(f(X1, X2, X3))
    , f(ok(X1), ok(X2), ok(X3)) -> ok(f(X1, X2, X3))
    , proper(f(X1, X2, X3)) -> f(proper(X1), proper(X2), proper(X3))
    , proper(a()) -> ok(a())
    , proper(b()) -> ok(b()) }
  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.
  
  { top^#(mark(X)) -> c_9(top^#(proper(X)), proper^#(X))
  , top^#(ok(X)) -> c_10(top^#(active(X)), active^#(X)) }
  
  We are left with following problem, upon which TcT provides the
  certificate YES(O(1),O(1)).
  
  Weak Trs:
    { active(f(X1, X2, X3)) -> f(X1, active(X2), X3)
    , active(f(a(), X, X)) -> mark(f(X, b(), b()))
    , active(b()) -> mark(a())
    , f(X1, mark(X2), X3) -> mark(f(X1, X2, X3))
    , f(ok(X1), ok(X2), ok(X3)) -> ok(f(X1, X2, X3))
    , proper(f(X1, X2, X3)) -> f(proper(X1), proper(X2), proper(X3))
    , proper(a()) -> ok(a())
    , proper(b()) -> ok(b()) }
  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:
  { active^#(f(X1, X2, X3)) ->
    c_1(f^#(X1, active(X2), X3), active^#(X2))
  , f^#(X1, mark(X2), X3) -> c_4(f^#(X1, X2, X3))
  , f^#(ok(X1), ok(X2), ok(X3)) -> c_5(f^#(X1, X2, X3))
  , proper^#(f(X1, X2, X3)) ->
    c_6(f^#(proper(X1), proper(X2), proper(X3)),
        proper^#(X1),
        proper^#(X2),
        proper^#(X3)) }
Weak DPs:
  { top^#(mark(X)) -> proper^#(X)
  , top^#(mark(X)) -> top^#(proper(X))
  , top^#(ok(X)) -> active^#(X)
  , top^#(ok(X)) -> top^#(active(X)) }
Weak Trs:
  { active(f(X1, X2, X3)) -> f(X1, active(X2), X3)
  , active(f(a(), X, X)) -> mark(f(X, b(), b()))
  , active(b()) -> mark(a())
  , f(X1, mark(X2), X3) -> mark(f(X1, X2, X3))
  , f(ok(X1), ok(X2), ok(X3)) -> ok(f(X1, X2, X3))
  , proper(f(X1, X2, X3)) -> f(proper(X1), proper(X2), proper(X3))
  , proper(a()) -> ok(a())
  , proper(b()) -> ok(b()) }
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:
  { 2: f^#(X1, mark(X2), X3) -> c_4(f^#(X1, X2, X3))
  , 5: top^#(mark(X)) -> proper^#(X)
  , 7: top^#(ok(X)) -> active^#(X) }
Trs:
  { active(f(a(), X, X)) -> mark(f(X, b(), b()))
  , active(b()) -> mark(a())
  , proper(a()) -> ok(a())
  , proper(b()) -> ok(b()) }

Sub-proof:
----------
  The following argument positions are usable:
    Uargs(c_1) = {1, 2}, Uargs(c_4) = {1}, Uargs(c_5) = {1},
    Uargs(c_6) = {1, 2, 3, 4}
  
  TcT has computed the following constructor-based matrix
  interpretation satisfying not(EDA) and not(IDA(1)).
  
             [active](x1) = [0 1] x1 + [0]                               
                            [0 1]      [0]                               
                                                                         
          [f](x1, x2, x3) = [0 0] x1 + [1 0] x2 + [0 0] x3 + [0]         
                            [0 5]      [0 4]      [0 1]      [0]         
                                                                         
                      [a] = [0]                                          
                            [3]                                          
                                                                         
               [mark](x1) = [1 0] x1 + [2]                               
                            [0 1]      [0]                               
                                                                         
                      [b] = [0]                                          
                            [3]                                          
                                                                         
             [proper](x1) = [0 3] x1 + [0]                               
                            [0 1]      [0]                               
                                                                         
                 [ok](x1) = [0 0] x1 + [0]                               
                            [1 1]      [0]                               
                                                                         
           [active^#](x1) = [0 3] x1 + [0]                               
                            [0 1]      [0]                               
                                                                         
            [c_1](x1, x2) = [1 0] x1 + [1 1] x2 + [0]                    
                            [0 0]      [0 0]      [0]                    
                                                                         
        [f^#](x1, x2, x3) = [1 1] x2 + [0 0] x3 + [0]                    
                            [0 0]      [4 0]      [1]                    
                                                                         
                [c_4](x1) = [1 0] x1 + [1]                               
                            [0 0]      [0]                               
                                                                         
                [c_5](x1) = [1 0] x1 + [0]                               
                            [0 0]      [0]                               
                                                                         
           [proper^#](x1) = [0 2] x1 + [0]                               
                            [0 0]      [0]                               
                                                                         
    [c_6](x1, x2, x3, x4) = [1 0] x1 + [4 0] x2 + [1 0] x3 + [1          
                                                              1] x4 + [0]
                            [0 0]      [0 0]      [0 0]      [0          
                                                              0]      [0]
                                                                         
              [top^#](x1) = [0 4] x1 + [7]                               
                            [0 1]      [0]                               
  
  The order satisfies the following ordering constraints:
  
          [active(f(X1, X2, X3))] =  [0 5] X1 + [0 4] X2 + [0 1] X3 + [0]         
                                     [0 5]      [0 4]      [0 1]      [0]         
                                  >= [0 0] X1 + [0 1] X2 + [0 0] X3 + [0]         
                                     [0 5]      [0 4]      [0 1]      [0]         
                                  =  [f(X1, active(X2), X3)]                      
                                                                                  
           [active(f(a(), X, X))] =  [0 5] X + [15]                               
                                     [0 5]     [15]                               
                                  >  [0 0] X + [2]                                
                                     [0 5]     [15]                               
                                  =  [mark(f(X, b(), b()))]                       
                                                                                  
                    [active(b())] =  [3]                                          
                                     [3]                                          
                                  >  [2]                                          
                                     [3]                                          
                                  =  [mark(a())]                                  
                                                                                  
            [f(X1, mark(X2), X3)] =  [0 0] X1 + [1 0] X2 + [0 0] X3 + [2]         
                                     [0 5]      [0 4]      [0 1]      [0]         
                                  >= [0 0] X1 + [1 0] X2 + [0 0] X3 + [2]         
                                     [0 5]      [0 4]      [0 1]      [0]         
                                  =  [mark(f(X1, X2, X3))]                        
                                                                                  
      [f(ok(X1), ok(X2), ok(X3))] =  [0 0] X1 + [0 0] X2 + [0 0] X3 + [0]         
                                     [5 5]      [4 4]      [1 1]      [0]         
                                  >= [0 0] X1 + [0 0] X2 + [0 0] X3 + [0]         
                                     [0 5]      [1 4]      [0 1]      [0]         
                                  =  [ok(f(X1, X2, X3))]                          
                                                                                  
          [proper(f(X1, X2, X3))] =  [0 15] X1 + [0 12] X2 + [0 3] X3 + [0]       
                                     [0  5]      [0  4]      [0 1]      [0]       
                                  >= [0 0] X1 + [0 3] X2 + [0 0] X3 + [0]         
                                     [0 5]      [0 4]      [0 1]      [0]         
                                  =  [f(proper(X1), proper(X2), proper(X3))]      
                                                                                  
                    [proper(a())] =  [9]                                          
                                     [3]                                          
                                  >  [0]                                          
                                     [3]                                          
                                  =  [ok(a())]                                    
                                                                                  
                    [proper(b())] =  [9]                                          
                                     [3]                                          
                                  >  [0]                                          
                                     [3]                                          
                                  =  [ok(b())]                                    
                                                                                  
        [active^#(f(X1, X2, X3))] =  [0 15] X1 + [0 12] X2 + [0 3] X3 + [0]       
                                     [0  5]      [0  4]      [0 1]      [0]       
                                  >= [0 6] X2 + [0]                               
                                     [0 0]      [0]                               
                                  =  [c_1(f^#(X1, active(X2), X3), active^#(X2))] 
                                                                                  
          [f^#(X1, mark(X2), X3)] =  [1 1] X2 + [0 0] X3 + [2]                    
                                     [0 0]      [4 0]      [1]                    
                                  >  [1 1] X2 + [1]                               
                                     [0 0]      [0]                               
                                  =  [c_4(f^#(X1, X2, X3))]                       
                                                                                  
    [f^#(ok(X1), ok(X2), ok(X3))] =  [1 1] X2 + [0]                               
                                     [0 0]      [1]                               
                                  >= [1 1] X2 + [0]                               
                                     [0 0]      [0]                               
                                  =  [c_5(f^#(X1, X2, X3))]                       
                                                                                  
        [proper^#(f(X1, X2, X3))] =  [0 10] X1 + [0 8] X2 + [0 2] X3 + [0]        
                                     [0  0]      [0 0]      [0 0]      [0]        
                                  >= [0 8] X1 + [0 6] X2 + [0 2] X3 + [0]         
                                     [0 0]      [0 0]      [0 0]      [0]         
                                  =  [c_6(f^#(proper(X1), proper(X2), proper(X3)),
                                          proper^#(X1),                           
                                          proper^#(X2),                           
                                          proper^#(X3))]                          
                                                                                  
                 [top^#(mark(X))] =  [0 4] X + [7]                                
                                     [0 1]     [0]                                
                                  >  [0 2] X + [0]                                
                                     [0 0]     [0]                                
                                  =  [proper^#(X)]                                
                                                                                  
                 [top^#(mark(X))] =  [0 4] X + [7]                                
                                     [0 1]     [0]                                
                                  >= [0 4] X + [7]                                
                                     [0 1]     [0]                                
                                  =  [top^#(proper(X))]                           
                                                                                  
                   [top^#(ok(X))] =  [4 4] X + [7]                                
                                     [1 1]     [0]                                
                                  >  [0 3] X + [0]                                
                                     [0 1]     [0]                                
                                  =  [active^#(X)]                                
                                                                                  
                   [top^#(ok(X))] =  [4 4] X + [7]                                
                                     [1 1]     [0]                                
                                  >= [0 4] X + [7]                                
                                     [0 1]     [0]                                
                                  =  [top^#(active(X))]                           
                                                                                  

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:
  { active^#(f(X1, X2, X3)) ->
    c_1(f^#(X1, active(X2), X3), active^#(X2))
  , f^#(ok(X1), ok(X2), ok(X3)) -> c_5(f^#(X1, X2, X3))
  , proper^#(f(X1, X2, X3)) ->
    c_6(f^#(proper(X1), proper(X2), proper(X3)),
        proper^#(X1),
        proper^#(X2),
        proper^#(X3)) }
Weak DPs:
  { f^#(X1, mark(X2), X3) -> c_4(f^#(X1, X2, X3))
  , top^#(mark(X)) -> proper^#(X)
  , top^#(mark(X)) -> top^#(proper(X))
  , top^#(ok(X)) -> active^#(X)
  , top^#(ok(X)) -> top^#(active(X)) }
Weak Trs:
  { active(f(X1, X2, X3)) -> f(X1, active(X2), X3)
  , active(f(a(), X, X)) -> mark(f(X, b(), b()))
  , active(b()) -> mark(a())
  , f(X1, mark(X2), X3) -> mark(f(X1, X2, X3))
  , f(ok(X1), ok(X2), ok(X3)) -> ok(f(X1, X2, X3))
  , proper(f(X1, X2, X3)) -> f(proper(X1), proper(X2), proper(X3))
  , proper(a()) -> ok(a())
  , proper(b()) -> ok(b()) }
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: active^#(f(X1, X2, X3)) ->
       c_1(f^#(X1, active(X2), X3), active^#(X2))
  , 2: f^#(ok(X1), ok(X2), ok(X3)) -> c_5(f^#(X1, X2, X3)) }

Sub-proof:
----------
  The following argument positions are usable:
    Uargs(c_1) = {1, 2}, Uargs(c_4) = {1}, Uargs(c_5) = {1},
    Uargs(c_6) = {1, 2, 3, 4}
  
  TcT has computed the following constructor-based matrix
  interpretation satisfying not(EDA) and not(IDA(1)).
  
             [active](x1) = [1 0] x1 + [0]                               
                            [0 1]      [1]                               
                                                                         
          [f](x1, x2, x3) = [5 0] x1 + [1 0] x2 + [4 0] x3 + [1]         
                            [0 1]      [0 1]      [0 0]      [0]         
                                                                         
                      [a] = [1]                                          
                            [0]                                          
                                                                         
               [mark](x1) = [1 0] x1 + [0]                               
                            [0 1]      [0]                               
                                                                         
                      [b] = [1]                                          
                            [0]                                          
                                                                         
             [proper](x1) = [1 0] x1 + [0]                               
                            [3 0]      [3]                               
                                                                         
                 [ok](x1) = [1 2] x1 + [0]                               
                            [0 0]      [4]                               
                                                                         
           [active^#](x1) = [1 6] x1 + [0]                               
                            [0 0]      [0]                               
                                                                         
            [c_1](x1, x2) = [2 1] x1 + [1 0] x2 + [0]                    
                            [0 0]      [0 0]      [0]                    
                                                                         
        [f^#](x1, x2, x3) = [1 1] x1 + [0]                               
                            [1 0]      [0]                               
                                                                         
                [c_4](x1) = [1 0] x1 + [0]                               
                            [0 0]      [0]                               
                                                                         
                [c_5](x1) = [1 0] x1 + [3]                               
                            [0 0]      [0]                               
                                                                         
           [proper^#](x1) = [3 0] x1 + [0]                               
                            [1 0]      [0]                               
                                                                         
    [c_6](x1, x2, x3, x4) = [1 4] x1 + [2 0] x2 + [1 0] x3 + [1          
                                                              1] x4 + [0]
                            [0 0]      [0 0]      [0 0]      [0          
                                                              0]      [0]
                                                                         
              [top^#](x1) = [3 0] x1 + [0]                               
                            [4 0]      [4]                               
  
  The order satisfies the following ordering constraints:
  
          [active(f(X1, X2, X3))] =  [5 0] X1 + [1 0] X2 + [4 0] X3 + [1]         
                                     [0 1]      [0 1]      [0 0]      [1]         
                                  >= [5 0] X1 + [1 0] X2 + [4 0] X3 + [1]         
                                     [0 1]      [0 1]      [0 0]      [1]         
                                  =  [f(X1, active(X2), X3)]                      
                                                                                  
           [active(f(a(), X, X))] =  [5 0] X + [6]                                
                                     [0 1]     [1]                                
                                  >= [5 0] X + [6]                                
                                     [0 1]     [0]                                
                                  =  [mark(f(X, b(), b()))]                       
                                                                                  
                    [active(b())] =  [1]                                          
                                     [1]                                          
                                  >= [1]                                          
                                     [0]                                          
                                  =  [mark(a())]                                  
                                                                                  
            [f(X1, mark(X2), X3)] =  [5 0] X1 + [1 0] X2 + [4 0] X3 + [1]         
                                     [0 1]      [0 1]      [0 0]      [0]         
                                  >= [5 0] X1 + [1 0] X2 + [4 0] X3 + [1]         
                                     [0 1]      [0 1]      [0 0]      [0]         
                                  =  [mark(f(X1, X2, X3))]                        
                                                                                  
      [f(ok(X1), ok(X2), ok(X3))] =  [5 10] X1 + [1 2] X2 + [4 8] X3 + [1]        
                                     [0  0]      [0 0]      [0 0]      [8]        
                                  >= [5 2] X1 + [1 2] X2 + [4 0] X3 + [1]         
                                     [0 0]      [0 0]      [0 0]      [4]         
                                  =  [ok(f(X1, X2, X3))]                          
                                                                                  
          [proper(f(X1, X2, X3))] =  [ 5 0] X1 + [1 0] X2 + [ 4 0] X3 + [1]       
                                     [15 0]      [3 0]      [12 0]      [6]       
                                  >= [5 0] X1 + [1 0] X2 + [4 0] X3 + [1]         
                                     [3 0]      [3 0]      [0 0]      [6]         
                                  =  [f(proper(X1), proper(X2), proper(X3))]      
                                                                                  
                    [proper(a())] =  [1]                                          
                                     [6]                                          
                                  >= [1]                                          
                                     [4]                                          
                                  =  [ok(a())]                                    
                                                                                  
                    [proper(b())] =  [1]                                          
                                     [6]                                          
                                  >= [1]                                          
                                     [4]                                          
                                  =  [ok(b())]                                    
                                                                                  
        [active^#(f(X1, X2, X3))] =  [5 6] X1 + [1 6] X2 + [4 0] X3 + [1]         
                                     [0 0]      [0 0]      [0 0]      [0]         
                                  >  [3 2] X1 + [1 6] X2 + [0]                    
                                     [0 0]      [0 0]      [0]                    
                                  =  [c_1(f^#(X1, active(X2), X3), active^#(X2))] 
                                                                                  
          [f^#(X1, mark(X2), X3)] =  [1 1] X1 + [0]                               
                                     [1 0]      [0]                               
                                  >= [1 1] X1 + [0]                               
                                     [0 0]      [0]                               
                                  =  [c_4(f^#(X1, X2, X3))]                       
                                                                                  
    [f^#(ok(X1), ok(X2), ok(X3))] =  [1 2] X1 + [4]                               
                                     [1 2]      [0]                               
                                  >  [1 1] X1 + [3]                               
                                     [0 0]      [0]                               
                                  =  [c_5(f^#(X1, X2, X3))]                       
                                                                                  
        [proper^#(f(X1, X2, X3))] =  [15 0] X1 + [3 0] X2 + [12 0] X3 + [3]       
                                     [ 5 0]      [1 0]      [ 4 0]      [1]       
                                  >= [14 0] X1 + [3 0] X2 + [4 0] X3 + [3]        
                                     [ 0 0]      [0 0]      [0 0]      [0]        
                                  =  [c_6(f^#(proper(X1), proper(X2), proper(X3)),
                                          proper^#(X1),                           
                                          proper^#(X2),                           
                                          proper^#(X3))]                          
                                                                                  
                 [top^#(mark(X))] =  [3 0] X + [0]                                
                                     [4 0]     [4]                                
                                  >= [3 0] X + [0]                                
                                     [1 0]     [0]                                
                                  =  [proper^#(X)]                                
                                                                                  
                 [top^#(mark(X))] =  [3 0] X + [0]                                
                                     [4 0]     [4]                                
                                  >= [3 0] X + [0]                                
                                     [4 0]     [4]                                
                                  =  [top^#(proper(X))]                           
                                                                                  
                   [top^#(ok(X))] =  [3 6] X + [0]                                
                                     [4 8]     [4]                                
                                  >= [1 6] X + [0]                                
                                     [0 0]     [0]                                
                                  =  [active^#(X)]                                
                                                                                  
                   [top^#(ok(X))] =  [3 6] X + [0]                                
                                     [4 8]     [4]                                
                                  >= [3 0] X + [0]                                
                                     [4 0]     [4]                                
                                  =  [top^#(active(X))]                           
                                                                                  

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:
  { proper^#(f(X1, X2, X3)) ->
    c_6(f^#(proper(X1), proper(X2), proper(X3)),
        proper^#(X1),
        proper^#(X2),
        proper^#(X3)) }
Weak DPs:
  { active^#(f(X1, X2, X3)) ->
    c_1(f^#(X1, active(X2), X3), active^#(X2))
  , f^#(X1, mark(X2), X3) -> c_4(f^#(X1, X2, X3))
  , f^#(ok(X1), ok(X2), ok(X3)) -> c_5(f^#(X1, X2, X3))
  , top^#(mark(X)) -> proper^#(X)
  , top^#(mark(X)) -> top^#(proper(X))
  , top^#(ok(X)) -> active^#(X)
  , top^#(ok(X)) -> top^#(active(X)) }
Weak Trs:
  { active(f(X1, X2, X3)) -> f(X1, active(X2), X3)
  , active(f(a(), X, X)) -> mark(f(X, b(), b()))
  , active(b()) -> mark(a())
  , f(X1, mark(X2), X3) -> mark(f(X1, X2, X3))
  , f(ok(X1), ok(X2), ok(X3)) -> ok(f(X1, X2, X3))
  , proper(f(X1, X2, X3)) -> f(proper(X1), proper(X2), proper(X3))
  , proper(a()) -> ok(a())
  , proper(b()) -> ok(b()) }
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.

{ active^#(f(X1, X2, X3)) ->
  c_1(f^#(X1, active(X2), X3), active^#(X2))
, f^#(X1, mark(X2), X3) -> c_4(f^#(X1, X2, X3))
, f^#(ok(X1), ok(X2), ok(X3)) -> c_5(f^#(X1, X2, X3))
, top^#(ok(X)) -> active^#(X) }

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

Strict DPs:
  { proper^#(f(X1, X2, X3)) ->
    c_6(f^#(proper(X1), proper(X2), proper(X3)),
        proper^#(X1),
        proper^#(X2),
        proper^#(X3)) }
Weak DPs:
  { top^#(mark(X)) -> proper^#(X)
  , top^#(mark(X)) -> top^#(proper(X))
  , top^#(ok(X)) -> top^#(active(X)) }
Weak Trs:
  { active(f(X1, X2, X3)) -> f(X1, active(X2), X3)
  , active(f(a(), X, X)) -> mark(f(X, b(), b()))
  , active(b()) -> mark(a())
  , f(X1, mark(X2), X3) -> mark(f(X1, X2, X3))
  , f(ok(X1), ok(X2), ok(X3)) -> ok(f(X1, X2, X3))
  , proper(f(X1, X2, X3)) -> f(proper(X1), proper(X2), proper(X3))
  , proper(a()) -> ok(a())
  , proper(b()) -> ok(b()) }
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:

  { proper^#(f(X1, X2, X3)) ->
    c_6(f^#(proper(X1), proper(X2), proper(X3)),
        proper^#(X1),
        proper^#(X2),
        proper^#(X3)) }

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

Strict DPs:
  { proper^#(f(X1, X2, X3)) ->
    c_1(proper^#(X1), proper^#(X2), proper^#(X3)) }
Weak DPs:
  { top^#(mark(X)) -> c_2(proper^#(X))
  , top^#(mark(X)) -> c_3(top^#(proper(X)))
  , top^#(ok(X)) -> c_4(top^#(active(X))) }
Weak Trs:
  { active(f(X1, X2, X3)) -> f(X1, active(X2), X3)
  , active(f(a(), X, X)) -> mark(f(X, b(), b()))
  , active(b()) -> mark(a())
  , f(X1, mark(X2), X3) -> mark(f(X1, X2, X3))
  , f(ok(X1), ok(X2), ok(X3)) -> ok(f(X1, X2, X3))
  , proper(f(X1, X2, X3)) -> f(proper(X1), proper(X2), proper(X3))
  , proper(a()) -> ok(a())
  , proper(b()) -> ok(b()) }
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: proper^#(f(X1, X2, X3)) ->
       c_1(proper^#(X1), proper^#(X2), proper^#(X3))
  , 2: top^#(mark(X)) -> c_2(proper^#(X)) }

Sub-proof:
----------
  The following argument positions are usable:
    Uargs(c_1) = {1, 2, 3}, Uargs(c_2) = {1}, Uargs(c_3) = {1},
    Uargs(c_4) = {1}
  
  TcT has computed the following constructor-based matrix
  interpretation satisfying not(EDA).
  
             [active](x1) = [1] x1 + [0]                  
                                                          
          [f](x1, x2, x3) = [1] x1 + [2] x2 + [1] x3 + [1]
                                                          
                      [a] = [0]                           
                                                          
               [mark](x1) = [1] x1 + [0]                  
                                                          
                      [b] = [0]                           
                                                          
             [proper](x1) = [1] x1 + [0]                  
                                                          
                 [ok](x1) = [1] x1 + [0]                  
                                                          
           [active^#](x1) = [0]                           
                                                          
            [c_1](x1, x2) = [0]                           
                                                          
        [f^#](x1, x2, x3) = [0]                           
                                                          
                [c_4](x1) = [0]                           
                                                          
                [c_5](x1) = [0]                           
                                                          
           [proper^#](x1) = [5] x1 + [0]                  
                                                          
    [c_6](x1, x2, x3, x4) = [0]                           
                                                          
              [top^#](x1) = [7] x1 + [2]                  
                                                          
                      [c] = [0]                           
                                                          
        [c_1](x1, x2, x3) = [1] x1 + [2] x2 + [1] x3 + [0]
                                                          
                [c_2](x1) = [1] x1 + [1]                  
                                                          
                [c_3](x1) = [1] x1 + [0]                  
                                                          
                [c_4](x1) = [1] x1 + [0]                  
  
  The order satisfies the following ordering constraints:
  
        [active(f(X1, X2, X3))] =  [1] X1 + [2] X2 + [1] X3 + [1]                 
                                >= [1] X1 + [2] X2 + [1] X3 + [1]                 
                                =  [f(X1, active(X2), X3)]                        
                                                                                  
         [active(f(a(), X, X))] =  [3] X + [1]                                    
                                >= [1] X + [1]                                    
                                =  [mark(f(X, b(), b()))]                         
                                                                                  
                  [active(b())] =  [0]                                            
                                >= [0]                                            
                                =  [mark(a())]                                    
                                                                                  
          [f(X1, mark(X2), X3)] =  [1] X1 + [2] X2 + [1] X3 + [1]                 
                                >= [1] X1 + [2] X2 + [1] X3 + [1]                 
                                =  [mark(f(X1, X2, X3))]                          
                                                                                  
    [f(ok(X1), ok(X2), ok(X3))] =  [1] X1 + [2] X2 + [1] X3 + [1]                 
                                >= [1] X1 + [2] X2 + [1] X3 + [1]                 
                                =  [ok(f(X1, X2, X3))]                            
                                                                                  
        [proper(f(X1, X2, X3))] =  [1] X1 + [2] X2 + [1] X3 + [1]                 
                                >= [1] X1 + [2] X2 + [1] X3 + [1]                 
                                =  [f(proper(X1), proper(X2), proper(X3))]        
                                                                                  
                  [proper(a())] =  [0]                                            
                                >= [0]                                            
                                =  [ok(a())]                                      
                                                                                  
                  [proper(b())] =  [0]                                            
                                >= [0]                                            
                                =  [ok(b())]                                      
                                                                                  
      [proper^#(f(X1, X2, X3))] =  [5] X1 + [10] X2 + [5] X3 + [5]                
                                >  [5] X1 + [10] X2 + [5] X3 + [0]                
                                =  [c_1(proper^#(X1), proper^#(X2), proper^#(X3))]
                                                                                  
               [top^#(mark(X))] =  [7] X + [2]                                    
                                >  [5] X + [1]                                    
                                =  [c_2(proper^#(X))]                             
                                                                                  
               [top^#(mark(X))] =  [7] X + [2]                                    
                                >= [7] X + [2]                                    
                                =  [c_3(top^#(proper(X)))]                        
                                                                                  
                 [top^#(ok(X))] =  [7] X + [2]                                    
                                >= [7] X + [2]                                    
                                =  [c_4(top^#(active(X)))]                        
                                                                                  

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:
  { proper^#(f(X1, X2, X3)) ->
    c_1(proper^#(X1), proper^#(X2), proper^#(X3))
  , top^#(mark(X)) -> c_2(proper^#(X))
  , top^#(mark(X)) -> c_3(top^#(proper(X)))
  , top^#(ok(X)) -> c_4(top^#(active(X))) }
Weak Trs:
  { active(f(X1, X2, X3)) -> f(X1, active(X2), X3)
  , active(f(a(), X, X)) -> mark(f(X, b(), b()))
  , active(b()) -> mark(a())
  , f(X1, mark(X2), X3) -> mark(f(X1, X2, X3))
  , f(ok(X1), ok(X2), ok(X3)) -> ok(f(X1, X2, X3))
  , proper(f(X1, X2, X3)) -> f(proper(X1), proper(X2), proper(X3))
  , proper(a()) -> ok(a())
  , proper(b()) -> ok(b()) }
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.

{ proper^#(f(X1, X2, X3)) ->
  c_1(proper^#(X1), proper^#(X2), proper^#(X3))
, top^#(mark(X)) -> c_2(proper^#(X))
, top^#(mark(X)) -> c_3(top^#(proper(X)))
, top^#(ok(X)) -> c_4(top^#(active(X))) }

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

Weak Trs:
  { active(f(X1, X2, X3)) -> f(X1, active(X2), X3)
  , active(f(a(), X, X)) -> mark(f(X, b(), b()))
  , active(b()) -> mark(a())
  , f(X1, mark(X2), X3) -> mark(f(X1, X2, X3))
  , f(ok(X1), ok(X2), ok(X3)) -> ok(f(X1, X2, X3))
  , proper(f(X1, X2, X3)) -> f(proper(X1), proper(X2), proper(X3))
  , proper(a()) -> ok(a())
  , proper(b()) -> ok(b()) }
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))