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(b(), X, c())) -> mark(f(X, c(), X))
  , active(c()) -> mark(b())
  , 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(b()) -> ok(b())
  , proper(c()) -> ok(c())
  , 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(b(), X, c())) -> c_2(f^#(X, c(), X))
  , active^#(c()) -> 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^#(b()) -> c_7()
  , proper^#(c()) -> 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(b(), X, c())) -> c_2(f^#(X, c(), X))
  , active^#(c()) -> 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^#(b()) -> c_7()
  , proper^#(c()) -> 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(b(), X, c())) -> mark(f(X, c(), X))
  , active(c()) -> mark(b())
  , 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(b()) -> ok(b())
  , proper(c()) -> ok(c())
  , 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(b(), X, c())) -> c_2(f^#(X, c(), X))
    , 3: active^#(c()) -> 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^#(b()) -> c_7()
    , 8: proper^#(c()) -> 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(b(), X, c())) -> c_2(f^#(X, c(), X))
  , active^#(c()) -> c_3()
  , proper^#(b()) -> c_7()
  , proper^#(c()) -> c_8() }
Weak Trs:
  { active(f(X1, X2, X3)) -> f(X1, active(X2), X3)
  , active(f(b(), X, c())) -> mark(f(X, c(), X))
  , active(c()) -> mark(b())
  , 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(b()) -> ok(b())
  , proper(c()) -> ok(c())
  , 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(b(), X, c())) -> c_2(f^#(X, c(), X))
, active^#(c()) -> c_3()
, proper^#(b()) -> c_7()
, proper^#(c()) -> 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(b(), X, c())) -> mark(f(X, c(), X))
  , active(c()) -> mark(b())
  , 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(b()) -> ok(b())
  , proper(c()) -> ok(c())
  , 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(b(), X, c())) -> mark(f(X, c(), X))
    , active(c()) -> mark(b())
    , 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(b()) -> ok(b())
    , proper(c()) -> ok(c()) }

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(b(), X, c())) -> mark(f(X, c(), X))
  , active(c()) -> mark(b())
  , 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(b()) -> ok(b())
  , proper(c()) -> ok(c()) }
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(b(), X, c())) -> mark(f(X, c(), X))
    , active(c()) -> mark(b())
    , 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(b()) -> ok(b())
    , proper(c()) -> ok(c()) }
  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)) }
  
  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]      [0]                      
                                                            
      [f](x1, x2, x3) = [0 0] x1 + [3 0] x2 + [0 0] x3 + [0]
                        [4 1]      [1 4]      [0 3]      [0]
                                                            
                  [b] = [1]                                 
                        [1]                                 
                                                            
                  [c] = [0]                                 
                        [3]                                 
                                                            
           [mark](x1) = [0 0] x1 + [0]                      
                        [1 1]      [1]                      
                                                            
         [proper](x1) = [1 0] x1 + [0]                      
                        [0 1]      [0]                      
                                                            
             [ok](x1) = [1 0] x1 + [0]                      
                        [0 1]      [0]                      
                                                            
       [active^#](x1) = [0]                                 
                        [0]                                 
                                                            
       [proper^#](x1) = [0]                                 
                        [1]                                 
                                                            
          [top^#](x1) = [4 4] x1 + [2]                      
                        [1 0]      [0]                      
                                                            
        [c_9](x1, x2) = [1 0] x1 + [1 0] x2 + [0]           
                        [0 0]      [0 0]      [0]           
                                                            
       [c_10](x1, x2) = [1 1] x1 + [1 1] 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]   
                                     [4 1]      [4 4]      [0 3]      [0]   
                                  >= [0 0] X1 + [0 0] X2 + [0 0] X3 + [0]   
                                     [4 1]      [4 4]      [0 3]      [0]   
                                  =  [f(X1, active(X2), X3)]                
                                                                            
         [active(f(b(), X, c()))] =  [0 0] X + [0]                          
                                     [4 4]     [14]                         
                                  >= [0 0] X + [0]                          
                                     [4 4]     [13]                         
                                  =  [mark(f(X, c(), X))]                   
                                                                            
                    [active(c())] =  [0]                                    
                                     [3]                                    
                                  >= [0]                                    
                                     [3]                                    
                                  =  [mark(b())]                            
                                                                            
            [f(X1, mark(X2), X3)] =  [0 0] X1 + [0 0] X2 + [0 0] X3 + [0]   
                                     [4 1]      [4 4]      [0 3]      [4]   
                                  >= [0 0] X1 + [0 0] X2 + [0 0] X3 + [0]   
                                     [4 1]      [4 4]      [0 3]      [1]   
                                  =  [mark(f(X1, X2, X3))]                  
                                                                            
      [f(ok(X1), ok(X2), ok(X3))] =  [0 0] X1 + [3 0] X2 + [0 0] X3 + [0]   
                                     [4 1]      [1 4]      [0 3]      [0]   
                                  >= [0 0] X1 + [3 0] X2 + [0 0] X3 + [0]   
                                     [4 1]      [1 4]      [0 3]      [0]   
                                  =  [ok(f(X1, X2, X3))]                    
                                                                            
          [proper(f(X1, X2, X3))] =  [0 0] X1 + [3 0] X2 + [0 0] X3 + [0]   
                                     [4 1]      [1 4]      [0 3]      [0]   
                                  >= [0 0] X1 + [3 0] X2 + [0 0] X3 + [0]   
                                     [4 1]      [1 4]      [0 3]      [0]   
                                  =  [f(proper(X1), proper(X2), proper(X3))]
                                                                            
                    [proper(b())] =  [1]                                    
                                     [1]                                    
                                  >= [1]                                    
                                     [1]                                    
                                  =  [ok(b())]                              
                                                                            
                    [proper(c())] =  [0]                                    
                                     [3]                                    
                                  >= [0]                                    
                                     [3]                                    
                                  =  [ok(c())]                              
                                                                            
                 [top^#(mark(X))] =  [4 4] X + [6]                          
                                     [0 0]     [0]                          
                                  >  [4 4] X + [2]                          
                                     [0 0]     [0]                          
                                  =  [c_9(top^#(proper(X)), proper^#(X))]   
                                                                            
                   [top^#(ok(X))] =  [4 4] X + [2]                          
                                     [1 0]     [0]                          
                                  >= [4 4] X + [2]                          
                                     [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(b(), X, c())) -> mark(f(X, c(), X))
    , active(c()) -> mark(b())
    , 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(b()) -> ok(b())
    , proper(c()) -> ok(c()) }
  Obligation:
    innermost runtime complexity
  Answer:
    YES(O(1),O(n^1))
  
  We use the processor 'matrix interpretation of dimension 3' to
  orient following rules strictly.
  
  DPs:
    { 1: top^#(ok(X)) -> c_10(top^#(active(X)), active^#(X)) }
  Trs:
    { active(f(b(), X, c())) -> mark(f(X, c(), X))
    , active(c()) -> mark(b()) }
  
  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)).
    
                        [0 0 1]      [0]                          
         [active](x1) = [0 0 1] x1 + [0]                          
                        [1 0 0]      [0]                          
                                                                  
                        [2 0 1]      [2 0 2]      [0 0 1]      [0]
      [f](x1, x2, x3) = [2 0 1] x1 + [1 1 2] x2 + [0 0 1] x3 + [0]
                        [2 0 1]      [2 0 2]      [0 0 1]      [0]
                                                                  
                        [2]                                       
                  [b] = [1]                                       
                        [0]                                       
                                                                  
                        [0]                                       
                  [c] = [2]                                       
                        [3]                                       
                                                                  
                        [1 0 0]      [0]                          
           [mark](x1) = [1 0 0] x1 + [1]                          
                        [0 0 1]      [0]                          
                                                                  
                        [1 0 0]      [0]                          
         [proper](x1) = [1 0 0] x1 + [1]                          
                        [0 0 1]      [0]                          
                                                                  
                        [1 0 0]      [0]                          
             [ok](x1) = [1 0 0] x1 + [1]                          
                        [0 0 1]      [0]                          
                                                                  
                        [3]                                       
       [active^#](x1) = [3]                                       
                        [1]                                       
                                                                  
                        [0]                                       
       [proper^#](x1) = [0]                                       
                        [0]                                       
                                                                  
                        [2 5 7]      [4]                          
          [top^#](x1) = [0 0 0] x1 + [2]                          
                        [0 0 0]      [0]                          
                                                                  
                        [1 0 0]      [0]                          
        [c_9](x1, x2) = [0 0 0] x1 + [0]                          
                        [0 0 0]      [0]                          
                                                                  
                        [1 2 0]      [0]                          
       [c_10](x1, x2) = [0 0 0] x1 + [0]                          
                        [0 0 0]      [0]                          
    
    The order satisfies the following ordering constraints:
    
          [active(f(X1, X2, X3))] =  [2 0 1]      [2 0 2]      [0 0 1]      [0]
                                     [2 0 1] X1 + [2 0 2] X2 + [0 0 1] X3 + [0]
                                     [2 0 1]      [2 0 2]      [0 0 1]      [0]
                                  >= [2 0 1]      [2 0 2]      [0 0 1]      [0]
                                     [2 0 1] X1 + [2 0 2] X2 + [0 0 1] X3 + [0]
                                     [2 0 1]      [2 0 2]      [0 0 1]      [0]
                                  =  [f(X1, active(X2), X3)]                   
                                                                               
         [active(f(b(), X, c()))] =  [2 0 2]     [7]                           
                                     [2 0 2] X + [7]                           
                                     [2 0 2]     [7]                           
                                  >  [2 0 2]     [6]                           
                                     [2 0 2] X + [7]                           
                                     [2 0 2]     [6]                           
                                  =  [mark(f(X, c(), X))]                      
                                                                               
                    [active(c())] =  [3]                                       
                                     [3]                                       
                                     [0]                                       
                                  >  [2]                                       
                                     [3]                                       
                                     [0]                                       
                                  =  [mark(b())]                               
                                                                               
            [f(X1, mark(X2), X3)] =  [2 0 1]      [2 0 2]      [0 0 1]      [0]
                                     [2 0 1] X1 + [2 0 2] X2 + [0 0 1] X3 + [1]
                                     [2 0 1]      [2 0 2]      [0 0 1]      [0]
                                  >= [2 0 1]      [2 0 2]      [0 0 1]      [0]
                                     [2 0 1] X1 + [2 0 2] X2 + [0 0 1] X3 + [1]
                                     [2 0 1]      [2 0 2]      [0 0 1]      [0]
                                  =  [mark(f(X1, X2, X3))]                     
                                                                               
      [f(ok(X1), ok(X2), ok(X3))] =  [2 0 1]      [2 0 2]      [0 0 1]      [0]
                                     [2 0 1] X1 + [2 0 2] X2 + [0 0 1] X3 + [1]
                                     [2 0 1]      [2 0 2]      [0 0 1]      [0]
                                  >= [2 0 1]      [2 0 2]      [0 0 1]      [0]
                                     [2 0 1] X1 + [2 0 2] X2 + [0 0 1] X3 + [1]
                                     [2 0 1]      [2 0 2]      [0 0 1]      [0]
                                  =  [ok(f(X1, X2, X3))]                       
                                                                               
          [proper(f(X1, X2, X3))] =  [2 0 1]      [2 0 2]      [0 0 1]      [0]
                                     [2 0 1] X1 + [2 0 2] X2 + [0 0 1] X3 + [1]
                                     [2 0 1]      [2 0 2]      [0 0 1]      [0]
                                  >= [2 0 1]      [2 0 2]      [0 0 1]      [0]
                                     [2 0 1] X1 + [2 0 2] X2 + [0 0 1] X3 + [1]
                                     [2 0 1]      [2 0 2]      [0 0 1]      [0]
                                  =  [f(proper(X1), proper(X2), proper(X3))]   
                                                                               
                    [proper(b())] =  [2]                                       
                                     [3]                                       
                                     [0]                                       
                                  >= [2]                                       
                                     [3]                                       
                                     [0]                                       
                                  =  [ok(b())]                                 
                                                                               
                    [proper(c())] =  [0]                                       
                                     [1]                                       
                                     [3]                                       
                                  >= [0]                                       
                                     [1]                                       
                                     [3]                                       
                                  =  [ok(c())]                                 
                                                                               
                 [top^#(mark(X))] =  [7 0 7]     [9]                           
                                     [0 0 0] X + [2]                           
                                     [0 0 0]     [0]                           
                                  >= [7 0 7]     [9]                           
                                     [0 0 0] X + [0]                           
                                     [0 0 0]     [0]                           
                                  =  [c_9(top^#(proper(X)), proper^#(X))]      
                                                                               
                   [top^#(ok(X))] =  [7 0 7]     [9]                           
                                     [0 0 0] X + [2]                           
                                     [0 0 0]     [0]                           
                                  >  [7 0 7]     [8]                           
                                     [0 0 0] X + [0]                           
                                     [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(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(b(), X, c())) -> mark(f(X, c(), X))
    , active(c()) -> mark(b())
    , 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(b()) -> ok(b())
    , proper(c()) -> ok(c()) }
  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(b(), X, c())) -> mark(f(X, c(), X))
    , active(c()) -> mark(b())
    , 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(b()) -> ok(b())
    , proper(c()) -> ok(c()) }
  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(b(), X, c())) -> mark(f(X, c(), X))
  , active(c()) -> mark(b())
  , 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(b()) -> ok(b())
  , proper(c()) -> ok(c()) }
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:
  { 3: f^#(ok(X1), ok(X2), ok(X3)) -> c_5(f^#(X1, X2, X3))
  , 5: top^#(mark(X)) -> proper^#(X)
  , 7: top^#(ok(X)) -> active^#(X) }

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]                               
                            [2 0]      [1]                               
                                                                         
          [f](x1, x2, x3) = [2 0] x1 + [4 0] x2 + [2 0] x3 + [3]         
                            [0 0]      [0 1]      [0 0]      [0]         
                                                                         
                      [b] = [0]                                          
                            [0]                                          
                                                                         
                      [c] = [0]                                          
                            [0]                                          
                                                                         
               [mark](x1) = [1 1] x1 + [0]                               
                            [0 0]      [0]                               
                                                                         
             [proper](x1) = [1 0] x1 + [0]                               
                            [2 0]      [2]                               
                                                                         
                 [ok](x1) = [1 2] x1 + [0]                               
                            [0 0]      [2]                               
                                                                         
           [active^#](x1) = [1 2] x1 + [5]                               
                            [0 0]      [1]                               
                                                                         
            [c_1](x1, x2) = [1 0] x1 + [1 2] x2 + [0]                    
                            [0 0]      [0 0]      [0]                    
                                                                         
        [f^#](x1, x2, x3) = [0 0] x1 + [1 1] x2 + [1 0] x3 + [0]         
                            [1 0]      [0 0]      [0 0]      [1]         
                                                                         
                [c_4](x1) = [1 0] x1 + [0]                               
                            [0 0]      [0]                               
                                                                         
                [c_5](x1) = [1 0] x1 + [1]                               
                            [0 0]      [0]                               
                                                                         
           [proper^#](x1) = [1 0] x1 + [0]                               
                            [1 0]      [2]                               
                                                                         
    [c_6](x1, x2, x3, x4) = [1 1] x1 + [1 0] x2 + [1 0] x3 + [1          
                                                              0] x4 + [0]
                            [0 0]      [0 0]      [0 0]      [0          
                                                              0]      [0]
                                                                         
              [top^#](x1) = [1 0] x1 + [7]                               
                            [4 0]      [4]                               
  
  The order satisfies the following ordering constraints:
  
          [active(f(X1, X2, X3))] =  [2 0] X1 + [4 0] X2 + [2 0] X3 + [3]         
                                     [4 0]      [8 0]      [4 0]      [7]         
                                  >= [2 0] X1 + [4 0] X2 + [2 0] X3 + [3]         
                                     [0 0]      [2 0]      [0 0]      [1]         
                                  =  [f(X1, active(X2), X3)]                      
                                                                                  
         [active(f(b(), X, c()))] =  [4 0] X + [3]                                
                                     [8 0]     [7]                                
                                  >= [4 0] X + [3]                                
                                     [0 0]     [0]                                
                                  =  [mark(f(X, c(), X))]                         
                                                                                  
                    [active(c())] =  [0]                                          
                                     [1]                                          
                                  >= [0]                                          
                                     [0]                                          
                                  =  [mark(b())]                                  
                                                                                  
            [f(X1, mark(X2), X3)] =  [2 0] X1 + [4 4] X2 + [2 0] X3 + [3]         
                                     [0 0]      [0 0]      [0 0]      [0]         
                                  >= [2 0] X1 + [4 1] X2 + [2 0] X3 + [3]         
                                     [0 0]      [0 0]      [0 0]      [0]         
                                  =  [mark(f(X1, X2, X3))]                        
                                                                                  
      [f(ok(X1), ok(X2), ok(X3))] =  [2 4] X1 + [4 8] X2 + [2 4] X3 + [3]         
                                     [0 0]      [0 0]      [0 0]      [2]         
                                  >= [2 0] X1 + [4 2] X2 + [2 0] X3 + [3]         
                                     [0 0]      [0 0]      [0 0]      [2]         
                                  =  [ok(f(X1, X2, X3))]                          
                                                                                  
          [proper(f(X1, X2, X3))] =  [2 0] X1 + [4 0] X2 + [2 0] X3 + [3]         
                                     [4 0]      [8 0]      [4 0]      [8]         
                                  >= [2 0] X1 + [4 0] X2 + [2 0] X3 + [3]         
                                     [0 0]      [2 0]      [0 0]      [2]         
                                  =  [f(proper(X1), proper(X2), proper(X3))]      
                                                                                  
                    [proper(b())] =  [0]                                          
                                     [2]                                          
                                  >= [0]                                          
                                     [2]                                          
                                  =  [ok(b())]                                    
                                                                                  
                    [proper(c())] =  [0]                                          
                                     [2]                                          
                                  >= [0]                                          
                                     [2]                                          
                                  =  [ok(c())]                                    
                                                                                  
        [active^#(f(X1, X2, X3))] =  [2 0] X1 + [4 2] X2 + [2 0] X3 + [8]         
                                     [0 0]      [0 0]      [0 0]      [1]         
                                  >= [4 2] X2 + [1 0] X3 + [8]                    
                                     [0 0]      [0 0]      [0]                    
                                  =  [c_1(f^#(X1, active(X2), X3), active^#(X2))] 
                                                                                  
          [f^#(X1, mark(X2), X3)] =  [0 0] X1 + [1 1] X2 + [1 0] X3 + [0]         
                                     [1 0]      [0 0]      [0 0]      [1]         
                                  >= [1 1] X2 + [1 0] X3 + [0]                    
                                     [0 0]      [0 0]      [0]                    
                                  =  [c_4(f^#(X1, X2, X3))]                       
                                                                                  
    [f^#(ok(X1), ok(X2), ok(X3))] =  [0 0] X1 + [1 2] X2 + [1 2] X3 + [2]         
                                     [1 2]      [0 0]      [0 0]      [1]         
                                  >  [1 1] X2 + [1 0] X3 + [1]                    
                                     [0 0]      [0 0]      [0]                    
                                  =  [c_5(f^#(X1, X2, X3))]                       
                                                                                  
        [proper^#(f(X1, X2, X3))] =  [2 0] X1 + [4 0] X2 + [2 0] X3 + [3]         
                                     [2 0]      [4 0]      [2 0]      [5]         
                                  >= [2 0] X1 + [4 0] X2 + [2 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))] =  [1 1] X + [7]                                
                                     [4 4]     [4]                                
                                  >  [1 0] X + [0]                                
                                     [1 0]     [2]                                
                                  =  [proper^#(X)]                                
                                                                                  
                 [top^#(mark(X))] =  [1 1] X + [7]                                
                                     [4 4]     [4]                                
                                  >= [1 0] X + [7]                                
                                     [4 0]     [4]                                
                                  =  [top^#(proper(X))]                           
                                                                                  
                   [top^#(ok(X))] =  [1 2] X + [7]                                
                                     [4 8]     [4]                                
                                  >  [1 2] X + [5]                                
                                     [0 0]     [1]                                
                                  =  [active^#(X)]                                
                                                                                  
                   [top^#(ok(X))] =  [1 2] X + [7]                                
                                     [4 8]     [4]                                
                                  >= [1 0] X + [7]                                
                                     [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:
  { 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))
  , proper^#(f(X1, X2, X3)) ->
    c_6(f^#(proper(X1), proper(X2), proper(X3)),
        proper^#(X1),
        proper^#(X2),
        proper^#(X3)) }
Weak DPs:
  { 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(b(), X, c())) -> mark(f(X, c(), X))
  , active(c()) -> mark(b())
  , 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(b()) -> ok(b())
  , proper(c()) -> ok(c()) }
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^#(X1, mark(X2), X3) -> c_4(f^#(X1, X2, X3))
  , 3: proper^#(f(X1, X2, X3)) ->
       c_6(f^#(proper(X1), proper(X2), proper(X3)),
           proper^#(X1),
           proper^#(X2),
           proper^#(X3))
  , 5: top^#(mark(X)) -> proper^#(X) }

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 6] x1 + [0]                               
                            [1 0]      [2]                               
                                                                         
          [f](x1, x2, x3) = [1 5] x1 + [2 0] x2 + [1 4] x3 + [7]         
                            [0 0]      [0 2]      [0 0]      [0]         
                                                                         
                      [b] = [2]                                          
                            [0]                                          
                                                                         
                      [c] = [2]                                          
                            [0]                                          
                                                                         
               [mark](x1) = [1 3] x1 + [0]                               
                            [0 0]      [1]                               
                                                                         
             [proper](x1) = [1 3] x1 + [0]                               
                            [0 0]      [0]                               
                                                                         
                 [ok](x1) = [1 6] x1 + [0]                               
                            [0 0]      [0]                               
                                                                         
           [active^#](x1) = [2 7] x1 + [1]                               
                            [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 + [4]                    
                            [1 0]      [0 1]      [1]                    
                                                                         
                [c_4](x1) = [1 0] x1 + [0]                               
                            [0 0]      [0]                               
                                                                         
                [c_5](x1) = [1 0] x1 + [0]                               
                            [0 0]      [0]                               
                                                                         
           [proper^#](x1) = [1 3] x1 + [0]                               
                            [0 0]      [0]                               
                                                                         
    [c_6](x1, x2, x3, x4) = [1 0] x1 + [1 0] x2 + [1 1] x3 + [1          
                                                              0] x4 + [0]
                            [0 0]      [0 0]      [0 0]      [0          
                                                              0]      [0]
                                                                         
              [top^#](x1) = [2 0] x1 + [1]                               
                            [2 0]      [4]                               
  
  The order satisfies the following ordering constraints:
  
          [active(f(X1, X2, X3))] =  [1 5] X1 + [2 12] X2 + [1 4] X3 + [7]        
                                     [1 5]      [2  0]      [1 4]      [9]        
                                  >= [1 5] X1 + [2 12] X2 + [1 4] X3 + [7]        
                                     [0 0]      [2  0]      [0 0]      [4]        
                                  =  [f(X1, active(X2), X3)]                      
                                                                                  
         [active(f(b(), X, c()))] =  [2 12] X + [11]                              
                                     [2  0]     [13]                              
                                  >= [2 9] X + [11]                               
                                     [0 0]     [1]                                
                                  =  [mark(f(X, c(), X))]                         
                                                                                  
                    [active(c())] =  [2]                                          
                                     [4]                                          
                                  >= [2]                                          
                                     [1]                                          
                                  =  [mark(b())]                                  
                                                                                  
            [f(X1, mark(X2), X3)] =  [1 5] X1 + [2 6] X2 + [1 4] X3 + [7]         
                                     [0 0]      [0 0]      [0 0]      [2]         
                                  >= [1 5] X1 + [2 6] X2 + [1 4] X3 + [7]         
                                     [0 0]      [0 0]      [0 0]      [1]         
                                  =  [mark(f(X1, X2, X3))]                        
                                                                                  
      [f(ok(X1), ok(X2), ok(X3))] =  [1 6] X1 + [2 12] X2 + [1 6] X3 + [7]        
                                     [0 0]      [0  0]      [0 0]      [0]        
                                  >= [1 5] X1 + [2 12] X2 + [1 4] X3 + [7]        
                                     [0 0]      [0  0]      [0 0]      [0]        
                                  =  [ok(f(X1, X2, X3))]                          
                                                                                  
          [proper(f(X1, X2, X3))] =  [1 5] X1 + [2 6] X2 + [1 4] X3 + [7]         
                                     [0 0]      [0 0]      [0 0]      [0]         
                                  >= [1 3] X1 + [2 6] X2 + [1 3] X3 + [7]         
                                     [0 0]      [0 0]      [0 0]      [0]         
                                  =  [f(proper(X1), proper(X2), proper(X3))]      
                                                                                  
                    [proper(b())] =  [2]                                          
                                     [0]                                          
                                  >= [2]                                          
                                     [0]                                          
                                  =  [ok(b())]                                    
                                                                                  
                    [proper(c())] =  [2]                                          
                                     [0]                                          
                                  >= [2]                                          
                                     [0]                                          
                                  =  [ok(c())]                                    
                                                                                  
        [active^#(f(X1, X2, X3))] =  [2 10] X1 + [4 14] X2 + [2 8] X3 + [15]      
                                     [0  0]      [0  2]      [0 0]      [0]       
                                  >  [4 14] X2 + [7]                              
                                     [0  0]      [0]                              
                                  =  [c_1(f^#(X1, active(X2), X3), active^#(X2))] 
                                                                                  
          [f^#(X1, mark(X2), X3)] =  [1 3] X2 + [0 0] X3 + [5]                    
                                     [1 3]      [0 1]      [1]                    
                                  >  [1 1] X2 + [4]                               
                                     [0 0]      [0]                               
                                  =  [c_4(f^#(X1, X2, X3))]                       
                                                                                  
    [f^#(ok(X1), ok(X2), ok(X3))] =  [1 6] X2 + [4]                               
                                     [1 6]      [1]                               
                                  >= [1 1] X2 + [4]                               
                                     [0 0]      [0]                               
                                  =  [c_5(f^#(X1, X2, X3))]                       
                                                                                  
        [proper^#(f(X1, X2, X3))] =  [1 5] X1 + [2 6] X2 + [1 4] X3 + [7]         
                                     [0 0]      [0 0]      [0 0]      [0]         
                                  >  [1 3] X1 + [2 6] X2 + [1 3] X3 + [4]         
                                     [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))] =  [2 6] X + [1]                                
                                     [2 6]     [4]                                
                                  >  [1 3] X + [0]                                
                                     [0 0]     [0]                                
                                  =  [proper^#(X)]                                
                                                                                  
                 [top^#(mark(X))] =  [2 6] X + [1]                                
                                     [2 6]     [4]                                
                                  >= [2 6] X + [1]                                
                                     [2 6]     [4]                                
                                  =  [top^#(proper(X))]                           
                                                                                  
                   [top^#(ok(X))] =  [2 12] X + [1]                               
                                     [2 12]     [4]                               
                                  >= [2 7] X + [1]                                
                                     [0 1]     [0]                                
                                  =  [active^#(X)]                                
                                                                                  
                   [top^#(ok(X))] =  [2 12] X + [1]                               
                                     [2 12]     [4]                               
                                  >= [2 12] X + [1]                               
                                     [2 12]     [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:
  { 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)) -> 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(b(), X, c())) -> mark(f(X, c(), X))
  , active(c()) -> mark(b())
  , 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(b()) -> ok(b())
  , proper(c()) -> ok(c()) }
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.

{ 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)) -> proper^#(X)
, top^#(mark(X)) -> top^#(proper(X))
, top^#(ok(X)) -> active^#(X)
, top^#(ok(X)) -> 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(b(), X, c())) -> mark(f(X, c(), X))
  , active(c()) -> mark(b())
  , 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(b()) -> ok(b())
  , proper(c()) -> ok(c()) }
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))