* Step 1: Sum WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict TRS:
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            bfs2(@t,@x) -> bfs2#1(dobfs(@t,@x),@x)
            bfs2#1(@t',@x) -> dobfs(@t',@x)
            dfs(@queue,@x) -> dfs#1(@queue,@x)
            dfs#1(::(@t,@ts),@x) -> dfs#2(@t,@t,@ts,@x)
            dfs#1(nil(),@x) -> leaf()
            dfs#2(leaf(),@t,@ts,@x) -> dfs(@ts,@x)
            dfs#2(node(@a,@t1,@t2),@t,@ts,@x) -> dfs#3(#equal(@a,@x),@t,@t1,@t2,@ts,@x)
            dfs#3(#false(),@t,@t1,@t2,@ts,@x) -> dfs(::(@t1,::(@t2,@ts)),@x)
            dfs#3(#true(),@t,@t1,@t2,@ts,@x) -> @t
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            dodfs(@t,@x) -> dfs(::(@t,nil()),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1
            ,#true/0,::/2,leaf/0,nil/0,node/3}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and,#eq,#equal,appendreverse,appendreverse#1,bfs,bfs#1
            ,bfs#2,bfs#3,bfs#4,bfs2,bfs2#1,dfs,dfs#1,dfs#2,dfs#3,dobfs,dodfs,reverse} and constructors {#0,#false,#neg
            ,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        Sum {left = someStrategy, right = someStrategy}
    + Details:
        ()
* Step 2: DependencyPairs WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict TRS:
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            bfs2(@t,@x) -> bfs2#1(dobfs(@t,@x),@x)
            bfs2#1(@t',@x) -> dobfs(@t',@x)
            dfs(@queue,@x) -> dfs#1(@queue,@x)
            dfs#1(::(@t,@ts),@x) -> dfs#2(@t,@t,@ts,@x)
            dfs#1(nil(),@x) -> leaf()
            dfs#2(leaf(),@t,@ts,@x) -> dfs(@ts,@x)
            dfs#2(node(@a,@t1,@t2),@t,@ts,@x) -> dfs#3(#equal(@a,@x),@t,@t1,@t2,@ts,@x)
            dfs#3(#false(),@t,@t1,@t2,@ts,@x) -> dfs(::(@t1,::(@t2,@ts)),@x)
            dfs#3(#true(),@t,@t1,@t2,@ts,@x) -> @t
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            dodfs(@t,@x) -> dfs(::(@t,nil()),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1
            ,#true/0,::/2,leaf/0,nil/0,node/3}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and,#eq,#equal,appendreverse,appendreverse#1,bfs,bfs#1
            ,bfs#2,bfs#3,bfs#4,bfs2,bfs2#1,dfs,dfs#1,dfs#2,dfs#3,dobfs,dodfs,reverse} and constructors {#0,#false,#neg
            ,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        DependencyPairs {dpKind_ = DT}
    + Details:
        We add the following dependency tuples:
        
        Strict DPs
          #equal#(@x,@y) -> c_1(#eq#(@x,@y))
          appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
          appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
          appendreverse#1#(nil(),@sofar) -> c_4()
          bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
          bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
          bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
          bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
          bfs#2#(nil(),@x) -> c_9()
          bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
          bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
                                                              ,#equal#(@x,@y))
          bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
          bfs#4#(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_13()
          bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
          bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
          dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
          dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
          dfs#1#(nil(),@x) -> c_18()
          dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
          dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x),#equal#(@a,@x))
          dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
          dfs#3#(#true(),@t,@t1,@t2,@ts,@x) -> c_22()
          dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
          dodfs#(@t,@x) -> c_24(dfs#(::(@t,nil()),@x))
          reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
        Weak DPs
          #and#(#false(),#false()) -> c_26()
          #and#(#false(),#true()) -> c_27()
          #and#(#true(),#false()) -> c_28()
          #and#(#true(),#true()) -> c_29()
          #eq#(#0(),#0()) -> c_30()
          #eq#(#0(),#neg(@y)) -> c_31()
          #eq#(#0(),#pos(@y)) -> c_32()
          #eq#(#0(),#s(@y)) -> c_33()
          #eq#(#neg(@x),#0()) -> c_34()
          #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y))
          #eq#(#neg(@x),#pos(@y)) -> c_36()
          #eq#(#pos(@x),#0()) -> c_37()
          #eq#(#pos(@x),#neg(@y)) -> c_38()
          #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y))
          #eq#(#s(@x),#0()) -> c_40()
          #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y))
          #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
                                                   ,#eq#(@x_1,@y_1)
                                                   ,#eq#(@x_2,@y_2))
          #eq#(::(@x_1,@x_2),leaf()) -> c_43()
          #eq#(::(@x_1,@x_2),nil()) -> c_44()
          #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45()
          #eq#(leaf(),::(@y_1,@y_2)) -> c_46()
          #eq#(leaf(),leaf()) -> c_47()
          #eq#(leaf(),nil()) -> c_48()
          #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49()
          #eq#(nil(),::(@y_1,@y_2)) -> c_50()
          #eq#(nil(),leaf()) -> c_51()
          #eq#(nil(),nil()) -> c_52()
          #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53()
          #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54()
          #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55()
          #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56()
          #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1)
                                                                       ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
                                                                 ,#eq#(@x_1,@y_1)
                                                                 ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3))
                                                                 ,#eq#(@x_2,@y_2)
                                                                 ,#eq#(@x_3,@y_3))
        
        and mark the set of starting terms.
* Step 3: UsableRules WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict DPs:
            #equal#(@x,@y) -> c_1(#eq#(@x,@y))
            appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
            appendreverse#1#(nil(),@sofar) -> c_4()
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
            bfs#2#(nil(),@x) -> c_9()
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
                                                                ,#equal#(@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs#4#(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_13()
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
            dfs#1#(nil(),@x) -> c_18()
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x),#equal#(@a,@x))
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
            dfs#3#(#true(),@t,@t1,@t2,@ts,@x) -> c_22()
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
            dodfs#(@t,@x) -> c_24(dfs#(::(@t,nil()),@x))
            reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
        - Weak DPs:
            #and#(#false(),#false()) -> c_26()
            #and#(#false(),#true()) -> c_27()
            #and#(#true(),#false()) -> c_28()
            #and#(#true(),#true()) -> c_29()
            #eq#(#0(),#0()) -> c_30()
            #eq#(#0(),#neg(@y)) -> c_31()
            #eq#(#0(),#pos(@y)) -> c_32()
            #eq#(#0(),#s(@y)) -> c_33()
            #eq#(#neg(@x),#0()) -> c_34()
            #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y))
            #eq#(#neg(@x),#pos(@y)) -> c_36()
            #eq#(#pos(@x),#0()) -> c_37()
            #eq#(#pos(@x),#neg(@y)) -> c_38()
            #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y))
            #eq#(#s(@x),#0()) -> c_40()
            #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y))
            #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
                                                     ,#eq#(@x_1,@y_1)
                                                     ,#eq#(@x_2,@y_2))
            #eq#(::(@x_1,@x_2),leaf()) -> c_43()
            #eq#(::(@x_1,@x_2),nil()) -> c_44()
            #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45()
            #eq#(leaf(),::(@y_1,@y_2)) -> c_46()
            #eq#(leaf(),leaf()) -> c_47()
            #eq#(leaf(),nil()) -> c_48()
            #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49()
            #eq#(nil(),::(@y_1,@y_2)) -> c_50()
            #eq#(nil(),leaf()) -> c_51()
            #eq#(nil(),nil()) -> c_52()
            #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53()
            #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54()
            #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55()
            #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56()
            #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1)
                                                                         ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
                                                                   ,#eq#(@x_1,@y_1)
                                                                   ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3))
                                                                   ,#eq#(@x_2,@y_2)
                                                                   ,#eq#(@x_3,@y_3))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            bfs2(@t,@x) -> bfs2#1(dobfs(@t,@x),@x)
            bfs2#1(@t',@x) -> dobfs(@t',@x)
            dfs(@queue,@x) -> dfs#1(@queue,@x)
            dfs#1(::(@t,@ts),@x) -> dfs#2(@t,@t,@ts,@x)
            dfs#1(nil(),@x) -> leaf()
            dfs#2(leaf(),@t,@ts,@x) -> dfs(@ts,@x)
            dfs#2(node(@a,@t1,@t2),@t,@ts,@x) -> dfs#3(#equal(@a,@x),@t,@t1,@t2,@ts,@x)
            dfs#3(#false(),@t,@t1,@t2,@ts,@x) -> dfs(::(@t1,::(@t2,@ts)),@x)
            dfs#3(#true(),@t,@t1,@t2,@ts,@x) -> @t
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            dodfs(@t,@x) -> dfs(::(@t,nil()),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/2,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/2,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        UsableRules
    + Details:
        We replace rewrite rules by usable rules:
          #and(#false(),#false()) -> #false()
          #and(#false(),#true()) -> #false()
          #and(#true(),#false()) -> #false()
          #and(#true(),#true()) -> #true()
          #eq(#0(),#0()) -> #true()
          #eq(#0(),#neg(@y)) -> #false()
          #eq(#0(),#pos(@y)) -> #false()
          #eq(#0(),#s(@y)) -> #false()
          #eq(#neg(@x),#0()) -> #false()
          #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
          #eq(#neg(@x),#pos(@y)) -> #false()
          #eq(#pos(@x),#0()) -> #false()
          #eq(#pos(@x),#neg(@y)) -> #false()
          #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
          #eq(#s(@x),#0()) -> #false()
          #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
          #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
          #eq(::(@x_1,@x_2),leaf()) -> #false()
          #eq(::(@x_1,@x_2),nil()) -> #false()
          #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
          #eq(leaf(),::(@y_1,@y_2)) -> #false()
          #eq(leaf(),leaf()) -> #true()
          #eq(leaf(),nil()) -> #false()
          #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
          #eq(nil(),::(@y_1,@y_2)) -> #false()
          #eq(nil(),leaf()) -> #false()
          #eq(nil(),nil()) -> #true()
          #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
          #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
          #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
          #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
          #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
          #equal(@x,@y) -> #eq(@x,@y)
          appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
          appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
          appendreverse#1(nil(),@sofar) -> @sofar
          bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
          bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
          bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
          bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
          bfs#2(nil(),@x) -> leaf()
          bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
          bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
          bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
          bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
          dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
          reverse(@xs) -> appendreverse(@xs,nil())
          #and#(#false(),#false()) -> c_26()
          #and#(#false(),#true()) -> c_27()
          #and#(#true(),#false()) -> c_28()
          #and#(#true(),#true()) -> c_29()
          #eq#(#0(),#0()) -> c_30()
          #eq#(#0(),#neg(@y)) -> c_31()
          #eq#(#0(),#pos(@y)) -> c_32()
          #eq#(#0(),#s(@y)) -> c_33()
          #eq#(#neg(@x),#0()) -> c_34()
          #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y))
          #eq#(#neg(@x),#pos(@y)) -> c_36()
          #eq#(#pos(@x),#0()) -> c_37()
          #eq#(#pos(@x),#neg(@y)) -> c_38()
          #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y))
          #eq#(#s(@x),#0()) -> c_40()
          #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y))
          #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
                                                   ,#eq#(@x_1,@y_1)
                                                   ,#eq#(@x_2,@y_2))
          #eq#(::(@x_1,@x_2),leaf()) -> c_43()
          #eq#(::(@x_1,@x_2),nil()) -> c_44()
          #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45()
          #eq#(leaf(),::(@y_1,@y_2)) -> c_46()
          #eq#(leaf(),leaf()) -> c_47()
          #eq#(leaf(),nil()) -> c_48()
          #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49()
          #eq#(nil(),::(@y_1,@y_2)) -> c_50()
          #eq#(nil(),leaf()) -> c_51()
          #eq#(nil(),nil()) -> c_52()
          #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53()
          #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54()
          #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55()
          #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56()
          #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1)
                                                                       ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
                                                                 ,#eq#(@x_1,@y_1)
                                                                 ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3))
                                                                 ,#eq#(@x_2,@y_2)
                                                                 ,#eq#(@x_3,@y_3))
          #equal#(@x,@y) -> c_1(#eq#(@x,@y))
          appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
          appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
          appendreverse#1#(nil(),@sofar) -> c_4()
          bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
          bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
          bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
          bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
          bfs#2#(nil(),@x) -> c_9()
          bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
          bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
                                                              ,#equal#(@x,@y))
          bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
          bfs#4#(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_13()
          bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
          bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
          dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
          dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
          dfs#1#(nil(),@x) -> c_18()
          dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
          dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x),#equal#(@a,@x))
          dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
          dfs#3#(#true(),@t,@t1,@t2,@ts,@x) -> c_22()
          dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
          dodfs#(@t,@x) -> c_24(dfs#(::(@t,nil()),@x))
          reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
* Step 4: PredecessorEstimation WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict DPs:
            #equal#(@x,@y) -> c_1(#eq#(@x,@y))
            appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
            appendreverse#1#(nil(),@sofar) -> c_4()
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
            bfs#2#(nil(),@x) -> c_9()
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
                                                                ,#equal#(@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs#4#(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_13()
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
            dfs#1#(nil(),@x) -> c_18()
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x),#equal#(@a,@x))
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
            dfs#3#(#true(),@t,@t1,@t2,@ts,@x) -> c_22()
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
            dodfs#(@t,@x) -> c_24(dfs#(::(@t,nil()),@x))
            reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
        - Weak DPs:
            #and#(#false(),#false()) -> c_26()
            #and#(#false(),#true()) -> c_27()
            #and#(#true(),#false()) -> c_28()
            #and#(#true(),#true()) -> c_29()
            #eq#(#0(),#0()) -> c_30()
            #eq#(#0(),#neg(@y)) -> c_31()
            #eq#(#0(),#pos(@y)) -> c_32()
            #eq#(#0(),#s(@y)) -> c_33()
            #eq#(#neg(@x),#0()) -> c_34()
            #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y))
            #eq#(#neg(@x),#pos(@y)) -> c_36()
            #eq#(#pos(@x),#0()) -> c_37()
            #eq#(#pos(@x),#neg(@y)) -> c_38()
            #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y))
            #eq#(#s(@x),#0()) -> c_40()
            #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y))
            #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
                                                     ,#eq#(@x_1,@y_1)
                                                     ,#eq#(@x_2,@y_2))
            #eq#(::(@x_1,@x_2),leaf()) -> c_43()
            #eq#(::(@x_1,@x_2),nil()) -> c_44()
            #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45()
            #eq#(leaf(),::(@y_1,@y_2)) -> c_46()
            #eq#(leaf(),leaf()) -> c_47()
            #eq#(leaf(),nil()) -> c_48()
            #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49()
            #eq#(nil(),::(@y_1,@y_2)) -> c_50()
            #eq#(nil(),leaf()) -> c_51()
            #eq#(nil(),nil()) -> c_52()
            #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53()
            #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54()
            #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55()
            #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56()
            #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1)
                                                                         ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
                                                                   ,#eq#(@x_1,@y_1)
                                                                   ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3))
                                                                   ,#eq#(@x_2,@y_2)
                                                                   ,#eq#(@x_3,@y_3))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/2,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/2,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        PredecessorEstimation {onSelection = all simple predecessor estimation selector}
    + Details:
        We estimate the number of application of
          {1,4,9,13,18,22}
        by application of
          Pre({1,4,9,13,18,22}) = {2,7,11,16,20}.
        Here rules are labelled as follows:
          1: #equal#(@x,@y) -> c_1(#eq#(@x,@y))
          2: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
          3: appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
          4: appendreverse#1#(nil(),@sofar) -> c_4()
          5: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
          6: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
          7: bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
          8: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
          9: bfs#2#(nil(),@x) -> c_9()
          10: bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
          11: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                         ,@futurequeue
                                                                         ,@t1
                                                                         ,@t2
                                                                         ,@ts
                                                                         ,@x
                                                                         ,@y)
                                                                  ,#equal#(@x,@y))
          12: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
          13: bfs#4#(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_13()
          14: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
          15: bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
          16: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
          17: dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
          18: dfs#1#(nil(),@x) -> c_18()
          19: dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
          20: dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x),#equal#(@a,@x))
          21: dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
          22: dfs#3#(#true(),@t,@t1,@t2,@ts,@x) -> c_22()
          23: dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
          24: dodfs#(@t,@x) -> c_24(dfs#(::(@t,nil()),@x))
          25: reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
          26: #and#(#false(),#false()) -> c_26()
          27: #and#(#false(),#true()) -> c_27()
          28: #and#(#true(),#false()) -> c_28()
          29: #and#(#true(),#true()) -> c_29()
          30: #eq#(#0(),#0()) -> c_30()
          31: #eq#(#0(),#neg(@y)) -> c_31()
          32: #eq#(#0(),#pos(@y)) -> c_32()
          33: #eq#(#0(),#s(@y)) -> c_33()
          34: #eq#(#neg(@x),#0()) -> c_34()
          35: #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y))
          36: #eq#(#neg(@x),#pos(@y)) -> c_36()
          37: #eq#(#pos(@x),#0()) -> c_37()
          38: #eq#(#pos(@x),#neg(@y)) -> c_38()
          39: #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y))
          40: #eq#(#s(@x),#0()) -> c_40()
          41: #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y))
          42: #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
                                                       ,#eq#(@x_1,@y_1)
                                                       ,#eq#(@x_2,@y_2))
          43: #eq#(::(@x_1,@x_2),leaf()) -> c_43()
          44: #eq#(::(@x_1,@x_2),nil()) -> c_44()
          45: #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45()
          46: #eq#(leaf(),::(@y_1,@y_2)) -> c_46()
          47: #eq#(leaf(),leaf()) -> c_47()
          48: #eq#(leaf(),nil()) -> c_48()
          49: #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49()
          50: #eq#(nil(),::(@y_1,@y_2)) -> c_50()
          51: #eq#(nil(),leaf()) -> c_51()
          52: #eq#(nil(),nil()) -> c_52()
          53: #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53()
          54: #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54()
          55: #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55()
          56: #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56()
          57: #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1)
                                                                           ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
                                                                     ,#eq#(@x_1,@y_1)
                                                                     ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3))
                                                                     ,#eq#(@x_2,@y_2)
                                                                     ,#eq#(@x_3,@y_3))
* Step 5: RemoveWeakSuffixes WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict DPs:
            appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
                                                                ,#equal#(@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x),#equal#(@a,@x))
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
            dodfs#(@t,@x) -> c_24(dfs#(::(@t,nil()),@x))
            reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
        - Weak DPs:
            #and#(#false(),#false()) -> c_26()
            #and#(#false(),#true()) -> c_27()
            #and#(#true(),#false()) -> c_28()
            #and#(#true(),#true()) -> c_29()
            #eq#(#0(),#0()) -> c_30()
            #eq#(#0(),#neg(@y)) -> c_31()
            #eq#(#0(),#pos(@y)) -> c_32()
            #eq#(#0(),#s(@y)) -> c_33()
            #eq#(#neg(@x),#0()) -> c_34()
            #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y))
            #eq#(#neg(@x),#pos(@y)) -> c_36()
            #eq#(#pos(@x),#0()) -> c_37()
            #eq#(#pos(@x),#neg(@y)) -> c_38()
            #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y))
            #eq#(#s(@x),#0()) -> c_40()
            #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y))
            #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
                                                     ,#eq#(@x_1,@y_1)
                                                     ,#eq#(@x_2,@y_2))
            #eq#(::(@x_1,@x_2),leaf()) -> c_43()
            #eq#(::(@x_1,@x_2),nil()) -> c_44()
            #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45()
            #eq#(leaf(),::(@y_1,@y_2)) -> c_46()
            #eq#(leaf(),leaf()) -> c_47()
            #eq#(leaf(),nil()) -> c_48()
            #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49()
            #eq#(nil(),::(@y_1,@y_2)) -> c_50()
            #eq#(nil(),leaf()) -> c_51()
            #eq#(nil(),nil()) -> c_52()
            #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53()
            #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54()
            #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55()
            #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56()
            #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1)
                                                                         ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
                                                                   ,#eq#(@x_1,@y_1)
                                                                   ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3))
                                                                   ,#eq#(@x_2,@y_2)
                                                                   ,#eq#(@x_3,@y_3))
            #equal#(@x,@y) -> c_1(#eq#(@x,@y))
            appendreverse#1#(nil(),@sofar) -> c_4()
            bfs#2#(nil(),@x) -> c_9()
            bfs#4#(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_13()
            dfs#1#(nil(),@x) -> c_18()
            dfs#3#(#true(),@t,@t1,@t2,@ts,@x) -> c_22()
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/2,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/2,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        RemoveWeakSuffixes
    + Details:
        Consider the dependency graph
          1:S:appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
             -->_1 appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))):2
             -->_1 appendreverse#1#(nil(),@sofar) -> c_4():53
          
          2:S:appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
             -->_1 appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)):1
          
          3:S:bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
             -->_1 bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)):5
             -->_1 bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)):4
          
          4:S:bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
             -->_1 bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                              ,@futurequeue
                                                                              ,@t1
                                                                              ,@t2
                                                                              ,@ts
                                                                              ,@x
                                                                              ,@y)
                                                                       ,#equal#(@x,@y)):8
             -->_1 bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)):7
          
          5:S:bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
             -->_1 bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))):6
             -->_1 bfs#2#(nil(),@x) -> c_9():54
          
          6:S:bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
             -->_2 reverse#(@xs) -> c_25(appendreverse#(@xs,nil())):19
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3
          
          7:S:bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3
          
          8:S:bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                         ,@futurequeue
                                                                         ,@t1
                                                                         ,@t2
                                                                         ,@ts
                                                                         ,@x
                                                                         ,@y)
                                                                  ,#equal#(@x,@y))
             -->_2 #equal#(@x,@y) -> c_1(#eq#(@x,@y)):52
             -->_1 bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)):9
             -->_1 bfs#4#(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_13():55
          
          9:S:bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3
          
          10:S:bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
             -->_2 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):17
             -->_1 bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)):11
          
          11:S:bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
             -->_1 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):17
          
          12:S:dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
             -->_1 dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)):13
             -->_1 dfs#1#(nil(),@x) -> c_18():56
          
          13:S:dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
             -->_1 dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)
                                                             ,#equal#(@a,@x)):15
             -->_1 dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)):14
          
          14:S:dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
             -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):12
          
          15:S:dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x),#equal#(@a,@x))
             -->_2 #equal#(@x,@y) -> c_1(#eq#(@x,@y)):52
             -->_1 dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)):16
             -->_1 dfs#3#(#true(),@t,@t1,@t2,@ts,@x) -> c_22():57
          
          16:S:dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
             -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):12
          
          17:S:dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3
          
          18:S:dodfs#(@t,@x) -> c_24(dfs#(::(@t,nil()),@x))
             -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):12
          
          19:S:reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
             -->_1 appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)):1
          
          20:W:#and#(#false(),#false()) -> c_26()
             
          
          21:W:#and#(#false(),#true()) -> c_27()
             
          
          22:W:#and#(#true(),#false()) -> c_28()
             
          
          23:W:#and#(#true(),#true()) -> c_29()
             
          
          24:W:#eq#(#0(),#0()) -> c_30()
             
          
          25:W:#eq#(#0(),#neg(@y)) -> c_31()
             
          
          26:W:#eq#(#0(),#pos(@y)) -> c_32()
             
          
          27:W:#eq#(#0(),#s(@y)) -> c_33()
             
          
          28:W:#eq#(#neg(@x),#0()) -> c_34()
             
          
          29:W:#eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y))
             -->_1 #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1)
                                                                                ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
                                                                          ,#eq#(@x_1,@y_1)
                                                                          ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3))
                                                                          ,#eq#(@x_2,@y_2)
                                                                          ,#eq#(@x_3,@y_3)):51
             -->_1 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
                                                            ,#eq#(@x_1,@y_1)
                                                            ,#eq#(@x_2,@y_2)):36
             -->_1 #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y)):35
             -->_1 #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y)):33
             -->_1 #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56():50
             -->_1 #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55():49
             -->_1 #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54():48
             -->_1 #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53():47
             -->_1 #eq#(nil(),nil()) -> c_52():46
             -->_1 #eq#(nil(),leaf()) -> c_51():45
             -->_1 #eq#(nil(),::(@y_1,@y_2)) -> c_50():44
             -->_1 #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49():43
             -->_1 #eq#(leaf(),nil()) -> c_48():42
             -->_1 #eq#(leaf(),leaf()) -> c_47():41
             -->_1 #eq#(leaf(),::(@y_1,@y_2)) -> c_46():40
             -->_1 #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45():39
             -->_1 #eq#(::(@x_1,@x_2),nil()) -> c_44():38
             -->_1 #eq#(::(@x_1,@x_2),leaf()) -> c_43():37
             -->_1 #eq#(#s(@x),#0()) -> c_40():34
             -->_1 #eq#(#pos(@x),#neg(@y)) -> c_38():32
             -->_1 #eq#(#pos(@x),#0()) -> c_37():31
             -->_1 #eq#(#neg(@x),#pos(@y)) -> c_36():30
             -->_1 #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y)):29
             -->_1 #eq#(#neg(@x),#0()) -> c_34():28
             -->_1 #eq#(#0(),#s(@y)) -> c_33():27
             -->_1 #eq#(#0(),#pos(@y)) -> c_32():26
             -->_1 #eq#(#0(),#neg(@y)) -> c_31():25
             -->_1 #eq#(#0(),#0()) -> c_30():24
          
          30:W:#eq#(#neg(@x),#pos(@y)) -> c_36()
             
          
          31:W:#eq#(#pos(@x),#0()) -> c_37()
             
          
          32:W:#eq#(#pos(@x),#neg(@y)) -> c_38()
             
          
          33:W:#eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y))
             -->_1 #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1)
                                                                                ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
                                                                          ,#eq#(@x_1,@y_1)
                                                                          ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3))
                                                                          ,#eq#(@x_2,@y_2)
                                                                          ,#eq#(@x_3,@y_3)):51
             -->_1 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
                                                            ,#eq#(@x_1,@y_1)
                                                            ,#eq#(@x_2,@y_2)):36
             -->_1 #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y)):35
             -->_1 #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56():50
             -->_1 #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55():49
             -->_1 #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54():48
             -->_1 #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53():47
             -->_1 #eq#(nil(),nil()) -> c_52():46
             -->_1 #eq#(nil(),leaf()) -> c_51():45
             -->_1 #eq#(nil(),::(@y_1,@y_2)) -> c_50():44
             -->_1 #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49():43
             -->_1 #eq#(leaf(),nil()) -> c_48():42
             -->_1 #eq#(leaf(),leaf()) -> c_47():41
             -->_1 #eq#(leaf(),::(@y_1,@y_2)) -> c_46():40
             -->_1 #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45():39
             -->_1 #eq#(::(@x_1,@x_2),nil()) -> c_44():38
             -->_1 #eq#(::(@x_1,@x_2),leaf()) -> c_43():37
             -->_1 #eq#(#s(@x),#0()) -> c_40():34
             -->_1 #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y)):33
             -->_1 #eq#(#pos(@x),#neg(@y)) -> c_38():32
             -->_1 #eq#(#pos(@x),#0()) -> c_37():31
             -->_1 #eq#(#neg(@x),#pos(@y)) -> c_36():30
             -->_1 #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y)):29
             -->_1 #eq#(#neg(@x),#0()) -> c_34():28
             -->_1 #eq#(#0(),#s(@y)) -> c_33():27
             -->_1 #eq#(#0(),#pos(@y)) -> c_32():26
             -->_1 #eq#(#0(),#neg(@y)) -> c_31():25
             -->_1 #eq#(#0(),#0()) -> c_30():24
          
          34:W:#eq#(#s(@x),#0()) -> c_40()
             
          
          35:W:#eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y))
             -->_1 #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1)
                                                                                ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
                                                                          ,#eq#(@x_1,@y_1)
                                                                          ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3))
                                                                          ,#eq#(@x_2,@y_2)
                                                                          ,#eq#(@x_3,@y_3)):51
             -->_1 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
                                                            ,#eq#(@x_1,@y_1)
                                                            ,#eq#(@x_2,@y_2)):36
             -->_1 #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56():50
             -->_1 #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55():49
             -->_1 #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54():48
             -->_1 #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53():47
             -->_1 #eq#(nil(),nil()) -> c_52():46
             -->_1 #eq#(nil(),leaf()) -> c_51():45
             -->_1 #eq#(nil(),::(@y_1,@y_2)) -> c_50():44
             -->_1 #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49():43
             -->_1 #eq#(leaf(),nil()) -> c_48():42
             -->_1 #eq#(leaf(),leaf()) -> c_47():41
             -->_1 #eq#(leaf(),::(@y_1,@y_2)) -> c_46():40
             -->_1 #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45():39
             -->_1 #eq#(::(@x_1,@x_2),nil()) -> c_44():38
             -->_1 #eq#(::(@x_1,@x_2),leaf()) -> c_43():37
             -->_1 #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y)):35
             -->_1 #eq#(#s(@x),#0()) -> c_40():34
             -->_1 #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y)):33
             -->_1 #eq#(#pos(@x),#neg(@y)) -> c_38():32
             -->_1 #eq#(#pos(@x),#0()) -> c_37():31
             -->_1 #eq#(#neg(@x),#pos(@y)) -> c_36():30
             -->_1 #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y)):29
             -->_1 #eq#(#neg(@x),#0()) -> c_34():28
             -->_1 #eq#(#0(),#s(@y)) -> c_33():27
             -->_1 #eq#(#0(),#pos(@y)) -> c_32():26
             -->_1 #eq#(#0(),#neg(@y)) -> c_31():25
             -->_1 #eq#(#0(),#0()) -> c_30():24
          
          36:W:#eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
                                                        ,#eq#(@x_1,@y_1)
                                                        ,#eq#(@x_2,@y_2))
             -->_3 #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1)
                                                                                ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
                                                                          ,#eq#(@x_1,@y_1)
                                                                          ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3))
                                                                          ,#eq#(@x_2,@y_2)
                                                                          ,#eq#(@x_3,@y_3)):51
             -->_2 #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1)
                                                                                ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
                                                                          ,#eq#(@x_1,@y_1)
                                                                          ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3))
                                                                          ,#eq#(@x_2,@y_2)
                                                                          ,#eq#(@x_3,@y_3)):51
             -->_3 #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56():50
             -->_2 #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56():50
             -->_3 #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55():49
             -->_2 #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55():49
             -->_3 #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54():48
             -->_2 #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54():48
             -->_3 #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53():47
             -->_2 #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53():47
             -->_3 #eq#(nil(),nil()) -> c_52():46
             -->_2 #eq#(nil(),nil()) -> c_52():46
             -->_3 #eq#(nil(),leaf()) -> c_51():45
             -->_2 #eq#(nil(),leaf()) -> c_51():45
             -->_3 #eq#(nil(),::(@y_1,@y_2)) -> c_50():44
             -->_2 #eq#(nil(),::(@y_1,@y_2)) -> c_50():44
             -->_3 #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49():43
             -->_2 #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49():43
             -->_3 #eq#(leaf(),nil()) -> c_48():42
             -->_2 #eq#(leaf(),nil()) -> c_48():42
             -->_3 #eq#(leaf(),leaf()) -> c_47():41
             -->_2 #eq#(leaf(),leaf()) -> c_47():41
             -->_3 #eq#(leaf(),::(@y_1,@y_2)) -> c_46():40
             -->_2 #eq#(leaf(),::(@y_1,@y_2)) -> c_46():40
             -->_3 #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45():39
             -->_2 #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45():39
             -->_3 #eq#(::(@x_1,@x_2),nil()) -> c_44():38
             -->_2 #eq#(::(@x_1,@x_2),nil()) -> c_44():38
             -->_3 #eq#(::(@x_1,@x_2),leaf()) -> c_43():37
             -->_2 #eq#(::(@x_1,@x_2),leaf()) -> c_43():37
             -->_3 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
                                                            ,#eq#(@x_1,@y_1)
                                                            ,#eq#(@x_2,@y_2)):36
             -->_2 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
                                                            ,#eq#(@x_1,@y_1)
                                                            ,#eq#(@x_2,@y_2)):36
             -->_3 #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y)):35
             -->_2 #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y)):35
             -->_3 #eq#(#s(@x),#0()) -> c_40():34
             -->_2 #eq#(#s(@x),#0()) -> c_40():34
             -->_3 #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y)):33
             -->_2 #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y)):33
             -->_3 #eq#(#pos(@x),#neg(@y)) -> c_38():32
             -->_2 #eq#(#pos(@x),#neg(@y)) -> c_38():32
             -->_3 #eq#(#pos(@x),#0()) -> c_37():31
             -->_2 #eq#(#pos(@x),#0()) -> c_37():31
             -->_3 #eq#(#neg(@x),#pos(@y)) -> c_36():30
             -->_2 #eq#(#neg(@x),#pos(@y)) -> c_36():30
             -->_3 #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y)):29
             -->_2 #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y)):29
             -->_3 #eq#(#neg(@x),#0()) -> c_34():28
             -->_2 #eq#(#neg(@x),#0()) -> c_34():28
             -->_3 #eq#(#0(),#s(@y)) -> c_33():27
             -->_2 #eq#(#0(),#s(@y)) -> c_33():27
             -->_3 #eq#(#0(),#pos(@y)) -> c_32():26
             -->_2 #eq#(#0(),#pos(@y)) -> c_32():26
             -->_3 #eq#(#0(),#neg(@y)) -> c_31():25
             -->_2 #eq#(#0(),#neg(@y)) -> c_31():25
             -->_3 #eq#(#0(),#0()) -> c_30():24
             -->_2 #eq#(#0(),#0()) -> c_30():24
             -->_1 #and#(#true(),#true()) -> c_29():23
             -->_1 #and#(#true(),#false()) -> c_28():22
             -->_1 #and#(#false(),#true()) -> c_27():21
             -->_1 #and#(#false(),#false()) -> c_26():20
          
          37:W:#eq#(::(@x_1,@x_2),leaf()) -> c_43()
             
          
          38:W:#eq#(::(@x_1,@x_2),nil()) -> c_44()
             
          
          39:W:#eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45()
             
          
          40:W:#eq#(leaf(),::(@y_1,@y_2)) -> c_46()
             
          
          41:W:#eq#(leaf(),leaf()) -> c_47()
             
          
          42:W:#eq#(leaf(),nil()) -> c_48()
             
          
          43:W:#eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49()
             
          
          44:W:#eq#(nil(),::(@y_1,@y_2)) -> c_50()
             
          
          45:W:#eq#(nil(),leaf()) -> c_51()
             
          
          46:W:#eq#(nil(),nil()) -> c_52()
             
          
          47:W:#eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53()
             
          
          48:W:#eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54()
             
          
          49:W:#eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55()
             
          
          50:W:#eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56()
             
          
          51:W:#eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1)
                                                                            ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
                                                                      ,#eq#(@x_1,@y_1)
                                                                      ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3))
                                                                      ,#eq#(@x_2,@y_2)
                                                                      ,#eq#(@x_3,@y_3))
             -->_5 #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1)
                                                                                ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
                                                                          ,#eq#(@x_1,@y_1)
                                                                          ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3))
                                                                          ,#eq#(@x_2,@y_2)
                                                                          ,#eq#(@x_3,@y_3)):51
             -->_4 #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1)
                                                                                ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
                                                                          ,#eq#(@x_1,@y_1)
                                                                          ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3))
                                                                          ,#eq#(@x_2,@y_2)
                                                                          ,#eq#(@x_3,@y_3)):51
             -->_2 #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1)
                                                                                ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
                                                                          ,#eq#(@x_1,@y_1)
                                                                          ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3))
                                                                          ,#eq#(@x_2,@y_2)
                                                                          ,#eq#(@x_3,@y_3)):51
             -->_5 #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56():50
             -->_4 #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56():50
             -->_2 #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56():50
             -->_5 #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55():49
             -->_4 #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55():49
             -->_2 #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55():49
             -->_5 #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54():48
             -->_4 #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54():48
             -->_2 #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54():48
             -->_5 #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53():47
             -->_4 #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53():47
             -->_2 #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53():47
             -->_5 #eq#(nil(),nil()) -> c_52():46
             -->_4 #eq#(nil(),nil()) -> c_52():46
             -->_2 #eq#(nil(),nil()) -> c_52():46
             -->_5 #eq#(nil(),leaf()) -> c_51():45
             -->_4 #eq#(nil(),leaf()) -> c_51():45
             -->_2 #eq#(nil(),leaf()) -> c_51():45
             -->_5 #eq#(nil(),::(@y_1,@y_2)) -> c_50():44
             -->_4 #eq#(nil(),::(@y_1,@y_2)) -> c_50():44
             -->_2 #eq#(nil(),::(@y_1,@y_2)) -> c_50():44
             -->_5 #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49():43
             -->_4 #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49():43
             -->_2 #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49():43
             -->_5 #eq#(leaf(),nil()) -> c_48():42
             -->_4 #eq#(leaf(),nil()) -> c_48():42
             -->_2 #eq#(leaf(),nil()) -> c_48():42
             -->_5 #eq#(leaf(),leaf()) -> c_47():41
             -->_4 #eq#(leaf(),leaf()) -> c_47():41
             -->_2 #eq#(leaf(),leaf()) -> c_47():41
             -->_5 #eq#(leaf(),::(@y_1,@y_2)) -> c_46():40
             -->_4 #eq#(leaf(),::(@y_1,@y_2)) -> c_46():40
             -->_2 #eq#(leaf(),::(@y_1,@y_2)) -> c_46():40
             -->_5 #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45():39
             -->_4 #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45():39
             -->_2 #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45():39
             -->_5 #eq#(::(@x_1,@x_2),nil()) -> c_44():38
             -->_4 #eq#(::(@x_1,@x_2),nil()) -> c_44():38
             -->_2 #eq#(::(@x_1,@x_2),nil()) -> c_44():38
             -->_5 #eq#(::(@x_1,@x_2),leaf()) -> c_43():37
             -->_4 #eq#(::(@x_1,@x_2),leaf()) -> c_43():37
             -->_2 #eq#(::(@x_1,@x_2),leaf()) -> c_43():37
             -->_5 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
                                                            ,#eq#(@x_1,@y_1)
                                                            ,#eq#(@x_2,@y_2)):36
             -->_4 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
                                                            ,#eq#(@x_1,@y_1)
                                                            ,#eq#(@x_2,@y_2)):36
             -->_2 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
                                                            ,#eq#(@x_1,@y_1)
                                                            ,#eq#(@x_2,@y_2)):36
             -->_5 #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y)):35
             -->_4 #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y)):35
             -->_2 #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y)):35
             -->_5 #eq#(#s(@x),#0()) -> c_40():34
             -->_4 #eq#(#s(@x),#0()) -> c_40():34
             -->_2 #eq#(#s(@x),#0()) -> c_40():34
             -->_5 #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y)):33
             -->_4 #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y)):33
             -->_2 #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y)):33
             -->_5 #eq#(#pos(@x),#neg(@y)) -> c_38():32
             -->_4 #eq#(#pos(@x),#neg(@y)) -> c_38():32
             -->_2 #eq#(#pos(@x),#neg(@y)) -> c_38():32
             -->_5 #eq#(#pos(@x),#0()) -> c_37():31
             -->_4 #eq#(#pos(@x),#0()) -> c_37():31
             -->_2 #eq#(#pos(@x),#0()) -> c_37():31
             -->_5 #eq#(#neg(@x),#pos(@y)) -> c_36():30
             -->_4 #eq#(#neg(@x),#pos(@y)) -> c_36():30
             -->_2 #eq#(#neg(@x),#pos(@y)) -> c_36():30
             -->_5 #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y)):29
             -->_4 #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y)):29
             -->_2 #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y)):29
             -->_5 #eq#(#neg(@x),#0()) -> c_34():28
             -->_4 #eq#(#neg(@x),#0()) -> c_34():28
             -->_2 #eq#(#neg(@x),#0()) -> c_34():28
             -->_5 #eq#(#0(),#s(@y)) -> c_33():27
             -->_4 #eq#(#0(),#s(@y)) -> c_33():27
             -->_2 #eq#(#0(),#s(@y)) -> c_33():27
             -->_5 #eq#(#0(),#pos(@y)) -> c_32():26
             -->_4 #eq#(#0(),#pos(@y)) -> c_32():26
             -->_2 #eq#(#0(),#pos(@y)) -> c_32():26
             -->_5 #eq#(#0(),#neg(@y)) -> c_31():25
             -->_4 #eq#(#0(),#neg(@y)) -> c_31():25
             -->_2 #eq#(#0(),#neg(@y)) -> c_31():25
             -->_5 #eq#(#0(),#0()) -> c_30():24
             -->_4 #eq#(#0(),#0()) -> c_30():24
             -->_2 #eq#(#0(),#0()) -> c_30():24
             -->_3 #and#(#true(),#true()) -> c_29():23
             -->_1 #and#(#true(),#true()) -> c_29():23
             -->_3 #and#(#true(),#false()) -> c_28():22
             -->_1 #and#(#true(),#false()) -> c_28():22
             -->_3 #and#(#false(),#true()) -> c_27():21
             -->_1 #and#(#false(),#true()) -> c_27():21
             -->_3 #and#(#false(),#false()) -> c_26():20
             -->_1 #and#(#false(),#false()) -> c_26():20
          
          52:W:#equal#(@x,@y) -> c_1(#eq#(@x,@y))
             -->_1 #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1)
                                                                                ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
                                                                          ,#eq#(@x_1,@y_1)
                                                                          ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3))
                                                                          ,#eq#(@x_2,@y_2)
                                                                          ,#eq#(@x_3,@y_3)):51
             -->_1 #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56():50
             -->_1 #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55():49
             -->_1 #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54():48
             -->_1 #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53():47
             -->_1 #eq#(nil(),nil()) -> c_52():46
             -->_1 #eq#(nil(),leaf()) -> c_51():45
             -->_1 #eq#(nil(),::(@y_1,@y_2)) -> c_50():44
             -->_1 #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49():43
             -->_1 #eq#(leaf(),nil()) -> c_48():42
             -->_1 #eq#(leaf(),leaf()) -> c_47():41
             -->_1 #eq#(leaf(),::(@y_1,@y_2)) -> c_46():40
             -->_1 #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45():39
             -->_1 #eq#(::(@x_1,@x_2),nil()) -> c_44():38
             -->_1 #eq#(::(@x_1,@x_2),leaf()) -> c_43():37
             -->_1 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
                                                            ,#eq#(@x_1,@y_1)
                                                            ,#eq#(@x_2,@y_2)):36
             -->_1 #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y)):35
             -->_1 #eq#(#s(@x),#0()) -> c_40():34
             -->_1 #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y)):33
             -->_1 #eq#(#pos(@x),#neg(@y)) -> c_38():32
             -->_1 #eq#(#pos(@x),#0()) -> c_37():31
             -->_1 #eq#(#neg(@x),#pos(@y)) -> c_36():30
             -->_1 #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y)):29
             -->_1 #eq#(#neg(@x),#0()) -> c_34():28
             -->_1 #eq#(#0(),#s(@y)) -> c_33():27
             -->_1 #eq#(#0(),#pos(@y)) -> c_32():26
             -->_1 #eq#(#0(),#neg(@y)) -> c_31():25
             -->_1 #eq#(#0(),#0()) -> c_30():24
          
          53:W:appendreverse#1#(nil(),@sofar) -> c_4()
             
          
          54:W:bfs#2#(nil(),@x) -> c_9()
             
          
          55:W:bfs#4#(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_13()
             
          
          56:W:dfs#1#(nil(),@x) -> c_18()
             
          
          57:W:dfs#3#(#true(),@t,@t1,@t2,@ts,@x) -> c_22()
             
          
        The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
          56: dfs#1#(nil(),@x) -> c_18()
          57: dfs#3#(#true(),@t,@t1,@t2,@ts,@x) -> c_22()
          55: bfs#4#(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_13()
          52: #equal#(@x,@y) -> c_1(#eq#(@x,@y))
          51: #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1)
                                                                           ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
                                                                     ,#eq#(@x_1,@y_1)
                                                                     ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3))
                                                                     ,#eq#(@x_2,@y_2)
                                                                     ,#eq#(@x_3,@y_3))
          36: #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
                                                       ,#eq#(@x_1,@y_1)
                                                       ,#eq#(@x_2,@y_2))
          35: #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y))
          33: #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y))
          29: #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y))
          20: #and#(#false(),#false()) -> c_26()
          21: #and#(#false(),#true()) -> c_27()
          22: #and#(#true(),#false()) -> c_28()
          23: #and#(#true(),#true()) -> c_29()
          24: #eq#(#0(),#0()) -> c_30()
          25: #eq#(#0(),#neg(@y)) -> c_31()
          26: #eq#(#0(),#pos(@y)) -> c_32()
          27: #eq#(#0(),#s(@y)) -> c_33()
          28: #eq#(#neg(@x),#0()) -> c_34()
          30: #eq#(#neg(@x),#pos(@y)) -> c_36()
          31: #eq#(#pos(@x),#0()) -> c_37()
          32: #eq#(#pos(@x),#neg(@y)) -> c_38()
          34: #eq#(#s(@x),#0()) -> c_40()
          37: #eq#(::(@x_1,@x_2),leaf()) -> c_43()
          38: #eq#(::(@x_1,@x_2),nil()) -> c_44()
          39: #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45()
          40: #eq#(leaf(),::(@y_1,@y_2)) -> c_46()
          41: #eq#(leaf(),leaf()) -> c_47()
          42: #eq#(leaf(),nil()) -> c_48()
          43: #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49()
          44: #eq#(nil(),::(@y_1,@y_2)) -> c_50()
          45: #eq#(nil(),leaf()) -> c_51()
          46: #eq#(nil(),nil()) -> c_52()
          47: #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53()
          48: #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54()
          49: #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55()
          50: #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56()
          54: bfs#2#(nil(),@x) -> c_9()
          53: appendreverse#1#(nil(),@sofar) -> c_4()
* Step 6: SimplifyRHS WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict DPs:
            appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
                                                                ,#equal#(@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x),#equal#(@a,@x))
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
            dodfs#(@t,@x) -> c_24(dfs#(::(@t,nil()),@x))
            reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/2,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/2,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        SimplifyRHS
    + Details:
        Consider the dependency graph
          1:S:appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
             -->_1 appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))):2
          
          2:S:appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
             -->_1 appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)):1
          
          3:S:bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
             -->_1 bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)):5
             -->_1 bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)):4
          
          4:S:bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
             -->_1 bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                              ,@futurequeue
                                                                              ,@t1
                                                                              ,@t2
                                                                              ,@ts
                                                                              ,@x
                                                                              ,@y)
                                                                       ,#equal#(@x,@y)):8
             -->_1 bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)):7
          
          5:S:bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
             -->_1 bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))):6
          
          6:S:bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
             -->_2 reverse#(@xs) -> c_25(appendreverse#(@xs,nil())):19
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3
          
          7:S:bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3
          
          8:S:bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                         ,@futurequeue
                                                                         ,@t1
                                                                         ,@t2
                                                                         ,@ts
                                                                         ,@x
                                                                         ,@y)
                                                                  ,#equal#(@x,@y))
             -->_1 bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts
                                                                               ,::(@t2,::(@t1,@futurequeue))
                                                                               ,@x)):9
          
          9:S:bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3
          
          10:S:bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
             -->_2 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):17
             -->_1 bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)):11
          
          11:S:bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
             -->_1 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):17
          
          12:S:dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
             -->_1 dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)):13
          
          13:S:dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
             -->_1 dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)
                                                             ,#equal#(@a,@x)):15
             -->_1 dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)):14
          
          14:S:dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
             -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):12
          
          15:S:dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x),#equal#(@a,@x))
             -->_1 dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)):16
          
          16:S:dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
             -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):12
          
          17:S:dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3
          
          18:S:dodfs#(@t,@x) -> c_24(dfs#(::(@t,nil()),@x))
             -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):12
          
          19:S:reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
             -->_1 appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)):1
          
        Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified:
          bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
          dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
* Step 7: RemoveHeads WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict DPs:
            appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
            dodfs#(@t,@x) -> c_24(dfs#(::(@t,nil()),@x))
            reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        RemoveHeads
    + Details:
        Consider the dependency graph
        
        1:S:appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
           -->_1 appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))):2
        
        2:S:appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
           -->_1 appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)):1
        
        3:S:bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
           -->_1 bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)):5
           -->_1 bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)):4
        
        4:S:bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
           -->_1 bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                            ,@futurequeue
                                                                            ,@t1
                                                                            ,@t2
                                                                            ,@ts
                                                                            ,@x
                                                                            ,@y)):8
           -->_1 bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)):7
        
        5:S:bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
           -->_1 bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))):6
        
        6:S:bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
           -->_2 reverse#(@xs) -> c_25(appendreverse#(@xs,nil())):19
           -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3
        
        7:S:bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
           -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3
        
        8:S:bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                       ,@futurequeue
                                                                       ,@t1
                                                                       ,@t2
                                                                       ,@ts
                                                                       ,@x
                                                                       ,@y))
           -->_1 bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts
                                                                             ,::(@t2,::(@t1,@futurequeue))
                                                                             ,@x)):9
        
        9:S:bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
           -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3
        
        10:S:bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
           -->_2 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):17
           -->_1 bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)):11
        
        11:S:bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
           -->_1 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):17
        
        12:S:dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
           -->_1 dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)):13
        
        13:S:dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
           -->_1 dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)):15
           -->_1 dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)):14
        
        14:S:dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
           -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):12
        
        15:S:dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
           -->_1 dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)):16
        
        16:S:dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
           -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):12
        
        17:S:dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
           -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3
        
        18:S:dodfs#(@t,@x) -> c_24(dfs#(::(@t,nil()),@x))
           -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):12
        
        19:S:reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
           -->_1 appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)):1
        
        
        Following roots of the dependency graph are removed, as the considered set of starting terms is closed under reduction with respect to these rules (modulo compound contexts).
        
        [(18,dodfs#(@t,@x) -> c_24(dfs#(::(@t,nil()),@x)))]
* Step 8: Decompose WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict DPs:
            appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
            reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        Decompose {onSelection = all cycle independent sub-graph, withBound = RelativeAdd}
    + Details:
        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 DPs:
              appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
              appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
          - Weak DPs:
              bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
              bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
              bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
              bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
              bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
              bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
              bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
              bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
              bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
              dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
              dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
              dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
              dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
              dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
              dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
              reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
          - Weak TRS:
              #and(#false(),#false()) -> #false()
              #and(#false(),#true()) -> #false()
              #and(#true(),#false()) -> #false()
              #and(#true(),#true()) -> #true()
              #eq(#0(),#0()) -> #true()
              #eq(#0(),#neg(@y)) -> #false()
              #eq(#0(),#pos(@y)) -> #false()
              #eq(#0(),#s(@y)) -> #false()
              #eq(#neg(@x),#0()) -> #false()
              #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
              #eq(#neg(@x),#pos(@y)) -> #false()
              #eq(#pos(@x),#0()) -> #false()
              #eq(#pos(@x),#neg(@y)) -> #false()
              #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
              #eq(#s(@x),#0()) -> #false()
              #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
              #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
              #eq(::(@x_1,@x_2),leaf()) -> #false()
              #eq(::(@x_1,@x_2),nil()) -> #false()
              #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
              #eq(leaf(),::(@y_1,@y_2)) -> #false()
              #eq(leaf(),leaf()) -> #true()
              #eq(leaf(),nil()) -> #false()
              #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
              #eq(nil(),::(@y_1,@y_2)) -> #false()
              #eq(nil(),leaf()) -> #false()
              #eq(nil(),nil()) -> #true()
              #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
              #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
              #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
              #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
              #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
              #equal(@x,@y) -> #eq(@x,@y)
              appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
              appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
              appendreverse#1(nil(),@sofar) -> @sofar
              bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
              bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
              bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
              bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
              bfs#2(nil(),@x) -> leaf()
              bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
              bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
              bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
              bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
              dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
              reverse(@xs) -> appendreverse(@xs,nil())
          - Signature:
              {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
              ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2
              ,appendreverse#/2,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2
              ,dfs#1#/2,dfs#2#/4,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2
              ,leaf/0,nil/0,node/3,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0
              ,c_14/2,c_15/1,c_16/1,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0
              ,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0
              ,c_44/0,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
          - Obligation:
              innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
              ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
              ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
        
        Problem (S)
          - Strict DPs:
              bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
              bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
              bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
              bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
              bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
              bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
              bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
              bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
              bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
              dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
              dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
              dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
              dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
              dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
              dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
              reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
          - Weak DPs:
              appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
              appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
          - Weak TRS:
              #and(#false(),#false()) -> #false()
              #and(#false(),#true()) -> #false()
              #and(#true(),#false()) -> #false()
              #and(#true(),#true()) -> #true()
              #eq(#0(),#0()) -> #true()
              #eq(#0(),#neg(@y)) -> #false()
              #eq(#0(),#pos(@y)) -> #false()
              #eq(#0(),#s(@y)) -> #false()
              #eq(#neg(@x),#0()) -> #false()
              #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
              #eq(#neg(@x),#pos(@y)) -> #false()
              #eq(#pos(@x),#0()) -> #false()
              #eq(#pos(@x),#neg(@y)) -> #false()
              #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
              #eq(#s(@x),#0()) -> #false()
              #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
              #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
              #eq(::(@x_1,@x_2),leaf()) -> #false()
              #eq(::(@x_1,@x_2),nil()) -> #false()
              #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
              #eq(leaf(),::(@y_1,@y_2)) -> #false()
              #eq(leaf(),leaf()) -> #true()
              #eq(leaf(),nil()) -> #false()
              #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
              #eq(nil(),::(@y_1,@y_2)) -> #false()
              #eq(nil(),leaf()) -> #false()
              #eq(nil(),nil()) -> #true()
              #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
              #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
              #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
              #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
              #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
              #equal(@x,@y) -> #eq(@x,@y)
              appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
              appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
              appendreverse#1(nil(),@sofar) -> @sofar
              bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
              bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
              bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
              bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
              bfs#2(nil(),@x) -> leaf()
              bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
              bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
              bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
              bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
              dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
              reverse(@xs) -> appendreverse(@xs,nil())
          - Signature:
              {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
              ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2
              ,appendreverse#/2,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2
              ,dfs#1#/2,dfs#2#/4,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2
              ,leaf/0,nil/0,node/3,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0
              ,c_14/2,c_15/1,c_16/1,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0
              ,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0
              ,c_44/0,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
          - Obligation:
              innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
              ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
              ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
** Step 8.a:1: RemoveWeakSuffixes WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict DPs:
            appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
        - Weak DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
            reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        RemoveWeakSuffixes
    + Details:
        Consider the dependency graph
          1:S:appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
             -->_1 appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))):2
          
          2:S:appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
             -->_1 appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)):1
          
          3:W:bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
             -->_1 bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)):5
             -->_1 bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)):4
          
          4:W:bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
             -->_1 bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                              ,@futurequeue
                                                                              ,@t1
                                                                              ,@t2
                                                                              ,@ts
                                                                              ,@x
                                                                              ,@y)):8
             -->_1 bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)):7
          
          5:W:bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
             -->_1 bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))):6
          
          6:W:bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3
             -->_2 reverse#(@xs) -> c_25(appendreverse#(@xs,nil())):19
          
          7:W:bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3
          
          8:W:bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                         ,@futurequeue
                                                                         ,@t1
                                                                         ,@t2
                                                                         ,@ts
                                                                         ,@x
                                                                         ,@y))
             -->_1 bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts
                                                                               ,::(@t2,::(@t1,@futurequeue))
                                                                               ,@x)):9
          
          9:W:bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3
          
          10:W:bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
             -->_2 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):17
             -->_1 bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)):11
          
          11:W:bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
             -->_1 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):17
          
          12:W:dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
             -->_1 dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)):13
          
          13:W:dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
             -->_1 dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)):15
             -->_1 dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)):14
          
          14:W:dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
             -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):12
          
          15:W:dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
             -->_1 dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)):16
          
          16:W:dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
             -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):12
          
          17:W:dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3
          
          19:W:reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
             -->_1 appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)):1
          
        The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
          12: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
          16: dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
          15: dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
          13: dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
          14: dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
** Step 8.a:2: DecomposeDG WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict DPs:
            appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
        - Weak DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
            reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        DecomposeDG {onSelection = all below first cut in WDG, onUpper = Just someStrategy, onLower = Nothing}
    + Details:
        We decompose the input problem according to the dependency graph into the upper component
          bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
          bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
          bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
          bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
          bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
          bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
          bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
          bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
          bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
          dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        and a lower component
          appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
          appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
          reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
        Further, following extension rules are added to the lower component.
          bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x)
          bfs#1#(::(@t,@ts),@futurequeue,@x) -> bfs#3#(@t,@futurequeue,@ts,@x)
          bfs#1#(nil(),@futurequeue,@x) -> bfs#2#(@futurequeue,@x)
          bfs#2#(::(@t,@ts),@x) -> bfs#(reverse(::(@t,@ts)),nil(),@x)
          bfs#2#(::(@t,@ts),@x) -> reverse#(::(@t,@ts))
          bfs#3#(leaf(),@futurequeue,@ts,@x) -> bfs#(@ts,@futurequeue,@x)
          bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
          bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)
          bfs2#(@t,@x) -> bfs2#1#(dobfs(@t,@x),@x)
          bfs2#(@t,@x) -> dobfs#(@t,@x)
          bfs2#1#(@t',@x) -> dobfs#(@t',@x)
          dobfs#(@t,@x) -> bfs#(::(@t,nil()),nil(),@x)
*** Step 8.a:2.a:1: PredecessorEstimationCP WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict DPs:
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
        - Weak DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}}
    + Details:
        We first use the processor NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
          1: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
          
        Consider the set of all dependency pairs
          1: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
          2: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
          3: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
          4: bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
          5: bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
          6: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                        ,@futurequeue
                                                                        ,@t1
                                                                        ,@t2
                                                                        ,@ts
                                                                        ,@x
                                                                        ,@y))
          7: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
          8: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
          9: bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
          10: dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        Processor NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^2))
        SPACE(?,?)on application of the dependency pairs
          {1}
        These cover all (indirect) predecessors of dependency pairs
          {1,8,9,10}
        their number of applications is equally bounded.
        The dependency pairs are shifted into the weak component.
**** Step 8.a:2.a:1.a:1: NaturalMI WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict DPs:
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
        - Weak DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules}
    + Details:
        We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 2 non-zero interpretation-entries in the diagonal of the component-wise maxima):
        The following argument positions are considered usable:
          uargs(c_5) = {1},
          uargs(c_6) = {1},
          uargs(c_7) = {1},
          uargs(c_8) = {1},
          uargs(c_10) = {1},
          uargs(c_11) = {1},
          uargs(c_12) = {1},
          uargs(c_14) = {1,2},
          uargs(c_15) = {1},
          uargs(c_23) = {1}
        
        Following symbols are considered usable:
          {#and,#eq,#equal,appendreverse,appendreverse#1,bfs,bfs#1,bfs#2,bfs#3,bfs#4,dobfs,reverse,#and#,#eq#
          ,#equal#,appendreverse#,appendreverse#1#,bfs#,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#
          ,dfs#3#,dobfs#,dodfs#,reverse#}
        TcT has computed the following interpretation:
                        p(#0) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(#and) = [0]                                                                              
                                [0]                                                                              
                                [1]                                                                              
                       p(#eq) = [0]                                                                              
                                [0]                                                                              
                                [1]                                                                              
                    p(#equal) = [0 1 1]      [0 0 0]      [0]                                                    
                                [1 1 0] x1 + [0 1 0] x2 + [0]                                                    
                                [0 0 0]      [0 0 0]      [1]                                                    
                    p(#false) = [0]                                                                              
                                [0]                                                                              
                                [1]                                                                              
                      p(#neg) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(#pos) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                        p(#s) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                     p(#true) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                        p(::) = [0 0 0]      [0 0 0]      [1]                                                    
                                [0 1 0] x1 + [0 1 0] x2 + [1]                                                    
                                [0 0 1]      [0 0 1]      [0]                                                    
             p(appendreverse) = [0 1 0]      [1 0 0]      [0]                                                    
                                [0 1 0] x1 + [0 1 0] x2 + [0]                                                    
                                [0 0 1]      [0 0 1]      [0]                                                    
           p(appendreverse#1) = [0 1 0]      [1 0 0]      [0]                                                    
                                [0 1 0] x1 + [0 1 0] x2 + [0]                                                    
                                [0 0 1]      [0 0 1]      [0]                                                    
                       p(bfs) = [0 1 0]      [0 1 0]      [0]                                                    
                                [0 1 0] x1 + [0 1 0] x2 + [0]                                                    
                                [0 1 0]      [0 1 0]      [0]                                                    
                     p(bfs#1) = [0 1 0]      [0 1 0]      [0]                                                    
                                [0 1 0] x1 + [0 1 0] x2 + [0]                                                    
                                [0 1 0]      [0 1 0]      [0]                                                    
                     p(bfs#2) = [0 1 0]      [0]                                                                 
                                [0 1 0] x1 + [0]                                                                 
                                [0 1 0]      [0]                                                                 
                     p(bfs#3) = [0 1 0]      [0 1 0]      [0 1 0]      [1]                                       
                                [0 1 0] x1 + [0 1 0] x2 + [0 1 0] x3 + [1]                                       
                                [0 1 0]      [0 1 0]      [0 1 0]      [1]                                       
                     p(bfs#4) = [0 0 1]      [0 1 0]      [0 1 1]      [0 1 0]      [0 1 0]      [0 0 0]      [1]
                                [0 0 1] x1 + [0 1 0] x2 + [0 1 1] x3 + [0 1 1] x4 + [0 1 0] x5 + [0 1 0] x7 + [1]
                                [0 0 1]      [0 1 0]      [0 1 1]      [0 1 1]      [0 1 0]      [0 1 0]      [1]
                      p(bfs2) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                    p(bfs2#1) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                       p(dfs) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                     p(dfs#1) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                     p(dfs#2) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                     p(dfs#3) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                     p(dobfs) = [0 1 0]      [0 0 0]      [1]                                                    
                                [1 1 0] x1 + [0 0 0] x2 + [1]                                                    
                                [1 1 0]      [1 0 0]      [1]                                                    
                     p(dodfs) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(leaf) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                       p(nil) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(node) = [0 0 0]      [0 0 0]      [0 1 0]      [0]                                       
                                [0 1 0] x1 + [0 1 1] x2 + [0 1 1] x3 + [1]                                       
                                [0 0 0]      [0 0 1]      [0 0 1]      [1]                                       
                   p(reverse) = [0 1 0]      [1]                                                                 
                                [0 1 0] x1 + [0]                                                                 
                                [0 0 1]      [0]                                                                 
                     p(#and#) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(#eq#) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                   p(#equal#) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
            p(appendreverse#) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
          p(appendreverse#1#) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(bfs#) = [0 0 1]      [1 0 1]      [0 0 0]      [0]                                       
                                [0 0 0] x1 + [0 0 0] x2 + [1 0 0] x3 + [1]                                       
                                [0 1 0]      [0 0 0]      [1 1 0]      [0]                                       
                    p(bfs#1#) = [0 0 1]      [1 0 1]      [0 0 0]      [0]                                       
                                [0 1 1] x1 + [1 1 1] x2 + [0 1 1] x3 + [0]                                       
                                [0 1 0]      [0 0 0]      [0 0 0]      [0]                                       
                    p(bfs#2#) = [1 0 1]      [0 0 0]      [0]                                                    
                                [0 0 0] x1 + [0 0 0] x2 + [1]                                                    
                                [0 0 1]      [0 1 0]      [0]                                                    
                    p(bfs#3#) = [0 0 1]      [1 0 1]      [0 0 1]      [0 0 0]      [0]                          
                                [0 0 0] x1 + [0 1 0] x2 + [0 0 0] x3 + [0 1 1] x4 + [1]                          
                                [0 0 0]      [1 1 1]      [1 0 1]      [0 1 0]      [1]                          
                    p(bfs#4#) = [0 0 1]      [0 0 1]      [0 0 1]      [0 0 1]      [0 0 0]      [0 0 0]      [1]
                                [1 0 1] x2 + [0 0 1] x3 + [1 1 1] x4 + [0 0 1] x5 + [0 0 0] x6 + [1 1 1] x7 + [1]
                                [0 0 0]      [0 0 0]      [0 0 0]      [1 0 0]      [0 1 0]      [0 0 0]      [1]
                     p(bfs2#) = [1 1 1]      [1 1 1]      [1]                                                    
                                [1 0 1] x1 + [1 1 1] x2 + [1]                                                    
                                [1 1 1]      [1 1 1]      [1]                                                    
                   p(bfs2#1#) = [0 0 1]      [0 1 0]      [0]                                                    
                                [0 0 1] x1 + [0 0 0] x2 + [1]                                                    
                                [0 1 1]      [0 0 0]      [0]                                                    
                      p(dfs#) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                    p(dfs#1#) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                    p(dfs#2#) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                    p(dfs#3#) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                    p(dobfs#) = [0 0 1]      [0 0 0]      [0]                                                    
                                [0 0 0] x1 + [1 1 1] x2 + [1]                                                    
                                [0 0 0]      [0 1 0]      [0]                                                    
                    p(dodfs#) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                  p(reverse#) = [0 1 0]      [1]                                                                 
                                [0 0 0] x1 + [1]                                                                 
                                [0 0 0]      [0]                                                                 
                       p(c_1) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                       p(c_2) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                       p(c_3) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                       p(c_4) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                       p(c_5) = [1 0 0]      [0]                                                                 
                                [0 0 0] x1 + [0]                                                                 
                                [0 0 1]      [0]                                                                 
                       p(c_6) = [1 0 0]      [0]                                                                 
                                [0 1 0] x1 + [0]                                                                 
                                [0 0 0]      [0]                                                                 
                       p(c_7) = [1 0 0]      [0]                                                                 
                                [0 0 1] x1 + [0]                                                                 
                                [0 0 0]      [0]                                                                 
                       p(c_8) = [1 0 0]      [0]                                                                 
                                [0 0 0] x1 + [0]                                                                 
                                [0 0 0]      [0]                                                                 
                       p(c_9) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_10) = [1 0 0]      [0]                                                                 
                                [0 0 0] x1 + [0]                                                                 
                                [1 0 0]      [0]                                                                 
                      p(c_11) = [1 0 0]      [0]                                                                 
                                [0 0 0] x1 + [0]                                                                 
                                [0 0 1]      [0]                                                                 
                      p(c_12) = [1 0 0]      [0]                                                                 
                                [1 0 0] x1 + [0]                                                                 
                                [0 0 0]      [1]                                                                 
                      p(c_13) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_14) = [1 0 0]      [1 0 0]      [0]                                                    
                                [0 0 0] x1 + [0 1 0] x2 + [0]                                                    
                                [1 0 0]      [0 0 0]      [0]                                                    
                      p(c_15) = [1 0 1]      [0]                                                                 
                                [1 0 0] x1 + [1]                                                                 
                                [0 0 0]      [0]                                                                 
                      p(c_16) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_17) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_18) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_19) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_20) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_21) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_22) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_23) = [1 0 0]      [0]                                                                 
                                [0 1 0] x1 + [0]                                                                 
                                [0 0 0]      [0]                                                                 
                      p(c_24) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_25) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_26) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_27) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_28) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_29) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_30) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_31) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_32) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_33) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_34) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_35) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_36) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_37) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_38) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_39) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_40) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_41) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_42) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_43) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_44) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_45) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_46) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_47) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_48) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_49) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_50) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_51) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_52) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_53) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_54) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_55) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_56) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_57) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
        
        Following rules are strictly oriented:
        bfs#2#(::(@t,@ts),@x) = [0 0 1]      [0 0 1]       [0 0 0]      [1]                 
                                [0 0 0] @t + [0 0 0] @ts + [0 0 0] @x + [1]                 
                                [0 0 1]      [0 0 1]       [0 1 0]      [0]                 
                              > [0 0 1]      [0 0 1]       [0]                              
                                [0 0 0] @t + [0 0 0] @ts + [0]                              
                                [0 0 0]      [0 0 0]       [0]                              
                              = c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
        
        
        Following rules are (at-least) weakly oriented:
                           bfs#(@queue,@futurequeue,@x) =  [1 0 1]                [0 0 1]          [0 0 0]      [0]                                      
                                                           [0 0 0] @futurequeue + [0 0 0] @queue + [1 0 0] @x + [1]                                      
                                                           [0 0 0]                [0 1 0]          [1 1 0]      [0]                                      
                                                        >= [1 0 1]                [0 0 1]          [0]                                                   
                                                           [0 0 0] @futurequeue + [0 0 0] @queue + [0]                                                   
                                                           [0 0 0]                [0 1 0]          [0]                                                   
                                                        =  c_5(bfs#1#(@queue,@futurequeue,@x))                                                           
        
                     bfs#1#(::(@t,@ts),@futurequeue,@x) =  [1 0 1]                [0 0 1]      [0 0 1]       [0 0 0]      [0]                            
                                                           [1 1 1] @futurequeue + [0 1 1] @t + [0 1 1] @ts + [0 1 1] @x + [1]                            
                                                           [0 0 0]                [0 1 0]      [0 1 0]       [0 0 0]      [1]                            
                                                        >= [1 0 1]                [0 0 1]      [0 0 1]       [0 0 0]      [0]                            
                                                           [0 1 0] @futurequeue + [0 0 0] @t + [0 0 0] @ts + [0 1 1] @x + [1]                            
                                                           [0 0 0]                [0 0 0]      [0 0 0]       [0 0 0]      [0]                            
                                                        =  c_6(bfs#3#(@t,@futurequeue,@ts,@x))                                                           
        
                          bfs#1#(nil(),@futurequeue,@x) =  [1 0 1]                [0 0 0]      [0]                                                       
                                                           [1 1 1] @futurequeue + [0 1 1] @x + [0]                                                       
                                                           [0 0 0]                [0 0 0]      [0]                                                       
                                                        >= [1 0 1]                [0 0 0]      [0]                                                       
                                                           [0 0 1] @futurequeue + [0 1 0] @x + [0]                                                       
                                                           [0 0 0]                [0 0 0]      [0]                                                       
                                                        =  c_7(bfs#2#(@futurequeue,@x))                                                                  
        
                     bfs#3#(leaf(),@futurequeue,@ts,@x) =  [1 0 1]                [0 0 1]       [0 0 0]      [0]                                         
                                                           [0 1 0] @futurequeue + [0 0 0] @ts + [0 1 1] @x + [1]                                         
                                                           [1 1 1]                [1 0 1]       [0 1 0]      [1]                                         
                                                        >= [1 0 1]                [0 0 1]       [0]                                                      
                                                           [0 0 0] @futurequeue + [0 0 0] @ts + [0]                                                      
                                                           [1 0 1]                [0 0 1]       [0]                                                      
                                                        =  c_10(bfs#(@ts,@futurequeue,@x))                                                               
        
           bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) =  [1 0 1]                [0 0 1]       [0 0 1]       [0 0 1]       [0 0 0]      [1]             
                                                           [0 1 0] @futurequeue + [0 0 0] @t1 + [0 0 0] @t2 + [0 0 0] @ts + [0 1 1] @x + [1]             
                                                           [1 1 1]                [0 0 0]       [0 0 0]       [1 0 1]       [0 1 0]      [1]             
                                                        >= [0 0 1]                [0 0 1]       [0 0 1]       [0 0 1]       [0 0 0]      [1]             
                                                           [0 0 0] @futurequeue + [0 0 0] @t1 + [0 0 0] @t2 + [0 0 0] @ts + [0 0 0] @x + [0]             
                                                           [0 0 0]                [0 0 0]       [0 0 0]       [1 0 0]       [0 1 0]      [1]             
                                                        =  c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))                                    
        
        bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) =  [0 0 1]                [0 0 1]       [0 0 1]       [0 0 1]       [0 0 0]      [0 0 0]      [1]
                                                           [1 0 1] @futurequeue + [0 0 1] @t1 + [1 1 1] @t2 + [0 0 1] @ts + [0 0 0] @x + [1 1 1] @y + [1]
                                                           [0 0 0]                [0 0 0]       [0 0 0]       [1 0 0]       [0 1 0]      [0 0 0]      [1]
                                                        >= [0 0 1]                [0 0 1]       [0 0 1]       [0 0 1]       [1]                          
                                                           [0 0 1] @futurequeue + [0 0 1] @t1 + [0 0 1] @t2 + [0 0 1] @ts + [1]                          
                                                           [0 0 0]                [0 0 0]       [0 0 0]       [0 0 0]       [1]                          
                                                        =  c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))                                               
        
                                           bfs2#(@t,@x) =  [1 1 1]      [1 1 1]      [1]                                                                 
                                                           [1 0 1] @t + [1 1 1] @x + [1]                                                                 
                                                           [1 1 1]      [1 1 1]      [1]                                                                 
                                                        >= [1 1 1]      [1 1 0]      [1]                                                                 
                                                           [0 0 0] @t + [1 1 1] @x + [1]                                                                 
                                                           [1 1 0]      [1 1 0]      [1]                                                                 
                                                        =  c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))                                                  
        
                                        bfs2#1#(@t',@x) =  [0 0 1]       [0 1 0]      [0]                                                                
                                                           [0 0 1] @t' + [0 0 0] @x + [1]                                                                
                                                           [0 1 1]       [0 0 0]      [0]                                                                
                                                        >= [0 0 1]       [0 1 0]      [0]                                                                
                                                           [0 0 1] @t' + [0 0 0] @x + [1]                                                                
                                                           [0 0 0]       [0 0 0]      [0]                                                                
                                                        =  c_15(dobfs#(@t',@x))                                                                          
        
                                          dobfs#(@t,@x) =  [0 0 1]      [0 0 0]      [0]                                                                 
                                                           [0 0 0] @t + [1 1 1] @x + [1]                                                                 
                                                           [0 0 0]      [0 1 0]      [0]                                                                 
                                                        >= [0 0 1]      [0 0 0]      [0]                                                                 
                                                           [0 0 0] @t + [1 0 0] @x + [1]                                                                 
                                                           [0 0 0]      [0 0 0]      [0]                                                                 
                                                        =  c_23(bfs#(::(@t,nil()),nil(),@x))                                                             
        
                                #and(#false(),#false()) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        =  #false()                                                                                      
        
                                 #and(#false(),#true()) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        =  #false()                                                                                      
        
                                 #and(#true(),#false()) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        =  #false()                                                                                      
        
                                  #and(#true(),#true()) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [0]                                                                                           
                                                        =  #true()                                                                                       
        
                                         #eq(#0(),#0()) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [0]                                                                                           
                                                        =  #true()                                                                                       
        
                                     #eq(#0(),#neg(@y)) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        =  #false()                                                                                      
        
                                     #eq(#0(),#pos(@y)) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        =  #false()                                                                                      
        
                                       #eq(#0(),#s(@y)) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        =  #false()                                                                                      
        
                                     #eq(#neg(@x),#0()) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        =  #false()                                                                                      
        
                                 #eq(#neg(@x),#neg(@y)) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        =  #eq(@x,@y)                                                                                    
        
                                 #eq(#neg(@x),#pos(@y)) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        =  #false()                                                                                      
        
                                     #eq(#pos(@x),#0()) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        =  #false()                                                                                      
        
                                 #eq(#pos(@x),#neg(@y)) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        =  #false()                                                                                      
        
                                 #eq(#pos(@x),#pos(@y)) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        =  #eq(@x,@y)                                                                                    
        
                                       #eq(#s(@x),#0()) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        =  #false()                                                                                      
        
                                     #eq(#s(@x),#s(@y)) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        =  #eq(@x,@y)                                                                                    
        
                       #eq(::(@x_1,@x_2),::(@y_1,@y_2)) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        =  #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))                                                           
        
                              #eq(::(@x_1,@x_2),leaf()) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        =  #false()                                                                                      
        
                               #eq(::(@x_1,@x_2),nil()) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        =  #false()                                                                                      
        
                #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        =  #false()                                                                                      
        
                              #eq(leaf(),::(@y_1,@y_2)) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        =  #false()                                                                                      
        
                                     #eq(leaf(),leaf()) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [0]                                                                                           
                                                        =  #true()                                                                                       
        
                                      #eq(leaf(),nil()) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        =  #false()                                                                                      
        
                       #eq(leaf(),node(@y_1,@y_2,@y_3)) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        =  #false()                                                                                      
        
                               #eq(nil(),::(@y_1,@y_2)) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        =  #false()                                                                                      
        
                                      #eq(nil(),leaf()) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        =  #false()                                                                                      
        
                                       #eq(nil(),nil()) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [0]                                                                                           
                                                        =  #true()                                                                                       
        
                        #eq(nil(),node(@y_1,@y_2,@y_3)) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        =  #false()                                                                                      
        
                #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        =  #false()                                                                                      
        
                       #eq(node(@x_1,@x_2,@x_3),leaf()) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        =  #false()                                                                                      
        
                        #eq(node(@x_1,@x_2,@x_3),nil()) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        =  #false()                                                                                      
        
         #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        =  #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))                                      
        
                                          #equal(@x,@y) =  [0 1 1]      [0 0 0]      [0]                                                                 
                                                           [1 1 0] @x + [0 1 0] @y + [0]                                                                 
                                                           [0 0 0]      [0 0 0]      [1]                                                                 
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [1]                                                                                           
                                                        =  #eq(@x,@y)                                                                                    
        
                       appendreverse(@toreverse,@sofar) =  [1 0 0]          [0 1 0]              [0]                                                     
                                                           [0 1 0] @sofar + [0 1 0] @toreverse + [0]                                                     
                                                           [0 0 1]          [0 0 1]              [0]                                                     
                                                        >= [1 0 0]          [0 1 0]              [0]                                                     
                                                           [0 1 0] @sofar + [0 1 0] @toreverse + [0]                                                     
                                                           [0 0 1]          [0 0 1]              [0]                                                     
                                                        =  appendreverse#1(@toreverse,@sofar)                                                            
        
                     appendreverse#1(::(@a,@as),@sofar) =  [0 1 0]      [0 1 0]       [1 0 0]          [1]                                               
                                                           [0 1 0] @a + [0 1 0] @as + [0 1 0] @sofar + [1]                                               
                                                           [0 0 1]      [0 0 1]       [0 0 1]          [0]                                               
                                                        >= [0 0 0]      [0 1 0]       [0 0 0]          [1]                                               
                                                           [0 1 0] @a + [0 1 0] @as + [0 1 0] @sofar + [1]                                               
                                                           [0 0 1]      [0 0 1]       [0 0 1]          [0]                                               
                                                        =  appendreverse(@as,::(@a,@sofar))                                                              
        
                          appendreverse#1(nil(),@sofar) =  [1 0 0]          [0]                                                                          
                                                           [0 1 0] @sofar + [0]                                                                          
                                                           [0 0 1]          [0]                                                                          
                                                        >= [1 0 0]          [0]                                                                          
                                                           [0 1 0] @sofar + [0]                                                                          
                                                           [0 0 1]          [0]                                                                          
                                                        =  @sofar                                                                                        
        
                            bfs(@queue,@futurequeue,@x) =  [0 1 0]                [0 1 0]          [0]                                                   
                                                           [0 1 0] @futurequeue + [0 1 0] @queue + [0]                                                   
                                                           [0 1 0]                [0 1 0]          [0]                                                   
                                                        >= [0 1 0]                [0 1 0]          [0]                                                   
                                                           [0 1 0] @futurequeue + [0 1 0] @queue + [0]                                                   
                                                           [0 1 0]                [0 1 0]          [0]                                                   
                                                        =  bfs#1(@queue,@futurequeue,@x)                                                                 
        
                      bfs#1(::(@t,@ts),@futurequeue,@x) =  [0 1 0]                [0 1 0]      [0 1 0]       [1]                                         
                                                           [0 1 0] @futurequeue + [0 1 0] @t + [0 1 0] @ts + [1]                                         
                                                           [0 1 0]                [0 1 0]      [0 1 0]       [1]                                         
                                                        >= [0 1 0]                [0 1 0]      [0 1 0]       [1]                                         
                                                           [0 1 0] @futurequeue + [0 1 0] @t + [0 1 0] @ts + [1]                                         
                                                           [0 1 0]                [0 1 0]      [0 1 0]       [1]                                         
                                                        =  bfs#3(@t,@futurequeue,@ts,@x)                                                                 
        
                           bfs#1(nil(),@futurequeue,@x) =  [0 1 0]                [0]                                                                    
                                                           [0 1 0] @futurequeue + [0]                                                                    
                                                           [0 1 0]                [0]                                                                    
                                                        >= [0 1 0]                [0]                                                                    
                                                           [0 1 0] @futurequeue + [0]                                                                    
                                                           [0 1 0]                [0]                                                                    
                                                        =  bfs#2(@futurequeue,@x)                                                                        
        
                                   bfs#2(::(@t,@ts),@x) =  [0 1 0]      [0 1 0]       [1]                                                                
                                                           [0 1 0] @t + [0 1 0] @ts + [1]                                                                
                                                           [0 1 0]      [0 1 0]       [1]                                                                
                                                        >= [0 1 0]      [0 1 0]       [1]                                                                
                                                           [0 1 0] @t + [0 1 0] @ts + [1]                                                                
                                                           [0 1 0]      [0 1 0]       [1]                                                                
                                                        =  bfs(reverse(::(@t,@ts)),nil(),@x)                                                             
        
                                        bfs#2(nil(),@x) =  [0]                                                                                           
                                                           [0]                                                                                           
                                                           [0]                                                                                           
                                                        >= [0]                                                                                           
                                                           [0]                                                                                           
                                                           [0]                                                                                           
                                                        =  leaf()                                                                                        
        
                      bfs#3(leaf(),@futurequeue,@ts,@x) =  [0 1 0]                [0 1 0]       [1]                                                      
                                                           [0 1 0] @futurequeue + [0 1 0] @ts + [1]                                                      
                                                           [0 1 0]                [0 1 0]       [1]                                                      
                                                        >= [0 1 0]                [0 1 0]       [0]                                                      
                                                           [0 1 0] @futurequeue + [0 1 0] @ts + [0]                                                      
                                                           [0 1 0]                [0 1 0]       [0]                                                      
                                                        =  bfs(@ts,@futurequeue,@x)                                                                      
        
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) =  [0 1 0]                [0 1 1]       [0 1 1]       [0 1 0]       [0 1 0]      [2]             
                                                           [0 1 0] @futurequeue + [0 1 1] @t1 + [0 1 1] @t2 + [0 1 0] @ts + [0 1 0] @y + [2]             
                                                           [0 1 0]                [0 1 1]       [0 1 1]       [0 1 0]       [0 1 0]      [2]             
                                                        >= [0 1 0]                [0 1 1]       [0 1 0]       [0 1 0]       [0 0 0]      [2]             
                                                           [0 1 0] @futurequeue + [0 1 1] @t1 + [0 1 1] @t2 + [0 1 0] @ts + [0 1 0] @y + [2]             
                                                           [0 1 0]                [0 1 1]       [0 1 1]       [0 1 0]       [0 1 0]      [2]             
                                                        =  bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)                                           
        
         bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) =  [0 1 0]                [0 1 1]       [0 1 0]       [0 1 0]       [0 0 0]      [2]             
                                                           [0 1 0] @futurequeue + [0 1 1] @t1 + [0 1 1] @t2 + [0 1 0] @ts + [0 1 0] @y + [2]             
                                                           [0 1 0]                [0 1 1]       [0 1 1]       [0 1 0]       [0 1 0]      [2]             
                                                        >= [0 1 0]                [0 1 0]       [0 1 0]       [0 1 0]       [2]                          
                                                           [0 1 0] @futurequeue + [0 1 0] @t1 + [0 1 0] @t2 + [0 1 0] @ts + [2]                          
                                                           [0 1 0]                [0 1 0]       [0 1 0]       [0 1 0]       [2]                          
                                                        =  bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)                                                      
        
          bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) =  [0 1 0]                [0 1 1]       [0 1 0]       [0 1 0]       [0 0 0]      [1]             
                                                           [0 1 0] @futurequeue + [0 1 1] @t1 + [0 1 1] @t2 + [0 1 0] @ts + [0 1 0] @y + [1]             
                                                           [0 1 0]                [0 1 1]       [0 1 1]       [0 1 0]       [0 1 0]      [1]             
                                                        >= [0 0 0]       [0 1 0]       [0 0 0]      [0]                                                  
                                                           [0 1 1] @t1 + [0 1 1] @t2 + [0 1 0] @y + [1]                                                  
                                                           [0 0 1]       [0 0 1]       [0 0 0]      [1]                                                  
                                                        =  node(@y,@t1,@t2)                                                                              
        
                                           dobfs(@t,@x) =  [0 1 0]      [0 0 0]      [1]                                                                 
                                                           [1 1 0] @t + [0 0 0] @x + [1]                                                                 
                                                           [1 1 0]      [1 0 0]      [1]                                                                 
                                                        >= [0 1 0]      [1]                                                                              
                                                           [0 1 0] @t + [1]                                                                              
                                                           [0 1 0]      [1]                                                                              
                                                        =  bfs(::(@t,nil()),nil(),@x)                                                                    
        
                                           reverse(@xs) =  [0 1 0]       [1]                                                                             
                                                           [0 1 0] @xs + [0]                                                                             
                                                           [0 0 1]       [0]                                                                             
                                                        >= [0 1 0]       [0]                                                                             
                                                           [0 1 0] @xs + [0]                                                                             
                                                           [0 0 1]       [0]                                                                             
                                                        =  appendreverse(@xs,nil())                                                                      
        
**** Step 8.a:2.a:1.a:2: Assumption WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
    + Details:
        ()

**** Step 8.a:2.a:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        RemoveWeakSuffixes
    + Details:
        Consider the dependency graph
          1:W:bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
             -->_1 bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)):3
             -->_1 bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)):2
          
          2:W:bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
             -->_1 bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                              ,@futurequeue
                                                                              ,@t1
                                                                              ,@t2
                                                                              ,@ts
                                                                              ,@x
                                                                              ,@y)):6
             -->_1 bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)):5
          
          3:W:bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
             -->_1 bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))):4
          
          4:W:bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1
          
          5:W:bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1
          
          6:W:bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                         ,@futurequeue
                                                                         ,@t1
                                                                         ,@t2
                                                                         ,@ts
                                                                         ,@x
                                                                         ,@y))
             -->_1 bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts
                                                                               ,::(@t2,::(@t1,@futurequeue))
                                                                               ,@x)):7
          
          7:W:bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1
          
          8:W:bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
             -->_2 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):10
             -->_1 bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)):9
          
          9:W:bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
             -->_1 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):10
          
          10:W:dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1
          
        The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
          8: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
          9: bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
          10: dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
          1: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
          7: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
          6: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                        ,@futurequeue
                                                                        ,@t1
                                                                        ,@t2
                                                                        ,@ts
                                                                        ,@x
                                                                        ,@y))
          2: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
          5: bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
          4: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
          3: bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
**** Step 8.a:2.a:1.b:2: EmptyProcessor WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        EmptyProcessor
    + Details:
        The problem is already closed. The intended complexity is O(1).

*** Step 8.a:2.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
        - Weak DPs:
            bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x)
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> bfs#3#(@t,@futurequeue,@ts,@x)
            bfs#1#(nil(),@futurequeue,@x) -> bfs#2#(@futurequeue,@x)
            bfs#2#(::(@t,@ts),@x) -> bfs#(reverse(::(@t,@ts)),nil(),@x)
            bfs#2#(::(@t,@ts),@x) -> reverse#(::(@t,@ts))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> bfs#(@ts,@futurequeue,@x)
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs2#(@t,@x) -> bfs2#1#(dobfs(@t,@x),@x)
            bfs2#(@t,@x) -> dobfs#(@t,@x)
            bfs2#1#(@t',@x) -> dobfs#(@t',@x)
            dobfs#(@t,@x) -> bfs#(::(@t,nil()),nil(),@x)
            reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + 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}}
    + Details:
        We first use the processor NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
          2: appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
          
        Consider the set of all dependency pairs
          1: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
          2: appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
          3: bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x)
          4: bfs#1#(::(@t,@ts),@futurequeue,@x) -> bfs#3#(@t,@futurequeue,@ts,@x)
          5: bfs#1#(nil(),@futurequeue,@x) -> bfs#2#(@futurequeue,@x)
          6: bfs#2#(::(@t,@ts),@x) -> bfs#(reverse(::(@t,@ts)),nil(),@x)
          7: bfs#2#(::(@t,@ts),@x) -> reverse#(::(@t,@ts))
          8: bfs#3#(leaf(),@futurequeue,@ts,@x) -> bfs#(@ts,@futurequeue,@x)
          9: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
          10: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)
          11: bfs2#(@t,@x) -> bfs2#1#(dobfs(@t,@x),@x)
          12: bfs2#(@t,@x) -> dobfs#(@t,@x)
          13: bfs2#1#(@t',@x) -> dobfs#(@t',@x)
          14: dobfs#(@t,@x) -> bfs#(::(@t,nil()),nil(),@x)
          15: reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
        Processor NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1))
        SPACE(?,?)on application of the dependency pairs
          {2}
        These cover all (indirect) predecessors of dependency pairs
          {2,11,12,13,14}
        their number of applications is equally bounded.
        The dependency pairs are shifted into the weak component.
**** Step 8.a:2.b:1.a:1: NaturalMI WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
        - Weak DPs:
            bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x)
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> bfs#3#(@t,@futurequeue,@ts,@x)
            bfs#1#(nil(),@futurequeue,@x) -> bfs#2#(@futurequeue,@x)
            bfs#2#(::(@t,@ts),@x) -> bfs#(reverse(::(@t,@ts)),nil(),@x)
            bfs#2#(::(@t,@ts),@x) -> reverse#(::(@t,@ts))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> bfs#(@ts,@futurequeue,@x)
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs2#(@t,@x) -> bfs2#1#(dobfs(@t,@x),@x)
            bfs2#(@t,@x) -> dobfs#(@t,@x)
            bfs2#1#(@t',@x) -> dobfs#(@t',@x)
            dobfs#(@t,@x) -> bfs#(::(@t,nil()),nil(),@x)
            reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules}
    + Details:
        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_2) = {1},
          uargs(c_3) = {1},
          uargs(c_25) = {1}
        
        Following symbols are considered usable:
          {#and,#eq,#equal,appendreverse,appendreverse#1,bfs,bfs#1,bfs#2,bfs#3,bfs#4,dobfs,reverse,#and#,#eq#
          ,#equal#,appendreverse#,appendreverse#1#,bfs#,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#
          ,dfs#3#,dobfs#,dodfs#,reverse#}
        TcT has computed the following interpretation:
                        p(#0) = [0]                                                       
                                [0]                                                       
                      p(#and) = [1]                                                       
                                [0]                                                       
                       p(#eq) = [1]                                                       
                                [0]                                                       
                    p(#equal) = [0 0] x1 + [1]                                            
                                [1 1]      [0]                                            
                    p(#false) = [1]                                                       
                                [0]                                                       
                      p(#neg) = [0]                                                       
                                [0]                                                       
                      p(#pos) = [0]                                                       
                                [0]                                                       
                        p(#s) = [0]                                                       
                                [0]                                                       
                     p(#true) = [1]                                                       
                                [0]                                                       
                        p(::) = [1 1] x1 + [1 1] x2 + [0]                                 
                                [0 0]      [0 0]      [1]                                 
             p(appendreverse) = [1 1] x1 + [1 1] x2 + [0]                                 
                                [1 1]      [0 1]      [1]                                 
           p(appendreverse#1) = [1 1] x1 + [1 1] x2 + [0]                                 
                                [1 1]      [0 1]      [1]                                 
                       p(bfs) = [1 0] x1 + [1 1] x2 + [0]                                 
                                [0 0]      [0 0]      [1]                                 
                     p(bfs#1) = [1 0] x1 + [1 1] x2 + [0]                                 
                                [0 0]      [0 0]      [1]                                 
                     p(bfs#2) = [1 1] x1 + [0]                                            
                                [0 0]      [1]                                            
                     p(bfs#3) = [1 1] x1 + [1 1] x2 + [1 1] x3 + [0]                      
                                [0 0]      [0 0]      [0 0]      [1]                      
                     p(bfs#4) = [1 0] x1 + [1 1] x2 + [1 1] x3 + [1 1] x4 + [1 0] x5 + [1]
                                [0 0]      [0 0]      [0 0]      [0 0]      [0 0]      [1]
                      p(bfs2) = [0]                                                       
                                [0]                                                       
                    p(bfs2#1) = [0]                                                       
                                [0]                                                       
                       p(dfs) = [0]                                                       
                                [0]                                                       
                     p(dfs#1) = [0]                                                       
                                [0]                                                       
                     p(dfs#2) = [0]                                                       
                                [0]                                                       
                     p(dfs#3) = [0]                                                       
                                [0]                                                       
                     p(dobfs) = [1 1] x1 + [1 0] x2 + [0]                                 
                                [0 0]      [0 0]      [1]                                 
                     p(dodfs) = [0]                                                       
                                [0]                                                       
                      p(leaf) = [0]                                                       
                                [0]                                                       
                       p(nil) = [0]                                                       
                                [0]                                                       
                      p(node) = [1 1] x2 + [1 1] x3 + [1]                                 
                                [0 0]      [0 0]      [1]                                 
                   p(reverse) = [1 1] x1 + [0]                                            
                                [1 1]      [1]                                            
                     p(#and#) = [0]                                                       
                                [0]                                                       
                      p(#eq#) = [0]                                                       
                                [0]                                                       
                   p(#equal#) = [0]                                                       
                                [0]                                                       
            p(appendreverse#) = [1 1] x1 + [0 0] x2 + [0]                                 
                                [0 1]      [0 1]      [1]                                 
          p(appendreverse#1#) = [1 1] x1 + [0 0] x2 + [0]                                 
                                [0 0]      [0 1]      [0]                                 
                      p(bfs#) = [1 0] x1 + [1 1] x2 + [0]                                 
                                [0 0]      [0 0]      [0]                                 
                    p(bfs#1#) = [1 0] x1 + [1 1] x2 + [0]                                 
                                [0 0]      [0 0]      [0]                                 
                    p(bfs#2#) = [1 1] x1 + [0]                                            
                                [0 0]      [0]                                            
                    p(bfs#3#) = [1 1] x1 + [1 1] x2 + [1 1] x3 + [0]                      
                                [0 0]      [0 0]      [0 0]      [0]                      
                    p(bfs#4#) = [1 0] x1 + [1 1] x2 + [1 1] x3 + [1 1] x4 + [1 0] x5 + [1]
                                [0 0]      [0 0]      [0 0]      [0 0]      [0 0]      [0]
                     p(bfs2#) = [1 1] x1 + [1 1] x2 + [1]                                 
                                [0 1]      [0 1]      [1]                                 
                   p(bfs2#1#) = [1 1] x1 + [0]                                            
                                [0 0]      [0]                                            
                      p(dfs#) = [0]                                                       
                                [0]                                                       
                    p(dfs#1#) = [0]                                                       
                                [0]                                                       
                    p(dfs#2#) = [0]                                                       
                                [0]                                                       
                    p(dfs#3#) = [0]                                                       
                                [0]                                                       
                    p(dobfs#) = [1 1] x1 + [0]                                            
                                [0 0]      [0]                                            
                    p(dodfs#) = [0]                                                       
                                [0]                                                       
                  p(reverse#) = [1 1] x1 + [0]                                            
                                [0 0]      [0]                                            
                       p(c_1) = [0]                                                       
                                [0]                                                       
                       p(c_2) = [1 0] x1 + [0]                                            
                                [0 0]      [1]                                            
                       p(c_3) = [1 0] x1 + [0]                                            
                                [0 0]      [0]                                            
                       p(c_4) = [0]                                                       
                                [0]                                                       
                       p(c_5) = [0]                                                       
                                [0]                                                       
                       p(c_6) = [0]                                                       
                                [0]                                                       
                       p(c_7) = [0]                                                       
                                [0]                                                       
                       p(c_8) = [0]                                                       
                                [0]                                                       
                       p(c_9) = [0]                                                       
                                [0]                                                       
                      p(c_10) = [0]                                                       
                                [0]                                                       
                      p(c_11) = [0]                                                       
                                [0]                                                       
                      p(c_12) = [0]                                                       
                                [0]                                                       
                      p(c_13) = [0]                                                       
                                [0]                                                       
                      p(c_14) = [0]                                                       
                                [0]                                                       
                      p(c_15) = [0]                                                       
                                [0]                                                       
                      p(c_16) = [0]                                                       
                                [0]                                                       
                      p(c_17) = [0]                                                       
                                [0]                                                       
                      p(c_18) = [0]                                                       
                                [0]                                                       
                      p(c_19) = [0]                                                       
                                [0]                                                       
                      p(c_20) = [0]                                                       
                                [0]                                                       
                      p(c_21) = [0]                                                       
                                [0]                                                       
                      p(c_22) = [0]                                                       
                                [0]                                                       
                      p(c_23) = [0]                                                       
                                [0]                                                       
                      p(c_24) = [0]                                                       
                                [0]                                                       
                      p(c_25) = [1 0] x1 + [0]                                            
                                [0 0]      [0]                                            
                      p(c_26) = [0]                                                       
                                [0]                                                       
                      p(c_27) = [0]                                                       
                                [0]                                                       
                      p(c_28) = [0]                                                       
                                [0]                                                       
                      p(c_29) = [0]                                                       
                                [0]                                                       
                      p(c_30) = [0]                                                       
                                [0]                                                       
                      p(c_31) = [0]                                                       
                                [0]                                                       
                      p(c_32) = [0]                                                       
                                [0]                                                       
                      p(c_33) = [0]                                                       
                                [0]                                                       
                      p(c_34) = [0]                                                       
                                [0]                                                       
                      p(c_35) = [0]                                                       
                                [0]                                                       
                      p(c_36) = [0]                                                       
                                [0]                                                       
                      p(c_37) = [0]                                                       
                                [0]                                                       
                      p(c_38) = [0]                                                       
                                [0]                                                       
                      p(c_39) = [0]                                                       
                                [0]                                                       
                      p(c_40) = [0]                                                       
                                [0]                                                       
                      p(c_41) = [0]                                                       
                                [0]                                                       
                      p(c_42) = [0]                                                       
                                [0]                                                       
                      p(c_43) = [0]                                                       
                                [0]                                                       
                      p(c_44) = [0]                                                       
                                [0]                                                       
                      p(c_45) = [0]                                                       
                                [0]                                                       
                      p(c_46) = [0]                                                       
                                [0]                                                       
                      p(c_47) = [0]                                                       
                                [0]                                                       
                      p(c_48) = [0]                                                       
                                [0]                                                       
                      p(c_49) = [0]                                                       
                                [0]                                                       
                      p(c_50) = [0]                                                       
                                [0]                                                       
                      p(c_51) = [0]                                                       
                                [0]                                                       
                      p(c_52) = [0]                                                       
                                [0]                                                       
                      p(c_53) = [0]                                                       
                                [0]                                                       
                      p(c_54) = [0]                                                       
                                [0]                                                       
                      p(c_55) = [0]                                                       
                                [0]                                                       
                      p(c_56) = [0]                                                       
                                [0]                                                       
                      p(c_57) = [0]                                                       
                                [0]                                                       
        
        Following rules are strictly oriented:
        appendreverse#1#(::(@a,@as),@sofar) = [1 1] @a + [1 1] @as + [0 0] @sofar + [1]
                                              [0 0]      [0 0]       [0 1]          [0]
                                            > [1 1] @as + [0]                          
                                              [0 0]       [0]                          
                                            = c_3(appendreverse#(@as,::(@a,@sofar)))   
        
        
        Following rules are (at-least) weakly oriented:
                      appendreverse#(@toreverse,@sofar) =  [0 0] @sofar + [1 1] @toreverse + [0]                       
                                                           [0 1]          [0 1]              [1]                       
                                                        >= [1 1] @toreverse + [0]                                      
                                                           [0 0]              [1]                                      
                                                        =  c_2(appendreverse#1#(@toreverse,@sofar))                    
        
                           bfs#(@queue,@futurequeue,@x) =  [1 1] @futurequeue + [1 0] @queue + [0]                     
                                                           [0 0]                [0 0]          [0]                     
                                                        >= [1 1] @futurequeue + [1 0] @queue + [0]                     
                                                           [0 0]                [0 0]          [0]                     
                                                        =  bfs#1#(@queue,@futurequeue,@x)                              
        
                     bfs#1#(::(@t,@ts),@futurequeue,@x) =  [1 1] @futurequeue + [1 1] @t + [1 1] @ts + [0]             
                                                           [0 0]                [0 0]      [0 0]       [0]             
                                                        >= [1 1] @futurequeue + [1 1] @t + [1 1] @ts + [0]             
                                                           [0 0]                [0 0]      [0 0]       [0]             
                                                        =  bfs#3#(@t,@futurequeue,@ts,@x)                              
        
                          bfs#1#(nil(),@futurequeue,@x) =  [1 1] @futurequeue + [0]                                    
                                                           [0 0]                [0]                                    
                                                        >= [1 1] @futurequeue + [0]                                    
                                                           [0 0]                [0]                                    
                                                        =  bfs#2#(@futurequeue,@x)                                     
        
                                  bfs#2#(::(@t,@ts),@x) =  [1 1] @t + [1 1] @ts + [1]                                  
                                                           [0 0]      [0 0]       [0]                                  
                                                        >= [1 1] @t + [1 1] @ts + [1]                                  
                                                           [0 0]      [0 0]       [0]                                  
                                                        =  bfs#(reverse(::(@t,@ts)),nil(),@x)                          
        
                                  bfs#2#(::(@t,@ts),@x) =  [1 1] @t + [1 1] @ts + [1]                                  
                                                           [0 0]      [0 0]       [0]                                  
                                                        >= [1 1] @t + [1 1] @ts + [1]                                  
                                                           [0 0]      [0 0]       [0]                                  
                                                        =  reverse#(::(@t,@ts))                                        
        
                     bfs#3#(leaf(),@futurequeue,@ts,@x) =  [1 1] @futurequeue + [1 1] @ts + [0]                        
                                                           [0 0]                [0 0]       [0]                        
                                                        >= [1 1] @futurequeue + [1 0] @ts + [0]                        
                                                           [0 0]                [0 0]       [0]                        
                                                        =  bfs#(@ts,@futurequeue,@x)                                   
        
           bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) =  [1 1] @futurequeue + [1 1] @t1 + [1 1] @t2 + [1 1] @ts + [2]
                                                           [0 0]                [0 0]       [0 0]       [0 0]       [0]
                                                        >= [1 1] @futurequeue + [1 1] @t1 + [1 1] @t2 + [1 0] @ts + [2]
                                                           [0 0]                [0 0]       [0 0]       [0 0]       [0]
                                                        =  bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)        
        
        bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) =  [1 1] @futurequeue + [1 1] @t1 + [1 1] @t2 + [1 0] @ts + [2]
                                                           [0 0]                [0 0]       [0 0]       [0 0]       [0]
                                                        >= [1 1] @futurequeue + [1 1] @t1 + [1 1] @t2 + [1 0] @ts + [2]
                                                           [0 0]                [0 0]       [0 0]       [0 0]       [0]
                                                        =  bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)                   
        
                                           bfs2#(@t,@x) =  [1 1] @t + [1 1] @x + [1]                                   
                                                           [0 1]      [0 1]      [1]                                   
                                                        >= [1 1] @t + [1 0] @x + [1]                                   
                                                           [0 0]      [0 0]      [0]                                   
                                                        =  bfs2#1#(dobfs(@t,@x),@x)                                    
        
                                           bfs2#(@t,@x) =  [1 1] @t + [1 1] @x + [1]                                   
                                                           [0 1]      [0 1]      [1]                                   
                                                        >= [1 1] @t + [0]                                              
                                                           [0 0]      [0]                                              
                                                        =  dobfs#(@t,@x)                                               
        
                                        bfs2#1#(@t',@x) =  [1 1] @t' + [0]                                             
                                                           [0 0]       [0]                                             
                                                        >= [1 1] @t' + [0]                                             
                                                           [0 0]       [0]                                             
                                                        =  dobfs#(@t',@x)                                              
        
                                          dobfs#(@t,@x) =  [1 1] @t + [0]                                              
                                                           [0 0]      [0]                                              
                                                        >= [1 1] @t + [0]                                              
                                                           [0 0]      [0]                                              
                                                        =  bfs#(::(@t,nil()),nil(),@x)                                 
        
                                          reverse#(@xs) =  [1 1] @xs + [0]                                             
                                                           [0 0]       [0]                                             
                                                        >= [1 1] @xs + [0]                                             
                                                           [0 0]       [0]                                             
                                                        =  c_25(appendreverse#(@xs,nil()))                             
        
                                #and(#false(),#false()) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #false()                                                    
        
                                 #and(#false(),#true()) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #false()                                                    
        
                                 #and(#true(),#false()) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #false()                                                    
        
                                  #and(#true(),#true()) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #true()                                                     
        
                                         #eq(#0(),#0()) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #true()                                                     
        
                                     #eq(#0(),#neg(@y)) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #false()                                                    
        
                                     #eq(#0(),#pos(@y)) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #false()                                                    
        
                                       #eq(#0(),#s(@y)) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #false()                                                    
        
                                     #eq(#neg(@x),#0()) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #false()                                                    
        
                                 #eq(#neg(@x),#neg(@y)) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #eq(@x,@y)                                                  
        
                                 #eq(#neg(@x),#pos(@y)) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #false()                                                    
        
                                     #eq(#pos(@x),#0()) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #false()                                                    
        
                                 #eq(#pos(@x),#neg(@y)) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #false()                                                    
        
                                 #eq(#pos(@x),#pos(@y)) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #eq(@x,@y)                                                  
        
                                       #eq(#s(@x),#0()) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #false()                                                    
        
                                     #eq(#s(@x),#s(@y)) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #eq(@x,@y)                                                  
        
                       #eq(::(@x_1,@x_2),::(@y_1,@y_2)) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))                         
        
                              #eq(::(@x_1,@x_2),leaf()) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #false()                                                    
        
                               #eq(::(@x_1,@x_2),nil()) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #false()                                                    
        
                #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #false()                                                    
        
                              #eq(leaf(),::(@y_1,@y_2)) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #false()                                                    
        
                                     #eq(leaf(),leaf()) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #true()                                                     
        
                                      #eq(leaf(),nil()) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #false()                                                    
        
                       #eq(leaf(),node(@y_1,@y_2,@y_3)) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #false()                                                    
        
                               #eq(nil(),::(@y_1,@y_2)) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #false()                                                    
        
                                      #eq(nil(),leaf()) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #false()                                                    
        
                                       #eq(nil(),nil()) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #true()                                                     
        
                        #eq(nil(),node(@y_1,@y_2,@y_3)) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #false()                                                    
        
                #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #false()                                                    
        
                       #eq(node(@x_1,@x_2,@x_3),leaf()) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #false()                                                    
        
                        #eq(node(@x_1,@x_2,@x_3),nil()) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #false()                                                    
        
         #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) =  [1]                                                         
                                                           [0]                                                         
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))    
        
                                          #equal(@x,@y) =  [0 0] @x + [1]                                              
                                                           [1 1]      [0]                                              
                                                        >= [1]                                                         
                                                           [0]                                                         
                                                        =  #eq(@x,@y)                                                  
        
                       appendreverse(@toreverse,@sofar) =  [1 1] @sofar + [1 1] @toreverse + [0]                       
                                                           [0 1]          [1 1]              [1]                       
                                                        >= [1 1] @sofar + [1 1] @toreverse + [0]                       
                                                           [0 1]          [1 1]              [1]                       
                                                        =  appendreverse#1(@toreverse,@sofar)                          
        
                     appendreverse#1(::(@a,@as),@sofar) =  [1 1] @a + [1 1] @as + [1 1] @sofar + [1]                   
                                                           [1 1]      [1 1]       [0 1]          [2]                   
                                                        >= [1 1] @a + [1 1] @as + [1 1] @sofar + [1]                   
                                                           [0 0]      [1 1]       [0 0]          [2]                   
                                                        =  appendreverse(@as,::(@a,@sofar))                            
        
                          appendreverse#1(nil(),@sofar) =  [1 1] @sofar + [0]                                          
                                                           [0 1]          [1]                                          
                                                        >= [1 0] @sofar + [0]                                          
                                                           [0 1]          [0]                                          
                                                        =  @sofar                                                      
        
                            bfs(@queue,@futurequeue,@x) =  [1 1] @futurequeue + [1 0] @queue + [0]                     
                                                           [0 0]                [0 0]          [1]                     
                                                        >= [1 1] @futurequeue + [1 0] @queue + [0]                     
                                                           [0 0]                [0 0]          [1]                     
                                                        =  bfs#1(@queue,@futurequeue,@x)                               
        
                      bfs#1(::(@t,@ts),@futurequeue,@x) =  [1 1] @futurequeue + [1 1] @t + [1 1] @ts + [0]             
                                                           [0 0]                [0 0]      [0 0]       [1]             
                                                        >= [1 1] @futurequeue + [1 1] @t + [1 1] @ts + [0]             
                                                           [0 0]                [0 0]      [0 0]       [1]             
                                                        =  bfs#3(@t,@futurequeue,@ts,@x)                               
        
                           bfs#1(nil(),@futurequeue,@x) =  [1 1] @futurequeue + [0]                                    
                                                           [0 0]                [1]                                    
                                                        >= [1 1] @futurequeue + [0]                                    
                                                           [0 0]                [1]                                    
                                                        =  bfs#2(@futurequeue,@x)                                      
        
                                   bfs#2(::(@t,@ts),@x) =  [1 1] @t + [1 1] @ts + [1]                                  
                                                           [0 0]      [0 0]       [1]                                  
                                                        >= [1 1] @t + [1 1] @ts + [1]                                  
                                                           [0 0]      [0 0]       [1]                                  
                                                        =  bfs(reverse(::(@t,@ts)),nil(),@x)                           
        
                                        bfs#2(nil(),@x) =  [0]                                                         
                                                           [1]                                                         
                                                        >= [0]                                                         
                                                           [0]                                                         
                                                        =  leaf()                                                      
        
                      bfs#3(leaf(),@futurequeue,@ts,@x) =  [1 1] @futurequeue + [1 1] @ts + [0]                        
                                                           [0 0]                [0 0]       [1]                        
                                                        >= [1 1] @futurequeue + [1 0] @ts + [0]                        
                                                           [0 0]                [0 0]       [1]                        
                                                        =  bfs(@ts,@futurequeue,@x)                                    
        
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) =  [1 1] @futurequeue + [1 1] @t1 + [1 1] @t2 + [1 1] @ts + [2]
                                                           [0 0]                [0 0]       [0 0]       [0 0]       [1]
                                                        >= [1 1] @futurequeue + [1 1] @t1 + [1 1] @t2 + [1 0] @ts + [2]
                                                           [0 0]                [0 0]       [0 0]       [0 0]       [1]
                                                        =  bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)         
        
         bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) =  [1 1] @futurequeue + [1 1] @t1 + [1 1] @t2 + [1 0] @ts + [2]
                                                           [0 0]                [0 0]       [0 0]       [0 0]       [1]
                                                        >= [1 1] @futurequeue + [1 1] @t1 + [1 1] @t2 + [1 0] @ts + [2]
                                                           [0 0]                [0 0]       [0 0]       [0 0]       [1]
                                                        =  bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)                    
        
          bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) =  [1 1] @futurequeue + [1 1] @t1 + [1 1] @t2 + [1 0] @ts + [2]
                                                           [0 0]                [0 0]       [0 0]       [0 0]       [1]
                                                        >= [1 1] @t1 + [1 1] @t2 + [1]                                 
                                                           [0 0]       [0 0]       [1]                                 
                                                        =  node(@y,@t1,@t2)                                            
        
                                           dobfs(@t,@x) =  [1 1] @t + [1 0] @x + [0]                                   
                                                           [0 0]      [0 0]      [1]                                   
                                                        >= [1 1] @t + [0]                                              
                                                           [0 0]      [1]                                              
                                                        =  bfs(::(@t,nil()),nil(),@x)                                  
        
                                           reverse(@xs) =  [1 1] @xs + [0]                                             
                                                           [1 1]       [1]                                             
                                                        >= [1 1] @xs + [0]                                             
                                                           [1 1]       [1]                                             
                                                        =  appendreverse(@xs,nil())                                    
        
**** Step 8.a:2.b:1.a:2: Assumption WORST_CASE(?,O(1))
    + Considered Problem:
        - Strict DPs:
            appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
        - Weak DPs:
            appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
            bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x)
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> bfs#3#(@t,@futurequeue,@ts,@x)
            bfs#1#(nil(),@futurequeue,@x) -> bfs#2#(@futurequeue,@x)
            bfs#2#(::(@t,@ts),@x) -> bfs#(reverse(::(@t,@ts)),nil(),@x)
            bfs#2#(::(@t,@ts),@x) -> reverse#(::(@t,@ts))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> bfs#(@ts,@futurequeue,@x)
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs2#(@t,@x) -> bfs2#1#(dobfs(@t,@x),@x)
            bfs2#(@t,@x) -> dobfs#(@t,@x)
            bfs2#1#(@t',@x) -> dobfs#(@t',@x)
            dobfs#(@t,@x) -> bfs#(::(@t,nil()),nil(),@x)
            reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
    + Details:
        ()

**** Step 8.a:2.b:1.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
        - Weak DPs:
            appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
            bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x)
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> bfs#3#(@t,@futurequeue,@ts,@x)
            bfs#1#(nil(),@futurequeue,@x) -> bfs#2#(@futurequeue,@x)
            bfs#2#(::(@t,@ts),@x) -> bfs#(reverse(::(@t,@ts)),nil(),@x)
            bfs#2#(::(@t,@ts),@x) -> reverse#(::(@t,@ts))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> bfs#(@ts,@futurequeue,@x)
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs2#(@t,@x) -> bfs2#1#(dobfs(@t,@x),@x)
            bfs2#(@t,@x) -> dobfs#(@t,@x)
            bfs2#1#(@t',@x) -> dobfs#(@t',@x)
            dobfs#(@t,@x) -> bfs#(::(@t,nil()),nil(),@x)
            reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + 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}}
    + Details:
        We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
          1: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
          
        Consider the set of all dependency pairs
          1: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
          2: appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
          3: bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x)
          4: bfs#1#(::(@t,@ts),@futurequeue,@x) -> bfs#3#(@t,@futurequeue,@ts,@x)
          5: bfs#1#(nil(),@futurequeue,@x) -> bfs#2#(@futurequeue,@x)
          6: bfs#2#(::(@t,@ts),@x) -> bfs#(reverse(::(@t,@ts)),nil(),@x)
          7: bfs#2#(::(@t,@ts),@x) -> reverse#(::(@t,@ts))
          8: bfs#3#(leaf(),@futurequeue,@ts,@x) -> bfs#(@ts,@futurequeue,@x)
          9: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
          10: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)
          11: bfs2#(@t,@x) -> bfs2#1#(dobfs(@t,@x),@x)
          12: bfs2#(@t,@x) -> dobfs#(@t,@x)
          13: bfs2#1#(@t',@x) -> dobfs#(@t',@x)
          14: dobfs#(@t,@x) -> bfs#(::(@t,nil()),nil(),@x)
          15: reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
        Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1))
        SPACE(?,?)on application of the dependency pairs
          {1}
        These cover all (indirect) predecessors of dependency pairs
          {1,2,11,12,13,14}
        their number of applications is equally bounded.
        The dependency pairs are shifted into the weak component.
***** Step 8.a:2.b:1.b:1.a:1: NaturalMI WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
        - Weak DPs:
            appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
            bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x)
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> bfs#3#(@t,@futurequeue,@ts,@x)
            bfs#1#(nil(),@futurequeue,@x) -> bfs#2#(@futurequeue,@x)
            bfs#2#(::(@t,@ts),@x) -> bfs#(reverse(::(@t,@ts)),nil(),@x)
            bfs#2#(::(@t,@ts),@x) -> reverse#(::(@t,@ts))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> bfs#(@ts,@futurequeue,@x)
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs2#(@t,@x) -> bfs2#1#(dobfs(@t,@x),@x)
            bfs2#(@t,@x) -> dobfs#(@t,@x)
            bfs2#1#(@t',@x) -> dobfs#(@t',@x)
            dobfs#(@t,@x) -> bfs#(::(@t,nil()),nil(),@x)
            reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules}
    + Details:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(c_2) = {1},
          uargs(c_3) = {1},
          uargs(c_25) = {1}
        
        Following symbols are considered usable:
          {appendreverse,appendreverse#1,bfs,bfs#1,bfs#2,bfs#3,bfs#4,dobfs,reverse,#and#,#eq#,#equal#,appendreverse#
          ,appendreverse#1#,bfs#,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
          ,reverse#}
        TcT has computed the following interpretation:
                        p(#0) = [0]                                    
                      p(#and) = [2] x1 + [1] x2 + [1]                  
                       p(#eq) = [1] x2 + [0]                           
                    p(#equal) = [0]                                    
                    p(#false) = [0]                                    
                      p(#neg) = [1] x1 + [1]                           
                      p(#pos) = [1]                                    
                        p(#s) = [1] x1 + [1]                           
                     p(#true) = [4]                                    
                        p(::) = [1] x1 + [1] x2 + [1]                  
             p(appendreverse) = [1] x1 + [1] x2 + [0]                  
           p(appendreverse#1) = [1] x1 + [1] x2 + [0]                  
                       p(bfs) = [1] x1 + [1] x2 + [0]                  
                     p(bfs#1) = [1] x1 + [1] x2 + [0]                  
                     p(bfs#2) = [1] x1 + [0]                           
                     p(bfs#3) = [1] x1 + [1] x2 + [1] x3 + [1]         
                     p(bfs#4) = [1] x2 + [1] x3 + [1] x4 + [1] x5 + [2]
                      p(bfs2) = [2] x2 + [1]                           
                    p(bfs2#1) = [1] x1 + [1]                           
                       p(dfs) = [2] x2 + [1]                           
                     p(dfs#1) = [2] x1 + [2] x2 + [4]                  
                     p(dfs#2) = [0]                                    
                     p(dfs#3) = [4] x2 + [1] x3 + [1] x5 + [2]         
                     p(dobfs) = [1] x1 + [1]                           
                     p(dodfs) = [4] x2 + [0]                           
                      p(leaf) = [0]                                    
                       p(nil) = [0]                                    
                      p(node) = [1] x2 + [1] x3 + [2]                  
                   p(reverse) = [1] x1 + [0]                           
                     p(#and#) = [1] x1 + [1] x2 + [1]                  
                      p(#eq#) = [2] x2 + [1]                           
                   p(#equal#) = [0]                                    
            p(appendreverse#) = [1] x1 + [1]                           
          p(appendreverse#1#) = [1] x1 + [0]                           
                      p(bfs#) = [1] x1 + [1] x2 + [1]                  
                    p(bfs#1#) = [1] x1 + [1] x2 + [1]                  
                    p(bfs#2#) = [1] x1 + [1]                           
                    p(bfs#3#) = [1] x1 + [1] x2 + [1] x3 + [1]         
                    p(bfs#4#) = [1] x2 + [1] x3 + [1] x4 + [1] x5 + [3]
                     p(bfs2#) = [1] x1 + [5] x2 + [3]                  
                   p(bfs2#1#) = [1] x1 + [4] x2 + [2]                  
                      p(dfs#) = [4] x2 + [1]                           
                    p(dfs#1#) = [0]                                    
                    p(dfs#2#) = [1] x3 + [4]                           
                    p(dfs#3#) = [1] x1 + [4]                           
                    p(dobfs#) = [1] x1 + [1] x2 + [2]                  
                    p(dodfs#) = [2]                                    
                  p(reverse#) = [1] x1 + [1]                           
                       p(c_1) = [2] x1 + [0]                           
                       p(c_2) = [1] x1 + [0]                           
                       p(c_3) = [1] x1 + [0]                           
                       p(c_4) = [1]                                    
                       p(c_5) = [1]                                    
                       p(c_6) = [1]                                    
                       p(c_7) = [1]                                    
                       p(c_8) = [0]                                    
                       p(c_9) = [0]                                    
                      p(c_10) = [1] x1 + [2]                           
                      p(c_11) = [1] x1 + [0]                           
                      p(c_12) = [0]                                    
                      p(c_13) = [0]                                    
                      p(c_14) = [1] x1 + [1]                           
                      p(c_15) = [2] x1 + [0]                           
                      p(c_16) = [1]                                    
                      p(c_17) = [0]                                    
                      p(c_18) = [0]                                    
                      p(c_19) = [0]                                    
                      p(c_20) = [0]                                    
                      p(c_21) = [1]                                    
                      p(c_22) = [1]                                    
                      p(c_23) = [1] x1 + [0]                           
                      p(c_24) = [1]                                    
                      p(c_25) = [1] x1 + [0]                           
                      p(c_26) = [1]                                    
                      p(c_27) = [1]                                    
                      p(c_28) = [4]                                    
                      p(c_29) = [4]                                    
                      p(c_30) = [0]                                    
                      p(c_31) = [1]                                    
                      p(c_32) = [1]                                    
                      p(c_33) = [0]                                    
                      p(c_34) = [0]                                    
                      p(c_35) = [1] x1 + [2]                           
                      p(c_36) = [0]                                    
                      p(c_37) = [1]                                    
                      p(c_38) = [0]                                    
                      p(c_39) = [1]                                    
                      p(c_40) = [2]                                    
                      p(c_41) = [1] x1 + [1]                           
                      p(c_42) = [1]                                    
                      p(c_43) = [1]                                    
                      p(c_44) = [2]                                    
                      p(c_45) = [0]                                    
                      p(c_46) = [0]                                    
                      p(c_47) = [2]                                    
                      p(c_48) = [4]                                    
                      p(c_49) = [0]                                    
                      p(c_50) = [0]                                    
                      p(c_51) = [0]                                    
                      p(c_52) = [0]                                    
                      p(c_53) = [1]                                    
                      p(c_54) = [2]                                    
                      p(c_55) = [1]                                    
                      p(c_56) = [4]                                    
                      p(c_57) = [1] x2 + [1] x3 + [1] x5 + [1]         
        
        Following rules are strictly oriented:
        appendreverse#(@toreverse,@sofar) = [1] @toreverse + [1]                    
                                          > [1] @toreverse + [0]                    
                                          = c_2(appendreverse#1#(@toreverse,@sofar))
        
        
        Following rules are (at-least) weakly oriented:
                    appendreverse#1#(::(@a,@as),@sofar) =  [1] @a + [1] @as + [1]                              
                                                        >= [1] @as + [1]                                       
                                                        =  c_3(appendreverse#(@as,::(@a,@sofar)))              
        
                           bfs#(@queue,@futurequeue,@x) =  [1] @futurequeue + [1] @queue + [1]                 
                                                        >= [1] @futurequeue + [1] @queue + [1]                 
                                                        =  bfs#1#(@queue,@futurequeue,@x)                      
        
                     bfs#1#(::(@t,@ts),@futurequeue,@x) =  [1] @futurequeue + [1] @t + [1] @ts + [2]           
                                                        >= [1] @futurequeue + [1] @t + [1] @ts + [1]           
                                                        =  bfs#3#(@t,@futurequeue,@ts,@x)                      
        
                          bfs#1#(nil(),@futurequeue,@x) =  [1] @futurequeue + [1]                              
                                                        >= [1] @futurequeue + [1]                              
                                                        =  bfs#2#(@futurequeue,@x)                             
        
                                  bfs#2#(::(@t,@ts),@x) =  [1] @t + [1] @ts + [2]                              
                                                        >= [1] @t + [1] @ts + [2]                              
                                                        =  bfs#(reverse(::(@t,@ts)),nil(),@x)                  
        
                                  bfs#2#(::(@t,@ts),@x) =  [1] @t + [1] @ts + [2]                              
                                                        >= [1] @t + [1] @ts + [2]                              
                                                        =  reverse#(::(@t,@ts))                                
        
                     bfs#3#(leaf(),@futurequeue,@ts,@x) =  [1] @futurequeue + [1] @ts + [1]                    
                                                        >= [1] @futurequeue + [1] @ts + [1]                    
                                                        =  bfs#(@ts,@futurequeue,@x)                           
        
           bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) =  [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [3]
                                                        >= [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [3]
                                                        =  bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
        
        bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) =  [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [3]
                                                        >= [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [3]
                                                        =  bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)           
        
                                           bfs2#(@t,@x) =  [1] @t + [5] @x + [3]                               
                                                        >= [1] @t + [4] @x + [3]                               
                                                        =  bfs2#1#(dobfs(@t,@x),@x)                            
        
                                           bfs2#(@t,@x) =  [1] @t + [5] @x + [3]                               
                                                        >= [1] @t + [1] @x + [2]                               
                                                        =  dobfs#(@t,@x)                                       
        
                                        bfs2#1#(@t',@x) =  [1] @t' + [4] @x + [2]                              
                                                        >= [1] @t' + [1] @x + [2]                              
                                                        =  dobfs#(@t',@x)                                      
        
                                          dobfs#(@t,@x) =  [1] @t + [1] @x + [2]                               
                                                        >= [1] @t + [2]                                        
                                                        =  bfs#(::(@t,nil()),nil(),@x)                         
        
                                          reverse#(@xs) =  [1] @xs + [1]                                       
                                                        >= [1] @xs + [1]                                       
                                                        =  c_25(appendreverse#(@xs,nil()))                     
        
                       appendreverse(@toreverse,@sofar) =  [1] @sofar + [1] @toreverse + [0]                   
                                                        >= [1] @sofar + [1] @toreverse + [0]                   
                                                        =  appendreverse#1(@toreverse,@sofar)                  
        
                     appendreverse#1(::(@a,@as),@sofar) =  [1] @a + [1] @as + [1] @sofar + [1]                 
                                                        >= [1] @a + [1] @as + [1] @sofar + [1]                 
                                                        =  appendreverse(@as,::(@a,@sofar))                    
        
                          appendreverse#1(nil(),@sofar) =  [1] @sofar + [0]                                    
                                                        >= [1] @sofar + [0]                                    
                                                        =  @sofar                                              
        
                            bfs(@queue,@futurequeue,@x) =  [1] @futurequeue + [1] @queue + [0]                 
                                                        >= [1] @futurequeue + [1] @queue + [0]                 
                                                        =  bfs#1(@queue,@futurequeue,@x)                       
        
                      bfs#1(::(@t,@ts),@futurequeue,@x) =  [1] @futurequeue + [1] @t + [1] @ts + [1]           
                                                        >= [1] @futurequeue + [1] @t + [1] @ts + [1]           
                                                        =  bfs#3(@t,@futurequeue,@ts,@x)                       
        
                           bfs#1(nil(),@futurequeue,@x) =  [1] @futurequeue + [0]                              
                                                        >= [1] @futurequeue + [0]                              
                                                        =  bfs#2(@futurequeue,@x)                              
        
                                   bfs#2(::(@t,@ts),@x) =  [1] @t + [1] @ts + [1]                              
                                                        >= [1] @t + [1] @ts + [1]                              
                                                        =  bfs(reverse(::(@t,@ts)),nil(),@x)                   
        
                                        bfs#2(nil(),@x) =  [0]                                                 
                                                        >= [0]                                                 
                                                        =  leaf()                                              
        
                      bfs#3(leaf(),@futurequeue,@ts,@x) =  [1] @futurequeue + [1] @ts + [1]                    
                                                        >= [1] @futurequeue + [1] @ts + [0]                    
                                                        =  bfs(@ts,@futurequeue,@x)                            
        
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) =  [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [3]
                                                        >= [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [2]
                                                        =  bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) 
        
         bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) =  [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [2]
                                                        >= [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [2]
                                                        =  bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)            
        
          bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) =  [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [2]
                                                        >= [1] @t1 + [1] @t2 + [2]                             
                                                        =  node(@y,@t1,@t2)                                    
        
                                           dobfs(@t,@x) =  [1] @t + [1]                                        
                                                        >= [1] @t + [1]                                        
                                                        =  bfs(::(@t,nil()),nil(),@x)                          
        
                                           reverse(@xs) =  [1] @xs + [0]                                       
                                                        >= [1] @xs + [0]                                       
                                                        =  appendreverse(@xs,nil())                            
        
***** Step 8.a:2.b:1.b:1.a:2: Assumption WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak DPs:
            appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
            bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x)
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> bfs#3#(@t,@futurequeue,@ts,@x)
            bfs#1#(nil(),@futurequeue,@x) -> bfs#2#(@futurequeue,@x)
            bfs#2#(::(@t,@ts),@x) -> bfs#(reverse(::(@t,@ts)),nil(),@x)
            bfs#2#(::(@t,@ts),@x) -> reverse#(::(@t,@ts))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> bfs#(@ts,@futurequeue,@x)
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs2#(@t,@x) -> bfs2#1#(dobfs(@t,@x),@x)
            bfs2#(@t,@x) -> dobfs#(@t,@x)
            bfs2#1#(@t',@x) -> dobfs#(@t',@x)
            dobfs#(@t,@x) -> bfs#(::(@t,nil()),nil(),@x)
            reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
    + Details:
        ()

***** Step 8.a:2.b:1.b:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak DPs:
            appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
            bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x)
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> bfs#3#(@t,@futurequeue,@ts,@x)
            bfs#1#(nil(),@futurequeue,@x) -> bfs#2#(@futurequeue,@x)
            bfs#2#(::(@t,@ts),@x) -> bfs#(reverse(::(@t,@ts)),nil(),@x)
            bfs#2#(::(@t,@ts),@x) -> reverse#(::(@t,@ts))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> bfs#(@ts,@futurequeue,@x)
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs2#(@t,@x) -> bfs2#1#(dobfs(@t,@x),@x)
            bfs2#(@t,@x) -> dobfs#(@t,@x)
            bfs2#1#(@t',@x) -> dobfs#(@t',@x)
            dobfs#(@t,@x) -> bfs#(::(@t,nil()),nil(),@x)
            reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        RemoveWeakSuffixes
    + Details:
        Consider the dependency graph
          1:W:appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
             -->_1 appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))):2
          
          2:W:appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
             -->_1 appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)):1
          
          3:W:bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x)
             -->_1 bfs#1#(nil(),@futurequeue,@x) -> bfs#2#(@futurequeue,@x):5
             -->_1 bfs#1#(::(@t,@ts),@futurequeue,@x) -> bfs#3#(@t,@futurequeue,@ts,@x):4
          
          4:W:bfs#1#(::(@t,@ts),@futurequeue,@x) -> bfs#3#(@t,@futurequeue,@ts,@x)
             -->_1 bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4#(#equal(@x,@y)
                                                                         ,@futurequeue
                                                                         ,@t1
                                                                         ,@t2
                                                                         ,@ts
                                                                         ,@x
                                                                         ,@y):9
             -->_1 bfs#3#(leaf(),@futurequeue,@ts,@x) -> bfs#(@ts,@futurequeue,@x):8
          
          5:W:bfs#1#(nil(),@futurequeue,@x) -> bfs#2#(@futurequeue,@x)
             -->_1 bfs#2#(::(@t,@ts),@x) -> reverse#(::(@t,@ts)):7
             -->_1 bfs#2#(::(@t,@ts),@x) -> bfs#(reverse(::(@t,@ts)),nil(),@x):6
          
          6:W:bfs#2#(::(@t,@ts),@x) -> bfs#(reverse(::(@t,@ts)),nil(),@x)
             -->_1 bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x):3
          
          7:W:bfs#2#(::(@t,@ts),@x) -> reverse#(::(@t,@ts))
             -->_1 reverse#(@xs) -> c_25(appendreverse#(@xs,nil())):15
          
          8:W:bfs#3#(leaf(),@futurequeue,@ts,@x) -> bfs#(@ts,@futurequeue,@x)
             -->_1 bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x):3
          
          9:W:bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
             -->_1 bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x):10
          
          10:W:bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)
             -->_1 bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x):3
          
          11:W:bfs2#(@t,@x) -> bfs2#1#(dobfs(@t,@x),@x)
             -->_1 bfs2#1#(@t',@x) -> dobfs#(@t',@x):13
          
          12:W:bfs2#(@t,@x) -> dobfs#(@t,@x)
             -->_1 dobfs#(@t,@x) -> bfs#(::(@t,nil()),nil(),@x):14
          
          13:W:bfs2#1#(@t',@x) -> dobfs#(@t',@x)
             -->_1 dobfs#(@t,@x) -> bfs#(::(@t,nil()),nil(),@x):14
          
          14:W:dobfs#(@t,@x) -> bfs#(::(@t,nil()),nil(),@x)
             -->_1 bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x):3
          
          15:W:reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
             -->_1 appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)):1
          
        The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
          12: bfs2#(@t,@x) -> dobfs#(@t,@x)
          11: bfs2#(@t,@x) -> bfs2#1#(dobfs(@t,@x),@x)
          13: bfs2#1#(@t',@x) -> dobfs#(@t',@x)
          14: dobfs#(@t,@x) -> bfs#(::(@t,nil()),nil(),@x)
          3: bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x)
          10: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)
          9: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
          4: bfs#1#(::(@t,@ts),@futurequeue,@x) -> bfs#3#(@t,@futurequeue,@ts,@x)
          8: bfs#3#(leaf(),@futurequeue,@ts,@x) -> bfs#(@ts,@futurequeue,@x)
          6: bfs#2#(::(@t,@ts),@x) -> bfs#(reverse(::(@t,@ts)),nil(),@x)
          5: bfs#1#(nil(),@futurequeue,@x) -> bfs#2#(@futurequeue,@x)
          7: bfs#2#(::(@t,@ts),@x) -> reverse#(::(@t,@ts))
          15: reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
          1: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
          2: appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
***** Step 8.a:2.b:1.b:1.b:2: EmptyProcessor WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        EmptyProcessor
    + Details:
        The problem is already closed. The intended complexity is O(1).

** Step 8.b:1: PredecessorEstimation WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
            reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
        - Weak DPs:
            appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        PredecessorEstimation {onSelection = all simple predecessor estimation selector}
    + Details:
        We estimate the number of application of
          {16}
        by application of
          Pre({16}) = {4}.
        Here rules are labelled as follows:
          1: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
          2: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
          3: bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
          4: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
          5: bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
          6: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                        ,@futurequeue
                                                                        ,@t1
                                                                        ,@t2
                                                                        ,@ts
                                                                        ,@x
                                                                        ,@y))
          7: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
          8: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
          9: bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
          10: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
          11: dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
          12: dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
          13: dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
          14: dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
          15: dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
          16: reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
          17: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
          18: appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
** Step 8.b:2: RemoveWeakSuffixes WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        - Weak DPs:
            appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
            reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        RemoveWeakSuffixes
    + Details:
        Consider the dependency graph
          1:S:bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
             -->_1 bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)):3
             -->_1 bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)):2
          
          2:S:bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
             -->_1 bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                              ,@futurequeue
                                                                              ,@t1
                                                                              ,@t2
                                                                              ,@ts
                                                                              ,@x
                                                                              ,@y)):6
             -->_1 bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)):5
          
          3:S:bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
             -->_1 bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))):4
          
          4:S:bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
             -->_2 reverse#(@xs) -> c_25(appendreverse#(@xs,nil())):18
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1
          
          5:S:bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1
          
          6:S:bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                         ,@futurequeue
                                                                         ,@t1
                                                                         ,@t2
                                                                         ,@ts
                                                                         ,@x
                                                                         ,@y))
             -->_1 bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts
                                                                               ,::(@t2,::(@t1,@futurequeue))
                                                                               ,@x)):7
          
          7:S:bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1
          
          8:S:bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
             -->_2 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):15
             -->_1 bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)):9
          
          9:S:bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
             -->_1 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):15
          
          10:S:dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
             -->_1 dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)):11
          
          11:S:dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
             -->_1 dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)):13
             -->_1 dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)):12
          
          12:S:dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
             -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):10
          
          13:S:dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
             -->_1 dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)):14
          
          14:S:dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
             -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):10
          
          15:S:dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1
          
          16:W:appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
             -->_1 appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))):17
          
          17:W:appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
             -->_1 appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)):16
          
          18:W:reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
             -->_1 appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)):16
          
        The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
          18: reverse#(@xs) -> c_25(appendreverse#(@xs,nil()))
          16: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar))
          17: appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar)))
** Step 8.b:3: SimplifyRHS WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        SimplifyRHS
    + Details:
        Consider the dependency graph
          1:S:bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
             -->_1 bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)):3
             -->_1 bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)):2
          
          2:S:bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
             -->_1 bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                              ,@futurequeue
                                                                              ,@t1
                                                                              ,@t2
                                                                              ,@ts
                                                                              ,@x
                                                                              ,@y)):6
             -->_1 bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)):5
          
          3:S:bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
             -->_1 bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))):4
          
          4:S:bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts)))
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1
          
          5:S:bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1
          
          6:S:bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                         ,@futurequeue
                                                                         ,@t1
                                                                         ,@t2
                                                                         ,@ts
                                                                         ,@x
                                                                         ,@y))
             -->_1 bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts
                                                                               ,::(@t2,::(@t1,@futurequeue))
                                                                               ,@x)):7
          
          7:S:bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1
          
          8:S:bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
             -->_2 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):15
             -->_1 bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)):9
          
          9:S:bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
             -->_1 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):15
          
          10:S:dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
             -->_1 dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)):11
          
          11:S:dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
             -->_1 dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)):13
             -->_1 dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)):12
          
          12:S:dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
             -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):10
          
          13:S:dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
             -->_1 dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)):14
          
          14:S:dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
             -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):10
          
          15:S:dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1
          
        Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified:
          bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
** Step 8.b:4: Decompose WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        Decompose {onSelection = all cycle independent sub-graph, withBound = RelativeAdd}
    + Details:
        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 DPs:
              bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
              bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
              bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
              bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
              bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
              bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
              bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
          - Weak DPs:
              bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
              bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
              dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
              dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
              dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
              dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
              dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
              dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
          - Weak TRS:
              #and(#false(),#false()) -> #false()
              #and(#false(),#true()) -> #false()
              #and(#true(),#false()) -> #false()
              #and(#true(),#true()) -> #true()
              #eq(#0(),#0()) -> #true()
              #eq(#0(),#neg(@y)) -> #false()
              #eq(#0(),#pos(@y)) -> #false()
              #eq(#0(),#s(@y)) -> #false()
              #eq(#neg(@x),#0()) -> #false()
              #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
              #eq(#neg(@x),#pos(@y)) -> #false()
              #eq(#pos(@x),#0()) -> #false()
              #eq(#pos(@x),#neg(@y)) -> #false()
              #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
              #eq(#s(@x),#0()) -> #false()
              #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
              #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
              #eq(::(@x_1,@x_2),leaf()) -> #false()
              #eq(::(@x_1,@x_2),nil()) -> #false()
              #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
              #eq(leaf(),::(@y_1,@y_2)) -> #false()
              #eq(leaf(),leaf()) -> #true()
              #eq(leaf(),nil()) -> #false()
              #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
              #eq(nil(),::(@y_1,@y_2)) -> #false()
              #eq(nil(),leaf()) -> #false()
              #eq(nil(),nil()) -> #true()
              #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
              #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
              #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
              #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
              #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
              #equal(@x,@y) -> #eq(@x,@y)
              appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
              appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
              appendreverse#1(nil(),@sofar) -> @sofar
              bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
              bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
              bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
              bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
              bfs#2(nil(),@x) -> leaf()
              bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
              bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
              bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
              bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
              dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
              reverse(@xs) -> appendreverse(@xs,nil())
          - Signature:
              {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
              ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2
              ,appendreverse#/2,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2
              ,dfs#1#/2,dfs#2#/4,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2
              ,leaf/0,nil/0,node/3,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0
              ,c_14/2,c_15/1,c_16/1,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0
              ,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0
              ,c_44/0,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
          - Obligation:
              innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
              ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
              ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
        
        Problem (S)
          - Strict DPs:
              bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
              bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
              dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
              dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
              dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
              dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
              dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
              dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
          - Weak DPs:
              bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
              bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
              bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
              bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
              bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
              bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
              bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
          - Weak TRS:
              #and(#false(),#false()) -> #false()
              #and(#false(),#true()) -> #false()
              #and(#true(),#false()) -> #false()
              #and(#true(),#true()) -> #true()
              #eq(#0(),#0()) -> #true()
              #eq(#0(),#neg(@y)) -> #false()
              #eq(#0(),#pos(@y)) -> #false()
              #eq(#0(),#s(@y)) -> #false()
              #eq(#neg(@x),#0()) -> #false()
              #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
              #eq(#neg(@x),#pos(@y)) -> #false()
              #eq(#pos(@x),#0()) -> #false()
              #eq(#pos(@x),#neg(@y)) -> #false()
              #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
              #eq(#s(@x),#0()) -> #false()
              #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
              #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
              #eq(::(@x_1,@x_2),leaf()) -> #false()
              #eq(::(@x_1,@x_2),nil()) -> #false()
              #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
              #eq(leaf(),::(@y_1,@y_2)) -> #false()
              #eq(leaf(),leaf()) -> #true()
              #eq(leaf(),nil()) -> #false()
              #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
              #eq(nil(),::(@y_1,@y_2)) -> #false()
              #eq(nil(),leaf()) -> #false()
              #eq(nil(),nil()) -> #true()
              #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
              #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
              #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
              #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
              #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
              #equal(@x,@y) -> #eq(@x,@y)
              appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
              appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
              appendreverse#1(nil(),@sofar) -> @sofar
              bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
              bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
              bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
              bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
              bfs#2(nil(),@x) -> leaf()
              bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
              bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
              bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
              bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
              dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
              reverse(@xs) -> appendreverse(@xs,nil())
          - Signature:
              {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
              ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2
              ,appendreverse#/2,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2
              ,dfs#1#/2,dfs#2#/4,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2
              ,leaf/0,nil/0,node/3,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0
              ,c_14/2,c_15/1,c_16/1,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0
              ,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0
              ,c_44/0,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
          - Obligation:
              innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
              ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
              ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
*** Step 8.b:4.a:1: RemoveWeakSuffixes WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
        - Weak DPs:
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        RemoveWeakSuffixes
    + Details:
        Consider the dependency graph
          1:S:bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
             -->_1 bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)):3
             -->_1 bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)):2
          
          2:S:bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
             -->_1 bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                              ,@futurequeue
                                                                              ,@t1
                                                                              ,@t2
                                                                              ,@ts
                                                                              ,@x
                                                                              ,@y)):6
             -->_1 bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)):5
          
          3:S:bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
             -->_1 bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)):4
          
          4:S:bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1
          
          5:S:bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1
          
          6:S:bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                         ,@futurequeue
                                                                         ,@t1
                                                                         ,@t2
                                                                         ,@ts
                                                                         ,@x
                                                                         ,@y))
             -->_1 bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts
                                                                               ,::(@t2,::(@t1,@futurequeue))
                                                                               ,@x)):7
          
          7:S:bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1
          
          8:W:bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
             -->_2 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):15
             -->_1 bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)):9
          
          9:W:bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
             -->_1 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):15
          
          10:W:dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
             -->_1 dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)):11
          
          11:W:dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
             -->_1 dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)):13
             -->_1 dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)):12
          
          12:W:dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
             -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):10
          
          13:W:dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
             -->_1 dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)):14
          
          14:W:dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
             -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):10
          
          15:W:dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1
          
        The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
          10: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
          14: dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
          13: dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
          11: dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
          12: dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
*** Step 8.b:4.a:2: PredecessorEstimationCP WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
        - Weak DPs:
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + 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}}
    + Details:
        We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
          6: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                        ,@futurequeue
                                                                        ,@t1
                                                                        ,@t2
                                                                        ,@ts
                                                                        ,@x
                                                                        ,@y))
          
        Consider the set of all dependency pairs
          1: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
          2: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
          3: bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
          4: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
          5: bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
          6: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                        ,@futurequeue
                                                                        ,@t1
                                                                        ,@t2
                                                                        ,@ts
                                                                        ,@x
                                                                        ,@y))
          7: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
          8: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
          9: bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
          15: dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1))
        SPACE(?,?)on application of the dependency pairs
          {6}
        These cover all (indirect) predecessors of dependency pairs
          {6,7,8,9,15}
        their number of applications is equally bounded.
        The dependency pairs are shifted into the weak component.
**** Step 8.b:4.a:2.a:1: NaturalMI WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
        - Weak DPs:
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules}
    + Details:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(c_5) = {1},
          uargs(c_6) = {1},
          uargs(c_7) = {1},
          uargs(c_8) = {1},
          uargs(c_10) = {1},
          uargs(c_11) = {1},
          uargs(c_12) = {1},
          uargs(c_14) = {1,2},
          uargs(c_15) = {1},
          uargs(c_23) = {1}
        
        Following symbols are considered usable:
          {appendreverse,appendreverse#1,bfs,bfs#1,bfs#2,bfs#3,bfs#4,dobfs,reverse,#and#,#eq#,#equal#,appendreverse#
          ,appendreverse#1#,bfs#,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
          ,reverse#}
        TcT has computed the following interpretation:
                        p(#0) = [1]                                    
                      p(#and) = [1] x1 + [0]                           
                       p(#eq) = [0]                                    
                    p(#equal) = [0]                                    
                    p(#false) = [0]                                    
                      p(#neg) = [0]                                    
                      p(#pos) = [1] x1 + [1]                           
                        p(#s) = [1] x1 + [1]                           
                     p(#true) = [3]                                    
                        p(::) = [1] x1 + [1] x2 + [0]                  
             p(appendreverse) = [1] x1 + [1] x2 + [0]                  
           p(appendreverse#1) = [1] x1 + [1] x2 + [0]                  
                       p(bfs) = [1] x1 + [1] x2 + [0]                  
                     p(bfs#1) = [1] x1 + [1] x2 + [0]                  
                     p(bfs#2) = [1] x1 + [0]                           
                     p(bfs#3) = [1] x1 + [1] x2 + [1] x3 + [0]         
                     p(bfs#4) = [1] x2 + [1] x3 + [1] x4 + [1] x5 + [4]
                      p(bfs2) = [1]                                    
                    p(bfs2#1) = [1] x2 + [4]                           
                       p(dfs) = [1] x1 + [1] x2 + [2]                  
                     p(dfs#1) = [4]                                    
                     p(dfs#2) = [1] x1 + [1] x3 + [2] x4 + [1]         
                     p(dfs#3) = [4] x1 + [2] x3 + [1] x5 + [0]         
                     p(dobfs) = [1] x1 + [0]                           
                     p(dodfs) = [2]                                    
                      p(leaf) = [0]                                    
                       p(nil) = [0]                                    
                      p(node) = [1] x2 + [1] x3 + [4]                  
                   p(reverse) = [1] x1 + [0]                           
                     p(#and#) = [4] x1 + [1] x2 + [0]                  
                      p(#eq#) = [4] x1 + [1] x2 + [0]                  
                   p(#equal#) = [2] x2 + [0]                           
            p(appendreverse#) = [1] x1 + [1] x2 + [1]                  
          p(appendreverse#1#) = [4] x2 + [0]                           
                      p(bfs#) = [1] x1 + [1] x2 + [0]                  
                    p(bfs#1#) = [1] x1 + [1] x2 + [0]                  
                    p(bfs#2#) = [1] x1 + [0]                           
                    p(bfs#3#) = [1] x1 + [1] x2 + [1] x3 + [0]         
                    p(bfs#4#) = [1] x2 + [1] x3 + [1] x4 + [1] x5 + [0]
                     p(bfs2#) = [7] x1 + [1] x2 + [6]                  
                   p(bfs2#1#) = [4] x1 + [2]                           
                      p(dfs#) = [1] x1 + [1] x2 + [1]                  
                    p(dfs#1#) = [1] x1 + [0]                           
                    p(dfs#2#) = [1] x3 + [0]                           
                    p(dfs#3#) = [1] x1 + [2] x2 + [2] x3 + [2] x4 + [2]
                    p(dobfs#) = [2] x1 + [2]                           
                    p(dodfs#) = [0]                                    
                  p(reverse#) = [0]                                    
                       p(c_1) = [1] x1 + [1]                           
                       p(c_2) = [1]                                    
                       p(c_3) = [4] x1 + [0]                           
                       p(c_4) = [0]                                    
                       p(c_5) = [1] x1 + [0]                           
                       p(c_6) = [1] x1 + [0]                           
                       p(c_7) = [1] x1 + [0]                           
                       p(c_8) = [1] x1 + [0]                           
                       p(c_9) = [1]                                    
                      p(c_10) = [1] x1 + [0]                           
                      p(c_11) = [1] x1 + [2]                           
                      p(c_12) = [1] x1 + [0]                           
                      p(c_13) = [0]                                    
                      p(c_14) = [1] x1 + [1] x2 + [2]                  
                      p(c_15) = [1] x1 + [0]                           
                      p(c_16) = [2] x1 + [1]                           
                      p(c_17) = [1] x1 + [4]                           
                      p(c_18) = [0]                                    
                      p(c_19) = [1] x1 + [0]                           
                      p(c_20) = [4] x1 + [1]                           
                      p(c_21) = [4]                                    
                      p(c_22) = [4]                                    
                      p(c_23) = [1] x1 + [2]                           
                      p(c_24) = [4]                                    
                      p(c_25) = [1]                                    
                      p(c_26) = [4]                                    
                      p(c_27) = [0]                                    
                      p(c_28) = [1]                                    
                      p(c_29) = [1]                                    
                      p(c_30) = [0]                                    
                      p(c_31) = [1]                                    
                      p(c_32) = [2]                                    
                      p(c_33) = [2]                                    
                      p(c_34) = [4]                                    
                      p(c_35) = [1]                                    
                      p(c_36) = [1]                                    
                      p(c_37) = [0]                                    
                      p(c_38) = [1]                                    
                      p(c_39) = [1] x1 + [1]                           
                      p(c_40) = [1]                                    
                      p(c_41) = [1] x1 + [0]                           
                      p(c_42) = [1] x2 + [1]                           
                      p(c_43) = [0]                                    
                      p(c_44) = [0]                                    
                      p(c_45) = [0]                                    
                      p(c_46) = [1]                                    
                      p(c_47) = [2]                                    
                      p(c_48) = [0]                                    
                      p(c_49) = [0]                                    
                      p(c_50) = [1]                                    
                      p(c_51) = [2]                                    
                      p(c_52) = [1]                                    
                      p(c_53) = [1]                                    
                      p(c_54) = [1]                                    
                      p(c_55) = [0]                                    
                      p(c_56) = [1]                                    
                      p(c_57) = [1] x1 + [1] x3 + [1] x5 + [0]         
        
        Following rules are strictly oriented:
        bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) = [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [4]      
                                                     > [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [2]      
                                                     = c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
        
        
        Following rules are (at-least) weakly oriented:
                           bfs#(@queue,@futurequeue,@x) =  [1] @futurequeue + [1] @queue + [0]                 
                                                        >= [1] @futurequeue + [1] @queue + [0]                 
                                                        =  c_5(bfs#1#(@queue,@futurequeue,@x))                 
        
                     bfs#1#(::(@t,@ts),@futurequeue,@x) =  [1] @futurequeue + [1] @t + [1] @ts + [0]           
                                                        >= [1] @futurequeue + [1] @t + [1] @ts + [0]           
                                                        =  c_6(bfs#3#(@t,@futurequeue,@ts,@x))                 
        
                          bfs#1#(nil(),@futurequeue,@x) =  [1] @futurequeue + [0]                              
                                                        >= [1] @futurequeue + [0]                              
                                                        =  c_7(bfs#2#(@futurequeue,@x))                        
        
                                  bfs#2#(::(@t,@ts),@x) =  [1] @t + [1] @ts + [0]                              
                                                        >= [1] @t + [1] @ts + [0]                              
                                                        =  c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))             
        
                     bfs#3#(leaf(),@futurequeue,@ts,@x) =  [1] @futurequeue + [1] @ts + [0]                    
                                                        >= [1] @futurequeue + [1] @ts + [0]                    
                                                        =  c_10(bfs#(@ts,@futurequeue,@x))                     
        
        bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) =  [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [0]
                                                        >= [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [0]
                                                        =  c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))     
        
                                           bfs2#(@t,@x) =  [7] @t + [1] @x + [6]                               
                                                        >= [6] @t + [6]                                        
                                                        =  c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))        
        
                                        bfs2#1#(@t',@x) =  [4] @t' + [2]                                       
                                                        >= [2] @t' + [2]                                       
                                                        =  c_15(dobfs#(@t',@x))                                
        
                                          dobfs#(@t,@x) =  [2] @t + [2]                                        
                                                        >= [1] @t + [2]                                        
                                                        =  c_23(bfs#(::(@t,nil()),nil(),@x))                   
        
                       appendreverse(@toreverse,@sofar) =  [1] @sofar + [1] @toreverse + [0]                   
                                                        >= [1] @sofar + [1] @toreverse + [0]                   
                                                        =  appendreverse#1(@toreverse,@sofar)                  
        
                     appendreverse#1(::(@a,@as),@sofar) =  [1] @a + [1] @as + [1] @sofar + [0]                 
                                                        >= [1] @a + [1] @as + [1] @sofar + [0]                 
                                                        =  appendreverse(@as,::(@a,@sofar))                    
        
                          appendreverse#1(nil(),@sofar) =  [1] @sofar + [0]                                    
                                                        >= [1] @sofar + [0]                                    
                                                        =  @sofar                                              
        
                            bfs(@queue,@futurequeue,@x) =  [1] @futurequeue + [1] @queue + [0]                 
                                                        >= [1] @futurequeue + [1] @queue + [0]                 
                                                        =  bfs#1(@queue,@futurequeue,@x)                       
        
                      bfs#1(::(@t,@ts),@futurequeue,@x) =  [1] @futurequeue + [1] @t + [1] @ts + [0]           
                                                        >= [1] @futurequeue + [1] @t + [1] @ts + [0]           
                                                        =  bfs#3(@t,@futurequeue,@ts,@x)                       
        
                           bfs#1(nil(),@futurequeue,@x) =  [1] @futurequeue + [0]                              
                                                        >= [1] @futurequeue + [0]                              
                                                        =  bfs#2(@futurequeue,@x)                              
        
                                   bfs#2(::(@t,@ts),@x) =  [1] @t + [1] @ts + [0]                              
                                                        >= [1] @t + [1] @ts + [0]                              
                                                        =  bfs(reverse(::(@t,@ts)),nil(),@x)                   
        
                                        bfs#2(nil(),@x) =  [0]                                                 
                                                        >= [0]                                                 
                                                        =  leaf()                                              
        
                      bfs#3(leaf(),@futurequeue,@ts,@x) =  [1] @futurequeue + [1] @ts + [0]                    
                                                        >= [1] @futurequeue + [1] @ts + [0]                    
                                                        =  bfs(@ts,@futurequeue,@x)                            
        
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) =  [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [4]
                                                        >= [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [4]
                                                        =  bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) 
        
         bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) =  [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [4]
                                                        >= [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [0]
                                                        =  bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)            
        
          bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) =  [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [4]
                                                        >= [1] @t1 + [1] @t2 + [4]                             
                                                        =  node(@y,@t1,@t2)                                    
        
                                           dobfs(@t,@x) =  [1] @t + [0]                                        
                                                        >= [1] @t + [0]                                        
                                                        =  bfs(::(@t,nil()),nil(),@x)                          
        
                                           reverse(@xs) =  [1] @xs + [0]                                       
                                                        >= [1] @xs + [0]                                       
                                                        =  appendreverse(@xs,nil())                            
        
**** Step 8.b:4.a:2.a:2: Assumption WORST_CASE(?,O(1))
    + Considered Problem:
        - Strict DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
        - Weak DPs:
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
    + Details:
        ()

**** Step 8.b:4.a:2.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
        - Weak DPs:
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + 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}}
    + Details:
        We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
          5: bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
          
        Consider the set of all dependency pairs
          1: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
          2: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
          3: bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
          4: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
          5: bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
          6: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                        ,@futurequeue
                                                                        ,@t1
                                                                        ,@t2
                                                                        ,@ts
                                                                        ,@x
                                                                        ,@y))
          7: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
          8: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
          9: bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
          10: dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1))
        SPACE(?,?)on application of the dependency pairs
          {5}
        These cover all (indirect) predecessors of dependency pairs
          {5,8,9,10}
        their number of applications is equally bounded.
        The dependency pairs are shifted into the weak component.
***** Step 8.b:4.a:2.b:1.a:1: NaturalMI WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
        - Weak DPs:
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules}
    + Details:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(c_5) = {1},
          uargs(c_6) = {1},
          uargs(c_7) = {1},
          uargs(c_8) = {1},
          uargs(c_10) = {1},
          uargs(c_11) = {1},
          uargs(c_12) = {1},
          uargs(c_14) = {1,2},
          uargs(c_15) = {1},
          uargs(c_23) = {1}
        
        Following symbols are considered usable:
          {appendreverse,appendreverse#1,bfs,bfs#1,bfs#2,bfs#3,bfs#4,dobfs,reverse,#and#,#eq#,#equal#,appendreverse#
          ,appendreverse#1#,bfs#,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
          ,reverse#}
        TcT has computed the following interpretation:
                        p(#0) = [4]                                             
                      p(#and) = [1]                                             
                       p(#eq) = [0]                                             
                    p(#equal) = [0]                                             
                    p(#false) = [0]                                             
                      p(#neg) = [1] x1 + [0]                                    
                      p(#pos) = [1]                                             
                        p(#s) = [2]                                             
                     p(#true) = [0]                                             
                        p(::) = [1] x1 + [1] x2 + [0]                           
             p(appendreverse) = [1] x1 + [1] x2 + [0]                           
           p(appendreverse#1) = [1] x1 + [1] x2 + [0]                           
                       p(bfs) = [2] x1 + [2] x2 + [2]                           
                     p(bfs#1) = [2] x1 + [2] x2 + [2]                           
                     p(bfs#2) = [2] x1 + [2]                                    
                     p(bfs#3) = [2] x1 + [2] x2 + [2] x3 + [0]                  
                     p(bfs#4) = [2] x2 + [2] x3 + [2] x4 + [2] x5 + [2] x7 + [4]
                      p(bfs2) = [2] x1 + [1] x2 + [0]                           
                    p(bfs2#1) = [0]                                             
                       p(dfs) = [1] x1 + [1] x2 + [1]                           
                     p(dfs#1) = [1] x2 + [1]                                    
                     p(dfs#2) = [2] x2 + [4] x3 + [1] x4 + [0]                  
                     p(dfs#3) = [2] x2 + [1] x5 + [1] x6 + [0]                  
                     p(dobfs) = [2] x1 + [2]                                    
                     p(dodfs) = [2] x1 + [1]                                    
                      p(leaf) = [2]                                             
                       p(nil) = [0]                                             
                      p(node) = [1] x1 + [1] x2 + [1] x3 + [3]                  
                   p(reverse) = [1] x1 + [0]                                    
                     p(#and#) = [2] x1 + [2] x2 + [0]                           
                      p(#eq#) = [1] x2 + [0]                                    
                   p(#equal#) = [4]                                             
            p(appendreverse#) = [1] x1 + [1]                                    
          p(appendreverse#1#) = [0]                                             
                      p(bfs#) = [2] x1 + [2] x2 + [0]                           
                    p(bfs#1#) = [2] x1 + [2] x2 + [0]                           
                    p(bfs#2#) = [2] x1 + [0]                                    
                    p(bfs#3#) = [2] x1 + [2] x2 + [2] x3 + [0]                  
                    p(bfs#4#) = [2] x2 + [2] x3 + [2] x4 + [2] x5 + [2] x7 + [6]
                     p(bfs2#) = [6] x1 + [2] x2 + [4]                           
                   p(bfs2#1#) = [2] x1 + [1] x2 + [0]                           
                      p(dfs#) = [1] x1 + [1] x2 + [0]                           
                    p(dfs#1#) = [0]                                             
                    p(dfs#2#) = [1] x1 + [1] x4 + [0]                           
                    p(dfs#3#) = [1] x1 + [2] x3 + [2] x4 + [1] x6 + [0]         
                    p(dobfs#) = [2] x1 + [1] x2 + [0]                           
                    p(dodfs#) = [1] x2 + [1]                                    
                  p(reverse#) = [2] x1 + [2]                                    
                       p(c_1) = [1]                                             
                       p(c_2) = [1] x1 + [0]                                    
                       p(c_3) = [1] x1 + [0]                                    
                       p(c_4) = [4]                                             
                       p(c_5) = [1] x1 + [0]                                    
                       p(c_6) = [1] x1 + [0]                                    
                       p(c_7) = [1] x1 + [0]                                    
                       p(c_8) = [1] x1 + [0]                                    
                       p(c_9) = [0]                                             
                      p(c_10) = [1] x1 + [3]                                    
                      p(c_11) = [1] x1 + [0]                                    
                      p(c_12) = [1] x1 + [6]                                    
                      p(c_13) = [4]                                             
                      p(c_14) = [1] x1 + [1] x2 + [0]                           
                      p(c_15) = [1] x1 + [0]                                    
                      p(c_16) = [0]                                             
                      p(c_17) = [0]                                             
                      p(c_18) = [1]                                             
                      p(c_19) = [1] x1 + [1]                                    
                      p(c_20) = [2] x1 + [0]                                    
                      p(c_21) = [1]                                             
                      p(c_22) = [4]                                             
                      p(c_23) = [1] x1 + [0]                                    
                      p(c_24) = [2] x1 + [1]                                    
                      p(c_25) = [1] x1 + [0]                                    
                      p(c_26) = [4]                                             
                      p(c_27) = [0]                                             
                      p(c_28) = [0]                                             
                      p(c_29) = [1]                                             
                      p(c_30) = [0]                                             
                      p(c_31) = [1]                                             
                      p(c_32) = [0]                                             
                      p(c_33) = [1]                                             
                      p(c_34) = [0]                                             
                      p(c_35) = [1] x1 + [0]                                    
                      p(c_36) = [0]                                             
                      p(c_37) = [1]                                             
                      p(c_38) = [0]                                             
                      p(c_39) = [2]                                             
                      p(c_40) = [1]                                             
                      p(c_41) = [1] x1 + [0]                                    
                      p(c_42) = [1]                                             
                      p(c_43) = [1]                                             
                      p(c_44) = [1]                                             
                      p(c_45) = [0]                                             
                      p(c_46) = [0]                                             
                      p(c_47) = [4]                                             
                      p(c_48) = [1]                                             
                      p(c_49) = [0]                                             
                      p(c_50) = [0]                                             
                      p(c_51) = [0]                                             
                      p(c_52) = [2]                                             
                      p(c_53) = [1]                                             
                      p(c_54) = [0]                                             
                      p(c_55) = [1]                                             
                      p(c_56) = [1]                                             
                      p(c_57) = [2] x1 + [1] x3 + [2]                           
        
        Following rules are strictly oriented:
        bfs#3#(leaf(),@futurequeue,@ts,@x) = [2] @futurequeue + [2] @ts + [4]
                                           > [2] @futurequeue + [2] @ts + [3]
                                           = c_10(bfs#(@ts,@futurequeue,@x)) 
        
        
        Following rules are (at-least) weakly oriented:
                           bfs#(@queue,@futurequeue,@x) =  [2] @futurequeue + [2] @queue + [0]                          
                                                        >= [2] @futurequeue + [2] @queue + [0]                          
                                                        =  c_5(bfs#1#(@queue,@futurequeue,@x))                          
        
                     bfs#1#(::(@t,@ts),@futurequeue,@x) =  [2] @futurequeue + [2] @t + [2] @ts + [0]                    
                                                        >= [2] @futurequeue + [2] @t + [2] @ts + [0]                    
                                                        =  c_6(bfs#3#(@t,@futurequeue,@ts,@x))                          
        
                          bfs#1#(nil(),@futurequeue,@x) =  [2] @futurequeue + [0]                                       
                                                        >= [2] @futurequeue + [0]                                       
                                                        =  c_7(bfs#2#(@futurequeue,@x))                                 
        
                                  bfs#2#(::(@t,@ts),@x) =  [2] @t + [2] @ts + [0]                                       
                                                        >= [2] @t + [2] @ts + [0]                                       
                                                        =  c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))                      
        
           bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) =  [2] @futurequeue + [2] @t1 + [2] @t2 + [2] @ts + [2] @y + [6]
                                                        >= [2] @futurequeue + [2] @t1 + [2] @t2 + [2] @ts + [2] @y + [6]
                                                        =  c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))   
        
        bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) =  [2] @futurequeue + [2] @t1 + [2] @t2 + [2] @ts + [2] @y + [6]
                                                        >= [2] @futurequeue + [2] @t1 + [2] @t2 + [2] @ts + [6]         
                                                        =  c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))              
        
                                           bfs2#(@t,@x) =  [6] @t + [2] @x + [4]                                        
                                                        >= [6] @t + [2] @x + [4]                                        
                                                        =  c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))                 
        
                                        bfs2#1#(@t',@x) =  [2] @t' + [1] @x + [0]                                       
                                                        >= [2] @t' + [1] @x + [0]                                       
                                                        =  c_15(dobfs#(@t',@x))                                         
        
                                          dobfs#(@t,@x) =  [2] @t + [1] @x + [0]                                        
                                                        >= [2] @t + [0]                                                 
                                                        =  c_23(bfs#(::(@t,nil()),nil(),@x))                            
        
                       appendreverse(@toreverse,@sofar) =  [1] @sofar + [1] @toreverse + [0]                            
                                                        >= [1] @sofar + [1] @toreverse + [0]                            
                                                        =  appendreverse#1(@toreverse,@sofar)                           
        
                     appendreverse#1(::(@a,@as),@sofar) =  [1] @a + [1] @as + [1] @sofar + [0]                          
                                                        >= [1] @a + [1] @as + [1] @sofar + [0]                          
                                                        =  appendreverse(@as,::(@a,@sofar))                             
        
                          appendreverse#1(nil(),@sofar) =  [1] @sofar + [0]                                             
                                                        >= [1] @sofar + [0]                                             
                                                        =  @sofar                                                       
        
                            bfs(@queue,@futurequeue,@x) =  [2] @futurequeue + [2] @queue + [2]                          
                                                        >= [2] @futurequeue + [2] @queue + [2]                          
                                                        =  bfs#1(@queue,@futurequeue,@x)                                
        
                      bfs#1(::(@t,@ts),@futurequeue,@x) =  [2] @futurequeue + [2] @t + [2] @ts + [2]                    
                                                        >= [2] @futurequeue + [2] @t + [2] @ts + [0]                    
                                                        =  bfs#3(@t,@futurequeue,@ts,@x)                                
        
                           bfs#1(nil(),@futurequeue,@x) =  [2] @futurequeue + [2]                                       
                                                        >= [2] @futurequeue + [2]                                       
                                                        =  bfs#2(@futurequeue,@x)                                       
        
                                   bfs#2(::(@t,@ts),@x) =  [2] @t + [2] @ts + [2]                                       
                                                        >= [2] @t + [2] @ts + [2]                                       
                                                        =  bfs(reverse(::(@t,@ts)),nil(),@x)                            
        
                                        bfs#2(nil(),@x) =  [2]                                                          
                                                        >= [2]                                                          
                                                        =  leaf()                                                       
        
                      bfs#3(leaf(),@futurequeue,@ts,@x) =  [2] @futurequeue + [2] @ts + [4]                             
                                                        >= [2] @futurequeue + [2] @ts + [2]                             
                                                        =  bfs(@ts,@futurequeue,@x)                                     
        
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) =  [2] @futurequeue + [2] @t1 + [2] @t2 + [2] @ts + [2] @y + [6]
                                                        >= [2] @futurequeue + [2] @t1 + [2] @t2 + [2] @ts + [2] @y + [4]
                                                        =  bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)          
        
         bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) =  [2] @futurequeue + [2] @t1 + [2] @t2 + [2] @ts + [2] @y + [4]
                                                        >= [2] @futurequeue + [2] @t1 + [2] @t2 + [2] @ts + [2]         
                                                        =  bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)                     
        
          bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) =  [2] @futurequeue + [2] @t1 + [2] @t2 + [2] @ts + [2] @y + [4]
                                                        >= [1] @t1 + [1] @t2 + [1] @y + [3]                             
                                                        =  node(@y,@t1,@t2)                                             
        
                                           dobfs(@t,@x) =  [2] @t + [2]                                                 
                                                        >= [2] @t + [2]                                                 
                                                        =  bfs(::(@t,nil()),nil(),@x)                                   
        
                                           reverse(@xs) =  [1] @xs + [0]                                                
                                                        >= [1] @xs + [0]                                                
                                                        =  appendreverse(@xs,nil())                                     
        
***** Step 8.b:4.a:2.b:1.a:2: Assumption WORST_CASE(?,O(1))
    + Considered Problem:
        - Strict DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
        - Weak DPs:
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
    + Details:
        ()

***** Step 8.b:4.a:2.b:1.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
        - Weak DPs:
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + 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}}
    + Details:
        We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
          2: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
          
        Consider the set of all dependency pairs
          1: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
          2: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
          3: bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
          4: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
          5: bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
          6: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                        ,@futurequeue
                                                                        ,@t1
                                                                        ,@t2
                                                                        ,@ts
                                                                        ,@x
                                                                        ,@y))
          7: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
          8: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
          9: bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
          10: dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1))
        SPACE(?,?)on application of the dependency pairs
          {2}
        These cover all (indirect) predecessors of dependency pairs
          {2,5,6,7,8,9,10}
        their number of applications is equally bounded.
        The dependency pairs are shifted into the weak component.
****** Step 8.b:4.a:2.b:1.b:1.a:1: NaturalMI WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
        - Weak DPs:
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules}
    + Details:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(c_5) = {1},
          uargs(c_6) = {1},
          uargs(c_7) = {1},
          uargs(c_8) = {1},
          uargs(c_10) = {1},
          uargs(c_11) = {1},
          uargs(c_12) = {1},
          uargs(c_14) = {1,2},
          uargs(c_15) = {1},
          uargs(c_23) = {1}
        
        Following symbols are considered usable:
          {appendreverse,appendreverse#1,bfs,bfs#1,bfs#2,bfs#3,bfs#4,dobfs,reverse,#and#,#eq#,#equal#,appendreverse#
          ,appendreverse#1#,bfs#,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
          ,reverse#}
        TcT has computed the following interpretation:
                        p(#0) = [0]                                             
                      p(#and) = [2] x1 + [5] x2 + [2]                           
                       p(#eq) = [0]                                             
                    p(#equal) = [0]                                             
                    p(#false) = [0]                                             
                      p(#neg) = [1] x1 + [0]                                    
                      p(#pos) = [1] x1 + [2]                                    
                        p(#s) = [0]                                             
                     p(#true) = [1]                                             
                        p(::) = [1] x1 + [1] x2 + [0]                           
             p(appendreverse) = [1] x1 + [1] x2 + [0]                           
           p(appendreverse#1) = [1] x1 + [1] x2 + [0]                           
                       p(bfs) = [1] x1 + [1] x2 + [2]                           
                     p(bfs#1) = [1] x1 + [1] x2 + [2]                           
                     p(bfs#2) = [1] x1 + [2]                                    
                     p(bfs#3) = [1] x1 + [1] x2 + [1] x3 + [0]                  
                     p(bfs#4) = [1] x2 + [1] x3 + [1] x4 + [1] x5 + [1] x7 + [2]
                      p(bfs2) = [1] x1 + [4] x2 + [0]                           
                    p(bfs2#1) = [2] x1 + [2]                                    
                       p(dfs) = [2]                                             
                     p(dfs#1) = [1] x1 + [2] x2 + [0]                           
                     p(dfs#2) = [1] x4 + [1]                                    
                     p(dfs#3) = [1] x3 + [4] x4 + [1] x5 + [0]                  
                     p(dobfs) = [2] x1 + [2]                                    
                     p(dodfs) = [1] x1 + [1] x2 + [0]                           
                      p(leaf) = [2]                                             
                       p(nil) = [0]                                             
                      p(node) = [1] x1 + [1] x2 + [1] x3 + [2]                  
                   p(reverse) = [1] x1 + [0]                                    
                     p(#and#) = [0]                                             
                      p(#eq#) = [4] x2 + [2]                                    
                   p(#equal#) = [4] x1 + [2] x2 + [1]                           
            p(appendreverse#) = [1] x1 + [0]                                    
          p(appendreverse#1#) = [1] x2 + [1]                                    
                      p(bfs#) = [2] x1 + [2] x2 + [1]                           
                    p(bfs#1#) = [2] x1 + [2] x2 + [1]                           
                    p(bfs#2#) = [2] x1 + [1]                                    
                    p(bfs#3#) = [2] x1 + [2] x2 + [2] x3 + [0]                  
                    p(bfs#4#) = [2] x2 + [2] x3 + [2] x4 + [2] x5 + [2] x7 + [1]
                     p(bfs2#) = [6] x1 + [5] x2 + [7]                           
                   p(bfs2#1#) = [2] x1 + [4] x2 + [1]                           
                      p(dfs#) = [1] x1 + [1] x2 + [0]                           
                    p(dfs#1#) = [4]                                             
                    p(dfs#2#) = [4] x1 + [2] x2 + [4] x3 + [2] x4 + [2]         
                    p(dfs#3#) = [1] x1 + [1] x4 + [4] x5 + [0]                  
                    p(dobfs#) = [2] x1 + [1] x2 + [1]                           
                    p(dodfs#) = [1] x1 + [1] x2 + [1]                           
                  p(reverse#) = [2]                                             
                       p(c_1) = [0]                                             
                       p(c_2) = [1] x1 + [2]                                    
                       p(c_3) = [1] x1 + [1]                                    
                       p(c_4) = [0]                                             
                       p(c_5) = [1] x1 + [0]                                    
                       p(c_6) = [1] x1 + [0]                                    
                       p(c_7) = [1] x1 + [0]                                    
                       p(c_8) = [1] x1 + [0]                                    
                       p(c_9) = [1]                                             
                      p(c_10) = [1] x1 + [0]                                    
                      p(c_11) = [1] x1 + [3]                                    
                      p(c_12) = [1] x1 + [0]                                    
                      p(c_13) = [1]                                             
                      p(c_14) = [1] x1 + [1] x2 + [1]                           
                      p(c_15) = [1] x1 + [0]                                    
                      p(c_16) = [1]                                             
                      p(c_17) = [4]                                             
                      p(c_18) = [1]                                             
                      p(c_19) = [0]                                             
                      p(c_20) = [4] x1 + [1]                                    
                      p(c_21) = [1] x1 + [0]                                    
                      p(c_22) = [1]                                             
                      p(c_23) = [1] x1 + [0]                                    
                      p(c_24) = [4]                                             
                      p(c_25) = [1] x1 + [1]                                    
                      p(c_26) = [4]                                             
                      p(c_27) = [0]                                             
                      p(c_28) = [4]                                             
                      p(c_29) = [0]                                             
                      p(c_30) = [0]                                             
                      p(c_31) = [2]                                             
                      p(c_32) = [0]                                             
                      p(c_33) = [0]                                             
                      p(c_34) = [1]                                             
                      p(c_35) = [1] x1 + [0]                                    
                      p(c_36) = [1]                                             
                      p(c_37) = [4]                                             
                      p(c_38) = [1]                                             
                      p(c_39) = [1]                                             
                      p(c_40) = [0]                                             
                      p(c_41) = [1] x1 + [0]                                    
                      p(c_42) = [1] x1 + [1] x2 + [4] x3 + [1]                  
                      p(c_43) = [0]                                             
                      p(c_44) = [1]                                             
                      p(c_45) = [2]                                             
                      p(c_46) = [1]                                             
                      p(c_47) = [1]                                             
                      p(c_48) = [1]                                             
                      p(c_49) = [4]                                             
                      p(c_50) = [1]                                             
                      p(c_51) = [4]                                             
                      p(c_52) = [1]                                             
                      p(c_53) = [1]                                             
                      p(c_54) = [2]                                             
                      p(c_55) = [2]                                             
                      p(c_56) = [0]                                             
                      p(c_57) = [1] x4 + [0]                                    
        
        Following rules are strictly oriented:
        bfs#1#(::(@t,@ts),@futurequeue,@x) = [2] @futurequeue + [2] @t + [2] @ts + [1]
                                           > [2] @futurequeue + [2] @t + [2] @ts + [0]
                                           = c_6(bfs#3#(@t,@futurequeue,@ts,@x))      
        
        
        Following rules are (at-least) weakly oriented:
                           bfs#(@queue,@futurequeue,@x) =  [2] @futurequeue + [2] @queue + [1]                          
                                                        >= [2] @futurequeue + [2] @queue + [1]                          
                                                        =  c_5(bfs#1#(@queue,@futurequeue,@x))                          
        
                          bfs#1#(nil(),@futurequeue,@x) =  [2] @futurequeue + [1]                                       
                                                        >= [2] @futurequeue + [1]                                       
                                                        =  c_7(bfs#2#(@futurequeue,@x))                                 
        
                                  bfs#2#(::(@t,@ts),@x) =  [2] @t + [2] @ts + [1]                                       
                                                        >= [2] @t + [2] @ts + [1]                                       
                                                        =  c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))                      
        
                     bfs#3#(leaf(),@futurequeue,@ts,@x) =  [2] @futurequeue + [2] @ts + [4]                             
                                                        >= [2] @futurequeue + [2] @ts + [1]                             
                                                        =  c_10(bfs#(@ts,@futurequeue,@x))                              
        
           bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) =  [2] @futurequeue + [2] @t1 + [2] @t2 + [2] @ts + [2] @y + [4]
                                                        >= [2] @futurequeue + [2] @t1 + [2] @t2 + [2] @ts + [2] @y + [4]
                                                        =  c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))   
        
        bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) =  [2] @futurequeue + [2] @t1 + [2] @t2 + [2] @ts + [2] @y + [1]
                                                        >= [2] @futurequeue + [2] @t1 + [2] @t2 + [2] @ts + [1]         
                                                        =  c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))              
        
                                           bfs2#(@t,@x) =  [6] @t + [5] @x + [7]                                        
                                                        >= [6] @t + [5] @x + [7]                                        
                                                        =  c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))                 
        
                                        bfs2#1#(@t',@x) =  [2] @t' + [4] @x + [1]                                       
                                                        >= [2] @t' + [1] @x + [1]                                       
                                                        =  c_15(dobfs#(@t',@x))                                         
        
                                          dobfs#(@t,@x) =  [2] @t + [1] @x + [1]                                        
                                                        >= [2] @t + [1]                                                 
                                                        =  c_23(bfs#(::(@t,nil()),nil(),@x))                            
        
                       appendreverse(@toreverse,@sofar) =  [1] @sofar + [1] @toreverse + [0]                            
                                                        >= [1] @sofar + [1] @toreverse + [0]                            
                                                        =  appendreverse#1(@toreverse,@sofar)                           
        
                     appendreverse#1(::(@a,@as),@sofar) =  [1] @a + [1] @as + [1] @sofar + [0]                          
                                                        >= [1] @a + [1] @as + [1] @sofar + [0]                          
                                                        =  appendreverse(@as,::(@a,@sofar))                             
        
                          appendreverse#1(nil(),@sofar) =  [1] @sofar + [0]                                             
                                                        >= [1] @sofar + [0]                                             
                                                        =  @sofar                                                       
        
                            bfs(@queue,@futurequeue,@x) =  [1] @futurequeue + [1] @queue + [2]                          
                                                        >= [1] @futurequeue + [1] @queue + [2]                          
                                                        =  bfs#1(@queue,@futurequeue,@x)                                
        
                      bfs#1(::(@t,@ts),@futurequeue,@x) =  [1] @futurequeue + [1] @t + [1] @ts + [2]                    
                                                        >= [1] @futurequeue + [1] @t + [1] @ts + [0]                    
                                                        =  bfs#3(@t,@futurequeue,@ts,@x)                                
        
                           bfs#1(nil(),@futurequeue,@x) =  [1] @futurequeue + [2]                                       
                                                        >= [1] @futurequeue + [2]                                       
                                                        =  bfs#2(@futurequeue,@x)                                       
        
                                   bfs#2(::(@t,@ts),@x) =  [1] @t + [1] @ts + [2]                                       
                                                        >= [1] @t + [1] @ts + [2]                                       
                                                        =  bfs(reverse(::(@t,@ts)),nil(),@x)                            
        
                                        bfs#2(nil(),@x) =  [2]                                                          
                                                        >= [2]                                                          
                                                        =  leaf()                                                       
        
                      bfs#3(leaf(),@futurequeue,@ts,@x) =  [1] @futurequeue + [1] @ts + [2]                             
                                                        >= [1] @futurequeue + [1] @ts + [2]                             
                                                        =  bfs(@ts,@futurequeue,@x)                                     
        
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) =  [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [1] @y + [2]
                                                        >= [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [1] @y + [2]
                                                        =  bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)          
        
         bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) =  [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [1] @y + [2]
                                                        >= [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [2]         
                                                        =  bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)                     
        
          bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) =  [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [1] @y + [2]
                                                        >= [1] @t1 + [1] @t2 + [1] @y + [2]                             
                                                        =  node(@y,@t1,@t2)                                             
        
                                           dobfs(@t,@x) =  [2] @t + [2]                                                 
                                                        >= [1] @t + [2]                                                 
                                                        =  bfs(::(@t,nil()),nil(),@x)                                   
        
                                           reverse(@xs) =  [1] @xs + [0]                                                
                                                        >= [1] @xs + [0]                                                
                                                        =  appendreverse(@xs,nil())                                     
        
****** Step 8.b:4.a:2.b:1.b:1.a:2: Assumption WORST_CASE(?,O(1))
    + Considered Problem:
        - Strict DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
        - Weak DPs:
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
    + Details:
        ()

****** Step 8.b:4.a:2.b:1.b:1.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
        - Weak DPs:
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}}
    + Details:
        We first use the processor NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
          3: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
          
        Consider the set of all dependency pairs
          1: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
          2: bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
          3: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
          4: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
          5: bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
          6: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                        ,@futurequeue
                                                                        ,@t1
                                                                        ,@t2
                                                                        ,@ts
                                                                        ,@x
                                                                        ,@y))
          7: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
          8: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
          9: bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
          10: dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        Processor NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^2))
        SPACE(?,?)on application of the dependency pairs
          {3}
        These cover all (indirect) predecessors of dependency pairs
          {3,8,9,10}
        their number of applications is equally bounded.
        The dependency pairs are shifted into the weak component.
******* Step 8.b:4.a:2.b:1.b:1.b:1.a:1: NaturalMI WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
        - Weak DPs:
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules}
    + Details:
        We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 2 non-zero interpretation-entries in the diagonal of the component-wise maxima):
        The following argument positions are considered usable:
          uargs(c_5) = {1},
          uargs(c_6) = {1},
          uargs(c_7) = {1},
          uargs(c_8) = {1},
          uargs(c_10) = {1},
          uargs(c_11) = {1},
          uargs(c_12) = {1},
          uargs(c_14) = {1,2},
          uargs(c_15) = {1},
          uargs(c_23) = {1}
        
        Following symbols are considered usable:
          {#and,#eq,#equal,appendreverse,appendreverse#1,bfs,bfs#1,bfs#2,bfs#3,bfs#4,dobfs,reverse,#and#,#eq#
          ,#equal#,appendreverse#,appendreverse#1#,bfs#,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#
          ,dfs#3#,dobfs#,dodfs#,reverse#}
        TcT has computed the following interpretation:
                        p(#0) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(#and) = [1]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                       p(#eq) = [1]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                    p(#equal) = [0 0 0]      [0 0 0]      [1]                                                    
                                [1 1 1] x1 + [1 0 0] x2 + [0]                                                    
                                [0 0 1]      [1 0 0]      [0]                                                    
                    p(#false) = [1]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(#neg) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(#pos) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                        p(#s) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                     p(#true) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                        p(::) = [0 0 0]      [0 0 0]      [1]                                                    
                                [0 1 0] x1 + [0 1 0] x2 + [1]                                                    
                                [0 0 1]      [0 0 1]      [0]                                                    
             p(appendreverse) = [0 1 0]      [1 0 0]      [0]                                                    
                                [0 1 0] x1 + [0 1 0] x2 + [0]                                                    
                                [0 0 1]      [0 0 1]      [0]                                                    
           p(appendreverse#1) = [0 1 0]      [1 0 0]      [0]                                                    
                                [0 1 0] x1 + [0 1 0] x2 + [0]                                                    
                                [0 0 1]      [0 0 1]      [0]                                                    
                       p(bfs) = [0 0 0]      [0 0 0]      [0 1 0]      [0]                                       
                                [0 1 0] x1 + [0 1 0] x2 + [0 0 0] x3 + [0]                                       
                                [0 1 0]      [0 1 0]      [0 0 0]      [0]                                       
                     p(bfs#1) = [0 0 0]      [0 0 0]      [0 1 0]      [0]                                       
                                [0 1 0] x1 + [0 1 0] x2 + [0 0 0] x3 + [0]                                       
                                [0 1 0]      [0 1 0]      [0 0 0]      [0]                                       
                     p(bfs#2) = [0 0 0]      [0 1 0]      [0]                                                    
                                [0 1 0] x1 + [0 0 0] x2 + [0]                                                    
                                [0 1 0]      [0 0 0]      [0]                                                    
                     p(bfs#3) = [0 0 0]      [0 0 0]      [0 0 0]      [0 1 0]      [0]                          
                                [0 1 0] x1 + [0 1 0] x2 + [0 1 0] x3 + [0 0 0] x4 + [1]                          
                                [0 1 0]      [0 1 0]      [0 1 0]      [0 0 0]      [1]                          
                     p(bfs#4) = [0 0 0]      [0 0 0]      [0 0 0]      [0 0 0]      [0 0 0]      [0 1 0]      [0]
                                [1 0 0] x1 + [0 1 0] x2 + [0 1 1] x3 + [0 1 1] x4 + [0 1 0] x5 + [0 0 0] x6 + [1]
                                [1 0 0]      [0 1 0]      [0 1 1]      [0 1 1]      [0 1 0]      [0 0 0]      [1]
                      p(bfs2) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                    p(bfs2#1) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                       p(dfs) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                     p(dfs#1) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                     p(dfs#2) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                     p(dfs#3) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                     p(dobfs) = [0 1 1]      [0 1 0]      [0]                                                    
                                [1 1 0] x1 + [0 0 1] x2 + [1]                                                    
                                [0 1 0]      [1 1 1]      [1]                                                    
                     p(dodfs) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(leaf) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                       p(nil) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(node) = [0 0 0]      [0 0 0]      [0]                                                    
                                [0 1 1] x2 + [0 1 1] x3 + [1]                                                    
                                [0 0 1]      [0 0 1]      [1]                                                    
                   p(reverse) = [0 1 0]      [0]                                                                 
                                [0 1 0] x1 + [0]                                                                 
                                [0 0 1]      [0]                                                                 
                     p(#and#) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(#eq#) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                   p(#equal#) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
            p(appendreverse#) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
          p(appendreverse#1#) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(bfs#) = [0 0 1]      [1 0 1]      [0 0 0]      [0]                                       
                                [0 0 1] x1 + [0 0 0] x2 + [0 0 0] x3 + [0]                                       
                                [0 0 1]      [1 0 1]      [1 0 0]      [0]                                       
                    p(bfs#1#) = [0 0 1]      [1 0 1]      [0 0 0]      [0]                                       
                                [1 0 0] x1 + [1 1 0] x2 + [0 1 0] x3 + [0]                                       
                                [0 1 1]      [1 0 1]      [1 1 1]      [0]                                       
                    p(bfs#2#) = [1 0 1]      [0 0 0]      [0]                                                    
                                [0 0 1] x1 + [1 0 1] x2 + [0]                                                    
                                [0 1 1]      [0 1 0]      [0]                                                    
                    p(bfs#3#) = [0 0 1]      [1 0 1]      [0 0 1]      [0 0 0]      [0]                          
                                [0 1 1] x1 + [1 0 1] x2 + [0 0 1] x3 + [0 1 1] x4 + [0]                          
                                [0 0 0]      [0 0 0]      [0 1 0]      [1 0 1]      [1]                          
                    p(bfs#4#) = [0 0 0]      [1 0 1]      [0 0 1]      [0 0 1]      [0 0 1]      [0 0 0]      [1]
                                [1 0 0] x1 + [0 0 1] x2 + [0 0 1] x3 + [1 0 1] x4 + [1 1 1] x5 + [1 1 1] x6 + [1]
                                [0 0 1]      [1 0 0]      [0 1 0]      [1 0 1]      [0 0 1]      [0 0 1]      [0]
                     p(bfs2#) = [1 1 1]      [1 1 1]      [1]                                                    
                                [1 0 1] x1 + [1 0 1] x2 + [1]                                                    
                                [0 0 0]      [0 1 0]      [0]                                                    
                   p(bfs2#1#) = [0 0 1]      [0]                                                                 
                                [1 0 1] x1 + [1]                                                                 
                                [0 1 0]      [1]                                                                 
                      p(dfs#) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                    p(dfs#1#) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                    p(dfs#2#) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                    p(dfs#3#) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                    p(dobfs#) = [0 0 1]      [0]                                                                 
                                [0 1 0] x1 + [1]                                                                 
                                [0 0 1]      [0]                                                                 
                    p(dodfs#) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                  p(reverse#) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                       p(c_1) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                       p(c_2) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                       p(c_3) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                       p(c_4) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                       p(c_5) = [1 0 0]      [0]                                                                 
                                [0 0 0] x1 + [0]                                                                 
                                [0 0 0]      [0]                                                                 
                       p(c_6) = [1 0 0]      [0]                                                                 
                                [0 0 0] x1 + [1]                                                                 
                                [1 0 0]      [0]                                                                 
                       p(c_7) = [1 0 0]      [0]                                                                 
                                [0 0 0] x1 + [0]                                                                 
                                [0 1 0]      [0]                                                                 
                       p(c_8) = [1 0 0]      [0]                                                                 
                                [1 0 0] x1 + [0]                                                                 
                                [0 0 0]      [0]                                                                 
                       p(c_9) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_10) = [1 0 0]      [0]                                                                 
                                [1 0 0] x1 + [0]                                                                 
                                [0 0 0]      [0]                                                                 
                      p(c_11) = [1 0 0]      [0]                                                                 
                                [1 0 0] x1 + [1]                                                                 
                                [0 0 0]      [0]                                                                 
                      p(c_12) = [1 0 0]      [0]                                                                 
                                [0 0 1] x1 + [0]                                                                 
                                [0 1 0]      [0]                                                                 
                      p(c_13) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_14) = [1 0 0]      [1 0 0]      [0]                                                    
                                [0 0 0] x1 + [0 0 1] x2 + [1]                                                    
                                [0 0 0]      [0 0 0]      [0]                                                    
                      p(c_15) = [1 0 0]      [0]                                                                 
                                [0 0 0] x1 + [1]                                                                 
                                [0 0 0]      [0]                                                                 
                      p(c_16) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_17) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_18) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_19) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_20) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_21) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_22) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_23) = [1 0 0]      [0]                                                                 
                                [0 0 0] x1 + [0]                                                                 
                                [0 1 0]      [0]                                                                 
                      p(c_24) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_25) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_26) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_27) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_28) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_29) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_30) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_31) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_32) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_33) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_34) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_35) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_36) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_37) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_38) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_39) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_40) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_41) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_42) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_43) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_44) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_45) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_46) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_47) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_48) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_49) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_50) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_51) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_52) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_53) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_54) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_55) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_56) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
                      p(c_57) = [0]                                                                              
                                [0]                                                                              
                                [0]                                                                              
        
        Following rules are strictly oriented:
        bfs#2#(::(@t,@ts),@x) = [0 0 1]      [0 0 1]       [0 0 0]      [1]
                                [0 0 1] @t + [0 0 1] @ts + [1 0 1] @x + [0]
                                [0 1 1]      [0 1 1]       [0 1 0]      [1]
                              > [0 0 1]      [0 0 1]       [0]             
                                [0 0 1] @t + [0 0 1] @ts + [0]             
                                [0 0 0]      [0 0 0]       [0]             
                              = c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))    
        
        
        Following rules are (at-least) weakly oriented:
                           bfs#(@queue,@futurequeue,@x) =  [1 0 1]                [0 0 1]          [0 0 0]      [0]                         
                                                           [0 0 0] @futurequeue + [0 0 1] @queue + [0 0 0] @x + [0]                         
                                                           [1 0 1]                [0 0 1]          [1 0 0]      [0]                         
                                                        >= [1 0 1]                [0 0 1]          [0]                                      
                                                           [0 0 0] @futurequeue + [0 0 0] @queue + [0]                                      
                                                           [0 0 0]                [0 0 0]          [0]                                      
                                                        =  c_5(bfs#1#(@queue,@futurequeue,@x))                                              
        
                     bfs#1#(::(@t,@ts),@futurequeue,@x) =  [1 0 1]                [0 0 1]      [0 0 1]       [0 0 0]      [0]               
                                                           [1 1 0] @futurequeue + [0 0 0] @t + [0 0 0] @ts + [0 1 0] @x + [1]               
                                                           [1 0 1]                [0 1 1]      [0 1 1]       [1 1 1]      [1]               
                                                        >= [1 0 1]                [0 0 1]      [0 0 1]       [0]                            
                                                           [0 0 0] @futurequeue + [0 0 0] @t + [0 0 0] @ts + [1]                            
                                                           [1 0 1]                [0 0 1]      [0 0 1]       [0]                            
                                                        =  c_6(bfs#3#(@t,@futurequeue,@ts,@x))                                              
        
                          bfs#1#(nil(),@futurequeue,@x) =  [1 0 1]                [0 0 0]      [0]                                          
                                                           [1 1 0] @futurequeue + [0 1 0] @x + [0]                                          
                                                           [1 0 1]                [1 1 1]      [0]                                          
                                                        >= [1 0 1]                [0 0 0]      [0]                                          
                                                           [0 0 0] @futurequeue + [0 0 0] @x + [0]                                          
                                                           [0 0 1]                [1 0 1]      [0]                                          
                                                        =  c_7(bfs#2#(@futurequeue,@x))                                                     
        
                     bfs#3#(leaf(),@futurequeue,@ts,@x) =  [1 0 1]                [0 0 1]       [0 0 0]      [0]                            
                                                           [1 0 1] @futurequeue + [0 0 1] @ts + [0 1 1] @x + [0]                            
                                                           [0 0 0]                [0 1 0]       [1 0 1]      [1]                            
                                                        >= [1 0 1]                [0 0 1]       [0]                                         
                                                           [1 0 1] @futurequeue + [0 0 1] @ts + [0]                                         
                                                           [0 0 0]                [0 0 0]       [0]                                         
                                                        =  c_10(bfs#(@ts,@futurequeue,@x))                                                  
        
           bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) =  [1 0 1]                [0 0 1]       [0 0 1]       [0 0 1]       [0 0 0]      [1]
                                                           [1 0 1] @futurequeue + [0 1 2] @t1 + [0 1 2] @t2 + [0 0 1] @ts + [0 1 1] @x + [2]
                                                           [0 0 0]                [0 0 0]       [0 0 0]       [0 1 0]       [1 0 1]      [1]
                                                        >= [1 0 1]                [0 0 1]       [0 0 1]       [0 0 1]       [1]             
                                                           [1 0 1] @futurequeue + [0 0 1] @t1 + [0 0 1] @t2 + [0 0 1] @ts + [2]             
                                                           [0 0 0]                [0 0 0]       [0 0 0]       [0 0 0]       [0]             
                                                        =  c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))                       
        
        bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) =  [1 0 1]                [0 0 1]       [0 0 1]       [0 0 1]       [0 0 0]      [1]
                                                           [0 0 1] @futurequeue + [0 0 1] @t1 + [1 0 1] @t2 + [1 1 1] @ts + [1 1 1] @x + [2]
                                                           [1 0 0]                [0 1 0]       [1 0 1]       [0 0 1]       [0 0 1]      [0]
                                                        >= [0 0 1]                [0 0 1]       [0 0 1]       [0 0 1]       [0 0 0]      [1]
                                                           [0 0 1] @futurequeue + [0 0 1] @t1 + [0 0 1] @t2 + [0 0 1] @ts + [1 0 0] @x + [1]
                                                           [0 0 0]                [0 0 0]       [0 0 0]       [0 0 1]       [0 0 0]      [0]
                                                        =  c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))                                  
        
                                           bfs2#(@t,@x) =  [1 1 1]      [1 1 1]      [1]                                                    
                                                           [1 0 1] @t + [1 0 1] @x + [1]                                                    
                                                           [0 0 0]      [0 1 0]      [0]                                                    
                                                        >= [0 1 1]      [1 1 1]      [1]                                                    
                                                           [0 0 1] @t + [0 0 0] @x + [1]                                                    
                                                           [0 0 0]      [0 0 0]      [0]                                                    
                                                        =  c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))                                     
        
                                        bfs2#1#(@t',@x) =  [0 0 1]       [0]                                                                
                                                           [1 0 1] @t' + [1]                                                                
                                                           [0 1 0]       [1]                                                                
                                                        >= [0 0 1]       [0]                                                                
                                                           [0 0 0] @t' + [1]                                                                
                                                           [0 0 0]       [0]                                                                
                                                        =  c_15(dobfs#(@t',@x))                                                             
        
                                          dobfs#(@t,@x) =  [0 0 1]      [0]                                                                 
                                                           [0 1 0] @t + [1]                                                                 
                                                           [0 0 1]      [0]                                                                 
                                                        >= [0 0 1]      [0]                                                                 
                                                           [0 0 0] @t + [0]                                                                 
                                                           [0 0 1]      [0]                                                                 
                                                        =  c_23(bfs#(::(@t,nil()),nil(),@x))                                                
        
                                #and(#false(),#false()) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #false()                                                                         
        
                                 #and(#false(),#true()) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #false()                                                                         
        
                                 #and(#true(),#false()) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #false()                                                                         
        
                                  #and(#true(),#true()) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [0]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #true()                                                                          
        
                                         #eq(#0(),#0()) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [0]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #true()                                                                          
        
                                     #eq(#0(),#neg(@y)) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #false()                                                                         
        
                                     #eq(#0(),#pos(@y)) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #false()                                                                         
        
                                       #eq(#0(),#s(@y)) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #false()                                                                         
        
                                     #eq(#neg(@x),#0()) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #false()                                                                         
        
                                 #eq(#neg(@x),#neg(@y)) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #eq(@x,@y)                                                                       
        
                                 #eq(#neg(@x),#pos(@y)) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #false()                                                                         
        
                                     #eq(#pos(@x),#0()) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #false()                                                                         
        
                                 #eq(#pos(@x),#neg(@y)) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #false()                                                                         
        
                                 #eq(#pos(@x),#pos(@y)) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #eq(@x,@y)                                                                       
        
                                       #eq(#s(@x),#0()) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #false()                                                                         
        
                                     #eq(#s(@x),#s(@y)) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #eq(@x,@y)                                                                       
        
                       #eq(::(@x_1,@x_2),::(@y_1,@y_2)) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))                                              
        
                              #eq(::(@x_1,@x_2),leaf()) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #false()                                                                         
        
                               #eq(::(@x_1,@x_2),nil()) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #false()                                                                         
        
                #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #false()                                                                         
        
                              #eq(leaf(),::(@y_1,@y_2)) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #false()                                                                         
        
                                     #eq(leaf(),leaf()) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [0]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #true()                                                                          
        
                                      #eq(leaf(),nil()) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #false()                                                                         
        
                       #eq(leaf(),node(@y_1,@y_2,@y_3)) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #false()                                                                         
        
                               #eq(nil(),::(@y_1,@y_2)) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #false()                                                                         
        
                                      #eq(nil(),leaf()) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #false()                                                                         
        
                                       #eq(nil(),nil()) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [0]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #true()                                                                          
        
                        #eq(nil(),node(@y_1,@y_2,@y_3)) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #false()                                                                         
        
                #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #false()                                                                         
        
                       #eq(node(@x_1,@x_2,@x_3),leaf()) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #false()                                                                         
        
                        #eq(node(@x_1,@x_2,@x_3),nil()) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #false()                                                                         
        
         #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) =  [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        >= [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))                         
        
                                          #equal(@x,@y) =  [0 0 0]      [0 0 0]      [1]                                                    
                                                           [1 1 1] @x + [1 0 0] @y + [0]                                                    
                                                           [0 0 1]      [1 0 0]      [0]                                                    
                                                        >= [1]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  #eq(@x,@y)                                                                       
        
                       appendreverse(@toreverse,@sofar) =  [1 0 0]          [0 1 0]              [0]                                        
                                                           [0 1 0] @sofar + [0 1 0] @toreverse + [0]                                        
                                                           [0 0 1]          [0 0 1]              [0]                                        
                                                        >= [1 0 0]          [0 1 0]              [0]                                        
                                                           [0 1 0] @sofar + [0 1 0] @toreverse + [0]                                        
                                                           [0 0 1]          [0 0 1]              [0]                                        
                                                        =  appendreverse#1(@toreverse,@sofar)                                               
        
                     appendreverse#1(::(@a,@as),@sofar) =  [0 1 0]      [0 1 0]       [1 0 0]          [1]                                  
                                                           [0 1 0] @a + [0 1 0] @as + [0 1 0] @sofar + [1]                                  
                                                           [0 0 1]      [0 0 1]       [0 0 1]          [0]                                  
                                                        >= [0 0 0]      [0 1 0]       [0 0 0]          [1]                                  
                                                           [0 1 0] @a + [0 1 0] @as + [0 1 0] @sofar + [1]                                  
                                                           [0 0 1]      [0 0 1]       [0 0 1]          [0]                                  
                                                        =  appendreverse(@as,::(@a,@sofar))                                                 
        
                          appendreverse#1(nil(),@sofar) =  [1 0 0]          [0]                                                             
                                                           [0 1 0] @sofar + [0]                                                             
                                                           [0 0 1]          [0]                                                             
                                                        >= [1 0 0]          [0]                                                             
                                                           [0 1 0] @sofar + [0]                                                             
                                                           [0 0 1]          [0]                                                             
                                                        =  @sofar                                                                           
        
                            bfs(@queue,@futurequeue,@x) =  [0 0 0]                [0 0 0]          [0 1 0]      [0]                         
                                                           [0 1 0] @futurequeue + [0 1 0] @queue + [0 0 0] @x + [0]                         
                                                           [0 1 0]                [0 1 0]          [0 0 0]      [0]                         
                                                        >= [0 0 0]                [0 0 0]          [0 1 0]      [0]                         
                                                           [0 1 0] @futurequeue + [0 1 0] @queue + [0 0 0] @x + [0]                         
                                                           [0 1 0]                [0 1 0]          [0 0 0]      [0]                         
                                                        =  bfs#1(@queue,@futurequeue,@x)                                                    
        
                      bfs#1(::(@t,@ts),@futurequeue,@x) =  [0 0 0]                [0 0 0]      [0 0 0]       [0 1 0]      [0]               
                                                           [0 1 0] @futurequeue + [0 1 0] @t + [0 1 0] @ts + [0 0 0] @x + [1]               
                                                           [0 1 0]                [0 1 0]      [0 1 0]       [0 0 0]      [1]               
                                                        >= [0 0 0]                [0 0 0]      [0 0 0]       [0 1 0]      [0]               
                                                           [0 1 0] @futurequeue + [0 1 0] @t + [0 1 0] @ts + [0 0 0] @x + [1]               
                                                           [0 1 0]                [0 1 0]      [0 1 0]       [0 0 0]      [1]               
                                                        =  bfs#3(@t,@futurequeue,@ts,@x)                                                    
        
                           bfs#1(nil(),@futurequeue,@x) =  [0 0 0]                [0 1 0]      [0]                                          
                                                           [0 1 0] @futurequeue + [0 0 0] @x + [0]                                          
                                                           [0 1 0]                [0 0 0]      [0]                                          
                                                        >= [0 0 0]                [0 1 0]      [0]                                          
                                                           [0 1 0] @futurequeue + [0 0 0] @x + [0]                                          
                                                           [0 1 0]                [0 0 0]      [0]                                          
                                                        =  bfs#2(@futurequeue,@x)                                                           
        
                                   bfs#2(::(@t,@ts),@x) =  [0 0 0]      [0 0 0]       [0 1 0]      [0]                                      
                                                           [0 1 0] @t + [0 1 0] @ts + [0 0 0] @x + [1]                                      
                                                           [0 1 0]      [0 1 0]       [0 0 0]      [1]                                      
                                                        >= [0 0 0]      [0 0 0]       [0 1 0]      [0]                                      
                                                           [0 1 0] @t + [0 1 0] @ts + [0 0 0] @x + [1]                                      
                                                           [0 1 0]      [0 1 0]       [0 0 0]      [1]                                      
                                                        =  bfs(reverse(::(@t,@ts)),nil(),@x)                                                
        
                                        bfs#2(nil(),@x) =  [0 1 0]      [0]                                                                 
                                                           [0 0 0] @x + [0]                                                                 
                                                           [0 0 0]      [0]                                                                 
                                                        >= [0]                                                                              
                                                           [0]                                                                              
                                                           [0]                                                                              
                                                        =  leaf()                                                                           
        
                      bfs#3(leaf(),@futurequeue,@ts,@x) =  [0 0 0]                [0 0 0]       [0 1 0]      [0]                            
                                                           [0 1 0] @futurequeue + [0 1 0] @ts + [0 0 0] @x + [1]                            
                                                           [0 1 0]                [0 1 0]       [0 0 0]      [1]                            
                                                        >= [0 0 0]                [0 0 0]       [0 1 0]      [0]                            
                                                           [0 1 0] @futurequeue + [0 1 0] @ts + [0 0 0] @x + [0]                            
                                                           [0 1 0]                [0 1 0]       [0 0 0]      [0]                            
                                                        =  bfs(@ts,@futurequeue,@x)                                                         
        
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) =  [0 0 0]                [0 0 0]       [0 0 0]       [0 0 0]       [0 1 0]      [0]
                                                           [0 1 0] @futurequeue + [0 1 1] @t1 + [0 1 1] @t2 + [0 1 0] @ts + [0 0 0] @x + [2]
                                                           [0 1 0]                [0 1 1]       [0 1 1]       [0 1 0]       [0 0 0]      [2]
                                                        >= [0 0 0]                [0 0 0]       [0 0 0]       [0 0 0]       [0 1 0]      [0]
                                                           [0 1 0] @futurequeue + [0 1 1] @t1 + [0 1 1] @t2 + [0 1 0] @ts + [0 0 0] @x + [2]
                                                           [0 1 0]                [0 1 1]       [0 1 1]       [0 1 0]       [0 0 0]      [2]
                                                        =  bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)                              
        
         bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) =  [0 0 0]                [0 0 0]       [0 0 0]       [0 0 0]       [0 1 0]      [0]
                                                           [0 1 0] @futurequeue + [0 1 1] @t1 + [0 1 1] @t2 + [0 1 0] @ts + [0 0 0] @x + [2]
                                                           [0 1 0]                [0 1 1]       [0 1 1]       [0 1 0]       [0 0 0]      [2]
                                                        >= [0 0 0]                [0 0 0]       [0 0 0]       [0 0 0]       [0 1 0]      [0]
                                                           [0 1 0] @futurequeue + [0 1 0] @t1 + [0 1 0] @t2 + [0 1 0] @ts + [0 0 0] @x + [2]
                                                           [0 1 0]                [0 1 0]       [0 1 0]       [0 1 0]       [0 0 0]      [2]
                                                        =  bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)                                         
        
          bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) =  [0 0 0]                [0 0 0]       [0 0 0]       [0 0 0]       [0 1 0]      [0]
                                                           [0 1 0] @futurequeue + [0 1 1] @t1 + [0 1 1] @t2 + [0 1 0] @ts + [0 0 0] @x + [1]
                                                           [0 1 0]                [0 1 1]       [0 1 1]       [0 1 0]       [0 0 0]      [1]
                                                        >= [0 0 0]       [0 0 0]       [0]                                                  
                                                           [0 1 1] @t1 + [0 1 1] @t2 + [1]                                                  
                                                           [0 0 1]       [0 0 1]       [1]                                                  
                                                        =  node(@y,@t1,@t2)                                                                 
        
                                           dobfs(@t,@x) =  [0 1 1]      [0 1 0]      [0]                                                    
                                                           [1 1 0] @t + [0 0 1] @x + [1]                                                    
                                                           [0 1 0]      [1 1 1]      [1]                                                    
                                                        >= [0 0 0]      [0 1 0]      [0]                                                    
                                                           [0 1 0] @t + [0 0 0] @x + [1]                                                    
                                                           [0 1 0]      [0 0 0]      [1]                                                    
                                                        =  bfs(::(@t,nil()),nil(),@x)                                                       
        
                                           reverse(@xs) =  [0 1 0]       [0]                                                                
                                                           [0 1 0] @xs + [0]                                                                
                                                           [0 0 1]       [0]                                                                
                                                        >= [0 1 0]       [0]                                                                
                                                           [0 1 0] @xs + [0]                                                                
                                                           [0 0 1]       [0]                                                                
                                                        =  appendreverse(@xs,nil())                                                         
        
******* Step 8.b:4.a:2.b:1.b:1.b:1.a:2: Assumption WORST_CASE(?,O(1))
    + Considered Problem:
        - Strict DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
        - Weak DPs:
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
    + Details:
        ()

******* Step 8.b:4.a:2.b:1.b:1.b:1.b:1: MI WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
        - Weak DPs:
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        MI {miKind = MaximalMatrix (UpperTriangular (Multiplicity Nothing)), miDimension = 2, miUArgs = UArgs, miURules = URules, miSelector = Just any strict-rules}
    + Details:
        We apply a matrix interpretation of kind MaximalMatrix (UpperTriangular (Multiplicity Nothing)):
        
        The following argument positions are considered usable:
          uargs(c_5) = {1},
          uargs(c_6) = {1},
          uargs(c_7) = {1},
          uargs(c_8) = {1},
          uargs(c_10) = {1},
          uargs(c_11) = {1},
          uargs(c_12) = {1},
          uargs(c_14) = {1,2},
          uargs(c_15) = {1},
          uargs(c_23) = {1}
        
        Following symbols are considered usable:
          {appendreverse,appendreverse#1,bfs,bfs#1,bfs#2,bfs#3,bfs#4,dobfs,reverse,#and#,#eq#,#equal#,appendreverse#
          ,appendreverse#1#,bfs#,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
          ,reverse#}
        TcT has computed the following interpretation:
                        p(#0) = [0]                                                                        
                                [0]                                                                        
                      p(#and) = [0 2] x_2 + [0]                                                            
                                [0 1]       [1]                                                            
                       p(#eq) = [0]                                                                        
                                [0]                                                                        
                    p(#equal) = [0]                                                                        
                                [0]                                                                        
                    p(#false) = [0]                                                                        
                                [0]                                                                        
                      p(#neg) = [1 0] x_1 + [0]                                                            
                                [0 0]       [0]                                                            
                      p(#pos) = [1 0] x_1 + [0]                                                            
                                [0 1]       [0]                                                            
                        p(#s) = [1 1] x_1 + [0]                                                            
                                [0 0]       [2]                                                            
                     p(#true) = [0]                                                                        
                                [0]                                                                        
                        p(::) = [1 0] x_1 + [1 0] x_2 + [0]                                                
                                [0 0]       [0 1]       [1]                                                
             p(appendreverse) = [1 0] x_1 + [1 0] x_2 + [0]                                                
                                [0 2]       [0 1]       [0]                                                
           p(appendreverse#1) = [1 0] x_1 + [1 0] x_2 + [0]                                                
                                [0 2]       [0 1]       [0]                                                
                       p(bfs) = [1 0] x_1 + [1 0] x_2 + [0]                                                
                                [0 0]       [0 0]       [2]                                                
                     p(bfs#1) = [1 0] x_1 + [1 0] x_2 + [0]                                                
                                [0 0]       [0 0]       [2]                                                
                     p(bfs#2) = [1 0] x_1 + [0]                                                            
                                [0 0]       [2]                                                            
                     p(bfs#3) = [1 0] x_1 + [1 0] x_2 + [1 0] x_3 + [0]                                    
                                [0 0]       [0 0]       [0 0]       [2]                                    
                     p(bfs#4) = [1 0] x_2 + [1 0] x_3 + [1 0] x_4 + [1 0] x_5 + [2]                        
                                [0 0]       [0 0]       [0 0]       [0 0]       [2]                        
                      p(bfs2) = [2 0] x_1 + [0 0] x_2 + [0]                                                
                                [2 2]       [0 1]       [2]                                                
                    p(bfs2#1) = [0]                                                                        
                                [0]                                                                        
                       p(dfs) = [0 0] x_1 + [0]                                                            
                                [1 0]       [1]                                                            
                     p(dfs#1) = [0]                                                                        
                                [0]                                                                        
                     p(dfs#2) = [0 0] x_1 + [1 0] x_3 + [1]                                                
                                [0 1]       [0 0]       [2]                                                
                     p(dfs#3) = [0 1] x_1 + [0 0] x_4 + [0 1] x_5 + [0 0] x_6 + [0]                        
                                [0 1]       [2 0]       [2 0]       [0 2]       [0]                        
                     p(dobfs) = [1 1] x_1 + [1 0] x_2 + [0]                                                
                                [1 0]       [0 0]       [2]                                                
                     p(dodfs) = [0 0] x_1 + [1]                                                            
                                [0 1]       [1]                                                            
                      p(leaf) = [0]                                                                        
                                [2]                                                                        
                       p(nil) = [0]                                                                        
                                [0]                                                                        
                      p(node) = [1 0] x_2 + [1 0] x_3 + [2]                                                
                                [0 0]       [0 0]       [0]                                                
                   p(reverse) = [1 0] x_1 + [0]                                                            
                                [0 2]       [0]                                                            
                     p(#and#) = [2]                                                                        
                                [0]                                                                        
                      p(#eq#) = [1 2] x_1 + [0]                                                            
                                [0 0]       [2]                                                            
                   p(#equal#) = [1 0] x_2 + [1]                                                            
                                [1 0]       [0]                                                            
            p(appendreverse#) = [0 0] x_2 + [0]                                                            
                                [0 2]       [0]                                                            
          p(appendreverse#1#) = [2]                                                                        
                                [0]                                                                        
                      p(bfs#) = [1 0] x_1 + [1 1] x_2 + [0 0] x_3 + [1]                                    
                                [0 2]       [0 0]       [0 2]       [0]                                    
                    p(bfs#1#) = [1 0] x_1 + [1 1] x_2 + [0 0] x_3 + [1]                                    
                                [3 1]       [3 3]       [3 0]       [2]                                    
                    p(bfs#2#) = [1 1] x_1 + [0 0] x_2 + [0]                                                
                                [0 0]       [1 0]       [1]                                                
                    p(bfs#3#) = [1 0] x_1 + [1 1] x_2 + [1 0] x_3 + [1]                                    
                                [0 3]       [3 3]       [3 3]       [0]                                    
                    p(bfs#4#) = [1 1] x_2 + [1 0] x_3 + [1 0] x_4 + [1 0] x_5 + [0 0] x_6 + [0 0] x_7 + [3]
                                [0 1]       [1 0]       [0 2]       [0 0]       [0 1]       [0 2]       [1]
                     p(bfs2#) = [3 3] x_1 + [3 3] x_2 + [3]                                                
                                [3 1]       [3 2]       [3]                                                
                   p(bfs2#1#) = [2 0] x_1 + [1 2] x_2 + [2]                                                
                                [0 0]       [0 2]       [2]                                                
                      p(dfs#) = [0 0] x_1 + [2 0] x_2 + [2]                                                
                                [2 0]       [0 1]       [1]                                                
                    p(dfs#1#) = [0 2] x_2 + [0]                                                            
                                [0 0]       [0]                                                            
                    p(dfs#2#) = [0 2] x_1 + [0 0] x_3 + [0]                                                
                                [0 1]       [0 1]       [1]                                                
                    p(dfs#3#) = [0 0] x_1 + [0 0] x_3 + [0]                                                
                                [0 2]       [0 2]       [1]                                                
                    p(dobfs#) = [1 0] x_1 + [0 1] x_2 + [1]                                                
                                [2 1]       [2 0]       [2]                                                
                    p(dodfs#) = [1 1] x_1 + [1 0] x_2 + [2]                                                
                                [0 2]       [0 0]       [0]                                                
                  p(reverse#) = [0 2] x_1 + [0]                                                            
                                [1 1]       [0]                                                            
                       p(c_1) = [0]                                                                        
                                [0]                                                                        
                       p(c_2) = [0]                                                                        
                                [2]                                                                        
                       p(c_3) = [2 2] x_1 + [0]                                                            
                                [0 0]       [0]                                                            
                       p(c_4) = [1]                                                                        
                                [2]                                                                        
                       p(c_5) = [1 0] x_1 + [0]                                                            
                                [0 0]       [0]                                                            
                       p(c_6) = [1 0] x_1 + [0]                                                            
                                [3 0]       [0]                                                            
                       p(c_7) = [1 0] x_1 + [0]                                                            
                                [0 2]       [0]                                                            
                       p(c_8) = [1 0] x_1 + [0]                                                            
                                [0 0]       [1]                                                            
                       p(c_9) = [0]                                                                        
                                [0]                                                                        
                      p(c_10) = [1 0] x_1 + [0]                                                            
                                [3 0]       [3]                                                            
                      p(c_11) = [1 0] x_1 + [0]                                                            
                                [0 0]       [0]                                                            
                      p(c_12) = [1 0] x_1 + [0]                                                            
                                [0 0]       [1]                                                            
                      p(c_13) = [0]                                                                        
                                [1]                                                                        
                      p(c_14) = [1 0] x_1 + [1 0] x_2 + [0]                                                
                                [0 0]       [1 1]       [0]                                                
                      p(c_15) = [2 0] x_1 + [0]                                                            
                                [0 0]       [2]                                                            
                      p(c_16) = [0]                                                                        
                                [0]                                                                        
                      p(c_17) = [0]                                                                        
                                [0]                                                                        
                      p(c_18) = [1]                                                                        
                                [0]                                                                        
                      p(c_19) = [2 1] x_1 + [0]                                                            
                                [0 0]       [0]                                                            
                      p(c_20) = [2 0] x_1 + [1]                                                            
                                [2 0]       [2]                                                            
                      p(c_21) = [0 2] x_1 + [1]                                                            
                                [0 0]       [2]                                                            
                      p(c_22) = [0]                                                                        
                                [0]                                                                        
                      p(c_23) = [1 0] x_1 + [0]                                                            
                                [0 0]       [0]                                                            
                      p(c_24) = [0 0] x_1 + [1]                                                            
                                [0 1]       [0]                                                            
                      p(c_25) = [1]                                                                        
                                [2]                                                                        
                      p(c_26) = [0]                                                                        
                                [2]                                                                        
                      p(c_27) = [2]                                                                        
                                [1]                                                                        
                      p(c_28) = [0]                                                                        
                                [2]                                                                        
                      p(c_29) = [2]                                                                        
                                [2]                                                                        
                      p(c_30) = [1]                                                                        
                                [0]                                                                        
                      p(c_31) = [1]                                                                        
                                [0]                                                                        
                      p(c_32) = [0]                                                                        
                                [0]                                                                        
                      p(c_33) = [0]                                                                        
                                [0]                                                                        
                      p(c_34) = [1]                                                                        
                                [0]                                                                        
                      p(c_35) = [1]                                                                        
                                [2]                                                                        
                      p(c_36) = [0]                                                                        
                                [1]                                                                        
                      p(c_37) = [1]                                                                        
                                [1]                                                                        
                      p(c_38) = [0]                                                                        
                                [0]                                                                        
                      p(c_39) = [1 0] x_1 + [2]                                                            
                                [0 0]       [2]                                                            
                      p(c_40) = [2]                                                                        
                                [0]                                                                        
                      p(c_41) = [0]                                                                        
                                [2]                                                                        
                      p(c_42) = [0 2] x_1 + [1 2] x_3 + [0]                                                
                                [2 2]       [0 1]       [2]                                                
                      p(c_43) = [0]                                                                        
                                [0]                                                                        
                      p(c_44) = [0]                                                                        
                                [2]                                                                        
                      p(c_45) = [2]                                                                        
                                [2]                                                                        
                      p(c_46) = [0]                                                                        
                                [1]                                                                        
                      p(c_47) = [0]                                                                        
                                [0]                                                                        
                      p(c_48) = [0]                                                                        
                                [0]                                                                        
                      p(c_49) = [0]                                                                        
                                [2]                                                                        
                      p(c_50) = [1]                                                                        
                                [0]                                                                        
                      p(c_51) = [2]                                                                        
                                [0]                                                                        
                      p(c_52) = [0]                                                                        
                                [0]                                                                        
                      p(c_53) = [1]                                                                        
                                [1]                                                                        
                      p(c_54) = [0]                                                                        
                                [0]                                                                        
                      p(c_55) = [0]                                                                        
                                [0]                                                                        
                      p(c_56) = [0]                                                                        
                                [2]                                                                        
                      p(c_57) = [0 0] x_1 + [0]                                                            
                                [0 1]       [0]                                                            
        
        Following rules are strictly oriented:
        bfs#1#(nil(),@futurequeue,@x) = [1 1] @futurequeue + [0 0] @x + [1]
                                        [3 3]                [3 0]      [2]
                                      > [1 1] @futurequeue + [0 0] @x + [0]
                                        [0 0]                [2 0]      [2]
                                      = c_7(bfs#2#(@futurequeue,@x))       
        
        
        Following rules are (at-least) weakly oriented:
                           bfs#(@queue,@futurequeue,@x) =  [1 1] @futurequeue + [1 0] @queue + [0 0] @x + [1]                                
                                                           [0 0]                [0 2]          [0 2]      [0]                                
                                                        >= [1 1] @futurequeue + [1 0] @queue + [1]                                           
                                                           [0 0]                [0 0]          [0]                                           
                                                        =  c_5(bfs#1#(@queue,@futurequeue,@x))                                               
        
                     bfs#1#(::(@t,@ts),@futurequeue,@x) =  [1 1] @futurequeue + [1 0] @t + [1 0] @ts + [0 0] @x + [1]                        
                                                           [3 3]                [3 0]      [3 1]       [3 0]      [3]                        
                                                        >= [1 1] @futurequeue + [1 0] @t + [1 0] @ts + [1]                                   
                                                           [3 3]                [3 0]      [3 0]       [3]                                   
                                                        =  c_6(bfs#3#(@t,@futurequeue,@ts,@x))                                               
        
                                  bfs#2#(::(@t,@ts),@x) =  [1 0] @t + [1 1] @ts + [0 0] @x + [1]                                             
                                                           [0 0]      [0 0]       [1 0]      [1]                                             
                                                        >= [1 0] @t + [1 0] @ts + [1]                                                        
                                                           [0 0]      [0 0]       [1]                                                        
                                                        =  c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))                                           
        
                     bfs#3#(leaf(),@futurequeue,@ts,@x) =  [1 1] @futurequeue + [1 0] @ts + [1]                                              
                                                           [3 3]                [3 3]       [6]                                              
                                                        >= [1 1] @futurequeue + [1 0] @ts + [1]                                              
                                                           [3 3]                [3 0]       [6]                                              
                                                        =  c_10(bfs#(@ts,@futurequeue,@x))                                                   
        
           bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) =  [1 1] @futurequeue + [1 0] @t1 + [1 0] @t2 + [1 0] @ts + [3]                      
                                                           [3 3]                [0 0]       [0 0]       [3 3]       [0]                      
                                                        >= [1 1] @futurequeue + [1 0] @t1 + [1 0] @t2 + [1 0] @ts + [3]                      
                                                           [0 0]                [0 0]       [0 0]       [0 0]       [0]                      
                                                        =  c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))                        
        
        bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) =  [1 1] @futurequeue + [1 0] @t1 + [1 0] @t2 + [1 0] @ts + [0 0] @x + [0 0] @y + [3]
                                                           [0 1]                [1 0]       [0 2]       [0 0]       [0 1]      [0 2]      [1]
                                                        >= [1 1] @futurequeue + [1 0] @t1 + [1 0] @t2 + [1 0] @ts + [3]                      
                                                           [0 0]                [0 0]       [0 0]       [0 0]       [1]                      
                                                        =  c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))                                   
        
                                           bfs2#(@t,@x) =  [3 3] @t + [3 3] @x + [3]                                                         
                                                           [3 1]      [3 2]      [3]                                                         
                                                        >= [3 2] @t + [3 3] @x + [3]                                                         
                                                           [3 1]      [2 1]      [3]                                                         
                                                        =  c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))                                      
        
                                        bfs2#1#(@t',@x) =  [2 0] @t' + [1 2] @x + [2]                                                        
                                                           [0 0]       [0 2]      [2]                                                        
                                                        >= [2 0] @t' + [0 2] @x + [2]                                                        
                                                           [0 0]       [0 0]      [2]                                                        
                                                        =  c_15(dobfs#(@t',@x))                                                              
        
                                          dobfs#(@t,@x) =  [1 0] @t + [0 1] @x + [1]                                                         
                                                           [2 1]      [2 0]      [2]                                                         
                                                        >= [1 0] @t + [1]                                                                    
                                                           [0 0]      [0]                                                                    
                                                        =  c_23(bfs#(::(@t,nil()),nil(),@x))                                                 
        
                       appendreverse(@toreverse,@sofar) =  [1 0] @sofar + [1 0] @toreverse + [0]                                             
                                                           [0 1]          [0 2]              [0]                                             
                                                        >= [1 0] @sofar + [1 0] @toreverse + [0]                                             
                                                           [0 1]          [0 2]              [0]                                             
                                                        =  appendreverse#1(@toreverse,@sofar)                                                
        
                     appendreverse#1(::(@a,@as),@sofar) =  [1 0] @a + [1 0] @as + [1 0] @sofar + [0]                                         
                                                           [0 0]      [0 2]       [0 1]          [2]                                         
                                                        >= [1 0] @a + [1 0] @as + [1 0] @sofar + [0]                                         
                                                           [0 0]      [0 2]       [0 1]          [1]                                         
                                                        =  appendreverse(@as,::(@a,@sofar))                                                  
        
                          appendreverse#1(nil(),@sofar) =  [1 0] @sofar + [0]                                                                
                                                           [0 1]          [0]                                                                
                                                        >= [1 0] @sofar + [0]                                                                
                                                           [0 1]          [0]                                                                
                                                        =  @sofar                                                                            
        
                            bfs(@queue,@futurequeue,@x) =  [1 0] @futurequeue + [1 0] @queue + [0]                                           
                                                           [0 0]                [0 0]          [2]                                           
                                                        >= [1 0] @futurequeue + [1 0] @queue + [0]                                           
                                                           [0 0]                [0 0]          [2]                                           
                                                        =  bfs#1(@queue,@futurequeue,@x)                                                     
        
                      bfs#1(::(@t,@ts),@futurequeue,@x) =  [1 0] @futurequeue + [1 0] @t + [1 0] @ts + [0]                                   
                                                           [0 0]                [0 0]      [0 0]       [2]                                   
                                                        >= [1 0] @futurequeue + [1 0] @t + [1 0] @ts + [0]                                   
                                                           [0 0]                [0 0]      [0 0]       [2]                                   
                                                        =  bfs#3(@t,@futurequeue,@ts,@x)                                                     
        
                           bfs#1(nil(),@futurequeue,@x) =  [1 0] @futurequeue + [0]                                                          
                                                           [0 0]                [2]                                                          
                                                        >= [1 0] @futurequeue + [0]                                                          
                                                           [0 0]                [2]                                                          
                                                        =  bfs#2(@futurequeue,@x)                                                            
        
                                   bfs#2(::(@t,@ts),@x) =  [1 0] @t + [1 0] @ts + [0]                                                        
                                                           [0 0]      [0 0]       [2]                                                        
                                                        >= [1 0] @t + [1 0] @ts + [0]                                                        
                                                           [0 0]      [0 0]       [2]                                                        
                                                        =  bfs(reverse(::(@t,@ts)),nil(),@x)                                                 
        
                                        bfs#2(nil(),@x) =  [0]                                                                               
                                                           [2]                                                                               
                                                        >= [0]                                                                               
                                                           [2]                                                                               
                                                        =  leaf()                                                                            
        
                      bfs#3(leaf(),@futurequeue,@ts,@x) =  [1 0] @futurequeue + [1 0] @ts + [0]                                              
                                                           [0 0]                [0 0]       [2]                                              
                                                        >= [1 0] @futurequeue + [1 0] @ts + [0]                                              
                                                           [0 0]                [0 0]       [2]                                              
                                                        =  bfs(@ts,@futurequeue,@x)                                                          
        
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) =  [1 0] @futurequeue + [1 0] @t1 + [1 0] @t2 + [1 0] @ts + [2]                      
                                                           [0 0]                [0 0]       [0 0]       [0 0]       [2]                      
                                                        >= [1 0] @futurequeue + [1 0] @t1 + [1 0] @t2 + [1 0] @ts + [2]                      
                                                           [0 0]                [0 0]       [0 0]       [0 0]       [2]                      
                                                        =  bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)                               
        
         bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) =  [1 0] @futurequeue + [1 0] @t1 + [1 0] @t2 + [1 0] @ts + [2]                      
                                                           [0 0]                [0 0]       [0 0]       [0 0]       [2]                      
                                                        >= [1 0] @futurequeue + [1 0] @t1 + [1 0] @t2 + [1 0] @ts + [0]                      
                                                           [0 0]                [0 0]       [0 0]       [0 0]       [2]                      
                                                        =  bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)                                          
        
          bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) =  [1 0] @futurequeue + [1 0] @t1 + [1 0] @t2 + [1 0] @ts + [2]                      
                                                           [0 0]                [0 0]       [0 0]       [0 0]       [2]                      
                                                        >= [1 0] @t1 + [1 0] @t2 + [2]                                                       
                                                           [0 0]       [0 0]       [0]                                                       
                                                        =  node(@y,@t1,@t2)                                                                  
        
                                           dobfs(@t,@x) =  [1 1] @t + [1 0] @x + [0]                                                         
                                                           [1 0]      [0 0]      [2]                                                         
                                                        >= [1 0] @t + [0]                                                                    
                                                           [0 0]      [2]                                                                    
                                                        =  bfs(::(@t,nil()),nil(),@x)                                                        
        
                                           reverse(@xs) =  [1 0] @xs + [0]                                                                   
                                                           [0 2]       [0]                                                                   
                                                        >= [1 0] @xs + [0]                                                                   
                                                           [0 2]       [0]                                                                   
                                                        =  appendreverse(@xs,nil())                                                          
        
******* Step 8.b:4.a:2.b:1.b:1.b:1.b:2: MI WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
        - Weak DPs:
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        MI {miKind = MaximalMatrix (UpperTriangular (Multiplicity Nothing)), miDimension = 2, miUArgs = UArgs, miURules = URules, miSelector = Just any strict-rules}
    + Details:
        We apply a matrix interpretation of kind MaximalMatrix (UpperTriangular (Multiplicity Nothing)):
        
        The following argument positions are considered usable:
          uargs(c_5) = {1},
          uargs(c_6) = {1},
          uargs(c_7) = {1},
          uargs(c_8) = {1},
          uargs(c_10) = {1},
          uargs(c_11) = {1},
          uargs(c_12) = {1},
          uargs(c_14) = {1,2},
          uargs(c_15) = {1},
          uargs(c_23) = {1}
        
        Following symbols are considered usable:
          {appendreverse,appendreverse#1,bfs,bfs#1,bfs#2,bfs#3,bfs#4,dobfs,reverse,#and#,#eq#,#equal#,appendreverse#
          ,appendreverse#1#,bfs#,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
          ,reverse#}
        TcT has computed the following interpretation:
                        p(#0) = [2]                                                            
                                [1]                                                            
                      p(#and) = [0 0] x_1 + [1 0] x_2 + [0]                                    
                                [1 0]       [2 0]       [0]                                    
                       p(#eq) = [1 2] x_2 + [0]                                                
                                [0 0]       [0]                                                
                    p(#equal) = [0 0] x_2 + [0]                                                
                                [1 0]       [0]                                                
                    p(#false) = [0]                                                            
                                [0]                                                            
                      p(#neg) = [0 3] x_1 + [0]                                                
                                [0 1]       [1]                                                
                      p(#pos) = [1 0] x_1 + [0]                                                
                                [0 0]       [0]                                                
                        p(#s) = [0 1] x_1 + [2]                                                
                                [0 0]       [0]                                                
                     p(#true) = [0]                                                            
                                [0]                                                            
                        p(::) = [0 0] x_1 + [1 0] x_2 + [1]                                    
                                [0 1]       [0 1]       [0]                                    
             p(appendreverse) = [2 0] x_1 + [2 0] x_2 + [2]                                    
                                [0 1]       [0 1]       [0]                                    
           p(appendreverse#1) = [2 0] x_1 + [2 0] x_2 + [2]                                    
                                [0 1]       [0 1]       [0]                                    
                       p(bfs) = [0 0] x_1 + [0 0] x_2 + [0]                                    
                                [0 1]       [0 1]       [1]                                    
                     p(bfs#1) = [0 0] x_1 + [0 0] x_2 + [0]                                    
                                [0 1]       [0 1]       [1]                                    
                     p(bfs#2) = [0 0] x_1 + [0]                                                
                                [0 1]       [1]                                                
                     p(bfs#3) = [0 0] x_1 + [0 0] x_2 + [0 0] x_3 + [0]                        
                                [0 1]       [0 1]       [0 1]       [1]                        
                     p(bfs#4) = [0 0] x_2 + [0 0] x_3 + [0 0] x_4 + [0 0] x_5 + [0]            
                                [0 1]       [0 1]       [0 1]       [0 1]       [3]            
                      p(bfs2) = [1 0] x_2 + [0]                                                
                                [0 2]       [0]                                                
                    p(bfs2#1) = [0 2] x_1 + [0]                                                
                                [0 1]       [0]                                                
                       p(dfs) = [1]                                                            
                                [0]                                                            
                     p(dfs#1) = [0 0] x_2 + [0]                                                
                                [1 1]       [2]                                                
                     p(dfs#2) = [2 2] x_3 + [2 0] x_4 + [1]                                    
                                [0 0]       [0 2]       [0]                                    
                     p(dfs#3) = [0 0] x_4 + [1]                                                
                                [0 1]       [1]                                                
                     p(dobfs) = [1 0] x_1 + [1 1] x_2 + [2]                                    
                                [0 1]       [0 2]       [1]                                    
                     p(dodfs) = [0 0] x_1 + [0 1] x_2 + [0]                                    
                                [1 2]       [0 1]       [0]                                    
                      p(leaf) = [0]                                                            
                                [1]                                                            
                       p(nil) = [0]                                                            
                                [0]                                                            
                      p(node) = [0 0] x_2 + [0 0] x_3 + [0]                                    
                                [0 1]       [0 1]       [3]                                    
                   p(reverse) = [2 2] x_1 + [2]                                                
                                [0 1]       [0]                                                
                     p(#and#) = [0 0] x_2 + [1]                                                
                                [2 0]       [0]                                                
                      p(#eq#) = [2]                                                            
                                [0]                                                            
                   p(#equal#) = [1 0] x_1 + [1]                                                
                                [0 0]       [0]                                                
            p(appendreverse#) = [0]                                                            
                                [0]                                                            
          p(appendreverse#1#) = [1]                                                            
                                [2]                                                            
                      p(bfs#) = [0 1] x_1 + [1 1] x_2 + [0 0] x_3 + [1]                        
                                [0 0]       [0 0]       [1 1]       [0]                        
                    p(bfs#1#) = [0 1] x_1 + [1 1] x_2 + [0 0] x_3 + [0]                        
                                [0 0]       [0 0]       [0 1]       [3]                        
                    p(bfs#2#) = [1 1] x_1 + [0 0] x_2 + [0]                                    
                                [0 1]       [2 0]       [3]                                    
                    p(bfs#3#) = [0 1] x_1 + [1 1] x_2 + [0 1] x_3 + [0 0] x_4 + [0]            
                                [0 0]       [1 2]       [2 0]       [0 1]       [1]            
                    p(bfs#4#) = [1 1] x_2 + [0 1] x_3 + [0 1] x_4 + [0 1] x_5 + [0 0] x_6 + [3]
                                [2 2]       [0 0]       [2 1]       [2 0]       [0 1]       [3]
                     p(bfs2#) = [2 2] x_1 + [2 3] x_2 + [3]                                    
                                [0 1]       [1 0]       [2]                                    
                   p(bfs2#1#) = [0 1] x_1 + [1 1] x_2 + [1]                                    
                                [2 0]       [0 2]       [1]                                    
                      p(dfs#) = [0 0] x_2 + [0]                                                
                                [0 2]       [1]                                                
                    p(dfs#1#) = [0]                                                            
                                [1]                                                            
                    p(dfs#2#) = [2 2] x_1 + [2 2] x_3 + [0 0] x_4 + [0]                        
                                [2 0]       [2 0]       [0 1]       [0]                        
                    p(dfs#3#) = [0 0] x_1 + [0 0] x_6 + [2]                                    
                                [0 2]       [0 2]       [0]                                    
                    p(dobfs#) = [0 1] x_1 + [1 0] x_2 + [1]                                    
                                [0 0]       [0 1]       [0]                                    
                    p(dodfs#) = [0 0] x_1 + [0]                                                
                                [0 2]       [0]                                                
                  p(reverse#) = [0]                                                            
                                [0]                                                            
                       p(c_1) = [0 0] x_1 + [0]                                                
                                [0 1]       [1]                                                
                       p(c_2) = [0 0] x_1 + [0]                                                
                                [0 2]       [2]                                                
                       p(c_3) = [0 2] x_1 + [0]                                                
                                [0 1]       [0]                                                
                       p(c_4) = [0]                                                            
                                [0]                                                            
                       p(c_5) = [1 0] x_1 + [0]                                                
                                [0 0]       [0]                                                
                       p(c_6) = [1 0] x_1 + [0]                                                
                                [0 0]       [2]                                                
                       p(c_7) = [1 0] x_1 + [0]                                                
                                [0 0]       [3]                                                
                       p(c_8) = [1 0] x_1 + [0]                                                
                                [1 0]       [0]                                                
                       p(c_9) = [0]                                                            
                                [0]                                                            
                      p(c_10) = [1 0] x_1 + [0]                                                
                                [0 0]       [0]                                                
                      p(c_11) = [1 0] x_1 + [0]                                                
                                [0 0]       [0]                                                
                      p(c_12) = [1 0] x_1 + [0]                                                
                                [0 0]       [3]                                                
                      p(c_13) = [0]                                                            
                                [0]                                                            
                      p(c_14) = [1 0] x_1 + [1 0] x_2 + [0]                                    
                                [0 0]       [1 0]       [1]                                    
                      p(c_15) = [1 1] x_1 + [0]                                                
                                [0 0]       [1]                                                
                      p(c_16) = [1 0] x_1 + [1]                                                
                                [1 0]       [0]                                                
                      p(c_17) = [1 0] x_1 + [0]                                                
                                [2 0]       [1]                                                
                      p(c_18) = [2]                                                            
                                [1]                                                            
                      p(c_19) = [0 1] x_1 + [1]                                                
                                [0 0]       [0]                                                
                      p(c_20) = [1 2] x_1 + [1]                                                
                                [1 2]       [1]                                                
                      p(c_21) = [0]                                                            
                                [2]                                                            
                      p(c_22) = [0]                                                            
                                [0]                                                            
                      p(c_23) = [1 0] x_1 + [0]                                                
                                [0 0]       [0]                                                
                      p(c_24) = [0 2] x_1 + [0]                                                
                                [1 2]       [2]                                                
                      p(c_25) = [0]                                                            
                                [2]                                                            
                      p(c_26) = [0]                                                            
                                [0]                                                            
                      p(c_27) = [0]                                                            
                                [0]                                                            
                      p(c_28) = [0]                                                            
                                [2]                                                            
                      p(c_29) = [0]                                                            
                                [0]                                                            
                      p(c_30) = [0]                                                            
                                [0]                                                            
                      p(c_31) = [0]                                                            
                                [0]                                                            
                      p(c_32) = [2]                                                            
                                [0]                                                            
                      p(c_33) = [0]                                                            
                                [0]                                                            
                      p(c_34) = [0]                                                            
                                [0]                                                            
                      p(c_35) = [1]                                                            
                                [2]                                                            
                      p(c_36) = [0]                                                            
                                [1]                                                            
                      p(c_37) = [1]                                                            
                                [0]                                                            
                      p(c_38) = [0]                                                            
                                [0]                                                            
                      p(c_39) = [0 1] x_1 + [2]                                                
                                [2 1]       [1]                                                
                      p(c_40) = [0]                                                            
                                [2]                                                            
                      p(c_41) = [0]                                                            
                                [0]                                                            
                      p(c_42) = [0 0] x_3 + [2]                                                
                                [0 1]       [1]                                                
                      p(c_43) = [2]                                                            
                                [0]                                                            
                      p(c_44) = [2]                                                            
                                [0]                                                            
                      p(c_45) = [0]                                                            
                                [2]                                                            
                      p(c_46) = [1]                                                            
                                [1]                                                            
                      p(c_47) = [0]                                                            
                                [1]                                                            
                      p(c_48) = [0]                                                            
                                [0]                                                            
                      p(c_49) = [0]                                                            
                                [0]                                                            
                      p(c_50) = [2]                                                            
                                [2]                                                            
                      p(c_51) = [1]                                                            
                                [0]                                                            
                      p(c_52) = [0]                                                            
                                [0]                                                            
                      p(c_53) = [2]                                                            
                                [1]                                                            
                      p(c_54) = [0]                                                            
                                [0]                                                            
                      p(c_55) = [0]                                                            
                                [0]                                                            
                      p(c_56) = [0]                                                            
                                [1]                                                            
                      p(c_57) = [1 0] x_1 + [0 0] x_4 + [0]                                    
                                [0 0]       [0 1]       [0]                                    
        
        Following rules are strictly oriented:
        bfs#(@queue,@futurequeue,@x) = [1 1] @futurequeue + [0 1] @queue + [0 0] @x + [1]
                                       [0 0]                [0 0]          [1 1]      [0]
                                     > [1 1] @futurequeue + [0 1] @queue + [0]           
                                       [0 0]                [0 0]          [0]           
                                     = c_5(bfs#1#(@queue,@futurequeue,@x))               
        
        
        Following rules are (at-least) weakly oriented:
                     bfs#1#(::(@t,@ts),@futurequeue,@x) =  [1 1] @futurequeue + [0 1] @t + [0 1] @ts + [0 0] @x + [0]             
                                                           [0 0]                [0 0]      [0 0]       [0 1]      [3]             
                                                        >= [1 1] @futurequeue + [0 1] @t + [0 1] @ts + [0]                        
                                                           [0 0]                [0 0]      [0 0]       [2]                        
                                                        =  c_6(bfs#3#(@t,@futurequeue,@ts,@x))                                    
        
                          bfs#1#(nil(),@futurequeue,@x) =  [1 1] @futurequeue + [0 0] @x + [0]                                    
                                                           [0 0]                [0 1]      [3]                                    
                                                        >= [1 1] @futurequeue + [0]                                               
                                                           [0 0]                [3]                                               
                                                        =  c_7(bfs#2#(@futurequeue,@x))                                           
        
                                  bfs#2#(::(@t,@ts),@x) =  [0 1] @t + [1 1] @ts + [0 0] @x + [1]                                  
                                                           [0 1]      [0 1]       [2 0]      [3]                                  
                                                        >= [0 1] @t + [0 1] @ts + [1]                                             
                                                           [0 1]      [0 1]       [1]                                             
                                                        =  c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))                                
        
                     bfs#3#(leaf(),@futurequeue,@ts,@x) =  [1 1] @futurequeue + [0 1] @ts + [0 0] @x + [1]                        
                                                           [1 2]                [2 0]       [0 1]      [1]                        
                                                        >= [1 1] @futurequeue + [0 1] @ts + [1]                                   
                                                           [0 0]                [0 0]       [0]                                   
                                                        =  c_10(bfs#(@ts,@futurequeue,@x))                                        
        
           bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) =  [1 1] @futurequeue + [0 1] @t1 + [0 1] @t2 + [0 1] @ts + [0 0] @x + [3]
                                                           [1 2]                [0 0]       [0 0]       [2 0]       [0 1]      [1]
                                                        >= [1 1] @futurequeue + [0 1] @t1 + [0 1] @t2 + [0 1] @ts + [3]           
                                                           [0 0]                [0 0]       [0 0]       [0 0]       [0]           
                                                        =  c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))             
        
        bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) =  [1 1] @futurequeue + [0 1] @t1 + [0 1] @t2 + [0 1] @ts + [0 0] @x + [3]
                                                           [2 2]                [0 0]       [2 1]       [2 0]       [0 1]      [3]
                                                        >= [1 1] @futurequeue + [0 1] @t1 + [0 1] @t2 + [0 1] @ts + [3]           
                                                           [0 0]                [0 0]       [0 0]       [0 0]       [3]           
                                                        =  c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))                        
        
                                           bfs2#(@t,@x) =  [2 2] @t + [2 3] @x + [3]                                              
                                                           [0 1]      [1 0]      [2]                                              
                                                        >= [0 2] @t + [2 3] @x + [3]                                              
                                                           [0 1]      [1 0]      [2]                                              
                                                        =  c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))                           
        
                                        bfs2#1#(@t',@x) =  [0 1] @t' + [1 1] @x + [1]                                             
                                                           [2 0]       [0 2]      [1]                                             
                                                        >= [0 1] @t' + [1 1] @x + [1]                                             
                                                           [0 0]       [0 0]      [1]                                             
                                                        =  c_15(dobfs#(@t',@x))                                                   
        
                                          dobfs#(@t,@x) =  [0 1] @t + [1 0] @x + [1]                                              
                                                           [0 0]      [0 1]      [0]                                              
                                                        >= [0 1] @t + [1]                                                         
                                                           [0 0]      [0]                                                         
                                                        =  c_23(bfs#(::(@t,nil()),nil(),@x))                                      
        
                       appendreverse(@toreverse,@sofar) =  [2 0] @sofar + [2 0] @toreverse + [2]                                  
                                                           [0 1]          [0 1]              [0]                                  
                                                        >= [2 0] @sofar + [2 0] @toreverse + [2]                                  
                                                           [0 1]          [0 1]              [0]                                  
                                                        =  appendreverse#1(@toreverse,@sofar)                                     
        
                     appendreverse#1(::(@a,@as),@sofar) =  [0 0] @a + [2 0] @as + [2 0] @sofar + [4]                              
                                                           [0 1]      [0 1]       [0 1]          [0]                              
                                                        >= [0 0] @a + [2 0] @as + [2 0] @sofar + [4]                              
                                                           [0 1]      [0 1]       [0 1]          [0]                              
                                                        =  appendreverse(@as,::(@a,@sofar))                                       
        
                          appendreverse#1(nil(),@sofar) =  [2 0] @sofar + [2]                                                     
                                                           [0 1]          [0]                                                     
                                                        >= [1 0] @sofar + [0]                                                     
                                                           [0 1]          [0]                                                     
                                                        =  @sofar                                                                 
        
                            bfs(@queue,@futurequeue,@x) =  [0 0] @futurequeue + [0 0] @queue + [0]                                
                                                           [0 1]                [0 1]          [1]                                
                                                        >= [0 0] @futurequeue + [0 0] @queue + [0]                                
                                                           [0 1]                [0 1]          [1]                                
                                                        =  bfs#1(@queue,@futurequeue,@x)                                          
        
                      bfs#1(::(@t,@ts),@futurequeue,@x) =  [0 0] @futurequeue + [0 0] @t + [0 0] @ts + [0]                        
                                                           [0 1]                [0 1]      [0 1]       [1]                        
                                                        >= [0 0] @futurequeue + [0 0] @t + [0 0] @ts + [0]                        
                                                           [0 1]                [0 1]      [0 1]       [1]                        
                                                        =  bfs#3(@t,@futurequeue,@ts,@x)                                          
        
                           bfs#1(nil(),@futurequeue,@x) =  [0 0] @futurequeue + [0]                                               
                                                           [0 1]                [1]                                               
                                                        >= [0 0] @futurequeue + [0]                                               
                                                           [0 1]                [1]                                               
                                                        =  bfs#2(@futurequeue,@x)                                                 
        
                                   bfs#2(::(@t,@ts),@x) =  [0 0] @t + [0 0] @ts + [0]                                             
                                                           [0 1]      [0 1]       [1]                                             
                                                        >= [0 0] @t + [0 0] @ts + [0]                                             
                                                           [0 1]      [0 1]       [1]                                             
                                                        =  bfs(reverse(::(@t,@ts)),nil(),@x)                                      
        
                                        bfs#2(nil(),@x) =  [0]                                                                    
                                                           [1]                                                                    
                                                        >= [0]                                                                    
                                                           [1]                                                                    
                                                        =  leaf()                                                                 
        
                      bfs#3(leaf(),@futurequeue,@ts,@x) =  [0 0] @futurequeue + [0 0] @ts + [0]                                   
                                                           [0 1]                [0 1]       [2]                                   
                                                        >= [0 0] @futurequeue + [0 0] @ts + [0]                                   
                                                           [0 1]                [0 1]       [1]                                   
                                                        =  bfs(@ts,@futurequeue,@x)                                               
        
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) =  [0 0] @futurequeue + [0 0] @t1 + [0 0] @t2 + [0 0] @ts + [0]           
                                                           [0 1]                [0 1]       [0 1]       [0 1]       [4]           
                                                        >= [0 0] @futurequeue + [0 0] @t1 + [0 0] @t2 + [0 0] @ts + [0]           
                                                           [0 1]                [0 1]       [0 1]       [0 1]       [3]           
                                                        =  bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)                    
        
         bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) =  [0 0] @futurequeue + [0 0] @t1 + [0 0] @t2 + [0 0] @ts + [0]           
                                                           [0 1]                [0 1]       [0 1]       [0 1]       [3]           
                                                        >= [0 0] @futurequeue + [0 0] @t1 + [0 0] @t2 + [0 0] @ts + [0]           
                                                           [0 1]                [0 1]       [0 1]       [0 1]       [1]           
                                                        =  bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)                               
        
          bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) =  [0 0] @futurequeue + [0 0] @t1 + [0 0] @t2 + [0 0] @ts + [0]           
                                                           [0 1]                [0 1]       [0 1]       [0 1]       [3]           
                                                        >= [0 0] @t1 + [0 0] @t2 + [0]                                            
                                                           [0 1]       [0 1]       [3]                                            
                                                        =  node(@y,@t1,@t2)                                                       
        
                                           dobfs(@t,@x) =  [1 0] @t + [1 1] @x + [2]                                              
                                                           [0 1]      [0 2]      [1]                                              
                                                        >= [0 0] @t + [0]                                                         
                                                           [0 1]      [1]                                                         
                                                        =  bfs(::(@t,nil()),nil(),@x)                                             
        
                                           reverse(@xs) =  [2 2] @xs + [2]                                                        
                                                           [0 1]       [0]                                                        
                                                        >= [2 0] @xs + [2]                                                        
                                                           [0 1]       [0]                                                        
                                                        =  appendreverse(@xs,nil())                                               
        
******* Step 8.b:4.a:2.b:1.b:1.b:1.b:3: EmptyProcessor WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        EmptyProcessor
    + Details:
        The problem is already closed. The intended complexity is O(1).

*** Step 8.b:4.b:1: PredecessorEstimation WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        - Weak DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        PredecessorEstimation {onSelection = all simple predecessor estimation selector}
    + Details:
        We estimate the number of application of
          {8}
        by application of
          Pre({8}) = {1,2}.
        Here rules are labelled as follows:
          1: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
          2: bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
          3: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
          4: dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
          5: dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
          6: dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
          7: dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
          8: dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
          9: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
          10: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
          11: bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
          12: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
          13: bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
          14: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                         ,@futurequeue
                                                                         ,@t1
                                                                         ,@t2
                                                                         ,@ts
                                                                         ,@x
                                                                         ,@y))
          15: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
*** Step 8.b:4.b:2: PredecessorEstimation WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
        - Weak DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        PredecessorEstimation {onSelection = all simple predecessor estimation selector}
    + Details:
        We estimate the number of application of
          {2}
        by application of
          Pre({2}) = {1}.
        Here rules are labelled as follows:
          1: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
          2: bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
          3: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
          4: dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
          5: dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
          6: dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
          7: dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
          8: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
          9: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
          10: bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
          11: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
          12: bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
          13: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                         ,@futurequeue
                                                                         ,@t1
                                                                         ,@t2
                                                                         ,@ts
                                                                         ,@x
                                                                         ,@y))
          14: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
          15: dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
*** Step 8.b:4.b:3: PredecessorEstimation WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
        - Weak DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        PredecessorEstimation {onSelection = all simple predecessor estimation selector}
    + Details:
        We estimate the number of application of
          {1}
        by application of
          Pre({1}) = {}.
        Here rules are labelled as follows:
          1: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
          2: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
          3: dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
          4: dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
          5: dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
          6: dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
          7: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
          8: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
          9: bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
          10: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
          11: bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
          12: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                         ,@futurequeue
                                                                         ,@t1
                                                                         ,@t2
                                                                         ,@ts
                                                                         ,@x
                                                                         ,@y))
          13: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
          14: bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
          15: dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
*** Step 8.b:4.b:4: RemoveWeakSuffixes WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
        - Weak DPs:
            bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
            bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
            bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
            bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
            bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
            bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y))
            bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
            bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
            bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
            dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        RemoveWeakSuffixes
    + Details:
        Consider the dependency graph
          1:S:dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
             -->_1 dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)):2
          
          2:S:dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
             -->_1 dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)):4
             -->_1 dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)):3
          
          3:S:dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
             -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):1
          
          4:S:dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
             -->_1 dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)):5
          
          5:S:dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
             -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):1
          
          6:W:bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
             -->_1 bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)):8
             -->_1 bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)):7
          
          7:W:bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
             -->_1 bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                              ,@futurequeue
                                                                              ,@t1
                                                                              ,@t2
                                                                              ,@ts
                                                                              ,@x
                                                                              ,@y)):11
             -->_1 bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)):10
          
          8:W:bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
             -->_1 bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)):9
          
          9:W:bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):6
          
          10:W:bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):6
          
          11:W:bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                          ,@futurequeue
                                                                          ,@t1
                                                                          ,@t2
                                                                          ,@ts
                                                                          ,@x
                                                                          ,@y))
             -->_1 bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts
                                                                               ,::(@t2,::(@t1,@futurequeue))
                                                                               ,@x)):12
          
          12:W:bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):6
          
          13:W:bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
             -->_2 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):15
             -->_1 bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)):14
          
          14:W:bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
             -->_1 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):15
          
          15:W:dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
             -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):6
          
        The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
          13: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x))
          14: bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x))
          15: dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x))
          6: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x))
          12: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x))
          11: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y)
                                                                         ,@futurequeue
                                                                         ,@t1
                                                                         ,@t2
                                                                         ,@ts
                                                                         ,@x
                                                                         ,@y))
          7: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x))
          10: bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x))
          9: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x))
          8: bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x))
*** Step 8.b:4.b:5: UsableRules WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x)
            bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x)
            bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x)
            bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x)
            bfs#2(nil(),@x) -> leaf()
            bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x)
            bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)
            bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x)
            bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2)
            dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x)
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        UsableRules
    + Details:
        We replace rewrite rules by usable rules:
          #and(#false(),#false()) -> #false()
          #and(#false(),#true()) -> #false()
          #and(#true(),#false()) -> #false()
          #and(#true(),#true()) -> #true()
          #eq(#0(),#0()) -> #true()
          #eq(#0(),#neg(@y)) -> #false()
          #eq(#0(),#pos(@y)) -> #false()
          #eq(#0(),#s(@y)) -> #false()
          #eq(#neg(@x),#0()) -> #false()
          #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
          #eq(#neg(@x),#pos(@y)) -> #false()
          #eq(#pos(@x),#0()) -> #false()
          #eq(#pos(@x),#neg(@y)) -> #false()
          #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
          #eq(#s(@x),#0()) -> #false()
          #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
          #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
          #eq(::(@x_1,@x_2),leaf()) -> #false()
          #eq(::(@x_1,@x_2),nil()) -> #false()
          #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
          #eq(leaf(),::(@y_1,@y_2)) -> #false()
          #eq(leaf(),leaf()) -> #true()
          #eq(leaf(),nil()) -> #false()
          #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
          #eq(nil(),::(@y_1,@y_2)) -> #false()
          #eq(nil(),leaf()) -> #false()
          #eq(nil(),nil()) -> #true()
          #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
          #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
          #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
          #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
          #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
          #equal(@x,@y) -> #eq(@x,@y)
          dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
          dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
          dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
          dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
          dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
*** Step 8.b:4.b:6: PredecessorEstimationCP WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + 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}}
    + Details:
        We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
          5: dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
          
        The strictly oriented rules are moved into the weak component.
**** Step 8.b:4.b:6.a:1: NaturalMI WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules}
    + Details:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(c_16) = {1},
          uargs(c_17) = {1},
          uargs(c_19) = {1},
          uargs(c_20) = {1},
          uargs(c_21) = {1}
        
        Following symbols are considered usable:
          {#and,#eq,#equal,#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#
          ,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#,reverse#}
        TcT has computed the following interpretation:
                        p(#0) = [0]                                             
                      p(#and) = [1] x2 + [0]                                    
                       p(#eq) = [2]                                             
                    p(#equal) = [1] x1 + [3]                                    
                    p(#false) = [2]                                             
                      p(#neg) = [1] x1 + [0]                                    
                      p(#pos) = [1]                                             
                        p(#s) = [1] x1 + [1]                                    
                     p(#true) = [2]                                             
                        p(::) = [1] x1 + [1] x2 + [0]                           
             p(appendreverse) = [2]                                             
           p(appendreverse#1) = [1] x1 + [1]                                    
                       p(bfs) = [1] x2 + [1] x3 + [1]                           
                     p(bfs#1) = [1] x2 + [4] x3 + [4]                           
                     p(bfs#2) = [4] x2 + [0]                                    
                     p(bfs#3) = [4] x2 + [2] x4 + [2]                           
                     p(bfs#4) = [4] x1 + [1] x2 + [1] x4 + [1] x5 + [1] x6 + [1]
                      p(bfs2) = [0]                                             
                    p(bfs2#1) = [1] x2 + [1]                                    
                       p(dfs) = [1] x2 + [0]                                    
                     p(dfs#1) = [1]                                             
                     p(dfs#2) = [4] x1 + [4] x2 + [1] x4 + [1]                  
                     p(dfs#3) = [1] x2 + [1] x6 + [1]                           
                     p(dobfs) = [1] x1 + [4]                                    
                     p(dodfs) = [1] x1 + [4] x2 + [1]                           
                      p(leaf) = [1]                                             
                       p(nil) = [0]                                             
                      p(node) = [1] x1 + [1] x2 + [1] x3 + [3]                  
                   p(reverse) = [2] x1 + [4]                                    
                     p(#and#) = [2] x1 + [1] x2 + [4]                           
                      p(#eq#) = [1] x1 + [1] x2 + [0]                           
                   p(#equal#) = [1] x1 + [2] x2 + [0]                           
            p(appendreverse#) = [1] x2 + [0]                                    
          p(appendreverse#1#) = [2] x1 + [0]                                    
                      p(bfs#) = [1] x2 + [1]                                    
                    p(bfs#1#) = [1] x3 + [1]                                    
                    p(bfs#2#) = [1] x1 + [0]                                    
                    p(bfs#3#) = [4] x1 + [2] x4 + [0]                           
                    p(bfs#4#) = [1] x2 + [1] x3 + [4] x4 + [4] x6 + [1] x7 + [1]
                     p(bfs2#) = [1] x1 + [1] x2 + [0]                           
                   p(bfs2#1#) = [1] x2 + [2]                                    
                      p(dfs#) = [4] x1 + [6] x2 + [4]                           
                    p(dfs#1#) = [4] x1 + [6] x2 + [0]                           
                    p(dfs#2#) = [4] x1 + [4] x3 + [6] x4 + [0]                  
                    p(dfs#3#) = [4] x1 + [4] x3 + [4] x4 + [4] x5 + [6] x6 + [0]
                    p(dobfs#) = [1]                                             
                    p(dodfs#) = [1] x2 + [2]                                    
                  p(reverse#) = [2] x1 + [0]                                    
                       p(c_1) = [1]                                             
                       p(c_2) = [1] x1 + [1]                                    
                       p(c_3) = [1] x1 + [1]                                    
                       p(c_4) = [1]                                             
                       p(c_5) = [2] x1 + [2]                                    
                       p(c_6) = [1]                                             
                       p(c_7) = [1]                                             
                       p(c_8) = [0]                                             
                       p(c_9) = [0]                                             
                      p(c_10) = [0]                                             
                      p(c_11) = [2] x1 + [1]                                    
                      p(c_12) = [2]                                             
                      p(c_13) = [2]                                             
                      p(c_14) = [4] x2 + [2]                                    
                      p(c_15) = [4]                                             
                      p(c_16) = [1] x1 + [4]                                    
                      p(c_17) = [1] x1 + [0]                                    
                      p(c_18) = [2]                                             
                      p(c_19) = [1] x1 + [0]                                    
                      p(c_20) = [1] x1 + [0]                                    
                      p(c_21) = [1] x1 + [2]                                    
                      p(c_22) = [0]                                             
                      p(c_23) = [1]                                             
                      p(c_24) = [1] x1 + [0]                                    
                      p(c_25) = [4]                                             
                      p(c_26) = [0]                                             
                      p(c_27) = [2]                                             
                      p(c_28) = [0]                                             
                      p(c_29) = [0]                                             
                      p(c_30) = [1]                                             
                      p(c_31) = [0]                                             
                      p(c_32) = [1]                                             
                      p(c_33) = [0]                                             
                      p(c_34) = [0]                                             
                      p(c_35) = [0]                                             
                      p(c_36) = [0]                                             
                      p(c_37) = [2]                                             
                      p(c_38) = [1]                                             
                      p(c_39) = [2] x1 + [0]                                    
                      p(c_40) = [2]                                             
                      p(c_41) = [1] x1 + [0]                                    
                      p(c_42) = [1] x1 + [0]                                    
                      p(c_43) = [0]                                             
                      p(c_44) = [0]                                             
                      p(c_45) = [0]                                             
                      p(c_46) = [0]                                             
                      p(c_47) = [1]                                             
                      p(c_48) = [0]                                             
                      p(c_49) = [0]                                             
                      p(c_50) = [0]                                             
                      p(c_51) = [1]                                             
                      p(c_52) = [4]                                             
                      p(c_53) = [2]                                             
                      p(c_54) = [0]                                             
                      p(c_55) = [0]                                             
                      p(c_56) = [4]                                             
                      p(c_57) = [2] x3 + [0]                                    
        
        Following rules are strictly oriented:
        dfs#3#(#false(),@t,@t1,@t2,@ts,@x) = [4] @t1 + [4] @t2 + [4] @ts + [6] @x + [8]
                                           > [4] @t1 + [4] @t2 + [4] @ts + [6] @x + [6]
                                           = c_21(dfs#(::(@t1,::(@t2,@ts)),@x))        
        
        
        Following rules are (at-least) weakly oriented:
                                       dfs#(@queue,@x) =  [4] @queue + [6] @x + [4]                               
                                                       >= [4] @queue + [6] @x + [4]                               
                                                       =  c_16(dfs#1#(@queue,@x))                                 
        
                                 dfs#1#(::(@t,@ts),@x) =  [4] @t + [4] @ts + [6] @x + [0]                         
                                                       >= [4] @t + [4] @ts + [6] @x + [0]                         
                                                       =  c_17(dfs#2#(@t,@t,@ts,@x))                              
        
                              dfs#2#(leaf(),@t,@ts,@x) =  [4] @ts + [6] @x + [4]                                  
                                                       >= [4] @ts + [6] @x + [4]                                  
                                                       =  c_19(dfs#(@ts,@x))                                      
        
                    dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) =  [4] @a + [4] @t1 + [4] @t2 + [4] @ts + [6] @x + [12]    
                                                       >= [4] @a + [4] @t1 + [4] @t2 + [4] @ts + [6] @x + [12]    
                                                       =  c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))           
        
                               #and(#false(),#false()) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #false()                                                
        
                                #and(#false(),#true()) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #false()                                                
        
                                #and(#true(),#false()) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #false()                                                
        
                                 #and(#true(),#true()) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #true()                                                 
        
                                        #eq(#0(),#0()) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #true()                                                 
        
                                    #eq(#0(),#neg(@y)) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #false()                                                
        
                                    #eq(#0(),#pos(@y)) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #false()                                                
        
                                      #eq(#0(),#s(@y)) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #false()                                                
        
                                    #eq(#neg(@x),#0()) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #false()                                                
        
                                #eq(#neg(@x),#neg(@y)) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #eq(@x,@y)                                              
        
                                #eq(#neg(@x),#pos(@y)) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #false()                                                
        
                                    #eq(#pos(@x),#0()) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #false()                                                
        
                                #eq(#pos(@x),#neg(@y)) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #false()                                                
        
                                #eq(#pos(@x),#pos(@y)) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #eq(@x,@y)                                              
        
                                      #eq(#s(@x),#0()) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #false()                                                
        
                                    #eq(#s(@x),#s(@y)) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #eq(@x,@y)                                              
        
                      #eq(::(@x_1,@x_2),::(@y_1,@y_2)) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))                     
        
                             #eq(::(@x_1,@x_2),leaf()) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #false()                                                
        
                              #eq(::(@x_1,@x_2),nil()) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #false()                                                
        
               #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #false()                                                
        
                             #eq(leaf(),::(@y_1,@y_2)) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #false()                                                
        
                                    #eq(leaf(),leaf()) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #true()                                                 
        
                                     #eq(leaf(),nil()) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #false()                                                
        
                      #eq(leaf(),node(@y_1,@y_2,@y_3)) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #false()                                                
        
                              #eq(nil(),::(@y_1,@y_2)) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #false()                                                
        
                                     #eq(nil(),leaf()) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #false()                                                
        
                                      #eq(nil(),nil()) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #true()                                                 
        
                       #eq(nil(),node(@y_1,@y_2,@y_3)) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #false()                                                
        
               #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #false()                                                
        
                      #eq(node(@x_1,@x_2,@x_3),leaf()) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #false()                                                
        
                       #eq(node(@x_1,@x_2,@x_3),nil()) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #false()                                                
        
        #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) =  [2]                                                     
                                                       >= [2]                                                     
                                                       =  #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
        
                                         #equal(@x,@y) =  [1] @x + [3]                                            
                                                       >= [2]                                                     
                                                       =  #eq(@x,@y)                                              
        
**** Step 8.b:4.b:6.a:2: Assumption WORST_CASE(?,O(1))
    + Considered Problem:
        - Strict DPs:
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
        - Weak DPs:
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
    + Details:
        ()

**** Step 8.b:4.b:6.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
        - Weak DPs:
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + 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}}
    + Details:
        We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
          4: dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
          
        Consider the set of all dependency pairs
          1: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
          2: dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
          3: dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
          4: dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
          5: dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
        Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1))
        SPACE(?,?)on application of the dependency pairs
          {4}
        These cover all (indirect) predecessors of dependency pairs
          {4,5}
        their number of applications is equally bounded.
        The dependency pairs are shifted into the weak component.
***** Step 8.b:4.b:6.b:1.a:1: NaturalMI WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
        - Weak DPs:
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules}
    + Details:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(c_16) = {1},
          uargs(c_17) = {1},
          uargs(c_19) = {1},
          uargs(c_20) = {1},
          uargs(c_21) = {1}
        
        Following symbols are considered usable:
          {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#
          ,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#,reverse#}
        TcT has computed the following interpretation:
                        p(#0) = [2]                                    
                      p(#and) = [1] x2 + [2]                           
                       p(#eq) = [2] x2 + [0]                           
                    p(#equal) = [0]                                    
                    p(#false) = [0]                                    
                      p(#neg) = [4]                                    
                      p(#pos) = [4]                                    
                        p(#s) = [0]                                    
                     p(#true) = [4]                                    
                        p(::) = [1] x1 + [1] x2 + [0]                  
             p(appendreverse) = [1]                                    
           p(appendreverse#1) = [2]                                    
                       p(bfs) = [2]                                    
                     p(bfs#1) = [4]                                    
                     p(bfs#2) = [1] x2 + [0]                           
                     p(bfs#3) = [1] x3 + [0]                           
                     p(bfs#4) = [2] x5 + [1] x6 + [2]                  
                      p(bfs2) = [0]                                    
                    p(bfs2#1) = [0]                                    
                       p(dfs) = [4] x1 + [4]                           
                     p(dfs#1) = [1]                                    
                     p(dfs#2) = [2]                                    
                     p(dfs#3) = [1] x1 + [4] x3 + [1] x5 + [1]         
                     p(dobfs) = [2] x1 + [0]                           
                     p(dodfs) = [0]                                    
                      p(leaf) = [0]                                    
                       p(nil) = [0]                                    
                      p(node) = [1] x2 + [1] x3 + [1]                  
                   p(reverse) = [0]                                    
                     p(#and#) = [1] x1 + [1]                           
                      p(#eq#) = [2] x2 + [0]                           
                   p(#equal#) = [2] x2 + [0]                           
            p(appendreverse#) = [0]                                    
          p(appendreverse#1#) = [1] x1 + [1] x2 + [0]                  
                      p(bfs#) = [1]                                    
                    p(bfs#1#) = [2] x2 + [2] x3 + [1]                  
                    p(bfs#2#) = [1] x1 + [1] x2 + [1]                  
                    p(bfs#3#) = [1] x4 + [0]                           
                    p(bfs#4#) = [2] x2 + [2] x4 + [1] x5 + [1] x6 + [1]
                     p(bfs2#) = [4] x1 + [2]                           
                   p(bfs2#1#) = [0]                                    
                      p(dfs#) = [4] x1 + [2] x2 + [0]                  
                    p(dfs#1#) = [4] x1 + [2] x2 + [0]                  
                    p(dfs#2#) = [4] x1 + [4] x3 + [2] x4 + [0]         
                    p(dfs#3#) = [4] x3 + [4] x4 + [4] x5 + [2] x6 + [0]
                    p(dobfs#) = [1] x2 + [0]                           
                    p(dodfs#) = [1] x1 + [0]                           
                  p(reverse#) = [2]                                    
                       p(c_1) = [1] x1 + [2]                           
                       p(c_2) = [4] x1 + [2]                           
                       p(c_3) = [1] x1 + [0]                           
                       p(c_4) = [0]                                    
                       p(c_5) = [1]                                    
                       p(c_6) = [1] x1 + [2]                           
                       p(c_7) = [4]                                    
                       p(c_8) = [1] x1 + [0]                           
                       p(c_9) = [2]                                    
                      p(c_10) = [1] x1 + [2]                           
                      p(c_11) = [1] x1 + [0]                           
                      p(c_12) = [1]                                    
                      p(c_13) = [1]                                    
                      p(c_14) = [1] x2 + [0]                           
                      p(c_15) = [0]                                    
                      p(c_16) = [1] x1 + [0]                           
                      p(c_17) = [1] x1 + [0]                           
                      p(c_18) = [0]                                    
                      p(c_19) = [1] x1 + [0]                           
                      p(c_20) = [1] x1 + [0]                           
                      p(c_21) = [1] x1 + [0]                           
                      p(c_22) = [0]                                    
                      p(c_23) = [2]                                    
                      p(c_24) = [0]                                    
                      p(c_25) = [0]                                    
                      p(c_26) = [2]                                    
                      p(c_27) = [0]                                    
                      p(c_28) = [1]                                    
                      p(c_29) = [1]                                    
                      p(c_30) = [0]                                    
                      p(c_31) = [0]                                    
                      p(c_32) = [2]                                    
                      p(c_33) = [2]                                    
                      p(c_34) = [2]                                    
                      p(c_35) = [1] x1 + [0]                           
                      p(c_36) = [2]                                    
                      p(c_37) = [1]                                    
                      p(c_38) = [0]                                    
                      p(c_39) = [0]                                    
                      p(c_40) = [0]                                    
                      p(c_41) = [0]                                    
                      p(c_42) = [4]                                    
                      p(c_43) = [1]                                    
                      p(c_44) = [0]                                    
                      p(c_45) = [2]                                    
                      p(c_46) = [0]                                    
                      p(c_47) = [2]                                    
                      p(c_48) = [0]                                    
                      p(c_49) = [0]                                    
                      p(c_50) = [1]                                    
                      p(c_51) = [1]                                    
                      p(c_52) = [0]                                    
                      p(c_53) = [0]                                    
                      p(c_54) = [0]                                    
                      p(c_55) = [4]                                    
                      p(c_56) = [0]                                    
                      p(c_57) = [4] x2 + [2] x3 + [4] x5 + [2]         
        
        Following rules are strictly oriented:
        dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) = [4] @t1 + [4] @t2 + [4] @ts + [2] @x + [4]   
                                           > [4] @t1 + [4] @t2 + [4] @ts + [2] @x + [0]   
                                           = c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
        
        
        Following rules are (at-least) weakly oriented:
                           dfs#(@queue,@x) =  [4] @queue + [2] @x + [0]                 
                                           >= [4] @queue + [2] @x + [0]                 
                                           =  c_16(dfs#1#(@queue,@x))                   
        
                     dfs#1#(::(@t,@ts),@x) =  [4] @t + [4] @ts + [2] @x + [0]           
                                           >= [4] @t + [4] @ts + [2] @x + [0]           
                                           =  c_17(dfs#2#(@t,@t,@ts,@x))                
        
                  dfs#2#(leaf(),@t,@ts,@x) =  [4] @ts + [2] @x + [0]                    
                                           >= [4] @ts + [2] @x + [0]                    
                                           =  c_19(dfs#(@ts,@x))                        
        
        dfs#3#(#false(),@t,@t1,@t2,@ts,@x) =  [4] @t1 + [4] @t2 + [4] @ts + [2] @x + [0]
                                           >= [4] @t1 + [4] @t2 + [4] @ts + [2] @x + [0]
                                           =  c_21(dfs#(::(@t1,::(@t2,@ts)),@x))        
        
***** Step 8.b:4.b:6.b:1.a:2: Assumption WORST_CASE(?,O(1))
    + Considered Problem:
        - Strict DPs:
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
        - Weak DPs:
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
    + Details:
        ()

***** Step 8.b:4.b:6.b:1.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
        - Weak DPs:
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + 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}}
    + Details:
        We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
          3: dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
          
        The strictly oriented rules are moved into the weak component.
****** Step 8.b:4.b:6.b:1.b:1.a:1: NaturalMI WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
        - Weak DPs:
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules}
    + Details:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(c_16) = {1},
          uargs(c_17) = {1},
          uargs(c_19) = {1},
          uargs(c_20) = {1},
          uargs(c_21) = {1}
        
        Following symbols are considered usable:
          {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#
          ,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#,reverse#}
        TcT has computed the following interpretation:
                        p(#0) = [0]                           
                      p(#and) = [0]                           
                       p(#eq) = [0]                           
                    p(#equal) = [0]                           
                    p(#false) = [0]                           
                      p(#neg) = [1] x1 + [0]                  
                      p(#pos) = [1] x1 + [0]                  
                        p(#s) = [1] x1 + [0]                  
                     p(#true) = [0]                           
                        p(::) = [1] x1 + [1] x2 + [0]         
             p(appendreverse) = [0]                           
           p(appendreverse#1) = [0]                           
                       p(bfs) = [0]                           
                     p(bfs#1) = [0]                           
                     p(bfs#2) = [0]                           
                     p(bfs#3) = [0]                           
                     p(bfs#4) = [0]                           
                      p(bfs2) = [0]                           
                    p(bfs2#1) = [0]                           
                       p(dfs) = [0]                           
                     p(dfs#1) = [0]                           
                     p(dfs#2) = [0]                           
                     p(dfs#3) = [0]                           
                     p(dobfs) = [0]                           
                     p(dodfs) = [0]                           
                      p(leaf) = [4]                           
                       p(nil) = [0]                           
                      p(node) = [1] x2 + [1] x3 + [6]         
                   p(reverse) = [0]                           
                     p(#and#) = [0]                           
                      p(#eq#) = [0]                           
                   p(#equal#) = [0]                           
            p(appendreverse#) = [0]                           
          p(appendreverse#1#) = [0]                           
                      p(bfs#) = [0]                           
                    p(bfs#1#) = [0]                           
                    p(bfs#2#) = [1] x2 + [0]                  
                    p(bfs#3#) = [1] x2 + [1]                  
                    p(bfs#4#) = [4] x2 + [4] x4 + [0]         
                     p(bfs2#) = [2] x1 + [1]                  
                   p(bfs2#1#) = [1]                           
                      p(dfs#) = [1] x1 + [6]                  
                    p(dfs#1#) = [1] x1 + [6]                  
                    p(dfs#2#) = [1] x1 + [1] x3 + [6]         
                    p(dfs#3#) = [1] x3 + [1] x4 + [1] x5 + [6]
                    p(dobfs#) = [1] x1 + [1] x2 + [1]         
                    p(dodfs#) = [2]                           
                  p(reverse#) = [1]                           
                       p(c_1) = [1]                           
                       p(c_2) = [0]                           
                       p(c_3) = [0]                           
                       p(c_4) = [1]                           
                       p(c_5) = [1] x1 + [2]                  
                       p(c_6) = [1]                           
                       p(c_7) = [4] x1 + [1]                  
                       p(c_8) = [1] x1 + [0]                  
                       p(c_9) = [1]                           
                      p(c_10) = [1] x1 + [0]                  
                      p(c_11) = [1]                           
                      p(c_12) = [2] x1 + [1]                  
                      p(c_13) = [1]                           
                      p(c_14) = [1] x2 + [0]                  
                      p(c_15) = [0]                           
                      p(c_16) = [1] x1 + [0]                  
                      p(c_17) = [1] x1 + [0]                  
                      p(c_18) = [1]                           
                      p(c_19) = [1] x1 + [3]                  
                      p(c_20) = [1] x1 + [6]                  
                      p(c_21) = [1] x1 + [0]                  
                      p(c_22) = [0]                           
                      p(c_23) = [1]                           
                      p(c_24) = [2] x1 + [1]                  
                      p(c_25) = [4]                           
                      p(c_26) = [0]                           
                      p(c_27) = [4]                           
                      p(c_28) = [1]                           
                      p(c_29) = [0]                           
                      p(c_30) = [4]                           
                      p(c_31) = [1]                           
                      p(c_32) = [1]                           
                      p(c_33) = [0]                           
                      p(c_34) = [1]                           
                      p(c_35) = [1]                           
                      p(c_36) = [4]                           
                      p(c_37) = [0]                           
                      p(c_38) = [1]                           
                      p(c_39) = [0]                           
                      p(c_40) = [0]                           
                      p(c_41) = [1] x1 + [1]                  
                      p(c_42) = [2] x1 + [4] x2 + [4] x3 + [1]
                      p(c_43) = [4]                           
                      p(c_44) = [0]                           
                      p(c_45) = [1]                           
                      p(c_46) = [4]                           
                      p(c_47) = [1]                           
                      p(c_48) = [4]                           
                      p(c_49) = [2]                           
                      p(c_50) = [1]                           
                      p(c_51) = [0]                           
                      p(c_52) = [0]                           
                      p(c_53) = [1]                           
                      p(c_54) = [0]                           
                      p(c_55) = [2]                           
                      p(c_56) = [2]                           
                      p(c_57) = [1] x3 + [1] x4 + [2] x5 + [1]
        
        Following rules are strictly oriented:
        dfs#2#(leaf(),@t,@ts,@x) = [1] @ts + [10]    
                                 > [1] @ts + [9]     
                                 = c_19(dfs#(@ts,@x))
        
        
        Following rules are (at-least) weakly oriented:
                           dfs#(@queue,@x) =  [1] @queue + [6]                             
                                           >= [1] @queue + [6]                             
                                           =  c_16(dfs#1#(@queue,@x))                      
        
                     dfs#1#(::(@t,@ts),@x) =  [1] @t + [1] @ts + [6]                       
                                           >= [1] @t + [1] @ts + [6]                       
                                           =  c_17(dfs#2#(@t,@t,@ts,@x))                   
        
        dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) =  [1] @t1 + [1] @t2 + [1] @ts + [12]           
                                           >= [1] @t1 + [1] @t2 + [1] @ts + [12]           
                                           =  c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
        
        dfs#3#(#false(),@t,@t1,@t2,@ts,@x) =  [1] @t1 + [1] @t2 + [1] @ts + [6]            
                                           >= [1] @t1 + [1] @t2 + [1] @ts + [6]            
                                           =  c_21(dfs#(::(@t1,::(@t2,@ts)),@x))           
        
****** Step 8.b:4.b:6.b:1.b:1.a:2: Assumption WORST_CASE(?,O(1))
    + Considered Problem:
        - Strict DPs:
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
        - Weak DPs:
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
    + Details:
        ()

****** Step 8.b:4.b:6.b:1.b:1.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
        - Weak DPs:
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + 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}}
    + Details:
        We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
          2: dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
          
        Consider the set of all dependency pairs
          1: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
          2: dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
          3: dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
          4: dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
          5: dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
        Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1))
        SPACE(?,?)on application of the dependency pairs
          {2}
        These cover all (indirect) predecessors of dependency pairs
          {1,2,3,4,5}
        their number of applications is equally bounded.
        The dependency pairs are shifted into the weak component.
******* Step 8.b:4.b:6.b:1.b:1.b:1.a:1: NaturalMI WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
        - Weak DPs:
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules}
    + Details:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(c_16) = {1},
          uargs(c_17) = {1},
          uargs(c_19) = {1},
          uargs(c_20) = {1},
          uargs(c_21) = {1}
        
        Following symbols are considered usable:
          {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#
          ,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#,reverse#}
        TcT has computed the following interpretation:
                        p(#0) = [4]                           
                      p(#and) = [4] x1 + [6]                  
                       p(#eq) = [3] x2 + [0]                  
                    p(#equal) = [0]                           
                    p(#false) = [1]                           
                      p(#neg) = [4]                           
                      p(#pos) = [1] x1 + [2]                  
                        p(#s) = [1] x1 + [2]                  
                     p(#true) = [0]                           
                        p(::) = [1] x1 + [1] x2 + [0]         
             p(appendreverse) = [0]                           
           p(appendreverse#1) = [0]                           
                       p(bfs) = [0]                           
                     p(bfs#1) = [0]                           
                     p(bfs#2) = [0]                           
                     p(bfs#3) = [0]                           
                     p(bfs#4) = [0]                           
                      p(bfs2) = [0]                           
                    p(bfs2#1) = [0]                           
                       p(dfs) = [0]                           
                     p(dfs#1) = [0]                           
                     p(dfs#2) = [1] x1 + [1] x4 + [2]         
                     p(dfs#3) = [1] x4 + [1] x6 + [0]         
                     p(dobfs) = [2] x1 + [2] x2 + [0]         
                     p(dodfs) = [4]                           
                      p(leaf) = [2]                           
                       p(nil) = [0]                           
                      p(node) = [1] x1 + [1] x2 + [1] x3 + [3]
                   p(reverse) = [0]                           
                     p(#and#) = [0]                           
                      p(#eq#) = [0]                           
                   p(#equal#) = [0]                           
            p(appendreverse#) = [0]                           
          p(appendreverse#1#) = [0]                           
                      p(bfs#) = [0]                           
                    p(bfs#1#) = [0]                           
                    p(bfs#2#) = [0]                           
                    p(bfs#3#) = [0]                           
                    p(bfs#4#) = [0]                           
                     p(bfs2#) = [0]                           
                   p(bfs2#1#) = [0]                           
                      p(dfs#) = [4] x1 + [4]                  
                    p(dfs#1#) = [4] x1 + [4]                  
                    p(dfs#2#) = [4] x1 + [4] x3 + [0]         
                    p(dfs#3#) = [4] x3 + [4] x4 + [4] x5 + [6]
                    p(dobfs#) = [0]                           
                    p(dodfs#) = [0]                           
                  p(reverse#) = [0]                           
                       p(c_1) = [0]                           
                       p(c_2) = [0]                           
                       p(c_3) = [0]                           
                       p(c_4) = [0]                           
                       p(c_5) = [0]                           
                       p(c_6) = [0]                           
                       p(c_7) = [0]                           
                       p(c_8) = [0]                           
                       p(c_9) = [0]                           
                      p(c_10) = [0]                           
                      p(c_11) = [0]                           
                      p(c_12) = [0]                           
                      p(c_13) = [0]                           
                      p(c_14) = [0]                           
                      p(c_15) = [0]                           
                      p(c_16) = [1] x1 + [0]                  
                      p(c_17) = [1] x1 + [0]                  
                      p(c_18) = [1]                           
                      p(c_19) = [1] x1 + [4]                  
                      p(c_20) = [1] x1 + [6]                  
                      p(c_21) = [1] x1 + [2]                  
                      p(c_22) = [2]                           
                      p(c_23) = [1] x1 + [4]                  
                      p(c_24) = [1]                           
                      p(c_25) = [0]                           
                      p(c_26) = [1]                           
                      p(c_27) = [1]                           
                      p(c_28) = [1]                           
                      p(c_29) = [0]                           
                      p(c_30) = [4]                           
                      p(c_31) = [0]                           
                      p(c_32) = [0]                           
                      p(c_33) = [0]                           
                      p(c_34) = [4]                           
                      p(c_35) = [1]                           
                      p(c_36) = [0]                           
                      p(c_37) = [4]                           
                      p(c_38) = [1]                           
                      p(c_39) = [1]                           
                      p(c_40) = [1]                           
                      p(c_41) = [1] x1 + [4]                  
                      p(c_42) = [1]                           
                      p(c_43) = [0]                           
                      p(c_44) = [1]                           
                      p(c_45) = [0]                           
                      p(c_46) = [0]                           
                      p(c_47) = [1]                           
                      p(c_48) = [1]                           
                      p(c_49) = [1]                           
                      p(c_50) = [1]                           
                      p(c_51) = [1]                           
                      p(c_52) = [1]                           
                      p(c_53) = [1]                           
                      p(c_54) = [2]                           
                      p(c_55) = [1]                           
                      p(c_56) = [4]                           
                      p(c_57) = [2] x3 + [1]                  
        
        Following rules are strictly oriented:
        dfs#1#(::(@t,@ts),@x) = [4] @t + [4] @ts + [4]    
                              > [4] @t + [4] @ts + [0]    
                              = c_17(dfs#2#(@t,@t,@ts,@x))
        
        
        Following rules are (at-least) weakly oriented:
                           dfs#(@queue,@x) =  [4] @queue + [4]                             
                                           >= [4] @queue + [4]                             
                                           =  c_16(dfs#1#(@queue,@x))                      
        
                  dfs#2#(leaf(),@t,@ts,@x) =  [4] @ts + [8]                                
                                           >= [4] @ts + [8]                                
                                           =  c_19(dfs#(@ts,@x))                           
        
        dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) =  [4] @a + [4] @t1 + [4] @t2 + [4] @ts + [12]  
                                           >= [4] @t1 + [4] @t2 + [4] @ts + [12]           
                                           =  c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
        
        dfs#3#(#false(),@t,@t1,@t2,@ts,@x) =  [4] @t1 + [4] @t2 + [4] @ts + [6]            
                                           >= [4] @t1 + [4] @t2 + [4] @ts + [6]            
                                           =  c_21(dfs#(::(@t1,::(@t2,@ts)),@x))           
        
******* Step 8.b:4.b:6.b:1.b:1.b:1.a:2: Assumption WORST_CASE(?,O(1))
    + Considered Problem:
        - Strict DPs:
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
        - Weak DPs:
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
    + Details:
        ()

******* Step 8.b:4.b:6.b:1.b:1.b:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak DPs:
            dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
            dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
            dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
            dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
            dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        RemoveWeakSuffixes
    + Details:
        Consider the dependency graph
          1:W:dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
             -->_1 dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)):2
          
          2:W:dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
             -->_1 dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)):4
             -->_1 dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)):3
          
          3:W:dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
             -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):1
          
          4:W:dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
             -->_1 dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)):5
          
          5:W:dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
             -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):1
          
        The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
          1: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x))
          5: dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x))
          4: dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x))
          2: dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x))
          3: dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x))
******* Step 8.b:4.b:6.b:1.b:1.b:1.b:2: EmptyProcessor WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak TRS:
            #and(#false(),#false()) -> #false()
            #and(#false(),#true()) -> #false()
            #and(#true(),#false()) -> #false()
            #and(#true(),#true()) -> #true()
            #eq(#0(),#0()) -> #true()
            #eq(#0(),#neg(@y)) -> #false()
            #eq(#0(),#pos(@y)) -> #false()
            #eq(#0(),#s(@y)) -> #false()
            #eq(#neg(@x),#0()) -> #false()
            #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
            #eq(#neg(@x),#pos(@y)) -> #false()
            #eq(#pos(@x),#0()) -> #false()
            #eq(#pos(@x),#neg(@y)) -> #false()
            #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
            #eq(#s(@x),#0()) -> #false()
            #eq(#s(@x),#s(@y)) -> #eq(@x,@y)
            #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
            #eq(::(@x_1,@x_2),leaf()) -> #false()
            #eq(::(@x_1,@x_2),nil()) -> #false()
            #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(leaf(),::(@y_1,@y_2)) -> #false()
            #eq(leaf(),leaf()) -> #true()
            #eq(leaf(),nil()) -> #false()
            #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(nil(),::(@y_1,@y_2)) -> #false()
            #eq(nil(),leaf()) -> #false()
            #eq(nil(),nil()) -> #true()
            #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false()
            #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),nil()) -> #false()
            #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3)))
            #equal(@x,@y) -> #eq(@x,@y)
        - Signature:
            {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2
            ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2
            ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4
            ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3
            ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1
            ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0
            ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0
            ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#
            ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#
            ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node}
    + Applied Processor:
        EmptyProcessor
    + Details:
        The problem is already closed. The intended complexity is O(1).

WORST_CASE(?,O(n^3))