WORST_CASE(Omega(n^1),O(n^1))
* Step 1: Sum WORST_CASE(Omega(n^1),O(n^1))
    + Considered Problem:
        - Strict TRS:
            a__f(X) -> f(X)
            a__f(f(a())) -> a__f(g(f(a())))
            mark(a()) -> a()
            mark(f(X)) -> a__f(X)
            mark(g(X)) -> g(mark(X))
        - Signature:
            {a__f/1,mark/1} / {a/0,f/1,g/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {a__f,mark} and constructors {a,f,g}
    + Applied Processor:
        Sum {left = someStrategy, right = someStrategy}
    + Details:
        ()
** Step 1.a:1: DecreasingLoops WORST_CASE(Omega(n^1),?)
    + Considered Problem:
        - Strict TRS:
            a__f(X) -> f(X)
            a__f(f(a())) -> a__f(g(f(a())))
            mark(a()) -> a()
            mark(f(X)) -> a__f(X)
            mark(g(X)) -> g(mark(X))
        - Signature:
            {a__f/1,mark/1} / {a/0,f/1,g/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {a__f,mark} and constructors {a,f,g}
    + Applied Processor:
        DecreasingLoops {bound = AnyLoop, narrow = 10}
    + Details:
        The system has following decreasing Loops:
          mark(x){x -> g(x)} =
            mark(g(x)) ->^+ g(mark(x))
              = C[mark(x) = mark(x){}]

** Step 1.b:1: DependencyPairs WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict TRS:
            a__f(X) -> f(X)
            a__f(f(a())) -> a__f(g(f(a())))
            mark(a()) -> a()
            mark(f(X)) -> a__f(X)
            mark(g(X)) -> g(mark(X))
        - Signature:
            {a__f/1,mark/1} / {a/0,f/1,g/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {a__f,mark} and constructors {a,f,g}
    + Applied Processor:
        DependencyPairs {dpKind_ = DT}
    + Details:
        We add the following dependency tuples:
        
        Strict DPs
          a__f#(X) -> c_1()
          a__f#(f(a())) -> c_2(a__f#(g(f(a()))))
          mark#(a()) -> c_3()
          mark#(f(X)) -> c_4(a__f#(X))
          mark#(g(X)) -> c_5(mark#(X))
        Weak DPs
          
        
        and mark the set of starting terms.
** Step 1.b:2: PredecessorEstimation WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            a__f#(X) -> c_1()
            a__f#(f(a())) -> c_2(a__f#(g(f(a()))))
            mark#(a()) -> c_3()
            mark#(f(X)) -> c_4(a__f#(X))
            mark#(g(X)) -> c_5(mark#(X))
        - Weak TRS:
            a__f(X) -> f(X)
            a__f(f(a())) -> a__f(g(f(a())))
            mark(a()) -> a()
            mark(f(X)) -> a__f(X)
            mark(g(X)) -> g(mark(X))
        - Signature:
            {a__f/1,mark/1,a__f#/1,mark#/1} / {a/0,f/1,g/1,c_1/0,c_2/1,c_3/0,c_4/1,c_5/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {a__f#,mark#} and constructors {a,f,g}
    + Applied Processor:
        PredecessorEstimation {onSelection = all simple predecessor estimation selector}
    + Details:
        We estimate the number of application of
          {1,3}
        by application of
          Pre({1,3}) = {2,4,5}.
        Here rules are labelled as follows:
          1: a__f#(X) -> c_1()
          2: a__f#(f(a())) -> c_2(a__f#(g(f(a()))))
          3: mark#(a()) -> c_3()
          4: mark#(f(X)) -> c_4(a__f#(X))
          5: mark#(g(X)) -> c_5(mark#(X))
** Step 1.b:3: PredecessorEstimation WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            a__f#(f(a())) -> c_2(a__f#(g(f(a()))))
            mark#(f(X)) -> c_4(a__f#(X))
            mark#(g(X)) -> c_5(mark#(X))
        - Weak DPs:
            a__f#(X) -> c_1()
            mark#(a()) -> c_3()
        - Weak TRS:
            a__f(X) -> f(X)
            a__f(f(a())) -> a__f(g(f(a())))
            mark(a()) -> a()
            mark(f(X)) -> a__f(X)
            mark(g(X)) -> g(mark(X))
        - Signature:
            {a__f/1,mark/1,a__f#/1,mark#/1} / {a/0,f/1,g/1,c_1/0,c_2/1,c_3/0,c_4/1,c_5/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {a__f#,mark#} and constructors {a,f,g}
    + Applied Processor:
        PredecessorEstimation {onSelection = all simple predecessor estimation selector}
    + Details:
        We estimate the number of application of
          {1}
        by application of
          Pre({1}) = {2}.
        Here rules are labelled as follows:
          1: a__f#(f(a())) -> c_2(a__f#(g(f(a()))))
          2: mark#(f(X)) -> c_4(a__f#(X))
          3: mark#(g(X)) -> c_5(mark#(X))
          4: a__f#(X) -> c_1()
          5: mark#(a()) -> c_3()
** Step 1.b:4: PredecessorEstimation WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            mark#(f(X)) -> c_4(a__f#(X))
            mark#(g(X)) -> c_5(mark#(X))
        - Weak DPs:
            a__f#(X) -> c_1()
            a__f#(f(a())) -> c_2(a__f#(g(f(a()))))
            mark#(a()) -> c_3()
        - Weak TRS:
            a__f(X) -> f(X)
            a__f(f(a())) -> a__f(g(f(a())))
            mark(a()) -> a()
            mark(f(X)) -> a__f(X)
            mark(g(X)) -> g(mark(X))
        - Signature:
            {a__f/1,mark/1,a__f#/1,mark#/1} / {a/0,f/1,g/1,c_1/0,c_2/1,c_3/0,c_4/1,c_5/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {a__f#,mark#} and constructors {a,f,g}
    + Applied Processor:
        PredecessorEstimation {onSelection = all simple predecessor estimation selector}
    + Details:
        We estimate the number of application of
          {1}
        by application of
          Pre({1}) = {2}.
        Here rules are labelled as follows:
          1: mark#(f(X)) -> c_4(a__f#(X))
          2: mark#(g(X)) -> c_5(mark#(X))
          3: a__f#(X) -> c_1()
          4: a__f#(f(a())) -> c_2(a__f#(g(f(a()))))
          5: mark#(a()) -> c_3()
** Step 1.b:5: RemoveWeakSuffixes WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            mark#(g(X)) -> c_5(mark#(X))
        - Weak DPs:
            a__f#(X) -> c_1()
            a__f#(f(a())) -> c_2(a__f#(g(f(a()))))
            mark#(a()) -> c_3()
            mark#(f(X)) -> c_4(a__f#(X))
        - Weak TRS:
            a__f(X) -> f(X)
            a__f(f(a())) -> a__f(g(f(a())))
            mark(a()) -> a()
            mark(f(X)) -> a__f(X)
            mark(g(X)) -> g(mark(X))
        - Signature:
            {a__f/1,mark/1,a__f#/1,mark#/1} / {a/0,f/1,g/1,c_1/0,c_2/1,c_3/0,c_4/1,c_5/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {a__f#,mark#} and constructors {a,f,g}
    + Applied Processor:
        RemoveWeakSuffixes
    + Details:
        Consider the dependency graph
          1:S:mark#(g(X)) -> c_5(mark#(X))
             -->_1 mark#(f(X)) -> c_4(a__f#(X)):5
             -->_1 mark#(a()) -> c_3():4
             -->_1 mark#(g(X)) -> c_5(mark#(X)):1
          
          2:W:a__f#(X) -> c_1()
             
          
          3:W:a__f#(f(a())) -> c_2(a__f#(g(f(a()))))
             -->_1 a__f#(X) -> c_1():2
          
          4:W:mark#(a()) -> c_3()
             
          
          5:W:mark#(f(X)) -> c_4(a__f#(X))
             -->_1 a__f#(f(a())) -> c_2(a__f#(g(f(a())))):3
             -->_1 a__f#(X) -> c_1():2
          
        The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
          4: mark#(a()) -> c_3()
          5: mark#(f(X)) -> c_4(a__f#(X))
          3: a__f#(f(a())) -> c_2(a__f#(g(f(a()))))
          2: a__f#(X) -> c_1()
** Step 1.b:6: UsableRules WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            mark#(g(X)) -> c_5(mark#(X))
        - Weak TRS:
            a__f(X) -> f(X)
            a__f(f(a())) -> a__f(g(f(a())))
            mark(a()) -> a()
            mark(f(X)) -> a__f(X)
            mark(g(X)) -> g(mark(X))
        - Signature:
            {a__f/1,mark/1,a__f#/1,mark#/1} / {a/0,f/1,g/1,c_1/0,c_2/1,c_3/0,c_4/1,c_5/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {a__f#,mark#} and constructors {a,f,g}
    + Applied Processor:
        UsableRules
    + Details:
        We replace rewrite rules by usable rules:
          mark#(g(X)) -> c_5(mark#(X))
** Step 1.b:7: WeightGap WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            mark#(g(X)) -> c_5(mark#(X))
        - Signature:
            {a__f/1,mark/1,a__f#/1,mark#/1} / {a/0,f/1,g/1,c_1/0,c_2/1,c_3/0,c_4/1,c_5/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {a__f#,mark#} and constructors {a,f,g}
    + Applied Processor:
        WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    + Details:
        The weightgap principle applies using the following constant growth matrix-interpretation:
          We apply a matrix interpretation of kind constructor based matrix interpretation:
          The following argument positions are considered usable:
            uargs(c_5) = {1}
          
          Following symbols are considered usable:
            all
          TcT has computed the following interpretation:
                p(a) = [0]         
             p(a__f) = [2]         
                p(f) = [1] x1 + [0]
                p(g) = [1] x1 + [3]
             p(mark) = [0]         
            p(a__f#) = [0]         
            p(mark#) = [6] x1 + [0]
              p(c_1) = [8]         
              p(c_2) = [1] x1 + [0]
              p(c_3) = [8]         
              p(c_4) = [1]         
              p(c_5) = [1] x1 + [5]
          
          Following rules are strictly oriented:
          mark#(g(X)) = [6] X + [18] 
                      > [6] X + [5]  
                      = c_5(mark#(X))
          
          
          Following rules are (at-least) weakly oriented:
          
        Further, it can be verified that all rules not oriented are covered by the weightgap condition.
** Step 1.b:8: EmptyProcessor WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak DPs:
            mark#(g(X)) -> c_5(mark#(X))
        - Signature:
            {a__f/1,mark/1,a__f#/1,mark#/1} / {a/0,f/1,g/1,c_1/0,c_2/1,c_3/0,c_4/1,c_5/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {a__f#,mark#} and constructors {a,f,g}
    + Applied Processor:
        EmptyProcessor
    + Details:
        The problem is already closed. The intended complexity is O(1).

WORST_CASE(Omega(n^1),O(n^1))