* Step 1: Sum WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict TRS:
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult(@t,@acc) -> bftMult'(tuple#2(::(@t,nil()),nil()),@acc)
            bftMult'(@queue,@acc) -> bftMult'#1(bftMult'#2(@queue),@acc)
            bftMult'#1(tuple#2(@elem,@queue),@acc) -> bftMult'#3(@elem,@acc,@queue)
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            bftMult'#3(::(@t,@_@3),@acc,@queue) -> bftMult'#4(@t,@acc,@queue)
            bftMult'#3(nil(),@acc,@queue) -> @acc
            bftMult'#4(leaf(),@acc,@queue) -> bftMult'(@queue,@acc)
            bftMult'#4(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5(@queue',@acc,@y) -> bftMult'(@queue',matrixMult(@acc,@y))
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3
            ,tuple#2/2}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add,#mult,#natmult,#pred,#succ,*,+,appendreverse
            ,appendreverse#1,bftMult,bftMult',bftMult'#1,bftMult'#2,bftMult'#3,bftMult'#4,bftMult'#5,computeLine
            ,computeLine#1,computeLine#2,dequeue,dequeue#1,dequeue#2,enqueue,enqueue#1,lineMult,lineMult#1,lineMult#2
            ,matrixMult,matrixMult#1,reverse} and constructors {#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
    + Applied Processor:
        Sum {left = someStrategy, right = someStrategy}
    + Details:
        ()
* Step 2: DependencyPairs WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict TRS:
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult(@t,@acc) -> bftMult'(tuple#2(::(@t,nil()),nil()),@acc)
            bftMult'(@queue,@acc) -> bftMult'#1(bftMult'#2(@queue),@acc)
            bftMult'#1(tuple#2(@elem,@queue),@acc) -> bftMult'#3(@elem,@acc,@queue)
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            bftMult'#3(::(@t,@_@3),@acc,@queue) -> bftMult'#4(@t,@acc,@queue)
            bftMult'#3(nil(),@acc,@queue) -> @acc
            bftMult'#4(leaf(),@acc,@queue) -> bftMult'(@queue,@acc)
            bftMult'#4(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5(@queue',@acc,@y) -> bftMult'(@queue',matrixMult(@acc,@y))
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3
            ,tuple#2/2}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add,#mult,#natmult,#pred,#succ,*,+,appendreverse
            ,appendreverse#1,bftMult,bftMult',bftMult'#1,bftMult'#2,bftMult'#3,bftMult'#4,bftMult'#5,computeLine
            ,computeLine#1,computeLine#2,dequeue,dequeue#1,dequeue#2,enqueue,enqueue#1,lineMult,lineMult#1,lineMult#2
            ,matrixMult,matrixMult#1,reverse} and constructors {#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
    + Applied Processor:
        DependencyPairs {dpKind_ = DT}
    + Details:
        We add the following dependency tuples:
        
        Strict DPs
          *#(@x,@y) -> c_1(#mult#(@x,@y))
          +#(@x,@y) -> c_2(#add#(@x,@y))
          appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
          appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
          appendreverse#1#(nil(),@sofar) -> c_5()
          bftMult#(@t,@acc) -> c_6(bftMult'#(tuple#2(::(@t,nil()),nil()),@acc))
          bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
          bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
          bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
          bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
          bftMult'#3#(nil(),@acc,@queue) -> c_11()
          bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
          bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
                                                           ,enqueue#(@t2,enqueue(@t1,@queue))
                                                           ,enqueue#(@t1,@queue))
          bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
          computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
          computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
          computeLine#1#(nil(),@acc,@m) -> c_17()
          computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                        ,lineMult#(@x,@l,@acc))
          computeLine#2#(nil(),@acc,@x,@xs) -> c_19()
          dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
          dequeue#1#(::(@t,@ts),@inq) -> c_21()
          dequeue#1#(nil(),@inq) -> c_22(dequeue#2#(reverse(@inq)),reverse#(@inq))
          dequeue#2#(::(@t,@ts)) -> c_23()
          dequeue#2#(nil()) -> c_24()
          enqueue#(@t,@queue) -> c_25(enqueue#1#(@queue,@t))
          enqueue#1#(tuple#2(@outq,@inq),@t) -> c_26()
          lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
          lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
          lineMult#1#(nil(),@l2,@n) -> c_29()
          lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(+#(*(@x,@n),@y),*#(@x,@n),lineMult#(@n,@xs,@ys))
          lineMult#2#(nil(),@n,@x,@xs) -> c_31(*#(@x,@n),lineMult#(@n,@xs,nil()))
          matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
          matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
          matrixMult#1#(nil(),@m2) -> c_34()
          reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
        Weak DPs
          #add#(#0(),@y) -> c_36()
          #add#(#neg(#s(#0())),@y) -> c_37(#pred#(@y))
          #add#(#neg(#s(#s(@x))),@y) -> c_38(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
          #add#(#pos(#s(#0())),@y) -> c_39(#succ#(@y))
          #add#(#pos(#s(#s(@x))),@y) -> c_40(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
          #mult#(#0(),#0()) -> c_41()
          #mult#(#0(),#neg(@y)) -> c_42()
          #mult#(#0(),#pos(@y)) -> c_43()
          #mult#(#neg(@x),#0()) -> c_44()
          #mult#(#neg(@x),#neg(@y)) -> c_45(#natmult#(@x,@y))
          #mult#(#neg(@x),#pos(@y)) -> c_46(#natmult#(@x,@y))
          #mult#(#pos(@x),#0()) -> c_47()
          #mult#(#pos(@x),#neg(@y)) -> c_48(#natmult#(@x,@y))
          #mult#(#pos(@x),#pos(@y)) -> c_49(#natmult#(@x,@y))
          #natmult#(#0(),@y) -> c_50()
          #natmult#(#s(@x),@y) -> c_51(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y))
          #pred#(#0()) -> c_52()
          #pred#(#neg(#s(@x))) -> c_53()
          #pred#(#pos(#s(#0()))) -> c_54()
          #pred#(#pos(#s(#s(@x)))) -> c_55()
          #succ#(#0()) -> c_56()
          #succ#(#neg(#s(#0()))) -> c_57()
          #succ#(#neg(#s(#s(@x)))) -> c_58()
          #succ#(#pos(#s(@x))) -> c_59()
        
        and mark the set of starting terms.
* Step 3: UsableRules WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict DPs:
            *#(@x,@y) -> c_1(#mult#(@x,@y))
            +#(@x,@y) -> c_2(#add#(@x,@y))
            appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
            appendreverse#1#(nil(),@sofar) -> c_5()
            bftMult#(@t,@acc) -> c_6(bftMult'#(tuple#2(::(@t,nil()),nil()),@acc))
            bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
            bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
            bftMult'#3#(nil(),@acc,@queue) -> c_11()
            bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
                                                             ,enqueue#(@t2,enqueue(@t1,@queue))
                                                             ,enqueue#(@t1,@queue))
            bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
            computeLine#1#(nil(),@acc,@m) -> c_17()
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            computeLine#2#(nil(),@acc,@x,@xs) -> c_19()
            dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
            dequeue#1#(::(@t,@ts),@inq) -> c_21()
            dequeue#1#(nil(),@inq) -> c_22(dequeue#2#(reverse(@inq)),reverse#(@inq))
            dequeue#2#(::(@t,@ts)) -> c_23()
            dequeue#2#(nil()) -> c_24()
            enqueue#(@t,@queue) -> c_25(enqueue#1#(@queue,@t))
            enqueue#1#(tuple#2(@outq,@inq),@t) -> c_26()
            lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
            lineMult#1#(nil(),@l2,@n) -> c_29()
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(+#(*(@x,@n),@y),*#(@x,@n),lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_31(*#(@x,@n),lineMult#(@n,@xs,nil()))
            matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
            matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
            matrixMult#1#(nil(),@m2) -> c_34()
            reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
        - Weak DPs:
            #add#(#0(),@y) -> c_36()
            #add#(#neg(#s(#0())),@y) -> c_37(#pred#(@y))
            #add#(#neg(#s(#s(@x))),@y) -> c_38(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
            #add#(#pos(#s(#0())),@y) -> c_39(#succ#(@y))
            #add#(#pos(#s(#s(@x))),@y) -> c_40(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
            #mult#(#0(),#0()) -> c_41()
            #mult#(#0(),#neg(@y)) -> c_42()
            #mult#(#0(),#pos(@y)) -> c_43()
            #mult#(#neg(@x),#0()) -> c_44()
            #mult#(#neg(@x),#neg(@y)) -> c_45(#natmult#(@x,@y))
            #mult#(#neg(@x),#pos(@y)) -> c_46(#natmult#(@x,@y))
            #mult#(#pos(@x),#0()) -> c_47()
            #mult#(#pos(@x),#neg(@y)) -> c_48(#natmult#(@x,@y))
            #mult#(#pos(@x),#pos(@y)) -> c_49(#natmult#(@x,@y))
            #natmult#(#0(),@y) -> c_50()
            #natmult#(#s(@x),@y) -> c_51(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y))
            #pred#(#0()) -> c_52()
            #pred#(#neg(#s(@x))) -> c_53()
            #pred#(#pos(#s(#0()))) -> c_54()
            #pred#(#pos(#s(#s(@x)))) -> c_55()
            #succ#(#0()) -> c_56()
            #succ#(#neg(#s(#0()))) -> c_57()
            #succ#(#neg(#s(#s(@x)))) -> c_58()
            #succ#(#pos(#s(@x))) -> c_59()
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult(@t,@acc) -> bftMult'(tuple#2(::(@t,nil()),nil()),@acc)
            bftMult'(@queue,@acc) -> bftMult'#1(bftMult'#2(@queue),@acc)
            bftMult'#1(tuple#2(@elem,@queue),@acc) -> bftMult'#3(@elem,@acc,@queue)
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            bftMult'#3(::(@t,@_@3),@acc,@queue) -> bftMult'#4(@t,@acc,@queue)
            bftMult'#3(nil(),@acc,@queue) -> @acc
            bftMult'#4(leaf(),@acc,@queue) -> bftMult'(@queue,@acc)
            bftMult'#4(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5(@queue',@acc,@y) -> bftMult'(@queue',matrixMult(@acc,@y))
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/3,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/2,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/3,c_31/2,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        UsableRules
    + Details:
        We replace rewrite rules by usable rules:
          #add(#0(),@y) -> @y
          #add(#neg(#s(#0())),@y) -> #pred(@y)
          #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
          #add(#pos(#s(#0())),@y) -> #succ(@y)
          #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
          #mult(#0(),#0()) -> #0()
          #mult(#0(),#neg(@y)) -> #0()
          #mult(#0(),#pos(@y)) -> #0()
          #mult(#neg(@x),#0()) -> #0()
          #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
          #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
          #mult(#pos(@x),#0()) -> #0()
          #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
          #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
          #natmult(#0(),@y) -> #0()
          #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
          #pred(#0()) -> #neg(#s(#0()))
          #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
          #pred(#pos(#s(#0()))) -> #0()
          #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
          #succ(#0()) -> #pos(#s(#0()))
          #succ(#neg(#s(#0()))) -> #0()
          #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
          #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
          *(@x,@y) -> #mult(@x,@y)
          +(@x,@y) -> #add(@x,@y)
          appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
          appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
          appendreverse#1(nil(),@sofar) -> @sofar
          bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
          computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
          computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
          computeLine#1(nil(),@acc,@m) -> @acc
          computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
          computeLine#2(nil(),@acc,@x,@xs) -> nil()
          dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
          dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
          dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
          dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
          dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
          enqueue(@t,@queue) -> enqueue#1(@queue,@t)
          enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
          lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
          lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
          lineMult#1(nil(),@l2,@n) -> nil()
          lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
          lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
          matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
          matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
          matrixMult#1(nil(),@m2) -> nil()
          reverse(@xs) -> appendreverse(@xs,nil())
          #add#(#0(),@y) -> c_36()
          #add#(#neg(#s(#0())),@y) -> c_37(#pred#(@y))
          #add#(#neg(#s(#s(@x))),@y) -> c_38(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
          #add#(#pos(#s(#0())),@y) -> c_39(#succ#(@y))
          #add#(#pos(#s(#s(@x))),@y) -> c_40(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
          #mult#(#0(),#0()) -> c_41()
          #mult#(#0(),#neg(@y)) -> c_42()
          #mult#(#0(),#pos(@y)) -> c_43()
          #mult#(#neg(@x),#0()) -> c_44()
          #mult#(#neg(@x),#neg(@y)) -> c_45(#natmult#(@x,@y))
          #mult#(#neg(@x),#pos(@y)) -> c_46(#natmult#(@x,@y))
          #mult#(#pos(@x),#0()) -> c_47()
          #mult#(#pos(@x),#neg(@y)) -> c_48(#natmult#(@x,@y))
          #mult#(#pos(@x),#pos(@y)) -> c_49(#natmult#(@x,@y))
          #natmult#(#0(),@y) -> c_50()
          #natmult#(#s(@x),@y) -> c_51(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y))
          #pred#(#0()) -> c_52()
          #pred#(#neg(#s(@x))) -> c_53()
          #pred#(#pos(#s(#0()))) -> c_54()
          #pred#(#pos(#s(#s(@x)))) -> c_55()
          #succ#(#0()) -> c_56()
          #succ#(#neg(#s(#0()))) -> c_57()
          #succ#(#neg(#s(#s(@x)))) -> c_58()
          #succ#(#pos(#s(@x))) -> c_59()
          *#(@x,@y) -> c_1(#mult#(@x,@y))
          +#(@x,@y) -> c_2(#add#(@x,@y))
          appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
          appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
          appendreverse#1#(nil(),@sofar) -> c_5()
          bftMult#(@t,@acc) -> c_6(bftMult'#(tuple#2(::(@t,nil()),nil()),@acc))
          bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
          bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
          bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
          bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
          bftMult'#3#(nil(),@acc,@queue) -> c_11()
          bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
          bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
                                                           ,enqueue#(@t2,enqueue(@t1,@queue))
                                                           ,enqueue#(@t1,@queue))
          bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
          computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
          computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
          computeLine#1#(nil(),@acc,@m) -> c_17()
          computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                        ,lineMult#(@x,@l,@acc))
          computeLine#2#(nil(),@acc,@x,@xs) -> c_19()
          dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
          dequeue#1#(::(@t,@ts),@inq) -> c_21()
          dequeue#1#(nil(),@inq) -> c_22(dequeue#2#(reverse(@inq)),reverse#(@inq))
          dequeue#2#(::(@t,@ts)) -> c_23()
          dequeue#2#(nil()) -> c_24()
          enqueue#(@t,@queue) -> c_25(enqueue#1#(@queue,@t))
          enqueue#1#(tuple#2(@outq,@inq),@t) -> c_26()
          lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
          lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
          lineMult#1#(nil(),@l2,@n) -> c_29()
          lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(+#(*(@x,@n),@y),*#(@x,@n),lineMult#(@n,@xs,@ys))
          lineMult#2#(nil(),@n,@x,@xs) -> c_31(*#(@x,@n),lineMult#(@n,@xs,nil()))
          matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
          matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
          matrixMult#1#(nil(),@m2) -> c_34()
          reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
* Step 4: PredecessorEstimation WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict DPs:
            *#(@x,@y) -> c_1(#mult#(@x,@y))
            +#(@x,@y) -> c_2(#add#(@x,@y))
            appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
            appendreverse#1#(nil(),@sofar) -> c_5()
            bftMult#(@t,@acc) -> c_6(bftMult'#(tuple#2(::(@t,nil()),nil()),@acc))
            bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
            bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
            bftMult'#3#(nil(),@acc,@queue) -> c_11()
            bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
                                                             ,enqueue#(@t2,enqueue(@t1,@queue))
                                                             ,enqueue#(@t1,@queue))
            bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
            computeLine#1#(nil(),@acc,@m) -> c_17()
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            computeLine#2#(nil(),@acc,@x,@xs) -> c_19()
            dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
            dequeue#1#(::(@t,@ts),@inq) -> c_21()
            dequeue#1#(nil(),@inq) -> c_22(dequeue#2#(reverse(@inq)),reverse#(@inq))
            dequeue#2#(::(@t,@ts)) -> c_23()
            dequeue#2#(nil()) -> c_24()
            enqueue#(@t,@queue) -> c_25(enqueue#1#(@queue,@t))
            enqueue#1#(tuple#2(@outq,@inq),@t) -> c_26()
            lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
            lineMult#1#(nil(),@l2,@n) -> c_29()
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(+#(*(@x,@n),@y),*#(@x,@n),lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_31(*#(@x,@n),lineMult#(@n,@xs,nil()))
            matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
            matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
            matrixMult#1#(nil(),@m2) -> c_34()
            reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
        - Weak DPs:
            #add#(#0(),@y) -> c_36()
            #add#(#neg(#s(#0())),@y) -> c_37(#pred#(@y))
            #add#(#neg(#s(#s(@x))),@y) -> c_38(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
            #add#(#pos(#s(#0())),@y) -> c_39(#succ#(@y))
            #add#(#pos(#s(#s(@x))),@y) -> c_40(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
            #mult#(#0(),#0()) -> c_41()
            #mult#(#0(),#neg(@y)) -> c_42()
            #mult#(#0(),#pos(@y)) -> c_43()
            #mult#(#neg(@x),#0()) -> c_44()
            #mult#(#neg(@x),#neg(@y)) -> c_45(#natmult#(@x,@y))
            #mult#(#neg(@x),#pos(@y)) -> c_46(#natmult#(@x,@y))
            #mult#(#pos(@x),#0()) -> c_47()
            #mult#(#pos(@x),#neg(@y)) -> c_48(#natmult#(@x,@y))
            #mult#(#pos(@x),#pos(@y)) -> c_49(#natmult#(@x,@y))
            #natmult#(#0(),@y) -> c_50()
            #natmult#(#s(@x),@y) -> c_51(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y))
            #pred#(#0()) -> c_52()
            #pred#(#neg(#s(@x))) -> c_53()
            #pred#(#pos(#s(#0()))) -> c_54()
            #pred#(#pos(#s(#s(@x)))) -> c_55()
            #succ#(#0()) -> c_56()
            #succ#(#neg(#s(#0()))) -> c_57()
            #succ#(#neg(#s(#s(@x)))) -> c_58()
            #succ#(#pos(#s(@x))) -> c_59()
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/3,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/2,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/3,c_31/2,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        PredecessorEstimation {onSelection = all simple predecessor estimation selector}
    + Details:
        We estimate the number of application of
          {1,2,5,11,17,19,21,23,24,26,29,34}
        by application of
          Pre({1,2,5,11,17,19,21,23,24,26,29,34}) = {3,8,15,16,20,22,25,27,30,31,32}.
        Here rules are labelled as follows:
          1: *#(@x,@y) -> c_1(#mult#(@x,@y))
          2: +#(@x,@y) -> c_2(#add#(@x,@y))
          3: appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
          4: appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
          5: appendreverse#1#(nil(),@sofar) -> c_5()
          6: bftMult#(@t,@acc) -> c_6(bftMult'#(tuple#2(::(@t,nil()),nil()),@acc))
          7: bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
          8: bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
          9: bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
          10: bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
          11: bftMult'#3#(nil(),@acc,@queue) -> c_11()
          12: bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
          13: bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
                                                               ,enqueue#(@t2,enqueue(@t1,@queue))
                                                               ,enqueue#(@t1,@queue))
          14: bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
          15: computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
          16: computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
          17: computeLine#1#(nil(),@acc,@m) -> c_17()
          18: computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                            ,lineMult#(@x,@l,@acc))
          19: computeLine#2#(nil(),@acc,@x,@xs) -> c_19()
          20: dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
          21: dequeue#1#(::(@t,@ts),@inq) -> c_21()
          22: dequeue#1#(nil(),@inq) -> c_22(dequeue#2#(reverse(@inq)),reverse#(@inq))
          23: dequeue#2#(::(@t,@ts)) -> c_23()
          24: dequeue#2#(nil()) -> c_24()
          25: enqueue#(@t,@queue) -> c_25(enqueue#1#(@queue,@t))
          26: enqueue#1#(tuple#2(@outq,@inq),@t) -> c_26()
          27: lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
          28: lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
          29: lineMult#1#(nil(),@l2,@n) -> c_29()
          30: lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(+#(*(@x,@n),@y),*#(@x,@n),lineMult#(@n,@xs,@ys))
          31: lineMult#2#(nil(),@n,@x,@xs) -> c_31(*#(@x,@n),lineMult#(@n,@xs,nil()))
          32: matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
          33: matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
          34: matrixMult#1#(nil(),@m2) -> c_34()
          35: reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
          36: #add#(#0(),@y) -> c_36()
          37: #add#(#neg(#s(#0())),@y) -> c_37(#pred#(@y))
          38: #add#(#neg(#s(#s(@x))),@y) -> c_38(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
          39: #add#(#pos(#s(#0())),@y) -> c_39(#succ#(@y))
          40: #add#(#pos(#s(#s(@x))),@y) -> c_40(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
          41: #mult#(#0(),#0()) -> c_41()
          42: #mult#(#0(),#neg(@y)) -> c_42()
          43: #mult#(#0(),#pos(@y)) -> c_43()
          44: #mult#(#neg(@x),#0()) -> c_44()
          45: #mult#(#neg(@x),#neg(@y)) -> c_45(#natmult#(@x,@y))
          46: #mult#(#neg(@x),#pos(@y)) -> c_46(#natmult#(@x,@y))
          47: #mult#(#pos(@x),#0()) -> c_47()
          48: #mult#(#pos(@x),#neg(@y)) -> c_48(#natmult#(@x,@y))
          49: #mult#(#pos(@x),#pos(@y)) -> c_49(#natmult#(@x,@y))
          50: #natmult#(#0(),@y) -> c_50()
          51: #natmult#(#s(@x),@y) -> c_51(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y))
          52: #pred#(#0()) -> c_52()
          53: #pred#(#neg(#s(@x))) -> c_53()
          54: #pred#(#pos(#s(#0()))) -> c_54()
          55: #pred#(#pos(#s(#s(@x)))) -> c_55()
          56: #succ#(#0()) -> c_56()
          57: #succ#(#neg(#s(#0()))) -> c_57()
          58: #succ#(#neg(#s(#s(@x)))) -> c_58()
          59: #succ#(#pos(#s(@x))) -> c_59()
* Step 5: PredecessorEstimation WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict DPs:
            appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
            bftMult#(@t,@acc) -> c_6(bftMult'#(tuple#2(::(@t,nil()),nil()),@acc))
            bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
            bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
            bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
                                                             ,enqueue#(@t2,enqueue(@t1,@queue))
                                                             ,enqueue#(@t1,@queue))
            bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
            dequeue#1#(nil(),@inq) -> c_22(dequeue#2#(reverse(@inq)),reverse#(@inq))
            enqueue#(@t,@queue) -> c_25(enqueue#1#(@queue,@t))
            lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(+#(*(@x,@n),@y),*#(@x,@n),lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_31(*#(@x,@n),lineMult#(@n,@xs,nil()))
            matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
            matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
            reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
        - Weak DPs:
            #add#(#0(),@y) -> c_36()
            #add#(#neg(#s(#0())),@y) -> c_37(#pred#(@y))
            #add#(#neg(#s(#s(@x))),@y) -> c_38(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
            #add#(#pos(#s(#0())),@y) -> c_39(#succ#(@y))
            #add#(#pos(#s(#s(@x))),@y) -> c_40(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
            #mult#(#0(),#0()) -> c_41()
            #mult#(#0(),#neg(@y)) -> c_42()
            #mult#(#0(),#pos(@y)) -> c_43()
            #mult#(#neg(@x),#0()) -> c_44()
            #mult#(#neg(@x),#neg(@y)) -> c_45(#natmult#(@x,@y))
            #mult#(#neg(@x),#pos(@y)) -> c_46(#natmult#(@x,@y))
            #mult#(#pos(@x),#0()) -> c_47()
            #mult#(#pos(@x),#neg(@y)) -> c_48(#natmult#(@x,@y))
            #mult#(#pos(@x),#pos(@y)) -> c_49(#natmult#(@x,@y))
            #natmult#(#0(),@y) -> c_50()
            #natmult#(#s(@x),@y) -> c_51(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y))
            #pred#(#0()) -> c_52()
            #pred#(#neg(#s(@x))) -> c_53()
            #pred#(#pos(#s(#0()))) -> c_54()
            #pred#(#pos(#s(#s(@x)))) -> c_55()
            #succ#(#0()) -> c_56()
            #succ#(#neg(#s(#0()))) -> c_57()
            #succ#(#neg(#s(#s(@x)))) -> c_58()
            #succ#(#pos(#s(@x))) -> c_59()
            *#(@x,@y) -> c_1(#mult#(@x,@y))
            +#(@x,@y) -> c_2(#add#(@x,@y))
            appendreverse#1#(nil(),@sofar) -> c_5()
            bftMult'#3#(nil(),@acc,@queue) -> c_11()
            computeLine#1#(nil(),@acc,@m) -> c_17()
            computeLine#2#(nil(),@acc,@x,@xs) -> c_19()
            dequeue#1#(::(@t,@ts),@inq) -> c_21()
            dequeue#2#(::(@t,@ts)) -> c_23()
            dequeue#2#(nil()) -> c_24()
            enqueue#1#(tuple#2(@outq,@inq),@t) -> c_26()
            lineMult#1#(nil(),@l2,@n) -> c_29()
            matrixMult#1#(nil(),@m2) -> c_34()
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/3,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/2,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/3,c_31/2,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        PredecessorEstimation {onSelection = all simple predecessor estimation selector}
    + Details:
        We estimate the number of application of
          {16}
        by application of
          Pre({16}) = {9}.
        Here rules are labelled as follows:
          1: appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
          2: appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
          3: bftMult#(@t,@acc) -> c_6(bftMult'#(tuple#2(::(@t,nil()),nil()),@acc))
          4: bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
          5: bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
          6: bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
          7: bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
          8: bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
          9: bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
                                                              ,enqueue#(@t2,enqueue(@t1,@queue))
                                                              ,enqueue#(@t1,@queue))
          10: bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
          11: computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
          12: computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
          13: computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                            ,lineMult#(@x,@l,@acc))
          14: dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
          15: dequeue#1#(nil(),@inq) -> c_22(dequeue#2#(reverse(@inq)),reverse#(@inq))
          16: enqueue#(@t,@queue) -> c_25(enqueue#1#(@queue,@t))
          17: lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
          18: lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
          19: lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(+#(*(@x,@n),@y),*#(@x,@n),lineMult#(@n,@xs,@ys))
          20: lineMult#2#(nil(),@n,@x,@xs) -> c_31(*#(@x,@n),lineMult#(@n,@xs,nil()))
          21: matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
          22: matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
          23: reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
          24: #add#(#0(),@y) -> c_36()
          25: #add#(#neg(#s(#0())),@y) -> c_37(#pred#(@y))
          26: #add#(#neg(#s(#s(@x))),@y) -> c_38(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
          27: #add#(#pos(#s(#0())),@y) -> c_39(#succ#(@y))
          28: #add#(#pos(#s(#s(@x))),@y) -> c_40(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
          29: #mult#(#0(),#0()) -> c_41()
          30: #mult#(#0(),#neg(@y)) -> c_42()
          31: #mult#(#0(),#pos(@y)) -> c_43()
          32: #mult#(#neg(@x),#0()) -> c_44()
          33: #mult#(#neg(@x),#neg(@y)) -> c_45(#natmult#(@x,@y))
          34: #mult#(#neg(@x),#pos(@y)) -> c_46(#natmult#(@x,@y))
          35: #mult#(#pos(@x),#0()) -> c_47()
          36: #mult#(#pos(@x),#neg(@y)) -> c_48(#natmult#(@x,@y))
          37: #mult#(#pos(@x),#pos(@y)) -> c_49(#natmult#(@x,@y))
          38: #natmult#(#0(),@y) -> c_50()
          39: #natmult#(#s(@x),@y) -> c_51(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y))
          40: #pred#(#0()) -> c_52()
          41: #pred#(#neg(#s(@x))) -> c_53()
          42: #pred#(#pos(#s(#0()))) -> c_54()
          43: #pred#(#pos(#s(#s(@x)))) -> c_55()
          44: #succ#(#0()) -> c_56()
          45: #succ#(#neg(#s(#0()))) -> c_57()
          46: #succ#(#neg(#s(#s(@x)))) -> c_58()
          47: #succ#(#pos(#s(@x))) -> c_59()
          48: *#(@x,@y) -> c_1(#mult#(@x,@y))
          49: +#(@x,@y) -> c_2(#add#(@x,@y))
          50: appendreverse#1#(nil(),@sofar) -> c_5()
          51: bftMult'#3#(nil(),@acc,@queue) -> c_11()
          52: computeLine#1#(nil(),@acc,@m) -> c_17()
          53: computeLine#2#(nil(),@acc,@x,@xs) -> c_19()
          54: dequeue#1#(::(@t,@ts),@inq) -> c_21()
          55: dequeue#2#(::(@t,@ts)) -> c_23()
          56: dequeue#2#(nil()) -> c_24()
          57: enqueue#1#(tuple#2(@outq,@inq),@t) -> c_26()
          58: lineMult#1#(nil(),@l2,@n) -> c_29()
          59: matrixMult#1#(nil(),@m2) -> c_34()
* Step 6: RemoveWeakSuffixes WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict DPs:
            appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
            bftMult#(@t,@acc) -> c_6(bftMult'#(tuple#2(::(@t,nil()),nil()),@acc))
            bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
            bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
            bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
                                                             ,enqueue#(@t2,enqueue(@t1,@queue))
                                                             ,enqueue#(@t1,@queue))
            bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
            dequeue#1#(nil(),@inq) -> c_22(dequeue#2#(reverse(@inq)),reverse#(@inq))
            lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(+#(*(@x,@n),@y),*#(@x,@n),lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_31(*#(@x,@n),lineMult#(@n,@xs,nil()))
            matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
            matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
            reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
        - Weak DPs:
            #add#(#0(),@y) -> c_36()
            #add#(#neg(#s(#0())),@y) -> c_37(#pred#(@y))
            #add#(#neg(#s(#s(@x))),@y) -> c_38(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
            #add#(#pos(#s(#0())),@y) -> c_39(#succ#(@y))
            #add#(#pos(#s(#s(@x))),@y) -> c_40(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
            #mult#(#0(),#0()) -> c_41()
            #mult#(#0(),#neg(@y)) -> c_42()
            #mult#(#0(),#pos(@y)) -> c_43()
            #mult#(#neg(@x),#0()) -> c_44()
            #mult#(#neg(@x),#neg(@y)) -> c_45(#natmult#(@x,@y))
            #mult#(#neg(@x),#pos(@y)) -> c_46(#natmult#(@x,@y))
            #mult#(#pos(@x),#0()) -> c_47()
            #mult#(#pos(@x),#neg(@y)) -> c_48(#natmult#(@x,@y))
            #mult#(#pos(@x),#pos(@y)) -> c_49(#natmult#(@x,@y))
            #natmult#(#0(),@y) -> c_50()
            #natmult#(#s(@x),@y) -> c_51(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y))
            #pred#(#0()) -> c_52()
            #pred#(#neg(#s(@x))) -> c_53()
            #pred#(#pos(#s(#0()))) -> c_54()
            #pred#(#pos(#s(#s(@x)))) -> c_55()
            #succ#(#0()) -> c_56()
            #succ#(#neg(#s(#0()))) -> c_57()
            #succ#(#neg(#s(#s(@x)))) -> c_58()
            #succ#(#pos(#s(@x))) -> c_59()
            *#(@x,@y) -> c_1(#mult#(@x,@y))
            +#(@x,@y) -> c_2(#add#(@x,@y))
            appendreverse#1#(nil(),@sofar) -> c_5()
            bftMult'#3#(nil(),@acc,@queue) -> c_11()
            computeLine#1#(nil(),@acc,@m) -> c_17()
            computeLine#2#(nil(),@acc,@x,@xs) -> c_19()
            dequeue#1#(::(@t,@ts),@inq) -> c_21()
            dequeue#2#(::(@t,@ts)) -> c_23()
            dequeue#2#(nil()) -> c_24()
            enqueue#(@t,@queue) -> c_25(enqueue#1#(@queue,@t))
            enqueue#1#(tuple#2(@outq,@inq),@t) -> c_26()
            lineMult#1#(nil(),@l2,@n) -> c_29()
            matrixMult#1#(nil(),@m2) -> c_34()
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/3,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/2,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/3,c_31/2,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        RemoveWeakSuffixes
    + Details:
        Consider the dependency graph
          1:S:appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
             -->_1 appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar))):2
             -->_1 appendreverse#1#(nil(),@sofar) -> c_5():49
          
          2:S:appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
             -->_1 appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar)):1
          
          3:S:bftMult#(@t,@acc) -> c_6(bftMult'#(tuple#2(::(@t,nil()),nil()),@acc))
             -->_1 bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue)):4
          
          4:S:bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
             -->_2 bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2)):6
             -->_1 bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue)):5
          
          5:S:bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
             -->_1 bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue)):7
             -->_1 bftMult'#3#(nil(),@acc,@queue) -> c_11():50
          
          6:S:bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
             -->_1 dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq)):14
          
          7:S:bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
             -->_1 bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue))
                                                                                ,@acc
                                                                                ,@y)
                                                                    ,enqueue#(@t2,enqueue(@t1,@queue))
                                                                    ,enqueue#(@t1,@queue)):9
             -->_1 bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc)):8
          
          8:S:bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
             -->_1 bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue)):4
          
          9:S:bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
                                                               ,enqueue#(@t2,enqueue(@t1,@queue))
                                                               ,enqueue#(@t1,@queue))
             -->_3 enqueue#(@t,@queue) -> c_25(enqueue#1#(@queue,@t)):56
             -->_2 enqueue#(@t,@queue) -> c_25(enqueue#1#(@queue,@t)):56
             -->_1 bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y)):10
          
          10:S:bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
             -->_2 matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2)):20
             -->_1 bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue)):4
          
          11:S:computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
             -->_1 computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs)):12
             -->_1 computeLine#1#(nil(),@acc,@m) -> c_17():51
          
          12:S:computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
             -->_1 computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                                 ,lineMult#(@x,@l,@acc)):13
             -->_1 computeLine#2#(nil(),@acc,@x,@xs) -> c_19():52
          
          13:S:computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                             ,lineMult#(@x,@l,@acc))
             -->_2 lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n)):16
             -->_1 computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m)):11
          
          14:S:dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
             -->_1 dequeue#1#(nil(),@inq) -> c_22(dequeue#2#(reverse(@inq)),reverse#(@inq)):15
             -->_1 dequeue#1#(::(@t,@ts),@inq) -> c_21():53
          
          15:S:dequeue#1#(nil(),@inq) -> c_22(dequeue#2#(reverse(@inq)),reverse#(@inq))
             -->_2 reverse#(@xs) -> c_35(appendreverse#(@xs,nil())):22
             -->_1 dequeue#2#(nil()) -> c_24():55
             -->_1 dequeue#2#(::(@t,@ts)) -> c_23():54
          
          16:S:lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
             -->_1 lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs)):17
             -->_1 lineMult#1#(nil(),@l2,@n) -> c_29():58
          
          17:S:lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
             -->_1 lineMult#2#(nil(),@n,@x,@xs) -> c_31(*#(@x,@n),lineMult#(@n,@xs,nil())):19
             -->_1 lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(+#(*(@x,@n),@y),*#(@x,@n),lineMult#(@n,@xs,@ys)):18
          
          18:S:lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(+#(*(@x,@n),@y),*#(@x,@n),lineMult#(@n,@xs,@ys))
             -->_1 +#(@x,@y) -> c_2(#add#(@x,@y)):48
             -->_2 *#(@x,@y) -> c_1(#mult#(@x,@y)):47
             -->_3 lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n)):16
          
          19:S:lineMult#2#(nil(),@n,@x,@xs) -> c_31(*#(@x,@n),lineMult#(@n,@xs,nil()))
             -->_1 *#(@x,@y) -> c_1(#mult#(@x,@y)):47
             -->_2 lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n)):16
          
          20:S:matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
             -->_1 matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2)):21
             -->_1 matrixMult#1#(nil(),@m2) -> c_34():59
          
          21:S:matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
             -->_2 matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2)):20
             -->_1 computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m)):11
          
          22:S:reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
             -->_1 appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar)):1
          
          23:W:#add#(#0(),@y) -> c_36()
             
          
          24:W:#add#(#neg(#s(#0())),@y) -> c_37(#pred#(@y))
             -->_1 #pred#(#pos(#s(#s(@x)))) -> c_55():42
             -->_1 #pred#(#pos(#s(#0()))) -> c_54():41
             -->_1 #pred#(#neg(#s(@x))) -> c_53():40
             -->_1 #pred#(#0()) -> c_52():39
          
          25:W:#add#(#neg(#s(#s(@x))),@y) -> c_38(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
             -->_2 #add#(#pos(#s(#s(@x))),@y) -> c_40(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):27
             -->_2 #add#(#pos(#s(#0())),@y) -> c_39(#succ#(@y)):26
             -->_1 #pred#(#pos(#s(#s(@x)))) -> c_55():42
             -->_1 #pred#(#pos(#s(#0()))) -> c_54():41
             -->_1 #pred#(#neg(#s(@x))) -> c_53():40
             -->_1 #pred#(#0()) -> c_52():39
          
          26:W:#add#(#pos(#s(#0())),@y) -> c_39(#succ#(@y))
             -->_1 #succ#(#pos(#s(@x))) -> c_59():46
             -->_1 #succ#(#neg(#s(#s(@x)))) -> c_58():45
             -->_1 #succ#(#neg(#s(#0()))) -> c_57():44
             -->_1 #succ#(#0()) -> c_56():43
          
          27:W:#add#(#pos(#s(#s(@x))),@y) -> c_40(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
             -->_1 #succ#(#pos(#s(@x))) -> c_59():46
             -->_1 #succ#(#neg(#s(#s(@x)))) -> c_58():45
             -->_1 #succ#(#neg(#s(#0()))) -> c_57():44
             -->_1 #succ#(#0()) -> c_56():43
             -->_2 #add#(#pos(#s(#s(@x))),@y) -> c_40(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):27
             -->_2 #add#(#pos(#s(#0())),@y) -> c_39(#succ#(@y)):26
          
          28:W:#mult#(#0(),#0()) -> c_41()
             
          
          29:W:#mult#(#0(),#neg(@y)) -> c_42()
             
          
          30:W:#mult#(#0(),#pos(@y)) -> c_43()
             
          
          31:W:#mult#(#neg(@x),#0()) -> c_44()
             
          
          32:W:#mult#(#neg(@x),#neg(@y)) -> c_45(#natmult#(@x,@y))
             -->_1 #natmult#(#s(@x),@y) -> c_51(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)):38
             -->_1 #natmult#(#0(),@y) -> c_50():37
          
          33:W:#mult#(#neg(@x),#pos(@y)) -> c_46(#natmult#(@x,@y))
             -->_1 #natmult#(#s(@x),@y) -> c_51(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)):38
             -->_1 #natmult#(#0(),@y) -> c_50():37
          
          34:W:#mult#(#pos(@x),#0()) -> c_47()
             
          
          35:W:#mult#(#pos(@x),#neg(@y)) -> c_48(#natmult#(@x,@y))
             -->_1 #natmult#(#s(@x),@y) -> c_51(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)):38
             -->_1 #natmult#(#0(),@y) -> c_50():37
          
          36:W:#mult#(#pos(@x),#pos(@y)) -> c_49(#natmult#(@x,@y))
             -->_1 #natmult#(#s(@x),@y) -> c_51(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)):38
             -->_1 #natmult#(#0(),@y) -> c_50():37
          
          37:W:#natmult#(#0(),@y) -> c_50()
             
          
          38:W:#natmult#(#s(@x),@y) -> c_51(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y))
             -->_2 #natmult#(#s(@x),@y) -> c_51(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)):38
             -->_2 #natmult#(#0(),@y) -> c_50():37
             -->_1 #add#(#pos(#s(#s(@x))),@y) -> c_40(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):27
             -->_1 #add#(#pos(#s(#0())),@y) -> c_39(#succ#(@y)):26
          
          39:W:#pred#(#0()) -> c_52()
             
          
          40:W:#pred#(#neg(#s(@x))) -> c_53()
             
          
          41:W:#pred#(#pos(#s(#0()))) -> c_54()
             
          
          42:W:#pred#(#pos(#s(#s(@x)))) -> c_55()
             
          
          43:W:#succ#(#0()) -> c_56()
             
          
          44:W:#succ#(#neg(#s(#0()))) -> c_57()
             
          
          45:W:#succ#(#neg(#s(#s(@x)))) -> c_58()
             
          
          46:W:#succ#(#pos(#s(@x))) -> c_59()
             
          
          47:W:*#(@x,@y) -> c_1(#mult#(@x,@y))
             -->_1 #mult#(#pos(@x),#pos(@y)) -> c_49(#natmult#(@x,@y)):36
             -->_1 #mult#(#pos(@x),#neg(@y)) -> c_48(#natmult#(@x,@y)):35
             -->_1 #mult#(#pos(@x),#0()) -> c_47():34
             -->_1 #mult#(#neg(@x),#pos(@y)) -> c_46(#natmult#(@x,@y)):33
             -->_1 #mult#(#neg(@x),#neg(@y)) -> c_45(#natmult#(@x,@y)):32
             -->_1 #mult#(#neg(@x),#0()) -> c_44():31
             -->_1 #mult#(#0(),#pos(@y)) -> c_43():30
             -->_1 #mult#(#0(),#neg(@y)) -> c_42():29
             -->_1 #mult#(#0(),#0()) -> c_41():28
          
          48:W:+#(@x,@y) -> c_2(#add#(@x,@y))
             -->_1 #add#(#pos(#s(#s(@x))),@y) -> c_40(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):27
             -->_1 #add#(#pos(#s(#0())),@y) -> c_39(#succ#(@y)):26
             -->_1 #add#(#neg(#s(#s(@x))),@y) -> c_38(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):25
             -->_1 #add#(#neg(#s(#0())),@y) -> c_37(#pred#(@y)):24
             -->_1 #add#(#0(),@y) -> c_36():23
          
          49:W:appendreverse#1#(nil(),@sofar) -> c_5()
             
          
          50:W:bftMult'#3#(nil(),@acc,@queue) -> c_11()
             
          
          51:W:computeLine#1#(nil(),@acc,@m) -> c_17()
             
          
          52:W:computeLine#2#(nil(),@acc,@x,@xs) -> c_19()
             
          
          53:W:dequeue#1#(::(@t,@ts),@inq) -> c_21()
             
          
          54:W:dequeue#2#(::(@t,@ts)) -> c_23()
             
          
          55:W:dequeue#2#(nil()) -> c_24()
             
          
          56:W:enqueue#(@t,@queue) -> c_25(enqueue#1#(@queue,@t))
             -->_1 enqueue#1#(tuple#2(@outq,@inq),@t) -> c_26():57
          
          57:W:enqueue#1#(tuple#2(@outq,@inq),@t) -> c_26()
             
          
          58:W:lineMult#1#(nil(),@l2,@n) -> c_29()
             
          
          59:W:matrixMult#1#(nil(),@m2) -> c_34()
             
          
        The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
          50: bftMult'#3#(nil(),@acc,@queue) -> c_11()
          59: matrixMult#1#(nil(),@m2) -> c_34()
          51: computeLine#1#(nil(),@acc,@m) -> c_17()
          52: computeLine#2#(nil(),@acc,@x,@xs) -> c_19()
          58: lineMult#1#(nil(),@l2,@n) -> c_29()
          48: +#(@x,@y) -> c_2(#add#(@x,@y))
          23: #add#(#0(),@y) -> c_36()
          24: #add#(#neg(#s(#0())),@y) -> c_37(#pred#(@y))
          25: #add#(#neg(#s(#s(@x))),@y) -> c_38(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
          39: #pred#(#0()) -> c_52()
          40: #pred#(#neg(#s(@x))) -> c_53()
          41: #pred#(#pos(#s(#0()))) -> c_54()
          42: #pred#(#pos(#s(#s(@x)))) -> c_55()
          47: *#(@x,@y) -> c_1(#mult#(@x,@y))
          28: #mult#(#0(),#0()) -> c_41()
          29: #mult#(#0(),#neg(@y)) -> c_42()
          30: #mult#(#0(),#pos(@y)) -> c_43()
          31: #mult#(#neg(@x),#0()) -> c_44()
          32: #mult#(#neg(@x),#neg(@y)) -> c_45(#natmult#(@x,@y))
          33: #mult#(#neg(@x),#pos(@y)) -> c_46(#natmult#(@x,@y))
          34: #mult#(#pos(@x),#0()) -> c_47()
          35: #mult#(#pos(@x),#neg(@y)) -> c_48(#natmult#(@x,@y))
          36: #mult#(#pos(@x),#pos(@y)) -> c_49(#natmult#(@x,@y))
          38: #natmult#(#s(@x),@y) -> c_51(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y))
          27: #add#(#pos(#s(#s(@x))),@y) -> c_40(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
          26: #add#(#pos(#s(#0())),@y) -> c_39(#succ#(@y))
          43: #succ#(#0()) -> c_56()
          44: #succ#(#neg(#s(#0()))) -> c_57()
          45: #succ#(#neg(#s(#s(@x)))) -> c_58()
          46: #succ#(#pos(#s(@x))) -> c_59()
          37: #natmult#(#0(),@y) -> c_50()
          56: enqueue#(@t,@queue) -> c_25(enqueue#1#(@queue,@t))
          57: enqueue#1#(tuple#2(@outq,@inq),@t) -> c_26()
          53: dequeue#1#(::(@t,@ts),@inq) -> c_21()
          54: dequeue#2#(::(@t,@ts)) -> c_23()
          55: dequeue#2#(nil()) -> c_24()
          49: appendreverse#1#(nil(),@sofar) -> c_5()
* Step 7: SimplifyRHS WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict DPs:
            appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
            bftMult#(@t,@acc) -> c_6(bftMult'#(tuple#2(::(@t,nil()),nil()),@acc))
            bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
            bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
            bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
                                                             ,enqueue#(@t2,enqueue(@t1,@queue))
                                                             ,enqueue#(@t1,@queue))
            bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
            dequeue#1#(nil(),@inq) -> c_22(dequeue#2#(reverse(@inq)),reverse#(@inq))
            lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(+#(*(@x,@n),@y),*#(@x,@n),lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_31(*#(@x,@n),lineMult#(@n,@xs,nil()))
            matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
            matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
            reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/3,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/2,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/3,c_31/2,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        SimplifyRHS
    + Details:
        Consider the dependency graph
          1:S:appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
             -->_1 appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar))):2
          
          2:S:appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
             -->_1 appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar)):1
          
          3:S:bftMult#(@t,@acc) -> c_6(bftMult'#(tuple#2(::(@t,nil()),nil()),@acc))
             -->_1 bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue)):4
          
          4:S:bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
             -->_2 bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2)):6
             -->_1 bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue)):5
          
          5:S:bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
             -->_1 bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue)):7
          
          6:S:bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
             -->_1 dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq)):14
          
          7:S:bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
             -->_1 bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue))
                                                                                ,@acc
                                                                                ,@y)
                                                                    ,enqueue#(@t2,enqueue(@t1,@queue))
                                                                    ,enqueue#(@t1,@queue)):9
             -->_1 bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc)):8
          
          8:S:bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
             -->_1 bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue)):4
          
          9:S:bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
                                                               ,enqueue#(@t2,enqueue(@t1,@queue))
                                                               ,enqueue#(@t1,@queue))
             -->_1 bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y))
                                                       ,matrixMult#(@acc,@y)):10
          
          10:S:bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
             -->_2 matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2)):20
             -->_1 bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue)):4
          
          11:S:computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
             -->_1 computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs)):12
          
          12:S:computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
             -->_1 computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                                 ,lineMult#(@x,@l,@acc)):13
          
          13:S:computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                             ,lineMult#(@x,@l,@acc))
             -->_2 lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n)):16
             -->_1 computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m)):11
          
          14:S:dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
             -->_1 dequeue#1#(nil(),@inq) -> c_22(dequeue#2#(reverse(@inq)),reverse#(@inq)):15
          
          15:S:dequeue#1#(nil(),@inq) -> c_22(dequeue#2#(reverse(@inq)),reverse#(@inq))
             -->_2 reverse#(@xs) -> c_35(appendreverse#(@xs,nil())):22
          
          16:S:lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
             -->_1 lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs)):17
          
          17:S:lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
             -->_1 lineMult#2#(nil(),@n,@x,@xs) -> c_31(*#(@x,@n),lineMult#(@n,@xs,nil())):19
             -->_1 lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(+#(*(@x,@n),@y),*#(@x,@n),lineMult#(@n,@xs,@ys)):18
          
          18:S:lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(+#(*(@x,@n),@y),*#(@x,@n),lineMult#(@n,@xs,@ys))
             -->_3 lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n)):16
          
          19:S:lineMult#2#(nil(),@n,@x,@xs) -> c_31(*#(@x,@n),lineMult#(@n,@xs,nil()))
             -->_2 lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n)):16
          
          20:S:matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
             -->_1 matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2)):21
          
          21:S:matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
             -->_2 matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2)):20
             -->_1 computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m)):11
          
          22:S:reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
             -->_1 appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar)):1
          
        Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified:
          bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
          dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
          lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
          lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
* Step 8: RemoveHeads WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict DPs:
            appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
            bftMult#(@t,@acc) -> c_6(bftMult'#(tuple#2(::(@t,nil()),nil()),@acc))
            bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
            bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
            bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
            dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
            lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
            matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
            matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
            reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        RemoveHeads
    + Details:
        Consider the dependency graph
        
        1:S:appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
           -->_1 appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar))):2
        
        2:S:appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
           -->_1 appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar)):1
        
        3:S:bftMult#(@t,@acc) -> c_6(bftMult'#(tuple#2(::(@t,nil()),nil()),@acc))
           -->_1 bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue)):4
        
        4:S:bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
           -->_2 bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2)):6
           -->_1 bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue)):5
        
        5:S:bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
           -->_1 bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue)):7
        
        6:S:bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
           -->_1 dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq)):14
        
        7:S:bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
           -->_1 bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue))
                                                                              ,@acc
                                                                              ,@y)):9
           -->_1 bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc)):8
        
        8:S:bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
           -->_1 bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue)):4
        
        9:S:bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
           -->_1 bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y))
                                                     ,matrixMult#(@acc,@y)):10
        
        10:S:bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
           -->_2 matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2)):20
           -->_1 bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue)):4
        
        11:S:computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
           -->_1 computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs)):12
        
        12:S:computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
           -->_1 computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                               ,lineMult#(@x,@l,@acc)):13
        
        13:S:computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                           ,lineMult#(@x,@l,@acc))
           -->_2 lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n)):16
           -->_1 computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m)):11
        
        14:S:dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
           -->_1 dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq)):15
        
        15:S:dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
           -->_1 reverse#(@xs) -> c_35(appendreverse#(@xs,nil())):22
        
        16:S:lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
           -->_1 lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs)):17
        
        17:S:lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
           -->_1 lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil())):19
           -->_1 lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys)):18
        
        18:S:lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
           -->_1 lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n)):16
        
        19:S:lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
           -->_1 lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n)):16
        
        20:S:matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
           -->_1 matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2)):21
        
        21:S:matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
           -->_2 matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2)):20
           -->_1 computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m)):11
        
        22:S:reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
           -->_1 appendreverse#(@toreverse,@sofar) -> c_3(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).
        
        [(3,bftMult#(@t,@acc) -> c_6(bftMult'#(tuple#2(::(@t,nil()),nil()),@acc)))]
* Step 9: Decompose WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict DPs:
            appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
            bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
            bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
            bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
            dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
            lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
            matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
            matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
            reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + 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_3(appendreverse#1#(@toreverse,@sofar))
              appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
          - Weak DPs:
              bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
              bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
              bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
              bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
              bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
              bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
              bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
              computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
              computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
              computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                            ,lineMult#(@x,@l,@acc))
              dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
              dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
              lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
              lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
              lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
              lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
              matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
              matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
              reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
          - Weak TRS:
              #add(#0(),@y) -> @y
              #add(#neg(#s(#0())),@y) -> #pred(@y)
              #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
              #add(#pos(#s(#0())),@y) -> #succ(@y)
              #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
              #mult(#0(),#0()) -> #0()
              #mult(#0(),#neg(@y)) -> #0()
              #mult(#0(),#pos(@y)) -> #0()
              #mult(#neg(@x),#0()) -> #0()
              #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
              #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
              #mult(#pos(@x),#0()) -> #0()
              #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
              #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
              #natmult(#0(),@y) -> #0()
              #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
              #pred(#0()) -> #neg(#s(#0()))
              #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
              #pred(#pos(#s(#0()))) -> #0()
              #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
              #succ(#0()) -> #pos(#s(#0()))
              #succ(#neg(#s(#0()))) -> #0()
              #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
              #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
              *(@x,@y) -> #mult(@x,@y)
              +(@x,@y) -> #add(@x,@y)
              appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
              appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
              appendreverse#1(nil(),@sofar) -> @sofar
              bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
              computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
              computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
              computeLine#1(nil(),@acc,@m) -> @acc
              computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
              computeLine#2(nil(),@acc,@x,@xs) -> nil()
              dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
              dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
              dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
              dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
              dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
              enqueue(@t,@queue) -> enqueue#1(@queue,@t)
              enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
              lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
              lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
              lineMult#1(nil(),@l2,@n) -> nil()
              lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
              lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
              matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
              matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
              matrixMult#1(nil(),@m2) -> nil()
              reverse(@xs) -> appendreverse(@xs,nil())
          - Signature:
              {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
              ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
              ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
              ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2
              ,+#/2,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
              ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
              ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2
              ,matrixMult#1#/2,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1
              ,c_3/1,c_4/1,c_5/0,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2
              ,c_19/0,c_20/1,c_21/0,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2
              ,c_34/0,c_35/1,c_36/0,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1
              ,c_49/1,c_50/0,c_51/2,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
          - Obligation:
              innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#
              ,appendreverse#,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#
              ,bftMult'#5#,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#
              ,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s
              ,::,leaf,nil,node,tuple#2}
        
        Problem (S)
          - Strict DPs:
              bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
              bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
              bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
              bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
              bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
              bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
              bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
              computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
              computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
              computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                            ,lineMult#(@x,@l,@acc))
              dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
              dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
              lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
              lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
              lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
              lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
              matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
              matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
              reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
          - Weak DPs:
              appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
              appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
          - Weak TRS:
              #add(#0(),@y) -> @y
              #add(#neg(#s(#0())),@y) -> #pred(@y)
              #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
              #add(#pos(#s(#0())),@y) -> #succ(@y)
              #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
              #mult(#0(),#0()) -> #0()
              #mult(#0(),#neg(@y)) -> #0()
              #mult(#0(),#pos(@y)) -> #0()
              #mult(#neg(@x),#0()) -> #0()
              #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
              #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
              #mult(#pos(@x),#0()) -> #0()
              #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
              #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
              #natmult(#0(),@y) -> #0()
              #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
              #pred(#0()) -> #neg(#s(#0()))
              #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
              #pred(#pos(#s(#0()))) -> #0()
              #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
              #succ(#0()) -> #pos(#s(#0()))
              #succ(#neg(#s(#0()))) -> #0()
              #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
              #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
              *(@x,@y) -> #mult(@x,@y)
              +(@x,@y) -> #add(@x,@y)
              appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
              appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
              appendreverse#1(nil(),@sofar) -> @sofar
              bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
              computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
              computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
              computeLine#1(nil(),@acc,@m) -> @acc
              computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
              computeLine#2(nil(),@acc,@x,@xs) -> nil()
              dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
              dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
              dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
              dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
              dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
              enqueue(@t,@queue) -> enqueue#1(@queue,@t)
              enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
              lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
              lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
              lineMult#1(nil(),@l2,@n) -> nil()
              lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
              lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
              matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
              matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
              matrixMult#1(nil(),@m2) -> nil()
              reverse(@xs) -> appendreverse(@xs,nil())
          - Signature:
              {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
              ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
              ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
              ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2
              ,+#/2,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
              ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
              ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2
              ,matrixMult#1#/2,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1
              ,c_3/1,c_4/1,c_5/0,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2
              ,c_19/0,c_20/1,c_21/0,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2
              ,c_34/0,c_35/1,c_36/0,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1
              ,c_49/1,c_50/0,c_51/2,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
          - Obligation:
              innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#
              ,appendreverse#,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#
              ,bftMult'#5#,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#
              ,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s
              ,::,leaf,nil,node,tuple#2}
** Step 9.a:1: RemoveWeakSuffixes WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict DPs:
            appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
        - Weak DPs:
            bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
            bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
            bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
            dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
            lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
            matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
            matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
            reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        RemoveWeakSuffixes
    + Details:
        Consider the dependency graph
          1:S:appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
             -->_1 appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar))):2
          
          2:S:appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
             -->_1 appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar)):1
          
          4:W:bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
             -->_2 bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2)):6
             -->_1 bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue)):5
          
          5:W:bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
             -->_1 bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue)):7
          
          6:W:bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
             -->_1 dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq)):14
          
          7:W:bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
             -->_1 bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue))
                                                                                ,@acc
                                                                                ,@y)):9
             -->_1 bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc)):8
          
          8:W:bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
             -->_1 bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue)):4
          
          9:W:bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
             -->_1 bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y))
                                                       ,matrixMult#(@acc,@y)):10
          
          10:W:bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
             -->_1 bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue)):4
             -->_2 matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2)):20
          
          11:W:computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
             -->_1 computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs)):12
          
          12:W:computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
             -->_1 computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                                 ,lineMult#(@x,@l,@acc)):13
          
          13:W:computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                             ,lineMult#(@x,@l,@acc))
             -->_1 computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m)):11
             -->_2 lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n)):16
          
          14:W:dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
             -->_1 dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq)):15
          
          15:W:dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
             -->_1 reverse#(@xs) -> c_35(appendreverse#(@xs,nil())):22
          
          16:W:lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
             -->_1 lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs)):17
          
          17:W:lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
             -->_1 lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil())):19
             -->_1 lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys)):18
          
          18:W:lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
             -->_1 lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n)):16
          
          19:W:lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
             -->_1 lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n)):16
          
          20:W:matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
             -->_1 matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2)):21
          
          21:W:matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
             -->_1 computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m)):11
             -->_2 matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2)):20
          
          22:W:reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
             -->_1 appendreverse#(@toreverse,@sofar) -> c_3(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.
          20: matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
          21: matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
          11: computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
          13: computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                            ,lineMult#(@x,@l,@acc))
          12: computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
          16: lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
          19: lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
          17: lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
          18: lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
** Step 9.a:2: SimplifyRHS WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict DPs:
            appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
        - Weak DPs:
            bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
            bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
            bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
            dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
            dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
            reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        SimplifyRHS
    + Details:
        Consider the dependency graph
          1:S:appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
             -->_1 appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar))):2
          
          2:S:appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
             -->_1 appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar)):1
          
          4:W:bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
             -->_2 bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2)):6
             -->_1 bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue)):5
          
          5:W:bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
             -->_1 bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue)):7
          
          6:W:bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
             -->_1 dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq)):14
          
          7:W:bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
             -->_1 bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue))
                                                                                ,@acc
                                                                                ,@y)):9
             -->_1 bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc)):8
          
          8:W:bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
             -->_1 bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue)):4
          
          9:W:bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
             -->_1 bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y))
                                                       ,matrixMult#(@acc,@y)):10
          
          10:W:bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
             -->_1 bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue)):4
          
          14:W:dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
             -->_1 dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq)):15
          
          15:W:dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
             -->_1 reverse#(@xs) -> c_35(appendreverse#(@xs,nil())):22
          
          22:W:reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
             -->_1 appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar)):1
          
        Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified:
          bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)))
** Step 9.a:3: DecomposeDG WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict DPs:
            appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
        - Weak DPs:
            bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
            bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
            bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)))
            dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
            dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
            reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/1,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + 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
          bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
          bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
          bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
          bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
          bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
          bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)))
        and a lower component
          appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
          appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
          bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
          dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
          dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
          reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
        Further, following extension rules are added to the lower component.
          bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
          bftMult'#(@queue,@acc) -> bftMult'#2#(@queue)
          bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
          bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
          bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
          bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
          bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
*** Step 9.a:3.a:1: PredecessorEstimationCP WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
        - Weak DPs:
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
            bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/1,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + 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:
          1: bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
          
        Consider the set of all dependency pairs
          1: bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
          2: bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
          3: bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
          4: bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
          5: bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
          6: bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)))
        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
          {1}
        These cover all (indirect) predecessors of dependency pairs
          {1,2,3,4,5,6}
        their number of applications is equally bounded.
        The dependency pairs are shifted into the weak component.
**** Step 9.a:3.a:1.a:1: NaturalMI WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
        - Weak DPs:
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
            bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/1,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + 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_7) = {1},
          uargs(c_8) = {1},
          uargs(c_10) = {1},
          uargs(c_12) = {1},
          uargs(c_13) = {1},
          uargs(c_14) = {1}
        
        Following symbols are considered usable:
          {appendreverse,appendreverse#1,bftMult'#2,dequeue,dequeue#1,dequeue#2,enqueue,enqueue#1,reverse,#add#
          ,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#
          ,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#,computeLine#,computeLine#1#,computeLine#2#,dequeue#
          ,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#
          ,reverse#}
        TcT has computed the following interpretation:
                        p(#0) = [1]                                 
                                [0]                                 
                      p(#add) = [1 0] x1 + [0 0] x2 + [0]           
                                [0 1]      [1 0]      [0]           
                     p(#mult) = [0 0] x2 + [1]                      
                                [0 1]      [1]                      
                  p(#natmult) = [0]                                 
                                [0]                                 
                      p(#neg) = [1 0] x1 + [0]                      
                                [0 0]      [0]                      
                      p(#pos) = [1 0] x1 + [0]                      
                                [0 0]      [1]                      
                     p(#pred) = [0 1] x1 + [1]                      
                                [1 0]      [1]                      
                        p(#s) = [0 1] x1 + [1]                      
                                [0 0]      [1]                      
                     p(#succ) = [0]                                 
                                [0]                                 
                         p(*) = [0 1] x1 + [0 0] x2 + [0]           
                                [1 1]      [0 1]      [0]           
                         p(+) = [1 1] x1 + [0]                      
                                [0 1]      [0]                      
                        p(::) = [1 1] x1 + [1 0] x2 + [0]           
                                [0 0]      [0 0]      [0]           
             p(appendreverse) = [1 0] x1 + [1 0] x2 + [0]           
                                [0 0]      [0 1]      [0]           
           p(appendreverse#1) = [1 0] x1 + [1 0] x2 + [0]           
                                [0 0]      [0 1]      [0]           
                   p(bftMult) = [0]                                 
                                [0]                                 
                  p(bftMult') = [0]                                 
                                [0]                                 
                p(bftMult'#1) = [0]                                 
                                [0]                                 
                p(bftMult'#2) = [1 0] x1 + [0]                      
                                [1 0]      [0]                      
                p(bftMult'#3) = [0]                                 
                                [0]                                 
                p(bftMult'#4) = [0]                                 
                                [0]                                 
                p(bftMult'#5) = [0]                                 
                                [0]                                 
               p(computeLine) = [1 0] x2 + [0 1] x3 + [0]           
                                [0 0]      [0 1]      [0]           
             p(computeLine#1) = [0]                                 
                                [0]                                 
             p(computeLine#2) = [1]                                 
                                [0]                                 
                   p(dequeue) = [1 0] x1 + [1 1] x2 + [0]           
                                [1 0]      [0 1]      [0]           
                 p(dequeue#1) = [1 0] x1 + [1 1] x2 + [0]           
                                [0 0]      [0 0]      [0]           
                 p(dequeue#2) = [1 0] x1 + [0]                      
                                [0 0]      [0]                      
                   p(enqueue) = [1 1] x1 + [1 1] x2 + [0]           
                                [0 0]      [0 0]      [1]           
                 p(enqueue#1) = [1 0] x1 + [1 1] x2 + [0]           
                                [0 0]      [0 0]      [1]           
                      p(leaf) = [0]                                 
                                [1]                                 
                  p(lineMult) = [0 0] x2 + [1 0] x3 + [1]           
                                [0 1]      [0 1]      [0]           
                p(lineMult#1) = [0 0] x1 + [1]                      
                                [1 0]      [0]                      
                p(lineMult#2) = [0]                                 
                                [1]                                 
                p(matrixMult) = [1]                                 
                                [0]                                 
              p(matrixMult#1) = [0]                                 
                                [0]                                 
                       p(nil) = [0]                                 
                                [0]                                 
                      p(node) = [1 0] x1 + [1 1] x2 + [1 1] x3 + [1]
                                [0 0]      [0 0]      [0 0]      [1]
                   p(reverse) = [1 1] x1 + [0]                      
                                [0 1]      [0]                      
                   p(tuple#2) = [1 0] x1 + [1 1] x2 + [0]           
                                [0 0]      [0 0]      [0]           
                     p(#add#) = [0]                                 
                                [0]                                 
                    p(#mult#) = [0]                                 
                                [0]                                 
                 p(#natmult#) = [0]                                 
                                [0]                                 
                    p(#pred#) = [0]                                 
                                [0]                                 
                    p(#succ#) = [0]                                 
                                [0]                                 
                        p(*#) = [0]                                 
                                [0]                                 
                        p(+#) = [0]                                 
                                [0]                                 
            p(appendreverse#) = [0]                                 
                                [0]                                 
          p(appendreverse#1#) = [0]                                 
                                [0]                                 
                  p(bftMult#) = [0]                                 
                                [0]                                 
                 p(bftMult'#) = [1 0] x1 + [1]                      
                                [1 1]      [0]                      
               p(bftMult'#1#) = [1 0] x1 + [0]                      
                                [1 0]      [0]                      
               p(bftMult'#2#) = [0 0] x1 + [0]                      
                                [0 1]      [0]                      
               p(bftMult'#3#) = [1 0] x1 + [1 1] x3 + [0]           
                                [1 0]      [1 1]      [0]           
               p(bftMult'#4#) = [1 1] x1 + [1 1] x3 + [0]           
                                [1 0]      [1 1]      [0]           
               p(bftMult'#5#) = [1 0] x1 + [1 0] x3 + [1]           
                                [1 0]      [0 0]      [0]           
              p(computeLine#) = [0]                                 
                                [0]                                 
            p(computeLine#1#) = [0]                                 
                                [0]                                 
            p(computeLine#2#) = [0]                                 
                                [0]                                 
                  p(dequeue#) = [0]                                 
                                [0]                                 
                p(dequeue#1#) = [0]                                 
                                [0]                                 
                p(dequeue#2#) = [0]                                 
                                [0]                                 
                  p(enqueue#) = [0]                                 
                                [0]                                 
                p(enqueue#1#) = [0]                                 
                                [0]                                 
                 p(lineMult#) = [0]                                 
                                [0]                                 
               p(lineMult#1#) = [0]                                 
                                [0]                                 
               p(lineMult#2#) = [0]                                 
                                [0]                                 
               p(matrixMult#) = [0]                                 
                                [0]                                 
             p(matrixMult#1#) = [0]                                 
                                [0]                                 
                  p(reverse#) = [0]                                 
                                [0]                                 
                       p(c_1) = [0]                                 
                                [0]                                 
                       p(c_2) = [0]                                 
                                [0]                                 
                       p(c_3) = [0]                                 
                                [0]                                 
                       p(c_4) = [0]                                 
                                [0]                                 
                       p(c_5) = [0]                                 
                                [0]                                 
                       p(c_6) = [0]                                 
                                [0]                                 
                       p(c_7) = [1 0] x1 + [0 0] x2 + [0]           
                                [0 0]      [0 1]      [0]           
                       p(c_8) = [1 0] x1 + [0]                      
                                [0 1]      [0]                      
                       p(c_9) = [0]                                 
                                [0]                                 
                      p(c_10) = [1 0] x1 + [0]                      
                                [0 1]      [0]                      
                      p(c_11) = [0]                                 
                                [0]                                 
                      p(c_12) = [1 0] x1 + [0]                      
                                [0 0]      [0]                      
                      p(c_13) = [1 0] x1 + [0]                      
                                [0 1]      [0]                      
                      p(c_14) = [1 0] x1 + [0]                      
                                [0 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) = [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]                                 
                      p(c_58) = [0]                                 
                                [0]                                 
                      p(c_59) = [0]                                 
                                [0]                                 
        
        Following rules are strictly oriented:
        bftMult'#(@queue,@acc) = [1 0] @queue + [1]                                           
                                 [1 1]          [0]                                           
                               > [1 0] @queue + [0]                                           
                                 [0 1]          [0]                                           
                               = c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
        
        
        Following rules are (at-least) weakly oriented:
           bftMult'#1#(tuple#2(@elem,@queue),@acc) =  [1 0] @elem + [1 1] @queue + [0]                           
                                                      [1 0]         [1 1]          [0]                           
                                                   >= [1 0] @elem + [1 1] @queue + [0]                           
                                                      [1 0]         [1 1]          [0]                           
                                                   =  c_8(bftMult'#3#(@elem,@acc,@queue))                        
        
              bftMult'#3#(::(@t,@_@3),@acc,@queue) =  [1 0] @_@3 + [1 1] @queue + [1 1] @t + [0]                 
                                                      [1 0]        [1 1]          [1 1]      [0]                 
                                                   >= [1 1] @queue + [1 1] @t + [0]                              
                                                      [1 1]          [1 0]      [0]                              
                                                   =  c_10(bftMult'#4#(@t,@acc,@queue))                          
        
                   bftMult'#4#(leaf(),@acc,@queue) =  [1 1] @queue + [1]                                         
                                                      [1 1]          [0]                                         
                                                   >= [1 0] @queue + [1]                                         
                                                      [0 0]          [0]                                         
                                                   =  c_12(bftMult'#(@queue,@acc))                               
        
         bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) =  [1 1] @queue + [1 1] @t1 + [1 1] @t2 + [1 0] @y + [2]      
                                                      [1 1]          [1 1]       [1 1]       [1 0]      [1]      
                                                   >= [1 1] @queue + [1 1] @t1 + [1 1] @t2 + [1 0] @y + [2]      
                                                      [1 1]          [1 1]       [1 1]       [0 0]      [1]      
                                                   =  c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
        
                      bftMult'#5#(@queue',@acc,@y) =  [1 0] @queue' + [1 0] @y + [1]                             
                                                      [1 0]           [0 0]      [0]                             
                                                   >= [1 0] @queue' + [1]                                        
                                                      [0 0]           [0]                                        
                                                   =  c_14(bftMult'#(@queue',matrixMult(@acc,@y)))               
        
                  appendreverse(@toreverse,@sofar) =  [1 0] @sofar + [1 0] @toreverse + [0]                      
                                                      [0 1]          [0 0]              [0]                      
                                                   >= [1 0] @sofar + [1 0] @toreverse + [0]                      
                                                      [0 1]          [0 0]              [0]                      
                                                   =  appendreverse#1(@toreverse,@sofar)                         
        
                appendreverse#1(::(@a,@as),@sofar) =  [1 1] @a + [1 0] @as + [1 0] @sofar + [0]                  
                                                      [0 0]      [0 0]       [0 1]          [0]                  
                                                   >= [1 1] @a + [1 0] @as + [1 0] @sofar + [0]                  
                                                      [0 0]      [0 0]       [0 0]          [0]                  
                                                   =  appendreverse(@as,::(@a,@sofar))                           
        
                     appendreverse#1(nil(),@sofar) =  [1 0] @sofar + [0]                                         
                                                      [0 1]          [0]                                         
                                                   >= [1 0] @sofar + [0]                                         
                                                      [0 1]          [0]                                         
                                                   =  @sofar                                                     
        
        bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) =  [1 0] @dequeue@1 + [1 1] @dequeue@2 + [0]                  
                                                      [1 0]              [1 1]              [0]                  
                                                   >= [1 0] @dequeue@1 + [1 1] @dequeue@2 + [0]                  
                                                      [1 0]              [0 1]              [0]                  
                                                   =  dequeue(@dequeue@1,@dequeue@2)                             
        
                               dequeue(@outq,@inq) =  [1 1] @inq + [1 0] @outq + [0]                             
                                                      [0 1]        [1 0]         [0]                             
                                                   >= [1 1] @inq + [1 0] @outq + [0]                             
                                                      [0 0]        [0 0]         [0]                             
                                                   =  dequeue#1(@outq,@inq)                                      
        
                        dequeue#1(::(@t,@ts),@inq) =  [1 1] @inq + [1 1] @t + [1 0] @ts + [0]                    
                                                      [0 0]        [0 0]      [0 0]       [0]                    
                                                   >= [1 1] @inq + [1 1] @t + [1 0] @ts + [0]                    
                                                      [0 0]        [0 0]      [0 0]       [0]                    
                                                   =  tuple#2(::(@t,nil()),tuple#2(@ts,@inq))                    
        
                             dequeue#1(nil(),@inq) =  [1 1] @inq + [0]                                           
                                                      [0 0]        [0]                                           
                                                   >= [1 1] @inq + [0]                                           
                                                      [0 0]        [0]                                           
                                                   =  dequeue#2(reverse(@inq))                                   
        
                             dequeue#2(::(@t,@ts)) =  [1 1] @t + [1 0] @ts + [0]                                 
                                                      [0 0]      [0 0]       [0]                                 
                                                   >= [1 1] @t + [1 0] @ts + [0]                                 
                                                      [0 0]      [0 0]       [0]                                 
                                                   =  tuple#2(::(@t,nil()),tuple#2(@ts,nil()))                   
        
                                  dequeue#2(nil()) =  [0]                                                        
                                                      [0]                                                        
                                                   >= [0]                                                        
                                                      [0]                                                        
                                                   =  tuple#2(nil(),tuple#2(nil(),nil()))                        
        
                                enqueue(@t,@queue) =  [1 1] @queue + [1 1] @t + [0]                              
                                                      [0 0]          [0 0]      [1]                              
                                                   >= [1 0] @queue + [1 1] @t + [0]                              
                                                      [0 0]          [0 0]      [1]                              
                                                   =  enqueue#1(@queue,@t)                                       
        
                 enqueue#1(tuple#2(@outq,@inq),@t) =  [1 1] @inq + [1 0] @outq + [1 1] @t + [0]                  
                                                      [0 0]        [0 0]         [0 0]      [1]                  
                                                   >= [1 0] @inq + [1 0] @outq + [1 1] @t + [0]                  
                                                      [0 0]        [0 0]         [0 0]      [0]                  
                                                   =  tuple#2(@outq,::(@t,@inq))                                 
        
                                      reverse(@xs) =  [1 1] @xs + [0]                                            
                                                      [0 1]       [0]                                            
                                                   >= [1 0] @xs + [0]                                            
                                                      [0 0]       [0]                                            
                                                   =  appendreverse(@xs,nil())                                   
        
**** Step 9.a:3.a:1.a:2: Assumption WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak DPs:
            bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
            bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/1,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
    + Details:
        ()

**** Step 9.a:3.a:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak DPs:
            bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
            bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/1,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        RemoveWeakSuffixes
    + Details:
        Consider the dependency graph
          1:W:bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
             -->_1 bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue)):2
          
          2:W:bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
             -->_1 bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue)):3
          
          3:W:bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
             -->_1 bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue))
                                                                                ,@acc
                                                                                ,@y)):5
             -->_1 bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc)):4
          
          4:W:bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
             -->_1 bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue)):1
          
          5:W:bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
             -->_1 bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y))):6
          
          6:W:bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)))
             -->_1 bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue)):1
          
        The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
          1: bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
          6: bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)))
          5: bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
          3: bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
          2: bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
          4: bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
**** Step 9.a:3.a:1.b:2: EmptyProcessor WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/1,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        EmptyProcessor
    + Details:
        The problem is already closed. The intended complexity is O(1).

*** Step 9.a:3.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
        - Weak DPs:
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#(@queue,@acc) -> bftMult'#2#(@queue)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
            dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
            reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/1,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + 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: appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
          
        The strictly oriented rules are moved into the weak component.
**** Step 9.a:3.b:1.a:1: NaturalMI WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
        - Weak DPs:
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#(@queue,@acc) -> bftMult'#2#(@queue)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
            dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
            reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/1,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + 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_3) = {1},
          uargs(c_4) = {1},
          uargs(c_9) = {1},
          uargs(c_20) = {1},
          uargs(c_22) = {1},
          uargs(c_35) = {1}
        
        Following symbols are considered usable:
          {appendreverse,appendreverse#1,bftMult'#2,dequeue,dequeue#1,dequeue#2,enqueue,enqueue#1,reverse,#add#
          ,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#
          ,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#,computeLine#,computeLine#1#,computeLine#2#,dequeue#
          ,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#
          ,reverse#}
        TcT has computed the following interpretation:
                        p(#0) = [1]                  
                      p(#add) = [2] x1 + [0]         
                     p(#mult) = [2] x1 + [1] x2 + [6]
                  p(#natmult) = [1]                  
                      p(#neg) = [0]                  
                      p(#pos) = [2]                  
                     p(#pred) = [0]                  
                        p(#s) = [2]                  
                     p(#succ) = [5]                  
                         p(*) = [2] x1 + [1] x2 + [1]
                         p(+) = [4] x1 + [5]         
                        p(::) = [1] x1 + [1] x2 + [1]
             p(appendreverse) = [1] x1 + [1] x2 + [0]
           p(appendreverse#1) = [1] x1 + [1] x2 + [0]
                   p(bftMult) = [1] x2 + [0]         
                  p(bftMult') = [0]                  
                p(bftMult'#1) = [0]                  
                p(bftMult'#2) = [1] x1 + [0]         
                p(bftMult'#3) = [0]                  
                p(bftMult'#4) = [1] x1 + [0]         
                p(bftMult'#5) = [0]                  
               p(computeLine) = [4] x3 + [2]         
             p(computeLine#1) = [5] x1 + [0]         
             p(computeLine#2) = [7] x1 + [7]         
                   p(dequeue) = [1] x1 + [1] x2 + [0]
                 p(dequeue#1) = [1] x1 + [1] x2 + [0]
                 p(dequeue#2) = [1] x1 + [0]         
                   p(enqueue) = [1] x1 + [1] x2 + [1]
                 p(enqueue#1) = [1] x1 + [1] x2 + [1]
                      p(leaf) = [0]                  
                  p(lineMult) = [3] x1 + [0]         
                p(lineMult#1) = [1] x1 + [1]         
                p(lineMult#2) = [6] x1 + [0]         
                p(matrixMult) = [0]                  
              p(matrixMult#1) = [6] x1 + [1] x2 + [0]
                       p(nil) = [0]                  
                      p(node) = [1] x2 + [1] x3 + [5]
                   p(reverse) = [1] x1 + [0]         
                   p(tuple#2) = [1] x1 + [1] x2 + [0]
                     p(#add#) = [0]                  
                    p(#mult#) = [0]                  
                 p(#natmult#) = [0]                  
                    p(#pred#) = [0]                  
                    p(#succ#) = [0]                  
                        p(*#) = [0]                  
                        p(+#) = [0]                  
            p(appendreverse#) = [1] x1 + [0]         
          p(appendreverse#1#) = [1] x1 + [0]         
                  p(bftMult#) = [0]                  
                 p(bftMult'#) = [1] x1 + [3]         
               p(bftMult'#1#) = [1] x1 + [3]         
               p(bftMult'#2#) = [1] x1 + [0]         
               p(bftMult'#3#) = [1] x1 + [1] x3 + [3]
               p(bftMult'#4#) = [1] x1 + [1] x3 + [4]
               p(bftMult'#5#) = [1] x1 + [3]         
              p(computeLine#) = [0]                  
            p(computeLine#1#) = [1] x3 + [0]         
            p(computeLine#2#) = [0]                  
                  p(dequeue#) = [1] x2 + [0]         
                p(dequeue#1#) = [1] x2 + [0]         
                p(dequeue#2#) = [0]                  
                  p(enqueue#) = [1] x1 + [2] x2 + [0]
                p(enqueue#1#) = [0]                  
                 p(lineMult#) = [1] x3 + [1]         
               p(lineMult#1#) = [1] x3 + [0]         
               p(lineMult#2#) = [2] x3 + [0]         
               p(matrixMult#) = [4] x1 + [1]         
             p(matrixMult#1#) = [1] x2 + [1]         
                  p(reverse#) = [1] x1 + [0]         
                       p(c_1) = [0]                  
                       p(c_2) = [2] x1 + [1]         
                       p(c_3) = [1] x1 + [0]         
                       p(c_4) = [1] x1 + [0]         
                       p(c_5) = [0]                  
                       p(c_6) = [1] x1 + [4]         
                       p(c_7) = [1] x1 + [1] x2 + [0]
                       p(c_8) = [1]                  
                       p(c_9) = [1] x1 + [0]         
                      p(c_10) = [1] x1 + [0]         
                      p(c_11) = [1]                  
                      p(c_12) = [1] x1 + [1]         
                      p(c_13) = [1] x1 + [0]         
                      p(c_14) = [1] x1 + [0]         
                      p(c_15) = [1] x1 + [2]         
                      p(c_16) = [2]                  
                      p(c_17) = [0]                  
                      p(c_18) = [1] x1 + [1] x2 + [2]
                      p(c_19) = [0]                  
                      p(c_20) = [1] x1 + [0]         
                      p(c_21) = [1]                  
                      p(c_22) = [1] x1 + [0]         
                      p(c_23) = [4]                  
                      p(c_24) = [1]                  
                      p(c_25) = [1] x1 + [0]         
                      p(c_26) = [1]                  
                      p(c_27) = [0]                  
                      p(c_28) = [4] x1 + [0]         
                      p(c_29) = [0]                  
                      p(c_30) = [1]                  
                      p(c_31) = [0]                  
                      p(c_32) = [0]                  
                      p(c_33) = [1] x2 + [4]         
                      p(c_34) = [0]                  
                      p(c_35) = [1] x1 + [0]         
                      p(c_36) = [0]                  
                      p(c_37) = [1]                  
                      p(c_38) = [1] x2 + [1]         
                      p(c_39) = [1] x1 + [2]         
                      p(c_40) = [1] x1 + [2] x2 + [0]
                      p(c_41) = [1]                  
                      p(c_42) = [4]                  
                      p(c_43) = [4]                  
                      p(c_44) = [0]                  
                      p(c_45) = [0]                  
                      p(c_46) = [0]                  
                      p(c_47) = [1]                  
                      p(c_48) = [0]                  
                      p(c_49) = [4] x1 + [0]         
                      p(c_50) = [1]                  
                      p(c_51) = [2] x1 + [4]         
                      p(c_52) = [0]                  
                      p(c_53) = [0]                  
                      p(c_54) = [1]                  
                      p(c_55) = [1]                  
                      p(c_56) = [0]                  
                      p(c_57) = [1]                  
                      p(c_58) = [0]                  
                      p(c_59) = [0]                  
        
        Following rules are strictly oriented:
        appendreverse#1#(::(@a,@as),@sofar) = [1] @a + [1] @as + [1]                
                                            > [1] @as + [0]                         
                                            = c_4(appendreverse#(@as,::(@a,@sofar)))
        
        
        Following rules are (at-least) weakly oriented:
                  appendreverse#(@toreverse,@sofar) =  [1] @toreverse + [0]                                 
                                                    >= [1] @toreverse + [0]                                 
                                                    =  c_3(appendreverse#1#(@toreverse,@sofar))             
        
                             bftMult'#(@queue,@acc) =  [1] @queue + [3]                                     
                                                    >= [1] @queue + [3]                                     
                                                    =  bftMult'#1#(bftMult'#2(@queue),@acc)                 
        
                             bftMult'#(@queue,@acc) =  [1] @queue + [3]                                     
                                                    >= [1] @queue + [0]                                     
                                                    =  bftMult'#2#(@queue)                                  
        
            bftMult'#1#(tuple#2(@elem,@queue),@acc) =  [1] @elem + [1] @queue + [3]                         
                                                    >= [1] @elem + [1] @queue + [3]                         
                                                    =  bftMult'#3#(@elem,@acc,@queue)                       
        
        bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) =  [1] @dequeue@1 + [1] @dequeue@2 + [0]                
                                                    >= [1] @dequeue@2 + [0]                                 
                                                    =  c_9(dequeue#(@dequeue@1,@dequeue@2))                 
        
               bftMult'#3#(::(@t,@_@3),@acc,@queue) =  [1] @_@3 + [1] @queue + [1] @t + [4]                 
                                                    >= [1] @queue + [1] @t + [4]                            
                                                    =  bftMult'#4#(@t,@acc,@queue)                          
        
                    bftMult'#4#(leaf(),@acc,@queue) =  [1] @queue + [4]                                     
                                                    >= [1] @queue + [3]                                     
                                                    =  bftMult'#(@queue,@acc)                               
        
          bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) =  [1] @queue + [1] @t1 + [1] @t2 + [9]                 
                                                    >= [1] @queue + [1] @t1 + [1] @t2 + [5]                 
                                                    =  bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
        
                       bftMult'#5#(@queue',@acc,@y) =  [1] @queue' + [3]                                    
                                                    >= [1] @queue' + [3]                                    
                                                    =  bftMult'#(@queue',matrixMult(@acc,@y))               
        
                               dequeue#(@outq,@inq) =  [1] @inq + [0]                                       
                                                    >= [1] @inq + [0]                                       
                                                    =  c_20(dequeue#1#(@outq,@inq))                         
        
                             dequeue#1#(nil(),@inq) =  [1] @inq + [0]                                       
                                                    >= [1] @inq + [0]                                       
                                                    =  c_22(reverse#(@inq))                                 
        
                                      reverse#(@xs) =  [1] @xs + [0]                                        
                                                    >= [1] @xs + [0]                                        
                                                    =  c_35(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                                               
        
         bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) =  [1] @dequeue@1 + [1] @dequeue@2 + [0]                
                                                    >= [1] @dequeue@1 + [1] @dequeue@2 + [0]                
                                                    =  dequeue(@dequeue@1,@dequeue@2)                       
        
                                dequeue(@outq,@inq) =  [1] @inq + [1] @outq + [0]                           
                                                    >= [1] @inq + [1] @outq + [0]                           
                                                    =  dequeue#1(@outq,@inq)                                
        
                         dequeue#1(::(@t,@ts),@inq) =  [1] @inq + [1] @t + [1] @ts + [1]                    
                                                    >= [1] @inq + [1] @t + [1] @ts + [1]                    
                                                    =  tuple#2(::(@t,nil()),tuple#2(@ts,@inq))              
        
                              dequeue#1(nil(),@inq) =  [1] @inq + [0]                                       
                                                    >= [1] @inq + [0]                                       
                                                    =  dequeue#2(reverse(@inq))                             
        
                              dequeue#2(::(@t,@ts)) =  [1] @t + [1] @ts + [1]                               
                                                    >= [1] @t + [1] @ts + [1]                               
                                                    =  tuple#2(::(@t,nil()),tuple#2(@ts,nil()))             
        
                                   dequeue#2(nil()) =  [0]                                                  
                                                    >= [0]                                                  
                                                    =  tuple#2(nil(),tuple#2(nil(),nil()))                  
        
                                 enqueue(@t,@queue) =  [1] @queue + [1] @t + [1]                            
                                                    >= [1] @queue + [1] @t + [1]                            
                                                    =  enqueue#1(@queue,@t)                                 
        
                  enqueue#1(tuple#2(@outq,@inq),@t) =  [1] @inq + [1] @outq + [1] @t + [1]                  
                                                    >= [1] @inq + [1] @outq + [1] @t + [1]                  
                                                    =  tuple#2(@outq,::(@t,@inq))                           
        
                                       reverse(@xs) =  [1] @xs + [0]                                        
                                                    >= [1] @xs + [0]                                        
                                                    =  appendreverse(@xs,nil())                             
        
**** Step 9.a:3.b:1.a:2: Assumption WORST_CASE(?,O(1))
    + Considered Problem:
        - Strict DPs:
            appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
        - Weak DPs:
            appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#(@queue,@acc) -> bftMult'#2#(@queue)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
            dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
            reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/1,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
    + Details:
        ()

**** Step 9.a:3.b:1.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
        - Weak DPs:
            appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#(@queue,@acc) -> bftMult'#2#(@queue)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
            dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
            reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/1,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + 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_3(appendreverse#1#(@toreverse,@sofar))
          
        Consider the set of all dependency pairs
          1: appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
          2: appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
          3: bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
          4: bftMult'#(@queue,@acc) -> bftMult'#2#(@queue)
          5: bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
          6: bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
          7: bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
          8: bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
          9: bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
          10: bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
          11: dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
          12: dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
          13: reverse#(@xs) -> c_35(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}
        their number of applications is equally bounded.
        The dependency pairs are shifted into the weak component.
***** Step 9.a:3.b:1.b:1.a:1: NaturalMI WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
        - Weak DPs:
            appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#(@queue,@acc) -> bftMult'#2#(@queue)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
            dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
            reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/1,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + 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_3) = {1},
          uargs(c_4) = {1},
          uargs(c_9) = {1},
          uargs(c_20) = {1},
          uargs(c_22) = {1},
          uargs(c_35) = {1}
        
        Following symbols are considered usable:
          {appendreverse,appendreverse#1,bftMult'#2,dequeue,dequeue#1,dequeue#2,enqueue,enqueue#1,reverse,#add#
          ,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#
          ,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#,computeLine#,computeLine#1#,computeLine#2#,dequeue#
          ,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#
          ,reverse#}
        TcT has computed the following interpretation:
                        p(#0) = [4]                           
                      p(#add) = [5]                           
                     p(#mult) = [1] x1 + [3]                  
                  p(#natmult) = [2] x1 + [1]                  
                      p(#neg) = [2]                           
                      p(#pos) = [5]                           
                     p(#pred) = [2] x1 + [4]                  
                        p(#s) = [4]                           
                     p(#succ) = [4]                           
                         p(*) = [1] x1 + [0]                  
                         p(+) = [4] x1 + [4]                  
                        p(::) = [1] x1 + [1] x2 + [4]         
             p(appendreverse) = [1] x1 + [1] x2 + [0]         
           p(appendreverse#1) = [1] x1 + [1] x2 + [0]         
                   p(bftMult) = [4] x1 + [1]                  
                  p(bftMult') = [0]                           
                p(bftMult'#1) = [0]                           
                p(bftMult'#2) = [1] x1 + [0]                  
                p(bftMult'#3) = [1] x1 + [4] x2 + [1]         
                p(bftMult'#4) = [1] x1 + [4] x2 + [0]         
                p(bftMult'#5) = [1] x3 + [1]                  
               p(computeLine) = [1] x2 + [0]                  
             p(computeLine#1) = [1] x3 + [2]                  
             p(computeLine#2) = [3] x1 + [4] x3 + [2]         
                   p(dequeue) = [1] x1 + [1] x2 + [0]         
                 p(dequeue#1) = [1] x1 + [1] x2 + [0]         
                 p(dequeue#2) = [1] x1 + [0]                  
                   p(enqueue) = [1] x1 + [1] x2 + [5]         
                 p(enqueue#1) = [1] x1 + [1] x2 + [4]         
                      p(leaf) = [0]                           
                  p(lineMult) = [2] x1 + [5] x2 + [0]         
                p(lineMult#1) = [4] x3 + [4]                  
                p(lineMult#2) = [1] x1 + [1] x3 + [4]         
                p(matrixMult) = [4] x1 + [2] x2 + [2]         
              p(matrixMult#1) = [2] x1 + [1] x2 + [2]         
                       p(nil) = [0]                           
                      p(node) = [1] x2 + [1] x3 + [7]         
                   p(reverse) = [1] x1 + [0]                  
                   p(tuple#2) = [1] x1 + [1] x2 + [0]         
                     p(#add#) = [1] x1 + [2] x2 + [2]         
                    p(#mult#) = [1] x2 + [4]                  
                 p(#natmult#) = [1] x2 + [1]                  
                    p(#pred#) = [4]                           
                    p(#succ#) = [1] x1 + [0]                  
                        p(*#) = [1] x1 + [2]                  
                        p(+#) = [1] x1 + [1] x2 + [1]         
            p(appendreverse#) = [1] x1 + [1]                  
          p(appendreverse#1#) = [1] x1 + [0]                  
                  p(bftMult#) = [1] x1 + [2] x2 + [2]         
                 p(bftMult'#) = [1] x1 + [4]                  
               p(bftMult'#1#) = [1] x1 + [4]                  
               p(bftMult'#2#) = [1] x1 + [4]                  
               p(bftMult'#3#) = [1] x1 + [1] x3 + [3]         
               p(bftMult'#4#) = [1] x1 + [1] x3 + [7]         
               p(bftMult'#5#) = [1] x1 + [4]                  
              p(computeLine#) = [1]                           
            p(computeLine#1#) = [1] x3 + [0]                  
            p(computeLine#2#) = [4] x4 + [0]                  
                  p(dequeue#) = [1] x2 + [4]                  
                p(dequeue#1#) = [1] x2 + [1]                  
                p(dequeue#2#) = [0]                           
                  p(enqueue#) = [0]                           
                p(enqueue#1#) = [1] x1 + [1] x2 + [2]         
                 p(lineMult#) = [1] x1 + [4] x2 + [1] x3 + [2]
               p(lineMult#1#) = [4]                           
               p(lineMult#2#) = [2] x3 + [0]                  
               p(matrixMult#) = [0]                           
             p(matrixMult#1#) = [1] x2 + [0]                  
                  p(reverse#) = [1] x1 + [1]                  
                       p(c_1) = [1]                           
                       p(c_2) = [1]                           
                       p(c_3) = [1] x1 + [0]                  
                       p(c_4) = [1] x1 + [3]                  
                       p(c_5) = [2]                           
                       p(c_6) = [0]                           
                       p(c_7) = [1] x1 + [4] x2 + [2]         
                       p(c_8) = [1]                           
                       p(c_9) = [1] x1 + [0]                  
                      p(c_10) = [1]                           
                      p(c_11) = [4]                           
                      p(c_12) = [1] x1 + [4]                  
                      p(c_13) = [1]                           
                      p(c_14) = [4] x1 + [2]                  
                      p(c_15) = [1] x1 + [0]                  
                      p(c_16) = [1]                           
                      p(c_17) = [0]                           
                      p(c_18) = [1] x2 + [0]                  
                      p(c_19) = [0]                           
                      p(c_20) = [1] x1 + [0]                  
                      p(c_21) = [4]                           
                      p(c_22) = [1] x1 + [0]                  
                      p(c_23) = [1]                           
                      p(c_24) = [0]                           
                      p(c_25) = [1] x1 + [2]                  
                      p(c_26) = [1]                           
                      p(c_27) = [2]                           
                      p(c_28) = [0]                           
                      p(c_29) = [1]                           
                      p(c_30) = [4] x1 + [2]                  
                      p(c_31) = [4] x1 + [1]                  
                      p(c_32) = [4]                           
                      p(c_33) = [1] x2 + [0]                  
                      p(c_34) = [4]                           
                      p(c_35) = [1] x1 + [0]                  
                      p(c_36) = [0]                           
                      p(c_37) = [2] x1 + [0]                  
                      p(c_38) = [2] x1 + [1]                  
                      p(c_39) = [1]                           
                      p(c_40) = [1] x2 + [1]                  
                      p(c_41) = [1]                           
                      p(c_42) = [1]                           
                      p(c_43) = [0]                           
                      p(c_44) = [1]                           
                      p(c_45) = [2]                           
                      p(c_46) = [4] x1 + [4]                  
                      p(c_47) = [0]                           
                      p(c_48) = [1] x1 + [0]                  
                      p(c_49) = [1] x1 + [2]                  
                      p(c_50) = [0]                           
                      p(c_51) = [1] x2 + [0]                  
                      p(c_52) = [1]                           
                      p(c_53) = [2]                           
                      p(c_54) = [0]                           
                      p(c_55) = [0]                           
                      p(c_56) = [2]                           
                      p(c_57) = [0]                           
                      p(c_58) = [1]                           
                      p(c_59) = [0]                           
        
        Following rules are strictly oriented:
        appendreverse#(@toreverse,@sofar) = [1] @toreverse + [1]                    
                                          > [1] @toreverse + [0]                    
                                          = c_3(appendreverse#1#(@toreverse,@sofar))
        
        
        Following rules are (at-least) weakly oriented:
                appendreverse#1#(::(@a,@as),@sofar) =  [1] @a + [1] @as + [4]                               
                                                    >= [1] @as + [4]                                        
                                                    =  c_4(appendreverse#(@as,::(@a,@sofar)))               
        
                             bftMult'#(@queue,@acc) =  [1] @queue + [4]                                     
                                                    >= [1] @queue + [4]                                     
                                                    =  bftMult'#1#(bftMult'#2(@queue),@acc)                 
        
                             bftMult'#(@queue,@acc) =  [1] @queue + [4]                                     
                                                    >= [1] @queue + [4]                                     
                                                    =  bftMult'#2#(@queue)                                  
        
            bftMult'#1#(tuple#2(@elem,@queue),@acc) =  [1] @elem + [1] @queue + [4]                         
                                                    >= [1] @elem + [1] @queue + [3]                         
                                                    =  bftMult'#3#(@elem,@acc,@queue)                       
        
        bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) =  [1] @dequeue@1 + [1] @dequeue@2 + [4]                
                                                    >= [1] @dequeue@2 + [4]                                 
                                                    =  c_9(dequeue#(@dequeue@1,@dequeue@2))                 
        
               bftMult'#3#(::(@t,@_@3),@acc,@queue) =  [1] @_@3 + [1] @queue + [1] @t + [7]                 
                                                    >= [1] @queue + [1] @t + [7]                            
                                                    =  bftMult'#4#(@t,@acc,@queue)                          
        
                    bftMult'#4#(leaf(),@acc,@queue) =  [1] @queue + [7]                                     
                                                    >= [1] @queue + [4]                                     
                                                    =  bftMult'#(@queue,@acc)                               
        
          bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) =  [1] @queue + [1] @t1 + [1] @t2 + [14]                
                                                    >= [1] @queue + [1] @t1 + [1] @t2 + [14]                
                                                    =  bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
        
                       bftMult'#5#(@queue',@acc,@y) =  [1] @queue' + [4]                                    
                                                    >= [1] @queue' + [4]                                    
                                                    =  bftMult'#(@queue',matrixMult(@acc,@y))               
        
                               dequeue#(@outq,@inq) =  [1] @inq + [4]                                       
                                                    >= [1] @inq + [1]                                       
                                                    =  c_20(dequeue#1#(@outq,@inq))                         
        
                             dequeue#1#(nil(),@inq) =  [1] @inq + [1]                                       
                                                    >= [1] @inq + [1]                                       
                                                    =  c_22(reverse#(@inq))                                 
        
                                      reverse#(@xs) =  [1] @xs + [1]                                        
                                                    >= [1] @xs + [1]                                        
                                                    =  c_35(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 + [4]                  
                                                    >= [1] @a + [1] @as + [1] @sofar + [4]                  
                                                    =  appendreverse(@as,::(@a,@sofar))                     
        
                      appendreverse#1(nil(),@sofar) =  [1] @sofar + [0]                                     
                                                    >= [1] @sofar + [0]                                     
                                                    =  @sofar                                               
        
         bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) =  [1] @dequeue@1 + [1] @dequeue@2 + [0]                
                                                    >= [1] @dequeue@1 + [1] @dequeue@2 + [0]                
                                                    =  dequeue(@dequeue@1,@dequeue@2)                       
        
                                dequeue(@outq,@inq) =  [1] @inq + [1] @outq + [0]                           
                                                    >= [1] @inq + [1] @outq + [0]                           
                                                    =  dequeue#1(@outq,@inq)                                
        
                         dequeue#1(::(@t,@ts),@inq) =  [1] @inq + [1] @t + [1] @ts + [4]                    
                                                    >= [1] @inq + [1] @t + [1] @ts + [4]                    
                                                    =  tuple#2(::(@t,nil()),tuple#2(@ts,@inq))              
        
                              dequeue#1(nil(),@inq) =  [1] @inq + [0]                                       
                                                    >= [1] @inq + [0]                                       
                                                    =  dequeue#2(reverse(@inq))                             
        
                              dequeue#2(::(@t,@ts)) =  [1] @t + [1] @ts + [4]                               
                                                    >= [1] @t + [1] @ts + [4]                               
                                                    =  tuple#2(::(@t,nil()),tuple#2(@ts,nil()))             
        
                                   dequeue#2(nil()) =  [0]                                                  
                                                    >= [0]                                                  
                                                    =  tuple#2(nil(),tuple#2(nil(),nil()))                  
        
                                 enqueue(@t,@queue) =  [1] @queue + [1] @t + [5]                            
                                                    >= [1] @queue + [1] @t + [4]                            
                                                    =  enqueue#1(@queue,@t)                                 
        
                  enqueue#1(tuple#2(@outq,@inq),@t) =  [1] @inq + [1] @outq + [1] @t + [4]                  
                                                    >= [1] @inq + [1] @outq + [1] @t + [4]                  
                                                    =  tuple#2(@outq,::(@t,@inq))                           
        
                                       reverse(@xs) =  [1] @xs + [0]                                        
                                                    >= [1] @xs + [0]                                        
                                                    =  appendreverse(@xs,nil())                             
        
***** Step 9.a:3.b:1.b:1.a:2: Assumption WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak DPs:
            appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#(@queue,@acc) -> bftMult'#2#(@queue)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
            dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
            reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/1,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
    + Details:
        ()

***** Step 9.a:3.b:1.b:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak DPs:
            appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#(@queue,@acc) -> bftMult'#2#(@queue)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
            dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
            reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/1,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        RemoveWeakSuffixes
    + Details:
        Consider the dependency graph
          1:W:appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
             -->_1 appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar))):2
          
          2:W:appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
             -->_1 appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar)):1
          
          3:W:bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
             -->_1 bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue):5
          
          4:W:bftMult'#(@queue,@acc) -> bftMult'#2#(@queue)
             -->_1 bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2)):6
          
          5:W:bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
             -->_1 bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue):7
          
          6:W:bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
             -->_1 dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq)):11
          
          7:W:bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
             -->_1 bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue))
                                                                           ,@acc
                                                                           ,@y):9
             -->_1 bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc):8
          
          8:W:bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
             -->_1 bftMult'#(@queue,@acc) -> bftMult'#2#(@queue):4
             -->_1 bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc):3
          
          9:W:bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
             -->_1 bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y)):10
          
          10:W:bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
             -->_1 bftMult'#(@queue,@acc) -> bftMult'#2#(@queue):4
             -->_1 bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc):3
          
          11:W:dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
             -->_1 dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq)):12
          
          12:W:dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
             -->_1 reverse#(@xs) -> c_35(appendreverse#(@xs,nil())):13
          
          13:W:reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
             -->_1 appendreverse#(@toreverse,@sofar) -> c_3(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.
          3: bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
          10: bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
          9: bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
          7: bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
          5: bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
          8: bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
          4: bftMult'#(@queue,@acc) -> bftMult'#2#(@queue)
          6: bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
          11: dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
          12: dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
          13: reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
          1: appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
          2: appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
***** Step 9.a:3.b:1.b:1.b:2: EmptyProcessor WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/1,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        EmptyProcessor
    + Details:
        The problem is already closed. The intended complexity is O(1).

** Step 9.b:1: PredecessorEstimation WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict DPs:
            bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
            bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
            bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
            dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
            lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
            matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
            matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
            reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
        - Weak DPs:
            appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        PredecessorEstimation {onSelection = all simple predecessor estimation selector}
    + Details:
        We estimate the number of application of
          {19}
        by application of
          Pre({19}) = {12}.
        Here rules are labelled as follows:
          1: bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
          2: bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
          3: bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
          4: bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
          5: bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
          6: bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
          7: bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
          8: computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
          9: computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
          10: computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                            ,lineMult#(@x,@l,@acc))
          11: dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
          12: dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
          13: lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
          14: lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
          15: lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
          16: lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
          17: matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
          18: matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
          19: reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
          20: appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
          21: appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
** Step 9.b:2: PredecessorEstimation WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict DPs:
            bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
            bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
            bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
            dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
            lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
            matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
            matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
        - Weak DPs:
            appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
            reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        PredecessorEstimation {onSelection = all simple predecessor estimation selector}
    + Details:
        We estimate the number of application of
          {12}
        by application of
          Pre({12}) = {11}.
        Here rules are labelled as follows:
          1: bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
          2: bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
          3: bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
          4: bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
          5: bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
          6: bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
          7: bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
          8: computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
          9: computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
          10: computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                            ,lineMult#(@x,@l,@acc))
          11: dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
          12: dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
          13: lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
          14: lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
          15: lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
          16: lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
          17: matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
          18: matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
          19: appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
          20: appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
          21: reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
** Step 9.b:3: PredecessorEstimation WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict DPs:
            bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
            bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
            bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
            lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
            matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
            matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
        - Weak DPs:
            appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
            dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
            reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        PredecessorEstimation {onSelection = all simple predecessor estimation selector}
    + Details:
        We estimate the number of application of
          {11}
        by application of
          Pre({11}) = {3}.
        Here rules are labelled as follows:
          1: bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
          2: bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
          3: bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
          4: bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
          5: bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
          6: bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
          7: bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
          8: computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
          9: computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
          10: computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                            ,lineMult#(@x,@l,@acc))
          11: dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
          12: lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
          13: lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
          14: lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
          15: lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
          16: matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
          17: matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
          18: appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
          19: appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
          20: dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
          21: reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
** Step 9.b:4: PredecessorEstimation WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict DPs:
            bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
            bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
            bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
            matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
            matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
        - Weak DPs:
            appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
            dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
            dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
            reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        PredecessorEstimation {onSelection = all simple predecessor estimation selector}
    + Details:
        We estimate the number of application of
          {3}
        by application of
          Pre({3}) = {1}.
        Here rules are labelled as follows:
          1: bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
          2: bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
          3: bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
          4: bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
          5: bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
          6: bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
          7: bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
          8: computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
          9: computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
          10: computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                            ,lineMult#(@x,@l,@acc))
          11: lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
          12: lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
          13: lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
          14: lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
          15: matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
          16: matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
          17: appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
          18: appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
          19: dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
          20: dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
          21: reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
** Step 9.b:5: RemoveWeakSuffixes WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict DPs:
            bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
            bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
            matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
            matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
        - Weak DPs:
            appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
            bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
            dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
            dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
            reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        RemoveWeakSuffixes
    + Details:
        Consider the dependency graph
          1:S:bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
             -->_2 bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2)):18
             -->_1 bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue)):2
          
          2:S:bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
             -->_1 bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue)):3
          
          3:S:bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
             -->_1 bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue))
                                                                                ,@acc
                                                                                ,@y)):5
             -->_1 bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc)):4
          
          4:S:bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
             -->_1 bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue)):1
          
          5:S:bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
             -->_1 bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y)):6
          
          6:S:bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
             -->_2 matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2)):14
             -->_1 bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue)):1
          
          7:S:computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
             -->_1 computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs)):8
          
          8:S:computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
             -->_1 computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                                 ,lineMult#(@x,@l,@acc)):9
          
          9:S:computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                            ,lineMult#(@x,@l,@acc))
             -->_2 lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n)):10
             -->_1 computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m)):7
          
          10:S:lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
             -->_1 lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs)):11
          
          11:S:lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
             -->_1 lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil())):13
             -->_1 lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys)):12
          
          12:S:lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
             -->_1 lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n)):10
          
          13:S:lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
             -->_1 lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n)):10
          
          14:S:matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
             -->_1 matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2)):15
          
          15:S:matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
             -->_2 matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2)):14
             -->_1 computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m)):7
          
          16:W:appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
             -->_1 appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar))):17
          
          17:W:appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
             -->_1 appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar)):16
          
          18:W:bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
             -->_1 dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq)):19
          
          19:W:dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
             -->_1 dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq)):20
          
          20:W:dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
             -->_1 reverse#(@xs) -> c_35(appendreverse#(@xs,nil())):21
          
          21:W:reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
             -->_1 appendreverse#(@toreverse,@sofar) -> c_3(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: bftMult'#2#(tuple#2(@dequeue@1,@dequeue@2)) -> c_9(dequeue#(@dequeue@1,@dequeue@2))
          19: dequeue#(@outq,@inq) -> c_20(dequeue#1#(@outq,@inq))
          20: dequeue#1#(nil(),@inq) -> c_22(reverse#(@inq))
          21: reverse#(@xs) -> c_35(appendreverse#(@xs,nil()))
          16: appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
          17: appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
** Step 9.b:6: SimplifyRHS WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict DPs:
            bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
            bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
            matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
            matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/2,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        SimplifyRHS
    + Details:
        Consider the dependency graph
          1:S:bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
             -->_1 bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue)):2
          
          2:S:bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
             -->_1 bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue)):3
          
          3:S:bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
             -->_1 bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue))
                                                                                ,@acc
                                                                                ,@y)):5
             -->_1 bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc)):4
          
          4:S:bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
             -->_1 bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue)):1
          
          5:S:bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
             -->_1 bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y)):6
          
          6:S:bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
             -->_2 matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2)):14
             -->_1 bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue)):1
          
          7:S:computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
             -->_1 computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs)):8
          
          8:S:computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
             -->_1 computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                                 ,lineMult#(@x,@l,@acc)):9
          
          9:S:computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                            ,lineMult#(@x,@l,@acc))
             -->_2 lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n)):10
             -->_1 computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m)):7
          
          10:S:lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
             -->_1 lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs)):11
          
          11:S:lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
             -->_1 lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil())):13
             -->_1 lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys)):12
          
          12:S:lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
             -->_1 lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n)):10
          
          13:S:lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
             -->_1 lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n)):10
          
          14:S:matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
             -->_1 matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2)):15
          
          15:S:matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
             -->_2 matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2)):14
             -->_1 computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m)):7
          
        Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified:
          bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc))
** Step 9.b:7: DecomposeDG WORST_CASE(?,O(n^3))
    + Considered Problem:
        - Strict DPs:
            bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc))
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
            bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
            matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
            matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + 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
          bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc))
          bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
          bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
          bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
          bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
          bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
        and a lower component
          computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
          computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
          computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                        ,lineMult#(@x,@l,@acc))
          lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
          lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
          lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
          lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
          matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
          matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
        Further, following extension rules are added to the lower component.
          bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
          bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
          bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
          bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
          bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
          bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
          bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
*** Step 9.b:7.a:1: PredecessorEstimationCP WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc))
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
            bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + 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: bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
          5: bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
          
        Consider the set of all dependency pairs
          1: bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc))
          2: bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
          3: bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
          4: bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
          5: bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
          6: bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
        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,5}
        These cover all (indirect) predecessors of dependency pairs
          {1,2,3,4,5,6}
        their number of applications is equally bounded.
        The dependency pairs are shifted into the weak component.
**** Step 9.b:7.a:1.a:1: NaturalMI WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc))
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
            bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + 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_7) = {1},
          uargs(c_8) = {1},
          uargs(c_10) = {1},
          uargs(c_12) = {1},
          uargs(c_13) = {1},
          uargs(c_14) = {1}
        
        Following symbols are considered usable:
          {appendreverse,appendreverse#1,bftMult'#2,dequeue,dequeue#1,dequeue#2,enqueue,enqueue#1,reverse,#add#
          ,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#
          ,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#,computeLine#,computeLine#1#,computeLine#2#,dequeue#
          ,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#
          ,reverse#}
        TcT has computed the following interpretation:
                        p(#0) = [0]                           
                      p(#add) = [1] x2 + [3]                  
                     p(#mult) = [5] x2 + [1]                  
                  p(#natmult) = [4] x1 + [0]                  
                      p(#neg) = [1] x1 + [1]                  
                      p(#pos) = [1] x1 + [2]                  
                     p(#pred) = [0]                           
                        p(#s) = [3]                           
                     p(#succ) = [2] x1 + [4]                  
                         p(*) = [1] x2 + [0]                  
                         p(+) = [2] x1 + [4]                  
                        p(::) = [1] x1 + [1] x2 + [0]         
             p(appendreverse) = [1] x1 + [1] x2 + [0]         
           p(appendreverse#1) = [1] x1 + [1] x2 + [0]         
                   p(bftMult) = [1]                           
                  p(bftMult') = [1] x1 + [4] x2 + [2]         
                p(bftMult'#1) = [1] x2 + [1]                  
                p(bftMult'#2) = [1] x1 + [0]                  
                p(bftMult'#3) = [2]                           
                p(bftMult'#4) = [4] x1 + [1] x2 + [1]         
                p(bftMult'#5) = [2]                           
               p(computeLine) = [2] x1 + [4] x2 + [6]         
             p(computeLine#1) = [3] x1 + [0]                  
             p(computeLine#2) = [1] x2 + [4]                  
                   p(dequeue) = [1] x1 + [1] x2 + [0]         
                 p(dequeue#1) = [1] x1 + [1] x2 + [0]         
                 p(dequeue#2) = [1] x1 + [0]                  
                   p(enqueue) = [1] x1 + [1] x2 + [1]         
                 p(enqueue#1) = [1] x1 + [1] x2 + [0]         
                      p(leaf) = [4]                           
                  p(lineMult) = [6] x1 + [0]                  
                p(lineMult#1) = [2] x1 + [1] x2 + [4]         
                p(lineMult#2) = [1] x3 + [2]                  
                p(matrixMult) = [2]                           
              p(matrixMult#1) = [0]                           
                       p(nil) = [0]                           
                      p(node) = [1] x2 + [1] x3 + [6]         
                   p(reverse) = [1] x1 + [0]                  
                   p(tuple#2) = [1] x1 + [1] x2 + [0]         
                     p(#add#) = [1] x2 + [1]                  
                    p(#mult#) = [1] x1 + [4] x2 + [1]         
                 p(#natmult#) = [0]                           
                    p(#pred#) = [1] x1 + [1]                  
                    p(#succ#) = [4] x1 + [0]                  
                        p(*#) = [4] x2 + [0]                  
                        p(+#) = [1] x1 + [1]                  
            p(appendreverse#) = [2] x2 + [2]                  
          p(appendreverse#1#) = [4] x1 + [1] x2 + [0]         
                  p(bftMult#) = [1] x1 + [0]                  
                 p(bftMult'#) = [2] x1 + [0]                  
               p(bftMult'#1#) = [2] x1 + [0]                  
               p(bftMult'#2#) = [0]                           
               p(bftMult'#3#) = [2] x1 + [2] x3 + [0]         
               p(bftMult'#4#) = [2] x1 + [2] x3 + [0]         
               p(bftMult'#5#) = [2] x1 + [0]                  
              p(computeLine#) = [4] x1 + [0]                  
            p(computeLine#1#) = [1] x2 + [1] x3 + [0]         
            p(computeLine#2#) = [1] x2 + [4] x3 + [2] x4 + [1]
                  p(dequeue#) = [0]                           
                p(dequeue#1#) = [1] x1 + [4]                  
                p(dequeue#2#) = [1]                           
                  p(enqueue#) = [0]                           
                p(enqueue#1#) = [2] x1 + [1] x2 + [0]         
                 p(lineMult#) = [4] x3 + [1]                  
               p(lineMult#1#) = [2] x2 + [1] x3 + [0]         
               p(lineMult#2#) = [2] x1 + [1]                  
               p(matrixMult#) = [4] x1 + [2]                  
             p(matrixMult#1#) = [2] x2 + [1]                  
                  p(reverse#) = [1]                           
                       p(c_1) = [2] x1 + [1]                  
                       p(c_2) = [4] x1 + [1]                  
                       p(c_3) = [4]                           
                       p(c_4) = [0]                           
                       p(c_5) = [1]                           
                       p(c_6) = [1]                           
                       p(c_7) = [1] x1 + [0]                  
                       p(c_8) = [1] x1 + [0]                  
                       p(c_9) = [0]                           
                      p(c_10) = [1] x1 + [0]                  
                      p(c_11) = [0]                           
                      p(c_12) = [1] x1 + [4]                  
                      p(c_13) = [1] x1 + [7]                  
                      p(c_14) = [1] x1 + [0]                  
                      p(c_15) = [2]                           
                      p(c_16) = [4] x1 + [4]                  
                      p(c_17) = [2]                           
                      p(c_18) = [2]                           
                      p(c_19) = [1]                           
                      p(c_20) = [1] x1 + [1]                  
                      p(c_21) = [1]                           
                      p(c_22) = [0]                           
                      p(c_23) = [4]                           
                      p(c_24) = [1]                           
                      p(c_25) = [1] x1 + [4]                  
                      p(c_26) = [0]                           
                      p(c_27) = [1] x1 + [0]                  
                      p(c_28) = [4] x1 + [0]                  
                      p(c_29) = [1]                           
                      p(c_30) = [0]                           
                      p(c_31) = [1] x1 + [4]                  
                      p(c_32) = [1] x1 + [1]                  
                      p(c_33) = [1] x1 + [1]                  
                      p(c_34) = [0]                           
                      p(c_35) = [1] x1 + [4]                  
                      p(c_36) = [2]                           
                      p(c_37) = [0]                           
                      p(c_38) = [4] x1 + [1] x2 + [2]         
                      p(c_39) = [2] x1 + [1]                  
                      p(c_40) = [2] x1 + [0]                  
                      p(c_41) = [4]                           
                      p(c_42) = [1]                           
                      p(c_43) = [0]                           
                      p(c_44) = [2]                           
                      p(c_45) = [1]                           
                      p(c_46) = [2]                           
                      p(c_47) = [1]                           
                      p(c_48) = [1]                           
                      p(c_49) = [1] x1 + [4]                  
                      p(c_50) = [2]                           
                      p(c_51) = [1] x2 + [0]                  
                      p(c_52) = [1]                           
                      p(c_53) = [0]                           
                      p(c_54) = [4]                           
                      p(c_55) = [0]                           
                      p(c_56) = [0]                           
                      p(c_57) = [0]                           
                      p(c_58) = [4]                           
                      p(c_59) = [1]                           
        
        Following rules are strictly oriented:
                  bftMult'#4#(leaf(),@acc,@queue) = [2] @queue + [8]                                           
                                                  > [2] @queue + [4]                                           
                                                  = c_12(bftMult'#(@queue,@acc))                               
        
        bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) = [2] @queue + [2] @t1 + [2] @t2 + [12]                      
                                                  > [2] @queue + [2] @t1 + [2] @t2 + [11]                      
                                                  = c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
        
        
        Following rules are (at-least) weakly oriented:
                            bftMult'#(@queue,@acc) =  [2] @queue + [0]                                                 
                                                   >= [2] @queue + [0]                                                 
                                                   =  c_7(bftMult'#1#(bftMult'#2(@queue),@acc))                        
        
           bftMult'#1#(tuple#2(@elem,@queue),@acc) =  [2] @elem + [2] @queue + [0]                                     
                                                   >= [2] @elem + [2] @queue + [0]                                     
                                                   =  c_8(bftMult'#3#(@elem,@acc,@queue))                              
        
              bftMult'#3#(::(@t,@_@3),@acc,@queue) =  [2] @_@3 + [2] @queue + [2] @t + [0]                             
                                                   >= [2] @queue + [2] @t + [0]                                        
                                                   =  c_10(bftMult'#4#(@t,@acc,@queue))                                
        
                      bftMult'#5#(@queue',@acc,@y) =  [2] @queue' + [0]                                                
                                                   >= [2] @queue' + [0]                                                
                                                   =  c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
        
                  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                                                           
        
        bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) =  [1] @dequeue@1 + [1] @dequeue@2 + [0]                            
                                                   >= [1] @dequeue@1 + [1] @dequeue@2 + [0]                            
                                                   =  dequeue(@dequeue@1,@dequeue@2)                                   
        
                               dequeue(@outq,@inq) =  [1] @inq + [1] @outq + [0]                                       
                                                   >= [1] @inq + [1] @outq + [0]                                       
                                                   =  dequeue#1(@outq,@inq)                                            
        
                        dequeue#1(::(@t,@ts),@inq) =  [1] @inq + [1] @t + [1] @ts + [0]                                
                                                   >= [1] @inq + [1] @t + [1] @ts + [0]                                
                                                   =  tuple#2(::(@t,nil()),tuple#2(@ts,@inq))                          
        
                             dequeue#1(nil(),@inq) =  [1] @inq + [0]                                                   
                                                   >= [1] @inq + [0]                                                   
                                                   =  dequeue#2(reverse(@inq))                                         
        
                             dequeue#2(::(@t,@ts)) =  [1] @t + [1] @ts + [0]                                           
                                                   >= [1] @t + [1] @ts + [0]                                           
                                                   =  tuple#2(::(@t,nil()),tuple#2(@ts,nil()))                         
        
                                  dequeue#2(nil()) =  [0]                                                              
                                                   >= [0]                                                              
                                                   =  tuple#2(nil(),tuple#2(nil(),nil()))                              
        
                                enqueue(@t,@queue) =  [1] @queue + [1] @t + [1]                                        
                                                   >= [1] @queue + [1] @t + [0]                                        
                                                   =  enqueue#1(@queue,@t)                                             
        
                 enqueue#1(tuple#2(@outq,@inq),@t) =  [1] @inq + [1] @outq + [1] @t + [0]                              
                                                   >= [1] @inq + [1] @outq + [1] @t + [0]                              
                                                   =  tuple#2(@outq,::(@t,@inq))                                       
        
                                      reverse(@xs) =  [1] @xs + [0]                                                    
                                                   >= [1] @xs + [0]                                                    
                                                   =  appendreverse(@xs,nil())                                         
        
**** Step 9.b:7.a:1.a:2: Assumption WORST_CASE(?,O(1))
    + Considered Problem:
        - Strict DPs:
            bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc))
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
            bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
        - Weak DPs:
            bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
    + Details:
        ()

**** Step 9.b:7.a:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak DPs:
            bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc))
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
            bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        RemoveWeakSuffixes
    + Details:
        Consider the dependency graph
          1:W:bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc))
             -->_1 bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue)):2
          
          2:W:bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
             -->_1 bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue)):3
          
          3:W:bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
             -->_1 bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue))
                                                                                ,@acc
                                                                                ,@y)):5
             -->_1 bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc)):4
          
          4:W:bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
             -->_1 bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc)):1
          
          5:W:bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
             -->_1 bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y)):6
          
          6:W:bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
             -->_1 bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc)):1
          
        The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
          1: bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc))
          6: bftMult'#5#(@queue',@acc,@y) -> c_14(bftMult'#(@queue',matrixMult(@acc,@y)),matrixMult#(@acc,@y))
          5: bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> c_13(bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y))
          3: bftMult'#3#(::(@t,@_@3),@acc,@queue) -> c_10(bftMult'#4#(@t,@acc,@queue))
          2: bftMult'#1#(tuple#2(@elem,@queue),@acc) -> c_8(bftMult'#3#(@elem,@acc,@queue))
          4: bftMult'#4#(leaf(),@acc,@queue) -> c_12(bftMult'#(@queue,@acc))
**** Step 9.b:7.a:1.b:2: EmptyProcessor WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        EmptyProcessor
    + Details:
        The problem is already closed. The intended complexity is O(1).

*** Step 9.b:7.b:1: DecomposeDG WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict DPs:
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
            matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
            matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
        - Weak DPs:
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + 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
          bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
          bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
          bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
          bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
          bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
          bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
          bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
          matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
          matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
        and a lower component
          computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
          computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
          computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                        ,lineMult#(@x,@l,@acc))
          lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
          lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
          lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
          lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
        Further, following extension rules are added to the lower component.
          bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
          bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
          bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
          bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
          bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
          bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
          bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
          matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2)
          matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil())
          matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2)
**** Step 9.b:7.b:1.a:1: PredecessorEstimationCP WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
            matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
        - Weak DPs:
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + 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: matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
          
        The strictly oriented rules are moved into the weak component.
***** Step 9.b:7.b:1.a:1.a:1: NaturalMI WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
            matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
        - Weak DPs:
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + 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_32) = {1},
          uargs(c_33) = {2}
        
        Following symbols are considered usable:
          {matrixMult,matrixMult#1,#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#,appendreverse#1#
          ,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#,computeLine#,computeLine#1#
          ,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#,lineMult#1#,lineMult#2#
          ,matrixMult#,matrixMult#1#,reverse#}
        TcT has computed the following interpretation:
                        p(#0) = [0]                           
                      p(#add) = [0]                           
                     p(#mult) = [0]                           
                  p(#natmult) = [0]                           
                      p(#neg) = [1]                           
                      p(#pos) = [5]                           
                     p(#pred) = [2] x1 + [0]                  
                        p(#s) = [1] x1 + [0]                  
                     p(#succ) = [3]                           
                         p(*) = [6] x2 + [0]                  
                         p(+) = [1] x1 + [0]                  
                        p(::) = [1] x2 + [4]                  
             p(appendreverse) = [0]                           
           p(appendreverse#1) = [0]                           
                   p(bftMult) = [0]                           
                  p(bftMult') = [0]                           
                p(bftMult'#1) = [0]                           
                p(bftMult'#2) = [0]                           
                p(bftMult'#3) = [0]                           
                p(bftMult'#4) = [0]                           
                p(bftMult'#5) = [0]                           
               p(computeLine) = [2] x3 + [7]                  
             p(computeLine#1) = [3]                           
             p(computeLine#2) = [0]                           
                   p(dequeue) = [0]                           
                 p(dequeue#1) = [0]                           
                 p(dequeue#2) = [0]                           
                   p(enqueue) = [1] x1 + [2] x2 + [2]         
                 p(enqueue#1) = [0]                           
                      p(leaf) = [0]                           
                  p(lineMult) = [1] x1 + [7] x2 + [4]         
                p(lineMult#1) = [0]                           
                p(lineMult#2) = [0]                           
                p(matrixMult) = [1] x1 + [0]                  
              p(matrixMult#1) = [1] x1 + [0]                  
                       p(nil) = [4]                           
                      p(node) = [1] x1 + [1] x2 + [1] x3 + [0]
                   p(reverse) = [0]                           
                   p(tuple#2) = [1]                           
                     p(#add#) = [0]                           
                    p(#mult#) = [0]                           
                 p(#natmult#) = [0]                           
                    p(#pred#) = [0]                           
                    p(#succ#) = [0]                           
                        p(*#) = [0]                           
                        p(+#) = [0]                           
            p(appendreverse#) = [0]                           
          p(appendreverse#1#) = [0]                           
                  p(bftMult#) = [0]                           
                 p(bftMult'#) = [4] x2 + [0]                  
               p(bftMult'#1#) = [4] x2 + [0]                  
               p(bftMult'#2#) = [0]                           
               p(bftMult'#3#) = [4] x2 + [0]                  
               p(bftMult'#4#) = [4] x2 + [0]                  
               p(bftMult'#5#) = [4] x2 + [0]                  
              p(computeLine#) = [0]                           
            p(computeLine#1#) = [0]                           
            p(computeLine#2#) = [0]                           
                  p(dequeue#) = [0]                           
                p(dequeue#1#) = [0]                           
                p(dequeue#2#) = [0]                           
                  p(enqueue#) = [0]                           
                p(enqueue#1#) = [0]                           
                 p(lineMult#) = [0]                           
               p(lineMult#1#) = [0]                           
               p(lineMult#2#) = [0]                           
               p(matrixMult#) = [2] x1 + [0]                  
             p(matrixMult#1#) = [2] x1 + [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) = [0]                           
                      p(c_17) = [0]                           
                      p(c_18) = [0]                           
                      p(c_19) = [0]                           
                      p(c_20) = [0]                           
                      p(c_21) = [0]                           
                      p(c_22) = [0]                           
                      p(c_23) = [0]                           
                      p(c_24) = [0]                           
                      p(c_25) = [0]                           
                      p(c_26) = [0]                           
                      p(c_27) = [0]                           
                      p(c_28) = [0]                           
                      p(c_29) = [0]                           
                      p(c_30) = [0]                           
                      p(c_31) = [0]                           
                      p(c_32) = [1] x1 + [0]                  
                      p(c_33) = [1] x1 + [1] x2 + [7]         
                      p(c_34) = [0]                           
                      p(c_35) = [0]                           
                      p(c_36) = [0]                           
                      p(c_37) = [0]                           
                      p(c_38) = [1] x2 + [0]                  
                      p(c_39) = [0]                           
                      p(c_40) = [0]                           
                      p(c_41) = [0]                           
                      p(c_42) = [0]                           
                      p(c_43) = [0]                           
                      p(c_44) = [0]                           
                      p(c_45) = [1] x1 + [0]                  
                      p(c_46) = [0]                           
                      p(c_47) = [0]                           
                      p(c_48) = [1] x1 + [0]                  
                      p(c_49) = [0]                           
                      p(c_50) = [0]                           
                      p(c_51) = [1] x1 + [1]                  
                      p(c_52) = [2]                           
                      p(c_53) = [4]                           
                      p(c_54) = [1]                           
                      p(c_55) = [2]                           
                      p(c_56) = [0]                           
                      p(c_57) = [0]                           
                      p(c_58) = [2]                           
                      p(c_59) = [1]                           
        
        Following rules are strictly oriented:
        matrixMult#1#(::(@l,@ls),@m2) = [2] @ls + [8]                                        
                                      > [2] @ls + [7]                                        
                                      = c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
        
        
        Following rules are (at-least) weakly oriented:
                           bftMult'#(@queue,@acc) =  [4] @acc + [0]                                       
                                                  >= [4] @acc + [0]                                       
                                                  =  bftMult'#1#(bftMult'#2(@queue),@acc)                 
        
          bftMult'#1#(tuple#2(@elem,@queue),@acc) =  [4] @acc + [0]                                       
                                                  >= [4] @acc + [0]                                       
                                                  =  bftMult'#3#(@elem,@acc,@queue)                       
        
             bftMult'#3#(::(@t,@_@3),@acc,@queue) =  [4] @acc + [0]                                       
                                                  >= [4] @acc + [0]                                       
                                                  =  bftMult'#4#(@t,@acc,@queue)                          
        
                  bftMult'#4#(leaf(),@acc,@queue) =  [4] @acc + [0]                                       
                                                  >= [4] @acc + [0]                                       
                                                  =  bftMult'#(@queue,@acc)                               
        
        bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) =  [4] @acc + [0]                                       
                                                  >= [4] @acc + [0]                                       
                                                  =  bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
        
                     bftMult'#5#(@queue',@acc,@y) =  [4] @acc + [0]                                       
                                                  >= [4] @acc + [0]                                       
                                                  =  bftMult'#(@queue',matrixMult(@acc,@y))               
        
                     bftMult'#5#(@queue',@acc,@y) =  [4] @acc + [0]                                       
                                                  >= [2] @acc + [0]                                       
                                                  =  matrixMult#(@acc,@y)                                 
        
                             matrixMult#(@m1,@m2) =  [2] @m1 + [0]                                        
                                                  >= [2] @m1 + [0]                                        
                                                  =  c_32(matrixMult#1#(@m1,@m2))                         
        
                              matrixMult(@m1,@m2) =  [1] @m1 + [0]                                        
                                                  >= [1] @m1 + [0]                                        
                                                  =  matrixMult#1(@m1,@m2)                                
        
                     matrixMult#1(::(@l,@ls),@m2) =  [1] @ls + [4]                                        
                                                  >= [1] @ls + [4]                                        
                                                  =  ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))    
        
                          matrixMult#1(nil(),@m2) =  [4]                                                  
                                                  >= [4]                                                  
                                                  =  nil()                                                
        
***** Step 9.b:7.b:1.a:1.a:2: Assumption WORST_CASE(?,O(1))
    + Considered Problem:
        - Strict DPs:
            matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
        - Weak DPs:
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
            matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
    + Details:
        ()

***** Step 9.b:7.b:1.a:1.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
        - Weak DPs:
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
            matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + 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: matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
          
        Consider the set of all dependency pairs
          1: matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
          2: bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
          3: bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
          4: bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
          5: bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
          6: bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
          7: bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
          8: bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
          9: matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
        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,9}
        their number of applications is equally bounded.
        The dependency pairs are shifted into the weak component.
****** Step 9.b:7.b:1.a:1.b:1.a:1: NaturalMI WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
        - Weak DPs:
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
            matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + 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_32) = {1},
          uargs(c_33) = {2}
        
        Following symbols are considered usable:
          {matrixMult,matrixMult#1,#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#,appendreverse#1#
          ,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#,computeLine#,computeLine#1#
          ,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#,lineMult#1#,lineMult#2#
          ,matrixMult#,matrixMult#1#,reverse#}
        TcT has computed the following interpretation:
                        p(#0) = [4]                           
                      p(#add) = [0]                           
                     p(#mult) = [2] x2 + [0]                  
                  p(#natmult) = [1] x2 + [2]                  
                      p(#neg) = [2]                           
                      p(#pos) = [1] x1 + [5]                  
                     p(#pred) = [2] x1 + [3]                  
                        p(#s) = [0]                           
                     p(#succ) = [3]                           
                         p(*) = [0]                           
                         p(+) = [1] x1 + [0]                  
                        p(::) = [1] x2 + [1]                  
             p(appendreverse) = [4] x1 + [2] x2 + [0]         
           p(appendreverse#1) = [1] x2 + [0]                  
                   p(bftMult) = [1] x2 + [0]                  
                  p(bftMult') = [1] x1 + [1] x2 + [0]         
                p(bftMult'#1) = [0]                           
                p(bftMult'#2) = [0]                           
                p(bftMult'#3) = [1] x2 + [0]                  
                p(bftMult'#4) = [1] x1 + [1] x3 + [0]         
                p(bftMult'#5) = [1] x1 + [1] x2 + [1] x3 + [0]
               p(computeLine) = [2]                           
             p(computeLine#1) = [5] x1 + [1] x3 + [4]         
             p(computeLine#2) = [2] x1 + [2] x3 + [0]         
                   p(dequeue) = [0]                           
                 p(dequeue#1) = [0]                           
                 p(dequeue#2) = [2] x1 + [0]                  
                   p(enqueue) = [4]                           
                 p(enqueue#1) = [1] x2 + [1]                  
                      p(leaf) = [0]                           
                  p(lineMult) = [4] x1 + [2] x3 + [4]         
                p(lineMult#1) = [1] x3 + [1]                  
                p(lineMult#2) = [4] x1 + [4] x2 + [2] x4 + [1]
                p(matrixMult) = [1] x1 + [0]                  
              p(matrixMult#1) = [1] x1 + [0]                  
                       p(nil) = [1]                           
                      p(node) = [1] x1 + [0]                  
                   p(reverse) = [4] x1 + [0]                  
                   p(tuple#2) = [0]                           
                     p(#add#) = [1] x2 + [0]                  
                    p(#mult#) = [4] x2 + [0]                  
                 p(#natmult#) = [0]                           
                    p(#pred#) = [4] x1 + [0]                  
                    p(#succ#) = [4] x1 + [0]                  
                        p(*#) = [0]                           
                        p(+#) = [1] x1 + [0]                  
            p(appendreverse#) = [4] x1 + [4] x2 + [0]         
          p(appendreverse#1#) = [1] x1 + [0]                  
                  p(bftMult#) = [1] x1 + [4] x2 + [0]         
                 p(bftMult'#) = [4] x2 + [7]                  
               p(bftMult'#1#) = [4] x2 + [7]                  
               p(bftMult'#2#) = [1] x1 + [0]                  
               p(bftMult'#3#) = [4] x2 + [7]                  
               p(bftMult'#4#) = [4] x2 + [7]                  
               p(bftMult'#5#) = [4] x2 + [7]                  
              p(computeLine#) = [3]                           
            p(computeLine#1#) = [0]                           
            p(computeLine#2#) = [2] x1 + [1] x4 + [0]         
                  p(dequeue#) = [1] x1 + [1] x2 + [0]         
                p(dequeue#1#) = [1] x2 + [0]                  
                p(dequeue#2#) = [0]                           
                  p(enqueue#) = [2] x1 + [0]                  
                p(enqueue#1#) = [1] x1 + [0]                  
                 p(lineMult#) = [0]                           
               p(lineMult#1#) = [2] x1 + [1] x2 + [4] x3 + [0]
               p(lineMult#2#) = [2]                           
               p(matrixMult#) = [4] x1 + [7]                  
             p(matrixMult#1#) = [4] x1 + [6]                  
                  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) = [4] x1 + [0]                  
                       p(c_7) = [1] x1 + [0]                  
                       p(c_8) = [0]                           
                       p(c_9) = [0]                           
                      p(c_10) = [2] x1 + [0]                  
                      p(c_11) = [0]                           
                      p(c_12) = [4] x1 + [0]                  
                      p(c_13) = [0]                           
                      p(c_14) = [2] x1 + [0]                  
                      p(c_15) = [0]                           
                      p(c_16) = [0]                           
                      p(c_17) = [0]                           
                      p(c_18) = [1] x1 + [0]                  
                      p(c_19) = [0]                           
                      p(c_20) = [1] x1 + [0]                  
                      p(c_21) = [0]                           
                      p(c_22) = [0]                           
                      p(c_23) = [0]                           
                      p(c_24) = [0]                           
                      p(c_25) = [2] x1 + [2]                  
                      p(c_26) = [1]                           
                      p(c_27) = [2]                           
                      p(c_28) = [1] x1 + [1]                  
                      p(c_29) = [2]                           
                      p(c_30) = [0]                           
                      p(c_31) = [2] x1 + [0]                  
                      p(c_32) = [1] x1 + [0]                  
                      p(c_33) = [1] x1 + [1] x2 + [0]         
                      p(c_34) = [0]                           
                      p(c_35) = [0]                           
                      p(c_36) = [0]                           
                      p(c_37) = [0]                           
                      p(c_38) = [2] x2 + [0]                  
                      p(c_39) = [1] x1 + [0]                  
                      p(c_40) = [1] x2 + [0]                  
                      p(c_41) = [0]                           
                      p(c_42) = [0]                           
                      p(c_43) = [0]                           
                      p(c_44) = [0]                           
                      p(c_45) = [0]                           
                      p(c_46) = [1] x1 + [0]                  
                      p(c_47) = [0]                           
                      p(c_48) = [4] x1 + [0]                  
                      p(c_49) = [0]                           
                      p(c_50) = [0]                           
                      p(c_51) = [2] x1 + [0]                  
                      p(c_52) = [0]                           
                      p(c_53) = [0]                           
                      p(c_54) = [0]                           
                      p(c_55) = [0]                           
                      p(c_56) = [0]                           
                      p(c_57) = [0]                           
                      p(c_58) = [0]                           
                      p(c_59) = [0]                           
        
        Following rules are strictly oriented:
        matrixMult#(@m1,@m2) = [4] @m1 + [7]               
                             > [4] @m1 + [6]               
                             = c_32(matrixMult#1#(@m1,@m2))
        
        
        Following rules are (at-least) weakly oriented:
                           bftMult'#(@queue,@acc) =  [4] @acc + [7]                                       
                                                  >= [4] @acc + [7]                                       
                                                  =  bftMult'#1#(bftMult'#2(@queue),@acc)                 
        
          bftMult'#1#(tuple#2(@elem,@queue),@acc) =  [4] @acc + [7]                                       
                                                  >= [4] @acc + [7]                                       
                                                  =  bftMult'#3#(@elem,@acc,@queue)                       
        
             bftMult'#3#(::(@t,@_@3),@acc,@queue) =  [4] @acc + [7]                                       
                                                  >= [4] @acc + [7]                                       
                                                  =  bftMult'#4#(@t,@acc,@queue)                          
        
                  bftMult'#4#(leaf(),@acc,@queue) =  [4] @acc + [7]                                       
                                                  >= [4] @acc + [7]                                       
                                                  =  bftMult'#(@queue,@acc)                               
        
        bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) =  [4] @acc + [7]                                       
                                                  >= [4] @acc + [7]                                       
                                                  =  bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
        
                     bftMult'#5#(@queue',@acc,@y) =  [4] @acc + [7]                                       
                                                  >= [4] @acc + [7]                                       
                                                  =  bftMult'#(@queue',matrixMult(@acc,@y))               
        
                     bftMult'#5#(@queue',@acc,@y) =  [4] @acc + [7]                                       
                                                  >= [4] @acc + [7]                                       
                                                  =  matrixMult#(@acc,@y)                                 
        
                    matrixMult#1#(::(@l,@ls),@m2) =  [4] @ls + [10]                                       
                                                  >= [4] @ls + [10]                                       
                                                  =  c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
        
                              matrixMult(@m1,@m2) =  [1] @m1 + [0]                                        
                                                  >= [1] @m1 + [0]                                        
                                                  =  matrixMult#1(@m1,@m2)                                
        
                     matrixMult#1(::(@l,@ls),@m2) =  [1] @ls + [1]                                        
                                                  >= [1] @ls + [1]                                        
                                                  =  ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))    
        
                          matrixMult#1(nil(),@m2) =  [1]                                                  
                                                  >= [1]                                                  
                                                  =  nil()                                                
        
****** Step 9.b:7.b:1.a:1.b:1.a:2: Assumption WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak DPs:
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
            matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
            matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
    + Details:
        ()

****** Step 9.b:7.b:1.a:1.b:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak DPs:
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
            matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
            matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        RemoveWeakSuffixes
    + Details:
        Consider the dependency graph
          1:W:bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
             -->_1 bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue):2
          
          2:W:bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
             -->_1 bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue):3
          
          3:W:bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
             -->_1 bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue))
                                                                           ,@acc
                                                                           ,@y):5
             -->_1 bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc):4
          
          4:W:bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
             -->_1 bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc):1
          
          5:W:bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
             -->_1 bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y):7
             -->_1 bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y)):6
          
          6:W:bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
             -->_1 bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc):1
          
          7:W:bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
             -->_1 matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2)):8
          
          8:W:matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
             -->_1 matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2)):9
          
          9:W:matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
             -->_2 matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2)):8
          
        The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
          1: bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
          6: bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
          5: bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
          3: bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
          2: bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
          4: bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
          7: bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
          8: matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
          9: matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
****** Step 9.b:7.b:1.a:1.b:1.b:2: EmptyProcessor WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        EmptyProcessor
    + Details:
        The problem is already closed. The intended complexity is O(1).

**** Step 9.b:7.b:1.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
        - Weak DPs:
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
            matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2)
            matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil())
            matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2)
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + 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:
          6: lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
          7: lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
          
        The strictly oriented rules are moved into the weak component.
***** Step 9.b:7.b:1.b:1.a:1: NaturalMI WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
        - Weak DPs:
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
            matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2)
            matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil())
            matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2)
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + 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_15) = {1},
          uargs(c_16) = {1},
          uargs(c_18) = {1,2},
          uargs(c_27) = {1},
          uargs(c_28) = {1},
          uargs(c_30) = {1},
          uargs(c_31) = {1}
        
        Following symbols are considered usable:
          {appendreverse,appendreverse#1,bftMult'#2,dequeue,dequeue#1,dequeue#2,enqueue,enqueue#1,reverse,#add#
          ,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#
          ,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#,computeLine#,computeLine#1#,computeLine#2#,dequeue#
          ,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#
          ,reverse#}
        TcT has computed the following interpretation:
                        p(#0) = [1]                                 
                                [0]                                 
                      p(#add) = [0 1] x2 + [0]                      
                                [0 0]      [0]                      
                     p(#mult) = [0 0] x1 + [0]                      
                                [0 1]      [0]                      
                  p(#natmult) = [0]                                 
                                [0]                                 
                      p(#neg) = [0]                                 
                                [0]                                 
                      p(#pos) = [0]                                 
                                [1]                                 
                     p(#pred) = [0 0] x1 + [0]                      
                                [1 0]      [0]                      
                        p(#s) = [0]                                 
                                [0]                                 
                     p(#succ) = [0]                                 
                                [0]                                 
                         p(*) = [0]                                 
                                [0]                                 
                         p(+) = [0]                                 
                                [0]                                 
                        p(::) = [0 0] x1 + [0 0] x2 + [0]           
                                [0 1]      [0 1]      [1]           
             p(appendreverse) = [0 1] x1 + [1 1] x2 + [0]           
                                [0 1]      [0 1]      [0]           
           p(appendreverse#1) = [0 1] x1 + [1 1] x2 + [0]           
                                [0 1]      [0 1]      [0]           
                   p(bftMult) = [0]                                 
                                [0]                                 
                  p(bftMult') = [0]                                 
                                [0]                                 
                p(bftMult'#1) = [0]                                 
                                [0]                                 
                p(bftMult'#2) = [0 0] x1 + [0]                      
                                [0 1]      [0]                      
                p(bftMult'#3) = [0]                                 
                                [0]                                 
                p(bftMult'#4) = [0]                                 
                                [0]                                 
                p(bftMult'#5) = [0]                                 
                                [0]                                 
               p(computeLine) = [0]                                 
                                [0]                                 
             p(computeLine#1) = [1]                                 
                                [1]                                 
             p(computeLine#2) = [1]                                 
                                [0]                                 
                   p(dequeue) = [0 0] x1 + [0 0] x2 + [0]           
                                [0 1]      [0 1]      [0]           
                 p(dequeue#1) = [0 0] x1 + [0 0] x2 + [0]           
                                [0 1]      [0 1]      [0]           
                 p(dequeue#2) = [0 0] x1 + [0]                      
                                [0 1]      [0]                      
                   p(enqueue) = [0 0] x1 + [0 1] x2 + [0]           
                                [0 1]      [0 1]      [1]           
                 p(enqueue#1) = [0 1] x1 + [0 0] x2 + [0]           
                                [0 1]      [0 1]      [1]           
                      p(leaf) = [0]                                 
                                [0]                                 
                  p(lineMult) = [0]                                 
                                [0]                                 
                p(lineMult#1) = [0]                                 
                                [0]                                 
                p(lineMult#2) = [1]                                 
                                [0]                                 
                p(matrixMult) = [0]                                 
                                [1]                                 
              p(matrixMult#1) = [0 0] x1 + [1]                      
                                [0 1]      [0]                      
                       p(nil) = [0]                                 
                                [0]                                 
                      p(node) = [0 0] x1 + [0 0] x2 + [0 0] x3 + [0]
                                [0 1]      [0 1]      [0 1]      [1]
                   p(reverse) = [1 1] x1 + [0]                      
                                [0 1]      [0]                      
                   p(tuple#2) = [0 0] x1 + [0 0] x2 + [0]           
                                [0 1]      [0 1]      [0]           
                     p(#add#) = [0]                                 
                                [0]                                 
                    p(#mult#) = [0]                                 
                                [0]                                 
                 p(#natmult#) = [0]                                 
                                [0]                                 
                    p(#pred#) = [0]                                 
                                [0]                                 
                    p(#succ#) = [0]                                 
                                [0]                                 
                        p(*#) = [0]                                 
                                [0]                                 
                        p(+#) = [0]                                 
                                [0]                                 
            p(appendreverse#) = [0]                                 
                                [0]                                 
          p(appendreverse#1#) = [0]                                 
                                [0]                                 
                  p(bftMult#) = [0]                                 
                                [0]                                 
                 p(bftMult'#) = [0 1] x1 + [0]                      
                                [0 0]      [1]                      
               p(bftMult'#1#) = [0 1] x1 + [0]                      
                                [0 0]      [1]                      
               p(bftMult'#2#) = [0]                                 
                                [0]                                 
               p(bftMult'#3#) = [0 1] x1 + [0 1] x3 + [0]           
                                [0 0]      [0 0]      [1]           
               p(bftMult'#4#) = [0 1] x1 + [0 1] x3 + [1]           
                                [0 0]      [0 0]      [1]           
               p(bftMult'#5#) = [0 1] x1 + [0 1] x3 + [0]           
                                [0 0]      [0 0]      [1]           
              p(computeLine#) = [0 1] x2 + [0]                      
                                [0 0]      [0]                      
            p(computeLine#1#) = [0 1] x3 + [0]                      
                                [1 0]      [0]                      
            p(computeLine#2#) = [0 1] x1 + [0]                      
                                [0 1]      [0]                      
                  p(dequeue#) = [0]                                 
                                [0]                                 
                p(dequeue#1#) = [0]                                 
                                [0]                                 
                p(dequeue#2#) = [0]                                 
                                [0]                                 
                  p(enqueue#) = [0]                                 
                                [0]                                 
                p(enqueue#1#) = [0]                                 
                                [0]                                 
                 p(lineMult#) = [0 1] x2 + [0]                      
                                [0 0]      [1]                      
               p(lineMult#1#) = [0 1] x1 + [0]                      
                                [0 0]      [1]                      
               p(lineMult#2#) = [0 0] x1 + [0 1] x4 + [1]           
                                [0 1]      [0 1]      [0]           
               p(matrixMult#) = [0 1] x2 + [0]                      
                                [0 0]      [0]                      
             p(matrixMult#1#) = [0 1] x2 + [0]                      
                                [0 0]      [0]                      
                  p(reverse#) = [0]                                 
                                [0]                                 
                       p(c_1) = [0]                                 
                                [0]                                 
                       p(c_2) = [0]                                 
                                [0]                                 
                       p(c_3) = [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) = [1 0] x1 + [0]                      
                                [0 0]      [0]                      
                      p(c_16) = [1 0] x1 + [0]                      
                                [0 0]      [0]                      
                      p(c_17) = [0]                                 
                                [0]                                 
                      p(c_18) = [1 0] x1 + [1 1] x2 + [0]           
                                [0 0]      [1 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) = [0]                                 
                                [0]                                 
                      p(c_26) = [0]                                 
                                [0]                                 
                      p(c_27) = [1 0] x1 + [0]                      
                                [0 0]      [0]                      
                      p(c_28) = [1 0] x1 + [0]                      
                                [0 0]      [0]                      
                      p(c_29) = [0]                                 
                                [0]                                 
                      p(c_30) = [1 0] x1 + [0]                      
                                [0 0]      [0]                      
                      p(c_31) = [1 0] x1 + [0]                      
                                [1 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]                                 
                      p(c_58) = [0]                                 
                                [0]                                 
                      p(c_59) = [0]                                 
                                [0]                                 
        
        Following rules are strictly oriented:
        lineMult#2#(::(@y,@ys),@n,@x,@xs) = [0 1] @xs + [0 0] @y + [0 0] @ys + [1]
                                            [0 1]       [0 1]      [0 1]       [1]
                                          > [0 1] @xs + [0]                       
                                            [0 0]       [0]                       
                                          = c_30(lineMult#(@n,@xs,@ys))           
        
             lineMult#2#(nil(),@n,@x,@xs) = [0 1] @xs + [1]                       
                                            [0 1]       [0]                       
                                          > [0 1] @xs + [0]                       
                                            [0 1]       [0]                       
                                          = c_31(lineMult#(@n,@xs,nil()))         
        
        
        Following rules are (at-least) weakly oriented:
                            bftMult'#(@queue,@acc) =  [0 1] @queue + [0]                                                    
                                                      [0 0]          [1]                                                    
                                                   >= [0 1] @queue + [0]                                                    
                                                      [0 0]          [1]                                                    
                                                   =  bftMult'#1#(bftMult'#2(@queue),@acc)                                  
        
           bftMult'#1#(tuple#2(@elem,@queue),@acc) =  [0 1] @elem + [0 1] @queue + [0]                                      
                                                      [0 0]         [0 0]          [1]                                      
                                                   >= [0 1] @elem + [0 1] @queue + [0]                                      
                                                      [0 0]         [0 0]          [1]                                      
                                                   =  bftMult'#3#(@elem,@acc,@queue)                                        
        
              bftMult'#3#(::(@t,@_@3),@acc,@queue) =  [0 1] @_@3 + [0 1] @queue + [0 1] @t + [1]                            
                                                      [0 0]        [0 0]          [0 0]      [1]                            
                                                   >= [0 1] @queue + [0 1] @t + [1]                                         
                                                      [0 0]          [0 0]      [1]                                         
                                                   =  bftMult'#4#(@t,@acc,@queue)                                           
        
                   bftMult'#4#(leaf(),@acc,@queue) =  [0 1] @queue + [1]                                                    
                                                      [0 0]          [1]                                                    
                                                   >= [0 1] @queue + [0]                                                    
                                                      [0 0]          [1]                                                    
                                                   =  bftMult'#(@queue,@acc)                                                
        
         bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) =  [0 1] @queue + [0 1] @t1 + [0 1] @t2 + [0 1] @y + [2]                 
                                                      [0 0]          [0 0]       [0 0]       [0 0]      [1]                 
                                                   >= [0 1] @queue + [0 1] @t1 + [0 1] @t2 + [0 1] @y + [2]                 
                                                      [0 0]          [0 0]       [0 0]       [0 0]      [1]                 
                                                   =  bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)                 
        
                      bftMult'#5#(@queue',@acc,@y) =  [0 1] @queue' + [0 1] @y + [0]                                        
                                                      [0 0]           [0 0]      [1]                                        
                                                   >= [0 1] @queue' + [0]                                                   
                                                      [0 0]           [1]                                                   
                                                   =  bftMult'#(@queue',matrixMult(@acc,@y))                                
        
                      bftMult'#5#(@queue',@acc,@y) =  [0 1] @queue' + [0 1] @y + [0]                                        
                                                      [0 0]           [0 0]      [1]                                        
                                                   >= [0 1] @y + [0]                                                        
                                                      [0 0]      [0]                                                        
                                                   =  matrixMult#(@acc,@y)                                                  
        
                       computeLine#(@line,@m,@acc) =  [0 1] @m + [0]                                                        
                                                      [0 0]      [0]                                                        
                                                   >= [0 1] @m + [0]                                                        
                                                      [0 0]      [0]                                                        
                                                   =  c_15(computeLine#1#(@line,@acc,@m))                                   
        
                computeLine#1#(::(@x,@xs),@acc,@m) =  [0 1] @m + [0]                                                        
                                                      [1 0]      [0]                                                        
                                                   >= [0 1] @m + [0]                                                        
                                                      [0 0]      [0]                                                        
                                                   =  c_16(computeLine#2#(@m,@acc,@x,@xs))                                  
        
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) =  [0 1] @l + [0 1] @ls + [1]                                            
                                                      [0 1]      [0 1]       [1]                                            
                                                   >= [0 1] @l + [0 1] @ls + [1]                                            
                                                      [0 1]      [0 0]       [0]                                            
                                                   =  c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)),lineMult#(@x,@l,@acc))
        
                             lineMult#(@n,@l1,@l2) =  [0 1] @l1 + [0]                                                       
                                                      [0 0]       [1]                                                       
                                                   >= [0 1] @l1 + [0]                                                       
                                                      [0 0]       [0]                                                       
                                                   =  c_27(lineMult#1#(@l1,@l2,@n))                                         
        
                    lineMult#1#(::(@x,@xs),@l2,@n) =  [0 1] @x + [0 1] @xs + [1]                                            
                                                      [0 0]      [0 0]       [1]                                            
                                                   >= [0 1] @xs + [1]                                                       
                                                      [0 0]       [0]                                                       
                                                   =  c_28(lineMult#2#(@l2,@n,@x,@xs))                                      
        
                              matrixMult#(@m1,@m2) =  [0 1] @m2 + [0]                                                       
                                                      [0 0]       [0]                                                       
                                                   >= [0 1] @m2 + [0]                                                       
                                                      [0 0]       [0]                                                       
                                                   =  matrixMult#1#(@m1,@m2)                                                
        
                     matrixMult#1#(::(@l,@ls),@m2) =  [0 1] @m2 + [0]                                                       
                                                      [0 0]       [0]                                                       
                                                   >= [0 1] @m2 + [0]                                                       
                                                      [0 0]       [0]                                                       
                                                   =  computeLine#(@l,@m2,nil())                                            
        
                     matrixMult#1#(::(@l,@ls),@m2) =  [0 1] @m2 + [0]                                                       
                                                      [0 0]       [0]                                                       
                                                   >= [0 1] @m2 + [0]                                                       
                                                      [0 0]       [0]                                                       
                                                   =  matrixMult#(@ls,@m2)                                                  
        
                  appendreverse(@toreverse,@sofar) =  [1 1] @sofar + [0 1] @toreverse + [0]                                 
                                                      [0 1]          [0 1]              [0]                                 
                                                   >= [1 1] @sofar + [0 1] @toreverse + [0]                                 
                                                      [0 1]          [0 1]              [0]                                 
                                                   =  appendreverse#1(@toreverse,@sofar)                                    
        
                appendreverse#1(::(@a,@as),@sofar) =  [0 1] @a + [0 1] @as + [1 1] @sofar + [1]                             
                                                      [0 1]      [0 1]       [0 1]          [1]                             
                                                   >= [0 1] @a + [0 1] @as + [0 1] @sofar + [1]                             
                                                      [0 1]      [0 1]       [0 1]          [1]                             
                                                   =  appendreverse(@as,::(@a,@sofar))                                      
        
                     appendreverse#1(nil(),@sofar) =  [1 1] @sofar + [0]                                                    
                                                      [0 1]          [0]                                                    
                                                   >= [1 0] @sofar + [0]                                                    
                                                      [0 1]          [0]                                                    
                                                   =  @sofar                                                                
        
        bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) =  [0 0] @dequeue@1 + [0 0] @dequeue@2 + [0]                             
                                                      [0 1]              [0 1]              [0]                             
                                                   >= [0 0] @dequeue@1 + [0 0] @dequeue@2 + [0]                             
                                                      [0 1]              [0 1]              [0]                             
                                                   =  dequeue(@dequeue@1,@dequeue@2)                                        
        
                               dequeue(@outq,@inq) =  [0 0] @inq + [0 0] @outq + [0]                                        
                                                      [0 1]        [0 1]         [0]                                        
                                                   >= [0 0] @inq + [0 0] @outq + [0]                                        
                                                      [0 1]        [0 1]         [0]                                        
                                                   =  dequeue#1(@outq,@inq)                                                 
        
                        dequeue#1(::(@t,@ts),@inq) =  [0 0] @inq + [0 0] @t + [0 0] @ts + [0]                               
                                                      [0 1]        [0 1]      [0 1]       [1]                               
                                                   >= [0 0] @inq + [0 0] @t + [0 0] @ts + [0]                               
                                                      [0 1]        [0 1]      [0 1]       [1]                               
                                                   =  tuple#2(::(@t,nil()),tuple#2(@ts,@inq))                               
        
                             dequeue#1(nil(),@inq) =  [0 0] @inq + [0]                                                      
                                                      [0 1]        [0]                                                      
                                                   >= [0 0] @inq + [0]                                                      
                                                      [0 1]        [0]                                                      
                                                   =  dequeue#2(reverse(@inq))                                              
        
                             dequeue#2(::(@t,@ts)) =  [0 0] @t + [0 0] @ts + [0]                                            
                                                      [0 1]      [0 1]       [1]                                            
                                                   >= [0 0] @t + [0 0] @ts + [0]                                            
                                                      [0 1]      [0 1]       [1]                                            
                                                   =  tuple#2(::(@t,nil()),tuple#2(@ts,nil()))                              
        
                                  dequeue#2(nil()) =  [0]                                                                   
                                                      [0]                                                                   
                                                   >= [0]                                                                   
                                                      [0]                                                                   
                                                   =  tuple#2(nil(),tuple#2(nil(),nil()))                                   
        
                                enqueue(@t,@queue) =  [0 1] @queue + [0 0] @t + [0]                                         
                                                      [0 1]          [0 1]      [1]                                         
                                                   >= [0 1] @queue + [0 0] @t + [0]                                         
                                                      [0 1]          [0 1]      [1]                                         
                                                   =  enqueue#1(@queue,@t)                                                  
        
                 enqueue#1(tuple#2(@outq,@inq),@t) =  [0 1] @inq + [0 1] @outq + [0 0] @t + [0]                             
                                                      [0 1]        [0 1]         [0 1]      [1]                             
                                                   >= [0 0] @inq + [0 0] @outq + [0 0] @t + [0]                             
                                                      [0 1]        [0 1]         [0 1]      [1]                             
                                                   =  tuple#2(@outq,::(@t,@inq))                                            
        
                                      reverse(@xs) =  [1 1] @xs + [0]                                                       
                                                      [0 1]       [0]                                                       
                                                   >= [0 1] @xs + [0]                                                       
                                                      [0 1]       [0]                                                       
                                                   =  appendreverse(@xs,nil())                                              
        
***** Step 9.b:7.b:1.b:1.a:2: Assumption WORST_CASE(?,O(1))
    + Considered Problem:
        - Strict DPs:
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
        - Weak DPs:
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
            matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2)
            matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil())
            matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2)
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
    + Details:
        ()

***** Step 9.b:7.b:1.b:1.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
        - Weak DPs:
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
            matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2)
            matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil())
            matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2)
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + 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:
          3: computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                           ,lineMult#(@x,@l,@acc))
          
        The strictly oriented rules are moved into the weak component.
****** Step 9.b:7.b:1.b:1.b:1.a:1: NaturalMI WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
        - Weak DPs:
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
            matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2)
            matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil())
            matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2)
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + 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_15) = {1},
          uargs(c_16) = {1},
          uargs(c_18) = {1,2},
          uargs(c_27) = {1},
          uargs(c_28) = {1},
          uargs(c_30) = {1},
          uargs(c_31) = {1}
        
        Following symbols are considered usable:
          {appendreverse,appendreverse#1,bftMult'#2,dequeue,dequeue#1,dequeue#2,enqueue,enqueue#1,reverse,#add#
          ,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#
          ,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#,computeLine#,computeLine#1#,computeLine#2#,dequeue#
          ,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#
          ,reverse#}
        TcT has computed the following interpretation:
                        p(#0) = [1]                                 
                                [0]                                 
                      p(#add) = [1 0] x1 + [1]                      
                                [0 0]      [0]                      
                     p(#mult) = [0]                                 
                                [0]                                 
                  p(#natmult) = [0 0] x1 + [0]                      
                                [0 1]      [1]                      
                      p(#neg) = [0]                                 
                                [0]                                 
                      p(#pos) = [0 1] x1 + [0]                      
                                [0 1]      [0]                      
                     p(#pred) = [0 0] x1 + [0]                      
                                [1 0]      [0]                      
                        p(#s) = [0 1] x1 + [0]                      
                                [0 1]      [0]                      
                     p(#succ) = [0]                                 
                                [1]                                 
                         p(*) = [0 1] x1 + [1]                      
                                [0 0]      [1]                      
                         p(+) = [0 0] x1 + [0]                      
                                [1 0]      [1]                      
                        p(::) = [0 0] x1 + [0 0] x2 + [0]           
                                [0 1]      [0 1]      [1]           
             p(appendreverse) = [0 0] x1 + [1 0] x2 + [0]           
                                [0 1]      [0 1]      [0]           
           p(appendreverse#1) = [0 0] x1 + [1 0] x2 + [0]           
                                [0 1]      [0 1]      [0]           
                   p(bftMult) = [0]                                 
                                [0]                                 
                  p(bftMult') = [0]                                 
                                [0]                                 
                p(bftMult'#1) = [0]                                 
                                [0]                                 
                p(bftMult'#2) = [0 1] x1 + [1]                      
                                [0 1]      [0]                      
                p(bftMult'#3) = [0]                                 
                                [0]                                 
                p(bftMult'#4) = [0]                                 
                                [0]                                 
                p(bftMult'#5) = [0]                                 
                                [0]                                 
               p(computeLine) = [0 1] x3 + [0]                      
                                [0 0]      [0]                      
             p(computeLine#1) = [0]                                 
                                [0]                                 
             p(computeLine#2) = [0]                                 
                                [0]                                 
                   p(dequeue) = [0 0] x1 + [0 1] x2 + [1]           
                                [0 1]      [0 1]      [0]           
                 p(dequeue#1) = [0 0] x1 + [0 1] x2 + [0]           
                                [0 1]      [0 1]      [0]           
                 p(dequeue#2) = [1 0] x1 + [0]                      
                                [0 1]      [0]                      
                   p(enqueue) = [1 1] x1 + [0 1] x2 + [0]           
                                [0 1]      [0 1]      [1]           
                 p(enqueue#1) = [0 1] x1 + [1 0] x2 + [0]           
                                [0 1]      [0 1]      [1]           
                      p(leaf) = [0]                                 
                                [1]                                 
                  p(lineMult) = [0 0] x1 + [0]                      
                                [1 0]      [0]                      
                p(lineMult#1) = [0]                                 
                                [0]                                 
                p(lineMult#2) = [0]                                 
                                [1]                                 
                p(matrixMult) = [0]                                 
                                [0]                                 
              p(matrixMult#1) = [0 1] x1 + [1]                      
                                [0 0]      [0]                      
                       p(nil) = [0]                                 
                                [0]                                 
                      p(node) = [0 0] x1 + [0 0] x2 + [0 0] x3 + [0]
                                [0 1]      [0 1]      [0 1]      [1]
                   p(reverse) = [0 1] x1 + [0]                      
                                [0 1]      [0]                      
                   p(tuple#2) = [0 0] x1 + [0 0] x2 + [0]           
                                [0 1]      [0 1]      [0]           
                     p(#add#) = [0]                                 
                                [0]                                 
                    p(#mult#) = [0]                                 
                                [0]                                 
                 p(#natmult#) = [0]                                 
                                [0]                                 
                    p(#pred#) = [0]                                 
                                [0]                                 
                    p(#succ#) = [0]                                 
                                [0]                                 
                        p(*#) = [0]                                 
                                [0]                                 
                        p(+#) = [0]                                 
                                [0]                                 
            p(appendreverse#) = [0]                                 
                                [0]                                 
          p(appendreverse#1#) = [0]                                 
                                [0]                                 
                  p(bftMult#) = [0]                                 
                                [0]                                 
                 p(bftMult'#) = [0 1] x1 + [0]                      
                                [0 1]      [0]                      
               p(bftMult'#1#) = [0 1] x1 + [0]                      
                                [0 1]      [0]                      
               p(bftMult'#2#) = [0]                                 
                                [0]                                 
               p(bftMult'#3#) = [0 1] x1 + [0 1] x3 + [0]           
                                [0 1]      [0 1]      [0]           
               p(bftMult'#4#) = [0 1] x1 + [0 1] x3 + [1]           
                                [0 1]      [0 1]      [1]           
               p(bftMult'#5#) = [0 1] x1 + [0 1] x3 + [0]           
                                [0 1]      [0 1]      [0]           
              p(computeLine#) = [0 1] x2 + [0]                      
                                [0 0]      [0]                      
            p(computeLine#1#) = [0 0] x1 + [0 0] x2 + [0 1] x3 + [0]
                                [0 1]      [1 0]      [0 1]      [0]
            p(computeLine#2#) = [0 1] x1 + [0 0] x2 + [0 0] x4 + [0]
                                [0 1]      [1 0]      [1 0]      [0]
                  p(dequeue#) = [0]                                 
                                [0]                                 
                p(dequeue#1#) = [0]                                 
                                [0]                                 
                p(dequeue#2#) = [0]                                 
                                [0]                                 
                  p(enqueue#) = [0]                                 
                                [0]                                 
                p(enqueue#1#) = [0]                                 
                                [0]                                 
                 p(lineMult#) = [0 0] x2 + [0]                      
                                [0 1]      [0]                      
               p(lineMult#1#) = [0 0] x1 + [0]                      
                                [0 1]      [0]                      
               p(lineMult#2#) = [0 0] x1 + [0]                      
                                [0 1]      [0]                      
               p(matrixMult#) = [0 1] x2 + [0]                      
                                [0 0]      [0]                      
             p(matrixMult#1#) = [0 1] x2 + [0]                      
                                [0 0]      [0]                      
                  p(reverse#) = [0]                                 
                                [0]                                 
                       p(c_1) = [0]                                 
                                [0]                                 
                       p(c_2) = [0]                                 
                                [0]                                 
                       p(c_3) = [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) = [1 0] x1 + [0]                      
                                [0 0]      [0]                      
                      p(c_16) = [1 0] x1 + [0]                      
                                [0 0]      [0]                      
                      p(c_17) = [0]                                 
                                [0]                                 
                      p(c_18) = [1 0] x1 + [1 1] x2 + [0]           
                                [0 0]      [0 1]      [1]           
                      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) = [0]                                 
                                [0]                                 
                      p(c_26) = [0]                                 
                                [0]                                 
                      p(c_27) = [1 0] x1 + [0]                      
                                [0 1]      [0]                      
                      p(c_28) = [1 0] x1 + [0]                      
                                [0 0]      [0]                      
                      p(c_29) = [0]                                 
                                [0]                                 
                      p(c_30) = [1 0] x1 + [0]                      
                                [0 0]      [0]                      
                      p(c_31) = [1 0] x1 + [0]                      
                                [0 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]                                 
                      p(c_58) = [0]                                 
                                [0]                                 
                      p(c_59) = [0]                                 
                                [0]                                 
        
        Following rules are strictly oriented:
        computeLine#2#(::(@l,@ls),@acc,@x,@xs) = [0 0] @acc + [0 1] @l + [0 1] @ls + [0 0] @xs + [1]                   
                                                 [1 0]        [0 1]      [0 1]       [1 0]       [1]                   
                                               > [0 1] @l + [0 1] @ls + [0]                                            
                                                 [0 1]      [0 0]       [1]                                            
                                               = c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)),lineMult#(@x,@l,@acc))
        
        
        Following rules are (at-least) weakly oriented:
                            bftMult'#(@queue,@acc) =  [0 1] @queue + [0]                                   
                                                      [0 1]          [0]                                   
                                                   >= [0 1] @queue + [0]                                   
                                                      [0 1]          [0]                                   
                                                   =  bftMult'#1#(bftMult'#2(@queue),@acc)                 
        
           bftMult'#1#(tuple#2(@elem,@queue),@acc) =  [0 1] @elem + [0 1] @queue + [0]                     
                                                      [0 1]         [0 1]          [0]                     
                                                   >= [0 1] @elem + [0 1] @queue + [0]                     
                                                      [0 1]         [0 1]          [0]                     
                                                   =  bftMult'#3#(@elem,@acc,@queue)                       
        
              bftMult'#3#(::(@t,@_@3),@acc,@queue) =  [0 1] @_@3 + [0 1] @queue + [0 1] @t + [1]           
                                                      [0 1]        [0 1]          [0 1]      [1]           
                                                   >= [0 1] @queue + [0 1] @t + [1]                        
                                                      [0 1]          [0 1]      [1]                        
                                                   =  bftMult'#4#(@t,@acc,@queue)                          
        
                   bftMult'#4#(leaf(),@acc,@queue) =  [0 1] @queue + [2]                                   
                                                      [0 1]          [2]                                   
                                                   >= [0 1] @queue + [0]                                   
                                                      [0 1]          [0]                                   
                                                   =  bftMult'#(@queue,@acc)                               
        
         bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) =  [0 1] @queue + [0 1] @t1 + [0 1] @t2 + [0 1] @y + [2]
                                                      [0 1]          [0 1]       [0 1]       [0 1]      [2]
                                                   >= [0 1] @queue + [0 1] @t1 + [0 1] @t2 + [0 1] @y + [2]
                                                      [0 1]          [0 1]       [0 1]       [0 1]      [2]
                                                   =  bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
        
                      bftMult'#5#(@queue',@acc,@y) =  [0 1] @queue' + [0 1] @y + [0]                       
                                                      [0 1]           [0 1]      [0]                       
                                                   >= [0 1] @queue' + [0]                                  
                                                      [0 1]           [0]                                  
                                                   =  bftMult'#(@queue',matrixMult(@acc,@y))               
        
                      bftMult'#5#(@queue',@acc,@y) =  [0 1] @queue' + [0 1] @y + [0]                       
                                                      [0 1]           [0 1]      [0]                       
                                                   >= [0 1] @y + [0]                                       
                                                      [0 0]      [0]                                       
                                                   =  matrixMult#(@acc,@y)                                 
        
                       computeLine#(@line,@m,@acc) =  [0 1] @m + [0]                                       
                                                      [0 0]      [0]                                       
                                                   >= [0 1] @m + [0]                                       
                                                      [0 0]      [0]                                       
                                                   =  c_15(computeLine#1#(@line,@acc,@m))                  
        
                computeLine#1#(::(@x,@xs),@acc,@m) =  [0 0] @acc + [0 1] @m + [0 0] @x + [0 0] @xs + [0]   
                                                      [1 0]        [0 1]      [0 1]      [0 1]       [1]   
                                                   >= [0 1] @m + [0]                                       
                                                      [0 0]      [0]                                       
                                                   =  c_16(computeLine#2#(@m,@acc,@x,@xs))                 
        
                             lineMult#(@n,@l1,@l2) =  [0 0] @l1 + [0]                                      
                                                      [0 1]       [0]                                      
                                                   >= [0 0] @l1 + [0]                                      
                                                      [0 1]       [0]                                      
                                                   =  c_27(lineMult#1#(@l1,@l2,@n))                        
        
                    lineMult#1#(::(@x,@xs),@l2,@n) =  [0 0] @x + [0 0] @xs + [0]                           
                                                      [0 1]      [0 1]       [1]                           
                                                   >= [0]                                                  
                                                      [0]                                                  
                                                   =  c_28(lineMult#2#(@l2,@n,@x,@xs))                     
        
                 lineMult#2#(::(@y,@ys),@n,@x,@xs) =  [0 0] @y + [0 0] @ys + [0]                           
                                                      [0 1]      [0 1]       [1]                           
                                                   >= [0]                                                  
                                                      [0]                                                  
                                                   =  c_30(lineMult#(@n,@xs,@ys))                          
        
                      lineMult#2#(nil(),@n,@x,@xs) =  [0]                                                  
                                                      [0]                                                  
                                                   >= [0]                                                  
                                                      [0]                                                  
                                                   =  c_31(lineMult#(@n,@xs,nil()))                        
        
                              matrixMult#(@m1,@m2) =  [0 1] @m2 + [0]                                      
                                                      [0 0]       [0]                                      
                                                   >= [0 1] @m2 + [0]                                      
                                                      [0 0]       [0]                                      
                                                   =  matrixMult#1#(@m1,@m2)                               
        
                     matrixMult#1#(::(@l,@ls),@m2) =  [0 1] @m2 + [0]                                      
                                                      [0 0]       [0]                                      
                                                   >= [0 1] @m2 + [0]                                      
                                                      [0 0]       [0]                                      
                                                   =  computeLine#(@l,@m2,nil())                           
        
                     matrixMult#1#(::(@l,@ls),@m2) =  [0 1] @m2 + [0]                                      
                                                      [0 0]       [0]                                      
                                                   >= [0 1] @m2 + [0]                                      
                                                      [0 0]       [0]                                      
                                                   =  matrixMult#(@ls,@m2)                                 
        
                  appendreverse(@toreverse,@sofar) =  [1 0] @sofar + [0 0] @toreverse + [0]                
                                                      [0 1]          [0 1]              [0]                
                                                   >= [1 0] @sofar + [0 0] @toreverse + [0]                
                                                      [0 1]          [0 1]              [0]                
                                                   =  appendreverse#1(@toreverse,@sofar)                   
        
                appendreverse#1(::(@a,@as),@sofar) =  [0 0] @a + [0 0] @as + [1 0] @sofar + [0]            
                                                      [0 1]      [0 1]       [0 1]          [1]            
                                                   >= [0 0] @a + [0 0] @as + [0 0] @sofar + [0]            
                                                      [0 1]      [0 1]       [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                                               
        
        bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) =  [0 1] @dequeue@1 + [0 1] @dequeue@2 + [1]            
                                                      [0 1]              [0 1]              [0]            
                                                   >= [0 0] @dequeue@1 + [0 1] @dequeue@2 + [1]            
                                                      [0 1]              [0 1]              [0]            
                                                   =  dequeue(@dequeue@1,@dequeue@2)                       
        
                               dequeue(@outq,@inq) =  [0 1] @inq + [0 0] @outq + [1]                       
                                                      [0 1]        [0 1]         [0]                       
                                                   >= [0 1] @inq + [0 0] @outq + [0]                       
                                                      [0 1]        [0 1]         [0]                       
                                                   =  dequeue#1(@outq,@inq)                                
        
                        dequeue#1(::(@t,@ts),@inq) =  [0 1] @inq + [0 0] @t + [0 0] @ts + [0]              
                                                      [0 1]        [0 1]      [0 1]       [1]              
                                                   >= [0 0] @inq + [0 0] @t + [0 0] @ts + [0]              
                                                      [0 1]        [0 1]      [0 1]       [1]              
                                                   =  tuple#2(::(@t,nil()),tuple#2(@ts,@inq))              
        
                             dequeue#1(nil(),@inq) =  [0 1] @inq + [0]                                     
                                                      [0 1]        [0]                                     
                                                   >= [0 1] @inq + [0]                                     
                                                      [0 1]        [0]                                     
                                                   =  dequeue#2(reverse(@inq))                             
        
                             dequeue#2(::(@t,@ts)) =  [0 0] @t + [0 0] @ts + [0]                           
                                                      [0 1]      [0 1]       [1]                           
                                                   >= [0 0] @t + [0 0] @ts + [0]                           
                                                      [0 1]      [0 1]       [1]                           
                                                   =  tuple#2(::(@t,nil()),tuple#2(@ts,nil()))             
        
                                  dequeue#2(nil()) =  [0]                                                  
                                                      [0]                                                  
                                                   >= [0]                                                  
                                                      [0]                                                  
                                                   =  tuple#2(nil(),tuple#2(nil(),nil()))                  
        
                                enqueue(@t,@queue) =  [0 1] @queue + [1 1] @t + [0]                        
                                                      [0 1]          [0 1]      [1]                        
                                                   >= [0 1] @queue + [1 0] @t + [0]                        
                                                      [0 1]          [0 1]      [1]                        
                                                   =  enqueue#1(@queue,@t)                                 
        
                 enqueue#1(tuple#2(@outq,@inq),@t) =  [0 1] @inq + [0 1] @outq + [1 0] @t + [0]            
                                                      [0 1]        [0 1]         [0 1]      [1]            
                                                   >= [0 0] @inq + [0 0] @outq + [0 0] @t + [0]            
                                                      [0 1]        [0 1]         [0 1]      [1]            
                                                   =  tuple#2(@outq,::(@t,@inq))                           
        
                                      reverse(@xs) =  [0 1] @xs + [0]                                      
                                                      [0 1]       [0]                                      
                                                   >= [0 0] @xs + [0]                                      
                                                      [0 1]       [0]                                      
                                                   =  appendreverse(@xs,nil())                             
        
****** Step 9.b:7.b:1.b:1.b:1.a:2: Assumption WORST_CASE(?,O(1))
    + Considered Problem:
        - Strict DPs:
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
            lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
        - Weak DPs:
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
            matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2)
            matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil())
            matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2)
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
    + Details:
        ()

****** Step 9.b:7.b:1.b:1.b:1.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
            lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
        - Weak DPs:
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
            matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2)
            matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil())
            matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2)
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + 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:
          4: lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
          
        Consider the set of all dependency pairs
          1: computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
          2: computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
          3: lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
          4: lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
          5: bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
          6: bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
          7: bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
          8: bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
          9: bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
          10: bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
          11: bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
          12: computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                            ,lineMult#(@x,@l,@acc))
          13: lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
          14: lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
          15: matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2)
          16: matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil())
          17: matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2)
        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
          {4}
        These cover all (indirect) predecessors of dependency pairs
          {4,13,14}
        their number of applications is equally bounded.
        The dependency pairs are shifted into the weak component.
******* Step 9.b:7.b:1.b:1.b:1.b:1.a:1: NaturalMI WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
            lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
        - Weak DPs:
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
            matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2)
            matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil())
            matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2)
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + 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_15) = {1},
          uargs(c_16) = {1},
          uargs(c_18) = {1,2},
          uargs(c_27) = {1},
          uargs(c_28) = {1},
          uargs(c_30) = {1},
          uargs(c_31) = {1}
        
        Following symbols are considered usable:
          {appendreverse,appendreverse#1,bftMult'#2,dequeue,dequeue#1,dequeue#2,enqueue,enqueue#1,reverse,#add#
          ,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#
          ,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#,computeLine#,computeLine#1#,computeLine#2#,dequeue#
          ,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#
          ,reverse#}
        TcT has computed the following interpretation:
                        p(#0) = [0]                                            
                                [1]                                            
                      p(#add) = [1 0] x2 + [0]                                 
                                [0 0]      [0]                                 
                     p(#mult) = [0 1] x1 + [1]                                 
                                [0 1]      [0]                                 
                  p(#natmult) = [1]                                            
                                [1]                                            
                      p(#neg) = [0]                                            
                                [0]                                            
                      p(#pos) = [0 1] x1 + [0]                                 
                                [0 1]      [0]                                 
                     p(#pred) = [0 0] x1 + [0]                                 
                                [1 0]      [0]                                 
                        p(#s) = [0 0] x1 + [0]                                 
                                [0 1]      [0]                                 
                     p(#succ) = [1]                                            
                                [0]                                            
                         p(*) = [0 0] x2 + [0]                                 
                                [1 0]      [0]                                 
                         p(+) = [0 0] x1 + [0]                                 
                                [0 1]      [0]                                 
                        p(::) = [0 0] x1 + [0 0] x2 + [0]                      
                                [0 1]      [0 1]      [1]                      
             p(appendreverse) = [0 0] x1 + [1 0] x2 + [1]                      
                                [0 1]      [1 1]      [0]                      
           p(appendreverse#1) = [0 0] x1 + [1 0] x2 + [1]                      
                                [0 1]      [0 1]      [0]                      
                   p(bftMult) = [0]                                            
                                [0]                                            
                  p(bftMult') = [0]                                            
                                [0]                                            
                p(bftMult'#1) = [0]                                            
                                [0]                                            
                p(bftMult'#2) = [0 1] x1 + [1]                                 
                                [0 1]      [0]                                 
                p(bftMult'#3) = [0]                                            
                                [0]                                            
                p(bftMult'#4) = [0]                                            
                                [0]                                            
                p(bftMult'#5) = [0]                                            
                                [0]                                            
               p(computeLine) = [0]                                            
                                [0]                                            
             p(computeLine#1) = [0]                                            
                                [0]                                            
             p(computeLine#2) = [0 1] x1 + [0]                                 
                                [0 0]      [0]                                 
                   p(dequeue) = [0 1] x1 + [0 0] x2 + [0]                      
                                [0 1]      [0 1]      [0]                      
                 p(dequeue#1) = [0 1] x1 + [0 0] x2 + [0]                      
                                [0 1]      [0 1]      [0]                      
                 p(dequeue#2) = [0 0] x1 + [0]                                 
                                [0 1]      [0]                                 
                   p(enqueue) = [0 0] x1 + [0 0] x2 + [1]                      
                                [0 1]      [0 1]      [1]                      
                 p(enqueue#1) = [0 0] x1 + [0 0] x2 + [0]                      
                                [0 1]      [0 1]      [1]                      
                      p(leaf) = [0]                                            
                                [0]                                            
                  p(lineMult) = [0]                                            
                                [0]                                            
                p(lineMult#1) = [1]                                            
                                [0]                                            
                p(lineMult#2) = [0 0] x1 + [0]                                 
                                [0 1]      [0]                                 
                p(matrixMult) = [0]                                            
                                [0]                                            
              p(matrixMult#1) = [1]                                            
                                [0]                                            
                       p(nil) = [0]                                            
                                [0]                                            
                      p(node) = [0 0] x1 + [0 0] x2 + [0 0] x3 + [0]           
                                [0 1]      [0 1]      [0 1]      [1]           
                   p(reverse) = [0 0] x1 + [1]                                 
                                [0 1]      [0]                                 
                   p(tuple#2) = [0 0] x1 + [0 0] x2 + [0]                      
                                [0 1]      [0 1]      [0]                      
                     p(#add#) = [0]                                            
                                [0]                                            
                    p(#mult#) = [0]                                            
                                [0]                                            
                 p(#natmult#) = [0]                                            
                                [0]                                            
                    p(#pred#) = [0]                                            
                                [0]                                            
                    p(#succ#) = [0]                                            
                                [0]                                            
                        p(*#) = [0]                                            
                                [0]                                            
                        p(+#) = [0]                                            
                                [0]                                            
            p(appendreverse#) = [0]                                            
                                [0]                                            
          p(appendreverse#1#) = [0]                                            
                                [0]                                            
                  p(bftMult#) = [0]                                            
                                [0]                                            
                 p(bftMult'#) = [0 1] x1 + [0]                                 
                                [0 0]      [0]                                 
               p(bftMult'#1#) = [0 1] x1 + [0]                                 
                                [0 0]      [0]                                 
               p(bftMult'#2#) = [0]                                            
                                [0]                                            
               p(bftMult'#3#) = [0 1] x1 + [0 1] x3 + [0]                      
                                [0 0]      [0 0]      [0]                      
               p(bftMult'#4#) = [0 1] x1 + [0 1] x3 + [1]                      
                                [0 0]      [0 0]      [0]                      
               p(bftMult'#5#) = [0 1] x1 + [0 1] x3 + [0]                      
                                [0 0]      [0 0]      [0]                      
              p(computeLine#) = [0 1] x2 + [0]                                 
                                [0 0]      [0]                                 
            p(computeLine#1#) = [0 0] x1 + [0 0] x2 + [0 1] x3 + [0]           
                                [0 1]      [0 1]      [0 1]      [1]           
            p(computeLine#2#) = [0 1] x1 + [0 0] x2 + [0 0] x3 + [0 0] x4 + [0]
                                [0 1]      [0 1]      [0 1]      [0 1]      [1]
                  p(dequeue#) = [0]                                            
                                [0]                                            
                p(dequeue#1#) = [0]                                            
                                [0]                                            
                p(dequeue#2#) = [0]                                            
                                [0]                                            
                  p(enqueue#) = [0]                                            
                                [0]                                            
                p(enqueue#1#) = [0]                                            
                                [0]                                            
                 p(lineMult#) = [0 1] x2 + [0 0] x3 + [0]                      
                                [0 0]      [0 1]      [0]                      
               p(lineMult#1#) = [0 1] x1 + [0]                                 
                                [0 1]      [0]                                 
               p(lineMult#2#) = [0 0] x1 + [0 1] x3 + [0 1] x4 + [0]           
                                [0 1]      [0 0]      [0 0]      [1]           
               p(matrixMult#) = [0 1] x2 + [0]                                 
                                [0 0]      [0]                                 
             p(matrixMult#1#) = [0 1] x2 + [0]                                 
                                [0 0]      [0]                                 
                  p(reverse#) = [0]                                            
                                [0]                                            
                       p(c_1) = [0]                                            
                                [0]                                            
                       p(c_2) = [0]                                            
                                [0]                                            
                       p(c_3) = [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) = [1 0] x1 + [0]                                 
                                [0 0]      [0]                                 
                      p(c_16) = [1 0] x1 + [0]                                 
                                [0 1]      [1]                                 
                      p(c_17) = [0]                                            
                                [0]                                            
                      p(c_18) = [1 0] x1 + [1 0] x2 + [1]                      
                                [1 0]      [0 0]      [1]                      
                      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) = [0]                                            
                                [0]                                            
                      p(c_26) = [0]                                            
                                [0]                                            
                      p(c_27) = [1 0] x1 + [0]                                 
                                [0 0]      [0]                                 
                      p(c_28) = [1 0] x1 + [0]                                 
                                [1 0]      [1]                                 
                      p(c_29) = [0]                                            
                                [0]                                            
                      p(c_30) = [1 0] x1 + [0]                                 
                                [0 1]      [0]                                 
                      p(c_31) = [1 0] x1 + [0]                                 
                                [0 0]      [1]                                 
                      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]                                            
                      p(c_58) = [0]                                            
                                [0]                                            
                      p(c_59) = [0]                                            
                                [0]                                            
        
        Following rules are strictly oriented:
        lineMult#1#(::(@x,@xs),@l2,@n) = [0 1] @x + [0 1] @xs + [1]      
                                         [0 1]      [0 1]       [1]      
                                       > [0 1] @x + [0 1] @xs + [0]      
                                         [0 1]      [0 1]       [1]      
                                       = c_28(lineMult#2#(@l2,@n,@x,@xs))
        
        
        Following rules are (at-least) weakly oriented:
                            bftMult'#(@queue,@acc) =  [0 1] @queue + [0]                                                    
                                                      [0 0]          [0]                                                    
                                                   >= [0 1] @queue + [0]                                                    
                                                      [0 0]          [0]                                                    
                                                   =  bftMult'#1#(bftMult'#2(@queue),@acc)                                  
        
           bftMult'#1#(tuple#2(@elem,@queue),@acc) =  [0 1] @elem + [0 1] @queue + [0]                                      
                                                      [0 0]         [0 0]          [0]                                      
                                                   >= [0 1] @elem + [0 1] @queue + [0]                                      
                                                      [0 0]         [0 0]          [0]                                      
                                                   =  bftMult'#3#(@elem,@acc,@queue)                                        
        
              bftMult'#3#(::(@t,@_@3),@acc,@queue) =  [0 1] @_@3 + [0 1] @queue + [0 1] @t + [1]                            
                                                      [0 0]        [0 0]          [0 0]      [0]                            
                                                   >= [0 1] @queue + [0 1] @t + [1]                                         
                                                      [0 0]          [0 0]      [0]                                         
                                                   =  bftMult'#4#(@t,@acc,@queue)                                           
        
                   bftMult'#4#(leaf(),@acc,@queue) =  [0 1] @queue + [1]                                                    
                                                      [0 0]          [0]                                                    
                                                   >= [0 1] @queue + [0]                                                    
                                                      [0 0]          [0]                                                    
                                                   =  bftMult'#(@queue,@acc)                                                
        
         bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) =  [0 1] @queue + [0 1] @t1 + [0 1] @t2 + [0 1] @y + [2]                 
                                                      [0 0]          [0 0]       [0 0]       [0 0]      [0]                 
                                                   >= [0 1] @queue + [0 1] @t1 + [0 1] @t2 + [0 1] @y + [2]                 
                                                      [0 0]          [0 0]       [0 0]       [0 0]      [0]                 
                                                   =  bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)                 
        
                      bftMult'#5#(@queue',@acc,@y) =  [0 1] @queue' + [0 1] @y + [0]                                        
                                                      [0 0]           [0 0]      [0]                                        
                                                   >= [0 1] @queue' + [0]                                                   
                                                      [0 0]           [0]                                                   
                                                   =  bftMult'#(@queue',matrixMult(@acc,@y))                                
        
                      bftMult'#5#(@queue',@acc,@y) =  [0 1] @queue' + [0 1] @y + [0]                                        
                                                      [0 0]           [0 0]      [0]                                        
                                                   >= [0 1] @y + [0]                                                        
                                                      [0 0]      [0]                                                        
                                                   =  matrixMult#(@acc,@y)                                                  
        
                       computeLine#(@line,@m,@acc) =  [0 1] @m + [0]                                                        
                                                      [0 0]      [0]                                                        
                                                   >= [0 1] @m + [0]                                                        
                                                      [0 0]      [0]                                                        
                                                   =  c_15(computeLine#1#(@line,@acc,@m))                                   
        
                computeLine#1#(::(@x,@xs),@acc,@m) =  [0 0] @acc + [0 1] @m + [0 0] @x + [0 0] @xs + [0]                    
                                                      [0 1]        [0 1]      [0 1]      [0 1]       [2]                    
                                                   >= [0 0] @acc + [0 1] @m + [0 0] @x + [0 0] @xs + [0]                    
                                                      [0 1]        [0 1]      [0 1]      [0 1]       [2]                    
                                                   =  c_16(computeLine#2#(@m,@acc,@x,@xs))                                  
        
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) =  [0 0] @acc + [0 1] @l + [0 1] @ls + [0 0] @x + [0 0] @xs + [1]        
                                                      [0 1]        [0 1]      [0 1]       [0 1]      [0 1]       [2]        
                                                   >= [0 1] @l + [0 1] @ls + [1]                                            
                                                      [0 0]      [0 1]       [1]                                            
                                                   =  c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)),lineMult#(@x,@l,@acc))
        
                             lineMult#(@n,@l1,@l2) =  [0 1] @l1 + [0 0] @l2 + [0]                                           
                                                      [0 0]       [0 1]       [0]                                           
                                                   >= [0 1] @l1 + [0]                                                       
                                                      [0 0]       [0]                                                       
                                                   =  c_27(lineMult#1#(@l1,@l2,@n))                                         
        
                 lineMult#2#(::(@y,@ys),@n,@x,@xs) =  [0 1] @x + [0 1] @xs + [0 0] @y + [0 0] @ys + [0]                     
                                                      [0 0]      [0 0]       [0 1]      [0 1]       [2]                     
                                                   >= [0 1] @xs + [0 0] @ys + [0]                                           
                                                      [0 0]       [0 1]       [0]                                           
                                                   =  c_30(lineMult#(@n,@xs,@ys))                                           
        
                      lineMult#2#(nil(),@n,@x,@xs) =  [0 1] @x + [0 1] @xs + [0]                                            
                                                      [0 0]      [0 0]       [1]                                            
                                                   >= [0 1] @xs + [0]                                                       
                                                      [0 0]       [1]                                                       
                                                   =  c_31(lineMult#(@n,@xs,nil()))                                         
        
                              matrixMult#(@m1,@m2) =  [0 1] @m2 + [0]                                                       
                                                      [0 0]       [0]                                                       
                                                   >= [0 1] @m2 + [0]                                                       
                                                      [0 0]       [0]                                                       
                                                   =  matrixMult#1#(@m1,@m2)                                                
        
                     matrixMult#1#(::(@l,@ls),@m2) =  [0 1] @m2 + [0]                                                       
                                                      [0 0]       [0]                                                       
                                                   >= [0 1] @m2 + [0]                                                       
                                                      [0 0]       [0]                                                       
                                                   =  computeLine#(@l,@m2,nil())                                            
        
                     matrixMult#1#(::(@l,@ls),@m2) =  [0 1] @m2 + [0]                                                       
                                                      [0 0]       [0]                                                       
                                                   >= [0 1] @m2 + [0]                                                       
                                                      [0 0]       [0]                                                       
                                                   =  matrixMult#(@ls,@m2)                                                  
        
                  appendreverse(@toreverse,@sofar) =  [1 0] @sofar + [0 0] @toreverse + [1]                                 
                                                      [1 1]          [0 1]              [0]                                 
                                                   >= [1 0] @sofar + [0 0] @toreverse + [1]                                 
                                                      [0 1]          [0 1]              [0]                                 
                                                   =  appendreverse#1(@toreverse,@sofar)                                    
        
                appendreverse#1(::(@a,@as),@sofar) =  [0 0] @a + [0 0] @as + [1 0] @sofar + [1]                             
                                                      [0 1]      [0 1]       [0 1]          [1]                             
                                                   >= [0 0] @a + [0 0] @as + [0 0] @sofar + [1]                             
                                                      [0 1]      [0 1]       [0 1]          [1]                             
                                                   =  appendreverse(@as,::(@a,@sofar))                                      
        
                     appendreverse#1(nil(),@sofar) =  [1 0] @sofar + [1]                                                    
                                                      [0 1]          [0]                                                    
                                                   >= [1 0] @sofar + [0]                                                    
                                                      [0 1]          [0]                                                    
                                                   =  @sofar                                                                
        
        bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) =  [0 1] @dequeue@1 + [0 1] @dequeue@2 + [1]                             
                                                      [0 1]              [0 1]              [0]                             
                                                   >= [0 1] @dequeue@1 + [0 0] @dequeue@2 + [0]                             
                                                      [0 1]              [0 1]              [0]                             
                                                   =  dequeue(@dequeue@1,@dequeue@2)                                        
        
                               dequeue(@outq,@inq) =  [0 0] @inq + [0 1] @outq + [0]                                        
                                                      [0 1]        [0 1]         [0]                                        
                                                   >= [0 0] @inq + [0 1] @outq + [0]                                        
                                                      [0 1]        [0 1]         [0]                                        
                                                   =  dequeue#1(@outq,@inq)                                                 
        
                        dequeue#1(::(@t,@ts),@inq) =  [0 0] @inq + [0 1] @t + [0 1] @ts + [1]                               
                                                      [0 1]        [0 1]      [0 1]       [1]                               
                                                   >= [0 0] @inq + [0 0] @t + [0 0] @ts + [0]                               
                                                      [0 1]        [0 1]      [0 1]       [1]                               
                                                   =  tuple#2(::(@t,nil()),tuple#2(@ts,@inq))                               
        
                             dequeue#1(nil(),@inq) =  [0 0] @inq + [0]                                                      
                                                      [0 1]        [0]                                                      
                                                   >= [0 0] @inq + [0]                                                      
                                                      [0 1]        [0]                                                      
                                                   =  dequeue#2(reverse(@inq))                                              
        
                             dequeue#2(::(@t,@ts)) =  [0 0] @t + [0 0] @ts + [0]                                            
                                                      [0 1]      [0 1]       [1]                                            
                                                   >= [0 0] @t + [0 0] @ts + [0]                                            
                                                      [0 1]      [0 1]       [1]                                            
                                                   =  tuple#2(::(@t,nil()),tuple#2(@ts,nil()))                              
        
                                  dequeue#2(nil()) =  [0]                                                                   
                                                      [0]                                                                   
                                                   >= [0]                                                                   
                                                      [0]                                                                   
                                                   =  tuple#2(nil(),tuple#2(nil(),nil()))                                   
        
                                enqueue(@t,@queue) =  [0 0] @queue + [0 0] @t + [1]                                         
                                                      [0 1]          [0 1]      [1]                                         
                                                   >= [0 0] @queue + [0 0] @t + [0]                                         
                                                      [0 1]          [0 1]      [1]                                         
                                                   =  enqueue#1(@queue,@t)                                                  
        
                 enqueue#1(tuple#2(@outq,@inq),@t) =  [0 0] @inq + [0 0] @outq + [0 0] @t + [0]                             
                                                      [0 1]        [0 1]         [0 1]      [1]                             
                                                   >= [0 0] @inq + [0 0] @outq + [0 0] @t + [0]                             
                                                      [0 1]        [0 1]         [0 1]      [1]                             
                                                   =  tuple#2(@outq,::(@t,@inq))                                            
        
                                      reverse(@xs) =  [0 0] @xs + [1]                                                       
                                                      [0 1]       [0]                                                       
                                                   >= [0 0] @xs + [1]                                                       
                                                      [0 1]       [0]                                                       
                                                   =  appendreverse(@xs,nil())                                              
        
******* Step 9.b:7.b:1.b:1.b:1.b:1.a:2: Assumption WORST_CASE(?,O(1))
    + Considered Problem:
        - Strict DPs:
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
            lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
        - Weak DPs:
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
            matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2)
            matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil())
            matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2)
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
    + Details:
        ()

******* Step 9.b:7.b:1.b:1.b:1.b:1.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
            lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
        - Weak DPs:
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
            matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2)
            matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil())
            matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2)
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + 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:
          3: lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
          
        Consider the set of all dependency pairs
          1: computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
          2: computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
          3: lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
          4: bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
          5: bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
          6: bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
          7: bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
          8: bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
          9: bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
          10: bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
          11: computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                            ,lineMult#(@x,@l,@acc))
          12: lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
          13: lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
          14: lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
          15: matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2)
          16: matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil())
          17: matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2)
        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
          {3}
        These cover all (indirect) predecessors of dependency pairs
          {3,12,13,14}
        their number of applications is equally bounded.
        The dependency pairs are shifted into the weak component.
******** Step 9.b:7.b:1.b:1.b:1.b:1.b:1.a:1: NaturalMI WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
            lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
        - Weak DPs:
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
            matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2)
            matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil())
            matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2)
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + 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_15) = {1},
          uargs(c_16) = {1},
          uargs(c_18) = {1,2},
          uargs(c_27) = {1},
          uargs(c_28) = {1},
          uargs(c_30) = {1},
          uargs(c_31) = {1}
        
        Following symbols are considered usable:
          {appendreverse,appendreverse#1,bftMult'#2,dequeue,dequeue#1,dequeue#2,enqueue,enqueue#1,reverse,#add#
          ,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#
          ,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#,computeLine#,computeLine#1#,computeLine#2#,dequeue#
          ,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#
          ,reverse#}
        TcT has computed the following interpretation:
                        p(#0) = [0]                                 
                                [1]                                 
                      p(#add) = [1]                                 
                                [0]                                 
                     p(#mult) = [0]                                 
                                [0]                                 
                  p(#natmult) = [1]                                 
                                [0]                                 
                      p(#neg) = [0]                                 
                                [0]                                 
                      p(#pos) = [1 0] x1 + [0]                      
                                [0 0]      [0]                      
                     p(#pred) = [1 0] x1 + [0]                      
                                [0 0]      [0]                      
                        p(#s) = [0 1] x1 + [1]                      
                                [0 0]      [0]                      
                     p(#succ) = [0]                                 
                                [1]                                 
                         p(*) = [0 1] x2 + [0]                      
                                [0 0]      [1]                      
                         p(+) = [0 1] x1 + [0]                      
                                [1 0]      [0]                      
                        p(::) = [1 0] x1 + [1 0] x2 + [1]           
                                [0 0]      [0 0]      [0]           
             p(appendreverse) = [1 0] x1 + [1 0] x2 + [0]           
                                [0 0]      [0 1]      [0]           
           p(appendreverse#1) = [1 0] x1 + [1 0] x2 + [0]           
                                [0 0]      [0 1]      [0]           
                   p(bftMult) = [0]                                 
                                [0]                                 
                  p(bftMult') = [0]                                 
                                [0]                                 
                p(bftMult'#1) = [0]                                 
                                [0]                                 
                p(bftMult'#2) = [1 0] x1 + [0]                      
                                [0 0]      [1]                      
                p(bftMult'#3) = [0]                                 
                                [0]                                 
                p(bftMult'#4) = [0]                                 
                                [0]                                 
                p(bftMult'#5) = [0]                                 
                                [0]                                 
               p(computeLine) = [1 0] x2 + [0]                      
                                [0 0]      [1]                      
             p(computeLine#1) = [0]                                 
                                [1]                                 
             p(computeLine#2) = [0]                                 
                                [0]                                 
                   p(dequeue) = [1 0] x1 + [1 0] x2 + [0]           
                                [0 0]      [0 0]      [0]           
                 p(dequeue#1) = [1 0] x1 + [1 0] x2 + [0]           
                                [0 0]      [0 0]      [0]           
                 p(dequeue#2) = [1 0] x1 + [0]                      
                                [0 0]      [0]                      
                   p(enqueue) = [1 0] x1 + [1 0] x2 + [1]           
                                [0 0]      [0 0]      [1]           
                 p(enqueue#1) = [1 0] x1 + [1 0] x2 + [1]           
                                [0 0]      [0 0]      [1]           
                      p(leaf) = [0]                                 
                                [0]                                 
                  p(lineMult) = [0]                                 
                                [1]                                 
                p(lineMult#1) = [0]                                 
                                [0]                                 
                p(lineMult#2) = [0]                                 
                                [0]                                 
                p(matrixMult) = [1 0] x2 + [0]                      
                                [0 0]      [0]                      
              p(matrixMult#1) = [1]                                 
                                [0]                                 
                       p(nil) = [0]                                 
                                [0]                                 
                      p(node) = [1 1] x1 + [1 0] x2 + [1 1] x3 + [1]
                                [0 0]      [0 0]      [0 0]      [0]
                   p(reverse) = [1 0] x1 + [0]                      
                                [0 0]      [0]                      
                   p(tuple#2) = [1 0] x1 + [1 0] x2 + [0]           
                                [0 0]      [0 0]      [0]           
                     p(#add#) = [0]                                 
                                [0]                                 
                    p(#mult#) = [0]                                 
                                [0]                                 
                 p(#natmult#) = [0]                                 
                                [0]                                 
                    p(#pred#) = [0]                                 
                                [0]                                 
                    p(#succ#) = [0]                                 
                                [0]                                 
                        p(*#) = [0]                                 
                                [0]                                 
                        p(+#) = [0]                                 
                                [0]                                 
            p(appendreverse#) = [0]                                 
                                [0]                                 
          p(appendreverse#1#) = [0]                                 
                                [0]                                 
                  p(bftMult#) = [0]                                 
                                [0]                                 
                 p(bftMult'#) = [1 0] x1 + [0]                      
                                [0 0]      [0]                      
               p(bftMult'#1#) = [1 0] x1 + [0]                      
                                [0 0]      [0]                      
               p(bftMult'#2#) = [0]                                 
                                [0]                                 
               p(bftMult'#3#) = [1 0] x1 + [1 0] x3 + [0]           
                                [0 0]      [0 0]      [0]           
               p(bftMult'#4#) = [1 0] x1 + [1 0] x3 + [1]           
                                [0 0]      [0 0]      [0]           
               p(bftMult'#5#) = [1 0] x1 + [1 0] x3 + [0]           
                                [0 0]      [0 0]      [0]           
              p(computeLine#) = [1 0] x2 + [0]                      
                                [0 0]      [0]                      
            p(computeLine#1#) = [1 0] x3 + [0]                      
                                [1 0]      [1]                      
            p(computeLine#2#) = [1 0] x1 + [0 0] x3 + [0]           
                                [0 0]      [0 1]      [1]           
                  p(dequeue#) = [0]                                 
                                [0]                                 
                p(dequeue#1#) = [0]                                 
                                [0]                                 
                p(dequeue#2#) = [0]                                 
                                [0]                                 
                  p(enqueue#) = [0]                                 
                                [0]                                 
                p(enqueue#1#) = [0]                                 
                                [0]                                 
                 p(lineMult#) = [1 0] x2 + [1]                      
                                [0 1]      [1]                      
               p(lineMult#1#) = [1 0] x1 + [0]                      
                                [0 0]      [0]                      
               p(lineMult#2#) = [1 0] x4 + [1]                      
                                [1 1]      [1]                      
               p(matrixMult#) = [1 0] x2 + [0]                      
                                [0 0]      [0]                      
             p(matrixMult#1#) = [1 0] x2 + [0]                      
                                [0 0]      [0]                      
                  p(reverse#) = [0]                                 
                                [0]                                 
                       p(c_1) = [0]                                 
                                [0]                                 
                       p(c_2) = [0]                                 
                                [0]                                 
                       p(c_3) = [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) = [1 0] x1 + [0]                      
                                [0 0]      [0]                      
                      p(c_16) = [1 0] x1 + [0]                      
                                [1 0]      [1]                      
                      p(c_17) = [0]                                 
                                [0]                                 
                      p(c_18) = [1 0] x1 + [1 0] x2 + [0]           
                                [0 0]      [0 0]      [1]           
                      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) = [0]                                 
                                [0]                                 
                      p(c_26) = [0]                                 
                                [0]                                 
                      p(c_27) = [1 0] x1 + [0]                      
                                [0 0]      [0]                      
                      p(c_28) = [1 0] x1 + [0]                      
                                [0 0]      [0]                      
                      p(c_29) = [0]                                 
                                [0]                                 
                      p(c_30) = [1 0] x1 + [0]                      
                                [0 1]      [0]                      
                      p(c_31) = [1 0] x1 + [0]                      
                                [1 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]                                 
                      p(c_58) = [0]                                 
                                [0]                                 
                      p(c_59) = [0]                                 
                                [0]                                 
        
        Following rules are strictly oriented:
        lineMult#(@n,@l1,@l2) = [1 0] @l1 + [1]              
                                [0 1]       [1]              
                              > [1 0] @l1 + [0]              
                                [0 0]       [0]              
                              = c_27(lineMult#1#(@l1,@l2,@n))
        
        
        Following rules are (at-least) weakly oriented:
                            bftMult'#(@queue,@acc) =  [1 0] @queue + [0]                                                    
                                                      [0 0]          [0]                                                    
                                                   >= [1 0] @queue + [0]                                                    
                                                      [0 0]          [0]                                                    
                                                   =  bftMult'#1#(bftMult'#2(@queue),@acc)                                  
        
           bftMult'#1#(tuple#2(@elem,@queue),@acc) =  [1 0] @elem + [1 0] @queue + [0]                                      
                                                      [0 0]         [0 0]          [0]                                      
                                                   >= [1 0] @elem + [1 0] @queue + [0]                                      
                                                      [0 0]         [0 0]          [0]                                      
                                                   =  bftMult'#3#(@elem,@acc,@queue)                                        
        
              bftMult'#3#(::(@t,@_@3),@acc,@queue) =  [1 0] @_@3 + [1 0] @queue + [1 0] @t + [1]                            
                                                      [0 0]        [0 0]          [0 0]      [0]                            
                                                   >= [1 0] @queue + [1 0] @t + [1]                                         
                                                      [0 0]          [0 0]      [0]                                         
                                                   =  bftMult'#4#(@t,@acc,@queue)                                           
        
                   bftMult'#4#(leaf(),@acc,@queue) =  [1 0] @queue + [1]                                                    
                                                      [0 0]          [0]                                                    
                                                   >= [1 0] @queue + [0]                                                    
                                                      [0 0]          [0]                                                    
                                                   =  bftMult'#(@queue,@acc)                                                
        
         bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) =  [1 0] @queue + [1 0] @t1 + [1 1] @t2 + [1 1] @y + [2]                 
                                                      [0 0]          [0 0]       [0 0]       [0 0]      [0]                 
                                                   >= [1 0] @queue + [1 0] @t1 + [1 0] @t2 + [1 0] @y + [2]                 
                                                      [0 0]          [0 0]       [0 0]       [0 0]      [0]                 
                                                   =  bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)                 
        
                      bftMult'#5#(@queue',@acc,@y) =  [1 0] @queue' + [1 0] @y + [0]                                        
                                                      [0 0]           [0 0]      [0]                                        
                                                   >= [1 0] @queue' + [0]                                                   
                                                      [0 0]           [0]                                                   
                                                   =  bftMult'#(@queue',matrixMult(@acc,@y))                                
        
                      bftMult'#5#(@queue',@acc,@y) =  [1 0] @queue' + [1 0] @y + [0]                                        
                                                      [0 0]           [0 0]      [0]                                        
                                                   >= [1 0] @y + [0]                                                        
                                                      [0 0]      [0]                                                        
                                                   =  matrixMult#(@acc,@y)                                                  
        
                       computeLine#(@line,@m,@acc) =  [1 0] @m + [0]                                                        
                                                      [0 0]      [0]                                                        
                                                   >= [1 0] @m + [0]                                                        
                                                      [0 0]      [0]                                                        
                                                   =  c_15(computeLine#1#(@line,@acc,@m))                                   
        
                computeLine#1#(::(@x,@xs),@acc,@m) =  [1 0] @m + [0]                                                        
                                                      [1 0]      [1]                                                        
                                                   >= [1 0] @m + [0]                                                        
                                                      [1 0]      [1]                                                        
                                                   =  c_16(computeLine#2#(@m,@acc,@x,@xs))                                  
        
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) =  [1 0] @l + [1 0] @ls + [0 0] @x + [1]                                 
                                                      [0 0]      [0 0]       [0 1]      [1]                                 
                                                   >= [1 0] @l + [1 0] @ls + [1]                                            
                                                      [0 0]      [0 0]       [1]                                            
                                                   =  c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)),lineMult#(@x,@l,@acc))
        
                    lineMult#1#(::(@x,@xs),@l2,@n) =  [1 0] @x + [1 0] @xs + [1]                                            
                                                      [0 0]      [0 0]       [0]                                            
                                                   >= [1 0] @xs + [1]                                                       
                                                      [0 0]       [0]                                                       
                                                   =  c_28(lineMult#2#(@l2,@n,@x,@xs))                                      
        
                 lineMult#2#(::(@y,@ys),@n,@x,@xs) =  [1 0] @xs + [1]                                                       
                                                      [1 1]       [1]                                                       
                                                   >= [1 0] @xs + [1]                                                       
                                                      [0 1]       [1]                                                       
                                                   =  c_30(lineMult#(@n,@xs,@ys))                                           
        
                      lineMult#2#(nil(),@n,@x,@xs) =  [1 0] @xs + [1]                                                       
                                                      [1 1]       [1]                                                       
                                                   >= [1 0] @xs + [1]                                                       
                                                      [1 0]       [1]                                                       
                                                   =  c_31(lineMult#(@n,@xs,nil()))                                         
        
                              matrixMult#(@m1,@m2) =  [1 0] @m2 + [0]                                                       
                                                      [0 0]       [0]                                                       
                                                   >= [1 0] @m2 + [0]                                                       
                                                      [0 0]       [0]                                                       
                                                   =  matrixMult#1#(@m1,@m2)                                                
        
                     matrixMult#1#(::(@l,@ls),@m2) =  [1 0] @m2 + [0]                                                       
                                                      [0 0]       [0]                                                       
                                                   >= [1 0] @m2 + [0]                                                       
                                                      [0 0]       [0]                                                       
                                                   =  computeLine#(@l,@m2,nil())                                            
        
                     matrixMult#1#(::(@l,@ls),@m2) =  [1 0] @m2 + [0]                                                       
                                                      [0 0]       [0]                                                       
                                                   >= [1 0] @m2 + [0]                                                       
                                                      [0 0]       [0]                                                       
                                                   =  matrixMult#(@ls,@m2)                                                  
        
                  appendreverse(@toreverse,@sofar) =  [1 0] @sofar + [1 0] @toreverse + [0]                                 
                                                      [0 1]          [0 0]              [0]                                 
                                                   >= [1 0] @sofar + [1 0] @toreverse + [0]                                 
                                                      [0 1]          [0 0]              [0]                                 
                                                   =  appendreverse#1(@toreverse,@sofar)                                    
        
                appendreverse#1(::(@a,@as),@sofar) =  [1 0] @a + [1 0] @as + [1 0] @sofar + [1]                             
                                                      [0 0]      [0 0]       [0 1]          [0]                             
                                                   >= [1 0] @a + [1 0] @as + [1 0] @sofar + [1]                             
                                                      [0 0]      [0 0]       [0 0]          [0]                             
                                                   =  appendreverse(@as,::(@a,@sofar))                                      
        
                     appendreverse#1(nil(),@sofar) =  [1 0] @sofar + [0]                                                    
                                                      [0 1]          [0]                                                    
                                                   >= [1 0] @sofar + [0]                                                    
                                                      [0 1]          [0]                                                    
                                                   =  @sofar                                                                
        
        bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) =  [1 0] @dequeue@1 + [1 0] @dequeue@2 + [0]                             
                                                      [0 0]              [0 0]              [1]                             
                                                   >= [1 0] @dequeue@1 + [1 0] @dequeue@2 + [0]                             
                                                      [0 0]              [0 0]              [0]                             
                                                   =  dequeue(@dequeue@1,@dequeue@2)                                        
        
                               dequeue(@outq,@inq) =  [1 0] @inq + [1 0] @outq + [0]                                        
                                                      [0 0]        [0 0]         [0]                                        
                                                   >= [1 0] @inq + [1 0] @outq + [0]                                        
                                                      [0 0]        [0 0]         [0]                                        
                                                   =  dequeue#1(@outq,@inq)                                                 
        
                        dequeue#1(::(@t,@ts),@inq) =  [1 0] @inq + [1 0] @t + [1 0] @ts + [1]                               
                                                      [0 0]        [0 0]      [0 0]       [0]                               
                                                   >= [1 0] @inq + [1 0] @t + [1 0] @ts + [1]                               
                                                      [0 0]        [0 0]      [0 0]       [0]                               
                                                   =  tuple#2(::(@t,nil()),tuple#2(@ts,@inq))                               
        
                             dequeue#1(nil(),@inq) =  [1 0] @inq + [0]                                                      
                                                      [0 0]        [0]                                                      
                                                   >= [1 0] @inq + [0]                                                      
                                                      [0 0]        [0]                                                      
                                                   =  dequeue#2(reverse(@inq))                                              
        
                             dequeue#2(::(@t,@ts)) =  [1 0] @t + [1 0] @ts + [1]                                            
                                                      [0 0]      [0 0]       [0]                                            
                                                   >= [1 0] @t + [1 0] @ts + [1]                                            
                                                      [0 0]      [0 0]       [0]                                            
                                                   =  tuple#2(::(@t,nil()),tuple#2(@ts,nil()))                              
        
                                  dequeue#2(nil()) =  [0]                                                                   
                                                      [0]                                                                   
                                                   >= [0]                                                                   
                                                      [0]                                                                   
                                                   =  tuple#2(nil(),tuple#2(nil(),nil()))                                   
        
                                enqueue(@t,@queue) =  [1 0] @queue + [1 0] @t + [1]                                         
                                                      [0 0]          [0 0]      [1]                                         
                                                   >= [1 0] @queue + [1 0] @t + [1]                                         
                                                      [0 0]          [0 0]      [1]                                         
                                                   =  enqueue#1(@queue,@t)                                                  
        
                 enqueue#1(tuple#2(@outq,@inq),@t) =  [1 0] @inq + [1 0] @outq + [1 0] @t + [1]                             
                                                      [0 0]        [0 0]         [0 0]      [1]                             
                                                   >= [1 0] @inq + [1 0] @outq + [1 0] @t + [1]                             
                                                      [0 0]        [0 0]         [0 0]      [0]                             
                                                   =  tuple#2(@outq,::(@t,@inq))                                            
        
                                      reverse(@xs) =  [1 0] @xs + [0]                                                       
                                                      [0 0]       [0]                                                       
                                                   >= [1 0] @xs + [0]                                                       
                                                      [0 0]       [0]                                                       
                                                   =  appendreverse(@xs,nil())                                              
        
******** Step 9.b:7.b:1.b:1.b:1.b:1.b:1.a:2: Assumption WORST_CASE(?,O(1))
    + Considered Problem:
        - Strict DPs:
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
        - Weak DPs:
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
            matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2)
            matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil())
            matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2)
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
    + Details:
        ()

******** Step 9.b:7.b:1.b:1.b:1.b:1.b:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
        - Weak DPs:
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
            matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2)
            matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil())
            matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2)
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        RemoveWeakSuffixes
    + Details:
        Consider the dependency graph
          1:S:computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
             -->_1 computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs)):2
          
          2:S:computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
             -->_1 computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                                 ,lineMult#(@x,@l,@acc)):10
          
          3:W:bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
             -->_1 bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue):4
          
          4:W:bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
             -->_1 bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue):5
          
          5:W:bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
             -->_1 bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue))
                                                                           ,@acc
                                                                           ,@y):7
             -->_1 bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc):6
          
          6:W:bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
             -->_1 bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc):3
          
          7:W:bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
             -->_1 bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y):9
             -->_1 bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y)):8
          
          8:W:bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
             -->_1 bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc):3
          
          9:W:bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
             -->_1 matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2):15
          
          10:W:computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                             ,lineMult#(@x,@l,@acc))
             -->_2 lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n)):11
             -->_1 computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m)):1
          
          11:W:lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
             -->_1 lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs)):12
          
          12:W:lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
             -->_1 lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil())):14
             -->_1 lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys)):13
          
          13:W:lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
             -->_1 lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n)):11
          
          14:W:lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
             -->_1 lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n)):11
          
          15:W:matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2)
             -->_1 matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2):17
             -->_1 matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil()):16
          
          16:W:matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil())
             -->_1 computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m)):1
          
          17:W:matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2)
             -->_1 matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2):15
          
        The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
          11: lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
          14: lineMult#2#(nil(),@n,@x,@xs) -> c_31(lineMult#(@n,@xs,nil()))
          12: lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
          13: lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_30(lineMult#(@n,@xs,@ys))
******** Step 9.b:7.b:1.b:1.b:1.b:1.b:1.b:2: SimplifyRHS WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
        - Weak DPs:
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                          ,lineMult#(@x,@l,@acc))
            matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2)
            matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil())
            matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2)
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/2,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        SimplifyRHS
    + Details:
        Consider the dependency graph
          1:S:computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
             -->_1 computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs)):2
          
          2:S:computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
             -->_1 computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                                 ,lineMult#(@x,@l,@acc)):10
          
          3:W:bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
             -->_1 bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue):4
          
          4:W:bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
             -->_1 bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue):5
          
          5:W:bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
             -->_1 bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue))
                                                                           ,@acc
                                                                           ,@y):7
             -->_1 bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc):6
          
          6:W:bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
             -->_1 bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc):3
          
          7:W:bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
             -->_1 bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y):9
             -->_1 bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y)):8
          
          8:W:bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
             -->_1 bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc):3
          
          9:W:bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
             -->_1 matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2):15
          
          10:W:computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))
                                                             ,lineMult#(@x,@l,@acc))
             -->_1 computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m)):1
          
          15:W:matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2)
             -->_1 matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2):17
             -->_1 matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil()):16
          
          16:W:matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil())
             -->_1 computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m)):1
          
          17:W:matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2)
             -->_1 matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2):15
          
        Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified:
          computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)))
******** Step 9.b:7.b:1.b:1.b:1.b:1.b:1.b:3: PredecessorEstimationCP WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
        - Weak DPs:
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)))
            matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2)
            matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil())
            matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2)
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/1,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + 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:
          1: computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
          
        Consider the set of all dependency pairs
          1: computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
          2: computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
          3: bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
          4: bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
          5: bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
          6: bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
          7: bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
          8: bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
          9: bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
          10: computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)))
          11: matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2)
          12: matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil())
          13: matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2)
        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
          {1}
        These cover all (indirect) predecessors of dependency pairs
          {1,2,10}
        their number of applications is equally bounded.
        The dependency pairs are shifted into the weak component.
********* Step 9.b:7.b:1.b:1.b:1.b:1.b:1.b:3.a:1: NaturalMI WORST_CASE(?,O(n^1))
    + Considered Problem:
        - Strict DPs:
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
        - Weak DPs:
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)))
            matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2)
            matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil())
            matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2)
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/1,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + 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_15) = {1},
          uargs(c_16) = {1},
          uargs(c_18) = {1}
        
        Following symbols are considered usable:
          {appendreverse,appendreverse#1,bftMult'#2,dequeue,dequeue#1,dequeue#2,enqueue,enqueue#1,reverse,#add#
          ,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#
          ,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#,computeLine#,computeLine#1#,computeLine#2#,dequeue#
          ,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#
          ,reverse#}
        TcT has computed the following interpretation:
                        p(#0) = [0]                                 
                                [0]                                 
                      p(#add) = [0 0] x2 + [0]                      
                                [1 0]      [1]                      
                     p(#mult) = [0 1] x1 + [1]                      
                                [0 1]      [1]                      
                  p(#natmult) = [1 0] x1 + [1]                      
                                [0 0]      [0]                      
                      p(#neg) = [0]                                 
                                [1]                                 
                      p(#pos) = [0]                                 
                                [0]                                 
                     p(#pred) = [0]                                 
                                [0]                                 
                        p(#s) = [1]                                 
                                [0]                                 
                     p(#succ) = [0 0] x1 + [0]                      
                                [0 1]      [0]                      
                         p(*) = [1 1] x1 + [0 1] x2 + [0]           
                                [0 0]      [0 1]      [0]           
                         p(+) = [1 1] x1 + [1]                      
                                [0 0]      [0]                      
                        p(::) = [1 1] x1 + [1 0] x2 + [1]           
                                [0 0]      [0 0]      [0]           
             p(appendreverse) = [1 0] x1 + [1 0] x2 + [0]           
                                [0 0]      [0 1]      [0]           
           p(appendreverse#1) = [1 0] x1 + [1 0] x2 + [0]           
                                [0 0]      [0 1]      [0]           
                   p(bftMult) = [0]                                 
                                [0]                                 
                  p(bftMult') = [0]                                 
                                [0]                                 
                p(bftMult'#1) = [0]                                 
                                [0]                                 
                p(bftMult'#2) = [1 0] x1 + [0]                      
                                [0 0]      [1]                      
                p(bftMult'#3) = [0]                                 
                                [0]                                 
                p(bftMult'#4) = [0]                                 
                                [0]                                 
                p(bftMult'#5) = [0]                                 
                                [0]                                 
               p(computeLine) = [0 0] x3 + [0]                      
                                [1 0]      [0]                      
             p(computeLine#1) = [0]                                 
                                [0]                                 
             p(computeLine#2) = [0]                                 
                                [0]                                 
                   p(dequeue) = [1 0] x1 + [1 0] x2 + [0]           
                                [0 0]      [0 0]      [1]           
                 p(dequeue#1) = [1 0] x1 + [1 0] x2 + [0]           
                                [0 0]      [0 0]      [1]           
                 p(dequeue#2) = [1 0] x1 + [0]                      
                                [0 0]      [1]                      
                   p(enqueue) = [1 1] x1 + [1 0] x2 + [1]           
                                [0 1]      [0 1]      [1]           
                 p(enqueue#1) = [1 0] x1 + [1 1] x2 + [1]           
                                [0 0]      [0 0]      [0]           
                      p(leaf) = [1]                                 
                                [0]                                 
                  p(lineMult) = [1 0] x1 + [0 1] x2 + [0]           
                                [0 0]      [0 0]      [0]           
                p(lineMult#1) = [0]                                 
                                [0]                                 
                p(lineMult#2) = [1]                                 
                                [1]                                 
                p(matrixMult) = [0]                                 
                                [0]                                 
              p(matrixMult#1) = [0]                                 
                                [0]                                 
                       p(nil) = [0]                                 
                                [0]                                 
                      p(node) = [1 0] x1 + [1 1] x2 + [1 1] x3 + [1]
                                [0 0]      [0 0]      [0 0]      [1]
                   p(reverse) = [1 0] x1 + [0]                      
                                [1 0]      [1]                      
                   p(tuple#2) = [1 0] x1 + [1 0] x2 + [0]           
                                [0 0]      [0 0]      [0]           
                     p(#add#) = [0]                                 
                                [0]                                 
                    p(#mult#) = [0]                                 
                                [0]                                 
                 p(#natmult#) = [0]                                 
                                [0]                                 
                    p(#pred#) = [0]                                 
                                [0]                                 
                    p(#succ#) = [0]                                 
                                [0]                                 
                        p(*#) = [0]                                 
                                [0]                                 
                        p(+#) = [0]                                 
                                [0]                                 
            p(appendreverse#) = [0]                                 
                                [0]                                 
          p(appendreverse#1#) = [0]                                 
                                [0]                                 
                  p(bftMult#) = [0]                                 
                                [0]                                 
                 p(bftMult'#) = [1 0] x1 + [0]                      
                                [0 0]      [0]                      
               p(bftMult'#1#) = [1 0] x1 + [0]                      
                                [0 0]      [0]                      
               p(bftMult'#2#) = [0]                                 
                                [0]                                 
               p(bftMult'#3#) = [1 0] x1 + [1 0] x3 + [0]           
                                [0 0]      [0 0]      [0]           
               p(bftMult'#4#) = [1 1] x1 + [1 0] x3 + [1]           
                                [0 0]      [0 0]      [0]           
               p(bftMult'#5#) = [1 0] x1 + [1 0] x3 + [1]           
                                [0 0]      [0 0]      [0]           
              p(computeLine#) = [1 0] x2 + [1]                      
                                [0 0]      [0]                      
            p(computeLine#1#) = [1 0] x3 + [0]                      
                                [1 1]      [0]                      
            p(computeLine#2#) = [1 0] x1 + [0 0] x2 + [0]           
                                [0 0]      [1 0]      [1]           
                  p(dequeue#) = [0]                                 
                                [0]                                 
                p(dequeue#1#) = [0]                                 
                                [0]                                 
                p(dequeue#2#) = [0]                                 
                                [0]                                 
                  p(enqueue#) = [0]                                 
                                [0]                                 
                p(enqueue#1#) = [0]                                 
                                [0]                                 
                 p(lineMult#) = [0]                                 
                                [0]                                 
               p(lineMult#1#) = [0]                                 
                                [0]                                 
               p(lineMult#2#) = [0]                                 
                                [0]                                 
               p(matrixMult#) = [1 0] x2 + [1]                      
                                [0 0]      [0]                      
             p(matrixMult#1#) = [1 0] x2 + [1]                      
                                [0 0]      [0]                      
                  p(reverse#) = [0]                                 
                                [0]                                 
                       p(c_1) = [0]                                 
                                [0]                                 
                       p(c_2) = [0]                                 
                                [0]                                 
                       p(c_3) = [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) = [1 0] x1 + [0]                      
                                [0 0]      [0]                      
                      p(c_16) = [1 0] x1 + [0]                      
                                [1 0]      [0]                      
                      p(c_17) = [0]                                 
                                [0]                                 
                      p(c_18) = [1 0] x1 + [0]                      
                                [0 0]      [1]                      
                      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) = [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]                                 
                      p(c_58) = [0]                                 
                                [0]                                 
                      p(c_59) = [0]                                 
                                [0]                                 
        
        Following rules are strictly oriented:
        computeLine#(@line,@m,@acc) = [1 0] @m + [1]                     
                                      [0 0]      [0]                     
                                    > [1 0] @m + [0]                     
                                      [0 0]      [0]                     
                                    = c_15(computeLine#1#(@line,@acc,@m))
        
        
        Following rules are (at-least) weakly oriented:
                            bftMult'#(@queue,@acc) =  [1 0] @queue + [0]                                   
                                                      [0 0]          [0]                                   
                                                   >= [1 0] @queue + [0]                                   
                                                      [0 0]          [0]                                   
                                                   =  bftMult'#1#(bftMult'#2(@queue),@acc)                 
        
           bftMult'#1#(tuple#2(@elem,@queue),@acc) =  [1 0] @elem + [1 0] @queue + [0]                     
                                                      [0 0]         [0 0]          [0]                     
                                                   >= [1 0] @elem + [1 0] @queue + [0]                     
                                                      [0 0]         [0 0]          [0]                     
                                                   =  bftMult'#3#(@elem,@acc,@queue)                       
        
              bftMult'#3#(::(@t,@_@3),@acc,@queue) =  [1 0] @_@3 + [1 0] @queue + [1 1] @t + [1]           
                                                      [0 0]        [0 0]          [0 0]      [0]           
                                                   >= [1 0] @queue + [1 1] @t + [1]                        
                                                      [0 0]          [0 0]      [0]                        
                                                   =  bftMult'#4#(@t,@acc,@queue)                          
        
                   bftMult'#4#(leaf(),@acc,@queue) =  [1 0] @queue + [2]                                   
                                                      [0 0]          [0]                                   
                                                   >= [1 0] @queue + [0]                                   
                                                      [0 0]          [0]                                   
                                                   =  bftMult'#(@queue,@acc)                               
        
         bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) =  [1 0] @queue + [1 1] @t1 + [1 1] @t2 + [1 0] @y + [3]
                                                      [0 0]          [0 0]       [0 0]       [0 0]      [0]
                                                   >= [1 0] @queue + [1 1] @t1 + [1 1] @t2 + [1 0] @y + [3]
                                                      [0 0]          [0 0]       [0 0]       [0 0]      [0]
                                                   =  bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
        
                      bftMult'#5#(@queue',@acc,@y) =  [1 0] @queue' + [1 0] @y + [1]                       
                                                      [0 0]           [0 0]      [0]                       
                                                   >= [1 0] @queue' + [0]                                  
                                                      [0 0]           [0]                                  
                                                   =  bftMult'#(@queue',matrixMult(@acc,@y))               
        
                      bftMult'#5#(@queue',@acc,@y) =  [1 0] @queue' + [1 0] @y + [1]                       
                                                      [0 0]           [0 0]      [0]                       
                                                   >= [1 0] @y + [1]                                       
                                                      [0 0]      [0]                                       
                                                   =  matrixMult#(@acc,@y)                                 
        
                computeLine#1#(::(@x,@xs),@acc,@m) =  [1 0] @m + [0]                                       
                                                      [1 1]      [0]                                       
                                                   >= [1 0] @m + [0]                                       
                                                      [1 0]      [0]                                       
                                                   =  c_16(computeLine#2#(@m,@acc,@x,@xs))                 
        
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) =  [0 0] @acc + [1 1] @l + [1 0] @ls + [1]              
                                                      [1 0]        [0 0]      [0 0]       [1]              
                                                   >= [1 0] @ls + [1]                                      
                                                      [0 0]       [1]                                      
                                                   =  c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)))     
        
                              matrixMult#(@m1,@m2) =  [1 0] @m2 + [1]                                      
                                                      [0 0]       [0]                                      
                                                   >= [1 0] @m2 + [1]                                      
                                                      [0 0]       [0]                                      
                                                   =  matrixMult#1#(@m1,@m2)                               
        
                     matrixMult#1#(::(@l,@ls),@m2) =  [1 0] @m2 + [1]                                      
                                                      [0 0]       [0]                                      
                                                   >= [1 0] @m2 + [1]                                      
                                                      [0 0]       [0]                                      
                                                   =  computeLine#(@l,@m2,nil())                           
        
                     matrixMult#1#(::(@l,@ls),@m2) =  [1 0] @m2 + [1]                                      
                                                      [0 0]       [0]                                      
                                                   >= [1 0] @m2 + [1]                                      
                                                      [0 0]       [0]                                      
                                                   =  matrixMult#(@ls,@m2)                                 
        
                  appendreverse(@toreverse,@sofar) =  [1 0] @sofar + [1 0] @toreverse + [0]                
                                                      [0 1]          [0 0]              [0]                
                                                   >= [1 0] @sofar + [1 0] @toreverse + [0]                
                                                      [0 1]          [0 0]              [0]                
                                                   =  appendreverse#1(@toreverse,@sofar)                   
        
                appendreverse#1(::(@a,@as),@sofar) =  [1 1] @a + [1 0] @as + [1 0] @sofar + [1]            
                                                      [0 0]      [0 0]       [0 1]          [0]            
                                                   >= [1 1] @a + [1 0] @as + [1 0] @sofar + [1]            
                                                      [0 0]      [0 0]       [0 0]          [0]            
                                                   =  appendreverse(@as,::(@a,@sofar))                     
        
                     appendreverse#1(nil(),@sofar) =  [1 0] @sofar + [0]                                   
                                                      [0 1]          [0]                                   
                                                   >= [1 0] @sofar + [0]                                   
                                                      [0 1]          [0]                                   
                                                   =  @sofar                                               
        
        bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) =  [1 0] @dequeue@1 + [1 0] @dequeue@2 + [0]            
                                                      [0 0]              [0 0]              [1]            
                                                   >= [1 0] @dequeue@1 + [1 0] @dequeue@2 + [0]            
                                                      [0 0]              [0 0]              [1]            
                                                   =  dequeue(@dequeue@1,@dequeue@2)                       
        
                               dequeue(@outq,@inq) =  [1 0] @inq + [1 0] @outq + [0]                       
                                                      [0 0]        [0 0]         [1]                       
                                                   >= [1 0] @inq + [1 0] @outq + [0]                       
                                                      [0 0]        [0 0]         [1]                       
                                                   =  dequeue#1(@outq,@inq)                                
        
                        dequeue#1(::(@t,@ts),@inq) =  [1 0] @inq + [1 1] @t + [1 0] @ts + [1]              
                                                      [0 0]        [0 0]      [0 0]       [1]              
                                                   >= [1 0] @inq + [1 1] @t + [1 0] @ts + [1]              
                                                      [0 0]        [0 0]      [0 0]       [0]              
                                                   =  tuple#2(::(@t,nil()),tuple#2(@ts,@inq))              
        
                             dequeue#1(nil(),@inq) =  [1 0] @inq + [0]                                     
                                                      [0 0]        [1]                                     
                                                   >= [1 0] @inq + [0]                                     
                                                      [0 0]        [1]                                     
                                                   =  dequeue#2(reverse(@inq))                             
        
                             dequeue#2(::(@t,@ts)) =  [1 1] @t + [1 0] @ts + [1]                           
                                                      [0 0]      [0 0]       [1]                           
                                                   >= [1 1] @t + [1 0] @ts + [1]                           
                                                      [0 0]      [0 0]       [0]                           
                                                   =  tuple#2(::(@t,nil()),tuple#2(@ts,nil()))             
        
                                  dequeue#2(nil()) =  [0]                                                  
                                                      [1]                                                  
                                                   >= [0]                                                  
                                                      [0]                                                  
                                                   =  tuple#2(nil(),tuple#2(nil(),nil()))                  
        
                                enqueue(@t,@queue) =  [1 0] @queue + [1 1] @t + [1]                        
                                                      [0 1]          [0 1]      [1]                        
                                                   >= [1 0] @queue + [1 1] @t + [1]                        
                                                      [0 0]          [0 0]      [0]                        
                                                   =  enqueue#1(@queue,@t)                                 
        
                 enqueue#1(tuple#2(@outq,@inq),@t) =  [1 0] @inq + [1 0] @outq + [1 1] @t + [1]            
                                                      [0 0]        [0 0]         [0 0]      [0]            
                                                   >= [1 0] @inq + [1 0] @outq + [1 1] @t + [1]            
                                                      [0 0]        [0 0]         [0 0]      [0]            
                                                   =  tuple#2(@outq,::(@t,@inq))                           
        
                                      reverse(@xs) =  [1 0] @xs + [0]                                      
                                                      [1 0]       [1]                                      
                                                   >= [1 0] @xs + [0]                                      
                                                      [0 0]       [0]                                      
                                                   =  appendreverse(@xs,nil())                             
        
********* Step 9.b:7.b:1.b:1.b:1.b:1.b:1.b:3.a:2: Assumption WORST_CASE(?,O(1))
    + Considered Problem:
        - Strict DPs:
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
        - Weak DPs:
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)))
            matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2)
            matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil())
            matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2)
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/1,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
    + Details:
        ()

********* Step 9.b:7.b:1.b:1.b:1.b:1.b:1.b:3.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak DPs:
            bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
            bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
            bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
            bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
            bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
            bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
            bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
            computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)))
            matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2)
            matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil())
            matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2)
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/1,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        RemoveWeakSuffixes
    + Details:
        Consider the dependency graph
          1:W:bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
             -->_1 bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue):2
          
          2:W:bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
             -->_1 bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue):3
          
          3:W:bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
             -->_1 bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue))
                                                                           ,@acc
                                                                           ,@y):5
             -->_1 bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc):4
          
          4:W:bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
             -->_1 bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc):1
          
          5:W:bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
             -->_1 bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y):7
             -->_1 bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y)):6
          
          6:W:bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
             -->_1 bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc):1
          
          7:W:bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
             -->_1 matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2):11
          
          8:W:computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
             -->_1 computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs)):9
          
          9:W:computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
             -->_1 computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))):10
          
          10:W:computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)))
             -->_1 computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m)):8
          
          11:W:matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2)
             -->_1 matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2):13
             -->_1 matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil()):12
          
          12:W:matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil())
             -->_1 computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m)):8
          
          13:W:matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2)
             -->_1 matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2):11
          
        The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
          1: bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
          6: bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
          5: bftMult'#4#(node(@y,@t1,@t2),@acc,@queue) -> bftMult'#5#(enqueue(@t2,enqueue(@t1,@queue)),@acc,@y)
          3: bftMult'#3#(::(@t,@_@3),@acc,@queue) -> bftMult'#4#(@t,@acc,@queue)
          2: bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue)
          4: bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
          7: bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
          11: matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2)
          13: matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2)
          12: matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil())
          8: computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
          10: computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_18(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)))
          9: computeLine#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
********* Step 9.b:7.b:1.b:1.b:1.b:1.b:1.b:3.b:2: EmptyProcessor WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak TRS:
            #add(#0(),@y) -> @y
            #add(#neg(#s(#0())),@y) -> #pred(@y)
            #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y))
            #add(#pos(#s(#0())),@y) -> #succ(@y)
            #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y))
            #mult(#0(),#0()) -> #0()
            #mult(#0(),#neg(@y)) -> #0()
            #mult(#0(),#pos(@y)) -> #0()
            #mult(#neg(@x),#0()) -> #0()
            #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y))
            #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#0()) -> #0()
            #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y))
            #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y))
            #natmult(#0(),@y) -> #0()
            #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y))
            #pred(#0()) -> #neg(#s(#0()))
            #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
            #pred(#pos(#s(#0()))) -> #0()
            #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
            #succ(#0()) -> #pos(#s(#0()))
            #succ(#neg(#s(#0()))) -> #0()
            #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
            #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
            *(@x,@y) -> #mult(@x,@y)
            +(@x,@y) -> #add(@x,@y)
            appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar)
            appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar))
            appendreverse#1(nil(),@sofar) -> @sofar
            bftMult'#2(tuple#2(@dequeue@1,@dequeue@2)) -> dequeue(@dequeue@1,@dequeue@2)
            computeLine(@line,@m,@acc) -> computeLine#1(@line,@acc,@m)
            computeLine#1(::(@x,@xs),@acc,@m) -> computeLine#2(@m,@acc,@x,@xs)
            computeLine#1(nil(),@acc,@m) -> @acc
            computeLine#2(::(@l,@ls),@acc,@x,@xs) -> computeLine(@xs,@ls,lineMult(@x,@l,@acc))
            computeLine#2(nil(),@acc,@x,@xs) -> nil()
            dequeue(@outq,@inq) -> dequeue#1(@outq,@inq)
            dequeue#1(::(@t,@ts),@inq) -> tuple#2(::(@t,nil()),tuple#2(@ts,@inq))
            dequeue#1(nil(),@inq) -> dequeue#2(reverse(@inq))
            dequeue#2(::(@t,@ts)) -> tuple#2(::(@t,nil()),tuple#2(@ts,nil()))
            dequeue#2(nil()) -> tuple#2(nil(),tuple#2(nil(),nil()))
            enqueue(@t,@queue) -> enqueue#1(@queue,@t)
            enqueue#1(tuple#2(@outq,@inq),@t) -> tuple#2(@outq,::(@t,@inq))
            lineMult(@n,@l1,@l2) -> lineMult#1(@l1,@l2,@n)
            lineMult#1(::(@x,@xs),@l2,@n) -> lineMult#2(@l2,@n,@x,@xs)
            lineMult#1(nil(),@l2,@n) -> nil()
            lineMult#2(::(@y,@ys),@n,@x,@xs) -> ::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys))
            lineMult#2(nil(),@n,@x,@xs) -> ::(*(@x,@n),lineMult(@n,@xs,nil()))
            matrixMult(@m1,@m2) -> matrixMult#1(@m1,@m2)
            matrixMult#1(::(@l,@ls),@m2) -> ::(computeLine(@l,@m2,nil()),matrixMult(@ls,@m2))
            matrixMult#1(nil(),@m2) -> nil()
            reverse(@xs) -> appendreverse(@xs,nil())
        - Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,appendreverse/2,appendreverse#1/2,bftMult/2,bftMult'/2
            ,bftMult'#1/2,bftMult'#2/1,bftMult'#3/3,bftMult'#4/3,bftMult'#5/3,computeLine/3,computeLine#1/3
            ,computeLine#2/4,dequeue/2,dequeue#1/2,dequeue#2/1,enqueue/2,enqueue#1/2,lineMult/3,lineMult#1/3
            ,lineMult#2/4,matrixMult/2,matrixMult#1/2,reverse/1,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2
            ,appendreverse#/2,appendreverse#1#/2,bftMult#/2,bftMult'#/2,bftMult'#1#/2,bftMult'#2#/1,bftMult'#3#/3
            ,bftMult'#4#/3,bftMult'#5#/3,computeLine#/3,computeLine#1#/3,computeLine#2#/4,dequeue#/2,dequeue#1#/2
            ,dequeue#2#/1,enqueue#/2,enqueue#1#/2,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2
            ,reverse#/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,leaf/0,nil/0,node/3,tuple#2/2,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0
            ,c_6/1,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/2,c_15/1,c_16/1,c_17/0,c_18/1,c_19/0,c_20/1,c_21/0
            ,c_22/1,c_23/0,c_24/0,c_25/1,c_26/0,c_27/1,c_28/1,c_29/0,c_30/1,c_31/1,c_32/1,c_33/2,c_34/0,c_35/1,c_36/0
            ,c_37/1,c_38/2,c_39/1,c_40/2,c_41/0,c_42/0,c_43/0,c_44/0,c_45/1,c_46/1,c_47/0,c_48/1,c_49/1,c_50/0,c_51/2
            ,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/0,c_58/0,c_59/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,appendreverse#
            ,appendreverse#1#,bftMult#,bftMult'#,bftMult'#1#,bftMult'#2#,bftMult'#3#,bftMult'#4#,bftMult'#5#
            ,computeLine#,computeLine#1#,computeLine#2#,dequeue#,dequeue#1#,dequeue#2#,enqueue#,enqueue#1#,lineMult#
            ,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#,reverse#} and constructors {#0,#neg,#pos,#s,::,leaf,nil
            ,node,tuple#2}
    + Applied Processor:
        EmptyProcessor
    + Details:
        The problem is already closed. The intended complexity is O(1).

WORST_CASE(?,O(n^3))