* Step 1: ToInnermost WORST_CASE(?,O(1))
    + Considered Problem:
        - Strict TRS:
            p(f(f(x))) -> q(f(g(x)))
            p(g(g(x))) -> q(g(f(x)))
            q(f(f(x))) -> p(f(g(x)))
            q(g(g(x))) -> p(g(f(x)))
        - Signature:
            {p/1,q/1} / {f/1,g/1}
        - Obligation:
             runtime complexity wrt. defined symbols {p,q} and constructors {f,g}
    + Applied Processor:
        ToInnermost
    + Details:
        switch to innermost, as the system is overlay and right linear and does not contain weak rules
* Step 2: DependencyPairs WORST_CASE(?,O(1))
    + Considered Problem:
        - Strict TRS:
            p(f(f(x))) -> q(f(g(x)))
            p(g(g(x))) -> q(g(f(x)))
            q(f(f(x))) -> p(f(g(x)))
            q(g(g(x))) -> p(g(f(x)))
        - Signature:
            {p/1,q/1} / {f/1,g/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {p,q} and constructors {f,g}
    + Applied Processor:
        DependencyPairs {dpKind_ = DT}
    + Details:
        We add the following dependency tuples:
        
        Strict DPs
          p#(f(f(x))) -> c_1(q#(f(g(x))))
          p#(g(g(x))) -> c_2(q#(g(f(x))))
          q#(f(f(x))) -> c_3(p#(f(g(x))))
          q#(g(g(x))) -> c_4(p#(g(f(x))))
        Weak DPs
          
        
        and mark the set of starting terms.
* Step 3: UsableRules WORST_CASE(?,O(1))
    + Considered Problem:
        - Strict DPs:
            p#(f(f(x))) -> c_1(q#(f(g(x))))
            p#(g(g(x))) -> c_2(q#(g(f(x))))
            q#(f(f(x))) -> c_3(p#(f(g(x))))
            q#(g(g(x))) -> c_4(p#(g(f(x))))
        - Weak TRS:
            p(f(f(x))) -> q(f(g(x)))
            p(g(g(x))) -> q(g(f(x)))
            q(f(f(x))) -> p(f(g(x)))
            q(g(g(x))) -> p(g(f(x)))
        - Signature:
            {p/1,q/1,p#/1,q#/1} / {f/1,g/1,c_1/1,c_2/1,c_3/1,c_4/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {p#,q#} and constructors {f,g}
    + Applied Processor:
        UsableRules
    + Details:
        We replace rewrite rules by usable rules:
          p#(f(f(x))) -> c_1(q#(f(g(x))))
          p#(g(g(x))) -> c_2(q#(g(f(x))))
          q#(f(f(x))) -> c_3(p#(f(g(x))))
          q#(g(g(x))) -> c_4(p#(g(f(x))))
* Step 4: Trivial WORST_CASE(?,O(1))
    + Considered Problem:
        - Strict DPs:
            p#(f(f(x))) -> c_1(q#(f(g(x))))
            p#(g(g(x))) -> c_2(q#(g(f(x))))
            q#(f(f(x))) -> c_3(p#(f(g(x))))
            q#(g(g(x))) -> c_4(p#(g(f(x))))
        - Signature:
            {p/1,q/1,p#/1,q#/1} / {f/1,g/1,c_1/1,c_2/1,c_3/1,c_4/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {p#,q#} and constructors {f,g}
    + Applied Processor:
        Trivial
    + Details:
        Consider the dependency graph
          1:S:p#(f(f(x))) -> c_1(q#(f(g(x))))
             
          
          2:S:p#(g(g(x))) -> c_2(q#(g(f(x))))
             
          
          3:S:q#(f(f(x))) -> c_3(p#(f(g(x))))
             
          
          4:S:q#(g(g(x))) -> c_4(p#(g(f(x))))
             
          
        The dependency graph contains no loops, we remove all dependency pairs.
* Step 5: EmptyProcessor WORST_CASE(?,O(1))
    + Considered Problem:
        
        - Signature:
            {p/1,q/1,p#/1,q#/1} / {f/1,g/1,c_1/1,c_2/1,c_3/1,c_4/1}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {p#,q#} and constructors {f,g}
    + Applied Processor:
        EmptyProcessor
    + Details:
        The problem is already closed. The intended complexity is O(1).

WORST_CASE(?,O(1))