*** 1 Progress [(?,O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        active(f(X1,X2)) -> f(active(X1),X2)
        active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
        active(g(X)) -> g(active(X))
        f(mark(X1),X2) -> mark(f(X1,X2))
        f(ok(X1),ok(X2)) -> ok(f(X1,X2))
        g(mark(X)) -> mark(g(X))
        g(ok(X)) -> ok(g(X))
        proper(f(X1,X2)) -> f(proper(X1),proper(X2))
        proper(g(X)) -> g(proper(X))
        top(mark(X)) -> top(proper(X))
        top(ok(X)) -> top(active(X))
      Weak DP Rules:
        
      Weak TRS Rules:
        
      Signature:
        {active/1,f/2,g/1,proper/1,top/1} / {mark/1,ok/1}
      Obligation:
        Innermost
        basic terms: {active,f,g,proper,top}/{mark,ok}
    Applied Processor:
      DependencyPairs {dpKind_ = DT}
    Proof:
      We add the following dependency tuples:
      
      Strict DPs
        active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1))
        active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X))
        active#(g(X)) -> c_3(g#(active(X)),active#(X))
        f#(mark(X1),X2) -> c_4(f#(X1,X2))
        f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2))
        g#(mark(X)) -> c_6(g#(X))
        g#(ok(X)) -> c_7(g#(X))
        proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
        proper#(g(X)) -> c_9(g#(proper(X)),proper#(X))
        top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
        top#(ok(X)) -> c_11(top#(active(X)),active#(X))
      Weak DPs
        
      
      and mark the set of starting terms.
*** 1.1 Progress [(?,O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1))
        active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X))
        active#(g(X)) -> c_3(g#(active(X)),active#(X))
        f#(mark(X1),X2) -> c_4(f#(X1,X2))
        f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2))
        g#(mark(X)) -> c_6(g#(X))
        g#(ok(X)) -> c_7(g#(X))
        proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
        proper#(g(X)) -> c_9(g#(proper(X)),proper#(X))
        top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
        top#(ok(X)) -> c_11(top#(active(X)),active#(X))
      Strict TRS Rules:
        
      Weak DP Rules:
        
      Weak TRS Rules:
        active(f(X1,X2)) -> f(active(X1),X2)
        active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
        active(g(X)) -> g(active(X))
        f(mark(X1),X2) -> mark(f(X1,X2))
        f(ok(X1),ok(X2)) -> ok(f(X1,X2))
        g(mark(X)) -> mark(g(X))
        g(ok(X)) -> ok(g(X))
        proper(f(X1,X2)) -> f(proper(X1),proper(X2))
        proper(g(X)) -> g(proper(X))
        top(mark(X)) -> top(proper(X))
        top(ok(X)) -> top(active(X))
      Signature:
        {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2}
      Obligation:
        Innermost
        basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
    Applied Processor:
      UsableRules
    Proof:
      We replace rewrite rules by usable rules:
        active(f(X1,X2)) -> f(active(X1),X2)
        active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
        active(g(X)) -> g(active(X))
        f(mark(X1),X2) -> mark(f(X1,X2))
        f(ok(X1),ok(X2)) -> ok(f(X1,X2))
        g(mark(X)) -> mark(g(X))
        g(ok(X)) -> ok(g(X))
        proper(f(X1,X2)) -> f(proper(X1),proper(X2))
        proper(g(X)) -> g(proper(X))
        active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1))
        active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X))
        active#(g(X)) -> c_3(g#(active(X)),active#(X))
        f#(mark(X1),X2) -> c_4(f#(X1,X2))
        f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2))
        g#(mark(X)) -> c_6(g#(X))
        g#(ok(X)) -> c_7(g#(X))
        proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
        proper#(g(X)) -> c_9(g#(proper(X)),proper#(X))
        top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
        top#(ok(X)) -> c_11(top#(active(X)),active#(X))
*** 1.1.1 Progress [(?,O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1))
        active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X))
        active#(g(X)) -> c_3(g#(active(X)),active#(X))
        f#(mark(X1),X2) -> c_4(f#(X1,X2))
        f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2))
        g#(mark(X)) -> c_6(g#(X))
        g#(ok(X)) -> c_7(g#(X))
        proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
        proper#(g(X)) -> c_9(g#(proper(X)),proper#(X))
        top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
        top#(ok(X)) -> c_11(top#(active(X)),active#(X))
      Strict TRS Rules:
        
      Weak DP Rules:
        
      Weak TRS Rules:
        active(f(X1,X2)) -> f(active(X1),X2)
        active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
        active(g(X)) -> g(active(X))
        f(mark(X1),X2) -> mark(f(X1,X2))
        f(ok(X1),ok(X2)) -> ok(f(X1,X2))
        g(mark(X)) -> mark(g(X))
        g(ok(X)) -> ok(g(X))
        proper(f(X1,X2)) -> f(proper(X1),proper(X2))
        proper(g(X)) -> g(proper(X))
      Signature:
        {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2}
      Obligation:
        Innermost
        basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
    Applied Processor:
      Decompose {onSelection = all cycle independent sub-graph, withBound = RelativeAdd}
    Proof:
      We analyse the complexity of following sub-problems (R) and (S).
      Problem (S) is obtained from the input problem by shifting strict rules from (R) into the weak component.
      
      Problem (R)
        Strict DP Rules:
          active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1))
          active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X))
          active#(g(X)) -> c_3(g#(active(X)),active#(X))
          f#(mark(X1),X2) -> c_4(f#(X1,X2))
          f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2))
          g#(mark(X)) -> c_6(g#(X))
          g#(ok(X)) -> c_7(g#(X))
        Strict TRS Rules:
          
        Weak DP Rules:
          proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
          proper#(g(X)) -> c_9(g#(proper(X)),proper#(X))
          top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
          top#(ok(X)) -> c_11(top#(active(X)),active#(X))
        Weak TRS Rules:
          active(f(X1,X2)) -> f(active(X1),X2)
          active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
          active(g(X)) -> g(active(X))
          f(mark(X1),X2) -> mark(f(X1,X2))
          f(ok(X1),ok(X2)) -> ok(f(X1,X2))
          g(mark(X)) -> mark(g(X))
          g(ok(X)) -> ok(g(X))
          proper(f(X1,X2)) -> f(proper(X1),proper(X2))
          proper(g(X)) -> g(proper(X))
        Signature:
          {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2}
        Obligation:
          Innermost
          basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
      
      Problem (S)
        Strict DP Rules:
          proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
          proper#(g(X)) -> c_9(g#(proper(X)),proper#(X))
          top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
          top#(ok(X)) -> c_11(top#(active(X)),active#(X))
        Strict TRS Rules:
          
        Weak DP Rules:
          active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1))
          active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X))
          active#(g(X)) -> c_3(g#(active(X)),active#(X))
          f#(mark(X1),X2) -> c_4(f#(X1,X2))
          f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2))
          g#(mark(X)) -> c_6(g#(X))
          g#(ok(X)) -> c_7(g#(X))
        Weak TRS Rules:
          active(f(X1,X2)) -> f(active(X1),X2)
          active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
          active(g(X)) -> g(active(X))
          f(mark(X1),X2) -> mark(f(X1,X2))
          f(ok(X1),ok(X2)) -> ok(f(X1,X2))
          g(mark(X)) -> mark(g(X))
          g(ok(X)) -> ok(g(X))
          proper(f(X1,X2)) -> f(proper(X1),proper(X2))
          proper(g(X)) -> g(proper(X))
        Signature:
          {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2}
        Obligation:
          Innermost
          basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
  *** 1.1.1.1 Progress [(?,O(n^1))]  ***
      Considered Problem:
        Strict DP Rules:
          active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1))
          active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X))
          active#(g(X)) -> c_3(g#(active(X)),active#(X))
          f#(mark(X1),X2) -> c_4(f#(X1,X2))
          f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2))
          g#(mark(X)) -> c_6(g#(X))
          g#(ok(X)) -> c_7(g#(X))
        Strict TRS Rules:
          
        Weak DP Rules:
          proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
          proper#(g(X)) -> c_9(g#(proper(X)),proper#(X))
          top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
          top#(ok(X)) -> c_11(top#(active(X)),active#(X))
        Weak TRS Rules:
          active(f(X1,X2)) -> f(active(X1),X2)
          active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
          active(g(X)) -> g(active(X))
          f(mark(X1),X2) -> mark(f(X1,X2))
          f(ok(X1),ok(X2)) -> ok(f(X1,X2))
          g(mark(X)) -> mark(g(X))
          g(ok(X)) -> ok(g(X))
          proper(f(X1,X2)) -> f(proper(X1),proper(X2))
          proper(g(X)) -> g(proper(X))
        Signature:
          {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2}
        Obligation:
          Innermost
          basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
      Applied Processor:
        PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy}}
      Proof:
        We first use the processor NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy} to orient following rules strictly:
          7: g#(ok(X)) -> c_7(g#(X))
          
        The strictly oriented rules are moved into the weak component.
    *** 1.1.1.1.1 Progress [(?,O(n^1))]  ***
        Considered Problem:
          Strict DP Rules:
            active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1))
            active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X))
            active#(g(X)) -> c_3(g#(active(X)),active#(X))
            f#(mark(X1),X2) -> c_4(f#(X1,X2))
            f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2))
            g#(mark(X)) -> c_6(g#(X))
            g#(ok(X)) -> c_7(g#(X))
          Strict TRS Rules:
            
          Weak DP Rules:
            proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
            proper#(g(X)) -> c_9(g#(proper(X)),proper#(X))
            top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
            top#(ok(X)) -> c_11(top#(active(X)),active#(X))
          Weak TRS Rules:
            active(f(X1,X2)) -> f(active(X1),X2)
            active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
            active(g(X)) -> g(active(X))
            f(mark(X1),X2) -> mark(f(X1,X2))
            f(ok(X1),ok(X2)) -> ok(f(X1,X2))
            g(mark(X)) -> mark(g(X))
            g(ok(X)) -> ok(g(X))
            proper(f(X1,X2)) -> f(proper(X1),proper(X2))
            proper(g(X)) -> g(proper(X))
          Signature:
            {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2}
          Obligation:
            Innermost
            basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
        Applied Processor:
          NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation any intersect of rules of CDG leaf and strict-rules, greedy = NoGreedy}
        Proof:
          We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 1 non-zero interpretation-entries in the diagonal of the component-wise maxima):
          The following argument positions are considered usable:
            uargs(c_1) = {1,2},
            uargs(c_2) = {1,3},
            uargs(c_3) = {1,2},
            uargs(c_4) = {1},
            uargs(c_5) = {1},
            uargs(c_6) = {1},
            uargs(c_7) = {1},
            uargs(c_8) = {1,2,3},
            uargs(c_9) = {1,2},
            uargs(c_10) = {1,2},
            uargs(c_11) = {1,2}
          
          Following symbols are considered usable:
            {active,f,g,proper,active#,f#,g#,proper#,top#}
          TcT has computed the following interpretation:
             p(active) = [0 0] x1 + [0]           
                         [0 1]      [0]           
                  p(f) = [2 0] x1 + [0]           
                         [0 1]      [0]           
                  p(g) = [2 0] x1 + [0]           
                         [0 2]      [0]           
               p(mark) = [0 0] x1 + [0]           
                         [0 1]      [0]           
                 p(ok) = [0 2] x1 + [0]           
                         [0 1]      [2]           
             p(proper) = [0]                      
                         [0]                      
                p(top) = [0 1] x1 + [0]           
                         [0 0]      [1]           
            p(active#) = [0 2] x1 + [0]           
                         [0 1]      [0]           
                 p(f#) = [0 0] x1 + [0]           
                         [0 1]      [0]           
                 p(g#) = [0 1] x1 + [0]           
                         [1 0]      [0]           
            p(proper#) = [0]                      
                         [2]                      
               p(top#) = [1 0] x1 + [2]           
                         [1 1]      [3]           
                p(c_1) = [2 0] x1 + [1 0] x2 + [0]
                         [0 1]      [0 0]      [0]
                p(c_2) = [1 2] x1 + [0 0] x2 + [2 
                         0] x3 + [0]              
                         [0 1]      [1 0]      [1 
                         0]      [0]              
                p(c_3) = [1 1] x1 + [1 1] x2 + [0]
                         [0 0]      [1 0]      [0]
                p(c_4) = [2 0] x1 + [0]           
                         [1 0]      [0]           
                p(c_5) = [1 0] x1 + [0]           
                         [0 1]      [0]           
                p(c_6) = [1 0] x1 + [0]           
                         [0 0]      [0]           
                p(c_7) = [1 0] x1 + [0]           
                         [1 0]      [0]           
                p(c_8) = [2 0] x1 + [2 0] x2 + [2 
                         0] x3 + [0]              
                         [2 1]      [0 0]      [0 
                         0]      [1]              
                p(c_9) = [1 1] x1 + [2 0] x2 + [0]
                         [2 1]      [0 0]      [2]
               p(c_10) = [1 0] x1 + [1 0] x2 + [0]
                         [1 0]      [0 0]      [1]
               p(c_11) = [1 0] x1 + [1 0] x2 + [0]
                         [0 1]      [1 0]      [0]
          
          Following rules are strictly oriented:
          g#(ok(X)) = [0 1] X + [2]
                      [0 2]     [0]
                    > [0 1] X + [0]
                      [0 1]     [0]
                    = c_7(g#(X))   
          
          
          Following rules are (at-least) weakly oriented:
           active#(f(X1,X2)) =  [0 2] X1 + [0]                  
                                [0 1]      [0]                  
                             >= [0 2] X1 + [0]                  
                                [0 1]      [0]                  
                             =  c_1(f#(active(X1),X2)           
                                   ,active#(X1))                
          
          active#(f(g(X),Y)) =  [0 4] X + [0]                   
                                [0 2]     [0]                   
                             >= [0 4] X + [0]                   
                                [0 2]     [0]                   
                             =  c_2(f#(X,f(g(X),Y))             
                                   ,f#(g(X),Y)                  
                                   ,g#(X))                      
          
               active#(g(X)) =  [0 4] X + [0]                   
                                [0 2]     [0]                   
                             >= [0 4] X + [0]                   
                                [0 2]     [0]                   
                             =  c_3(g#(active(X)),active#(X))   
          
             f#(mark(X1),X2) =  [0 0] X1 + [0]                  
                                [0 1]      [0]                  
                             >= [0]                             
                                [0]                             
                             =  c_4(f#(X1,X2))                  
          
           f#(ok(X1),ok(X2)) =  [0 0] X1 + [0]                  
                                [0 1]      [2]                  
                             >= [0 0] X1 + [0]                  
                                [0 1]      [0]                  
                             =  c_5(f#(X1,X2))                  
          
                 g#(mark(X)) =  [0 1] X + [0]                   
                                [0 0]     [0]                   
                             >= [0 1] X + [0]                   
                                [0 0]     [0]                   
                             =  c_6(g#(X))                      
          
           proper#(f(X1,X2)) =  [0]                             
                                [2]                             
                             >= [0]                             
                                [1]                             
                             =  c_8(f#(proper(X1),proper(X2))   
                                   ,proper#(X1)                 
                                   ,proper#(X2))                
          
               proper#(g(X)) =  [0]                             
                                [2]                             
                             >= [0]                             
                                [2]                             
                             =  c_9(g#(proper(X)),proper#(X))   
          
               top#(mark(X)) =  [0 0] X + [2]                   
                                [0 1]     [3]                   
                             >= [2]                             
                                [3]                             
                             =  c_10(top#(proper(X)),proper#(X))
          
                 top#(ok(X)) =  [0 2] X + [2]                   
                                [0 3]     [5]                   
                             >= [0 2] X + [2]                   
                                [0 3]     [3]                   
                             =  c_11(top#(active(X)),active#(X))
          
            active(f(X1,X2)) =  [0 0] X1 + [0]                  
                                [0 1]      [0]                  
                             >= [0 0] X1 + [0]                  
                                [0 1]      [0]                  
                             =  f(active(X1),X2)                
          
           active(f(g(X),Y)) =  [0 0] X + [0]                   
                                [0 2]     [0]                   
                             >= [0 0] X + [0]                   
                                [0 1]     [0]                   
                             =  mark(f(X,f(g(X),Y)))            
          
                active(g(X)) =  [0 0] X + [0]                   
                                [0 2]     [0]                   
                             >= [0 0] X + [0]                   
                                [0 2]     [0]                   
                             =  g(active(X))                    
          
              f(mark(X1),X2) =  [0 0] X1 + [0]                  
                                [0 1]      [0]                  
                             >= [0 0] X1 + [0]                  
                                [0 1]      [0]                  
                             =  mark(f(X1,X2))                  
          
            f(ok(X1),ok(X2)) =  [0 4] X1 + [0]                  
                                [0 1]      [2]                  
                             >= [0 2] X1 + [0]                  
                                [0 1]      [2]                  
                             =  ok(f(X1,X2))                    
          
                  g(mark(X)) =  [0 0] X + [0]                   
                                [0 2]     [0]                   
                             >= [0 0] X + [0]                   
                                [0 2]     [0]                   
                             =  mark(g(X))                      
          
                    g(ok(X)) =  [0 4] X + [0]                   
                                [0 2]     [4]                   
                             >= [0 4] X + [0]                   
                                [0 2]     [2]                   
                             =  ok(g(X))                        
          
            proper(f(X1,X2)) =  [0]                             
                                [0]                             
                             >= [0]                             
                                [0]                             
                             =  f(proper(X1),proper(X2))        
          
                proper(g(X)) =  [0]                             
                                [0]                             
                             >= [0]                             
                                [0]                             
                             =  g(proper(X))                    
          
    *** 1.1.1.1.1.1 Progress [(?,O(1))]  ***
        Considered Problem:
          Strict DP Rules:
            active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1))
            active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X))
            active#(g(X)) -> c_3(g#(active(X)),active#(X))
            f#(mark(X1),X2) -> c_4(f#(X1,X2))
            f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2))
            g#(mark(X)) -> c_6(g#(X))
          Strict TRS Rules:
            
          Weak DP Rules:
            g#(ok(X)) -> c_7(g#(X))
            proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
            proper#(g(X)) -> c_9(g#(proper(X)),proper#(X))
            top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
            top#(ok(X)) -> c_11(top#(active(X)),active#(X))
          Weak TRS Rules:
            active(f(X1,X2)) -> f(active(X1),X2)
            active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
            active(g(X)) -> g(active(X))
            f(mark(X1),X2) -> mark(f(X1,X2))
            f(ok(X1),ok(X2)) -> ok(f(X1,X2))
            g(mark(X)) -> mark(g(X))
            g(ok(X)) -> ok(g(X))
            proper(f(X1,X2)) -> f(proper(X1),proper(X2))
            proper(g(X)) -> g(proper(X))
          Signature:
            {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2}
          Obligation:
            Innermost
            basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
        Applied Processor:
          Assumption
        Proof:
          ()
    
    *** 1.1.1.1.2 Progress [(?,O(n^1))]  ***
        Considered Problem:
          Strict DP Rules:
            active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1))
            active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X))
            active#(g(X)) -> c_3(g#(active(X)),active#(X))
            f#(mark(X1),X2) -> c_4(f#(X1,X2))
            f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2))
            g#(mark(X)) -> c_6(g#(X))
          Strict TRS Rules:
            
          Weak DP Rules:
            g#(ok(X)) -> c_7(g#(X))
            proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
            proper#(g(X)) -> c_9(g#(proper(X)),proper#(X))
            top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
            top#(ok(X)) -> c_11(top#(active(X)),active#(X))
          Weak TRS Rules:
            active(f(X1,X2)) -> f(active(X1),X2)
            active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
            active(g(X)) -> g(active(X))
            f(mark(X1),X2) -> mark(f(X1,X2))
            f(ok(X1),ok(X2)) -> ok(f(X1,X2))
            g(mark(X)) -> mark(g(X))
            g(ok(X)) -> ok(g(X))
            proper(f(X1,X2)) -> f(proper(X1),proper(X2))
            proper(g(X)) -> g(proper(X))
          Signature:
            {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2}
          Obligation:
            Innermost
            basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
        Applied Processor:
          PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy}}
        Proof:
          We first use the processor NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy} to orient following rules strictly:
            5: f#(ok(X1),ok(X2)) -> c_5(f#(X1  
                                          ,X2))
            
          The strictly oriented rules are moved into the weak component.
      *** 1.1.1.1.2.1 Progress [(?,O(n^1))]  ***
          Considered Problem:
            Strict DP Rules:
              active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1))
              active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X))
              active#(g(X)) -> c_3(g#(active(X)),active#(X))
              f#(mark(X1),X2) -> c_4(f#(X1,X2))
              f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2))
              g#(mark(X)) -> c_6(g#(X))
            Strict TRS Rules:
              
            Weak DP Rules:
              g#(ok(X)) -> c_7(g#(X))
              proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
              proper#(g(X)) -> c_9(g#(proper(X)),proper#(X))
              top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
              top#(ok(X)) -> c_11(top#(active(X)),active#(X))
            Weak TRS Rules:
              active(f(X1,X2)) -> f(active(X1),X2)
              active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
              active(g(X)) -> g(active(X))
              f(mark(X1),X2) -> mark(f(X1,X2))
              f(ok(X1),ok(X2)) -> ok(f(X1,X2))
              g(mark(X)) -> mark(g(X))
              g(ok(X)) -> ok(g(X))
              proper(f(X1,X2)) -> f(proper(X1),proper(X2))
              proper(g(X)) -> g(proper(X))
            Signature:
              {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2}
            Obligation:
              Innermost
              basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
          Applied Processor:
            NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation any intersect of rules of CDG leaf and strict-rules, greedy = NoGreedy}
          Proof:
            We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 1 non-zero interpretation-entries in the diagonal of the component-wise maxima):
            The following argument positions are considered usable:
              uargs(c_1) = {1,2},
              uargs(c_2) = {1,3},
              uargs(c_3) = {1,2},
              uargs(c_4) = {1},
              uargs(c_5) = {1},
              uargs(c_6) = {1},
              uargs(c_7) = {1},
              uargs(c_8) = {1,2,3},
              uargs(c_9) = {1,2},
              uargs(c_10) = {1,2},
              uargs(c_11) = {1,2}
            
            Following symbols are considered usable:
              {active,f,g,proper,active#,f#,g#,proper#,top#}
            TcT has computed the following interpretation:
               p(active) = [0 0] x1 + [0]           
                           [0 2]      [0]           
                    p(f) = [2 0] x1 + [0]           
                           [0 2]      [0]           
                    p(g) = [2 0] x1 + [0]           
                           [0 1]      [0]           
                 p(mark) = [0 0] x1 + [0]           
                           [0 1]      [0]           
                   p(ok) = [0 1] x1 + [2]           
                           [0 1]      [2]           
               p(proper) = [0]                      
                           [0]                      
                  p(top) = [2 2] x1 + [2]           
                           [2 0]      [1]           
              p(active#) = [0 2] x1 + [0]           
                           [0 0]      [2]           
                   p(f#) = [0 1] x1 + [0]           
                           [0 3]      [0]           
                   p(g#) = [0 0] x1 + [0]           
                           [0 1]      [0]           
              p(proper#) = [0]                      
                           [0]                      
                 p(top#) = [2 0] x1 + [0]           
                           [0 0]      [1]           
                  p(c_1) = [1 0] x1 + [1 0] x2 + [0]
                           [0 0]      [0 0]      [0]
                  p(c_2) = [1 0] x1 + [0 1] x2 + [2 
                           0] x3 + [0]              
                           [0 0]      [0 0]      [0 
                           0]      [0]              
                  p(c_3) = [2 0] x1 + [1 0] x2 + [0]
                           [0 0]      [0 1]      [0]
                  p(c_4) = [1 0] x1 + [0]           
                           [0 0]      [0]           
                  p(c_5) = [1 0] x1 + [0]           
                           [2 0]      [0]           
                  p(c_6) = [2 0] x1 + [0]           
                           [0 0]      [0]           
                  p(c_7) = [2 0] x1 + [0]           
                           [0 0]      [0]           
                  p(c_8) = [2 0] x1 + [2 0] x2 + [2 
                           0] x3 + [0]              
                           [0 0]      [0 1]      [0 
                           0]      [0]              
                  p(c_9) = [2 0] x1 + [1 0] x2 + [0]
                           [0 0]      [1 0]      [0]
                 p(c_10) = [2 0] x1 + [1 0] x2 + [0]
                           [0 1]      [1 0]      [0]
                 p(c_11) = [1 0] x1 + [1 2] x2 + [0]
                           [0 1]      [0 0]      [0]
            
            Following rules are strictly oriented:
            f#(ok(X1),ok(X2)) = [0 1] X1 + [2]
                                [0 3]      [6]
                              > [0 1] X1 + [0]
                                [0 2]      [0]
                              = c_5(f#(X1,X2))
            
            
            Following rules are (at-least) weakly oriented:
             active#(f(X1,X2)) =  [0 4] X1 + [0]                  
                                  [0 0]      [2]                  
                               >= [0 4] X1 + [0]                  
                                  [0 0]      [0]                  
                               =  c_1(f#(active(X1),X2)           
                                     ,active#(X1))                
            
            active#(f(g(X),Y)) =  [0 4] X + [0]                   
                                  [0 0]     [2]                   
                               >= [0 4] X + [0]                   
                                  [0 0]     [0]                   
                               =  c_2(f#(X,f(g(X),Y))             
                                     ,f#(g(X),Y)                  
                                     ,g#(X))                      
            
                 active#(g(X)) =  [0 2] X + [0]                   
                                  [0 0]     [2]                   
                               >= [0 2] X + [0]                   
                                  [0 0]     [2]                   
                               =  c_3(g#(active(X)),active#(X))   
            
               f#(mark(X1),X2) =  [0 1] X1 + [0]                  
                                  [0 3]      [0]                  
                               >= [0 1] X1 + [0]                  
                                  [0 0]      [0]                  
                               =  c_4(f#(X1,X2))                  
            
                   g#(mark(X)) =  [0 0] X + [0]                   
                                  [0 1]     [0]                   
                               >= [0]                             
                                  [0]                             
                               =  c_6(g#(X))                      
            
                     g#(ok(X)) =  [0 0] X + [0]                   
                                  [0 1]     [2]                   
                               >= [0]                             
                                  [0]                             
                               =  c_7(g#(X))                      
            
             proper#(f(X1,X2)) =  [0]                             
                                  [0]                             
                               >= [0]                             
                                  [0]                             
                               =  c_8(f#(proper(X1),proper(X2))   
                                     ,proper#(X1)                 
                                     ,proper#(X2))                
            
                 proper#(g(X)) =  [0]                             
                                  [0]                             
                               >= [0]                             
                                  [0]                             
                               =  c_9(g#(proper(X)),proper#(X))   
            
                 top#(mark(X)) =  [0]                             
                                  [1]                             
                               >= [0]                             
                                  [1]                             
                               =  c_10(top#(proper(X)),proper#(X))
            
                   top#(ok(X)) =  [0 2] X + [4]                   
                                  [0 0]     [1]                   
                               >= [0 2] X + [4]                   
                                  [0 0]     [1]                   
                               =  c_11(top#(active(X)),active#(X))
            
              active(f(X1,X2)) =  [0 0] X1 + [0]                  
                                  [0 4]      [0]                  
                               >= [0 0] X1 + [0]                  
                                  [0 4]      [0]                  
                               =  f(active(X1),X2)                
            
             active(f(g(X),Y)) =  [0 0] X + [0]                   
                                  [0 4]     [0]                   
                               >= [0 0] X + [0]                   
                                  [0 2]     [0]                   
                               =  mark(f(X,f(g(X),Y)))            
            
                  active(g(X)) =  [0 0] X + [0]                   
                                  [0 2]     [0]                   
                               >= [0 0] X + [0]                   
                                  [0 2]     [0]                   
                               =  g(active(X))                    
            
                f(mark(X1),X2) =  [0 0] X1 + [0]                  
                                  [0 2]      [0]                  
                               >= [0 0] X1 + [0]                  
                                  [0 2]      [0]                  
                               =  mark(f(X1,X2))                  
            
              f(ok(X1),ok(X2)) =  [0 2] X1 + [4]                  
                                  [0 2]      [4]                  
                               >= [0 2] X1 + [2]                  
                                  [0 2]      [2]                  
                               =  ok(f(X1,X2))                    
            
                    g(mark(X)) =  [0 0] X + [0]                   
                                  [0 1]     [0]                   
                               >= [0 0] X + [0]                   
                                  [0 1]     [0]                   
                               =  mark(g(X))                      
            
                      g(ok(X)) =  [0 2] X + [4]                   
                                  [0 1]     [2]                   
                               >= [0 1] X + [2]                   
                                  [0 1]     [2]                   
                               =  ok(g(X))                        
            
              proper(f(X1,X2)) =  [0]                             
                                  [0]                             
                               >= [0]                             
                                  [0]                             
                               =  f(proper(X1),proper(X2))        
            
                  proper(g(X)) =  [0]                             
                                  [0]                             
                               >= [0]                             
                                  [0]                             
                               =  g(proper(X))                    
            
      *** 1.1.1.1.2.1.1 Progress [(?,O(1))]  ***
          Considered Problem:
            Strict DP Rules:
              active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1))
              active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X))
              active#(g(X)) -> c_3(g#(active(X)),active#(X))
              f#(mark(X1),X2) -> c_4(f#(X1,X2))
              g#(mark(X)) -> c_6(g#(X))
            Strict TRS Rules:
              
            Weak DP Rules:
              f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2))
              g#(ok(X)) -> c_7(g#(X))
              proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
              proper#(g(X)) -> c_9(g#(proper(X)),proper#(X))
              top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
              top#(ok(X)) -> c_11(top#(active(X)),active#(X))
            Weak TRS Rules:
              active(f(X1,X2)) -> f(active(X1),X2)
              active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
              active(g(X)) -> g(active(X))
              f(mark(X1),X2) -> mark(f(X1,X2))
              f(ok(X1),ok(X2)) -> ok(f(X1,X2))
              g(mark(X)) -> mark(g(X))
              g(ok(X)) -> ok(g(X))
              proper(f(X1,X2)) -> f(proper(X1),proper(X2))
              proper(g(X)) -> g(proper(X))
            Signature:
              {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2}
            Obligation:
              Innermost
              basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
          Applied Processor:
            Assumption
          Proof:
            ()
      
      *** 1.1.1.1.2.2 Progress [(?,O(n^1))]  ***
          Considered Problem:
            Strict DP Rules:
              active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1))
              active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X))
              active#(g(X)) -> c_3(g#(active(X)),active#(X))
              f#(mark(X1),X2) -> c_4(f#(X1,X2))
              g#(mark(X)) -> c_6(g#(X))
            Strict TRS Rules:
              
            Weak DP Rules:
              f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2))
              g#(ok(X)) -> c_7(g#(X))
              proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
              proper#(g(X)) -> c_9(g#(proper(X)),proper#(X))
              top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
              top#(ok(X)) -> c_11(top#(active(X)),active#(X))
            Weak TRS Rules:
              active(f(X1,X2)) -> f(active(X1),X2)
              active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
              active(g(X)) -> g(active(X))
              f(mark(X1),X2) -> mark(f(X1,X2))
              f(ok(X1),ok(X2)) -> ok(f(X1,X2))
              g(mark(X)) -> mark(g(X))
              g(ok(X)) -> ok(g(X))
              proper(f(X1,X2)) -> f(proper(X1),proper(X2))
              proper(g(X)) -> g(proper(X))
            Signature:
              {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2}
            Obligation:
              Innermost
              basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
          Applied Processor:
            DecomposeDG {onSelection = all below first cut in WDG, onUpper = Just someStrategy, onLower = Nothing}
          Proof:
            We decompose the input problem according to the dependency graph into the upper component
              top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
              top#(ok(X)) -> c_11(top#(active(X)),active#(X))
            and a lower component
              active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1))
              active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X))
              active#(g(X)) -> c_3(g#(active(X)),active#(X))
              f#(mark(X1),X2) -> c_4(f#(X1,X2))
              f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2))
              g#(mark(X)) -> c_6(g#(X))
              g#(ok(X)) -> c_7(g#(X))
              proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
              proper#(g(X)) -> c_9(g#(proper(X)),proper#(X))
            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))
        *** 1.1.1.1.2.2.1 Progress [(?,O(1))]  ***
            Considered Problem:
              Strict DP Rules:
                top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
                top#(ok(X)) -> c_11(top#(active(X)),active#(X))
              Strict TRS Rules:
                
              Weak DP Rules:
                
              Weak TRS Rules:
                active(f(X1,X2)) -> f(active(X1),X2)
                active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                active(g(X)) -> g(active(X))
                f(mark(X1),X2) -> mark(f(X1,X2))
                f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                g(mark(X)) -> mark(g(X))
                g(ok(X)) -> ok(g(X))
                proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                proper(g(X)) -> g(proper(X))
              Signature:
                {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2}
              Obligation:
                Innermost
                basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
            Applied Processor:
              PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy}}
            Proof:
              We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy} to orient following rules strictly:
                2: top#(ok(X)) ->                    
                     c_11(top#(active(X)),active#(X))
                
              The strictly oriented rules are moved into the weak component.
          *** 1.1.1.1.2.2.1.1 Progress [(?,O(1))]  ***
              Considered Problem:
                Strict DP Rules:
                  top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
                  top#(ok(X)) -> c_11(top#(active(X)),active#(X))
                Strict TRS Rules:
                  
                Weak DP Rules:
                  
                Weak TRS Rules:
                  active(f(X1,X2)) -> f(active(X1),X2)
                  active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                  active(g(X)) -> g(active(X))
                  f(mark(X1),X2) -> mark(f(X1,X2))
                  f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                  g(mark(X)) -> mark(g(X))
                  g(ok(X)) -> ok(g(X))
                  proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                  proper(g(X)) -> g(proper(X))
                Signature:
                  {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2}
                Obligation:
                  Innermost
                  basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
              Applied Processor:
                NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation any intersect of rules of CDG leaf and strict-rules, greedy = NoGreedy}
              Proof:
                We apply a matrix interpretation of kind constructor based matrix interpretation:
                The following argument positions are considered usable:
                  uargs(c_10) = {1},
                  uargs(c_11) = {1}
                
                Following symbols are considered usable:
                  {active,f,g,proper,active#,f#,g#,proper#,top#}
                TcT has computed the following interpretation:
                   p(active) = [1]                  
                        p(f) = [1] x1 + [0]         
                        p(g) = [1] x1 + [0]         
                     p(mark) = [1]                  
                       p(ok) = [2]                  
                   p(proper) = [0]                  
                      p(top) = [4] x1 + [1]         
                  p(active#) = [2]                  
                       p(f#) = [0]                  
                       p(g#) = [2] x1 + [1]         
                  p(proper#) = [1]                  
                     p(top#) = [8] x1 + [1]         
                      p(c_1) = [1] x1 + [4] x2 + [4]
                      p(c_2) = [2] x3 + [2]         
                      p(c_3) = [1] x1 + [1] x2 + [0]
                      p(c_4) = [1]                  
                      p(c_5) = [1] x1 + [1]         
                      p(c_6) = [4] x1 + [1]         
                      p(c_7) = [4] x1 + [1]         
                      p(c_8) = [8] x1 + [2] x2 + [1]
                      p(c_9) = [1] x1 + [1] x2 + [8]
                     p(c_10) = [8] x1 + [1] x2 + [0]
                     p(c_11) = [1] x1 + [0]         
                
                Following rules are strictly oriented:
                top#(ok(X)) = [17]                            
                            > [9]                             
                            = c_11(top#(active(X)),active#(X))
                
                
                Following rules are (at-least) weakly oriented:
                    top#(mark(X)) =  [9]                             
                                  >= [9]                             
                                  =  c_10(top#(proper(X)),proper#(X))
                
                 active(f(X1,X2)) =  [1]                             
                                  >= [1]                             
                                  =  f(active(X1),X2)                
                
                active(f(g(X),Y)) =  [1]                             
                                  >= [1]                             
                                  =  mark(f(X,f(g(X),Y)))            
                
                     active(g(X)) =  [1]                             
                                  >= [1]                             
                                  =  g(active(X))                    
                
                   f(mark(X1),X2) =  [1]                             
                                  >= [1]                             
                                  =  mark(f(X1,X2))                  
                
                 f(ok(X1),ok(X2)) =  [2]                             
                                  >= [2]                             
                                  =  ok(f(X1,X2))                    
                
                       g(mark(X)) =  [1]                             
                                  >= [1]                             
                                  =  mark(g(X))                      
                
                         g(ok(X)) =  [2]                             
                                  >= [2]                             
                                  =  ok(g(X))                        
                
                 proper(f(X1,X2)) =  [0]                             
                                  >= [0]                             
                                  =  f(proper(X1),proper(X2))        
                
                     proper(g(X)) =  [0]                             
                                  >= [0]                             
                                  =  g(proper(X))                    
                
          *** 1.1.1.1.2.2.1.1.1 Progress [(?,O(1))]  ***
              Considered Problem:
                Strict DP Rules:
                  top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
                Strict TRS Rules:
                  
                Weak DP Rules:
                  top#(ok(X)) -> c_11(top#(active(X)),active#(X))
                Weak TRS Rules:
                  active(f(X1,X2)) -> f(active(X1),X2)
                  active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                  active(g(X)) -> g(active(X))
                  f(mark(X1),X2) -> mark(f(X1,X2))
                  f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                  g(mark(X)) -> mark(g(X))
                  g(ok(X)) -> ok(g(X))
                  proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                  proper(g(X)) -> g(proper(X))
                Signature:
                  {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2}
                Obligation:
                  Innermost
                  basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
              Applied Processor:
                Assumption
              Proof:
                ()
          
          *** 1.1.1.1.2.2.1.2 Progress [(?,O(1))]  ***
              Considered Problem:
                Strict DP Rules:
                  top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
                Strict TRS Rules:
                  
                Weak DP Rules:
                  top#(ok(X)) -> c_11(top#(active(X)),active#(X))
                Weak TRS Rules:
                  active(f(X1,X2)) -> f(active(X1),X2)
                  active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                  active(g(X)) -> g(active(X))
                  f(mark(X1),X2) -> mark(f(X1,X2))
                  f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                  g(mark(X)) -> mark(g(X))
                  g(ok(X)) -> ok(g(X))
                  proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                  proper(g(X)) -> g(proper(X))
                Signature:
                  {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2}
                Obligation:
                  Innermost
                  basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
              Applied Processor:
                PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 0, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy}}
              Proof:
                We first use the processor NaturalMI {miDimension = 1, miDegree = 0, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy} to orient following rules strictly:
                  1: top#(mark(X)) ->                  
                       c_10(top#(proper(X)),proper#(X))
                  
                The strictly oriented rules are moved into the weak component.
            *** 1.1.1.1.2.2.1.2.1 Progress [(?,O(1))]  ***
                Considered Problem:
                  Strict DP Rules:
                    top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
                  Strict TRS Rules:
                    
                  Weak DP Rules:
                    top#(ok(X)) -> c_11(top#(active(X)),active#(X))
                  Weak TRS Rules:
                    active(f(X1,X2)) -> f(active(X1),X2)
                    active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                    active(g(X)) -> g(active(X))
                    f(mark(X1),X2) -> mark(f(X1,X2))
                    f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                    g(mark(X)) -> mark(g(X))
                    g(ok(X)) -> ok(g(X))
                    proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                    proper(g(X)) -> g(proper(X))
                  Signature:
                    {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2}
                  Obligation:
                    Innermost
                    basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
                Applied Processor:
                  NaturalMI {miDimension = 1, miDegree = 0, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation any intersect of rules of CDG leaf and strict-rules, greedy = NoGreedy}
                Proof:
                  We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 0 non-zero interpretation-entries in the diagonal of the component-wise maxima):
                  The following argument positions are considered usable:
                    uargs(c_10) = {1},
                    uargs(c_11) = {1}
                  
                  Following symbols are considered usable:
                    {active,f,g,proper,active#,f#,g#,proper#,top#}
                  TcT has computed the following interpretation:
                     p(active) = [1]                  
                          p(f) = [1] x1 + [0]         
                          p(g) = [1] x1 + [0]         
                       p(mark) = [1]                  
                         p(ok) = [2]                  
                     p(proper) = [0]                  
                        p(top) = [0]                  
                    p(active#) = [8]                  
                         p(f#) = [0]                  
                         p(g#) = [0]                  
                    p(proper#) = [0]                  
                       p(top#) = [8] x1 + [1]         
                        p(c_1) = [1] x1 + [4] x2 + [0]
                        p(c_2) = [0]                  
                        p(c_3) = [1] x1 + [2] x2 + [0]
                        p(c_4) = [1] x1 + [0]         
                        p(c_5) = [1] x1 + [0]         
                        p(c_6) = [2] x1 + [1]         
                        p(c_7) = [8] x1 + [1]         
                        p(c_8) = [2] x2 + [0]         
                        p(c_9) = [2] x1 + [2]         
                       p(c_10) = [4] x1 + [2]         
                       p(c_11) = [1] x1 + [1] x2 + [0]
                  
                  Following rules are strictly oriented:
                  top#(mark(X)) = [9]                             
                                > [6]                             
                                = c_10(top#(proper(X)),proper#(X))
                  
                  
                  Following rules are (at-least) weakly oriented:
                        top#(ok(X)) =  [17]                            
                                    >= [17]                            
                                    =  c_11(top#(active(X)),active#(X))
                  
                   active(f(X1,X2)) =  [1]                             
                                    >= [1]                             
                                    =  f(active(X1),X2)                
                  
                  active(f(g(X),Y)) =  [1]                             
                                    >= [1]                             
                                    =  mark(f(X,f(g(X),Y)))            
                  
                       active(g(X)) =  [1]                             
                                    >= [1]                             
                                    =  g(active(X))                    
                  
                     f(mark(X1),X2) =  [1]                             
                                    >= [1]                             
                                    =  mark(f(X1,X2))                  
                  
                   f(ok(X1),ok(X2)) =  [2]                             
                                    >= [2]                             
                                    =  ok(f(X1,X2))                    
                  
                         g(mark(X)) =  [1]                             
                                    >= [1]                             
                                    =  mark(g(X))                      
                  
                           g(ok(X)) =  [2]                             
                                    >= [2]                             
                                    =  ok(g(X))                        
                  
                   proper(f(X1,X2)) =  [0]                             
                                    >= [0]                             
                                    =  f(proper(X1),proper(X2))        
                  
                       proper(g(X)) =  [0]                             
                                    >= [0]                             
                                    =  g(proper(X))                    
                  
            *** 1.1.1.1.2.2.1.2.1.1 Progress [(?,O(1))]  ***
                Considered Problem:
                  Strict DP Rules:
                    
                  Strict TRS Rules:
                    
                  Weak DP Rules:
                    top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
                    top#(ok(X)) -> c_11(top#(active(X)),active#(X))
                  Weak TRS Rules:
                    active(f(X1,X2)) -> f(active(X1),X2)
                    active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                    active(g(X)) -> g(active(X))
                    f(mark(X1),X2) -> mark(f(X1,X2))
                    f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                    g(mark(X)) -> mark(g(X))
                    g(ok(X)) -> ok(g(X))
                    proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                    proper(g(X)) -> g(proper(X))
                  Signature:
                    {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2}
                  Obligation:
                    Innermost
                    basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
                Applied Processor:
                  Assumption
                Proof:
                  ()
            
            *** 1.1.1.1.2.2.1.2.2 Progress [(O(1),O(1))]  ***
                Considered Problem:
                  Strict DP Rules:
                    
                  Strict TRS Rules:
                    
                  Weak DP Rules:
                    top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
                    top#(ok(X)) -> c_11(top#(active(X)),active#(X))
                  Weak TRS Rules:
                    active(f(X1,X2)) -> f(active(X1),X2)
                    active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                    active(g(X)) -> g(active(X))
                    f(mark(X1),X2) -> mark(f(X1,X2))
                    f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                    g(mark(X)) -> mark(g(X))
                    g(ok(X)) -> ok(g(X))
                    proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                    proper(g(X)) -> g(proper(X))
                  Signature:
                    {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2}
                  Obligation:
                    Innermost
                    basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
                Applied Processor:
                  RemoveWeakSuffixes
                Proof:
                  Consider the dependency graph
                    1:W:top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
                       -->_1 top#(ok(X)) -> c_11(top#(active(X)),active#(X)):2
                       -->_1 top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)):1
                    
                    2:W:top#(ok(X)) -> c_11(top#(active(X)),active#(X))
                       -->_1 top#(ok(X)) -> c_11(top#(active(X)),active#(X)):2
                       -->_1 top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)):1
                    
                  The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
                    1: top#(mark(X)) ->                  
                         c_10(top#(proper(X)),proper#(X))
                    2: top#(ok(X)) ->                    
                         c_11(top#(active(X)),active#(X))
            *** 1.1.1.1.2.2.1.2.2.1 Progress [(O(1),O(1))]  ***
                Considered Problem:
                  Strict DP Rules:
                    
                  Strict TRS Rules:
                    
                  Weak DP Rules:
                    
                  Weak TRS Rules:
                    active(f(X1,X2)) -> f(active(X1),X2)
                    active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                    active(g(X)) -> g(active(X))
                    f(mark(X1),X2) -> mark(f(X1,X2))
                    f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                    g(mark(X)) -> mark(g(X))
                    g(ok(X)) -> ok(g(X))
                    proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                    proper(g(X)) -> g(proper(X))
                  Signature:
                    {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2}
                  Obligation:
                    Innermost
                    basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
                Applied Processor:
                  EmptyProcessor
                Proof:
                  The problem is already closed. The intended complexity is O(1).
            
        *** 1.1.1.1.2.2.2 Progress [(?,O(n^1))]  ***
            Considered Problem:
              Strict DP Rules:
                active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1))
                active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X))
                active#(g(X)) -> c_3(g#(active(X)),active#(X))
                f#(mark(X1),X2) -> c_4(f#(X1,X2))
                g#(mark(X)) -> c_6(g#(X))
              Strict TRS Rules:
                
              Weak DP Rules:
                f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2))
                g#(ok(X)) -> c_7(g#(X))
                proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
                proper#(g(X)) -> c_9(g#(proper(X)),proper#(X))
                top#(mark(X)) -> proper#(X)
                top#(mark(X)) -> top#(proper(X))
                top#(ok(X)) -> active#(X)
                top#(ok(X)) -> top#(active(X))
              Weak TRS Rules:
                active(f(X1,X2)) -> f(active(X1),X2)
                active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                active(g(X)) -> g(active(X))
                f(mark(X1),X2) -> mark(f(X1,X2))
                f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                g(mark(X)) -> mark(g(X))
                g(ok(X)) -> ok(g(X))
                proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                proper(g(X)) -> g(proper(X))
              Signature:
                {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2}
              Obligation:
                Innermost
                basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
            Applied Processor:
              PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy}}
            Proof:
              We first use the processor NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy} to orient following rules strictly:
                2: active#(f(g(X),Y)) -> c_2(f#(X         
                                               ,f(g(X),Y))
                                            ,f#(g(X),Y)   
                                            ,g#(X))       
                3: active#(g(X)) ->                       
                     c_3(g#(active(X)),active#(X))        
                5: g#(mark(X)) -> c_6(g#(X))              
                
              The strictly oriented rules are moved into the weak component.
          *** 1.1.1.1.2.2.2.1 Progress [(?,O(n^1))]  ***
              Considered Problem:
                Strict DP Rules:
                  active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1))
                  active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X))
                  active#(g(X)) -> c_3(g#(active(X)),active#(X))
                  f#(mark(X1),X2) -> c_4(f#(X1,X2))
                  g#(mark(X)) -> c_6(g#(X))
                Strict TRS Rules:
                  
                Weak DP Rules:
                  f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2))
                  g#(ok(X)) -> c_7(g#(X))
                  proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
                  proper#(g(X)) -> c_9(g#(proper(X)),proper#(X))
                  top#(mark(X)) -> proper#(X)
                  top#(mark(X)) -> top#(proper(X))
                  top#(ok(X)) -> active#(X)
                  top#(ok(X)) -> top#(active(X))
                Weak TRS Rules:
                  active(f(X1,X2)) -> f(active(X1),X2)
                  active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                  active(g(X)) -> g(active(X))
                  f(mark(X1),X2) -> mark(f(X1,X2))
                  f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                  g(mark(X)) -> mark(g(X))
                  g(ok(X)) -> ok(g(X))
                  proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                  proper(g(X)) -> g(proper(X))
                Signature:
                  {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2}
                Obligation:
                  Innermost
                  basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
              Applied Processor:
                NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation any intersect of rules of CDG leaf and strict-rules, greedy = NoGreedy}
              Proof:
                We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 1 non-zero interpretation-entries in the diagonal of the component-wise maxima):
                The following argument positions are considered usable:
                  uargs(c_1) = {1,2},
                  uargs(c_2) = {1,3},
                  uargs(c_3) = {1,2},
                  uargs(c_4) = {1},
                  uargs(c_5) = {1},
                  uargs(c_6) = {1},
                  uargs(c_7) = {1},
                  uargs(c_8) = {1,2,3},
                  uargs(c_9) = {1,2}
                
                Following symbols are considered usable:
                  {active,f,g,proper,active#,f#,g#,proper#,top#}
                TcT has computed the following interpretation:
                   p(active) = [1 2] x1 + [0]           
                               [0 1]      [0]           
                        p(f) = [1 0] x1 + [0]           
                               [0 1]      [0]           
                        p(g) = [3 0] x1 + [0]           
                               [0 3]      [2]           
                     p(mark) = [1 0] x1 + [2]           
                               [0 0]      [0]           
                       p(ok) = [1 2] x1 + [2]           
                               [0 0]      [0]           
                   p(proper) = [0 0] x1 + [0]           
                               [0 2]      [0]           
                      p(top) = [0]                      
                               [1]                      
                  p(active#) = [1 2] x1 + [1]           
                               [0 0]      [0]           
                       p(f#) = [0 0] x1 + [0 0] x2 + [0]
                               [1 0]      [1 0]      [0]
                       p(g#) = [2 0] x1 + [0]           
                               [0 2]      [0]           
                  p(proper#) = [0]                      
                               [0]                      
                     p(top#) = [1 0] x1 + [2]           
                               [0 0]      [0]           
                      p(c_1) = [1 0] x1 + [1 0] x2 + [0]
                               [0 0]      [0 0]      [0]
                      p(c_2) = [2 0] x1 + [0 0] x2 + [1 
                               2] x3 + [0]              
                               [1 0]      [2 0]      [0 
                               0]      [0]              
                      p(c_3) = [1 0] x1 + [1 1] x2 + [1]
                               [0 0]      [0 2]      [0]
                      p(c_4) = [2 0] x1 + [0]           
                               [0 1]      [1]           
                      p(c_5) = [2 0] x1 + [0]           
                               [1 0]      [2]           
                      p(c_6) = [1 0] x1 + [3]           
                               [0 0]      [0]           
                      p(c_7) = [1 2] x1 + [1]           
                               [0 0]      [0]           
                      p(c_8) = [2 0] x1 + [1 2] x2 + [1 
                               1] x3 + [0]              
                               [0 0]      [2 0]      [0 
                               2]      [0]              
                      p(c_9) = [1 0] x1 + [2 0] x2 + [0]
                               [0 0]      [0 0]      [0]
                     p(c_10) = [0]                      
                               [1]                      
                     p(c_11) = [0 1] x1 + [0 1] x2 + [0]
                               [1 1]      [1 0]      [0]
                
                Following rules are strictly oriented:
                active#(f(g(X),Y)) = [3 6] X + [5]                
                                     [0 0]     [0]                
                                   > [2 4] X + [0]                
                                     [0 0]     [0]                
                                   = c_2(f#(X,f(g(X),Y))          
                                        ,f#(g(X),Y)               
                                        ,g#(X))                   
                
                     active#(g(X)) = [3 6] X + [5]                
                                     [0 0]     [0]                
                                   > [3 6] X + [2]                
                                     [0 0]     [0]                
                                   = c_3(g#(active(X)),active#(X))
                
                       g#(mark(X)) = [2 0] X + [4]                
                                     [0 0]     [0]                
                                   > [2 0] X + [3]                
                                     [0 0]     [0]                
                                   = c_6(g#(X))                   
                
                
                Following rules are (at-least) weakly oriented:
                active#(f(X1,X2)) =  [1 2] X1 + [1]               
                                     [0 0]      [0]               
                                  >= [1 2] X1 + [1]               
                                     [0 0]      [0]               
                                  =  c_1(f#(active(X1),X2)        
                                        ,active#(X1))             
                
                  f#(mark(X1),X2) =  [0 0] X1 + [0 0] X2 + [0]    
                                     [1 0]      [1 0]      [2]    
                                  >= [0 0] X1 + [0 0] X2 + [0]    
                                     [1 0]      [1 0]      [1]    
                                  =  c_4(f#(X1,X2))               
                
                f#(ok(X1),ok(X2)) =  [0 0] X1 + [0 0] X2 + [0]    
                                     [1 2]      [1 2]      [4]    
                                  >= [0]                          
                                     [2]                          
                                  =  c_5(f#(X1,X2))               
                
                        g#(ok(X)) =  [2 4] X + [4]                
                                     [0 0]     [0]                
                                  >= [2 4] X + [1]                
                                     [0 0]     [0]                
                                  =  c_7(g#(X))                   
                
                proper#(f(X1,X2)) =  [0]                          
                                     [0]                          
                                  >= [0]                          
                                     [0]                          
                                  =  c_8(f#(proper(X1),proper(X2))
                                        ,proper#(X1)              
                                        ,proper#(X2))             
                
                    proper#(g(X)) =  [0]                          
                                     [0]                          
                                  >= [0]                          
                                     [0]                          
                                  =  c_9(g#(proper(X)),proper#(X))
                
                    top#(mark(X)) =  [1 0] X + [4]                
                                     [0 0]     [0]                
                                  >= [0]                          
                                     [0]                          
                                  =  proper#(X)                   
                
                    top#(mark(X)) =  [1 0] X + [4]                
                                     [0 0]     [0]                
                                  >= [2]                          
                                     [0]                          
                                  =  top#(proper(X))              
                
                      top#(ok(X)) =  [1 2] X + [4]                
                                     [0 0]     [0]                
                                  >= [1 2] X + [1]                
                                     [0 0]     [0]                
                                  =  active#(X)                   
                
                      top#(ok(X)) =  [1 2] X + [4]                
                                     [0 0]     [0]                
                                  >= [1 2] X + [2]                
                                     [0 0]     [0]                
                                  =  top#(active(X))              
                
                 active(f(X1,X2)) =  [1 2] X1 + [0]               
                                     [0 1]      [0]               
                                  >= [1 2] X1 + [0]               
                                     [0 1]      [0]               
                                  =  f(active(X1),X2)             
                
                active(f(g(X),Y)) =  [3 6] X + [4]                
                                     [0 3]     [2]                
                                  >= [1 0] X + [2]                
                                     [0 0]     [0]                
                                  =  mark(f(X,f(g(X),Y)))         
                
                     active(g(X)) =  [3 6] X + [4]                
                                     [0 3]     [2]                
                                  >= [3 6] X + [0]                
                                     [0 3]     [2]                
                                  =  g(active(X))                 
                
                   f(mark(X1),X2) =  [1 0] X1 + [2]               
                                     [0 0]      [0]               
                                  >= [1 0] X1 + [2]               
                                     [0 0]      [0]               
                                  =  mark(f(X1,X2))               
                
                 f(ok(X1),ok(X2)) =  [1 2] X1 + [2]               
                                     [0 0]      [0]               
                                  >= [1 2] X1 + [2]               
                                     [0 0]      [0]               
                                  =  ok(f(X1,X2))                 
                
                       g(mark(X)) =  [3 0] X + [6]                
                                     [0 0]     [2]                
                                  >= [3 0] X + [2]                
                                     [0 0]     [0]                
                                  =  mark(g(X))                   
                
                         g(ok(X)) =  [3 6] X + [6]                
                                     [0 0]     [2]                
                                  >= [3 6] X + [6]                
                                     [0 0]     [0]                
                                  =  ok(g(X))                     
                
                 proper(f(X1,X2)) =  [0 0] X1 + [0]               
                                     [0 2]      [0]               
                                  >= [0 0] X1 + [0]               
                                     [0 2]      [0]               
                                  =  f(proper(X1),proper(X2))     
                
                     proper(g(X)) =  [0 0] X + [0]                
                                     [0 6]     [4]                
                                  >= [0 0] X + [0]                
                                     [0 6]     [2]                
                                  =  g(proper(X))                 
                
          *** 1.1.1.1.2.2.2.1.1 Progress [(?,O(1))]  ***
              Considered Problem:
                Strict DP Rules:
                  active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1))
                  f#(mark(X1),X2) -> c_4(f#(X1,X2))
                Strict TRS Rules:
                  
                Weak DP Rules:
                  active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X))
                  active#(g(X)) -> c_3(g#(active(X)),active#(X))
                  f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2))
                  g#(mark(X)) -> c_6(g#(X))
                  g#(ok(X)) -> c_7(g#(X))
                  proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
                  proper#(g(X)) -> c_9(g#(proper(X)),proper#(X))
                  top#(mark(X)) -> proper#(X)
                  top#(mark(X)) -> top#(proper(X))
                  top#(ok(X)) -> active#(X)
                  top#(ok(X)) -> top#(active(X))
                Weak TRS Rules:
                  active(f(X1,X2)) -> f(active(X1),X2)
                  active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                  active(g(X)) -> g(active(X))
                  f(mark(X1),X2) -> mark(f(X1,X2))
                  f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                  g(mark(X)) -> mark(g(X))
                  g(ok(X)) -> ok(g(X))
                  proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                  proper(g(X)) -> g(proper(X))
                Signature:
                  {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2}
                Obligation:
                  Innermost
                  basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
              Applied Processor:
                Assumption
              Proof:
                ()
          
          *** 1.1.1.1.2.2.2.2 Progress [(?,O(n^1))]  ***
              Considered Problem:
                Strict DP Rules:
                  active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1))
                  f#(mark(X1),X2) -> c_4(f#(X1,X2))
                Strict TRS Rules:
                  
                Weak DP Rules:
                  active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X))
                  active#(g(X)) -> c_3(g#(active(X)),active#(X))
                  f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2))
                  g#(mark(X)) -> c_6(g#(X))
                  g#(ok(X)) -> c_7(g#(X))
                  proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
                  proper#(g(X)) -> c_9(g#(proper(X)),proper#(X))
                  top#(mark(X)) -> proper#(X)
                  top#(mark(X)) -> top#(proper(X))
                  top#(ok(X)) -> active#(X)
                  top#(ok(X)) -> top#(active(X))
                Weak TRS Rules:
                  active(f(X1,X2)) -> f(active(X1),X2)
                  active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                  active(g(X)) -> g(active(X))
                  f(mark(X1),X2) -> mark(f(X1,X2))
                  f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                  g(mark(X)) -> mark(g(X))
                  g(ok(X)) -> ok(g(X))
                  proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                  proper(g(X)) -> g(proper(X))
                Signature:
                  {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2}
                Obligation:
                  Innermost
                  basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
              Applied Processor:
                RemoveWeakSuffixes
              Proof:
                Consider the dependency graph
                  1:S:active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1))
                     -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5
                     -->_2 active#(g(X)) -> c_3(g#(active(X)),active#(X)):4
                     -->_2 active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)):3
                     -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):2
                     -->_2 active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)):1
                  
                  2:S:f#(mark(X1),X2) -> c_4(f#(X1,X2))
                     -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5
                     -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):2
                  
                  3:W:active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X))
                     -->_3 g#(ok(X)) -> c_7(g#(X)):7
                     -->_3 g#(mark(X)) -> c_6(g#(X)):6
                     -->_2 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5
                     -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5
                     -->_2 f#(mark(X1),X2) -> c_4(f#(X1,X2)):2
                     -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):2
                  
                  4:W:active#(g(X)) -> c_3(g#(active(X)),active#(X))
                     -->_1 g#(ok(X)) -> c_7(g#(X)):7
                     -->_1 g#(mark(X)) -> c_6(g#(X)):6
                     -->_2 active#(g(X)) -> c_3(g#(active(X)),active#(X)):4
                     -->_2 active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)):3
                     -->_2 active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)):1
                  
                  5:W:f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2))
                     -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5
                     -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):2
                  
                  6:W:g#(mark(X)) -> c_6(g#(X))
                     -->_1 g#(ok(X)) -> c_7(g#(X)):7
                     -->_1 g#(mark(X)) -> c_6(g#(X)):6
                  
                  7:W:g#(ok(X)) -> c_7(g#(X))
                     -->_1 g#(ok(X)) -> c_7(g#(X)):7
                     -->_1 g#(mark(X)) -> c_6(g#(X)):6
                  
                  8:W:proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
                     -->_3 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):9
                     -->_2 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):9
                     -->_3 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):8
                     -->_2 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):8
                     -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5
                     -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):2
                  
                  9:W:proper#(g(X)) -> c_9(g#(proper(X)),proper#(X))
                     -->_2 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):9
                     -->_2 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):8
                     -->_1 g#(ok(X)) -> c_7(g#(X)):7
                     -->_1 g#(mark(X)) -> c_6(g#(X)):6
                  
                  10:W:top#(mark(X)) -> proper#(X)
                     -->_1 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):9
                     -->_1 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):8
                  
                  11:W:top#(mark(X)) -> top#(proper(X))
                     -->_1 top#(ok(X)) -> top#(active(X)):13
                     -->_1 top#(ok(X)) -> active#(X):12
                     -->_1 top#(mark(X)) -> top#(proper(X)):11
                     -->_1 top#(mark(X)) -> proper#(X):10
                  
                  12:W:top#(ok(X)) -> active#(X)
                     -->_1 active#(g(X)) -> c_3(g#(active(X)),active#(X)):4
                     -->_1 active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)):3
                     -->_1 active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)):1
                  
                  13:W:top#(ok(X)) -> top#(active(X))
                     -->_1 top#(ok(X)) -> top#(active(X)):13
                     -->_1 top#(ok(X)) -> active#(X):12
                     -->_1 top#(mark(X)) -> top#(proper(X)):11
                     -->_1 top#(mark(X)) -> proper#(X):10
                  
                The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
                  7: g#(ok(X)) -> c_7(g#(X))  
                  6: g#(mark(X)) -> c_6(g#(X))
          *** 1.1.1.1.2.2.2.2.1 Progress [(?,O(n^1))]  ***
              Considered Problem:
                Strict DP Rules:
                  active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1))
                  f#(mark(X1),X2) -> c_4(f#(X1,X2))
                Strict TRS Rules:
                  
                Weak DP Rules:
                  active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X))
                  active#(g(X)) -> c_3(g#(active(X)),active#(X))
                  f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2))
                  proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
                  proper#(g(X)) -> c_9(g#(proper(X)),proper#(X))
                  top#(mark(X)) -> proper#(X)
                  top#(mark(X)) -> top#(proper(X))
                  top#(ok(X)) -> active#(X)
                  top#(ok(X)) -> top#(active(X))
                Weak TRS Rules:
                  active(f(X1,X2)) -> f(active(X1),X2)
                  active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                  active(g(X)) -> g(active(X))
                  f(mark(X1),X2) -> mark(f(X1,X2))
                  f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                  g(mark(X)) -> mark(g(X))
                  g(ok(X)) -> ok(g(X))
                  proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                  proper(g(X)) -> g(proper(X))
                Signature:
                  {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2}
                Obligation:
                  Innermost
                  basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
              Applied Processor:
                SimplifyRHS
              Proof:
                Consider the dependency graph
                  1:S:active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1))
                     -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5
                     -->_2 active#(g(X)) -> c_3(g#(active(X)),active#(X)):4
                     -->_2 active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)):3
                     -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):2
                     -->_2 active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)):1
                  
                  2:S:f#(mark(X1),X2) -> c_4(f#(X1,X2))
                     -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5
                     -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):2
                  
                  3:W:active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X))
                     -->_2 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5
                     -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5
                     -->_2 f#(mark(X1),X2) -> c_4(f#(X1,X2)):2
                     -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):2
                  
                  4:W:active#(g(X)) -> c_3(g#(active(X)),active#(X))
                     -->_2 active#(g(X)) -> c_3(g#(active(X)),active#(X)):4
                     -->_2 active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)):3
                     -->_2 active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)):1
                  
                  5:W:f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2))
                     -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5
                     -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):2
                  
                  8:W:proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
                     -->_3 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):9
                     -->_2 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):9
                     -->_3 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):8
                     -->_2 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):8
                     -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5
                     -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):2
                  
                  9:W:proper#(g(X)) -> c_9(g#(proper(X)),proper#(X))
                     -->_2 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):9
                     -->_2 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):8
                  
                  10:W:top#(mark(X)) -> proper#(X)
                     -->_1 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):9
                     -->_1 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):8
                  
                  11:W:top#(mark(X)) -> top#(proper(X))
                     -->_1 top#(ok(X)) -> top#(active(X)):13
                     -->_1 top#(ok(X)) -> active#(X):12
                     -->_1 top#(mark(X)) -> top#(proper(X)):11
                     -->_1 top#(mark(X)) -> proper#(X):10
                  
                  12:W:top#(ok(X)) -> active#(X)
                     -->_1 active#(g(X)) -> c_3(g#(active(X)),active#(X)):4
                     -->_1 active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)):3
                     -->_1 active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)):1
                  
                  13:W:top#(ok(X)) -> top#(active(X))
                     -->_1 top#(ok(X)) -> top#(active(X)):13
                     -->_1 top#(ok(X)) -> active#(X):12
                     -->_1 top#(mark(X)) -> top#(proper(X)):11
                     -->_1 top#(mark(X)) -> proper#(X):10
                  
                Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified:
                  active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y))
                  active#(g(X)) -> c_3(active#(X))
                  proper#(g(X)) -> c_9(proper#(X))
          *** 1.1.1.1.2.2.2.2.1.1 Progress [(?,O(n^1))]  ***
              Considered Problem:
                Strict DP Rules:
                  active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1))
                  f#(mark(X1),X2) -> c_4(f#(X1,X2))
                Strict TRS Rules:
                  
                Weak DP Rules:
                  active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y))
                  active#(g(X)) -> c_3(active#(X))
                  f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2))
                  proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
                  proper#(g(X)) -> c_9(proper#(X))
                  top#(mark(X)) -> proper#(X)
                  top#(mark(X)) -> top#(proper(X))
                  top#(ok(X)) -> active#(X)
                  top#(ok(X)) -> top#(active(X))
                Weak TRS Rules:
                  active(f(X1,X2)) -> f(active(X1),X2)
                  active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                  active(g(X)) -> g(active(X))
                  f(mark(X1),X2) -> mark(f(X1,X2))
                  f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                  g(mark(X)) -> mark(g(X))
                  g(ok(X)) -> ok(g(X))
                  proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                  proper(g(X)) -> g(proper(X))
                Signature:
                  {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/2,c_3/1,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/1,c_10/2,c_11/2}
                Obligation:
                  Innermost
                  basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
              Applied Processor:
                PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy}}
              Proof:
                We first use the processor NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy} to orient following rules strictly:
                  1: active#(f(X1,X2)) ->          
                       c_1(f#(active(X1),X2)       
                          ,active#(X1))            
                  2: f#(mark(X1),X2) -> c_4(f#(X1  
                                              ,X2))
                  
                The strictly oriented rules are moved into the weak component.
            *** 1.1.1.1.2.2.2.2.1.1.1 Progress [(?,O(n^1))]  ***
                Considered Problem:
                  Strict DP Rules:
                    active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1))
                    f#(mark(X1),X2) -> c_4(f#(X1,X2))
                  Strict TRS Rules:
                    
                  Weak DP Rules:
                    active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y))
                    active#(g(X)) -> c_3(active#(X))
                    f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2))
                    proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
                    proper#(g(X)) -> c_9(proper#(X))
                    top#(mark(X)) -> proper#(X)
                    top#(mark(X)) -> top#(proper(X))
                    top#(ok(X)) -> active#(X)
                    top#(ok(X)) -> top#(active(X))
                  Weak TRS Rules:
                    active(f(X1,X2)) -> f(active(X1),X2)
                    active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                    active(g(X)) -> g(active(X))
                    f(mark(X1),X2) -> mark(f(X1,X2))
                    f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                    g(mark(X)) -> mark(g(X))
                    g(ok(X)) -> ok(g(X))
                    proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                    proper(g(X)) -> g(proper(X))
                  Signature:
                    {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/2,c_3/1,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/1,c_10/2,c_11/2}
                  Obligation:
                    Innermost
                    basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
                Applied Processor:
                  NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation any intersect of rules of CDG leaf and strict-rules, greedy = NoGreedy}
                Proof:
                  We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 1 non-zero interpretation-entries in the diagonal of the component-wise maxima):
                  The following argument positions are considered usable:
                    uargs(c_1) = {1,2},
                    uargs(c_2) = {1},
                    uargs(c_3) = {1},
                    uargs(c_4) = {1},
                    uargs(c_5) = {1},
                    uargs(c_8) = {1,2,3},
                    uargs(c_9) = {1}
                  
                  Following symbols are considered usable:
                    {active,f,g,proper,active#,f#,g#,proper#,top#}
                  TcT has computed the following interpretation:
                     p(active) = [1 1] x1 + [0]           
                                 [0 1]      [0]           
                          p(f) = [3 0] x1 + [0]           
                                 [0 3]      [1]           
                          p(g) = [2 0] x1 + [0]           
                                 [0 2]      [1]           
                       p(mark) = [1 0] x1 + [2]           
                                 [0 0]      [0]           
                         p(ok) = [1 1] x1 + [2]           
                                 [0 0]      [0]           
                     p(proper) = [0 0] x1 + [0]           
                                 [0 1]      [0]           
                        p(top) = [2 0] x1 + [2]           
                                 [2 1]      [1]           
                    p(active#) = [1 1] x1 + [0]           
                                 [0 0]      [2]           
                         p(f#) = [2 0] x1 + [0]           
                                 [0 1]      [0]           
                         p(g#) = [0 0] x1 + [0]           
                                 [0 1]      [2]           
                    p(proper#) = [0]                      
                                 [2]                      
                       p(top#) = [1 0] x1 + [2]           
                                 [0 0]      [2]           
                        p(c_1) = [1 0] x1 + [1 0] x2 + [0]
                                 [0 0]      [0 1]      [0]
                        p(c_2) = [2 0] x1 + [2]           
                                 [0 0]      [1]           
                        p(c_3) = [1 0] x1 + [1]           
                                 [0 0]      [0]           
                        p(c_4) = [1 0] x1 + [2]           
                                 [0 0]      [0]           
                        p(c_5) = [1 2] x1 + [2]           
                                 [0 0]      [0]           
                        p(c_6) = [2 0] x1 + [0]           
                                 [0 1]      [0]           
                        p(c_7) = [0 2] x1 + [2]           
                                 [2 1]      [2]           
                        p(c_8) = [2 0] x1 + [1 0] x2 + [1 
                                 0] x3 + [0]              
                                 [0 0]      [0 0]      [0 
                                 1]      [0]              
                        p(c_9) = [1 0] x1 + [0]           
                                 [1 1]      [0]           
                       p(c_10) = [0 0] x1 + [0]           
                                 [0 2]      [2]           
                       p(c_11) = [0]                      
                                 [0]                      
                  
                  Following rules are strictly oriented:
                  active#(f(X1,X2)) = [3 3] X1 + [1]       
                                      [0 0]      [2]       
                                    > [3 3] X1 + [0]       
                                      [0 0]      [2]       
                                    = c_1(f#(active(X1),X2)
                                         ,active#(X1))     
                  
                    f#(mark(X1),X2) = [2 0] X1 + [4]       
                                      [0 0]      [0]       
                                    > [2 0] X1 + [2]       
                                      [0 0]      [0]       
                                    = c_4(f#(X1,X2))       
                  
                  
                  Following rules are (at-least) weakly oriented:
                  active#(f(g(X),Y)) =  [6 6] X + [4]                  
                                        [0 0]     [2]                  
                                     >= [4 0] X + [2]                  
                                        [0 0]     [1]                  
                                     =  c_2(f#(X,f(g(X),Y)),f#(g(X),Y))
                  
                       active#(g(X)) =  [2 2] X + [1]                  
                                        [0 0]     [2]                  
                                     >= [1 1] X + [1]                  
                                        [0 0]     [0]                  
                                     =  c_3(active#(X))                
                  
                   f#(ok(X1),ok(X2)) =  [2 2] X1 + [4]                 
                                        [0 0]      [0]                 
                                     >= [2 2] X1 + [2]                 
                                        [0 0]      [0]                 
                                     =  c_5(f#(X1,X2))                 
                  
                   proper#(f(X1,X2)) =  [0]                            
                                        [2]                            
                                     >= [0]                            
                                        [2]                            
                                     =  c_8(f#(proper(X1),proper(X2))  
                                           ,proper#(X1)                
                                           ,proper#(X2))               
                  
                       proper#(g(X)) =  [0]                            
                                        [2]                            
                                     >= [0]                            
                                        [2]                            
                                     =  c_9(proper#(X))                
                  
                       top#(mark(X)) =  [1 0] X + [4]                  
                                        [0 0]     [2]                  
                                     >= [0]                            
                                        [2]                            
                                     =  proper#(X)                     
                  
                       top#(mark(X)) =  [1 0] X + [4]                  
                                        [0 0]     [2]                  
                                     >= [2]                            
                                        [2]                            
                                     =  top#(proper(X))                
                  
                         top#(ok(X)) =  [1 1] X + [4]                  
                                        [0 0]     [2]                  
                                     >= [1 1] X + [0]                  
                                        [0 0]     [2]                  
                                     =  active#(X)                     
                  
                         top#(ok(X)) =  [1 1] X + [4]                  
                                        [0 0]     [2]                  
                                     >= [1 1] X + [2]                  
                                        [0 0]     [2]                  
                                     =  top#(active(X))                
                  
                    active(f(X1,X2)) =  [3 3] X1 + [1]                 
                                        [0 3]      [1]                 
                                     >= [3 3] X1 + [0]                 
                                        [0 3]      [1]                 
                                     =  f(active(X1),X2)               
                  
                   active(f(g(X),Y)) =  [6 6] X + [4]                  
                                        [0 6]     [4]                  
                                     >= [3 0] X + [2]                  
                                        [0 0]     [0]                  
                                     =  mark(f(X,f(g(X),Y)))           
                  
                        active(g(X)) =  [2 2] X + [1]                  
                                        [0 2]     [1]                  
                                     >= [2 2] X + [0]                  
                                        [0 2]     [1]                  
                                     =  g(active(X))                   
                  
                      f(mark(X1),X2) =  [3 0] X1 + [6]                 
                                        [0 0]      [1]                 
                                     >= [3 0] X1 + [2]                 
                                        [0 0]      [0]                 
                                     =  mark(f(X1,X2))                 
                  
                    f(ok(X1),ok(X2)) =  [3 3] X1 + [6]                 
                                        [0 0]      [1]                 
                                     >= [3 3] X1 + [3]                 
                                        [0 0]      [0]                 
                                     =  ok(f(X1,X2))                   
                  
                          g(mark(X)) =  [2 0] X + [4]                  
                                        [0 0]     [1]                  
                                     >= [2 0] X + [2]                  
                                        [0 0]     [0]                  
                                     =  mark(g(X))                     
                  
                            g(ok(X)) =  [2 2] X + [4]                  
                                        [0 0]     [1]                  
                                     >= [2 2] X + [3]                  
                                        [0 0]     [0]                  
                                     =  ok(g(X))                       
                  
                    proper(f(X1,X2)) =  [0 0] X1 + [0]                 
                                        [0 3]      [1]                 
                                     >= [0 0] X1 + [0]                 
                                        [0 3]      [1]                 
                                     =  f(proper(X1),proper(X2))       
                  
                        proper(g(X)) =  [0 0] X + [0]                  
                                        [0 2]     [1]                  
                                     >= [0 0] X + [0]                  
                                        [0 2]     [1]                  
                                     =  g(proper(X))                   
                  
            *** 1.1.1.1.2.2.2.2.1.1.1.1 Progress [(?,O(1))]  ***
                Considered Problem:
                  Strict DP Rules:
                    
                  Strict TRS Rules:
                    
                  Weak DP Rules:
                    active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1))
                    active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y))
                    active#(g(X)) -> c_3(active#(X))
                    f#(mark(X1),X2) -> c_4(f#(X1,X2))
                    f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2))
                    proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
                    proper#(g(X)) -> c_9(proper#(X))
                    top#(mark(X)) -> proper#(X)
                    top#(mark(X)) -> top#(proper(X))
                    top#(ok(X)) -> active#(X)
                    top#(ok(X)) -> top#(active(X))
                  Weak TRS Rules:
                    active(f(X1,X2)) -> f(active(X1),X2)
                    active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                    active(g(X)) -> g(active(X))
                    f(mark(X1),X2) -> mark(f(X1,X2))
                    f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                    g(mark(X)) -> mark(g(X))
                    g(ok(X)) -> ok(g(X))
                    proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                    proper(g(X)) -> g(proper(X))
                  Signature:
                    {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/2,c_3/1,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/1,c_10/2,c_11/2}
                  Obligation:
                    Innermost
                    basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
                Applied Processor:
                  Assumption
                Proof:
                  ()
            
            *** 1.1.1.1.2.2.2.2.1.1.2 Progress [(O(1),O(1))]  ***
                Considered Problem:
                  Strict DP Rules:
                    
                  Strict TRS Rules:
                    
                  Weak DP Rules:
                    active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1))
                    active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y))
                    active#(g(X)) -> c_3(active#(X))
                    f#(mark(X1),X2) -> c_4(f#(X1,X2))
                    f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2))
                    proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
                    proper#(g(X)) -> c_9(proper#(X))
                    top#(mark(X)) -> proper#(X)
                    top#(mark(X)) -> top#(proper(X))
                    top#(ok(X)) -> active#(X)
                    top#(ok(X)) -> top#(active(X))
                  Weak TRS Rules:
                    active(f(X1,X2)) -> f(active(X1),X2)
                    active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                    active(g(X)) -> g(active(X))
                    f(mark(X1),X2) -> mark(f(X1,X2))
                    f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                    g(mark(X)) -> mark(g(X))
                    g(ok(X)) -> ok(g(X))
                    proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                    proper(g(X)) -> g(proper(X))
                  Signature:
                    {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/2,c_3/1,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/1,c_10/2,c_11/2}
                  Obligation:
                    Innermost
                    basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
                Applied Processor:
                  RemoveWeakSuffixes
                Proof:
                  Consider the dependency graph
                    1:W:active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1))
                       -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5
                       -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):4
                       -->_2 active#(g(X)) -> c_3(active#(X)):3
                       -->_2 active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y)):2
                       -->_2 active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)):1
                    
                    2:W:active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y))
                       -->_2 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5
                       -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5
                       -->_2 f#(mark(X1),X2) -> c_4(f#(X1,X2)):4
                       -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):4
                    
                    3:W:active#(g(X)) -> c_3(active#(X))
                       -->_1 active#(g(X)) -> c_3(active#(X)):3
                       -->_1 active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y)):2
                       -->_1 active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)):1
                    
                    4:W:f#(mark(X1),X2) -> c_4(f#(X1,X2))
                       -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5
                       -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):4
                    
                    5:W:f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2))
                       -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5
                       -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):4
                    
                    6:W:proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
                       -->_3 proper#(g(X)) -> c_9(proper#(X)):7
                       -->_2 proper#(g(X)) -> c_9(proper#(X)):7
                       -->_3 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):6
                       -->_2 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):6
                       -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5
                       -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):4
                    
                    7:W:proper#(g(X)) -> c_9(proper#(X))
                       -->_1 proper#(g(X)) -> c_9(proper#(X)):7
                       -->_1 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):6
                    
                    8:W:top#(mark(X)) -> proper#(X)
                       -->_1 proper#(g(X)) -> c_9(proper#(X)):7
                       -->_1 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):6
                    
                    9:W:top#(mark(X)) -> top#(proper(X))
                       -->_1 top#(ok(X)) -> top#(active(X)):11
                       -->_1 top#(ok(X)) -> active#(X):10
                       -->_1 top#(mark(X)) -> top#(proper(X)):9
                       -->_1 top#(mark(X)) -> proper#(X):8
                    
                    10:W:top#(ok(X)) -> active#(X)
                       -->_1 active#(g(X)) -> c_3(active#(X)):3
                       -->_1 active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y)):2
                       -->_1 active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)):1
                    
                    11:W:top#(ok(X)) -> top#(active(X))
                       -->_1 top#(ok(X)) -> top#(active(X)):11
                       -->_1 top#(ok(X)) -> active#(X):10
                       -->_1 top#(mark(X)) -> top#(proper(X)):9
                       -->_1 top#(mark(X)) -> proper#(X):8
                    
                  The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
                    9:  top#(mark(X)) -> top#(proper(X))       
                    11: top#(ok(X)) -> top#(active(X))         
                    10: top#(ok(X)) -> active#(X)              
                    8:  top#(mark(X)) -> proper#(X)            
                    6:  proper#(f(X1,X2)) ->                   
                          c_8(f#(proper(X1),proper(X2))        
                             ,proper#(X1)                      
                             ,proper#(X2))                     
                    7:  proper#(g(X)) -> c_9(proper#(X))       
                    1:  active#(f(X1,X2)) ->                   
                          c_1(f#(active(X1),X2)                
                             ,active#(X1))                     
                    3:  active#(g(X)) -> c_3(active#(X))       
                    2:  active#(f(g(X),Y)) -> c_2(f#(X         
                                                    ,f(g(X),Y))
                                                 ,f#(g(X),Y))  
                    5:  f#(ok(X1),ok(X2)) -> c_5(f#(X1         
                                                   ,X2))       
                    4:  f#(mark(X1),X2) -> c_4(f#(X1           
                                                 ,X2))         
            *** 1.1.1.1.2.2.2.2.1.1.2.1 Progress [(O(1),O(1))]  ***
                Considered Problem:
                  Strict DP Rules:
                    
                  Strict TRS Rules:
                    
                  Weak DP Rules:
                    
                  Weak TRS Rules:
                    active(f(X1,X2)) -> f(active(X1),X2)
                    active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                    active(g(X)) -> g(active(X))
                    f(mark(X1),X2) -> mark(f(X1,X2))
                    f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                    g(mark(X)) -> mark(g(X))
                    g(ok(X)) -> ok(g(X))
                    proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                    proper(g(X)) -> g(proper(X))
                  Signature:
                    {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/2,c_3/1,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/1,c_10/2,c_11/2}
                  Obligation:
                    Innermost
                    basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
                Applied Processor:
                  EmptyProcessor
                Proof:
                  The problem is already closed. The intended complexity is O(1).
            
  *** 1.1.1.2 Progress [(?,O(n^2))]  ***
      Considered Problem:
        Strict DP Rules:
          proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
          proper#(g(X)) -> c_9(g#(proper(X)),proper#(X))
          top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
          top#(ok(X)) -> c_11(top#(active(X)),active#(X))
        Strict TRS Rules:
          
        Weak DP Rules:
          active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1))
          active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X))
          active#(g(X)) -> c_3(g#(active(X)),active#(X))
          f#(mark(X1),X2) -> c_4(f#(X1,X2))
          f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2))
          g#(mark(X)) -> c_6(g#(X))
          g#(ok(X)) -> c_7(g#(X))
        Weak TRS Rules:
          active(f(X1,X2)) -> f(active(X1),X2)
          active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
          active(g(X)) -> g(active(X))
          f(mark(X1),X2) -> mark(f(X1,X2))
          f(ok(X1),ok(X2)) -> ok(f(X1,X2))
          g(mark(X)) -> mark(g(X))
          g(ok(X)) -> ok(g(X))
          proper(f(X1,X2)) -> f(proper(X1),proper(X2))
          proper(g(X)) -> g(proper(X))
        Signature:
          {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2}
        Obligation:
          Innermost
          basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
      Applied Processor:
        RemoveWeakSuffixes
      Proof:
        Consider the dependency graph
          1:S:proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
             -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):9
             -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):8
             -->_3 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):2
             -->_2 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):2
             -->_3 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):1
             -->_2 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):1
          
          2:S:proper#(g(X)) -> c_9(g#(proper(X)),proper#(X))
             -->_1 g#(ok(X)) -> c_7(g#(X)):11
             -->_1 g#(mark(X)) -> c_6(g#(X)):10
             -->_2 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):2
             -->_2 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):1
          
          3:S:top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
             -->_1 top#(ok(X)) -> c_11(top#(active(X)),active#(X)):4
             -->_1 top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)):3
             -->_2 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):2
             -->_2 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):1
          
          4:S:top#(ok(X)) -> c_11(top#(active(X)),active#(X))
             -->_2 active#(g(X)) -> c_3(g#(active(X)),active#(X)):7
             -->_2 active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)):6
             -->_2 active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)):5
             -->_1 top#(ok(X)) -> c_11(top#(active(X)),active#(X)):4
             -->_1 top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)):3
          
          5:W:active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1))
             -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):9
             -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):8
             -->_2 active#(g(X)) -> c_3(g#(active(X)),active#(X)):7
             -->_2 active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)):6
             -->_2 active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)):5
          
          6:W:active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X))
             -->_3 g#(ok(X)) -> c_7(g#(X)):11
             -->_3 g#(mark(X)) -> c_6(g#(X)):10
             -->_2 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):9
             -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):9
             -->_2 f#(mark(X1),X2) -> c_4(f#(X1,X2)):8
             -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):8
          
          7:W:active#(g(X)) -> c_3(g#(active(X)),active#(X))
             -->_1 g#(ok(X)) -> c_7(g#(X)):11
             -->_1 g#(mark(X)) -> c_6(g#(X)):10
             -->_2 active#(g(X)) -> c_3(g#(active(X)),active#(X)):7
             -->_2 active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)):6
             -->_2 active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)):5
          
          8:W:f#(mark(X1),X2) -> c_4(f#(X1,X2))
             -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):9
             -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):8
          
          9:W:f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2))
             -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):9
             -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):8
          
          10:W:g#(mark(X)) -> c_6(g#(X))
             -->_1 g#(ok(X)) -> c_7(g#(X)):11
             -->_1 g#(mark(X)) -> c_6(g#(X)):10
          
          11:W:g#(ok(X)) -> c_7(g#(X))
             -->_1 g#(ok(X)) -> c_7(g#(X)):11
             -->_1 g#(mark(X)) -> c_6(g#(X)):10
          
        The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
          7:  active#(g(X)) ->                       
                c_3(g#(active(X)),active#(X))        
          5:  active#(f(X1,X2)) ->                   
                c_1(f#(active(X1),X2)                
                   ,active#(X1))                     
          6:  active#(f(g(X),Y)) -> c_2(f#(X         
                                          ,f(g(X),Y))
                                       ,f#(g(X),Y)   
                                       ,g#(X))       
          11: g#(ok(X)) -> c_7(g#(X))                
          10: g#(mark(X)) -> c_6(g#(X))              
          9:  f#(ok(X1),ok(X2)) -> c_5(f#(X1         
                                         ,X2))       
          8:  f#(mark(X1),X2) -> c_4(f#(X1           
                                       ,X2))         
  *** 1.1.1.2.1 Progress [(?,O(n^2))]  ***
      Considered Problem:
        Strict DP Rules:
          proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
          proper#(g(X)) -> c_9(g#(proper(X)),proper#(X))
          top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
          top#(ok(X)) -> c_11(top#(active(X)),active#(X))
        Strict TRS Rules:
          
        Weak DP Rules:
          
        Weak TRS Rules:
          active(f(X1,X2)) -> f(active(X1),X2)
          active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
          active(g(X)) -> g(active(X))
          f(mark(X1),X2) -> mark(f(X1,X2))
          f(ok(X1),ok(X2)) -> ok(f(X1,X2))
          g(mark(X)) -> mark(g(X))
          g(ok(X)) -> ok(g(X))
          proper(f(X1,X2)) -> f(proper(X1),proper(X2))
          proper(g(X)) -> g(proper(X))
        Signature:
          {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2}
        Obligation:
          Innermost
          basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
      Applied Processor:
        SimplifyRHS
      Proof:
        Consider the dependency graph
          1:S:proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2))
             -->_3 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):2
             -->_2 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):2
             -->_3 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):1
             -->_2 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):1
          
          2:S:proper#(g(X)) -> c_9(g#(proper(X)),proper#(X))
             -->_2 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):2
             -->_2 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):1
          
          3:S:top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
             -->_1 top#(ok(X)) -> c_11(top#(active(X)),active#(X)):4
             -->_1 top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)):3
             -->_2 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):2
             -->_2 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):1
          
          4:S:top#(ok(X)) -> c_11(top#(active(X)),active#(X))
             -->_1 top#(ok(X)) -> c_11(top#(active(X)),active#(X)):4
             -->_1 top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)):3
          
        Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified:
          proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2))
          proper#(g(X)) -> c_9(proper#(X))
          top#(ok(X)) -> c_11(top#(active(X)))
  *** 1.1.1.2.1.1 Progress [(?,O(n^2))]  ***
      Considered Problem:
        Strict DP Rules:
          proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2))
          proper#(g(X)) -> c_9(proper#(X))
          top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
          top#(ok(X)) -> c_11(top#(active(X)))
        Strict TRS Rules:
          
        Weak DP Rules:
          
        Weak TRS Rules:
          active(f(X1,X2)) -> f(active(X1),X2)
          active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
          active(g(X)) -> g(active(X))
          f(mark(X1),X2) -> mark(f(X1,X2))
          f(ok(X1),ok(X2)) -> ok(f(X1,X2))
          g(mark(X)) -> mark(g(X))
          g(ok(X)) -> ok(g(X))
          proper(f(X1,X2)) -> f(proper(X1),proper(X2))
          proper(g(X)) -> g(proper(X))
        Signature:
          {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1}
        Obligation:
          Innermost
          basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
      Applied Processor:
        Decompose {onSelection = all cycle independent sub-graph, withBound = RelativeAdd}
      Proof:
        We analyse the complexity of following sub-problems (R) and (S).
        Problem (S) is obtained from the input problem by shifting strict rules from (R) into the weak component.
        
        Problem (R)
          Strict DP Rules:
            proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2))
            proper#(g(X)) -> c_9(proper#(X))
          Strict TRS Rules:
            
          Weak DP Rules:
            top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
            top#(ok(X)) -> c_11(top#(active(X)))
          Weak TRS Rules:
            active(f(X1,X2)) -> f(active(X1),X2)
            active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
            active(g(X)) -> g(active(X))
            f(mark(X1),X2) -> mark(f(X1,X2))
            f(ok(X1),ok(X2)) -> ok(f(X1,X2))
            g(mark(X)) -> mark(g(X))
            g(ok(X)) -> ok(g(X))
            proper(f(X1,X2)) -> f(proper(X1),proper(X2))
            proper(g(X)) -> g(proper(X))
          Signature:
            {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1}
          Obligation:
            Innermost
            basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
        
        Problem (S)
          Strict DP Rules:
            top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
            top#(ok(X)) -> c_11(top#(active(X)))
          Strict TRS Rules:
            
          Weak DP Rules:
            proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2))
            proper#(g(X)) -> c_9(proper#(X))
          Weak TRS Rules:
            active(f(X1,X2)) -> f(active(X1),X2)
            active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
            active(g(X)) -> g(active(X))
            f(mark(X1),X2) -> mark(f(X1,X2))
            f(ok(X1),ok(X2)) -> ok(f(X1,X2))
            g(mark(X)) -> mark(g(X))
            g(ok(X)) -> ok(g(X))
            proper(f(X1,X2)) -> f(proper(X1),proper(X2))
            proper(g(X)) -> g(proper(X))
          Signature:
            {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1}
          Obligation:
            Innermost
            basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
    *** 1.1.1.2.1.1.1 Progress [(?,O(n^2))]  ***
        Considered Problem:
          Strict DP Rules:
            proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2))
            proper#(g(X)) -> c_9(proper#(X))
          Strict TRS Rules:
            
          Weak DP Rules:
            top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
            top#(ok(X)) -> c_11(top#(active(X)))
          Weak TRS Rules:
            active(f(X1,X2)) -> f(active(X1),X2)
            active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
            active(g(X)) -> g(active(X))
            f(mark(X1),X2) -> mark(f(X1,X2))
            f(ok(X1),ok(X2)) -> ok(f(X1,X2))
            g(mark(X)) -> mark(g(X))
            g(ok(X)) -> ok(g(X))
            proper(f(X1,X2)) -> f(proper(X1),proper(X2))
            proper(g(X)) -> g(proper(X))
          Signature:
            {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1}
          Obligation:
            Innermost
            basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
        Applied Processor:
          DecomposeDG {onSelection = all below first cut in WDG, onUpper = Just someStrategy, onLower = Nothing}
        Proof:
          We decompose the input problem according to the dependency graph into the upper component
            top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
            top#(ok(X)) -> c_11(top#(active(X)))
          and a lower component
            proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2))
            proper#(g(X)) -> c_9(proper#(X))
          Further, following extension rules are added to the lower component.
            top#(mark(X)) -> proper#(X)
            top#(mark(X)) -> top#(proper(X))
            top#(ok(X)) -> top#(active(X))
      *** 1.1.1.2.1.1.1.1 Progress [(?,O(1))]  ***
          Considered Problem:
            Strict DP Rules:
              top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
            Strict TRS Rules:
              
            Weak DP Rules:
              top#(ok(X)) -> c_11(top#(active(X)))
            Weak TRS Rules:
              active(f(X1,X2)) -> f(active(X1),X2)
              active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
              active(g(X)) -> g(active(X))
              f(mark(X1),X2) -> mark(f(X1,X2))
              f(ok(X1),ok(X2)) -> ok(f(X1,X2))
              g(mark(X)) -> mark(g(X))
              g(ok(X)) -> ok(g(X))
              proper(f(X1,X2)) -> f(proper(X1),proper(X2))
              proper(g(X)) -> g(proper(X))
            Signature:
              {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1}
            Obligation:
              Innermost
              basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
          Applied Processor:
            PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 0, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy}}
          Proof:
            We first use the processor NaturalMI {miDimension = 1, miDegree = 0, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy} to orient following rules strictly:
              1: top#(mark(X)) ->                  
                   c_10(top#(proper(X)),proper#(X))
              
            The strictly oriented rules are moved into the weak component.
        *** 1.1.1.2.1.1.1.1.1 Progress [(?,O(1))]  ***
            Considered Problem:
              Strict DP Rules:
                top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
              Strict TRS Rules:
                
              Weak DP Rules:
                top#(ok(X)) -> c_11(top#(active(X)))
              Weak TRS Rules:
                active(f(X1,X2)) -> f(active(X1),X2)
                active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                active(g(X)) -> g(active(X))
                f(mark(X1),X2) -> mark(f(X1,X2))
                f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                g(mark(X)) -> mark(g(X))
                g(ok(X)) -> ok(g(X))
                proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                proper(g(X)) -> g(proper(X))
              Signature:
                {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1}
              Obligation:
                Innermost
                basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
            Applied Processor:
              NaturalMI {miDimension = 1, miDegree = 0, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation any intersect of rules of CDG leaf and strict-rules, greedy = NoGreedy}
            Proof:
              We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 0 non-zero interpretation-entries in the diagonal of the component-wise maxima):
              The following argument positions are considered usable:
                uargs(c_10) = {1},
                uargs(c_11) = {1}
              
              Following symbols are considered usable:
                {active,f,g,proper,active#,f#,g#,proper#,top#}
              TcT has computed the following interpretation:
                 p(active) = [4]                  
                      p(f) = [1] x1 + [0]         
                      p(g) = [1] x1 + [0]         
                   p(mark) = [4]                  
                     p(ok) = [7]                  
                 p(proper) = [0]                  
                    p(top) = [2] x1 + [2]         
                p(active#) = [1] x1 + [2]         
                     p(f#) = [2] x2 + [1]         
                     p(g#) = [4] x1 + [1]         
                p(proper#) = [2]                  
                   p(top#) = [4] x1 + [1]         
                    p(c_1) = [0]                  
                    p(c_2) = [2] x2 + [2] x3 + [1]
                    p(c_3) = [1] x1 + [1]         
                    p(c_4) = [8] x1 + [0]         
                    p(c_5) = [1] x1 + [1]         
                    p(c_6) = [1] x1 + [1]         
                    p(c_7) = [0]                  
                    p(c_8) = [1]                  
                    p(c_9) = [1] x1 + [1]         
                   p(c_10) = [8] x1 + [2] x2 + [0]
                   p(c_11) = [1] x1 + [12]        
              
              Following rules are strictly oriented:
              top#(mark(X)) = [17]                            
                            > [12]                            
                            = c_10(top#(proper(X)),proper#(X))
              
              
              Following rules are (at-least) weakly oriented:
                    top#(ok(X)) =  [29]                    
                                >= [29]                    
                                =  c_11(top#(active(X)))   
              
               active(f(X1,X2)) =  [4]                     
                                >= [4]                     
                                =  f(active(X1),X2)        
              
              active(f(g(X),Y)) =  [4]                     
                                >= [4]                     
                                =  mark(f(X,f(g(X),Y)))    
              
                   active(g(X)) =  [4]                     
                                >= [4]                     
                                =  g(active(X))            
              
                 f(mark(X1),X2) =  [4]                     
                                >= [4]                     
                                =  mark(f(X1,X2))          
              
               f(ok(X1),ok(X2)) =  [7]                     
                                >= [7]                     
                                =  ok(f(X1,X2))            
              
                     g(mark(X)) =  [4]                     
                                >= [4]                     
                                =  mark(g(X))              
              
                       g(ok(X)) =  [7]                     
                                >= [7]                     
                                =  ok(g(X))                
              
               proper(f(X1,X2)) =  [0]                     
                                >= [0]                     
                                =  f(proper(X1),proper(X2))
              
                   proper(g(X)) =  [0]                     
                                >= [0]                     
                                =  g(proper(X))            
              
        *** 1.1.1.2.1.1.1.1.1.1 Progress [(?,O(1))]  ***
            Considered Problem:
              Strict DP Rules:
                
              Strict TRS Rules:
                
              Weak DP Rules:
                top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
                top#(ok(X)) -> c_11(top#(active(X)))
              Weak TRS Rules:
                active(f(X1,X2)) -> f(active(X1),X2)
                active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                active(g(X)) -> g(active(X))
                f(mark(X1),X2) -> mark(f(X1,X2))
                f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                g(mark(X)) -> mark(g(X))
                g(ok(X)) -> ok(g(X))
                proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                proper(g(X)) -> g(proper(X))
              Signature:
                {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1}
              Obligation:
                Innermost
                basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
            Applied Processor:
              Assumption
            Proof:
              ()
        
        *** 1.1.1.2.1.1.1.1.2 Progress [(O(1),O(1))]  ***
            Considered Problem:
              Strict DP Rules:
                
              Strict TRS Rules:
                
              Weak DP Rules:
                top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
                top#(ok(X)) -> c_11(top#(active(X)))
              Weak TRS Rules:
                active(f(X1,X2)) -> f(active(X1),X2)
                active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                active(g(X)) -> g(active(X))
                f(mark(X1),X2) -> mark(f(X1,X2))
                f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                g(mark(X)) -> mark(g(X))
                g(ok(X)) -> ok(g(X))
                proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                proper(g(X)) -> g(proper(X))
              Signature:
                {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1}
              Obligation:
                Innermost
                basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
            Applied Processor:
              RemoveWeakSuffixes
            Proof:
              Consider the dependency graph
                1:W:top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
                   -->_1 top#(ok(X)) -> c_11(top#(active(X))):2
                   -->_1 top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)):1
                
                2:W:top#(ok(X)) -> c_11(top#(active(X)))
                   -->_1 top#(ok(X)) -> c_11(top#(active(X))):2
                   -->_1 top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)):1
                
              The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
                1: top#(mark(X)) ->                  
                     c_10(top#(proper(X)),proper#(X))
                2: top#(ok(X)) ->                    
                     c_11(top#(active(X)))           
        *** 1.1.1.2.1.1.1.1.2.1 Progress [(O(1),O(1))]  ***
            Considered Problem:
              Strict DP Rules:
                
              Strict TRS Rules:
                
              Weak DP Rules:
                
              Weak TRS Rules:
                active(f(X1,X2)) -> f(active(X1),X2)
                active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                active(g(X)) -> g(active(X))
                f(mark(X1),X2) -> mark(f(X1,X2))
                f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                g(mark(X)) -> mark(g(X))
                g(ok(X)) -> ok(g(X))
                proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                proper(g(X)) -> g(proper(X))
              Signature:
                {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1}
              Obligation:
                Innermost
                basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
            Applied Processor:
              EmptyProcessor
            Proof:
              The problem is already closed. The intended complexity is O(1).
        
      *** 1.1.1.2.1.1.1.2 Progress [(?,O(n^2))]  ***
          Considered Problem:
            Strict DP Rules:
              proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2))
              proper#(g(X)) -> c_9(proper#(X))
            Strict TRS Rules:
              
            Weak DP Rules:
              top#(mark(X)) -> proper#(X)
              top#(mark(X)) -> top#(proper(X))
              top#(ok(X)) -> top#(active(X))
            Weak TRS Rules:
              active(f(X1,X2)) -> f(active(X1),X2)
              active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
              active(g(X)) -> g(active(X))
              f(mark(X1),X2) -> mark(f(X1,X2))
              f(ok(X1),ok(X2)) -> ok(f(X1,X2))
              g(mark(X)) -> mark(g(X))
              g(ok(X)) -> ok(g(X))
              proper(f(X1,X2)) -> f(proper(X1),proper(X2))
              proper(g(X)) -> g(proper(X))
            Signature:
              {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1}
            Obligation:
              Innermost
              basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
          Applied Processor:
            PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy}}
          Proof:
            We first use the processor NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy} to orient following rules strictly:
              2: proper#(g(X)) -> c_9(proper#(X))
              
            The strictly oriented rules are moved into the weak component.
        *** 1.1.1.2.1.1.1.2.1 Progress [(?,O(n^2))]  ***
            Considered Problem:
              Strict DP Rules:
                proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2))
                proper#(g(X)) -> c_9(proper#(X))
              Strict TRS Rules:
                
              Weak DP Rules:
                top#(mark(X)) -> proper#(X)
                top#(mark(X)) -> top#(proper(X))
                top#(ok(X)) -> top#(active(X))
              Weak TRS Rules:
                active(f(X1,X2)) -> f(active(X1),X2)
                active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                active(g(X)) -> g(active(X))
                f(mark(X1),X2) -> mark(f(X1,X2))
                f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                g(mark(X)) -> mark(g(X))
                g(ok(X)) -> ok(g(X))
                proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                proper(g(X)) -> g(proper(X))
              Signature:
                {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1}
              Obligation:
                Innermost
                basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
            Applied Processor:
              NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation any intersect of rules of CDG leaf and strict-rules, greedy = NoGreedy}
            Proof:
              We apply a matrix interpretation of kind constructor based matrix interpretation:
              The following argument positions are considered usable:
                uargs(c_8) = {1,2},
                uargs(c_9) = {1}
              
              Following symbols are considered usable:
                {active,f,g,proper,active#,f#,g#,proper#,top#}
              TcT has computed the following interpretation:
                 p(active) = [1 0] x1 + [0]           
                             [0 3]      [2]           
                      p(f) = [1 0] x1 + [2 0] x2 + [0]
                             [0 1]      [0 2]      [0]
                      p(g) = [4 0] x1 + [0]           
                             [0 2]      [1]           
                   p(mark) = [0 0] x1 + [0]           
                             [0 1]      [1]           
                     p(ok) = [1 2] x1 + [1]           
                             [0 1]      [1]           
                 p(proper) = [0 0] x1 + [0]           
                             [0 1]      [0]           
                    p(top) = [0]                      
                             [0]                      
                p(active#) = [0 0] x1 + [1]           
                             [2 0]      [0]           
                     p(f#) = [1 4] x1 + [0 0] x2 + [1]
                             [1 1]      [0 2]      [1]
                     p(g#) = [0 1] x1 + [0]           
                             [2 0]      [0]           
                p(proper#) = [0 1] x1 + [0]           
                             [0 0]      [0]           
                   p(top#) = [1 1] x1 + [4]           
                             [4 1]      [4]           
                    p(c_1) = [1 1] x2 + [4]           
                             [1 0]      [0]           
                    p(c_2) = [0 2] x1 + [1 1] x2 + [1]
                             [0 1]      [1 0]      [0]
                    p(c_3) = [1 1] x1 + [1 2] x2 + [1]
                             [0 0]      [2 0]      [1]
                    p(c_4) = [0 1] x1 + [0]           
                             [0 1]      [1]           
                    p(c_5) = [0 0] x1 + [1]           
                             [4 2]      [4]           
                    p(c_6) = [0 1] x1 + [0]           
                             [0 4]      [0]           
                    p(c_7) = [1 0] x1 + [4]           
                             [0 0]      [0]           
                    p(c_8) = [1 0] x1 + [2 0] x2 + [0]
                             [0 2]      [0 2]      [0]
                    p(c_9) = [1 0] x1 + [0]           
                             [0 0]      [0]           
                   p(c_10) = [1 1] x2 + [4]           
                             [0 1]      [0]           
                   p(c_11) = [0 4] x1 + [0]           
                             [1 0]      [0]           
              
              Following rules are strictly oriented:
              proper#(g(X)) = [0 2] X + [1]  
                              [0 0]     [0]  
                            > [0 1] X + [0]  
                              [0 0]     [0]  
                            = c_9(proper#(X))
              
              
              Following rules are (at-least) weakly oriented:
              proper#(f(X1,X2)) =  [0 1] X1 + [0 2] X2 + [0]   
                                   [0 0]      [0 0]      [0]   
                                >= [0 1] X1 + [0 2] X2 + [0]   
                                   [0 0]      [0 0]      [0]   
                                =  c_8(proper#(X1),proper#(X2))
              
                  top#(mark(X)) =  [0 1] X + [5]               
                                   [0 1]     [5]               
                                >= [0 1] X + [0]               
                                   [0 0]     [0]               
                                =  proper#(X)                  
              
                  top#(mark(X)) =  [0 1] X + [5]               
                                   [0 1]     [5]               
                                >= [0 1] X + [4]               
                                   [0 1]     [4]               
                                =  top#(proper(X))             
              
                    top#(ok(X)) =  [1 3] X + [6]               
                                   [4 9]     [9]               
                                >= [1 3] X + [6]               
                                   [4 3]     [6]               
                                =  top#(active(X))             
              
               active(f(X1,X2)) =  [1 0] X1 + [2 0] X2 + [0]   
                                   [0 3]      [0 6]      [2]   
                                >= [1 0] X1 + [2 0] X2 + [0]   
                                   [0 3]      [0 2]      [2]   
                                =  f(active(X1),X2)            
              
              active(f(g(X),Y)) =  [4 0] X + [2 0] Y + [0]     
                                   [0 6]     [0 6]     [5]     
                                >= [0 0] X + [0 0] Y + [0]     
                                   [0 5]     [0 4]     [3]     
                                =  mark(f(X,f(g(X),Y)))        
              
                   active(g(X)) =  [4 0] X + [0]               
                                   [0 6]     [5]               
                                >= [4 0] X + [0]               
                                   [0 6]     [5]               
                                =  g(active(X))                
              
                 f(mark(X1),X2) =  [0 0] X1 + [2 0] X2 + [0]   
                                   [0 1]      [0 2]      [1]   
                                >= [0 0] X1 + [0 0] X2 + [0]   
                                   [0 1]      [0 2]      [1]   
                                =  mark(f(X1,X2))              
              
               f(ok(X1),ok(X2)) =  [1 2] X1 + [2 4] X2 + [3]   
                                   [0 1]      [0 2]      [3]   
                                >= [1 2] X1 + [2 4] X2 + [1]   
                                   [0 1]      [0 2]      [1]   
                                =  ok(f(X1,X2))                
              
                     g(mark(X)) =  [0 0] X + [0]               
                                   [0 2]     [3]               
                                >= [0 0] X + [0]               
                                   [0 2]     [2]               
                                =  mark(g(X))                  
              
                       g(ok(X)) =  [4 8] X + [4]               
                                   [0 2]     [3]               
                                >= [4 4] X + [3]               
                                   [0 2]     [2]               
                                =  ok(g(X))                    
              
               proper(f(X1,X2)) =  [0 0] X1 + [0 0] X2 + [0]   
                                   [0 1]      [0 2]      [0]   
                                >= [0 0] X1 + [0 0] X2 + [0]   
                                   [0 1]      [0 2]      [0]   
                                =  f(proper(X1),proper(X2))    
              
                   proper(g(X)) =  [0 0] X + [0]               
                                   [0 2]     [1]               
                                >= [0 0] X + [0]               
                                   [0 2]     [1]               
                                =  g(proper(X))                
              
        *** 1.1.1.2.1.1.1.2.1.1 Progress [(?,O(1))]  ***
            Considered Problem:
              Strict DP Rules:
                proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2))
              Strict TRS Rules:
                
              Weak DP Rules:
                proper#(g(X)) -> c_9(proper#(X))
                top#(mark(X)) -> proper#(X)
                top#(mark(X)) -> top#(proper(X))
                top#(ok(X)) -> top#(active(X))
              Weak TRS Rules:
                active(f(X1,X2)) -> f(active(X1),X2)
                active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                active(g(X)) -> g(active(X))
                f(mark(X1),X2) -> mark(f(X1,X2))
                f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                g(mark(X)) -> mark(g(X))
                g(ok(X)) -> ok(g(X))
                proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                proper(g(X)) -> g(proper(X))
              Signature:
                {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1}
              Obligation:
                Innermost
                basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
            Applied Processor:
              Assumption
            Proof:
              ()
        
        *** 1.1.1.2.1.1.1.2.2 Progress [(?,O(n^2))]  ***
            Considered Problem:
              Strict DP Rules:
                proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2))
              Strict TRS Rules:
                
              Weak DP Rules:
                proper#(g(X)) -> c_9(proper#(X))
                top#(mark(X)) -> proper#(X)
                top#(mark(X)) -> top#(proper(X))
                top#(ok(X)) -> top#(active(X))
              Weak TRS Rules:
                active(f(X1,X2)) -> f(active(X1),X2)
                active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                active(g(X)) -> g(active(X))
                f(mark(X1),X2) -> mark(f(X1,X2))
                f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                g(mark(X)) -> mark(g(X))
                g(ok(X)) -> ok(g(X))
                proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                proper(g(X)) -> g(proper(X))
              Signature:
                {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1}
              Obligation:
                Innermost
                basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
            Applied Processor:
              PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy}}
            Proof:
              We first use the processor NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy} to orient following rules strictly:
                1: proper#(f(X1,X2)) ->          
                     c_8(proper#(X1),proper#(X2))
                
              The strictly oriented rules are moved into the weak component.
          *** 1.1.1.2.1.1.1.2.2.1 Progress [(?,O(n^2))]  ***
              Considered Problem:
                Strict DP Rules:
                  proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2))
                Strict TRS Rules:
                  
                Weak DP Rules:
                  proper#(g(X)) -> c_9(proper#(X))
                  top#(mark(X)) -> proper#(X)
                  top#(mark(X)) -> top#(proper(X))
                  top#(ok(X)) -> top#(active(X))
                Weak TRS Rules:
                  active(f(X1,X2)) -> f(active(X1),X2)
                  active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                  active(g(X)) -> g(active(X))
                  f(mark(X1),X2) -> mark(f(X1,X2))
                  f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                  g(mark(X)) -> mark(g(X))
                  g(ok(X)) -> ok(g(X))
                  proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                  proper(g(X)) -> g(proper(X))
                Signature:
                  {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1}
                Obligation:
                  Innermost
                  basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
              Applied Processor:
                NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation any intersect of rules of CDG leaf and strict-rules, greedy = NoGreedy}
              Proof:
                We apply a matrix interpretation of kind constructor based matrix interpretation:
                The following argument positions are considered usable:
                  uargs(c_8) = {1,2},
                  uargs(c_9) = {1}
                
                Following symbols are considered usable:
                  {active,f,g,proper,active#,f#,g#,proper#,top#}
                TcT has computed the following interpretation:
                   p(active) = [1 0] x1 + [0]           
                               [0 4]      [1]           
                        p(f) = [1 0] x1 + [2 0] x2 + [0]
                               [0 1]      [0 2]      [1]
                        p(g) = [2 0] x1 + [0]           
                               [0 1]      [1]           
                     p(mark) = [0 0] x1 + [0]           
                               [0 1]      [4]           
                       p(ok) = [1 1] x1 + [2]           
                               [0 0]      [1]           
                   p(proper) = [0 0] x1 + [0]           
                               [0 1]      [0]           
                      p(top) = [0 0] x1 + [1]           
                               [0 1]      [0]           
                  p(active#) = [1 1] x1 + [1]           
                               [0 0]      [2]           
                       p(f#) = [0 0] x1 + [0]           
                               [1 0]      [2]           
                       p(g#) = [0 1] x1 + [1]           
                               [4 2]      [1]           
                  p(proper#) = [0 1] x1 + [0]           
                               [0 1]      [0]           
                     p(top#) = [4 1] x1 + [6]           
                               [6 1]      [0]           
                      p(c_1) = [1 1] x2 + [1]           
                               [4 0]      [0]           
                      p(c_2) = [0 0] x1 + [1 4] x3 + [0]
                               [1 2]      [0 1]      [4]
                      p(c_3) = [1 0] x1 + [0 0] x2 + [0]
                               [0 4]      [0 1]      [2]
                      p(c_4) = [4 2] x1 + [0]           
                               [0 1]      [1]           
                      p(c_5) = [4 1] x1 + [1]           
                               [0 1]      [4]           
                      p(c_6) = [2 0] x1 + [0]           
                               [2 0]      [0]           
                      p(c_7) = [1]                      
                               [0]                      
                      p(c_8) = [1 0] x1 + [1 1] x2 + [0]
                               [1 0]      [1 1]      [1]
                      p(c_9) = [1 0] x1 + [1]           
                               [0 1]      [1]           
                     p(c_10) = [0 0] x2 + [0]           
                               [1 0]      [1]           
                     p(c_11) = [1 0] x1 + [0]           
                               [1 1]      [1]           
                
                Following rules are strictly oriented:
                proper#(f(X1,X2)) = [0 1] X1 + [0 2] X2 + [1]   
                                    [0 1]      [0 2]      [1]   
                                  > [0 1] X1 + [0 2] X2 + [0]   
                                    [0 1]      [0 2]      [1]   
                                  = c_8(proper#(X1),proper#(X2))
                
                
                Following rules are (at-least) weakly oriented:
                    proper#(g(X)) =  [0 1] X + [1]            
                                     [0 1]     [1]            
                                  >= [0 1] X + [1]            
                                     [0 1]     [1]            
                                  =  c_9(proper#(X))          
                
                    top#(mark(X)) =  [0 1] X + [10]           
                                     [0 1]     [4]            
                                  >= [0 1] X + [0]            
                                     [0 1]     [0]            
                                  =  proper#(X)               
                
                    top#(mark(X)) =  [0 1] X + [10]           
                                     [0 1]     [4]            
                                  >= [0 1] X + [6]            
                                     [0 1]     [0]            
                                  =  top#(proper(X))          
                
                      top#(ok(X)) =  [4 4] X + [15]           
                                     [6 6]     [13]           
                                  >= [4 4] X + [7]            
                                     [6 4]     [1]            
                                  =  top#(active(X))          
                
                 active(f(X1,X2)) =  [1 0] X1 + [2 0] X2 + [0]
                                     [0 4]      [0 8]      [5]
                                  >= [1 0] X1 + [2 0] X2 + [0]
                                     [0 4]      [0 2]      [2]
                                  =  f(active(X1),X2)         
                
                active(f(g(X),Y)) =  [2 0] X + [2 0] Y + [0]  
                                     [0 4]     [0 8]     [9]  
                                  >= [0 0] X + [0 0] Y + [0]  
                                     [0 3]     [0 4]     [9]  
                                  =  mark(f(X,f(g(X),Y)))     
                
                     active(g(X)) =  [2 0] X + [0]            
                                     [0 4]     [5]            
                                  >= [2 0] X + [0]            
                                     [0 4]     [2]            
                                  =  g(active(X))             
                
                   f(mark(X1),X2) =  [0 0] X1 + [2 0] X2 + [0]
                                     [0 1]      [0 2]      [5]
                                  >= [0 0] X1 + [0 0] X2 + [0]
                                     [0 1]      [0 2]      [5]
                                  =  mark(f(X1,X2))           
                
                 f(ok(X1),ok(X2)) =  [1 1] X1 + [2 2] X2 + [6]
                                     [0 0]      [0 0]      [4]
                                  >= [1 1] X1 + [2 2] X2 + [3]
                                     [0 0]      [0 0]      [1]
                                  =  ok(f(X1,X2))             
                
                       g(mark(X)) =  [0 0] X + [0]            
                                     [0 1]     [5]            
                                  >= [0 0] X + [0]            
                                     [0 1]     [5]            
                                  =  mark(g(X))               
                
                         g(ok(X)) =  [2 2] X + [4]            
                                     [0 0]     [2]            
                                  >= [2 1] X + [3]            
                                     [0 0]     [1]            
                                  =  ok(g(X))                 
                
                 proper(f(X1,X2)) =  [0 0] X1 + [0 0] X2 + [0]
                                     [0 1]      [0 2]      [1]
                                  >= [0 0] X1 + [0 0] X2 + [0]
                                     [0 1]      [0 2]      [1]
                                  =  f(proper(X1),proper(X2)) 
                
                     proper(g(X)) =  [0 0] X + [0]            
                                     [0 1]     [1]            
                                  >= [0 0] X + [0]            
                                     [0 1]     [1]            
                                  =  g(proper(X))             
                
          *** 1.1.1.2.1.1.1.2.2.1.1 Progress [(?,O(1))]  ***
              Considered Problem:
                Strict DP Rules:
                  
                Strict TRS Rules:
                  
                Weak DP Rules:
                  proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2))
                  proper#(g(X)) -> c_9(proper#(X))
                  top#(mark(X)) -> proper#(X)
                  top#(mark(X)) -> top#(proper(X))
                  top#(ok(X)) -> top#(active(X))
                Weak TRS Rules:
                  active(f(X1,X2)) -> f(active(X1),X2)
                  active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                  active(g(X)) -> g(active(X))
                  f(mark(X1),X2) -> mark(f(X1,X2))
                  f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                  g(mark(X)) -> mark(g(X))
                  g(ok(X)) -> ok(g(X))
                  proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                  proper(g(X)) -> g(proper(X))
                Signature:
                  {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1}
                Obligation:
                  Innermost
                  basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
              Applied Processor:
                Assumption
              Proof:
                ()
          
          *** 1.1.1.2.1.1.1.2.2.2 Progress [(O(1),O(1))]  ***
              Considered Problem:
                Strict DP Rules:
                  
                Strict TRS Rules:
                  
                Weak DP Rules:
                  proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2))
                  proper#(g(X)) -> c_9(proper#(X))
                  top#(mark(X)) -> proper#(X)
                  top#(mark(X)) -> top#(proper(X))
                  top#(ok(X)) -> top#(active(X))
                Weak TRS Rules:
                  active(f(X1,X2)) -> f(active(X1),X2)
                  active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                  active(g(X)) -> g(active(X))
                  f(mark(X1),X2) -> mark(f(X1,X2))
                  f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                  g(mark(X)) -> mark(g(X))
                  g(ok(X)) -> ok(g(X))
                  proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                  proper(g(X)) -> g(proper(X))
                Signature:
                  {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1}
                Obligation:
                  Innermost
                  basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
              Applied Processor:
                RemoveWeakSuffixes
              Proof:
                Consider the dependency graph
                  1:W:proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2))
                     -->_2 proper#(g(X)) -> c_9(proper#(X)):2
                     -->_1 proper#(g(X)) -> c_9(proper#(X)):2
                     -->_2 proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)):1
                     -->_1 proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)):1
                  
                  2:W:proper#(g(X)) -> c_9(proper#(X))
                     -->_1 proper#(g(X)) -> c_9(proper#(X)):2
                     -->_1 proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)):1
                  
                  3:W:top#(mark(X)) -> proper#(X)
                     -->_1 proper#(g(X)) -> c_9(proper#(X)):2
                     -->_1 proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)):1
                  
                  4:W:top#(mark(X)) -> top#(proper(X))
                     -->_1 top#(ok(X)) -> top#(active(X)):5
                     -->_1 top#(mark(X)) -> top#(proper(X)):4
                     -->_1 top#(mark(X)) -> proper#(X):3
                  
                  5:W:top#(ok(X)) -> top#(active(X))
                     -->_1 top#(ok(X)) -> top#(active(X)):5
                     -->_1 top#(mark(X)) -> top#(proper(X)):4
                     -->_1 top#(mark(X)) -> proper#(X):3
                  
                The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
                  4: top#(mark(X)) -> top#(proper(X))
                  5: top#(ok(X)) -> top#(active(X))  
                  3: top#(mark(X)) -> proper#(X)     
                  1: proper#(f(X1,X2)) ->            
                       c_8(proper#(X1),proper#(X2))  
                  2: proper#(g(X)) -> c_9(proper#(X))
          *** 1.1.1.2.1.1.1.2.2.2.1 Progress [(O(1),O(1))]  ***
              Considered Problem:
                Strict DP Rules:
                  
                Strict TRS Rules:
                  
                Weak DP Rules:
                  
                Weak TRS Rules:
                  active(f(X1,X2)) -> f(active(X1),X2)
                  active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                  active(g(X)) -> g(active(X))
                  f(mark(X1),X2) -> mark(f(X1,X2))
                  f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                  g(mark(X)) -> mark(g(X))
                  g(ok(X)) -> ok(g(X))
                  proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                  proper(g(X)) -> g(proper(X))
                Signature:
                  {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1}
                Obligation:
                  Innermost
                  basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
              Applied Processor:
                EmptyProcessor
              Proof:
                The problem is already closed. The intended complexity is O(1).
          
    *** 1.1.1.2.1.1.2 Progress [(?,O(n^1))]  ***
        Considered Problem:
          Strict DP Rules:
            top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
            top#(ok(X)) -> c_11(top#(active(X)))
          Strict TRS Rules:
            
          Weak DP Rules:
            proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2))
            proper#(g(X)) -> c_9(proper#(X))
          Weak TRS Rules:
            active(f(X1,X2)) -> f(active(X1),X2)
            active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
            active(g(X)) -> g(active(X))
            f(mark(X1),X2) -> mark(f(X1,X2))
            f(ok(X1),ok(X2)) -> ok(f(X1,X2))
            g(mark(X)) -> mark(g(X))
            g(ok(X)) -> ok(g(X))
            proper(f(X1,X2)) -> f(proper(X1),proper(X2))
            proper(g(X)) -> g(proper(X))
          Signature:
            {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1}
          Obligation:
            Innermost
            basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
        Applied Processor:
          RemoveWeakSuffixes
        Proof:
          Consider the dependency graph
            1:S:top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
               -->_2 proper#(g(X)) -> c_9(proper#(X)):4
               -->_2 proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)):3
               -->_1 top#(ok(X)) -> c_11(top#(active(X))):2
               -->_1 top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)):1
            
            2:S:top#(ok(X)) -> c_11(top#(active(X)))
               -->_1 top#(ok(X)) -> c_11(top#(active(X))):2
               -->_1 top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)):1
            
            3:W:proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2))
               -->_2 proper#(g(X)) -> c_9(proper#(X)):4
               -->_1 proper#(g(X)) -> c_9(proper#(X)):4
               -->_2 proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)):3
               -->_1 proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)):3
            
            4:W:proper#(g(X)) -> c_9(proper#(X))
               -->_1 proper#(g(X)) -> c_9(proper#(X)):4
               -->_1 proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)):3
            
          The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
            4: proper#(g(X)) -> c_9(proper#(X))
            3: proper#(f(X1,X2)) ->            
                 c_8(proper#(X1),proper#(X2))  
    *** 1.1.1.2.1.1.2.1 Progress [(?,O(n^1))]  ***
        Considered Problem:
          Strict DP Rules:
            top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
            top#(ok(X)) -> c_11(top#(active(X)))
          Strict TRS Rules:
            
          Weak DP Rules:
            
          Weak TRS Rules:
            active(f(X1,X2)) -> f(active(X1),X2)
            active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
            active(g(X)) -> g(active(X))
            f(mark(X1),X2) -> mark(f(X1,X2))
            f(ok(X1),ok(X2)) -> ok(f(X1,X2))
            g(mark(X)) -> mark(g(X))
            g(ok(X)) -> ok(g(X))
            proper(f(X1,X2)) -> f(proper(X1),proper(X2))
            proper(g(X)) -> g(proper(X))
          Signature:
            {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1}
          Obligation:
            Innermost
            basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
        Applied Processor:
          SimplifyRHS
        Proof:
          Consider the dependency graph
            1:S:top#(mark(X)) -> c_10(top#(proper(X)),proper#(X))
               -->_1 top#(ok(X)) -> c_11(top#(active(X))):2
               -->_1 top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)):1
            
            2:S:top#(ok(X)) -> c_11(top#(active(X)))
               -->_1 top#(ok(X)) -> c_11(top#(active(X))):2
               -->_1 top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)):1
            
          Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified:
            top#(mark(X)) -> c_10(top#(proper(X)))
    *** 1.1.1.2.1.1.2.1.1 Progress [(?,O(n^1))]  ***
        Considered Problem:
          Strict DP Rules:
            top#(mark(X)) -> c_10(top#(proper(X)))
            top#(ok(X)) -> c_11(top#(active(X)))
          Strict TRS Rules:
            
          Weak DP Rules:
            
          Weak TRS Rules:
            active(f(X1,X2)) -> f(active(X1),X2)
            active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
            active(g(X)) -> g(active(X))
            f(mark(X1),X2) -> mark(f(X1,X2))
            f(ok(X1),ok(X2)) -> ok(f(X1,X2))
            g(mark(X)) -> mark(g(X))
            g(ok(X)) -> ok(g(X))
            proper(f(X1,X2)) -> f(proper(X1),proper(X2))
            proper(g(X)) -> g(proper(X))
          Signature:
            {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/1,c_11/1}
          Obligation:
            Innermost
            basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
        Applied Processor:
          PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy}}
        Proof:
          We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy} to orient following rules strictly:
            2: top#(ok(X)) ->         
                 c_11(top#(active(X)))
            
          The strictly oriented rules are moved into the weak component.
      *** 1.1.1.2.1.1.2.1.1.1 Progress [(?,O(n^1))]  ***
          Considered Problem:
            Strict DP Rules:
              top#(mark(X)) -> c_10(top#(proper(X)))
              top#(ok(X)) -> c_11(top#(active(X)))
            Strict TRS Rules:
              
            Weak DP Rules:
              
            Weak TRS Rules:
              active(f(X1,X2)) -> f(active(X1),X2)
              active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
              active(g(X)) -> g(active(X))
              f(mark(X1),X2) -> mark(f(X1,X2))
              f(ok(X1),ok(X2)) -> ok(f(X1,X2))
              g(mark(X)) -> mark(g(X))
              g(ok(X)) -> ok(g(X))
              proper(f(X1,X2)) -> f(proper(X1),proper(X2))
              proper(g(X)) -> g(proper(X))
            Signature:
              {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/1,c_11/1}
            Obligation:
              Innermost
              basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
          Applied Processor:
            NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation any intersect of rules of CDG leaf and strict-rules, greedy = NoGreedy}
          Proof:
            We apply a matrix interpretation of kind constructor based matrix interpretation:
            The following argument positions are considered usable:
              uargs(c_10) = {1},
              uargs(c_11) = {1}
            
            Following symbols are considered usable:
              {active,f,g,proper,active#,f#,g#,proper#,top#}
            TcT has computed the following interpretation:
               p(active) = [1] x1 + [0]
                    p(f) = [4] x2 + [0]
                    p(g) = [1] x1 + [0]
                 p(mark) = [0]         
                   p(ok) = [1] x1 + [4]
               p(proper) = [0]         
                  p(top) = [2]         
              p(active#) = [1]         
                   p(f#) = [8] x2 + [1]
                   p(g#) = [0]         
              p(proper#) = [1]         
                 p(top#) = [1] x1 + [0]
                  p(c_1) = [1]         
                  p(c_2) = [0]         
                  p(c_3) = [1]         
                  p(c_4) = [2]         
                  p(c_5) = [2]         
                  p(c_6) = [1]         
                  p(c_7) = [1]         
                  p(c_8) = [0]         
                  p(c_9) = [0]         
                 p(c_10) = [4] x1 + [0]
                 p(c_11) = [1] x1 + [0]
            
            Following rules are strictly oriented:
            top#(ok(X)) = [1] X + [4]          
                        > [1] X + [0]          
                        = c_11(top#(active(X)))
            
            
            Following rules are (at-least) weakly oriented:
                top#(mark(X)) =  [0]                     
                              >= [0]                     
                              =  c_10(top#(proper(X)))   
            
             active(f(X1,X2)) =  [4] X2 + [0]            
                              >= [4] X2 + [0]            
                              =  f(active(X1),X2)        
            
            active(f(g(X),Y)) =  [4] Y + [0]             
                              >= [0]                     
                              =  mark(f(X,f(g(X),Y)))    
            
                 active(g(X)) =  [1] X + [0]             
                              >= [1] X + [0]             
                              =  g(active(X))            
            
               f(mark(X1),X2) =  [4] X2 + [0]            
                              >= [0]                     
                              =  mark(f(X1,X2))          
            
             f(ok(X1),ok(X2)) =  [4] X2 + [16]           
                              >= [4] X2 + [4]            
                              =  ok(f(X1,X2))            
            
                   g(mark(X)) =  [0]                     
                              >= [0]                     
                              =  mark(g(X))              
            
                     g(ok(X)) =  [1] X + [4]             
                              >= [1] X + [4]             
                              =  ok(g(X))                
            
             proper(f(X1,X2)) =  [0]                     
                              >= [0]                     
                              =  f(proper(X1),proper(X2))
            
                 proper(g(X)) =  [0]                     
                              >= [0]                     
                              =  g(proper(X))            
            
      *** 1.1.1.2.1.1.2.1.1.1.1 Progress [(?,O(1))]  ***
          Considered Problem:
            Strict DP Rules:
              top#(mark(X)) -> c_10(top#(proper(X)))
            Strict TRS Rules:
              
            Weak DP Rules:
              top#(ok(X)) -> c_11(top#(active(X)))
            Weak TRS Rules:
              active(f(X1,X2)) -> f(active(X1),X2)
              active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
              active(g(X)) -> g(active(X))
              f(mark(X1),X2) -> mark(f(X1,X2))
              f(ok(X1),ok(X2)) -> ok(f(X1,X2))
              g(mark(X)) -> mark(g(X))
              g(ok(X)) -> ok(g(X))
              proper(f(X1,X2)) -> f(proper(X1),proper(X2))
              proper(g(X)) -> g(proper(X))
            Signature:
              {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/1,c_11/1}
            Obligation:
              Innermost
              basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
          Applied Processor:
            Assumption
          Proof:
            ()
      
      *** 1.1.1.2.1.1.2.1.1.2 Progress [(?,O(n^1))]  ***
          Considered Problem:
            Strict DP Rules:
              top#(mark(X)) -> c_10(top#(proper(X)))
            Strict TRS Rules:
              
            Weak DP Rules:
              top#(ok(X)) -> c_11(top#(active(X)))
            Weak TRS Rules:
              active(f(X1,X2)) -> f(active(X1),X2)
              active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
              active(g(X)) -> g(active(X))
              f(mark(X1),X2) -> mark(f(X1,X2))
              f(ok(X1),ok(X2)) -> ok(f(X1,X2))
              g(mark(X)) -> mark(g(X))
              g(ok(X)) -> ok(g(X))
              proper(f(X1,X2)) -> f(proper(X1),proper(X2))
              proper(g(X)) -> g(proper(X))
            Signature:
              {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/1,c_11/1}
            Obligation:
              Innermost
              basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
          Applied Processor:
            PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy}}
          Proof:
            We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy} to orient following rules strictly:
              1: top#(mark(X)) ->       
                   c_10(top#(proper(X)))
              
            The strictly oriented rules are moved into the weak component.
        *** 1.1.1.2.1.1.2.1.1.2.1 Progress [(?,O(n^1))]  ***
            Considered Problem:
              Strict DP Rules:
                top#(mark(X)) -> c_10(top#(proper(X)))
              Strict TRS Rules:
                
              Weak DP Rules:
                top#(ok(X)) -> c_11(top#(active(X)))
              Weak TRS Rules:
                active(f(X1,X2)) -> f(active(X1),X2)
                active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                active(g(X)) -> g(active(X))
                f(mark(X1),X2) -> mark(f(X1,X2))
                f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                g(mark(X)) -> mark(g(X))
                g(ok(X)) -> ok(g(X))
                proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                proper(g(X)) -> g(proper(X))
              Signature:
                {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/1,c_11/1}
              Obligation:
                Innermost
                basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
            Applied Processor:
              NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation any intersect of rules of CDG leaf and strict-rules, greedy = NoGreedy}
            Proof:
              We apply a matrix interpretation of kind constructor based matrix interpretation:
              The following argument positions are considered usable:
                uargs(c_10) = {1},
                uargs(c_11) = {1}
              
              Following symbols are considered usable:
                {active,f,g,proper,active#,f#,g#,proper#,top#}
              TcT has computed the following interpretation:
                 p(active) = [1] x1 + [1]         
                      p(f) = [1] x1 + [2]         
                      p(g) = [1] x1 + [6]         
                   p(mark) = [1] x1 + [6]         
                     p(ok) = [1] x1 + [1]         
                 p(proper) = [1] x1 + [4]         
                    p(top) = [2]                  
                p(active#) = [4]                  
                     p(f#) = [1] x1 + [0]         
                     p(g#) = [1]                  
                p(proper#) = [1] x1 + [0]         
                   p(top#) = [3] x1 + [12]        
                    p(c_1) = [1] x2 + [8]         
                    p(c_2) = [1] x3 + [0]         
                    p(c_3) = [1] x1 + [4] x2 + [2]
                    p(c_4) = [2] x1 + [8]         
                    p(c_5) = [1]                  
                    p(c_6) = [1]                  
                    p(c_7) = [0]                  
                    p(c_8) = [1] x1 + [1] x2 + [4]
                    p(c_9) = [1]                  
                   p(c_10) = [1] x1 + [4]         
                   p(c_11) = [1] x1 + [0]         
              
              Following rules are strictly oriented:
              top#(mark(X)) = [3] X + [30]         
                            > [3] X + [28]         
                            = c_10(top#(proper(X)))
              
              
              Following rules are (at-least) weakly oriented:
                    top#(ok(X)) =  [3] X + [15]            
                                >= [3] X + [15]            
                                =  c_11(top#(active(X)))   
              
               active(f(X1,X2)) =  [1] X1 + [3]            
                                >= [1] X1 + [3]            
                                =  f(active(X1),X2)        
              
              active(f(g(X),Y)) =  [1] X + [9]             
                                >= [1] X + [8]             
                                =  mark(f(X,f(g(X),Y)))    
              
                   active(g(X)) =  [1] X + [7]             
                                >= [1] X + [7]             
                                =  g(active(X))            
              
                 f(mark(X1),X2) =  [1] X1 + [8]            
                                >= [1] X1 + [8]            
                                =  mark(f(X1,X2))          
              
               f(ok(X1),ok(X2)) =  [1] X1 + [3]            
                                >= [1] X1 + [3]            
                                =  ok(f(X1,X2))            
              
                     g(mark(X)) =  [1] X + [12]            
                                >= [1] X + [12]            
                                =  mark(g(X))              
              
                       g(ok(X)) =  [1] X + [7]             
                                >= [1] X + [7]             
                                =  ok(g(X))                
              
               proper(f(X1,X2)) =  [1] X1 + [6]            
                                >= [1] X1 + [6]            
                                =  f(proper(X1),proper(X2))
              
                   proper(g(X)) =  [1] X + [10]            
                                >= [1] X + [10]            
                                =  g(proper(X))            
              
        *** 1.1.1.2.1.1.2.1.1.2.1.1 Progress [(?,O(1))]  ***
            Considered Problem:
              Strict DP Rules:
                
              Strict TRS Rules:
                
              Weak DP Rules:
                top#(mark(X)) -> c_10(top#(proper(X)))
                top#(ok(X)) -> c_11(top#(active(X)))
              Weak TRS Rules:
                active(f(X1,X2)) -> f(active(X1),X2)
                active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                active(g(X)) -> g(active(X))
                f(mark(X1),X2) -> mark(f(X1,X2))
                f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                g(mark(X)) -> mark(g(X))
                g(ok(X)) -> ok(g(X))
                proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                proper(g(X)) -> g(proper(X))
              Signature:
                {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/1,c_11/1}
              Obligation:
                Innermost
                basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
            Applied Processor:
              Assumption
            Proof:
              ()
        
        *** 1.1.1.2.1.1.2.1.1.2.2 Progress [(O(1),O(1))]  ***
            Considered Problem:
              Strict DP Rules:
                
              Strict TRS Rules:
                
              Weak DP Rules:
                top#(mark(X)) -> c_10(top#(proper(X)))
                top#(ok(X)) -> c_11(top#(active(X)))
              Weak TRS Rules:
                active(f(X1,X2)) -> f(active(X1),X2)
                active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                active(g(X)) -> g(active(X))
                f(mark(X1),X2) -> mark(f(X1,X2))
                f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                g(mark(X)) -> mark(g(X))
                g(ok(X)) -> ok(g(X))
                proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                proper(g(X)) -> g(proper(X))
              Signature:
                {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/1,c_11/1}
              Obligation:
                Innermost
                basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
            Applied Processor:
              RemoveWeakSuffixes
            Proof:
              Consider the dependency graph
                1:W:top#(mark(X)) -> c_10(top#(proper(X)))
                   -->_1 top#(ok(X)) -> c_11(top#(active(X))):2
                   -->_1 top#(mark(X)) -> c_10(top#(proper(X))):1
                
                2:W:top#(ok(X)) -> c_11(top#(active(X)))
                   -->_1 top#(ok(X)) -> c_11(top#(active(X))):2
                   -->_1 top#(mark(X)) -> c_10(top#(proper(X))):1
                
              The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
                1: top#(mark(X)) ->       
                     c_10(top#(proper(X)))
                2: top#(ok(X)) ->         
                     c_11(top#(active(X)))
        *** 1.1.1.2.1.1.2.1.1.2.2.1 Progress [(O(1),O(1))]  ***
            Considered Problem:
              Strict DP Rules:
                
              Strict TRS Rules:
                
              Weak DP Rules:
                
              Weak TRS Rules:
                active(f(X1,X2)) -> f(active(X1),X2)
                active(f(g(X),Y)) -> mark(f(X,f(g(X),Y)))
                active(g(X)) -> g(active(X))
                f(mark(X1),X2) -> mark(f(X1,X2))
                f(ok(X1),ok(X2)) -> ok(f(X1,X2))
                g(mark(X)) -> mark(g(X))
                g(ok(X)) -> ok(g(X))
                proper(f(X1,X2)) -> f(proper(X1),proper(X2))
                proper(g(X)) -> g(proper(X))
              Signature:
                {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/1,c_11/1}
              Obligation:
                Innermost
                basic terms: {active#,f#,g#,proper#,top#}/{mark,ok}
            Applied Processor:
              EmptyProcessor
            Proof:
              The problem is already closed. The intended complexity is O(1).