*** 1 Progress [(?,O(n^3))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        *(@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 DP Rules:
        
      Weak TRS 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)))
      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
        basic terms: {#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}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
    Applied Processor:
      DependencyPairs {dpKind_ = DT}
    Proof:
      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.
*** 1.1 Progress [(?,O(n^3))]  ***
    Considered Problem:
      Strict DP Rules:
        *#(@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()))
      Strict TRS Rules:
        
      Weak DP Rules:
        #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 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(@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
        basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
    Applied Processor:
      UsableRules
    Proof:
      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()))
*** 1.1.1 Progress [(?,O(n^3))]  ***
    Considered Problem:
      Strict DP Rules:
        *#(@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()))
      Strict TRS Rules:
        
      Weak DP Rules:
        #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 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())
      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
        basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
    Applied Processor:
      PredecessorEstimation {onSelection = all simple predecessor estimation selector}
    Proof:
      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()                                
*** 1.1.1.1 Progress [(?,O(n^3))]  ***
    Considered Problem:
      Strict DP Rules:
        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()))
      Strict TRS Rules:
        
      Weak DP Rules:
        #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 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())
      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
        basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
    Applied Processor:
      PredecessorEstimation {onSelection = all simple predecessor estimation selector}
    Proof:
      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()                                                      
*** 1.1.1.1.1 Progress [(?,O(n^3))]  ***
    Considered Problem:
      Strict DP Rules:
        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()))
      Strict TRS Rules:
        
      Weak DP Rules:
        #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 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())
      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
        basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
    Applied Processor:
      RemoveWeakSuffixes
    Proof:
      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()
*** 1.1.1.1.1.1 Progress [(?,O(n^3))]  ***
    Considered Problem:
      Strict DP Rules:
        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()))
      Strict TRS Rules:
        
      Weak DP Rules:
        
      Weak TRS 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())
      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
        basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
    Applied Processor:
      SimplifyRHS
    Proof:
      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()))
*** 1.1.1.1.1.1.1 Progress [(?,O(n^3))]  ***
    Considered Problem:
      Strict DP Rules:
        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()))
      Strict TRS Rules:
        
      Weak DP Rules:
        
      Weak TRS 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())
      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
        basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
    Applied Processor:
      RemoveHeads
    Proof:
      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)))]
*** 1.1.1.1.1.1.1.1 Progress [(?,O(n^3))]  ***
    Considered Problem:
      Strict DP Rules:
        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()))
      Strict TRS Rules:
        
      Weak DP Rules:
        
      Weak TRS 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())
      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
        basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
    Applied Processor:
      Decompose {onSelection = all cycle independent sub-graph, withBound = RelativeAdd}
    Proof:
      We analyse the complexity of following sub-problems (R) and (S).
      Problem (S) is obtained from the input problem by shifting strict rules from (R) into the weak component.
      
      Problem (R)
        Strict DP Rules:
          appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
          appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
        Strict TRS Rules:
          
        Weak DP Rules:
          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 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())
        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
          basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
      
      Problem (S)
        Strict DP Rules:
          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()))
        Strict TRS Rules:
          
        Weak DP Rules:
          appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
          appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
        Weak TRS 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())
        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
          basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
  *** 1.1.1.1.1.1.1.1.1 Progress [(?,O(n^2))]  ***
      Considered Problem:
        Strict DP Rules:
          appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
          appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
        Strict TRS Rules:
          
        Weak DP Rules:
          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 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())
        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
          basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
      Applied Processor:
        RemoveWeakSuffixes
      Proof:
        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))
             -->_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: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))
             -->_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: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))                      
  *** 1.1.1.1.1.1.1.1.1.1 Progress [(?,O(n^2))]  ***
      Considered Problem:
        Strict DP Rules:
          appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
          appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
        Strict TRS Rules:
          
        Weak DP Rules:
          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 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())
        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
          basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
      Applied Processor:
        SimplifyRHS
      Proof:
        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)))
  *** 1.1.1.1.1.1.1.1.1.1.1 Progress [(?,O(n^2))]  ***
      Considered Problem:
        Strict DP Rules:
          appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
          appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
        Strict TRS Rules:
          
        Weak DP Rules:
          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 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())
        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
          basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
      Applied Processor:
        DecomposeDG {onSelection = all below first cut in WDG, onUpper = Just someStrategy, onLower = Nothing}
      Proof:
        We decompose the input problem according to the dependency graph into the upper component
          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))
    *** 1.1.1.1.1.1.1.1.1.1.1.1 Progress [(?,O(n^1))]  ***
        Considered Problem:
          Strict DP Rules:
            bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
          Strict TRS Rules:
            
          Weak DP Rules:
            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 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())
          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
            basic terms: {#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#}/{#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, greedy = NoGreedy}}
        Proof:
          We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy} to orient following rules strictly:
            1: 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 = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy}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.
      *** 1.1.1.1.1.1.1.1.1.1.1.1.1 Progress [(?,O(n^1))]  ***
          Considered Problem:
            Strict DP Rules:
              bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc),bftMult'#2#(@queue))
            Strict TRS Rules:
              
            Weak DP Rules:
              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 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())
            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
              basic terms: {#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#}/{#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 any intersect of rules of CDG leaf and strict-rules, greedy = NoGreedy}
          Proof:
            We apply a matrix interpretation of kind constructor based matrix interpretation:
            The following argument positions are considered usable:
              uargs(c_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) = [2]                           
                          p(#add) = [2] x1 + [1]                  
                         p(#mult) = [4] x2 + [2]                  
                      p(#natmult) = [0]                           
                          p(#neg) = [1] x1 + [3]                  
                          p(#pos) = [1] x1 + [2]                  
                         p(#pred) = [2] x1 + [2]                  
                            p(#s) = [1] x1 + [0]                  
                         p(#succ) = [0]                           
                             p(*) = [4] x1 + [0]                  
                             p(+) = [0]                           
                            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 + [1] x2 + [0]         
                    p(bftMult'#1) = [1]                           
                    p(bftMult'#2) = [1] x1 + [0]                  
                    p(bftMult'#3) = [1] x1 + [1]                  
                    p(bftMult'#4) = [1] x1 + [4]                  
                    p(bftMult'#5) = [4] x2 + [0]                  
                   p(computeLine) = [6] x2 + [2]                  
                 p(computeLine#1) = [2]                           
                 p(computeLine#2) = [2] x2 + [4] x3 + [1] x4 + [5]
                       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 + [0]         
                     p(enqueue#1) = [1] x1 + [1] x2 + [0]         
                          p(leaf) = [3]                           
                      p(lineMult) = [1] x1 + [2]                  
                    p(lineMult#1) = [4]                           
                    p(lineMult#2) = [0]                           
                    p(matrixMult) = [0]                           
                  p(matrixMult#1) = [4]                           
                           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] x1 + [4] x2 + [0]         
                        p(#mult#) = [4] x1 + [4]                  
                     p(#natmult#) = [1] x1 + [1] x2 + [0]         
                        p(#pred#) = [2] x1 + [1]                  
                        p(#succ#) = [1] x1 + [2]                  
                            p(*#) = [1] x1 + [0]                  
                            p(+#) = [2] x2 + [2]                  
                p(appendreverse#) = [1] x1 + [0]                  
              p(appendreverse#1#) = [0]                           
                      p(bftMult#) = [1] x1 + [1]                  
                     p(bftMult'#) = [1] x1 + [3]                  
                   p(bftMult'#1#) = [1] x1 + [0]                  
                   p(bftMult'#2#) = [1] x1 + [4]                  
                   p(bftMult'#3#) = [1] x1 + [1] x3 + [0]         
                   p(bftMult'#4#) = [1] x1 + [1] x3 + [0]         
                   p(bftMult'#5#) = [1] x1 + [3]                  
                  p(computeLine#) = [1] x1 + [2]                  
                p(computeLine#1#) = [1] x2 + [2]                  
                p(computeLine#2#) = [1] x1 + [2] x2 + [0]         
                      p(dequeue#) = [1] x1 + [1] x2 + [0]         
                    p(dequeue#1#) = [1] x1 + [4] x2 + [2]         
                    p(dequeue#2#) = [1]                           
                      p(enqueue#) = [0]                           
                    p(enqueue#1#) = [1]                           
                     p(lineMult#) = [1]                           
                   p(lineMult#1#) = [2] x2 + [1] x3 + [1]         
                   p(lineMult#2#) = [2] x3 + [1] x4 + [0]         
                   p(matrixMult#) = [2]                           
                 p(matrixMult#1#) = [1] x1 + [0]                  
                      p(reverse#) = [1]                           
                           p(c_1) = [1] x1 + [1]                  
                           p(c_2) = [1] x1 + [0]                  
                           p(c_3) = [1] x1 + [2]                  
                           p(c_4) = [4] x1 + [2]                  
                           p(c_5) = [1]                           
                           p(c_6) = [2] x1 + [1]                  
                           p(c_7) = [1] x1 + [1]                  
                           p(c_8) = [1] x1 + [0]                  
                           p(c_9) = [1] x1 + [1]                  
                          p(c_10) = [1] x1 + [0]                  
                          p(c_11) = [1]                           
                          p(c_12) = [1] x1 + [0]                  
                          p(c_13) = [1] x1 + [3]                  
                          p(c_14) = [1] x1 + [0]                  
                          p(c_15) = [1] x1 + [0]                  
                          p(c_16) = [1] x1 + [0]                  
                          p(c_17) = [0]                           
                          p(c_18) = [1] x1 + [1]                  
                          p(c_19) = [1]                           
                          p(c_20) = [4]                           
                          p(c_21) = [4]                           
                          p(c_22) = [0]                           
                          p(c_23) = [1]                           
                          p(c_24) = [1]                           
                          p(c_25) = [0]                           
                          p(c_26) = [0]                           
                          p(c_27) = [4]                           
                          p(c_28) = [1] x1 + [0]                  
                          p(c_29) = [0]                           
                          p(c_30) = [4] x1 + [4]                  
                          p(c_31) = [2] x1 + [4]                  
                          p(c_32) = [4]                           
                          p(c_33) = [4] x1 + [0]                  
                          p(c_34) = [1]                           
                          p(c_35) = [1] x1 + [1]                  
                          p(c_36) = [1]                           
                          p(c_37) = [4]                           
                          p(c_38) = [0]                           
                          p(c_39) = [0]                           
                          p(c_40) = [0]                           
                          p(c_41) = [0]                           
                          p(c_42) = [0]                           
                          p(c_43) = [1]                           
                          p(c_44) = [0]                           
                          p(c_45) = [2] x1 + [1]                  
                          p(c_46) = [1]                           
                          p(c_47) = [0]                           
                          p(c_48) = [1]                           
                          p(c_49) = [1] x1 + [0]                  
                          p(c_50) = [1]                           
                          p(c_51) = [1]                           
                          p(c_52) = [0]                           
                          p(c_53) = [1]                           
                          p(c_54) = [0]                           
                          p(c_55) = [1]                           
                          p(c_56) = [1]                           
                          p(c_57) = [0]                           
                          p(c_58) = [0]                           
                          p(c_59) = [0]                           
            
            Following rules are strictly oriented:
            bftMult'#(@queue,@acc) = [1] @queue + [3]                  
                                   > [1] @queue + [1]                  
                                   = c_7(bftMult'#1#(bftMult'#2(@queue)
                                                    ,@acc)             
                                        ,bftMult'#2#(@queue))          
            
            
            Following rules are (at-least) weakly oriented:
                   bftMult'#1#(tuple#2(@elem =  [1] @elem + [1] @queue + [0]                 
                                    ,@queue)                                                 
                                      ,@acc)                                                 
                                             >= [1] @elem + [1] @queue + [0]                 
                                             =  c_8(bftMult'#3#(@elem                        
                                                               ,@acc                         
                                                               ,@queue))                     
            
                     bftMult'#3#(::(@t,@_@3) =  [1] @_@3 + [1] @queue + [1] @t + [0]         
                                       ,@acc                                                 
                                    ,@queue)                                                 
                                             >= [1] @queue + [1] @t + [0]                    
                                             =  c_10(bftMult'#4#(@t                          
                                                                ,@acc                        
                                                                ,@queue))                    
            
             bftMult'#4#(leaf(),@acc,@queue) =  [1] @queue + [3]                             
                                             >= [1] @queue + [3]                             
                                             =  c_12(bftMult'#(@queue,@acc))                 
            
                bftMult'#4#(node(@y,@t1,@t2) =  [1] @queue + [1] @t1 + [1] @t2 + [6]         
                                       ,@acc                                                 
                                    ,@queue)                                                 
                                             >= [1] @queue + [1] @t1 + [1] @t2 + [6]         
                                             =  c_13(bftMult'#5#(enqueue(@t2                 
                                                                        ,enqueue(@t1,@queue))
                                                                ,@acc                        
                                                                ,@y))                        
            
                bftMult'#5#(@queue',@acc,@y) =  [1] @queue' + [3]                            
                                             >= [1] @queue' + [3]                            
                                             =  c_14(bftMult'#(@queue'                       
                                                              ,matrixMult(@acc,@y)))         
            
            appendreverse(@toreverse,@sofar) =  [1] @sofar + [1] @toreverse + [0]            
                                             >= [1] @sofar + [1] @toreverse + [0]            
                                             =  appendreverse#1(@toreverse                   
                                                               ,@sofar)                      
            
                  appendreverse#1(::(@a,@as) =  [1] @a + [1] @as + [1] @sofar + [0]          
                                    ,@sofar)                                                 
                                             >= [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 =  [1] @dequeue@1 + [1] @dequeue@2 + [0]        
                               ,@dequeue@2))                                                 
                                             >= [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 + [0]                    
                                             >= [1] @queue + [1] @t + [0]                    
                                             =  enqueue#1(@queue,@t)                         
            
               enqueue#1(tuple#2(@outq,@inq) =  [1] @inq + [1] @outq + [1] @t + [0]          
                                        ,@t)                                                 
                                             >= [1] @inq + [1] @outq + [1] @t + [0]          
                                             =  tuple#2(@outq,::(@t,@inq))                   
            
                                reverse(@xs) =  [1] @xs + [0]                                
                                             >= [1] @xs + [0]                                
                                             =  appendreverse(@xs,nil())                     
            
      *** 1.1.1.1.1.1.1.1.1.1.1.1.1.1 Progress [(?,O(1))]  ***
          Considered Problem:
            Strict DP Rules:
              
            Strict TRS Rules:
              
            Weak DP Rules:
              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 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())
            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
              basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
          Applied Processor:
            Assumption
          Proof:
            ()
      
      *** 1.1.1.1.1.1.1.1.1.1.1.1.2 Progress [(O(1),O(1))]  ***
          Considered Problem:
            Strict DP Rules:
              
            Strict TRS Rules:
              
            Weak DP Rules:
              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 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())
            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
              basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
          Applied Processor:
            RemoveWeakSuffixes
          Proof:
            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))                  
      *** 1.1.1.1.1.1.1.1.1.1.1.1.2.1 Progress [(O(1),O(1))]  ***
          Considered Problem:
            Strict DP Rules:
              
            Strict TRS Rules:
              
            Weak DP Rules:
              
            Weak TRS Rules:
              #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
              basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
          Applied Processor:
            EmptyProcessor
          Proof:
            The problem is already closed. The intended complexity is O(1).
      
    *** 1.1.1.1.1.1.1.1.1.1.1.2 Progress [(?,O(n^1))]  ***
        Considered Problem:
          Strict DP Rules:
            appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
            appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
          Strict TRS Rules:
            
          Weak DP Rules:
            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 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())
          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
            basic terms: {#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#}/{#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, greedy = NoGreedy}}
        Proof:
          We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy} to orient following rules strictly:
            2: appendreverse#1#(::(@a,@as)         
                               ,@sofar) ->         
                 c_4(appendreverse#(@as            
                                   ,::(@a,@sofar)))
            
          The strictly oriented rules are moved into the weak component.
      *** 1.1.1.1.1.1.1.1.1.1.1.2.1 Progress [(?,O(n^1))]  ***
          Considered Problem:
            Strict DP Rules:
              appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
              appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
            Strict TRS Rules:
              
            Weak DP Rules:
              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 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())
            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
              basic terms: {#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#}/{#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 any intersect of rules of CDG leaf and strict-rules, greedy = NoGreedy}
          Proof:
            We apply a matrix interpretation of kind constructor based matrix interpretation:
            The following argument positions are considered usable:
              uargs(c_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) = [2]                           
                          p(#add) = [2] x1 + [6]                  
                         p(#mult) = [2] x2 + [2]                  
                      p(#natmult) = [4] x2 + [7]                  
                          p(#neg) = [0]                           
                          p(#pos) = [1] x1 + [0]                  
                         p(#pred) = [1] x1 + [2]                  
                            p(#s) = [1] x1 + [0]                  
                         p(#succ) = [0]                           
                             p(*) = [4] x2 + [0]                  
                             p(+) = [0]                           
                            p(::) = [1] x1 + [1] x2 + [2]         
                 p(appendreverse) = [1] x1 + [1] x2 + [0]         
               p(appendreverse#1) = [1] x1 + [1] x2 + [0]         
                       p(bftMult) = [1] x1 + [0]                  
                      p(bftMult') = [0]                           
                    p(bftMult'#1) = [0]                           
                    p(bftMult'#2) = [1] x1 + [0]                  
                    p(bftMult'#3) = [1] x2 + [0]                  
                    p(bftMult'#4) = [0]                           
                    p(bftMult'#5) = [0]                           
                   p(computeLine) = [1] x3 + [6]                  
                 p(computeLine#1) = [4] x1 + [0]                  
                 p(computeLine#2) = [0]                           
                       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 + [2]         
                     p(enqueue#1) = [1] x1 + [1] x2 + [2]         
                          p(leaf) = [0]                           
                      p(lineMult) = [2] x1 + [1]                  
                    p(lineMult#1) = [0]                           
                    p(lineMult#2) = [0]                           
                    p(matrixMult) = [0]                           
                  p(matrixMult#1) = [1]                           
                           p(nil) = [0]                           
                          p(node) = [1] x1 + [1] x2 + [1] x3 + [4]
                       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'#) = [2] x1 + [0]                  
                   p(bftMult'#1#) = [2] x1 + [0]                  
                   p(bftMult'#2#) = [2] x1 + [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#) = [0]                           
                p(computeLine#1#) = [0]                           
                p(computeLine#2#) = [2] x2 + [0]                  
                      p(dequeue#) = [1] x1 + [1] x2 + [0]         
                    p(dequeue#1#) = [1] x1 + [1] x2 + [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#) = [0]                           
                 p(matrixMult#1#) = [1] x1 + [1] x2 + [0]         
                      p(reverse#) = [1] x1 + [0]                  
                           p(c_1) = [0]                           
                           p(c_2) = [0]                           
                           p(c_3) = [1] x1 + [0]                  
                           p(c_4) = [1] x1 + [0]                  
                           p(c_5) = [0]                           
                           p(c_6) = [4] x1 + [0]                  
                           p(c_7) = [0]                           
                           p(c_8) = [0]                           
                           p(c_9) = [2] x1 + [0]                  
                          p(c_10) = [0]                           
                          p(c_11) = [0]                           
                          p(c_12) = [4] x1 + [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) = [1] x1 + [0]                  
                          p(c_21) = [0]                           
                          p(c_22) = [1] x1 + [0]                  
                          p(c_23) = [0]                           
                          p(c_24) = [0]                           
                          p(c_25) = [1] x1 + [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) = [0]                           
                          p(c_33) = [2]                           
                          p(c_34) = [1]                           
                          p(c_35) = [1] x1 + [0]                  
                          p(c_36) = [0]                           
                          p(c_37) = [0]                           
                          p(c_38) = [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) = [0]                           
                          p(c_46) = [0]                           
                          p(c_47) = [0]                           
                          p(c_48) = [0]                           
                          p(c_49) = [0]                           
                          p(c_50) = [0]                           
                          p(c_51) = [0]                           
                          p(c_52) = [0]                           
                          p(c_53) = [0]                           
                          p(c_54) = [0]                           
                          p(c_55) = [0]                           
                          p(c_56) = [0]                           
                          p(c_57) = [4]                           
                          p(c_58) = [2]                           
                          p(c_59) = [0]                           
            
            Following rules are strictly oriented:
            appendreverse#1#(::(@a,@as) = [1] @a + [1] @as + [2]            
                               ,@sofar)                                     
                                        > [1] @as + [0]                     
                                        = c_4(appendreverse#(@as            
                                                            ,::(@a,@sofar)))
            
            
            Following rules are (at-least) weakly oriented:
                   appendreverse#(@toreverse =  [1] @toreverse + [0]                         
                                    ,@sofar)                                                 
                                             >= [1] @toreverse + [0]                         
                                             =  c_3(appendreverse#1#(@toreverse              
                                                                    ,@sofar))                
            
                      bftMult'#(@queue,@acc) =  [2] @queue + [0]                             
                                             >= [2] @queue + [0]                             
                                             =  bftMult'#1#(bftMult'#2(@queue)               
                                                           ,@acc)                            
            
                      bftMult'#(@queue,@acc) =  [2] @queue + [0]                             
                                             >= [2] @queue + [0]                             
                                             =  bftMult'#2#(@queue)                          
            
                   bftMult'#1#(tuple#2(@elem =  [2] @elem + [2] @queue + [0]                 
                                    ,@queue)                                                 
                                      ,@acc)                                                 
                                             >= [2] @elem + [2] @queue + [0]                 
                                             =  bftMult'#3#(@elem,@acc,@queue)               
            
              bftMult'#2#(tuple#2(@dequeue@1 =  [2] @dequeue@1 + [2] @dequeue@2 + [0]        
                               ,@dequeue@2))                                                 
                                             >= [2] @dequeue@1 + [2] @dequeue@2 + [0]        
                                             =  c_9(dequeue#(@dequeue@1                      
                                                            ,@dequeue@2))                    
            
                     bftMult'#3#(::(@t,@_@3) =  [2] @_@3 + [2] @queue + [2] @t + [4]         
                                       ,@acc                                                 
                                    ,@queue)                                                 
                                             >= [2] @queue + [2] @t + [0]                    
                                             =  bftMult'#4#(@t,@acc,@queue)                  
            
             bftMult'#4#(leaf(),@acc,@queue) =  [2] @queue + [0]                             
                                             >= [2] @queue + [0]                             
                                             =  bftMult'#(@queue,@acc)                       
            
                bftMult'#4#(node(@y,@t1,@t2) =  [2] @queue + [2] @t1 + [2] @t2 + [2] @y + [8]
                                       ,@acc                                                 
                                    ,@queue)                                                 
                                             >= [2] @queue + [2] @t1 + [2] @t2 + [8]         
                                             =  bftMult'#5#(enqueue(@t2                      
                                                                   ,enqueue(@t1,@queue))     
                                                           ,@acc                             
                                                           ,@y)                              
            
                bftMult'#5#(@queue',@acc,@y) =  [2] @queue' + [0]                            
                                             >= [2] @queue' + [0]                            
                                             =  bftMult'#(@queue'                            
                                                         ,matrixMult(@acc,@y))               
            
                        dequeue#(@outq,@inq) =  [1] @inq + [1] @outq + [0]                   
                                             >= [1] @inq + [1] @outq + [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) =  [1] @a + [1] @as + [1] @sofar + [2]          
                                    ,@sofar)                                                 
                                             >= [1] @a + [1] @as + [1] @sofar + [2]          
                                             =  appendreverse(@as,::(@a,@sofar))             
            
               appendreverse#1(nil(),@sofar) =  [1] @sofar + [0]                             
                                             >= [1] @sofar + [0]                             
                                             =  @sofar                                       
            
               bftMult'#2(tuple#2(@dequeue@1 =  [1] @dequeue@1 + [1] @dequeue@2 + [0]        
                               ,@dequeue@2))                                                 
                                             >= [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 + [2]            
                                             >= [1] @inq + [1] @t + [1] @ts + [2]            
                                             =  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 + [2]                       
                                             >= [1] @t + [1] @ts + [2]                       
                                             =  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 + [2]                    
                                             >= [1] @queue + [1] @t + [2]                    
                                             =  enqueue#1(@queue,@t)                         
            
               enqueue#1(tuple#2(@outq,@inq) =  [1] @inq + [1] @outq + [1] @t + [2]          
                                        ,@t)                                                 
                                             >= [1] @inq + [1] @outq + [1] @t + [2]          
                                             =  tuple#2(@outq,::(@t,@inq))                   
            
                                reverse(@xs) =  [1] @xs + [0]                                
                                             >= [1] @xs + [0]                                
                                             =  appendreverse(@xs,nil())                     
            
      *** 1.1.1.1.1.1.1.1.1.1.1.2.1.1 Progress [(?,O(1))]  ***
          Considered Problem:
            Strict DP Rules:
              appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
            Strict TRS Rules:
              
            Weak DP Rules:
              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 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())
            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
              basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
          Applied Processor:
            Assumption
          Proof:
            ()
      
      *** 1.1.1.1.1.1.1.1.1.1.1.2.2 Progress [(?,O(n^1))]  ***
          Considered Problem:
            Strict DP Rules:
              appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
            Strict TRS Rules:
              
            Weak DP Rules:
              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 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())
            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
              basic terms: {#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#}/{#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, greedy = NoGreedy}}
          Proof:
            We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy} to orient following rules strictly:
              1: 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, greedy = NoGreedy}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.
        *** 1.1.1.1.1.1.1.1.1.1.1.2.2.1 Progress [(?,O(n^1))]  ***
            Considered Problem:
              Strict DP Rules:
                appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
              Strict TRS Rules:
                
              Weak DP Rules:
                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 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())
              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
                basic terms: {#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#}/{#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 any intersect of rules of CDG leaf and strict-rules, greedy = NoGreedy}
            Proof:
              We apply a matrix interpretation of kind constructor based matrix interpretation:
              The following argument positions are considered usable:
                uargs(c_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) = [0]                           
                            p(#add) = [1]                           
                           p(#mult) = [1] x1 + [4] x2 + [0]         
                        p(#natmult) = [0]                           
                            p(#neg) = [1]                           
                            p(#pos) = [1]                           
                           p(#pred) = [0]                           
                              p(#s) = [2]                           
                           p(#succ) = [6] x1 + [1]                  
                               p(*) = [4] x1 + [2] x2 + [1]         
                               p(+) = [3] x1 + [2]                  
                              p(::) = [1] x1 + [1] x2 + [1]         
                   p(appendreverse) = [1] x1 + [1] x2 + [0]         
                 p(appendreverse#1) = [1] x1 + [1] x2 + [0]         
                         p(bftMult) = [0]                           
                        p(bftMult') = [0]                           
                      p(bftMult'#1) = [1] x1 + [0]                  
                      p(bftMult'#2) = [1] x1 + [0]                  
                      p(bftMult'#3) = [0]                           
                      p(bftMult'#4) = [1] x1 + [1] x2 + [4] x3 + [2]
                      p(bftMult'#5) = [1] x3 + [0]                  
                     p(computeLine) = [1] x3 + [7]                  
                   p(computeLine#1) = [4] x1 + [1] x3 + [1]         
                   p(computeLine#2) = [1] x3 + [2] x4 + [0]         
                         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 + [2]         
                       p(enqueue#1) = [1] x1 + [1] x2 + [1]         
                            p(leaf) = [0]                           
                        p(lineMult) = [5] x1 + [5] x3 + [1]         
                      p(lineMult#1) = [1] x1 + [1] x2 + [1] x3 + [2]
                      p(lineMult#2) = [3] x1 + [1] x4 + [6]         
                      p(matrixMult) = [1] x2 + [0]                  
                    p(matrixMult#1) = [4]                           
                             p(nil) = [0]                           
                            p(node) = [1] x2 + [1] x3 + [3]         
                         p(reverse) = [1] x1 + [0]                  
                         p(tuple#2) = [1] x1 + [1] x2 + [0]         
                           p(#add#) = [1] x1 + [1] x2 + [0]         
                          p(#mult#) = [2] x1 + [2]                  
                       p(#natmult#) = [4] x1 + [1]                  
                          p(#pred#) = [0]                           
                          p(#succ#) = [1]                           
                              p(*#) = [1] x1 + [4]                  
                              p(+#) = [1]                           
                  p(appendreverse#) = [1] x1 + [1]                  
                p(appendreverse#1#) = [1] x1 + [0]                  
                        p(bftMult#) = [1] x1 + [0]                  
                       p(bftMult'#) = [1] x1 + [2]                  
                     p(bftMult'#1#) = [1] x1 + [2]                  
                     p(bftMult'#2#) = [1] x1 + [2]                  
                     p(bftMult'#3#) = [1] x1 + [1] x3 + [2]         
                     p(bftMult'#4#) = [1] x1 + [1] x3 + [3]         
                     p(bftMult'#5#) = [1] x1 + [2]                  
                    p(computeLine#) = [2] x1 + [4] x2 + [1]         
                  p(computeLine#1#) = [2]                           
                  p(computeLine#2#) = [2] x4 + [0]                  
                        p(dequeue#) = [1] x2 + [1]                  
                      p(dequeue#1#) = [1] x2 + [1]                  
                      p(dequeue#2#) = [2]                           
                        p(enqueue#) = [1] x1 + [4] x2 + [1]         
                      p(enqueue#1#) = [1] x1 + [0]                  
                       p(lineMult#) = [1] x1 + [0]                  
                     p(lineMult#1#) = [1] x1 + [1]                  
                     p(lineMult#2#) = [1] x1 + [1] x4 + [0]         
                     p(matrixMult#) = [1]                           
                   p(matrixMult#1#) = [1] x1 + [1]                  
                        p(reverse#) = [1] x1 + [1]                  
                             p(c_1) = [0]                           
                             p(c_2) = [1] x1 + [1]                  
                             p(c_3) = [1] x1 + [0]                  
                             p(c_4) = [1] x1 + [0]                  
                             p(c_5) = [0]                           
                             p(c_6) = [0]                           
                             p(c_7) = [0]                           
                             p(c_8) = [4]                           
                             p(c_9) = [1] x1 + [1]                  
                            p(c_10) = [0]                           
                            p(c_11) = [1]                           
                            p(c_12) = [0]                           
                            p(c_13) = [1]                           
                            p(c_14) = [0]                           
                            p(c_15) = [1] x1 + [1]                  
                            p(c_16) = [1] x1 + [0]                  
                            p(c_17) = [4]                           
                            p(c_18) = [2] x1 + [1] x2 + [0]         
                            p(c_19) = [2]                           
                            p(c_20) = [1] x1 + [0]                  
                            p(c_21) = [2]                           
                            p(c_22) = [1] x1 + [0]                  
                            p(c_23) = [0]                           
                            p(c_24) = [4]                           
                            p(c_25) = [0]                           
                            p(c_26) = [4]                           
                            p(c_27) = [0]                           
                            p(c_28) = [1] x1 + [1]                  
                            p(c_29) = [2]                           
                            p(c_30) = [1] x1 + [4]                  
                            p(c_31) = [1]                           
                            p(c_32) = [1] x1 + [0]                  
                            p(c_33) = [1] x1 + [4] x2 + [0]         
                            p(c_34) = [0]                           
                            p(c_35) = [1] x1 + [0]                  
                            p(c_36) = [0]                           
                            p(c_37) = [1] x1 + [0]                  
                            p(c_38) = [1]                           
                            p(c_39) = [1]                           
                            p(c_40) = [1] x1 + [1] x2 + [1]         
                            p(c_41) = [0]                           
                            p(c_42) = [0]                           
                            p(c_43) = [0]                           
                            p(c_44) = [2]                           
                            p(c_45) = [0]                           
                            p(c_46) = [1] x1 + [0]                  
                            p(c_47) = [4]                           
                            p(c_48) = [4] x1 + [1]                  
                            p(c_49) = [0]                           
                            p(c_50) = [4]                           
                            p(c_51) = [1] x2 + [0]                  
                            p(c_52) = [0]                           
                            p(c_53) = [0]                           
                            p(c_54) = [1]                           
                            p(c_55) = [2]                           
                            p(c_56) = [0]                           
                            p(c_57) = [1]                           
                            p(c_58) = [1]                           
                            p(c_59) = [0]                           
              
              Following rules are strictly oriented:
              appendreverse#(@toreverse = [1] @toreverse + [1]           
                               ,@sofar)                                  
                                        > [1] @toreverse + [0]           
                                        = c_3(appendreverse#1#(@toreverse
                                                              ,@sofar))  
              
              
              Following rules are (at-least) weakly oriented:
                   appendreverse#1#(::(@a,@as) =  [1] @a + [1] @as + [1]                  
                                      ,@sofar)                                            
                                               >= [1] @as + [1]                           
                                               =  c_4(appendreverse#(@as                  
                                                                    ,::(@a,@sofar)))      
              
                        bftMult'#(@queue,@acc) =  [1] @queue + [2]                        
                                               >= [1] @queue + [2]                        
                                               =  bftMult'#1#(bftMult'#2(@queue)          
                                                             ,@acc)                       
              
                        bftMult'#(@queue,@acc) =  [1] @queue + [2]                        
                                               >= [1] @queue + [2]                        
                                               =  bftMult'#2#(@queue)                     
              
                     bftMult'#1#(tuple#2(@elem =  [1] @elem + [1] @queue + [2]            
                                      ,@queue)                                            
                                        ,@acc)                                            
                                               >= [1] @elem + [1] @queue + [2]            
                                               =  bftMult'#3#(@elem,@acc,@queue)          
              
                bftMult'#2#(tuple#2(@dequeue@1 =  [1] @dequeue@1 + [1] @dequeue@2 + [2]   
                                 ,@dequeue@2))                                            
                                               >= [1] @dequeue@2 + [2]                    
                                               =  c_9(dequeue#(@dequeue@1                 
                                                              ,@dequeue@2))               
              
                       bftMult'#3#(::(@t,@_@3) =  [1] @_@3 + [1] @queue + [1] @t + [3]    
                                         ,@acc                                            
                                      ,@queue)                                            
                                               >= [1] @queue + [1] @t + [3]               
                                               =  bftMult'#4#(@t,@acc,@queue)             
              
               bftMult'#4#(leaf(),@acc,@queue) =  [1] @queue + [3]                        
                                               >= [1] @queue + [2]                        
                                               =  bftMult'#(@queue,@acc)                  
              
                  bftMult'#4#(node(@y,@t1,@t2) =  [1] @queue + [1] @t1 + [1] @t2 + [6]    
                                         ,@acc                                            
                                      ,@queue)                                            
                                               >= [1] @queue + [1] @t1 + [1] @t2 + [6]    
                                               =  bftMult'#5#(enqueue(@t2                 
                                                                     ,enqueue(@t1,@queue))
                                                             ,@acc                        
                                                             ,@y)                         
              
                  bftMult'#5#(@queue',@acc,@y) =  [1] @queue' + [2]                       
                                               >= [1] @queue' + [2]                       
                                               =  bftMult'#(@queue'                       
                                                           ,matrixMult(@acc,@y))          
              
                          dequeue#(@outq,@inq) =  [1] @inq + [1]                          
                                               >= [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) =  [1] @a + [1] @as + [1] @sofar + [1]     
                                      ,@sofar)                                            
                                               >= [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 =  [1] @dequeue@1 + [1] @dequeue@2 + [0]   
                                 ,@dequeue@2))                                            
                                               >= [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 + [2]               
                                               >= [1] @queue + [1] @t + [1]               
                                               =  enqueue#1(@queue,@t)                    
              
                 enqueue#1(tuple#2(@outq,@inq) =  [1] @inq + [1] @outq + [1] @t + [1]     
                                          ,@t)                                            
                                               >= [1] @inq + [1] @outq + [1] @t + [1]     
                                               =  tuple#2(@outq,::(@t,@inq))              
              
                                  reverse(@xs) =  [1] @xs + [0]                           
                                               >= [1] @xs + [0]                           
                                               =  appendreverse(@xs,nil())                
              
        *** 1.1.1.1.1.1.1.1.1.1.1.2.2.1.1 Progress [(?,O(1))]  ***
            Considered Problem:
              Strict DP Rules:
                
              Strict TRS Rules:
                
              Weak DP Rules:
                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 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())
              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
                basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
            Applied Processor:
              Assumption
            Proof:
              ()
        
        *** 1.1.1.1.1.1.1.1.1.1.1.2.2.2 Progress [(O(1),O(1))]  ***
            Considered Problem:
              Strict DP Rules:
                
              Strict TRS Rules:
                
              Weak DP Rules:
                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 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())
              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
                basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
            Applied Processor:
              RemoveWeakSuffixes
            Proof:
              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)))      
        *** 1.1.1.1.1.1.1.1.1.1.1.2.2.2.1 Progress [(O(1),O(1))]  ***
            Considered Problem:
              Strict DP Rules:
                
              Strict TRS Rules:
                
              Weak DP Rules:
                
              Weak TRS Rules:
                #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
                basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
            Applied Processor:
              EmptyProcessor
            Proof:
              The problem is already closed. The intended complexity is O(1).
        
  *** 1.1.1.1.1.1.1.1.2 Progress [(?,O(n^3))]  ***
      Considered Problem:
        Strict DP Rules:
          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()))
        Strict TRS Rules:
          
        Weak DP Rules:
          appendreverse#(@toreverse,@sofar) -> c_3(appendreverse#1#(@toreverse,@sofar))
          appendreverse#1#(::(@a,@as),@sofar) -> c_4(appendreverse#(@as,::(@a,@sofar)))
        Weak TRS 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())
        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
          basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
      Applied Processor:
        PredecessorEstimation {onSelection = all simple predecessor estimation selector}
      Proof:
        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)))                          
  *** 1.1.1.1.1.1.1.1.2.1 Progress [(?,O(n^3))]  ***
      Considered Problem:
        Strict DP Rules:
          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))
        Strict TRS Rules:
          
        Weak DP Rules:
          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 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())
        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
          basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
      Applied Processor:
        PredecessorEstimation {onSelection = all simple predecessor estimation selector}
      Proof:
        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()))                             
  *** 1.1.1.1.1.1.1.1.2.1.1 Progress [(?,O(n^3))]  ***
      Considered Problem:
        Strict DP Rules:
          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))
        Strict TRS Rules:
          
        Weak DP Rules:
          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 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())
        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
          basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
      Applied Processor:
        PredecessorEstimation {onSelection = all simple predecessor estimation selector}
      Proof:
        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()))                             
  *** 1.1.1.1.1.1.1.1.2.1.1.1 Progress [(?,O(n^3))]  ***
      Considered Problem:
        Strict DP Rules:
          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))
        Strict TRS Rules:
          
        Weak DP Rules:
          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 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())
        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
          basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
      Applied Processor:
        PredecessorEstimation {onSelection = all simple predecessor estimation selector}
      Proof:
        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()))                             
  *** 1.1.1.1.1.1.1.1.2.1.1.1.1 Progress [(?,O(n^3))]  ***
      Considered Problem:
        Strict DP Rules:
          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))
        Strict TRS Rules:
          
        Weak DP Rules:
          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 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())
        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
          basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
      Applied Processor:
        RemoveWeakSuffixes
      Proof:
        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)))
  *** 1.1.1.1.1.1.1.1.2.1.1.1.1.1 Progress [(?,O(n^3))]  ***
      Considered Problem:
        Strict DP Rules:
          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))
        Strict TRS Rules:
          
        Weak DP Rules:
          
        Weak TRS 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())
        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
          basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
      Applied Processor:
        SimplifyRHS
      Proof:
        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))
  *** 1.1.1.1.1.1.1.1.2.1.1.1.1.1.1 Progress [(?,O(n^3))]  ***
      Considered Problem:
        Strict DP Rules:
          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))
        Strict TRS Rules:
          
        Weak DP Rules:
          
        Weak TRS 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())
        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
          basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
      Applied Processor:
        DecomposeDG {onSelection = all below first cut in WDG, onUpper = Just someStrategy, onLower = Nothing}
      Proof:
        We decompose the input problem according to the dependency graph into the upper component
          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)
    *** 1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1 Progress [(?,O(n^1))]  ***
        Considered Problem:
          Strict DP Rules:
            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))
          Strict TRS Rules:
            
          Weak DP Rules:
            
          Weak TRS 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())
          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
            basic terms: {#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#}/{#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, greedy = NoGreedy}}
        Proof:
          We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy} to orient following rules strictly:
            1: bftMult'#(@queue,@acc) ->           
                 c_7(bftMult'#1#(bftMult'#2(@queue)
                                ,@acc))            
            
          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, greedy = NoGreedy}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.
      *** 1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1 Progress [(?,O(n^1))]  ***
          Considered Problem:
            Strict DP Rules:
              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))
            Strict TRS Rules:
              
            Weak DP Rules:
              
            Weak TRS 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())
            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
              basic terms: {#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#}/{#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 any intersect of rules of CDG leaf and strict-rules, greedy = NoGreedy}
          Proof:
            We apply a matrix interpretation of kind constructor based matrix interpretation:
            The following argument positions are considered usable:
              uargs(c_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) = [4]                           
                          p(#add) = [0]                           
                         p(#mult) = [1] x1 + [5]                  
                      p(#natmult) = [2]                           
                          p(#neg) = [1] x1 + [0]                  
                          p(#pos) = [2]                           
                         p(#pred) = [1] x1 + [2]                  
                            p(#s) = [3]                           
                         p(#succ) = [4]                           
                             p(*) = [4] x2 + [4]                  
                             p(+) = [2] x1 + [4] x2 + [2]         
                            p(::) = [1] x1 + [1] x2 + [0]         
                 p(appendreverse) = [1] x1 + [1] x2 + [0]         
               p(appendreverse#1) = [1] x1 + [1] x2 + [0]         
                       p(bftMult) = [1] x2 + [1]                  
                      p(bftMult') = [0]                           
                    p(bftMult'#1) = [1] x1 + [1]                  
                    p(bftMult'#2) = [1] x1 + [0]                  
                    p(bftMult'#3) = [1] x1 + [1] x2 + [1] x3 + [2]
                    p(bftMult'#4) = [2] x3 + [1]                  
                    p(bftMult'#5) = [1] x3 + [2]                  
                   p(computeLine) = [2] x1 + [1]                  
                 p(computeLine#1) = [4] x1 + [0]                  
                 p(computeLine#2) = [1] x3 + [1] x4 + [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 + [0]         
                     p(enqueue#1) = [1] x1 + [1] x2 + [0]         
                          p(leaf) = [2]                           
                      p(lineMult) = [5] x3 + [2]                  
                    p(lineMult#1) = [4] x1 + [2] x2 + [4]         
                    p(lineMult#2) = [6] x1 + [4] x2 + [1] x4 + [1]
                    p(matrixMult) = [4] x1 + [2] x2 + [0]         
                  p(matrixMult#1) = [4] x2 + [0]                  
                           p(nil) = [0]                           
                          p(node) = [1] x2 + [1] x3 + [1]         
                       p(reverse) = [1] x1 + [0]                  
                       p(tuple#2) = [1] x1 + [1] x2 + [0]         
                         p(#add#) = [2] x1 + [1] x2 + [0]         
                        p(#mult#) = [4] x1 + [1] x2 + [0]         
                     p(#natmult#) = [2] x1 + [1] x2 + [0]         
                        p(#pred#) = [2]                           
                        p(#succ#) = [1]                           
                            p(*#) = [1] x2 + [0]                  
                            p(+#) = [1] x1 + [1] x2 + [1]         
                p(appendreverse#) = [1] x2 + [0]                  
              p(appendreverse#1#) = [4] x1 + [0]                  
                      p(bftMult#) = [1]                           
                     p(bftMult'#) = [4] x1 + [2]                  
                   p(bftMult'#1#) = [4] x1 + [0]                  
                   p(bftMult'#2#) = [1] x1 + [1]                  
                   p(bftMult'#3#) = [4] x1 + [4] x3 + [0]         
                   p(bftMult'#4#) = [4] x1 + [4] x3 + [0]         
                   p(bftMult'#5#) = [4] x1 + [4]                  
                  p(computeLine#) = [4] x1 + [4] x3 + [0]         
                p(computeLine#1#) = [1]                           
                p(computeLine#2#) = [4] x1 + [1]                  
                      p(dequeue#) = [1] x1 + [1] x2 + [1]         
                    p(dequeue#1#) = [1]                           
                    p(dequeue#2#) = [4] x1 + [1]                  
                      p(enqueue#) = [4] x1 + [0]                  
                    p(enqueue#1#) = [1] x1 + [1] x2 + [1]         
                     p(lineMult#) = [1] x2 + [1] x3 + [1]         
                   p(lineMult#1#) = [1]                           
                   p(lineMult#2#) = [1] x2 + [1] x3 + [1] x4 + [4]
                   p(matrixMult#) = [2]                           
                 p(matrixMult#1#) = [1]                           
                      p(reverse#) = [1] x1 + [2]                  
                           p(c_1) = [0]                           
                           p(c_2) = [1] x1 + [0]                  
                           p(c_3) = [0]                           
                           p(c_4) = [1] x1 + [0]                  
                           p(c_5) = [1]                           
                           p(c_6) = [0]                           
                           p(c_7) = [1] x1 + [0]                  
                           p(c_8) = [1] x1 + [0]                  
                           p(c_9) = [2] x1 + [1]                  
                          p(c_10) = [1] x1 + [0]                  
                          p(c_11) = [0]                           
                          p(c_12) = [1] x1 + [6]                  
                          p(c_13) = [1] x1 + [0]                  
                          p(c_14) = [1] x1 + [1] x2 + [0]         
                          p(c_15) = [4] x1 + [0]                  
                          p(c_16) = [0]                           
                          p(c_17) = [0]                           
                          p(c_18) = [2]                           
                          p(c_19) = [0]                           
                          p(c_20) = [1] x1 + [2]                  
                          p(c_21) = [1]                           
                          p(c_22) = [1] x1 + [0]                  
                          p(c_23) = [1]                           
                          p(c_24) = [1]                           
                          p(c_25) = [1] x1 + [1]                  
                          p(c_26) = [1]                           
                          p(c_27) = [0]                           
                          p(c_28) = [1] x1 + [1]                  
                          p(c_29) = [1]                           
                          p(c_30) = [1] x1 + [1]                  
                          p(c_31) = [1]                           
                          p(c_32) = [1]                           
                          p(c_33) = [4] x1 + [4] x2 + [1]         
                          p(c_34) = [1]                           
                          p(c_35) = [2]                           
                          p(c_36) = [0]                           
                          p(c_37) = [1] x1 + [1]                  
                          p(c_38) = [2] x1 + [0]                  
                          p(c_39) = [4] x1 + [1]                  
                          p(c_40) = [1] x1 + [4]                  
                          p(c_41) = [1]                           
                          p(c_42) = [0]                           
                          p(c_43) = [0]                           
                          p(c_44) = [0]                           
                          p(c_45) = [1] x1 + [0]                  
                          p(c_46) = [4] x1 + [4]                  
                          p(c_47) = [2]                           
                          p(c_48) = [1] x1 + [2]                  
                          p(c_49) = [1] x1 + [2]                  
                          p(c_50) = [1]                           
                          p(c_51) = [4] x1 + [2] x2 + [1]         
                          p(c_52) = [1]                           
                          p(c_53) = [1]                           
                          p(c_54) = [0]                           
                          p(c_55) = [0]                           
                          p(c_56) = [0]                           
                          p(c_57) = [0]                           
                          p(c_58) = [4]                           
                          p(c_59) = [2]                           
            
            Following rules are strictly oriented:
            bftMult'#(@queue,@acc) = [4] @queue + [2]                  
                                   > [4] @queue + [0]                  
                                   = c_7(bftMult'#1#(bftMult'#2(@queue)
                                                    ,@acc))            
            
            
            Following rules are (at-least) weakly oriented:
                   bftMult'#1#(tuple#2(@elem =  [4] @elem + [4] @queue + [0]                 
                                    ,@queue)                                                 
                                      ,@acc)                                                 
                                             >= [4] @elem + [4] @queue + [0]                 
                                             =  c_8(bftMult'#3#(@elem                        
                                                               ,@acc                         
                                                               ,@queue))                     
            
                     bftMult'#3#(::(@t,@_@3) =  [4] @_@3 + [4] @queue + [4] @t + [0]         
                                       ,@acc                                                 
                                    ,@queue)                                                 
                                             >= [4] @queue + [4] @t + [0]                    
                                             =  c_10(bftMult'#4#(@t                          
                                                                ,@acc                        
                                                                ,@queue))                    
            
             bftMult'#4#(leaf(),@acc,@queue) =  [4] @queue + [8]                             
                                             >= [4] @queue + [8]                             
                                             =  c_12(bftMult'#(@queue,@acc))                 
            
                bftMult'#4#(node(@y,@t1,@t2) =  [4] @queue + [4] @t1 + [4] @t2 + [4]         
                                       ,@acc                                                 
                                    ,@queue)                                                 
                                             >= [4] @queue + [4] @t1 + [4] @t2 + [4]         
                                             =  c_13(bftMult'#5#(enqueue(@t2                 
                                                                        ,enqueue(@t1,@queue))
                                                                ,@acc                        
                                                                ,@y))                        
            
                bftMult'#5#(@queue',@acc,@y) =  [4] @queue' + [4]                            
                                             >= [4] @queue' + [4]                            
                                             =  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) =  [1] @a + [1] @as + [1] @sofar + [0]          
                                    ,@sofar)                                                 
                                             >= [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 =  [1] @dequeue@1 + [1] @dequeue@2 + [0]        
                               ,@dequeue@2))                                                 
                                             >= [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 + [0]                    
                                             >= [1] @queue + [1] @t + [0]                    
                                             =  enqueue#1(@queue,@t)                         
            
               enqueue#1(tuple#2(@outq,@inq) =  [1] @inq + [1] @outq + [1] @t + [0]          
                                        ,@t)                                                 
                                             >= [1] @inq + [1] @outq + [1] @t + [0]          
                                             =  tuple#2(@outq,::(@t,@inq))                   
            
                                reverse(@xs) =  [1] @xs + [0]                                
                                             >= [1] @xs + [0]                                
                                             =  appendreverse(@xs,nil())                     
            
      *** 1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1 Progress [(?,O(1))]  ***
          Considered Problem:
            Strict DP Rules:
              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))
            Strict TRS Rules:
              
            Weak DP Rules:
              bftMult'#(@queue,@acc) -> c_7(bftMult'#1#(bftMult'#2(@queue),@acc))
            Weak TRS 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())
            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
              basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
          Applied Processor:
            Assumption
          Proof:
            ()
      
      *** 1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.2 Progress [(O(1),O(1))]  ***
          Considered Problem:
            Strict DP Rules:
              
            Strict TRS Rules:
              
            Weak DP Rules:
              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 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())
            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
              basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
          Applied Processor:
            RemoveWeakSuffixes
          Proof:
            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))                  
      *** 1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.2.1 Progress [(O(1),O(1))]  ***
          Considered Problem:
            Strict DP Rules:
              
            Strict TRS Rules:
              
            Weak DP Rules:
              
            Weak TRS Rules:
              #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
              basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
          Applied Processor:
            EmptyProcessor
          Proof:
            The problem is already closed. The intended complexity is O(1).
      
    *** 1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.2 Progress [(?,O(n^2))]  ***
        Considered Problem:
          Strict DP Rules:
            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))
          Strict TRS Rules:
            
          Weak DP Rules:
            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 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())
          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
            basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
        Applied Processor:
          DecomposeDG {onSelection = all below first cut in WDG, onUpper = Just someStrategy, onLower = Nothing}
        Proof:
          We decompose the input problem according to the dependency graph into the upper component
            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)
      *** 1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.2.1 Progress [(?,O(n^1))]  ***
          Considered Problem:
            Strict DP Rules:
              matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
              matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
            Strict TRS Rules:
              
            Weak DP Rules:
              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 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())
            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
              basic terms: {#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#}/{#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, greedy = NoGreedy}}
          Proof:
            We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy} to orient following rules strictly:
              2: matrixMult#1#(::(@l,@ls),@m2) -> 
                   c_33(computeLine#(@l,@m2,nil())
                       ,matrixMult#(@ls,@m2))     
              
            The strictly oriented rules are moved into the weak component.
        *** 1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.2.1.1 Progress [(?,O(n^1))]  ***
            Considered Problem:
              Strict DP Rules:
                matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
                matrixMult#1#(::(@l,@ls),@m2) -> c_33(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
              Strict TRS Rules:
                
              Weak DP Rules:
                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 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())
              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
                basic terms: {#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#}/{#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 any intersect of rules of CDG leaf and strict-rules, greedy = NoGreedy}
            Proof:
              We apply a matrix interpretation of kind constructor based matrix interpretation:
              The following argument positions are considered usable:
                uargs(c_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) = [4] x1 + [0]                  
                           p(#mult) = [3]                           
                        p(#natmult) = [6] x2 + [7]                  
                            p(#neg) = [1] x1 + [3]                  
                            p(#pos) = [0]                           
                           p(#pred) = [0]                           
                              p(#s) = [0]                           
                           p(#succ) = [1] x1 + [0]                  
                               p(*) = [0]                           
                               p(+) = [0]                           
                              p(::) = [1] x2 + [1]                  
                   p(appendreverse) = [3]                           
                 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) = [1] x3 + [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(leaf) = [0]                           
                        p(lineMult) = [2] x1 + [5]                  
                      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) = [5]                           
                           p(#add#) = [1] x1 + [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'#) = [1] x2 + [2]                  
                     p(bftMult'#1#) = [1] x2 + [2]                  
                     p(bftMult'#2#) = [0]                           
                     p(bftMult'#3#) = [1] x2 + [2]                  
                     p(bftMult'#4#) = [1] x2 + [2]                  
                     p(bftMult'#5#) = [1] x2 + [2]                  
                    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#) = [1] x1 + [0]                  
                   p(matrixMult#1#) = [1] 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 + [0]         
                            p(c_34) = [0]                           
                            p(c_35) = [2] x1 + [2]                  
                            p(c_36) = [0]                           
                            p(c_37) = [4] x1 + [0]                  
                            p(c_38) = [1] x1 + [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) = [1] x1 + [0]                  
                            p(c_47) = [0]                           
                            p(c_48) = [4] x1 + [0]                  
                            p(c_49) = [4] x1 + [0]                  
                            p(c_50) = [0]                           
                            p(c_51) = [1] x2 + [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#1#(::(@l,@ls),@m2) = [1] @ls + [1]                  
                                            > [1] @ls + [0]                  
                                            = c_33(computeLine#(@l,@m2,nil())
                                                  ,matrixMult#(@ls,@m2))     
              
              
              Following rules are (at-least) weakly oriented:
                       bftMult'#(@queue,@acc) =  [1] @acc + [2]                          
                                              >= [1] @acc + [2]                          
                                              =  bftMult'#1#(bftMult'#2(@queue)          
                                                            ,@acc)                       
              
                    bftMult'#1#(tuple#2(@elem =  [1] @acc + [2]                          
                                     ,@queue)                                            
                                       ,@acc)                                            
                                              >= [1] @acc + [2]                          
                                              =  bftMult'#3#(@elem,@acc,@queue)          
              
                      bftMult'#3#(::(@t,@_@3) =  [1] @acc + [2]                          
                                        ,@acc                                            
                                     ,@queue)                                            
                                              >= [1] @acc + [2]                          
                                              =  bftMult'#4#(@t,@acc,@queue)             
              
              bftMult'#4#(leaf(),@acc,@queue) =  [1] @acc + [2]                          
                                              >= [1] @acc + [2]                          
                                              =  bftMult'#(@queue,@acc)                  
              
                 bftMult'#4#(node(@y,@t1,@t2) =  [1] @acc + [2]                          
                                        ,@acc                                            
                                     ,@queue)                                            
                                              >= [1] @acc + [2]                          
                                              =  bftMult'#5#(enqueue(@t2                 
                                                                    ,enqueue(@t1,@queue))
                                                            ,@acc                        
                                                            ,@y)                         
              
                 bftMult'#5#(@queue',@acc,@y) =  [1] @acc + [2]                          
                                              >= [1] @acc + [2]                          
                                              =  bftMult'#(@queue'                       
                                                          ,matrixMult(@acc,@y))          
              
                 bftMult'#5#(@queue',@acc,@y) =  [1] @acc + [2]                          
                                              >= [1] @acc + [0]                          
                                              =  matrixMult#(@acc,@y)                    
              
                         matrixMult#(@m1,@m2) =  [1] @m1 + [0]                           
                                              >= [1] @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 + [1]                           
                                              >= [1] @ls + [1]                           
                                              =  ::(computeLine(@l,@m2,nil())            
                                                   ,matrixMult(@ls,@m2))                 
              
                      matrixMult#1(nil(),@m2) =  [4]                                     
                                              >= [4]                                     
                                              =  nil()                                   
              
        *** 1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.2.1.1.1 Progress [(?,O(1))]  ***
            Considered Problem:
              Strict DP Rules:
                matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
              Strict TRS Rules:
                
              Weak DP Rules:
                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 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())
              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
                basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
            Applied Processor:
              Assumption
            Proof:
              ()
        
        *** 1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.2.1.2 Progress [(?,O(n^1))]  ***
            Considered Problem:
              Strict DP Rules:
                matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
              Strict TRS Rules:
                
              Weak DP Rules:
                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 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())
              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
                basic terms: {#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#}/{#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, greedy = NoGreedy}}
            Proof:
              We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy} to orient following rules strictly:
                1: 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, greedy = NoGreedy}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.
          *** 1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.2.1.2.1 Progress [(?,O(n^1))]  ***
              Considered Problem:
                Strict DP Rules:
                  matrixMult#(@m1,@m2) -> c_32(matrixMult#1#(@m1,@m2))
                Strict TRS Rules:
                  
                Weak DP Rules:
                  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 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())
                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
                  basic terms: {#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#}/{#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 any intersect of rules of CDG leaf and strict-rules, greedy = NoGreedy}
              Proof:
                We apply a matrix interpretation of kind constructor based matrix interpretation:
                The following argument positions are considered usable:
                  uargs(c_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) = [6]                  
                              p(#add) = [1] x2 + [0]         
                             p(#mult) = [2] x1 + [0]         
                          p(#natmult) = [5]                  
                              p(#neg) = [1] x1 + [4]         
                              p(#pos) = [3]                  
                             p(#pred) = [1] x1 + [2]         
                                p(#s) = [4]                  
                             p(#succ) = [0]                  
                                 p(*) = [0]                  
                                 p(+) = [0]                  
                                p(::) = [1] x2 + [1]         
                     p(appendreverse) = [1] x2 + [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) = [2]                  
                       p(computeLine) = [1] x3 + [5]         
                     p(computeLine#1) = [0]                  
                     p(computeLine#2) = [7]                  
                           p(dequeue) = [0]                  
                         p(dequeue#1) = [0]                  
                         p(dequeue#2) = [0]                  
                           p(enqueue) = [0]                  
                         p(enqueue#1) = [0]                  
                              p(leaf) = [0]                  
                          p(lineMult) = [0]                  
                        p(lineMult#1) = [0]                  
                        p(lineMult#2) = [1] x1 + [0]         
                        p(matrixMult) = [1] x1 + [0]         
                      p(matrixMult#1) = [1] x1 + [0]         
                               p(nil) = [0]                  
                              p(node) = [1] x2 + [1] x3 + [0]
                           p(reverse) = [0]                  
                           p(tuple#2) = [0]                  
                             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'#) = [1] x2 + [2]         
                       p(bftMult'#1#) = [1] x2 + [2]         
                       p(bftMult'#2#) = [0]                  
                       p(bftMult'#3#) = [1] x2 + [2]         
                       p(bftMult'#4#) = [1] x2 + [2]         
                       p(bftMult'#5#) = [1] x2 + [2]         
                      p(computeLine#) = [0]                  
                    p(computeLine#1#) = [0]                  
                    p(computeLine#2#) = [2]                  
                          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#) = [1] x1 + [1]         
                     p(matrixMult#1#) = [1] 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] x2 + [0]         
                              p(c_34) = [0]                  
                              p(c_35) = [0]                  
                              p(c_36) = [0]                  
                              p(c_37) = [0]                  
                              p(c_38) = [0]                  
                              p(c_39) = [0]                  
                              p(c_40) = [2] x1 + [0]         
                              p(c_41) = [0]                  
                              p(c_42) = [0]                  
                              p(c_43) = [0]                  
                              p(c_44) = [0]                  
                              p(c_45) = [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 + [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) = [1] @m1 + [1]               
                                     > [1] @m1 + [0]               
                                     = c_32(matrixMult#1#(@m1,@m2))
                
                
                Following rules are (at-least) weakly oriented:
                         bftMult'#(@queue,@acc) =  [1] @acc + [2]                          
                                                >= [1] @acc + [2]                          
                                                =  bftMult'#1#(bftMult'#2(@queue)          
                                                              ,@acc)                       
                
                      bftMult'#1#(tuple#2(@elem =  [1] @acc + [2]                          
                                       ,@queue)                                            
                                         ,@acc)                                            
                                                >= [1] @acc + [2]                          
                                                =  bftMult'#3#(@elem,@acc,@queue)          
                
                        bftMult'#3#(::(@t,@_@3) =  [1] @acc + [2]                          
                                          ,@acc                                            
                                       ,@queue)                                            
                                                >= [1] @acc + [2]                          
                                                =  bftMult'#4#(@t,@acc,@queue)             
                
                bftMult'#4#(leaf(),@acc,@queue) =  [1] @acc + [2]                          
                                                >= [1] @acc + [2]                          
                                                =  bftMult'#(@queue,@acc)                  
                
                   bftMult'#4#(node(@y,@t1,@t2) =  [1] @acc + [2]                          
                                          ,@acc                                            
                                       ,@queue)                                            
                                                >= [1] @acc + [2]                          
                                                =  bftMult'#5#(enqueue(@t2                 
                                                                      ,enqueue(@t1,@queue))
                                                              ,@acc                        
                                                              ,@y)                         
                
                   bftMult'#5#(@queue',@acc,@y) =  [1] @acc + [2]                          
                                                >= [1] @acc + [2]                          
                                                =  bftMult'#(@queue'                       
                                                            ,matrixMult(@acc,@y))          
                
                   bftMult'#5#(@queue',@acc,@y) =  [1] @acc + [2]                          
                                                >= [1] @acc + [1]                          
                                                =  matrixMult#(@acc,@y)                    
                
                  matrixMult#1#(::(@l,@ls),@m2) =  [1] @ls + [1]                           
                                                >= [1] @ls + [1]                           
                                                =  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) =  [0]                                     
                                                >= [0]                                     
                                                =  nil()                                   
                
          *** 1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.2.1.2.1.1 Progress [(?,O(1))]  ***
              Considered Problem:
                Strict DP Rules:
                  
                Strict TRS Rules:
                  
                Weak DP Rules:
                  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 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())
                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
                  basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
              Applied Processor:
                Assumption
              Proof:
                ()
          
          *** 1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.2.1.2.2 Progress [(O(1),O(1))]  ***
              Considered Problem:
                Strict DP Rules:
                  
                Strict TRS Rules:
                  
                Weak DP Rules:
                  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 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())
                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
                  basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
              Applied Processor:
                RemoveWeakSuffixes
              Proof:
                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))              
          *** 1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.2.1.2.2.1 Progress [(O(1),O(1))]  ***
              Considered Problem:
                Strict DP Rules:
                  
                Strict TRS Rules:
                  
                Weak DP Rules:
                  
                Weak TRS 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())
                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
                  basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
              Applied Processor:
                EmptyProcessor
              Proof:
                The problem is already closed. The intended complexity is O(1).
          
      *** 1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.2.2 Progress [(?,O(n^1))]  ***
          Considered Problem:
            Strict DP Rules:
              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()))
            Strict TRS Rules:
              
            Weak DP Rules:
              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 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())
            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
              basic terms: {#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#}/{#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, greedy = NoGreedy}}
          Proof:
            We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy} to orient following rules strictly:
              2: computeLine#1#(::(@x,@xs)                      
                               ,@acc                            
                               ,@m) -> c_16(computeLine#2#(@m   
                                                          ,@acc 
                                                          ,@x   
                                                          ,@xs))
              5: 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:  computeLine#2#(::(@l,@ls)                                     
                                ,@acc                                           
                                ,@x                                             
                                ,@xs) -> c_18(computeLine#(@xs                  
                                                          ,@ls                  
                                                          ,lineMult(@x,@l,@acc))
                                             ,lineMult#(@x,@l,@acc))            
              4:  lineMult#(@n,@l1,@l2) ->                                      
                    c_27(lineMult#1#(@l1,@l2,@n))                               
              5:  lineMult#1#(::(@x,@xs)                                        
                             ,@l2                                               
                             ,@n) -> c_28(lineMult#2#(@l2                       
                                                     ,@n                        
                                                     ,@x                        
                                                     ,@xs))                     
              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()))                               
              8:  bftMult'#(@queue,@acc) ->                                     
                    bftMult'#1#(bftMult'#2(@queue)                              
                               ,@acc)                                           
              9:  bftMult'#1#(tuple#2(@elem                                     
                                     ,@queue)                                   
                             ,@acc) -> bftMult'#3#(@elem                        
                                                  ,@acc                         
                                                  ,@queue)                      
              10: bftMult'#3#(::(@t,@_@3)                                       
                             ,@acc                                              
                             ,@queue) -> bftMult'#4#(@t                         
                                                    ,@acc                       
                                                    ,@queue)                    
              11: bftMult'#4#(leaf()                                            
                             ,@acc                                              
                             ,@queue) -> bftMult'#(@queue                       
                                                  ,@acc)                        
              12: bftMult'#4#(node(@y,@t1,@t2)                                  
                             ,@acc                                              
                             ,@queue) ->                                        
                    bftMult'#5#(enqueue(@t2                                     
                                       ,enqueue(@t1,@queue))                    
                               ,@acc                                            
                               ,@y)                                             
              13: bftMult'#5#(@queue',@acc,@y) ->                               
                    bftMult'#(@queue'                                           
                             ,matrixMult(@acc,@y))                              
              14: bftMult'#5#(@queue',@acc,@y) ->                               
                    matrixMult#(@acc,@y)                                        
              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 = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy}induces the complexity certificateTIME (?,O(n^1))
            SPACE(?,?)on application of the dependency pairs
              {2,5}
            These cover all (indirect) predecessors of dependency pairs
              {2,3,4,5,6,7}
            their number of applications is equally bounded.
            The dependency pairs are shifted into the weak component.
        *** 1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.2.2.1 Progress [(?,O(n^1))]  ***
            Considered Problem:
              Strict DP Rules:
                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()))
              Strict TRS Rules:
                
              Weak DP Rules:
                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 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())
              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
                basic terms: {#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#}/{#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 any intersect of rules of CDG leaf and strict-rules, greedy = NoGreedy}
            Proof:
              We apply a matrix interpretation of kind constructor based matrix interpretation:
              The following argument positions are considered usable:
                uargs(c_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]                           
                            p(#add) = [1] x1 + [1]                  
                           p(#mult) = [1] x2 + [0]                  
                        p(#natmult) = [4] x2 + [0]                  
                            p(#neg) = [1] x1 + [0]                  
                            p(#pos) = [1] x1 + [4]                  
                           p(#pred) = [0]                           
                              p(#s) = [0]                           
                           p(#succ) = [5]                           
                               p(*) = [1] x1 + [4] x2 + [0]         
                               p(+) = [0]                           
                              p(::) = [1] x1 + [1] x2 + [1]         
                   p(appendreverse) = [1] x1 + [1] x2 + [0]         
                 p(appendreverse#1) = [1] x1 + [1] x2 + [0]         
                         p(bftMult) = [1] x1 + [1] x2 + [4]         
                        p(bftMult') = [2]                           
                      p(bftMult'#1) = [0]                           
                      p(bftMult'#2) = [1] x1 + [0]                  
                      p(bftMult'#3) = [4] x1 + [1]                  
                      p(bftMult'#4) = [4] x1 + [1] x2 + [4]         
                      p(bftMult'#5) = [1]                           
                     p(computeLine) = [4] x1 + [1] x3 + [4]         
                   p(computeLine#1) = [1] x1 + [1]                  
                   p(computeLine#2) = [1] x1 + [4] x3 + [3]         
                         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) = [4] x1 + [0]                  
                      p(lineMult#1) = [0]                           
                      p(lineMult#2) = [1] x4 + [1]                  
                      p(matrixMult) = [1]                           
                    p(matrixMult#1) = [5] x1 + [2] x2 + [7]         
                             p(nil) = [0]                           
                            p(node) = [1] x1 + [1] x2 + [1] x3 + [1]
                         p(reverse) = [1] x1 + [0]                  
                         p(tuple#2) = [1] x1 + [1] x2 + [0]         
                           p(#add#) = [0]                           
                          p(#mult#) = [1] x2 + [2]                  
                       p(#natmult#) = [2] x2 + [1]                  
                          p(#pred#) = [2] x1 + [1]                  
                          p(#succ#) = [1] x1 + [1]                  
                              p(*#) = [2]                           
                              p(+#) = [1] x2 + [1]                  
                  p(appendreverse#) = [0]                           
                p(appendreverse#1#) = [0]                           
                        p(bftMult#) = [0]                           
                       p(bftMult'#) = [4] x1 + [1]                  
                     p(bftMult'#1#) = [4] x1 + [1]                  
                     p(bftMult'#2#) = [0]                           
                     p(bftMult'#3#) = [4] x1 + [4] x3 + [1]         
                     p(bftMult'#4#) = [4] x1 + [4] x3 + [5]         
                     p(bftMult'#5#) = [4] x1 + [4] x3 + [1]         
                    p(computeLine#) = [4] x2 + [1]                  
                  p(computeLine#1#) = [4] x3 + [1]                  
                  p(computeLine#2#) = [4] x1 + [0]                  
                        p(dequeue#) = [0]                           
                      p(dequeue#1#) = [0]                           
                      p(dequeue#2#) = [0]                           
                        p(enqueue#) = [0]                           
                      p(enqueue#1#) = [1] x2 + [0]                  
                       p(lineMult#) = [2] x2 + [0]                  
                     p(lineMult#1#) = [2] x1 + [0]                  
                     p(lineMult#2#) = [1] x3 + [2] x4 + [0]         
                     p(matrixMult#) = [4] x2 + [1]                  
                   p(matrixMult#1#) = [4] x2 + [1]                  
                        p(reverse#) = [1]                           
                             p(c_1) = [2]                           
                             p(c_2) = [1]                           
                             p(c_3) = [1] x1 + [0]                  
                             p(c_4) = [0]                           
                             p(c_5) = [1]                           
                             p(c_6) = [2] x1 + [0]                  
                             p(c_7) = [2] x1 + [2]                  
                             p(c_8) = [2] x1 + [1]                  
                             p(c_9) = [2]                           
                            p(c_10) = [1] x1 + [1]                  
                            p(c_11) = [1]                           
                            p(c_12) = [4] x1 + [0]                  
                            p(c_13) = [4]                           
                            p(c_14) = [1] x2 + [0]                  
                            p(c_15) = [1] x1 + [0]                  
                            p(c_16) = [1] x1 + [0]                  
                            p(c_17) = [1]                           
                            p(c_18) = [1] x1 + [2] x2 + [3]         
                            p(c_19) = [4]                           
                            p(c_20) = [0]                           
                            p(c_21) = [1]                           
                            p(c_22) = [1] x1 + [0]                  
                            p(c_23) = [0]                           
                            p(c_24) = [2]                           
                            p(c_25) = [1] x1 + [1]                  
                            p(c_26) = [1]                           
                            p(c_27) = [1] x1 + [0]                  
                            p(c_28) = [1] x1 + [0]                  
                            p(c_29) = [2]                           
                            p(c_30) = [1] x1 + [0]                  
                            p(c_31) = [1] x1 + [0]                  
                            p(c_32) = [2] x1 + [1]                  
                            p(c_33) = [2]                           
                            p(c_34) = [2]                           
                            p(c_35) = [1]                           
                            p(c_36) = [2]                           
                            p(c_37) = [0]                           
                            p(c_38) = [1]                           
                            p(c_39) = [1] x1 + [0]                  
                            p(c_40) = [2] x2 + [2]                  
                            p(c_41) = [4]                           
                            p(c_42) = [1]                           
                            p(c_43) = [0]                           
                            p(c_44) = [0]                           
                            p(c_45) = [1] x1 + [1]                  
                            p(c_46) = [1]                           
                            p(c_47) = [4]                           
                            p(c_48) = [1] x1 + [0]                  
                            p(c_49) = [2]                           
                            p(c_50) = [1]                           
                            p(c_51) = [2] x1 + [4] x2 + [2]         
                            p(c_52) = [1]                           
                            p(c_53) = [1]                           
                            p(c_54) = [1]                           
                            p(c_55) = [2]                           
                            p(c_56) = [0]                           
                            p(c_57) = [4]                           
                            p(c_58) = [0]                           
                            p(c_59) = [2]                           
              
              Following rules are strictly oriented:
                   computeLine#1#(::(@x,@xs) = [4] @m + [1]                    
                                       ,@acc                                   
                                        ,@m)                                   
                                             > [4] @m + [0]                    
                                             = c_16(computeLine#2#(@m          
                                                                  ,@acc        
                                                                  ,@x          
                                                                  ,@xs))       
              
              lineMult#1#(::(@x,@xs),@l2,@n) = [2] @x + [2] @xs + [2]          
                                             > [1] @x + [2] @xs + [0]          
                                             = c_28(lineMult#2#(@l2,@n,@x,@xs))
              
              
              Following rules are (at-least) weakly oriented:
                        bftMult'#(@queue,@acc) =  [4] @queue + [1]                             
                                               >= [4] @queue + [1]                             
                                               =  bftMult'#1#(bftMult'#2(@queue)               
                                                             ,@acc)                            
              
                     bftMult'#1#(tuple#2(@elem =  [4] @elem + [4] @queue + [1]                 
                                      ,@queue)                                                 
                                        ,@acc)                                                 
                                               >= [4] @elem + [4] @queue + [1]                 
                                               =  bftMult'#3#(@elem,@acc,@queue)               
              
                       bftMult'#3#(::(@t,@_@3) =  [4] @_@3 + [4] @queue + [4] @t + [5]         
                                         ,@acc                                                 
                                      ,@queue)                                                 
                                               >= [4] @queue + [4] @t + [5]                    
                                               =  bftMult'#4#(@t,@acc,@queue)                  
              
               bftMult'#4#(leaf(),@acc,@queue) =  [4] @queue + [5]                             
                                               >= [4] @queue + [1]                             
                                               =  bftMult'#(@queue,@acc)                       
              
                  bftMult'#4#(node(@y,@t1,@t2) =  [4] @queue + [4] @t1 + [4] @t2 + [4] @y + [9]
                                         ,@acc                                                 
                                      ,@queue)                                                 
                                               >= [4] @queue + [4] @t1 + [4] @t2 + [4] @y + [9]
                                               =  bftMult'#5#(enqueue(@t2                      
                                                                     ,enqueue(@t1,@queue))     
                                                             ,@acc                             
                                                             ,@y)                              
              
                  bftMult'#5#(@queue',@acc,@y) =  [4] @queue' + [4] @y + [1]                   
                                               >= [4] @queue' + [1]                            
                                               =  bftMult'#(@queue'                            
                                                           ,matrixMult(@acc,@y))               
              
                  bftMult'#5#(@queue',@acc,@y) =  [4] @queue' + [4] @y + [1]                   
                                               >= [4] @y + [1]                                 
                                               =  matrixMult#(@acc,@y)                         
              
                   computeLine#(@line,@m,@acc) =  [4] @m + [1]                                 
                                               >= [4] @m + [1]                                 
                                               =  c_15(computeLine#1#(@line                    
                                                                     ,@acc                     
                                                                     ,@m))                     
              
                     computeLine#2#(::(@l,@ls) =  [4] @l + [4] @ls + [4]                       
                                         ,@acc                                                 
                                           ,@x                                                 
                                         ,@xs)                                                 
                                               >= [4] @l + [4] @ls + [4]                       
                                               =  c_18(computeLine#(@xs                        
                                                                   ,@ls                        
                                                                   ,lineMult(@x,@l,@acc))      
                                                      ,lineMult#(@x,@l,@acc))                  
              
                         lineMult#(@n,@l1,@l2) =  [2] @l1 + [0]                                
                                               >= [2] @l1 + [0]                                
                                               =  c_27(lineMult#1#(@l1,@l2,@n))                
              
                        lineMult#2#(::(@y,@ys) =  [1] @x + [2] @xs + [0]                       
                                           ,@n                                                 
                                           ,@x                                                 
                                         ,@xs)                                                 
                                               >= [2] @xs + [0]                                
                                               =  c_30(lineMult#(@n,@xs,@ys))                  
              
                  lineMult#2#(nil(),@n,@x,@xs) =  [1] @x + [2] @xs + [0]                       
                                               >= [2] @xs + [0]                                
                                               =  c_31(lineMult#(@n,@xs,nil()))                
              
                          matrixMult#(@m1,@m2) =  [4] @m2 + [1]                                
                                               >= [4] @m2 + [1]                                
                                               =  matrixMult#1#(@m1,@m2)                       
              
                 matrixMult#1#(::(@l,@ls),@m2) =  [4] @m2 + [1]                                
                                               >= [4] @m2 + [1]                                
                                               =  computeLine#(@l,@m2,nil())                   
              
                 matrixMult#1#(::(@l,@ls),@m2) =  [4] @m2 + [1]                                
                                               >= [4] @m2 + [1]                                
                                               =  matrixMult#(@ls,@m2)                         
              
              appendreverse(@toreverse,@sofar) =  [1] @sofar + [1] @toreverse + [0]            
                                               >= [1] @sofar + [1] @toreverse + [0]            
                                               =  appendreverse#1(@toreverse                   
                                                                 ,@sofar)                      
              
                    appendreverse#1(::(@a,@as) =  [1] @a + [1] @as + [1] @sofar + [1]          
                                      ,@sofar)                                                 
                                               >= [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 =  [1] @dequeue@1 + [1] @dequeue@2 + [0]        
                                 ,@dequeue@2))                                                 
                                               >= [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) =  [1] @inq + [1] @outq + [1] @t + [1]          
                                          ,@t)                                                 
                                               >= [1] @inq + [1] @outq + [1] @t + [1]          
                                               =  tuple#2(@outq,::(@t,@inq))                   
              
                                  reverse(@xs) =  [1] @xs + [0]                                
                                               >= [1] @xs + [0]                                
                                               =  appendreverse(@xs,nil())                     
              
        *** 1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.2.2.1.1 Progress [(?,O(1))]  ***
            Considered Problem:
              Strict DP Rules:
                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)),lineMult#(@x,@l,@acc))
                lineMult#(@n,@l1,@l2) -> c_27(lineMult#1#(@l1,@l2,@n))
                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()))
              Strict TRS Rules:
                
              Weak DP Rules:
                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#1#(::(@x,@xs),@acc,@m) -> c_16(computeLine#2#(@m,@acc,@x,@xs))
                lineMult#1#(::(@x,@xs),@l2,@n) -> c_28(lineMult#2#(@l2,@n,@x,@xs))
                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 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())
              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
                basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
            Applied Processor:
              Assumption
            Proof:
              ()
        
        *** 1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.2.2.2 Progress [(?,O(n^1))]  ***
            Considered Problem:
              Strict DP Rules:
                computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
              Strict TRS Rules:
                
              Weak DP Rules:
                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#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) -> matrixMult#1#(@m1,@m2)
                matrixMult#1#(::(@l,@ls),@m2) -> computeLine#(@l,@m2,nil())
                matrixMult#1#(::(@l,@ls),@m2) -> matrixMult#(@ls,@m2)
              Weak TRS 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())
              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
                basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
            Applied Processor:
              RemoveWeakSuffixes
            Proof:
              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)):9
                
                2:W:bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
                   -->_1 bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue):3
                
                3: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):4
                
                4: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):6
                   -->_1 bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc):5
                
                5:W:bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
                   -->_1 bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc):2
                
                6: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):8
                   -->_1 bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y)):7
                
                7:W:bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
                   -->_1 bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc):2
                
                8:W:bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
                   -->_1 matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2):15
                
                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)),lineMult#(@x,@l,@acc)):10
                
                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)) 
        *** 1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.2.2.2.1 Progress [(?,O(n^1))]  ***
            Considered Problem:
              Strict DP Rules:
                computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
              Strict TRS Rules:
                
              Weak DP Rules:
                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#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))
                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 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())
              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
                basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
            Applied Processor:
              SimplifyRHS
            Proof:
              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)):9
                
                2:W:bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc)
                   -->_1 bftMult'#1#(tuple#2(@elem,@queue),@acc) -> bftMult'#3#(@elem,@acc,@queue):3
                
                3: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):4
                
                4: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):6
                   -->_1 bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc):5
                
                5:W:bftMult'#4#(leaf(),@acc,@queue) -> bftMult'#(@queue,@acc)
                   -->_1 bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc):2
                
                6: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):8
                   -->_1 bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y)):7
                
                7:W:bftMult'#5#(@queue',@acc,@y) -> bftMult'#(@queue',matrixMult(@acc,@y))
                   -->_1 bftMult'#(@queue,@acc) -> bftMult'#1#(bftMult'#2(@queue),@acc):2
                
                8:W:bftMult'#5#(@queue',@acc,@y) -> matrixMult#(@acc,@y)
                   -->_1 matrixMult#(@m1,@m2) -> matrixMult#1#(@m1,@m2):15
                
                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)),lineMult#(@x,@l,@acc)):10
                
                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)))
        *** 1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.2.2.2.1.1 Progress [(?,O(n^1))]  ***
            Considered Problem:
              Strict DP Rules:
                computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
              Strict TRS Rules:
                
              Weak DP Rules:
                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#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 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())
              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
                basic terms: {#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#}/{#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, greedy = NoGreedy}}
            Proof:
              We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy} to orient following rules strictly:
                1: 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:  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:  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)))
                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 = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy}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,10}
              their number of applications is equally bounded.
              The dependency pairs are shifted into the weak component.
          *** 1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.2.2.2.1.1.1 Progress [(?,O(n^1))]  ***
              Considered Problem:
                Strict DP Rules:
                  computeLine#(@line,@m,@acc) -> c_15(computeLine#1#(@line,@acc,@m))
                Strict TRS Rules:
                  
                Weak DP Rules:
                  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#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 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())
                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
                  basic terms: {#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#}/{#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 any intersect of rules of CDG leaf and strict-rules, greedy = NoGreedy}
              Proof:
                We apply a matrix interpretation of kind constructor based matrix interpretation:
                The following argument positions are considered usable:
                  uargs(c_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) = [1]                           
                              p(#add) = [2]                           
                             p(#mult) = [4] x1 + [0]                  
                          p(#natmult) = [2] x1 + [1] x2 + [0]         
                              p(#neg) = [0]                           
                              p(#pos) = [0]                           
                             p(#pred) = [1] x1 + [0]                  
                                p(#s) = [3]                           
                             p(#succ) = [2] x1 + [0]                  
                                 p(*) = [0]                           
                                 p(+) = [2]                           
                                p(::) = [1] x1 + [1] x2 + [2]         
                     p(appendreverse) = [1] x1 + [1] x2 + [0]         
                   p(appendreverse#1) = [1] x1 + [1] x2 + [0]         
                           p(bftMult) = [1] x2 + [0]                  
                          p(bftMult') = [1] x2 + [2]                  
                        p(bftMult'#1) = [1] x1 + [1]                  
                        p(bftMult'#2) = [1] x1 + [0]                  
                        p(bftMult'#3) = [1] x1 + [2] x3 + [2]         
                        p(bftMult'#4) = [1] x2 + [1]                  
                        p(bftMult'#5) = [1] x1 + [0]                  
                       p(computeLine) = [0]                           
                     p(computeLine#1) = [0]                           
                     p(computeLine#2) = [1] x2 + [2] x3 + [1] x4 + [0]
                           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 + [2]         
                         p(enqueue#1) = [1] x1 + [1] x2 + [2]         
                              p(leaf) = [0]                           
                          p(lineMult) = [0]                           
                        p(lineMult#1) = [0]                           
                        p(lineMult#2) = [1] x2 + [2]                  
                        p(matrixMult) = [1] x1 + [6]                  
                      p(matrixMult#1) = [1] x1 + [3]                  
                               p(nil) = [0]                           
                              p(node) = [1] x1 + [1] x2 + [1] x3 + [5]
                           p(reverse) = [1] x1 + [0]                  
                           p(tuple#2) = [1] x1 + [1] x2 + [0]         
                             p(#add#) = [1] x1 + [0]                  
                            p(#mult#) = [0]                           
                         p(#natmult#) = [4] x1 + [1] x2 + [1]         
                            p(#pred#) = [4]                           
                            p(#succ#) = [1] x1 + [4]                  
                                p(*#) = [1] x2 + [0]                  
                                p(+#) = [1]                           
                    p(appendreverse#) = [1] x1 + [1] x2 + [1]         
                  p(appendreverse#1#) = [1] x2 + [2]                  
                          p(bftMult#) = [1]                           
                         p(bftMult'#) = [3] x1 + [0]                  
                       p(bftMult'#1#) = [3] x1 + [0]                  
                       p(bftMult'#2#) = [1]                           
                       p(bftMult'#3#) = [3] x1 + [3] x3 + [0]         
                       p(bftMult'#4#) = [3] x1 + [3] x3 + [0]         
                       p(bftMult'#5#) = [3] x1 + [3] x3 + [3]         
                      p(computeLine#) = [2] x2 + [2]                  
                    p(computeLine#1#) = [2] x3 + [0]                  
                    p(computeLine#2#) = [2] x1 + [0]                  
                          p(dequeue#) = [1] x1 + [1]                  
                        p(dequeue#1#) = [0]                           
                        p(dequeue#2#) = [0]                           
                          p(enqueue#) = [2] x1 + [0]                  
                        p(enqueue#1#) = [1] x1 + [1] x2 + [1]         
                         p(lineMult#) = [1] x1 + [1] x2 + [1] x3 + [2]
                       p(lineMult#1#) = [1] x2 + [0]                  
                       p(lineMult#2#) = [1] x1 + [0]                  
                       p(matrixMult#) = [3] x2 + [3]                  
                     p(matrixMult#1#) = [3] x2 + [3]                  
                          p(reverse#) = [1] x1 + [0]                  
                               p(c_1) = [2]                           
                               p(c_2) = [1]                           
                               p(c_3) = [0]                           
                               p(c_4) = [2]                           
                               p(c_5) = [1]                           
                               p(c_6) = [1] x1 + [0]                  
                               p(c_7) = [2] x1 + [0]                  
                               p(c_8) = [1] x1 + [0]                  
                               p(c_9) = [0]                           
                              p(c_10) = [2]                           
                              p(c_11) = [0]                           
                              p(c_12) = [1]                           
                              p(c_13) = [1] x1 + [0]                  
                              p(c_14) = [4]                           
                              p(c_15) = [1] x1 + [0]                  
                              p(c_16) = [1] x1 + [0]                  
                              p(c_17) = [1]                           
                              p(c_18) = [1] x1 + [2]                  
                              p(c_19) = [1]                           
                              p(c_20) = [1] x1 + [1]                  
                              p(c_21) = [4]                           
                              p(c_22) = [1] x1 + [0]                  
                              p(c_23) = [0]                           
                              p(c_24) = [1]                           
                              p(c_25) = [0]                           
                              p(c_26) = [4]                           
                              p(c_27) = [1]                           
                              p(c_28) = [1] x1 + [2]                  
                              p(c_29) = [4]                           
                              p(c_30) = [0]                           
                              p(c_31) = [4] x1 + [0]                  
                              p(c_32) = [1]                           
                              p(c_33) = [1] x2 + [1]                  
                              p(c_34) = [0]                           
                              p(c_35) = [1] x1 + [1]                  
                              p(c_36) = [0]                           
                              p(c_37) = [1] x1 + [0]                  
                              p(c_38) = [1] x1 + [1] x2 + [0]         
                              p(c_39) = [2] x1 + [0]                  
                              p(c_40) = [0]                           
                              p(c_41) = [4]                           
                              p(c_42) = [0]                           
                              p(c_43) = [1]                           
                              p(c_44) = [0]                           
                              p(c_45) = [2] x1 + [0]                  
                              p(c_46) = [4] x1 + [1]                  
                              p(c_47) = [1]                           
                              p(c_48) = [4] x1 + [1]                  
                              p(c_49) = [2] x1 + [4]                  
                              p(c_50) = [0]                           
                              p(c_51) = [1] x1 + [0]                  
                              p(c_52) = [1]                           
                              p(c_53) = [4]                           
                              p(c_54) = [0]                           
                              p(c_55) = [0]                           
                              p(c_56) = [0]                           
                              p(c_57) = [0]                           
                              p(c_58) = [4]                           
                              p(c_59) = [2]                           
                
                Following rules are strictly oriented:
                computeLine#(@line,@m,@acc) = [2] @m + [2]             
                                            > [2] @m + [0]             
                                            = c_15(computeLine#1#(@line
                                                                 ,@acc 
                                                                 ,@m)) 
                
                
                Following rules are (at-least) weakly oriented:
                          bftMult'#(@queue,@acc) =  [3] @queue + [0]                              
                                                 >= [3] @queue + [0]                              
                                                 =  bftMult'#1#(bftMult'#2(@queue)                
                                                               ,@acc)                             
                
                       bftMult'#1#(tuple#2(@elem =  [3] @elem + [3] @queue + [0]                  
                                        ,@queue)                                                  
                                          ,@acc)                                                  
                                                 >= [3] @elem + [3] @queue + [0]                  
                                                 =  bftMult'#3#(@elem,@acc,@queue)                
                
                         bftMult'#3#(::(@t,@_@3) =  [3] @_@3 + [3] @queue + [3] @t + [6]          
                                           ,@acc                                                  
                                        ,@queue)                                                  
                                                 >= [3] @queue + [3] @t + [0]                     
                                                 =  bftMult'#4#(@t,@acc,@queue)                   
                
                 bftMult'#4#(leaf(),@acc,@queue) =  [3] @queue + [0]                              
                                                 >= [3] @queue + [0]                              
                                                 =  bftMult'#(@queue,@acc)                        
                
                    bftMult'#4#(node(@y,@t1,@t2) =  [3] @queue + [3] @t1 + [3] @t2 + [3] @y + [15]
                                           ,@acc                                                  
                                        ,@queue)                                                  
                                                 >= [3] @queue + [3] @t1 + [3] @t2 + [3] @y + [15]
                                                 =  bftMult'#5#(enqueue(@t2                       
                                                                       ,enqueue(@t1,@queue))      
                                                               ,@acc                              
                                                               ,@y)                               
                
                    bftMult'#5#(@queue',@acc,@y) =  [3] @queue' + [3] @y + [3]                    
                                                 >= [3] @queue' + [0]                             
                                                 =  bftMult'#(@queue'                             
                                                             ,matrixMult(@acc,@y))                
                
                    bftMult'#5#(@queue',@acc,@y) =  [3] @queue' + [3] @y + [3]                    
                                                 >= [3] @y + [3]                                  
                                                 =  matrixMult#(@acc,@y)                          
                
                       computeLine#1#(::(@x,@xs) =  [2] @m + [0]                                  
                                           ,@acc                                                  
                                            ,@m)                                                  
                                                 >= [2] @m + [0]                                  
                                                 =  c_16(computeLine#2#(@m                        
                                                                       ,@acc                      
                                                                       ,@x                        
                                                                       ,@xs))                     
                
                       computeLine#2#(::(@l,@ls) =  [2] @l + [2] @ls + [4]                        
                                           ,@acc                                                  
                                             ,@x                                                  
                                           ,@xs)                                                  
                                                 >= [2] @ls + [4]                                 
                                                 =  c_18(computeLine#(@xs                         
                                                                     ,@ls                         
                                                                     ,lineMult(@x,@l,@acc)))      
                
                            matrixMult#(@m1,@m2) =  [3] @m2 + [3]                                 
                                                 >= [3] @m2 + [3]                                 
                                                 =  matrixMult#1#(@m1,@m2)                        
                
                   matrixMult#1#(::(@l,@ls),@m2) =  [3] @m2 + [3]                                 
                                                 >= [2] @m2 + [2]                                 
                                                 =  computeLine#(@l,@m2,nil())                    
                
                   matrixMult#1#(::(@l,@ls),@m2) =  [3] @m2 + [3]                                 
                                                 >= [3] @m2 + [3]                                 
                                                 =  matrixMult#(@ls,@m2)                          
                
                appendreverse(@toreverse,@sofar) =  [1] @sofar + [1] @toreverse + [0]             
                                                 >= [1] @sofar + [1] @toreverse + [0]             
                                                 =  appendreverse#1(@toreverse                    
                                                                   ,@sofar)                       
                
                      appendreverse#1(::(@a,@as) =  [1] @a + [1] @as + [1] @sofar + [2]           
                                        ,@sofar)                                                  
                                                 >= [1] @a + [1] @as + [1] @sofar + [2]           
                                                 =  appendreverse(@as,::(@a,@sofar))              
                
                   appendreverse#1(nil(),@sofar) =  [1] @sofar + [0]                              
                                                 >= [1] @sofar + [0]                              
                                                 =  @sofar                                        
                
                   bftMult'#2(tuple#2(@dequeue@1 =  [1] @dequeue@1 + [1] @dequeue@2 + [0]         
                                   ,@dequeue@2))                                                  
                                                 >= [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 + [2]             
                                                 >= [1] @inq + [1] @t + [1] @ts + [2]             
                                                 =  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 + [2]                        
                                                 >= [1] @t + [1] @ts + [2]                        
                                                 =  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 + [2]                     
                                                 >= [1] @queue + [1] @t + [2]                     
                                                 =  enqueue#1(@queue,@t)                          
                
                   enqueue#1(tuple#2(@outq,@inq) =  [1] @inq + [1] @outq + [1] @t + [2]           
                                            ,@t)                                                  
                                                 >= [1] @inq + [1] @outq + [1] @t + [2]           
                                                 =  tuple#2(@outq,::(@t,@inq))                    
                
                                    reverse(@xs) =  [1] @xs + [0]                                 
                                                 >= [1] @xs + [0]                                 
                                                 =  appendreverse(@xs,nil())                      
                
          *** 1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.2.2.2.1.1.1.1 Progress [(?,O(1))]  ***
              Considered Problem:
                Strict DP Rules:
                  
                Strict TRS Rules:
                  
                Weak DP Rules:
                  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 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())
                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
                  basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
              Applied Processor:
                Assumption
              Proof:
                ()
          
          *** 1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.2.2.2.1.1.2 Progress [(O(1),O(1))]  ***
              Considered Problem:
                Strict DP Rules:
                  
                Strict TRS Rules:
                  
                Weak DP Rules:
                  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 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())
                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
                  basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
              Applied Processor:
                RemoveWeakSuffixes
              Proof:
                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))                
          *** 1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.2.2.2.1.1.2.1 Progress [(O(1),O(1))]  ***
              Considered Problem:
                Strict DP Rules:
                  
                Strict TRS Rules:
                  
                Weak DP Rules:
                  
                Weak TRS Rules:
                  #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
                  basic terms: {#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#}/{#0,#neg,#pos,#s,::,leaf,nil,node,tuple#2}
              Applied Processor:
                EmptyProcessor
              Proof:
                The problem is already closed. The intended complexity is O(1).