*** 1 Progress [(?,O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        *(@x,@y) -> #mult(@x,@y)
        +(@x,@y) -> #add(@x,@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()
        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()
      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,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4,matrixMult/2,matrixMult#1/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,nil/0}
      Obligation:
        Innermost
        basic terms: {#add,#mult,#natmult,#pred,#succ,*,+,computeLine,computeLine#1,computeLine#2,lineMult,lineMult#1,lineMult#2,matrixMult,matrixMult#1}/{#0,#neg,#pos,#s,::,nil}
    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))
        computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m))
        computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs))
        computeLine#1#(nil(),@acc,@m) -> c_5()
        computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)),lineMult#(@x,@l,@acc))
        computeLine#2#(nil(),@acc,@x,@xs) -> c_7()
        lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n))
        lineMult#1#(::(@x,@xs),@l2,@n) -> c_9(lineMult#2#(@l2,@n,@x,@xs))
        lineMult#1#(nil(),@l2,@n) -> c_10()
        lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_11(+#(*(@x,@n),@y),*#(@x,@n),lineMult#(@n,@xs,@ys))
        lineMult#2#(nil(),@n,@x,@xs) -> c_12(*#(@x,@n),lineMult#(@n,@xs,nil()))
        matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
        matrixMult#1#(::(@l,@ls),@m2) -> c_14(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
        matrixMult#1#(nil(),@m2) -> c_15()
      Weak DPs
        #add#(#0(),@y) -> c_16()
        #add#(#neg(#s(#0())),@y) -> c_17(#pred#(@y))
        #add#(#neg(#s(#s(@x))),@y) -> c_18(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
        #add#(#pos(#s(#0())),@y) -> c_19(#succ#(@y))
        #add#(#pos(#s(#s(@x))),@y) -> c_20(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
        #mult#(#0(),#0()) -> c_21()
        #mult#(#0(),#neg(@y)) -> c_22()
        #mult#(#0(),#pos(@y)) -> c_23()
        #mult#(#neg(@x),#0()) -> c_24()
        #mult#(#neg(@x),#neg(@y)) -> c_25(#natmult#(@x,@y))
        #mult#(#neg(@x),#pos(@y)) -> c_26(#natmult#(@x,@y))
        #mult#(#pos(@x),#0()) -> c_27()
        #mult#(#pos(@x),#neg(@y)) -> c_28(#natmult#(@x,@y))
        #mult#(#pos(@x),#pos(@y)) -> c_29(#natmult#(@x,@y))
        #natmult#(#0(),@y) -> c_30()
        #natmult#(#s(@x),@y) -> c_31(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y))
        #pred#(#0()) -> c_32()
        #pred#(#neg(#s(@x))) -> c_33()
        #pred#(#pos(#s(#0()))) -> c_34()
        #pred#(#pos(#s(#s(@x)))) -> c_35()
        #succ#(#0()) -> c_36()
        #succ#(#neg(#s(#0()))) -> c_37()
        #succ#(#neg(#s(#s(@x)))) -> c_38()
        #succ#(#pos(#s(@x))) -> c_39()
      
      and mark the set of starting terms.
*** 1.1 Progress [(?,O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        *#(@x,@y) -> c_1(#mult#(@x,@y))
        +#(@x,@y) -> c_2(#add#(@x,@y))
        computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m))
        computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs))
        computeLine#1#(nil(),@acc,@m) -> c_5()
        computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)),lineMult#(@x,@l,@acc))
        computeLine#2#(nil(),@acc,@x,@xs) -> c_7()
        lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n))
        lineMult#1#(::(@x,@xs),@l2,@n) -> c_9(lineMult#2#(@l2,@n,@x,@xs))
        lineMult#1#(nil(),@l2,@n) -> c_10()
        lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_11(+#(*(@x,@n),@y),*#(@x,@n),lineMult#(@n,@xs,@ys))
        lineMult#2#(nil(),@n,@x,@xs) -> c_12(*#(@x,@n),lineMult#(@n,@xs,nil()))
        matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
        matrixMult#1#(::(@l,@ls),@m2) -> c_14(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
        matrixMult#1#(nil(),@m2) -> c_15()
      Strict TRS Rules:
        
      Weak DP Rules:
        #add#(#0(),@y) -> c_16()
        #add#(#neg(#s(#0())),@y) -> c_17(#pred#(@y))
        #add#(#neg(#s(#s(@x))),@y) -> c_18(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
        #add#(#pos(#s(#0())),@y) -> c_19(#succ#(@y))
        #add#(#pos(#s(#s(@x))),@y) -> c_20(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
        #mult#(#0(),#0()) -> c_21()
        #mult#(#0(),#neg(@y)) -> c_22()
        #mult#(#0(),#pos(@y)) -> c_23()
        #mult#(#neg(@x),#0()) -> c_24()
        #mult#(#neg(@x),#neg(@y)) -> c_25(#natmult#(@x,@y))
        #mult#(#neg(@x),#pos(@y)) -> c_26(#natmult#(@x,@y))
        #mult#(#pos(@x),#0()) -> c_27()
        #mult#(#pos(@x),#neg(@y)) -> c_28(#natmult#(@x,@y))
        #mult#(#pos(@x),#pos(@y)) -> c_29(#natmult#(@x,@y))
        #natmult#(#0(),@y) -> c_30()
        #natmult#(#s(@x),@y) -> c_31(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y))
        #pred#(#0()) -> c_32()
        #pred#(#neg(#s(@x))) -> c_33()
        #pred#(#pos(#s(#0()))) -> c_34()
        #pred#(#pos(#s(#s(@x)))) -> c_35()
        #succ#(#0()) -> c_36()
        #succ#(#neg(#s(#0()))) -> c_37()
        #succ#(#neg(#s(#s(@x)))) -> c_38()
        #succ#(#pos(#s(@x))) -> c_39()
      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)
        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()
        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()
      Signature:
        {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4,matrixMult/2,matrixMult#1/2,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/3,c_12/2,c_13/1,c_14/2,c_15/0,c_16/0,c_17/1,c_18/2,c_19/1,c_20/2,c_21/0,c_22/0,c_23/0,c_24/0,c_25/1,c_26/1,c_27/0,c_28/1,c_29/1,c_30/0,c_31/2,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0}
      Obligation:
        Innermost
        basic terms: {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#}/{#0,#neg,#pos,#s,::,nil}
    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)
        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()))
        #add#(#0(),@y) -> c_16()
        #add#(#neg(#s(#0())),@y) -> c_17(#pred#(@y))
        #add#(#neg(#s(#s(@x))),@y) -> c_18(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
        #add#(#pos(#s(#0())),@y) -> c_19(#succ#(@y))
        #add#(#pos(#s(#s(@x))),@y) -> c_20(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
        #mult#(#0(),#0()) -> c_21()
        #mult#(#0(),#neg(@y)) -> c_22()
        #mult#(#0(),#pos(@y)) -> c_23()
        #mult#(#neg(@x),#0()) -> c_24()
        #mult#(#neg(@x),#neg(@y)) -> c_25(#natmult#(@x,@y))
        #mult#(#neg(@x),#pos(@y)) -> c_26(#natmult#(@x,@y))
        #mult#(#pos(@x),#0()) -> c_27()
        #mult#(#pos(@x),#neg(@y)) -> c_28(#natmult#(@x,@y))
        #mult#(#pos(@x),#pos(@y)) -> c_29(#natmult#(@x,@y))
        #natmult#(#0(),@y) -> c_30()
        #natmult#(#s(@x),@y) -> c_31(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y))
        #pred#(#0()) -> c_32()
        #pred#(#neg(#s(@x))) -> c_33()
        #pred#(#pos(#s(#0()))) -> c_34()
        #pred#(#pos(#s(#s(@x)))) -> c_35()
        #succ#(#0()) -> c_36()
        #succ#(#neg(#s(#0()))) -> c_37()
        #succ#(#neg(#s(#s(@x)))) -> c_38()
        #succ#(#pos(#s(@x))) -> c_39()
        *#(@x,@y) -> c_1(#mult#(@x,@y))
        +#(@x,@y) -> c_2(#add#(@x,@y))
        computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m))
        computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs))
        computeLine#1#(nil(),@acc,@m) -> c_5()
        computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)),lineMult#(@x,@l,@acc))
        computeLine#2#(nil(),@acc,@x,@xs) -> c_7()
        lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n))
        lineMult#1#(::(@x,@xs),@l2,@n) -> c_9(lineMult#2#(@l2,@n,@x,@xs))
        lineMult#1#(nil(),@l2,@n) -> c_10()
        lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_11(+#(*(@x,@n),@y),*#(@x,@n),lineMult#(@n,@xs,@ys))
        lineMult#2#(nil(),@n,@x,@xs) -> c_12(*#(@x,@n),lineMult#(@n,@xs,nil()))
        matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
        matrixMult#1#(::(@l,@ls),@m2) -> c_14(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
        matrixMult#1#(nil(),@m2) -> c_15()
*** 1.1.1 Progress [(?,O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        *#(@x,@y) -> c_1(#mult#(@x,@y))
        +#(@x,@y) -> c_2(#add#(@x,@y))
        computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m))
        computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs))
        computeLine#1#(nil(),@acc,@m) -> c_5()
        computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)),lineMult#(@x,@l,@acc))
        computeLine#2#(nil(),@acc,@x,@xs) -> c_7()
        lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n))
        lineMult#1#(::(@x,@xs),@l2,@n) -> c_9(lineMult#2#(@l2,@n,@x,@xs))
        lineMult#1#(nil(),@l2,@n) -> c_10()
        lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_11(+#(*(@x,@n),@y),*#(@x,@n),lineMult#(@n,@xs,@ys))
        lineMult#2#(nil(),@n,@x,@xs) -> c_12(*#(@x,@n),lineMult#(@n,@xs,nil()))
        matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
        matrixMult#1#(::(@l,@ls),@m2) -> c_14(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
        matrixMult#1#(nil(),@m2) -> c_15()
      Strict TRS Rules:
        
      Weak DP Rules:
        #add#(#0(),@y) -> c_16()
        #add#(#neg(#s(#0())),@y) -> c_17(#pred#(@y))
        #add#(#neg(#s(#s(@x))),@y) -> c_18(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
        #add#(#pos(#s(#0())),@y) -> c_19(#succ#(@y))
        #add#(#pos(#s(#s(@x))),@y) -> c_20(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
        #mult#(#0(),#0()) -> c_21()
        #mult#(#0(),#neg(@y)) -> c_22()
        #mult#(#0(),#pos(@y)) -> c_23()
        #mult#(#neg(@x),#0()) -> c_24()
        #mult#(#neg(@x),#neg(@y)) -> c_25(#natmult#(@x,@y))
        #mult#(#neg(@x),#pos(@y)) -> c_26(#natmult#(@x,@y))
        #mult#(#pos(@x),#0()) -> c_27()
        #mult#(#pos(@x),#neg(@y)) -> c_28(#natmult#(@x,@y))
        #mult#(#pos(@x),#pos(@y)) -> c_29(#natmult#(@x,@y))
        #natmult#(#0(),@y) -> c_30()
        #natmult#(#s(@x),@y) -> c_31(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y))
        #pred#(#0()) -> c_32()
        #pred#(#neg(#s(@x))) -> c_33()
        #pred#(#pos(#s(#0()))) -> c_34()
        #pred#(#pos(#s(#s(@x)))) -> c_35()
        #succ#(#0()) -> c_36()
        #succ#(#neg(#s(#0()))) -> c_37()
        #succ#(#neg(#s(#s(@x)))) -> c_38()
        #succ#(#pos(#s(@x))) -> c_39()
      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)
        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()))
      Signature:
        {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4,matrixMult/2,matrixMult#1/2,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/3,c_12/2,c_13/1,c_14/2,c_15/0,c_16/0,c_17/1,c_18/2,c_19/1,c_20/2,c_21/0,c_22/0,c_23/0,c_24/0,c_25/1,c_26/1,c_27/0,c_28/1,c_29/1,c_30/0,c_31/2,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0}
      Obligation:
        Innermost
        basic terms: {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#}/{#0,#neg,#pos,#s,::,nil}
    Applied Processor:
      PredecessorEstimation {onSelection = all simple predecessor estimation selector}
    Proof:
      We estimate the number of application of
        {1,2,5,7,10,15}
      by application of
        Pre({1,2,5,7,10,15}) = {3,4,8,11,12,13}.
      Here rules are labelled as follows:
        1:  *#(@x,@y) -> c_1(#mult#(@x,@y))                              
        2:  +#(@x,@y) -> c_2(#add#(@x,@y))                               
        3:  computeLine#(@line,@m,@acc) ->                               
              c_3(computeLine#1#(@line                                   
                                ,@acc                                    
                                ,@m))                                    
        4:  computeLine#1#(::(@x,@xs)                                    
                          ,@acc                                          
                          ,@m) -> c_4(computeLine#2#(@m                  
                                                    ,@acc                
                                                    ,@x                  
                                                    ,@xs))               
        5:  computeLine#1#(nil(),@acc,@m) ->                             
              c_5()                                                      
        6:  computeLine#2#(::(@l,@ls)                                    
                          ,@acc                                          
                          ,@x                                            
                          ,@xs) -> c_6(computeLine#(@xs                  
                                                   ,@ls                  
                                                   ,lineMult(@x,@l,@acc))
                                      ,lineMult#(@x,@l,@acc))            
        7:  computeLine#2#(nil()                                         
                          ,@acc                                          
                          ,@x                                            
                          ,@xs) -> c_7()                                 
        8:  lineMult#(@n,@l1,@l2) ->                                     
              c_8(lineMult#1#(@l1,@l2,@n))                               
        9:  lineMult#1#(::(@x,@xs)                                       
                       ,@l2                                              
                       ,@n) -> c_9(lineMult#2#(@l2                       
                                              ,@n                        
                                              ,@x                        
                                              ,@xs))                     
        10: lineMult#1#(nil(),@l2,@n) ->                                 
              c_10()                                                     
        11: lineMult#2#(::(@y,@ys)                                       
                       ,@n                                               
                       ,@x                                               
                       ,@xs) -> c_11(+#(*(@x,@n),@y)                     
                                    ,*#(@x,@n)                           
                                    ,lineMult#(@n,@xs,@ys))              
        12: lineMult#2#(nil(),@n,@x,@xs) ->                              
              c_12(*#(@x,@n)                                             
                  ,lineMult#(@n,@xs,nil()))                              
        13: matrixMult#(@m1,@m2) ->                                      
              c_13(matrixMult#1#(@m1,@m2))                               
        14: matrixMult#1#(::(@l,@ls),@m2) ->                             
              c_14(computeLine#(@l,@m2,nil())                            
                  ,matrixMult#(@ls,@m2))                                 
        15: matrixMult#1#(nil(),@m2) ->                                  
              c_15()                                                     
        16: #add#(#0(),@y) -> c_16()                                     
        17: #add#(#neg(#s(#0())),@y) ->                                  
              c_17(#pred#(@y))                                           
        18: #add#(#neg(#s(#s(@x))),@y) ->                                
              c_18(#pred#(#add(#pos(#s(@x))                              
                              ,@y))                                      
                  ,#add#(#pos(#s(@x)),@y))                               
        19: #add#(#pos(#s(#0())),@y) ->                                  
              c_19(#succ#(@y))                                           
        20: #add#(#pos(#s(#s(@x))),@y) ->                                
              c_20(#succ#(#add(#pos(#s(@x))                              
                              ,@y))                                      
                  ,#add#(#pos(#s(@x)),@y))                               
        21: #mult#(#0(),#0()) -> c_21()                                  
        22: #mult#(#0(),#neg(@y)) -> c_22()                              
        23: #mult#(#0(),#pos(@y)) -> c_23()                              
        24: #mult#(#neg(@x),#0()) -> c_24()                              
        25: #mult#(#neg(@x),#neg(@y)) ->                                 
              c_25(#natmult#(@x,@y))                                     
        26: #mult#(#neg(@x),#pos(@y)) ->                                 
              c_26(#natmult#(@x,@y))                                     
        27: #mult#(#pos(@x),#0()) -> c_27()                              
        28: #mult#(#pos(@x),#neg(@y)) ->                                 
              c_28(#natmult#(@x,@y))                                     
        29: #mult#(#pos(@x),#pos(@y)) ->                                 
              c_29(#natmult#(@x,@y))                                     
        30: #natmult#(#0(),@y) -> c_30()                                 
        31: #natmult#(#s(@x),@y) ->                                      
              c_31(#add#(#pos(@y)                                        
                        ,#natmult(@x,@y))                                
                  ,#natmult#(@x,@y))                                     
        32: #pred#(#0()) -> c_32()                                       
        33: #pred#(#neg(#s(@x))) -> c_33()                               
        34: #pred#(#pos(#s(#0()))) -> c_34()                             
        35: #pred#(#pos(#s(#s(@x)))) ->                                  
              c_35()                                                     
        36: #succ#(#0()) -> c_36()                                       
        37: #succ#(#neg(#s(#0()))) -> c_37()                             
        38: #succ#(#neg(#s(#s(@x)))) ->                                  
              c_38()                                                     
        39: #succ#(#pos(#s(@x))) -> c_39()                               
*** 1.1.1.1 Progress [(?,O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m))
        computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs))
        computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)),lineMult#(@x,@l,@acc))
        lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n))
        lineMult#1#(::(@x,@xs),@l2,@n) -> c_9(lineMult#2#(@l2,@n,@x,@xs))
        lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_11(+#(*(@x,@n),@y),*#(@x,@n),lineMult#(@n,@xs,@ys))
        lineMult#2#(nil(),@n,@x,@xs) -> c_12(*#(@x,@n),lineMult#(@n,@xs,nil()))
        matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
        matrixMult#1#(::(@l,@ls),@m2) -> c_14(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
      Strict TRS Rules:
        
      Weak DP Rules:
        #add#(#0(),@y) -> c_16()
        #add#(#neg(#s(#0())),@y) -> c_17(#pred#(@y))
        #add#(#neg(#s(#s(@x))),@y) -> c_18(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
        #add#(#pos(#s(#0())),@y) -> c_19(#succ#(@y))
        #add#(#pos(#s(#s(@x))),@y) -> c_20(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
        #mult#(#0(),#0()) -> c_21()
        #mult#(#0(),#neg(@y)) -> c_22()
        #mult#(#0(),#pos(@y)) -> c_23()
        #mult#(#neg(@x),#0()) -> c_24()
        #mult#(#neg(@x),#neg(@y)) -> c_25(#natmult#(@x,@y))
        #mult#(#neg(@x),#pos(@y)) -> c_26(#natmult#(@x,@y))
        #mult#(#pos(@x),#0()) -> c_27()
        #mult#(#pos(@x),#neg(@y)) -> c_28(#natmult#(@x,@y))
        #mult#(#pos(@x),#pos(@y)) -> c_29(#natmult#(@x,@y))
        #natmult#(#0(),@y) -> c_30()
        #natmult#(#s(@x),@y) -> c_31(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y))
        #pred#(#0()) -> c_32()
        #pred#(#neg(#s(@x))) -> c_33()
        #pred#(#pos(#s(#0()))) -> c_34()
        #pred#(#pos(#s(#s(@x)))) -> c_35()
        #succ#(#0()) -> c_36()
        #succ#(#neg(#s(#0()))) -> c_37()
        #succ#(#neg(#s(#s(@x)))) -> c_38()
        #succ#(#pos(#s(@x))) -> c_39()
        *#(@x,@y) -> c_1(#mult#(@x,@y))
        +#(@x,@y) -> c_2(#add#(@x,@y))
        computeLine#1#(nil(),@acc,@m) -> c_5()
        computeLine#2#(nil(),@acc,@x,@xs) -> c_7()
        lineMult#1#(nil(),@l2,@n) -> c_10()
        matrixMult#1#(nil(),@m2) -> c_15()
      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)
        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()))
      Signature:
        {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4,matrixMult/2,matrixMult#1/2,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/3,c_12/2,c_13/1,c_14/2,c_15/0,c_16/0,c_17/1,c_18/2,c_19/1,c_20/2,c_21/0,c_22/0,c_23/0,c_24/0,c_25/1,c_26/1,c_27/0,c_28/1,c_29/1,c_30/0,c_31/2,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0}
      Obligation:
        Innermost
        basic terms: {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#}/{#0,#neg,#pos,#s,::,nil}
    Applied Processor:
      RemoveWeakSuffixes
    Proof:
      Consider the dependency graph
        1:S:computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m))
           -->_1 computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs)):2
           -->_1 computeLine#1#(nil(),@acc,@m) -> c_5():36
        
        2:S:computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs))
           -->_1 computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)),lineMult#(@x,@l,@acc)):3
           -->_1 computeLine#2#(nil(),@acc,@x,@xs) -> c_7():37
        
        3:S:computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)),lineMult#(@x,@l,@acc))
           -->_2 lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n)):4
           -->_1 computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m)):1
        
        4:S:lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n))
           -->_1 lineMult#1#(::(@x,@xs),@l2,@n) -> c_9(lineMult#2#(@l2,@n,@x,@xs)):5
           -->_1 lineMult#1#(nil(),@l2,@n) -> c_10():38
        
        5:S:lineMult#1#(::(@x,@xs),@l2,@n) -> c_9(lineMult#2#(@l2,@n,@x,@xs))
           -->_1 lineMult#2#(nil(),@n,@x,@xs) -> c_12(*#(@x,@n),lineMult#(@n,@xs,nil())):7
           -->_1 lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_11(+#(*(@x,@n),@y),*#(@x,@n),lineMult#(@n,@xs,@ys)):6
        
        6:S:lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_11(+#(*(@x,@n),@y),*#(@x,@n),lineMult#(@n,@xs,@ys))
           -->_1 +#(@x,@y) -> c_2(#add#(@x,@y)):35
           -->_2 *#(@x,@y) -> c_1(#mult#(@x,@y)):34
           -->_3 lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n)):4
        
        7:S:lineMult#2#(nil(),@n,@x,@xs) -> c_12(*#(@x,@n),lineMult#(@n,@xs,nil()))
           -->_1 *#(@x,@y) -> c_1(#mult#(@x,@y)):34
           -->_2 lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n)):4
        
        8:S:matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
           -->_1 matrixMult#1#(::(@l,@ls),@m2) -> c_14(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2)):9
           -->_1 matrixMult#1#(nil(),@m2) -> c_15():39
        
        9:S:matrixMult#1#(::(@l,@ls),@m2) -> c_14(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
           -->_2 matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2)):8
           -->_1 computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m)):1
        
        10:W:#add#(#0(),@y) -> c_16()
           
        
        11:W:#add#(#neg(#s(#0())),@y) -> c_17(#pred#(@y))
           -->_1 #pred#(#pos(#s(#s(@x)))) -> c_35():29
           -->_1 #pred#(#pos(#s(#0()))) -> c_34():28
           -->_1 #pred#(#neg(#s(@x))) -> c_33():27
           -->_1 #pred#(#0()) -> c_32():26
        
        12:W:#add#(#neg(#s(#s(@x))),@y) -> c_18(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
           -->_2 #add#(#pos(#s(#s(@x))),@y) -> c_20(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):14
           -->_2 #add#(#pos(#s(#0())),@y) -> c_19(#succ#(@y)):13
           -->_1 #pred#(#pos(#s(#s(@x)))) -> c_35():29
           -->_1 #pred#(#pos(#s(#0()))) -> c_34():28
           -->_1 #pred#(#neg(#s(@x))) -> c_33():27
           -->_1 #pred#(#0()) -> c_32():26
        
        13:W:#add#(#pos(#s(#0())),@y) -> c_19(#succ#(@y))
           -->_1 #succ#(#pos(#s(@x))) -> c_39():33
           -->_1 #succ#(#neg(#s(#s(@x)))) -> c_38():32
           -->_1 #succ#(#neg(#s(#0()))) -> c_37():31
           -->_1 #succ#(#0()) -> c_36():30
        
        14:W:#add#(#pos(#s(#s(@x))),@y) -> c_20(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y))
           -->_1 #succ#(#pos(#s(@x))) -> c_39():33
           -->_1 #succ#(#neg(#s(#s(@x)))) -> c_38():32
           -->_1 #succ#(#neg(#s(#0()))) -> c_37():31
           -->_1 #succ#(#0()) -> c_36():30
           -->_2 #add#(#pos(#s(#s(@x))),@y) -> c_20(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):14
           -->_2 #add#(#pos(#s(#0())),@y) -> c_19(#succ#(@y)):13
        
        15:W:#mult#(#0(),#0()) -> c_21()
           
        
        16:W:#mult#(#0(),#neg(@y)) -> c_22()
           
        
        17:W:#mult#(#0(),#pos(@y)) -> c_23()
           
        
        18:W:#mult#(#neg(@x),#0()) -> c_24()
           
        
        19:W:#mult#(#neg(@x),#neg(@y)) -> c_25(#natmult#(@x,@y))
           -->_1 #natmult#(#s(@x),@y) -> c_31(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)):25
           -->_1 #natmult#(#0(),@y) -> c_30():24
        
        20:W:#mult#(#neg(@x),#pos(@y)) -> c_26(#natmult#(@x,@y))
           -->_1 #natmult#(#s(@x),@y) -> c_31(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)):25
           -->_1 #natmult#(#0(),@y) -> c_30():24
        
        21:W:#mult#(#pos(@x),#0()) -> c_27()
           
        
        22:W:#mult#(#pos(@x),#neg(@y)) -> c_28(#natmult#(@x,@y))
           -->_1 #natmult#(#s(@x),@y) -> c_31(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)):25
           -->_1 #natmult#(#0(),@y) -> c_30():24
        
        23:W:#mult#(#pos(@x),#pos(@y)) -> c_29(#natmult#(@x,@y))
           -->_1 #natmult#(#s(@x),@y) -> c_31(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)):25
           -->_1 #natmult#(#0(),@y) -> c_30():24
        
        24:W:#natmult#(#0(),@y) -> c_30()
           
        
        25:W:#natmult#(#s(@x),@y) -> c_31(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y))
           -->_2 #natmult#(#s(@x),@y) -> c_31(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)):25
           -->_2 #natmult#(#0(),@y) -> c_30():24
           -->_1 #add#(#pos(#s(#s(@x))),@y) -> c_20(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):14
           -->_1 #add#(#pos(#s(#0())),@y) -> c_19(#succ#(@y)):13
        
        26:W:#pred#(#0()) -> c_32()
           
        
        27:W:#pred#(#neg(#s(@x))) -> c_33()
           
        
        28:W:#pred#(#pos(#s(#0()))) -> c_34()
           
        
        29:W:#pred#(#pos(#s(#s(@x)))) -> c_35()
           
        
        30:W:#succ#(#0()) -> c_36()
           
        
        31:W:#succ#(#neg(#s(#0()))) -> c_37()
           
        
        32:W:#succ#(#neg(#s(#s(@x)))) -> c_38()
           
        
        33:W:#succ#(#pos(#s(@x))) -> c_39()
           
        
        34:W:*#(@x,@y) -> c_1(#mult#(@x,@y))
           -->_1 #mult#(#pos(@x),#pos(@y)) -> c_29(#natmult#(@x,@y)):23
           -->_1 #mult#(#pos(@x),#neg(@y)) -> c_28(#natmult#(@x,@y)):22
           -->_1 #mult#(#pos(@x),#0()) -> c_27():21
           -->_1 #mult#(#neg(@x),#pos(@y)) -> c_26(#natmult#(@x,@y)):20
           -->_1 #mult#(#neg(@x),#neg(@y)) -> c_25(#natmult#(@x,@y)):19
           -->_1 #mult#(#neg(@x),#0()) -> c_24():18
           -->_1 #mult#(#0(),#pos(@y)) -> c_23():17
           -->_1 #mult#(#0(),#neg(@y)) -> c_22():16
           -->_1 #mult#(#0(),#0()) -> c_21():15
        
        35:W:+#(@x,@y) -> c_2(#add#(@x,@y))
           -->_1 #add#(#pos(#s(#s(@x))),@y) -> c_20(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):14
           -->_1 #add#(#pos(#s(#0())),@y) -> c_19(#succ#(@y)):13
           -->_1 #add#(#neg(#s(#s(@x))),@y) -> c_18(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):12
           -->_1 #add#(#neg(#s(#0())),@y) -> c_17(#pred#(@y)):11
           -->_1 #add#(#0(),@y) -> c_16():10
        
        36:W:computeLine#1#(nil(),@acc,@m) -> c_5()
           
        
        37:W:computeLine#2#(nil(),@acc,@x,@xs) -> c_7()
           
        
        38:W:lineMult#1#(nil(),@l2,@n) -> c_10()
           
        
        39:W:matrixMult#1#(nil(),@m2) -> c_15()
           
        
      The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
        39: matrixMult#1#(nil(),@m2) ->     
              c_15()                        
        36: computeLine#1#(nil(),@acc,@m) ->
              c_5()                         
        37: computeLine#2#(nil()            
                          ,@acc             
                          ,@x               
                          ,@xs) -> c_7()    
        38: lineMult#1#(nil(),@l2,@n) ->    
              c_10()                        
        35: +#(@x,@y) -> c_2(#add#(@x,@y))  
        10: #add#(#0(),@y) -> c_16()        
        11: #add#(#neg(#s(#0())),@y) ->     
              c_17(#pred#(@y))              
        12: #add#(#neg(#s(#s(@x))),@y) ->   
              c_18(#pred#(#add(#pos(#s(@x)) 
                              ,@y))         
                  ,#add#(#pos(#s(@x)),@y))  
        26: #pred#(#0()) -> c_32()          
        27: #pred#(#neg(#s(@x))) -> c_33()  
        28: #pred#(#pos(#s(#0()))) -> c_34()
        29: #pred#(#pos(#s(#s(@x)))) ->     
              c_35()                        
        34: *#(@x,@y) -> c_1(#mult#(@x,@y)) 
        15: #mult#(#0(),#0()) -> c_21()     
        16: #mult#(#0(),#neg(@y)) -> c_22() 
        17: #mult#(#0(),#pos(@y)) -> c_23() 
        18: #mult#(#neg(@x),#0()) -> c_24() 
        19: #mult#(#neg(@x),#neg(@y)) ->    
              c_25(#natmult#(@x,@y))        
        20: #mult#(#neg(@x),#pos(@y)) ->    
              c_26(#natmult#(@x,@y))        
        21: #mult#(#pos(@x),#0()) -> c_27() 
        22: #mult#(#pos(@x),#neg(@y)) ->    
              c_28(#natmult#(@x,@y))        
        23: #mult#(#pos(@x),#pos(@y)) ->    
              c_29(#natmult#(@x,@y))        
        25: #natmult#(#s(@x),@y) ->         
              c_31(#add#(#pos(@y)           
                        ,#natmult(@x,@y))   
                  ,#natmult#(@x,@y))        
        14: #add#(#pos(#s(#s(@x))),@y) ->   
              c_20(#succ#(#add(#pos(#s(@x)) 
                              ,@y))         
                  ,#add#(#pos(#s(@x)),@y))  
        13: #add#(#pos(#s(#0())),@y) ->     
              c_19(#succ#(@y))              
        30: #succ#(#0()) -> c_36()          
        31: #succ#(#neg(#s(#0()))) -> c_37()
        32: #succ#(#neg(#s(#s(@x)))) ->     
              c_38()                        
        33: #succ#(#pos(#s(@x))) -> c_39()  
        24: #natmult#(#0(),@y) -> c_30()    
*** 1.1.1.1.1 Progress [(?,O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m))
        computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs))
        computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)),lineMult#(@x,@l,@acc))
        lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n))
        lineMult#1#(::(@x,@xs),@l2,@n) -> c_9(lineMult#2#(@l2,@n,@x,@xs))
        lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_11(+#(*(@x,@n),@y),*#(@x,@n),lineMult#(@n,@xs,@ys))
        lineMult#2#(nil(),@n,@x,@xs) -> c_12(*#(@x,@n),lineMult#(@n,@xs,nil()))
        matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
        matrixMult#1#(::(@l,@ls),@m2) -> c_14(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)
        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()))
      Signature:
        {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4,matrixMult/2,matrixMult#1/2,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/3,c_12/2,c_13/1,c_14/2,c_15/0,c_16/0,c_17/1,c_18/2,c_19/1,c_20/2,c_21/0,c_22/0,c_23/0,c_24/0,c_25/1,c_26/1,c_27/0,c_28/1,c_29/1,c_30/0,c_31/2,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0}
      Obligation:
        Innermost
        basic terms: {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#}/{#0,#neg,#pos,#s,::,nil}
    Applied Processor:
      SimplifyRHS
    Proof:
      Consider the dependency graph
        1:S:computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m))
           -->_1 computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs)):2
        
        2:S:computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs))
           -->_1 computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)),lineMult#(@x,@l,@acc)):3
        
        3:S:computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)),lineMult#(@x,@l,@acc))
           -->_2 lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n)):4
           -->_1 computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m)):1
        
        4:S:lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n))
           -->_1 lineMult#1#(::(@x,@xs),@l2,@n) -> c_9(lineMult#2#(@l2,@n,@x,@xs)):5
        
        5:S:lineMult#1#(::(@x,@xs),@l2,@n) -> c_9(lineMult#2#(@l2,@n,@x,@xs))
           -->_1 lineMult#2#(nil(),@n,@x,@xs) -> c_12(*#(@x,@n),lineMult#(@n,@xs,nil())):7
           -->_1 lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_11(+#(*(@x,@n),@y),*#(@x,@n),lineMult#(@n,@xs,@ys)):6
        
        6:S:lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_11(+#(*(@x,@n),@y),*#(@x,@n),lineMult#(@n,@xs,@ys))
           -->_3 lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n)):4
        
        7:S:lineMult#2#(nil(),@n,@x,@xs) -> c_12(*#(@x,@n),lineMult#(@n,@xs,nil()))
           -->_2 lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n)):4
        
        8:S:matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
           -->_1 matrixMult#1#(::(@l,@ls),@m2) -> c_14(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2)):9
        
        9:S:matrixMult#1#(::(@l,@ls),@m2) -> c_14(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
           -->_2 matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2)):8
           -->_1 computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m)):1
        
      Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified:
        lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_11(lineMult#(@n,@xs,@ys))
        lineMult#2#(nil(),@n,@x,@xs) -> c_12(lineMult#(@n,@xs,nil()))
*** 1.1.1.1.1.1 Progress [(?,O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m))
        computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs))
        computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)),lineMult#(@x,@l,@acc))
        lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n))
        lineMult#1#(::(@x,@xs),@l2,@n) -> c_9(lineMult#2#(@l2,@n,@x,@xs))
        lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_11(lineMult#(@n,@xs,@ys))
        lineMult#2#(nil(),@n,@x,@xs) -> c_12(lineMult#(@n,@xs,nil()))
        matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
        matrixMult#1#(::(@l,@ls),@m2) -> c_14(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)
        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()))
      Signature:
        {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4,matrixMult/2,matrixMult#1/2,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/2,c_15/0,c_16/0,c_17/1,c_18/2,c_19/1,c_20/2,c_21/0,c_22/0,c_23/0,c_24/0,c_25/1,c_26/1,c_27/0,c_28/1,c_29/1,c_30/0,c_31/2,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0}
      Obligation:
        Innermost
        basic terms: {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#}/{#0,#neg,#pos,#s,::,nil}
    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:
          computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m))
          computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs))
          computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)),lineMult#(@x,@l,@acc))
          lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n))
          lineMult#1#(::(@x,@xs),@l2,@n) -> c_9(lineMult#2#(@l2,@n,@x,@xs))
          lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_11(lineMult#(@n,@xs,@ys))
          lineMult#2#(nil(),@n,@x,@xs) -> c_12(lineMult#(@n,@xs,nil()))
        Strict TRS Rules:
          
        Weak DP Rules:
          matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
          matrixMult#1#(::(@l,@ls),@m2) -> c_14(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)
          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()))
        Signature:
          {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4,matrixMult/2,matrixMult#1/2,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/2,c_15/0,c_16/0,c_17/1,c_18/2,c_19/1,c_20/2,c_21/0,c_22/0,c_23/0,c_24/0,c_25/1,c_26/1,c_27/0,c_28/1,c_29/1,c_30/0,c_31/2,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0}
        Obligation:
          Innermost
          basic terms: {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#}/{#0,#neg,#pos,#s,::,nil}
      
      Problem (S)
        Strict DP Rules:
          matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
          matrixMult#1#(::(@l,@ls),@m2) -> c_14(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
        Strict TRS Rules:
          
        Weak DP Rules:
          computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m))
          computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs))
          computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)),lineMult#(@x,@l,@acc))
          lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n))
          lineMult#1#(::(@x,@xs),@l2,@n) -> c_9(lineMult#2#(@l2,@n,@x,@xs))
          lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_11(lineMult#(@n,@xs,@ys))
          lineMult#2#(nil(),@n,@x,@xs) -> c_12(lineMult#(@n,@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)
          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()))
        Signature:
          {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4,matrixMult/2,matrixMult#1/2,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/2,c_15/0,c_16/0,c_17/1,c_18/2,c_19/1,c_20/2,c_21/0,c_22/0,c_23/0,c_24/0,c_25/1,c_26/1,c_27/0,c_28/1,c_29/1,c_30/0,c_31/2,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0}
        Obligation:
          Innermost
          basic terms: {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#}/{#0,#neg,#pos,#s,::,nil}
  *** 1.1.1.1.1.1.1 Progress [(?,O(n^2))]  ***
      Considered Problem:
        Strict DP Rules:
          computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m))
          computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs))
          computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)),lineMult#(@x,@l,@acc))
          lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n))
          lineMult#1#(::(@x,@xs),@l2,@n) -> c_9(lineMult#2#(@l2,@n,@x,@xs))
          lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_11(lineMult#(@n,@xs,@ys))
          lineMult#2#(nil(),@n,@x,@xs) -> c_12(lineMult#(@n,@xs,nil()))
        Strict TRS Rules:
          
        Weak DP Rules:
          matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
          matrixMult#1#(::(@l,@ls),@m2) -> c_14(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)
          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()))
        Signature:
          {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4,matrixMult/2,matrixMult#1/2,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/2,c_15/0,c_16/0,c_17/1,c_18/2,c_19/1,c_20/2,c_21/0,c_22/0,c_23/0,c_24/0,c_25/1,c_26/1,c_27/0,c_28/1,c_29/1,c_30/0,c_31/2,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0}
        Obligation:
          Innermost
          basic terms: {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#}/{#0,#neg,#pos,#s,::,nil}
      Applied Processor:
        PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy}}
      Proof:
        We first use the processor NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy} to orient following rules strictly:
          2: computeLine#1#(::(@x,@xs)                     
                           ,@acc                           
                           ,@m) -> c_4(computeLine#2#(@m   
                                                     ,@acc 
                                                     ,@x   
                                                     ,@xs))
          5: lineMult#1#(::(@x,@xs)                        
                        ,@l2                               
                        ,@n) -> c_9(lineMult#2#(@l2        
                                               ,@n         
                                               ,@x         
                                               ,@xs))      
          
        Consider the set of all dependency pairs
          1: computeLine#(@line,@m,@acc) ->                               
               c_3(computeLine#1#(@line                                   
                                 ,@acc                                    
                                 ,@m))                                    
          2: computeLine#1#(::(@x,@xs)                                    
                           ,@acc                                          
                           ,@m) -> c_4(computeLine#2#(@m                  
                                                     ,@acc                
                                                     ,@x                  
                                                     ,@xs))               
          3: computeLine#2#(::(@l,@ls)                                    
                           ,@acc                                          
                           ,@x                                            
                           ,@xs) -> c_6(computeLine#(@xs                  
                                                    ,@ls                  
                                                    ,lineMult(@x,@l,@acc))
                                       ,lineMult#(@x,@l,@acc))            
          4: lineMult#(@n,@l1,@l2) ->                                     
               c_8(lineMult#1#(@l1,@l2,@n))                               
          5: lineMult#1#(::(@x,@xs)                                       
                        ,@l2                                              
                        ,@n) -> c_9(lineMult#2#(@l2                       
                                               ,@n                        
                                               ,@x                        
                                               ,@xs))                     
          6: lineMult#2#(::(@y,@ys)                                       
                        ,@n                                               
                        ,@x                                               
                        ,@xs) -> c_11(lineMult#(@n                        
                                               ,@xs                       
                                               ,@ys))                     
          7: lineMult#2#(nil(),@n,@x,@xs) ->                              
               c_12(lineMult#(@n,@xs,nil()))                              
          8: matrixMult#(@m1,@m2) ->                                      
               c_13(matrixMult#1#(@m1,@m2))                               
          9: matrixMult#1#(::(@l,@ls),@m2) ->                             
               c_14(computeLine#(@l,@m2,nil())                            
                   ,matrixMult#(@ls,@m2))                                 
        Processor NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Nothing, greedy = NoGreedy}induces the complexity certificateTIME (?,O(n^2))
        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 Progress [(?,O(n^2))]  ***
        Considered Problem:
          Strict DP Rules:
            computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m))
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs))
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)),lineMult#(@x,@l,@acc))
            lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_9(lineMult#2#(@l2,@n,@x,@xs))
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_11(lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_12(lineMult#(@n,@xs,nil()))
          Strict TRS Rules:
            
          Weak DP Rules:
            matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
            matrixMult#1#(::(@l,@ls),@m2) -> c_14(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)
            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()))
          Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4,matrixMult/2,matrixMult#1/2,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/2,c_15/0,c_16/0,c_17/1,c_18/2,c_19/1,c_20/2,c_21/0,c_22/0,c_23/0,c_24/0,c_25/1,c_26/1,c_27/0,c_28/1,c_29/1,c_30/0,c_31/2,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0}
          Obligation:
            Innermost
            basic terms: {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#}/{#0,#neg,#pos,#s,::,nil}
        Applied Processor:
          NaturalPI {shape = Mixed 2, restrict = Restrict, 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 polynomial interpretation of kind constructor-based(mixed(2)):
          The following argument positions are considered usable:
            uargs(c_3) = {1},
            uargs(c_4) = {1},
            uargs(c_6) = {1,2},
            uargs(c_8) = {1},
            uargs(c_9) = {1},
            uargs(c_11) = {1},
            uargs(c_12) = {1},
            uargs(c_13) = {1},
            uargs(c_14) = {1,2}
          
          Following symbols are considered usable:
            {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#}
          TcT has computed the following interpretation:
                        p(#0) = 0                
                      p(#add) = 0                
                     p(#mult) = 0                
                  p(#natmult) = x2               
                      p(#neg) = 0                
                      p(#pos) = 0                
                     p(#pred) = 0                
                        p(#s) = 0                
                     p(#succ) = 0                
                         p(*) = 1                
                         p(+) = 1 + x2^2         
                        p(::) = 1 + x1 + x2      
               p(computeLine) = 0                
             p(computeLine#1) = 0                
             p(computeLine#2) = 0                
                  p(lineMult) = x2               
                p(lineMult#1) = 0                
                p(lineMult#2) = x3               
                p(matrixMult) = 0                
              p(matrixMult#1) = 0                
                       p(nil) = 0                
                     p(#add#) = 0                
                    p(#mult#) = 0                
                 p(#natmult#) = 0                
                    p(#pred#) = 0                
                    p(#succ#) = 0                
                        p(*#) = 0                
                        p(+#) = 0                
              p(computeLine#) = 1 + x1 + x2      
            p(computeLine#1#) = 1 + x1 + x3      
            p(computeLine#2#) = x1 + x4          
                 p(lineMult#) = x2               
               p(lineMult#1#) = x1               
               p(lineMult#2#) = x3 + x4          
               p(matrixMult#) = x1 + x1*x2 + x2^2
             p(matrixMult#1#) = x1 + x1*x2 + x2^2
                       p(c_1) = 0                
                       p(c_2) = 0                
                       p(c_3) = x1               
                       p(c_4) = x1               
                       p(c_5) = 0                
                       p(c_6) = x1 + x2          
                       p(c_7) = 0                
                       p(c_8) = x1               
                       p(c_9) = x1               
                      p(c_10) = 0                
                      p(c_11) = x1               
                      p(c_12) = x1               
                      p(c_13) = x1               
                      p(c_14) = x1 + x2          
                      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) = 0                
                      p(c_33) = 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                
          
          Following rules are strictly oriented:
               computeLine#1#(::(@x,@xs) = 2 + @m + @x + @xs              
                                   ,@acc                                  
                                    ,@m)                                  
                                         > @m + @xs                       
                                         = c_4(computeLine#2#(@m          
                                                             ,@acc        
                                                             ,@x          
                                                             ,@xs))       
          
          lineMult#1#(::(@x,@xs),@l2,@n) = 1 + @x + @xs                   
                                         > @x + @xs                       
                                         = c_9(lineMult#2#(@l2,@n,@x,@xs))
          
          
          Following rules are (at-least) weakly oriented:
            computeLine#(@line,@m,@acc) =  1 + @line + @m                               
                                        >= 1 + @line + @m                               
                                        =  c_3(computeLine#1#(@line                     
                                                             ,@acc                      
                                                             ,@m))                      
          
              computeLine#2#(::(@l,@ls) =  1 + @l + @ls + @xs                           
                                  ,@acc                                                 
                                    ,@x                                                 
                                  ,@xs)                                                 
                                        >= 1 + @l + @ls + @xs                           
                                        =  c_6(computeLine#(@xs                         
                                                           ,@ls                         
                                                           ,lineMult(@x,@l,@acc))       
                                              ,lineMult#(@x,@l,@acc))                   
          
                  lineMult#(@n,@l1,@l2) =  @l1                                          
                                        >= @l1                                          
                                        =  c_8(lineMult#1#(@l1,@l2,@n))                 
          
                 lineMult#2#(::(@y,@ys) =  @x + @xs                                     
                                    ,@n                                                 
                                    ,@x                                                 
                                  ,@xs)                                                 
                                        >= @xs                                          
                                        =  c_11(lineMult#(@n,@xs,@ys))                  
          
           lineMult#2#(nil(),@n,@x,@xs) =  @x + @xs                                     
                                        >= @xs                                          
                                        =  c_12(lineMult#(@n,@xs,nil()))                
          
                   matrixMult#(@m1,@m2) =  @m1 + @m1*@m2 + @m2^2                        
                                        >= @m1 + @m1*@m2 + @m2^2                        
                                        =  c_13(matrixMult#1#(@m1,@m2))                 
          
          matrixMult#1#(::(@l,@ls),@m2) =  1 + @l + @l*@m2 + @ls + @ls*@m2 + @m2 + @m2^2
                                        >= 1 + @l + @ls + @ls*@m2 + @m2 + @m2^2         
                                        =  c_14(computeLine#(@l,@m2,nil())              
                                               ,matrixMult#(@ls,@m2))                   
          
    *** 1.1.1.1.1.1.1.1.1 Progress [(?,O(1))]  ***
        Considered Problem:
          Strict DP Rules:
            computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m))
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)),lineMult#(@x,@l,@acc))
            lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n))
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_11(lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_12(lineMult#(@n,@xs,nil()))
          Strict TRS Rules:
            
          Weak DP Rules:
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_9(lineMult#2#(@l2,@n,@x,@xs))
            matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
            matrixMult#1#(::(@l,@ls),@m2) -> c_14(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)
            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()))
          Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4,matrixMult/2,matrixMult#1/2,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/2,c_15/0,c_16/0,c_17/1,c_18/2,c_19/1,c_20/2,c_21/0,c_22/0,c_23/0,c_24/0,c_25/1,c_26/1,c_27/0,c_28/1,c_29/1,c_30/0,c_31/2,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0}
          Obligation:
            Innermost
            basic terms: {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#}/{#0,#neg,#pos,#s,::,nil}
        Applied Processor:
          Assumption
        Proof:
          ()
    
    *** 1.1.1.1.1.1.1.2 Progress [(?,O(n^1))]  ***
        Considered Problem:
          Strict DP Rules:
            computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m))
          Strict TRS Rules:
            
          Weak DP Rules:
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs))
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)),lineMult#(@x,@l,@acc))
            lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n))
            lineMult#1#(::(@x,@xs),@l2,@n) -> c_9(lineMult#2#(@l2,@n,@x,@xs))
            lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_11(lineMult#(@n,@xs,@ys))
            lineMult#2#(nil(),@n,@x,@xs) -> c_12(lineMult#(@n,@xs,nil()))
            matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
            matrixMult#1#(::(@l,@ls),@m2) -> c_14(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)
            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()))
          Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4,matrixMult/2,matrixMult#1/2,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/2,c_15/0,c_16/0,c_17/1,c_18/2,c_19/1,c_20/2,c_21/0,c_22/0,c_23/0,c_24/0,c_25/1,c_26/1,c_27/0,c_28/1,c_29/1,c_30/0,c_31/2,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0}
          Obligation:
            Innermost
            basic terms: {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#}/{#0,#neg,#pos,#s,::,nil}
        Applied Processor:
          RemoveWeakSuffixes
        Proof:
          Consider the dependency graph
            1:S:computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m))
               -->_1 computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs)):2
            
            2:W:computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs))
               -->_1 computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)),lineMult#(@x,@l,@acc)):3
            
            3:W:computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)),lineMult#(@x,@l,@acc))
               -->_2 lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n)):4
               -->_1 computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m)):1
            
            4:W:lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n))
               -->_1 lineMult#1#(::(@x,@xs),@l2,@n) -> c_9(lineMult#2#(@l2,@n,@x,@xs)):5
            
            5:W:lineMult#1#(::(@x,@xs),@l2,@n) -> c_9(lineMult#2#(@l2,@n,@x,@xs))
               -->_1 lineMult#2#(nil(),@n,@x,@xs) -> c_12(lineMult#(@n,@xs,nil())):7
               -->_1 lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_11(lineMult#(@n,@xs,@ys)):6
            
            6:W:lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_11(lineMult#(@n,@xs,@ys))
               -->_1 lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n)):4
            
            7:W:lineMult#2#(nil(),@n,@x,@xs) -> c_12(lineMult#(@n,@xs,nil()))
               -->_1 lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n)):4
            
            8:W:matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
               -->_1 matrixMult#1#(::(@l,@ls),@m2) -> c_14(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2)):9
            
            9:W:matrixMult#1#(::(@l,@ls),@m2) -> c_14(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
               -->_2 matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2)):8
               -->_1 computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m)):1
            
          The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
            4: lineMult#(@n,@l1,@l2) ->                
                 c_8(lineMult#1#(@l1,@l2,@n))          
            7: lineMult#2#(nil(),@n,@x,@xs) ->         
                 c_12(lineMult#(@n,@xs,nil()))         
            5: lineMult#1#(::(@x,@xs)                  
                          ,@l2                         
                          ,@n) -> c_9(lineMult#2#(@l2  
                                                 ,@n   
                                                 ,@x   
                                                 ,@xs))
            6: lineMult#2#(::(@y,@ys)                  
                          ,@n                          
                          ,@x                          
                          ,@xs) -> c_11(lineMult#(@n   
                                                 ,@xs  
                                                 ,@ys))
    *** 1.1.1.1.1.1.1.2.1 Progress [(?,O(n^1))]  ***
        Considered Problem:
          Strict DP Rules:
            computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m))
          Strict TRS Rules:
            
          Weak DP Rules:
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs))
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)),lineMult#(@x,@l,@acc))
            matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
            matrixMult#1#(::(@l,@ls),@m2) -> c_14(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)
            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()))
          Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4,matrixMult/2,matrixMult#1/2,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/2,c_15/0,c_16/0,c_17/1,c_18/2,c_19/1,c_20/2,c_21/0,c_22/0,c_23/0,c_24/0,c_25/1,c_26/1,c_27/0,c_28/1,c_29/1,c_30/0,c_31/2,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0}
          Obligation:
            Innermost
            basic terms: {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#}/{#0,#neg,#pos,#s,::,nil}
        Applied Processor:
          SimplifyRHS
        Proof:
          Consider the dependency graph
            1:S:computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m))
               -->_1 computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs)):2
            
            2:W:computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs))
               -->_1 computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)),lineMult#(@x,@l,@acc)):3
            
            3:W:computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)),lineMult#(@x,@l,@acc))
               -->_1 computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m)):1
            
            8:W:matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
               -->_1 matrixMult#1#(::(@l,@ls),@m2) -> c_14(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2)):9
            
            9:W:matrixMult#1#(::(@l,@ls),@m2) -> c_14(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
               -->_2 matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2)):8
               -->_1 computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m)):1
            
          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_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)))
    *** 1.1.1.1.1.1.1.2.1.1 Progress [(?,O(n^1))]  ***
        Considered Problem:
          Strict DP Rules:
            computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m))
          Strict TRS Rules:
            
          Weak DP Rules:
            computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs))
            computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)))
            matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
            matrixMult#1#(::(@l,@ls),@m2) -> c_14(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)
            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()))
          Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4,matrixMult/2,matrixMult#1/2,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/1,c_7/0,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/2,c_15/0,c_16/0,c_17/1,c_18/2,c_19/1,c_20/2,c_21/0,c_22/0,c_23/0,c_24/0,c_25/1,c_26/1,c_27/0,c_28/1,c_29/1,c_30/0,c_31/2,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0}
          Obligation:
            Innermost
            basic terms: {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#}/{#0,#neg,#pos,#s,::,nil}
        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_3(computeLine#1#(@line    
                                   ,@acc     
                                   ,@m))     
            
          Consider the set of all dependency pairs
            1: computeLine#(@line,@m,@acc) ->                                
                 c_3(computeLine#1#(@line                                    
                                   ,@acc                                     
                                   ,@m))                                     
            2: computeLine#1#(::(@x,@xs)                                     
                             ,@acc                                           
                             ,@m) -> c_4(computeLine#2#(@m                   
                                                       ,@acc                 
                                                       ,@x                   
                                                       ,@xs))                
            3: computeLine#2#(::(@l,@ls)                                     
                             ,@acc                                           
                             ,@x                                             
                             ,@xs) -> c_6(computeLine#(@xs                   
                                                      ,@ls                   
                                                      ,lineMult(@x,@l,@acc)))
            4: matrixMult#(@m1,@m2) ->                                       
                 c_13(matrixMult#1#(@m1,@m2))                                
            5: matrixMult#1#(::(@l,@ls),@m2) ->                              
                 c_14(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,2,3}
          their number of applications is equally bounded.
          The dependency pairs are shifted into the weak component.
      *** 1.1.1.1.1.1.1.2.1.1.1 Progress [(?,O(n^1))]  ***
          Considered Problem:
            Strict DP Rules:
              computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m))
            Strict TRS Rules:
              
            Weak DP Rules:
              computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs))
              computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)))
              matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
              matrixMult#1#(::(@l,@ls),@m2) -> c_14(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)
              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()))
            Signature:
              {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4,matrixMult/2,matrixMult#1/2,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/1,c_7/0,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/2,c_15/0,c_16/0,c_17/1,c_18/2,c_19/1,c_20/2,c_21/0,c_22/0,c_23/0,c_24/0,c_25/1,c_26/1,c_27/0,c_28/1,c_29/1,c_30/0,c_31/2,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0}
            Obligation:
              Innermost
              basic terms: {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#}/{#0,#neg,#pos,#s,::,nil}
          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_6) = {1},
              uargs(c_13) = {1},
              uargs(c_14) = {1,2}
            
            Following symbols are considered usable:
              {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#}
            TcT has computed the following interpretation:
                          p(#0) = [1]                  
                        p(#add) = [4] x1 + [3]         
                       p(#mult) = [1] x2 + [5]         
                    p(#natmult) = [4] x2 + [0]         
                        p(#neg) = [0]                  
                        p(#pos) = [1]                  
                       p(#pred) = [0]                  
                          p(#s) = [4]                  
                       p(#succ) = [2] x1 + [0]         
                           p(*) = [1] x1 + [1]         
                           p(+) = [7]                  
                          p(::) = [1] x1 + [1] x2 + [1]
                 p(computeLine) = [1] x3 + [1]         
               p(computeLine#1) = [1] x1 + [4] x3 + [1]
               p(computeLine#2) = [1] x4 + [0]         
                    p(lineMult) = [2] x1 + [5] x3 + [0]
                  p(lineMult#1) = [0]                  
                  p(lineMult#2) = [1] x2 + [0]         
                  p(matrixMult) = [1]                  
                p(matrixMult#1) = [1] x1 + [2] x2 + [0]
                         p(nil) = [1]                  
                       p(#add#) = [1] x1 + [0]         
                      p(#mult#) = [0]                  
                   p(#natmult#) = [2] x2 + [0]         
                      p(#pred#) = [1]                  
                      p(#succ#) = [1]                  
                          p(*#) = [1] x1 + [1] x2 + [0]
                          p(+#) = [0]                  
                p(computeLine#) = [4] x1 + [1]         
              p(computeLine#1#) = [4] x1 + [0]         
              p(computeLine#2#) = [4] x4 + [1]         
                   p(lineMult#) = [4] x2 + [4]         
                 p(lineMult#1#) = [4] x1 + [4] x3 + [4]
                 p(lineMult#2#) = [1] x1 + [0]         
                 p(matrixMult#) = [6] x1 + [0]         
               p(matrixMult#1#) = [6] x1 + [0]         
                         p(c_1) = [4] x1 + [1]         
                         p(c_2) = [4] x1 + [1]         
                         p(c_3) = [1] x1 + [0]         
                         p(c_4) = [1] x1 + [0]         
                         p(c_5) = [1]                  
                         p(c_6) = [1] x1 + [0]         
                         p(c_7) = [2]                  
                         p(c_8) = [0]                  
                         p(c_9) = [2]                  
                        p(c_10) = [1]                  
                        p(c_11) = [0]                  
                        p(c_12) = [0]                  
                        p(c_13) = [1] x1 + [0]         
                        p(c_14) = [1] x1 + [1] x2 + [3]
                        p(c_15) = [0]                  
                        p(c_16) = [2]                  
                        p(c_17) = [0]                  
                        p(c_18) = [0]                  
                        p(c_19) = [4] x1 + [1]         
                        p(c_20) = [1]                  
                        p(c_21) = [1]                  
                        p(c_22) = [0]                  
                        p(c_23) = [0]                  
                        p(c_24) = [1]                  
                        p(c_25) = [1] x1 + [4]         
                        p(c_26) = [1]                  
                        p(c_27) = [2]                  
                        p(c_28) = [0]                  
                        p(c_29) = [1]                  
                        p(c_30) = [0]                  
                        p(c_31) = [1] x1 + [4] x2 + [0]
                        p(c_32) = [0]                  
                        p(c_33) = [0]                  
                        p(c_34) = [1]                  
                        p(c_35) = [0]                  
                        p(c_36) = [0]                  
                        p(c_37) = [0]                  
                        p(c_38) = [4]                  
                        p(c_39) = [0]                  
            
            Following rules are strictly oriented:
            computeLine#(@line,@m,@acc) = [4] @line + [1]         
                                        > [4] @line + [0]         
                                        = c_3(computeLine#1#(@line
                                                            ,@acc 
                                                            ,@m)) 
            
            
            Following rules are (at-least) weakly oriented:
                computeLine#1#(::(@x,@xs) =  [4] @x + [4] @xs + [4]                 
                                    ,@acc                                           
                                     ,@m)                                           
                                          >= [4] @xs + [1]                          
                                          =  c_4(computeLine#2#(@m                  
                                                               ,@acc                
                                                               ,@x                  
                                                               ,@xs))               
            
                computeLine#2#(::(@l,@ls) =  [4] @xs + [1]                          
                                    ,@acc                                           
                                      ,@x                                           
                                    ,@xs)                                           
                                          >= [4] @xs + [1]                          
                                          =  c_6(computeLine#(@xs                   
                                                             ,@ls                   
                                                             ,lineMult(@x,@l,@acc)))
            
                     matrixMult#(@m1,@m2) =  [6] @m1 + [0]                          
                                          >= [6] @m1 + [0]                          
                                          =  c_13(matrixMult#1#(@m1,@m2))           
            
            matrixMult#1#(::(@l,@ls),@m2) =  [6] @l + [6] @ls + [6]                 
                                          >= [4] @l + [6] @ls + [4]                 
                                          =  c_14(computeLine#(@l,@m2,nil())        
                                                 ,matrixMult#(@ls,@m2))             
            
      *** 1.1.1.1.1.1.1.2.1.1.1.1 Progress [(?,O(1))]  ***
          Considered Problem:
            Strict DP Rules:
              
            Strict TRS Rules:
              
            Weak DP Rules:
              computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m))
              computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs))
              computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)))
              matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
              matrixMult#1#(::(@l,@ls),@m2) -> c_14(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)
              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()))
            Signature:
              {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4,matrixMult/2,matrixMult#1/2,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/1,c_7/0,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/2,c_15/0,c_16/0,c_17/1,c_18/2,c_19/1,c_20/2,c_21/0,c_22/0,c_23/0,c_24/0,c_25/1,c_26/1,c_27/0,c_28/1,c_29/1,c_30/0,c_31/2,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0}
            Obligation:
              Innermost
              basic terms: {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#}/{#0,#neg,#pos,#s,::,nil}
          Applied Processor:
            Assumption
          Proof:
            ()
      
      *** 1.1.1.1.1.1.1.2.1.1.2 Progress [(O(1),O(1))]  ***
          Considered Problem:
            Strict DP Rules:
              
            Strict TRS Rules:
              
            Weak DP Rules:
              computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m))
              computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs))
              computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)))
              matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
              matrixMult#1#(::(@l,@ls),@m2) -> c_14(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)
              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()))
            Signature:
              {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4,matrixMult/2,matrixMult#1/2,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/1,c_7/0,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/2,c_15/0,c_16/0,c_17/1,c_18/2,c_19/1,c_20/2,c_21/0,c_22/0,c_23/0,c_24/0,c_25/1,c_26/1,c_27/0,c_28/1,c_29/1,c_30/0,c_31/2,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0}
            Obligation:
              Innermost
              basic terms: {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#}/{#0,#neg,#pos,#s,::,nil}
          Applied Processor:
            RemoveWeakSuffixes
          Proof:
            Consider the dependency graph
              1:W:computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m))
                 -->_1 computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs)):2
              
              2:W:computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs))
                 -->_1 computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc))):3
              
              3:W:computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)))
                 -->_1 computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m)):1
              
              4:W:matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
                 -->_1 matrixMult#1#(::(@l,@ls),@m2) -> c_14(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2)):5
              
              5:W:matrixMult#1#(::(@l,@ls),@m2) -> c_14(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
                 -->_2 matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2)):4
                 -->_1 computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m)):1
              
            The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
              4: matrixMult#(@m1,@m2) ->                                       
                   c_13(matrixMult#1#(@m1,@m2))                                
              5: matrixMult#1#(::(@l,@ls),@m2) ->                              
                   c_14(computeLine#(@l,@m2,nil())                             
                       ,matrixMult#(@ls,@m2))                                  
              1: computeLine#(@line,@m,@acc) ->                                
                   c_3(computeLine#1#(@line                                    
                                     ,@acc                                     
                                     ,@m))                                     
              3: computeLine#2#(::(@l,@ls)                                     
                               ,@acc                                           
                               ,@x                                             
                               ,@xs) -> c_6(computeLine#(@xs                   
                                                        ,@ls                   
                                                        ,lineMult(@x,@l,@acc)))
              2: computeLine#1#(::(@x,@xs)                                     
                               ,@acc                                           
                               ,@m) -> c_4(computeLine#2#(@m                   
                                                         ,@acc                 
                                                         ,@x                   
                                                         ,@xs))                
      *** 1.1.1.1.1.1.1.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)
              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()))
            Signature:
              {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4,matrixMult/2,matrixMult#1/2,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/1,c_7/0,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/2,c_15/0,c_16/0,c_17/1,c_18/2,c_19/1,c_20/2,c_21/0,c_22/0,c_23/0,c_24/0,c_25/1,c_26/1,c_27/0,c_28/1,c_29/1,c_30/0,c_31/2,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0}
            Obligation:
              Innermost
              basic terms: {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#}/{#0,#neg,#pos,#s,::,nil}
          Applied Processor:
            EmptyProcessor
          Proof:
            The problem is already closed. The intended complexity is O(1).
      
  *** 1.1.1.1.1.1.2 Progress [(?,O(n^1))]  ***
      Considered Problem:
        Strict DP Rules:
          matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
          matrixMult#1#(::(@l,@ls),@m2) -> c_14(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
        Strict TRS Rules:
          
        Weak DP Rules:
          computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m))
          computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs))
          computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)),lineMult#(@x,@l,@acc))
          lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n))
          lineMult#1#(::(@x,@xs),@l2,@n) -> c_9(lineMult#2#(@l2,@n,@x,@xs))
          lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_11(lineMult#(@n,@xs,@ys))
          lineMult#2#(nil(),@n,@x,@xs) -> c_12(lineMult#(@n,@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)
          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()))
        Signature:
          {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4,matrixMult/2,matrixMult#1/2,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/2,c_15/0,c_16/0,c_17/1,c_18/2,c_19/1,c_20/2,c_21/0,c_22/0,c_23/0,c_24/0,c_25/1,c_26/1,c_27/0,c_28/1,c_29/1,c_30/0,c_31/2,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0}
        Obligation:
          Innermost
          basic terms: {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#}/{#0,#neg,#pos,#s,::,nil}
      Applied Processor:
        RemoveWeakSuffixes
      Proof:
        Consider the dependency graph
          1:S:matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
             -->_1 matrixMult#1#(::(@l,@ls),@m2) -> c_14(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2)):2
          
          2:S:matrixMult#1#(::(@l,@ls),@m2) -> c_14(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
             -->_1 computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m)):3
             -->_2 matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2)):1
          
          3:W:computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m))
             -->_1 computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs)):4
          
          4:W:computeLine#1#(::(@x,@xs),@acc,@m) -> c_4(computeLine#2#(@m,@acc,@x,@xs))
             -->_1 computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)),lineMult#(@x,@l,@acc)):5
          
          5:W:computeLine#2#(::(@l,@ls),@acc,@x,@xs) -> c_6(computeLine#(@xs,@ls,lineMult(@x,@l,@acc)),lineMult#(@x,@l,@acc))
             -->_2 lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n)):6
             -->_1 computeLine#(@line,@m,@acc) -> c_3(computeLine#1#(@line,@acc,@m)):3
          
          6:W:lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n))
             -->_1 lineMult#1#(::(@x,@xs),@l2,@n) -> c_9(lineMult#2#(@l2,@n,@x,@xs)):7
          
          7:W:lineMult#1#(::(@x,@xs),@l2,@n) -> c_9(lineMult#2#(@l2,@n,@x,@xs))
             -->_1 lineMult#2#(nil(),@n,@x,@xs) -> c_12(lineMult#(@n,@xs,nil())):9
             -->_1 lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_11(lineMult#(@n,@xs,@ys)):8
          
          8:W:lineMult#2#(::(@y,@ys),@n,@x,@xs) -> c_11(lineMult#(@n,@xs,@ys))
             -->_1 lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n)):6
          
          9:W:lineMult#2#(nil(),@n,@x,@xs) -> c_12(lineMult#(@n,@xs,nil()))
             -->_1 lineMult#(@n,@l1,@l2) -> c_8(lineMult#1#(@l1,@l2,@n)):6
          
        The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
          3: computeLine#(@line,@m,@acc) ->                               
               c_3(computeLine#1#(@line                                   
                                 ,@acc                                    
                                 ,@m))                                    
          5: computeLine#2#(::(@l,@ls)                                    
                           ,@acc                                          
                           ,@x                                            
                           ,@xs) -> c_6(computeLine#(@xs                  
                                                    ,@ls                  
                                                    ,lineMult(@x,@l,@acc))
                                       ,lineMult#(@x,@l,@acc))            
          4: computeLine#1#(::(@x,@xs)                                    
                           ,@acc                                          
                           ,@m) -> c_4(computeLine#2#(@m                  
                                                     ,@acc                
                                                     ,@x                  
                                                     ,@xs))               
          6: lineMult#(@n,@l1,@l2) ->                                     
               c_8(lineMult#1#(@l1,@l2,@n))                               
          9: lineMult#2#(nil(),@n,@x,@xs) ->                              
               c_12(lineMult#(@n,@xs,nil()))                              
          7: lineMult#1#(::(@x,@xs)                                       
                        ,@l2                                              
                        ,@n) -> c_9(lineMult#2#(@l2                       
                                               ,@n                        
                                               ,@x                        
                                               ,@xs))                     
          8: lineMult#2#(::(@y,@ys)                                       
                        ,@n                                               
                        ,@x                                               
                        ,@xs) -> c_11(lineMult#(@n                        
                                               ,@xs                       
                                               ,@ys))                     
  *** 1.1.1.1.1.1.2.1 Progress [(?,O(n^1))]  ***
      Considered Problem:
        Strict DP Rules:
          matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
          matrixMult#1#(::(@l,@ls),@m2) -> c_14(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)
          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()))
        Signature:
          {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4,matrixMult/2,matrixMult#1/2,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/2,c_15/0,c_16/0,c_17/1,c_18/2,c_19/1,c_20/2,c_21/0,c_22/0,c_23/0,c_24/0,c_25/1,c_26/1,c_27/0,c_28/1,c_29/1,c_30/0,c_31/2,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0}
        Obligation:
          Innermost
          basic terms: {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#}/{#0,#neg,#pos,#s,::,nil}
      Applied Processor:
        SimplifyRHS
      Proof:
        Consider the dependency graph
          1:S:matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
             -->_1 matrixMult#1#(::(@l,@ls),@m2) -> c_14(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2)):2
          
          2:S:matrixMult#1#(::(@l,@ls),@m2) -> c_14(computeLine#(@l,@m2,nil()),matrixMult#(@ls,@m2))
             -->_2 matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2)):1
          
        Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified:
          matrixMult#1#(::(@l,@ls),@m2) -> c_14(matrixMult#(@ls,@m2))
  *** 1.1.1.1.1.1.2.1.1 Progress [(?,O(n^1))]  ***
      Considered Problem:
        Strict DP Rules:
          matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
          matrixMult#1#(::(@l,@ls),@m2) -> c_14(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)
          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()))
        Signature:
          {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4,matrixMult/2,matrixMult#1/2,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/0,c_17/1,c_18/2,c_19/1,c_20/2,c_21/0,c_22/0,c_23/0,c_24/0,c_25/1,c_26/1,c_27/0,c_28/1,c_29/1,c_30/0,c_31/2,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0}
        Obligation:
          Innermost
          basic terms: {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#}/{#0,#neg,#pos,#s,::,nil}
      Applied Processor:
        UsableRules
      Proof:
        We replace rewrite rules by usable rules:
          matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
          matrixMult#1#(::(@l,@ls),@m2) -> c_14(matrixMult#(@ls,@m2))
  *** 1.1.1.1.1.1.2.1.1.1 Progress [(?,O(n^1))]  ***
      Considered Problem:
        Strict DP Rules:
          matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
          matrixMult#1#(::(@l,@ls),@m2) -> c_14(matrixMult#(@ls,@m2))
        Strict TRS Rules:
          
        Weak DP Rules:
          
        Weak TRS Rules:
          
        Signature:
          {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4,matrixMult/2,matrixMult#1/2,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/0,c_17/1,c_18/2,c_19/1,c_20/2,c_21/0,c_22/0,c_23/0,c_24/0,c_25/1,c_26/1,c_27/0,c_28/1,c_29/1,c_30/0,c_31/2,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0}
        Obligation:
          Innermost
          basic terms: {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#}/{#0,#neg,#pos,#s,::,nil}
      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_14(matrixMult#(@ls,@m2))    
          
        Consider the set of all dependency pairs
          1: matrixMult#(@m1,@m2) ->         
               c_13(matrixMult#1#(@m1,@m2))  
          2: matrixMult#1#(::(@l,@ls),@m2) ->
               c_14(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}
        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.2.1.1.1.1 Progress [(?,O(n^1))]  ***
        Considered Problem:
          Strict DP Rules:
            matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
            matrixMult#1#(::(@l,@ls),@m2) -> c_14(matrixMult#(@ls,@m2))
          Strict TRS Rules:
            
          Weak DP Rules:
            
          Weak TRS Rules:
            
          Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4,matrixMult/2,matrixMult#1/2,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/0,c_17/1,c_18/2,c_19/1,c_20/2,c_21/0,c_22/0,c_23/0,c_24/0,c_25/1,c_26/1,c_27/0,c_28/1,c_29/1,c_30/0,c_31/2,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0}
          Obligation:
            Innermost
            basic terms: {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#}/{#0,#neg,#pos,#s,::,nil}
        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_13) = {1},
            uargs(c_14) = {1}
          
          Following symbols are considered usable:
            {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#}
          TcT has computed the following interpretation:
                        p(#0) = [1]                           
                      p(#add) = [1]                           
                     p(#mult) = [0]                           
                  p(#natmult) = [4] x2 + [0]                  
                      p(#neg) = [0]                           
                      p(#pos) = [2]                           
                     p(#pred) = [1] x1 + [2]                  
                        p(#s) = [2]                           
                     p(#succ) = [0]                           
                         p(*) = [1]                           
                         p(+) = [1] x1 + [0]                  
                        p(::) = [1] x1 + [1] x2 + [7]         
               p(computeLine) = [4] x1 + [0]                  
             p(computeLine#1) = [0]                           
             p(computeLine#2) = [1] x1 + [1] x2 + [4] x3 + [1]
                  p(lineMult) = [0]                           
                p(lineMult#1) = [0]                           
                p(lineMult#2) = [0]                           
                p(matrixMult) = [0]                           
              p(matrixMult#1) = [0]                           
                       p(nil) = [0]                           
                     p(#add#) = [0]                           
                    p(#mult#) = [0]                           
                 p(#natmult#) = [0]                           
                    p(#pred#) = [0]                           
                    p(#succ#) = [0]                           
                        p(*#) = [0]                           
                        p(+#) = [0]                           
              p(computeLine#) = [0]                           
            p(computeLine#1#) = [0]                           
            p(computeLine#2#) = [0]                           
                 p(lineMult#) = [0]                           
               p(lineMult#1#) = [0]                           
               p(lineMult#2#) = [0]                           
               p(matrixMult#) = [1] x1 + [2] x2 + [1]         
             p(matrixMult#1#) = [1] x1 + [2] x2 + [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) = [1] x1 + [0]                  
                      p(c_12) = [0]                           
                      p(c_13) = [1] x1 + [1]                  
                      p(c_14) = [1] x1 + [2]                  
                      p(c_15) = [2]                           
                      p(c_16) = [1]                           
                      p(c_17) = [1] x1 + [8]                  
                      p(c_18) = [1] x1 + [1] x2 + [1]         
                      p(c_19) = [2] x1 + [8]                  
                      p(c_20) = [1] x1 + [1] x2 + [1]         
                      p(c_21) = [1]                           
                      p(c_22) = [8]                           
                      p(c_23) = [1]                           
                      p(c_24) = [8]                           
                      p(c_25) = [1]                           
                      p(c_26) = [1] x1 + [1]                  
                      p(c_27) = [0]                           
                      p(c_28) = [2]                           
                      p(c_29) = [4] x1 + [1]                  
                      p(c_30) = [0]                           
                      p(c_31) = [2]                           
                      p(c_32) = [1]                           
                      p(c_33) = [1]                           
                      p(c_34) = [2]                           
                      p(c_35) = [1]                           
                      p(c_36) = [1]                           
                      p(c_37) = [2]                           
                      p(c_38) = [1]                           
                      p(c_39) = [1]                           
          
          Following rules are strictly oriented:
          matrixMult#1#(::(@l,@ls),@m2) = [1] @l + [1] @ls + [2] @m2 + [7]
                                        > [1] @ls + [2] @m2 + [3]         
                                        = c_14(matrixMult#(@ls,@m2))      
          
          
          Following rules are (at-least) weakly oriented:
          matrixMult#(@m1,@m2) =  [1] @m1 + [2] @m2 + [1]     
                               >= [1] @m1 + [2] @m2 + [1]     
                               =  c_13(matrixMult#1#(@m1,@m2))
          
    *** 1.1.1.1.1.1.2.1.1.1.1.1 Progress [(?,O(1))]  ***
        Considered Problem:
          Strict DP Rules:
            matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
          Strict TRS Rules:
            
          Weak DP Rules:
            matrixMult#1#(::(@l,@ls),@m2) -> c_14(matrixMult#(@ls,@m2))
          Weak TRS Rules:
            
          Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4,matrixMult/2,matrixMult#1/2,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/0,c_17/1,c_18/2,c_19/1,c_20/2,c_21/0,c_22/0,c_23/0,c_24/0,c_25/1,c_26/1,c_27/0,c_28/1,c_29/1,c_30/0,c_31/2,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0}
          Obligation:
            Innermost
            basic terms: {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#}/{#0,#neg,#pos,#s,::,nil}
        Applied Processor:
          Assumption
        Proof:
          ()
    
    *** 1.1.1.1.1.1.2.1.1.1.2 Progress [(O(1),O(1))]  ***
        Considered Problem:
          Strict DP Rules:
            
          Strict TRS Rules:
            
          Weak DP Rules:
            matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
            matrixMult#1#(::(@l,@ls),@m2) -> c_14(matrixMult#(@ls,@m2))
          Weak TRS Rules:
            
          Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4,matrixMult/2,matrixMult#1/2,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/0,c_17/1,c_18/2,c_19/1,c_20/2,c_21/0,c_22/0,c_23/0,c_24/0,c_25/1,c_26/1,c_27/0,c_28/1,c_29/1,c_30/0,c_31/2,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0}
          Obligation:
            Innermost
            basic terms: {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#}/{#0,#neg,#pos,#s,::,nil}
        Applied Processor:
          RemoveWeakSuffixes
        Proof:
          Consider the dependency graph
            1:W:matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2))
               -->_1 matrixMult#1#(::(@l,@ls),@m2) -> c_14(matrixMult#(@ls,@m2)):2
            
            2:W:matrixMult#1#(::(@l,@ls),@m2) -> c_14(matrixMult#(@ls,@m2))
               -->_1 matrixMult#(@m1,@m2) -> c_13(matrixMult#1#(@m1,@m2)):1
            
          The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
            1: matrixMult#(@m1,@m2) ->         
                 c_13(matrixMult#1#(@m1,@m2))  
            2: matrixMult#1#(::(@l,@ls),@m2) ->
                 c_14(matrixMult#(@ls,@m2))    
    *** 1.1.1.1.1.1.2.1.1.1.2.1 Progress [(O(1),O(1))]  ***
        Considered Problem:
          Strict DP Rules:
            
          Strict TRS Rules:
            
          Weak DP Rules:
            
          Weak TRS Rules:
            
          Signature:
            {#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4,matrixMult/2,matrixMult#1/2,#add#/2,#mult#/2,#natmult#/2,#pred#/1,#succ#/1,*#/2,+#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/1,c_12/1,c_13/1,c_14/1,c_15/0,c_16/0,c_17/1,c_18/2,c_19/1,c_20/2,c_21/0,c_22/0,c_23/0,c_24/0,c_25/1,c_26/1,c_27/0,c_28/1,c_29/1,c_30/0,c_31/2,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0}
          Obligation:
            Innermost
            basic terms: {#add#,#mult#,#natmult#,#pred#,#succ#,*#,+#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#}/{#0,#neg,#pos,#s,::,nil}
        Applied Processor:
          EmptyProcessor
        Proof:
          The problem is already closed. The intended complexity is O(1).