YES(O(1),O(n^3))
767.45/212.83	YES(O(1),O(n^3))
767.45/212.83	
767.45/212.83	We are left with following problem, upon which TcT provides the
767.45/212.83	certificate YES(O(1),O(n^3)).
767.45/212.83	
767.45/212.83	Strict Trs:
767.45/212.83	  { m1(@x) ->
767.45/212.83	    ::(::(#abs(#pos(#s(#0()))),
767.45/212.83	          ::(#abs(#pos(#s(#s(#0())))),
767.45/212.83	             ::(#abs(#pos(#s(#s(#s(#0()))))), nil()))),
767.45/212.83	       ::(::(#abs(#pos(#s(#s(#0())))),
767.45/212.83	             ::(#abs(#pos(#s(#s(#s(#0()))))),
767.45/212.83	                ::(#abs(#pos(#s(#s(#s(#s(#0())))))), nil()))),
767.45/212.83	          nil()))
767.45/212.83	  , matrixMultList(@acc, @mm) -> matrixMultList#1(@mm, @acc)
767.45/212.83	  , m4(@x) ->
767.45/212.83	    ::(::(#abs(#pos(#s(#0()))), nil()),
767.45/212.83	       ::(::(#abs(#pos(#s(#s(#0())))), nil()),
767.45/212.83	          ::(::(#abs(#pos(#s(#s(#s(#0()))))), nil()),
767.45/212.83	             ::(::(#abs(#pos(#s(#s(#s(#s(#0())))))), nil()), nil()))))
767.45/212.83	  , attach(@line, @m) -> attach#1(@line, @m)
767.45/212.83	  , split(@m) -> split#1(@m)
767.45/212.83	  , matrixMult3(@m1, @m2, @m3) ->
767.45/212.83	    matrixMult(matrixMult(@m1, @m2), @m3)
767.45/212.83	  , mult#2(nil(), @x, @xs) -> #abs(#0())
767.45/212.83	  , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
767.45/212.83	  , transpose'(@m) -> transAcc(@m, makeBase(@m))
767.45/212.83	  , split#1(nil()) -> tuple#2(nil(), nil())
767.45/212.83	  , split#1(::(@l, @ls)) -> split#2(@l, @ls)
767.45/212.83	  , transpose(@m) -> transpose#1(@m, @m)
767.45/212.83	  , m2(@x) ->
767.45/212.83	    ::(::(#abs(#pos(#s(#0()))), ::(#abs(#pos(#s(#s(#0())))), nil())),
767.45/212.83	       ::(::(#abs(#pos(#s(#s(#0())))),
767.45/212.83	             ::(#abs(#pos(#s(#s(#s(#0()))))), nil())),
767.45/212.83	          ::(::(#abs(#pos(#s(#s(#s(#s(#0())))))),
767.45/212.83	                ::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))), nil())),
767.45/212.83	             nil())))
767.45/212.83	  , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
767.45/212.83	  , transAcc(@m, @base) -> transAcc#1(@m, @base)
767.45/212.83	  , mult(@l1, @l2) -> mult#1(@l1, @l2)
767.45/212.83	  , +(@x, @y) -> #add(@x, @y)
767.45/212.83	  , transAcc#1(nil(), @base) -> @base
767.45/212.83	  , transAcc#1(::(@l, @m'), @base) ->
767.45/212.83	    attach(@l, transAcc(@m', @base))
767.45/212.83	  , matrixMultList#1(nil(), @acc) -> @acc
767.45/212.83	  , matrixMultList#1(::(@m, @ms), @acc) ->
767.45/212.83	    matrixMultList(matrixMult(@acc, @m), @ms)
767.45/212.83	  , *(@x, @y) -> #mult(@x, @y)
767.45/212.83	  , mkBase#1(nil()) -> nil()
767.45/212.83	  , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.45/212.83	  , transpose#3(nil(), @l) -> nil()
767.45/212.83	  , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
767.45/212.83	  , attach#1(nil(), @m) -> nil()
767.45/212.83	  , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.45/212.83	  , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
767.45/212.83	  , matrixMult'#1(nil(), @m2) -> nil()
767.45/212.83	  , matrixMult'#1(::(@l, @ls), @m2) ->
767.45/212.83	    ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
767.45/212.83	  , matrixMultOld(@m1, @m2) -> matrixMult'(@m1, transpose(@m2))
767.45/212.83	  , split#2(nil(), @ls) -> tuple#2(nil(), nil())
767.45/212.83	  , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
767.45/212.83	  , mkBase(@m) -> mkBase#1(@m)
767.45/212.83	  , makeBase(@m) -> makeBase#1(@m)
767.45/212.83	  , mult#1(nil(), @l2) -> #abs(#0())
767.45/212.83	  , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
767.45/212.83	  , lineMult#1(nil(), @l) -> nil()
767.45/212.83	  , lineMult#1(::(@x, @xs), @l) ->
767.45/212.83	    ::(mult(@l, @x), lineMult(@l, @xs))
767.45/212.83	  , attach#2(nil(), @x, @xs) -> nil()
767.45/212.83	  , attach#2(::(@l, @ls), @x, @xs) ->
767.45/212.83	    ::(::(@x, @l), attach(@xs, @ls))
767.45/212.83	  , makeBase#1(nil()) -> nil()
767.45/212.83	  , makeBase#1(::(@l, @m')) -> mkBase(@l)
767.45/212.83	  , m3(@x) ->
767.45/212.83	    ::(::(#abs(#pos(#s(#0()))),
767.45/212.83	          ::(#abs(#pos(#s(#s(#0())))),
767.45/212.83	             ::(#abs(#pos(#s(#s(#s(#0()))))),
767.45/212.83	                ::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))), nil())))),
767.45/212.83	       ::(::(#abs(#pos(#s(#s(#0())))),
767.45/212.83	             ::(#abs(#pos(#s(#s(#s(#0()))))),
767.45/212.83	                ::(#abs(#pos(#s(#s(#s(#s(#0())))))),
767.45/212.83	                   ::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))), nil())))),
767.45/212.83	          nil()))
767.45/212.83	  , matrixMult(@m1, @m2) ->
767.45/212.83	    matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
767.45/212.83	  , #abs(#neg(@x)) -> #pos(@x)
767.45/212.83	  , #abs(#pos(@x)) -> #pos(@x)
767.45/212.83	  , #abs(#0()) -> #0()
767.45/212.83	  , #abs(#s(@x)) -> #pos(#s(@x))
767.45/212.83	  , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
767.45/212.83	  , transpose#1(nil(), @m) -> nil()
767.45/212.83	  , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
767.45/212.83	  , split#3(tuple#2(@ys, @m'), @x, @xs) ->
767.45/212.83	    tuple#2(::(@x, @ys), ::(@xs, @m')) }
767.45/212.83	Weak Trs:
767.45/212.83	  { #add(#neg(#s(#0())), @y) -> #pred(@y)
767.45/212.83	  , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
767.45/212.83	  , #add(#pos(#s(#0())), @y) -> #succ(@y)
767.45/212.83	  , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
767.45/212.83	  , #add(#0(), @y) -> @y
767.45/212.83	  , #natmult(#0(), @y) -> #0()
767.45/212.83	  , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
767.45/212.83	  , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
767.45/212.83	  , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
767.45/212.83	  , #mult(#neg(@x), #0()) -> #0()
767.45/212.83	  , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
767.45/212.83	  , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
767.45/212.83	  , #mult(#pos(@x), #0()) -> #0()
767.45/212.83	  , #mult(#0(), #neg(@y)) -> #0()
767.45/212.83	  , #mult(#0(), #pos(@y)) -> #0()
767.45/212.83	  , #mult(#0(), #0()) -> #0()
767.45/212.83	  , #succ(#neg(#s(#0()))) -> #0()
767.45/212.83	  , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
767.45/212.83	  , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
767.45/212.83	  , #succ(#0()) -> #pos(#s(#0()))
767.45/212.83	  , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
767.45/212.83	  , #pred(#pos(#s(#0()))) -> #0()
767.45/212.83	  , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
767.45/212.83	  , #pred(#0()) -> #neg(#s(#0())) }
767.45/212.83	Obligation:
767.45/212.83	  innermost runtime complexity
767.45/212.83	Answer:
767.45/212.83	  YES(O(1),O(n^3))
767.45/212.83	
767.45/212.83	We add the following dependency tuples:
767.45/212.83	
767.45/212.83	Strict DPs:
767.45/212.83	  { m1^#(@x) ->
767.45/212.83	    c_1(#abs^#(#pos(#s(#0()))),
767.45/212.83	        #abs^#(#pos(#s(#s(#0())))),
767.45/212.83	        #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.83	        #abs^#(#pos(#s(#s(#0())))),
767.45/212.83	        #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.83	        #abs^#(#pos(#s(#s(#s(#s(#0())))))))
767.45/212.83	  , #abs^#(#neg(@x)) -> c_47()
767.45/212.83	  , #abs^#(#pos(@x)) -> c_48()
767.45/212.83	  , #abs^#(#0()) -> c_49()
767.45/212.83	  , #abs^#(#s(@x)) -> c_50()
767.45/212.83	  , matrixMultList^#(@acc, @mm) -> c_2(matrixMultList#1^#(@mm, @acc))
767.45/212.83	  , matrixMultList#1^#(nil(), @acc) -> c_20()
767.45/212.83	  , matrixMultList#1^#(::(@m, @ms), @acc) ->
767.45/212.83	    c_21(matrixMultList^#(matrixMult(@acc, @m), @ms),
767.45/212.83	         matrixMult^#(@acc, @m))
767.45/212.83	  , m4^#(@x) ->
767.45/212.83	    c_3(#abs^#(#pos(#s(#0()))),
767.45/212.83	        #abs^#(#pos(#s(#s(#0())))),
767.45/212.83	        #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.83	        #abs^#(#pos(#s(#s(#s(#s(#0())))))))
767.45/212.83	  , attach^#(@line, @m) -> c_4(attach#1^#(@line, @m))
767.45/212.83	  , attach#1^#(nil(), @m) -> c_27()
767.45/212.83	  , attach#1^#(::(@x, @xs), @m) -> c_28(attach#2^#(@m, @x, @xs))
767.45/212.83	  , split^#(@m) -> c_5(split#1^#(@m))
767.45/212.83	  , split#1^#(nil()) -> c_10()
767.45/212.83	  , split#1^#(::(@l, @ls)) -> c_11(split#2^#(@l, @ls))
767.45/212.83	  , matrixMult3^#(@m1, @m2, @m3) ->
767.45/212.83	    c_6(matrixMult^#(matrixMult(@m1, @m2), @m3),
767.45/212.83	        matrixMult^#(@m1, @m2))
767.45/212.83	  , matrixMult^#(@m1, @m2) ->
767.45/212.83	    c_46(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))),
767.45/212.83	         transAcc^#(@m2, makeBase(@m2)),
767.45/212.83	         makeBase^#(@m2))
767.45/212.83	  , mult#2^#(nil(), @x, @xs) -> c_7(#abs^#(#0()))
767.45/212.83	  , mult#2^#(::(@y, @ys), @x, @xs) ->
767.45/212.83	    c_8(+^#(*(@x, @y), mult(@xs, @ys)), *^#(@x, @y), mult^#(@xs, @ys))
767.45/212.83	  , +^#(@x, @y) -> c_17(#add^#(@x, @y))
767.45/212.83	  , *^#(@x, @y) -> c_22(#mult^#(@x, @y))
767.45/212.83	  , mult^#(@l1, @l2) -> c_16(mult#1^#(@l1, @l2))
767.45/212.83	  , transpose'^#(@m) ->
767.45/212.83	    c_9(transAcc^#(@m, makeBase(@m)), makeBase^#(@m))
767.45/212.83	  , transAcc^#(@m, @base) -> c_15(transAcc#1^#(@m, @base))
767.45/212.83	  , makeBase^#(@m) -> c_36(makeBase#1^#(@m))
767.45/212.83	  , split#2^#(nil(), @ls) -> c_33()
767.45/212.83	  , split#2^#(::(@x, @xs), @ls) ->
767.45/212.83	    c_34(split#3^#(split(@ls), @x, @xs), split^#(@ls))
767.45/212.83	  , transpose^#(@m) -> c_12(transpose#1^#(@m, @m))
767.45/212.83	  , transpose#1^#(nil(), @m) -> c_52()
767.45/212.83	  , transpose#1^#(::(@xs, @xss), @m) ->
767.45/212.83	    c_53(transpose#2^#(split(@m)), split^#(@m))
767.45/212.83	  , m2^#(@x) ->
767.45/212.83	    c_13(#abs^#(#pos(#s(#0()))),
767.45/212.83	         #abs^#(#pos(#s(#s(#0())))),
767.45/212.83	         #abs^#(#pos(#s(#s(#0())))),
767.45/212.83	         #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.83	         #abs^#(#pos(#s(#s(#s(#s(#0())))))),
767.45/212.83	         #abs^#(#pos(#s(#s(#s(#s(#s(#0()))))))))
767.45/212.83	  , matrixMult'^#(@m1, @m2) -> c_14(matrixMult'#1^#(@m1, @m2))
767.45/212.83	  , matrixMult'#1^#(nil(), @m2) -> c_30()
767.45/212.83	  , matrixMult'#1^#(::(@l, @ls), @m2) ->
767.45/212.83	    c_31(lineMult^#(@l, @m2), matrixMult'^#(@ls, @m2))
767.45/212.83	  , transAcc#1^#(nil(), @base) -> c_18()
767.45/212.83	  , transAcc#1^#(::(@l, @m'), @base) ->
767.45/212.83	    c_19(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
767.45/212.83	  , mult#1^#(nil(), @l2) -> c_37(#abs^#(#0()))
767.45/212.83	  , mult#1^#(::(@x, @xs), @l2) -> c_38(mult#2^#(@l2, @x, @xs))
767.45/212.83	  , mkBase#1^#(nil()) -> c_23()
767.45/212.83	  , mkBase#1^#(::(@l, @m')) -> c_24(mkBase^#(@m'))
767.45/212.83	  , mkBase^#(@m) -> c_35(mkBase#1^#(@m))
767.45/212.83	  , transpose#3^#(nil(), @l) -> c_25()
767.45/212.83	  , transpose#3^#(::(@y, @ys), @l) -> c_26(transpose^#(::(@y, @ys)))
767.45/212.83	  , attach#2^#(nil(), @x, @xs) -> c_41()
767.45/212.83	  , attach#2^#(::(@l, @ls), @x, @xs) -> c_42(attach^#(@xs, @ls))
767.45/212.83	  , transpose#2^#(tuple#2(@l, @m')) -> c_29(transpose#3^#(@m', @l))
767.45/212.83	  , lineMult^#(@l, @m2) -> c_51(lineMult#1^#(@m2, @l))
767.45/212.83	  , matrixMultOld^#(@m1, @m2) ->
767.45/212.83	    c_32(matrixMult'^#(@m1, transpose(@m2)), transpose^#(@m2))
767.45/212.83	  , split#3^#(tuple#2(@ys, @m'), @x, @xs) -> c_54()
767.45/212.83	  , makeBase#1^#(nil()) -> c_43()
767.45/212.83	  , makeBase#1^#(::(@l, @m')) -> c_44(mkBase^#(@l))
767.45/212.83	  , lineMult#1^#(nil(), @l) -> c_39()
767.45/212.83	  , lineMult#1^#(::(@x, @xs), @l) ->
767.45/212.83	    c_40(mult^#(@l, @x), lineMult^#(@l, @xs))
767.45/212.83	  , m3^#(@x) ->
767.45/212.83	    c_45(#abs^#(#pos(#s(#0()))),
767.45/212.83	         #abs^#(#pos(#s(#s(#0())))),
767.45/212.83	         #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.83	         #abs^#(#pos(#s(#s(#s(#s(#s(#0()))))))),
767.45/212.83	         #abs^#(#pos(#s(#s(#0())))),
767.45/212.83	         #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.83	         #abs^#(#pos(#s(#s(#s(#s(#0())))))),
767.45/212.83	         #abs^#(#pos(#s(#s(#s(#s(#s(#0())))))))) }
767.45/212.83	Weak DPs:
767.45/212.83	  { #add^#(#neg(#s(#0())), @y) -> c_55(#pred^#(@y))
767.45/212.83	  , #add^#(#neg(#s(#s(@x))), @y) ->
767.45/212.83	    c_56(#pred^#(#add(#pos(#s(@x)), @y)), #add^#(#pos(#s(@x)), @y))
767.45/212.83	  , #add^#(#pos(#s(#0())), @y) -> c_57(#succ^#(@y))
767.45/212.83	  , #add^#(#pos(#s(#s(@x))), @y) ->
767.45/212.83	    c_58(#succ^#(#add(#pos(#s(@x)), @y)), #add^#(#pos(#s(@x)), @y))
767.45/212.83	  , #add^#(#0(), @y) -> c_59()
767.45/212.83	  , #mult^#(#neg(@x), #neg(@y)) -> c_62(#natmult^#(@x, @y))
767.45/212.83	  , #mult^#(#neg(@x), #pos(@y)) -> c_63(#natmult^#(@x, @y))
767.45/212.83	  , #mult^#(#neg(@x), #0()) -> c_64()
767.45/212.83	  , #mult^#(#pos(@x), #neg(@y)) -> c_65(#natmult^#(@x, @y))
767.45/212.83	  , #mult^#(#pos(@x), #pos(@y)) -> c_66(#natmult^#(@x, @y))
767.45/212.83	  , #mult^#(#pos(@x), #0()) -> c_67()
767.45/212.83	  , #mult^#(#0(), #neg(@y)) -> c_68()
767.45/212.83	  , #mult^#(#0(), #pos(@y)) -> c_69()
767.45/212.83	  , #mult^#(#0(), #0()) -> c_70()
767.45/212.83	  , #pred^#(#neg(#s(@x))) -> c_75()
767.45/212.83	  , #pred^#(#pos(#s(#0()))) -> c_76()
767.45/212.83	  , #pred^#(#pos(#s(#s(@x)))) -> c_77()
767.45/212.83	  , #pred^#(#0()) -> c_78()
767.45/212.83	  , #succ^#(#neg(#s(#0()))) -> c_71()
767.45/212.83	  , #succ^#(#neg(#s(#s(@x)))) -> c_72()
767.45/212.83	  , #succ^#(#pos(#s(@x))) -> c_73()
767.45/212.83	  , #succ^#(#0()) -> c_74()
767.45/212.83	  , #natmult^#(#0(), @y) -> c_60()
767.45/212.83	  , #natmult^#(#s(@x), @y) ->
767.45/212.83	    c_61(#add^#(#pos(@y), #natmult(@x, @y)), #natmult^#(@x, @y)) }
767.45/212.83	
767.45/212.83	and mark the set of starting terms.
767.45/212.83	
767.45/212.83	We are left with following problem, upon which TcT provides the
767.45/212.83	certificate YES(O(1),O(n^3)).
767.45/212.83	
767.45/212.83	Strict DPs:
767.45/212.83	  { m1^#(@x) ->
767.45/212.83	    c_1(#abs^#(#pos(#s(#0()))),
767.45/212.83	        #abs^#(#pos(#s(#s(#0())))),
767.45/212.83	        #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.83	        #abs^#(#pos(#s(#s(#0())))),
767.45/212.83	        #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.83	        #abs^#(#pos(#s(#s(#s(#s(#0())))))))
767.45/212.83	  , #abs^#(#neg(@x)) -> c_47()
767.45/212.83	  , #abs^#(#pos(@x)) -> c_48()
767.45/212.83	  , #abs^#(#0()) -> c_49()
767.45/212.83	  , #abs^#(#s(@x)) -> c_50()
767.45/212.83	  , matrixMultList^#(@acc, @mm) -> c_2(matrixMultList#1^#(@mm, @acc))
767.45/212.83	  , matrixMultList#1^#(nil(), @acc) -> c_20()
767.45/212.83	  , matrixMultList#1^#(::(@m, @ms), @acc) ->
767.45/212.83	    c_21(matrixMultList^#(matrixMult(@acc, @m), @ms),
767.45/212.83	         matrixMult^#(@acc, @m))
767.45/212.83	  , m4^#(@x) ->
767.45/212.83	    c_3(#abs^#(#pos(#s(#0()))),
767.45/212.83	        #abs^#(#pos(#s(#s(#0())))),
767.45/212.83	        #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.83	        #abs^#(#pos(#s(#s(#s(#s(#0())))))))
767.45/212.83	  , attach^#(@line, @m) -> c_4(attach#1^#(@line, @m))
767.45/212.83	  , attach#1^#(nil(), @m) -> c_27()
767.45/212.83	  , attach#1^#(::(@x, @xs), @m) -> c_28(attach#2^#(@m, @x, @xs))
767.45/212.83	  , split^#(@m) -> c_5(split#1^#(@m))
767.45/212.83	  , split#1^#(nil()) -> c_10()
767.45/212.83	  , split#1^#(::(@l, @ls)) -> c_11(split#2^#(@l, @ls))
767.45/212.83	  , matrixMult3^#(@m1, @m2, @m3) ->
767.45/212.83	    c_6(matrixMult^#(matrixMult(@m1, @m2), @m3),
767.45/212.83	        matrixMult^#(@m1, @m2))
767.45/212.83	  , matrixMult^#(@m1, @m2) ->
767.45/212.83	    c_46(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))),
767.45/212.83	         transAcc^#(@m2, makeBase(@m2)),
767.45/212.83	         makeBase^#(@m2))
767.45/212.83	  , mult#2^#(nil(), @x, @xs) -> c_7(#abs^#(#0()))
767.45/212.83	  , mult#2^#(::(@y, @ys), @x, @xs) ->
767.45/212.83	    c_8(+^#(*(@x, @y), mult(@xs, @ys)), *^#(@x, @y), mult^#(@xs, @ys))
767.45/212.83	  , +^#(@x, @y) -> c_17(#add^#(@x, @y))
767.45/212.83	  , *^#(@x, @y) -> c_22(#mult^#(@x, @y))
767.45/212.83	  , mult^#(@l1, @l2) -> c_16(mult#1^#(@l1, @l2))
767.45/212.83	  , transpose'^#(@m) ->
767.45/212.83	    c_9(transAcc^#(@m, makeBase(@m)), makeBase^#(@m))
767.45/212.83	  , transAcc^#(@m, @base) -> c_15(transAcc#1^#(@m, @base))
767.45/212.83	  , makeBase^#(@m) -> c_36(makeBase#1^#(@m))
767.45/212.83	  , split#2^#(nil(), @ls) -> c_33()
767.45/212.83	  , split#2^#(::(@x, @xs), @ls) ->
767.45/212.83	    c_34(split#3^#(split(@ls), @x, @xs), split^#(@ls))
767.45/212.83	  , transpose^#(@m) -> c_12(transpose#1^#(@m, @m))
767.45/212.83	  , transpose#1^#(nil(), @m) -> c_52()
767.45/212.83	  , transpose#1^#(::(@xs, @xss), @m) ->
767.45/212.83	    c_53(transpose#2^#(split(@m)), split^#(@m))
767.45/212.83	  , m2^#(@x) ->
767.45/212.83	    c_13(#abs^#(#pos(#s(#0()))),
767.45/212.83	         #abs^#(#pos(#s(#s(#0())))),
767.45/212.83	         #abs^#(#pos(#s(#s(#0())))),
767.45/212.83	         #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.83	         #abs^#(#pos(#s(#s(#s(#s(#0())))))),
767.45/212.83	         #abs^#(#pos(#s(#s(#s(#s(#s(#0()))))))))
767.45/212.83	  , matrixMult'^#(@m1, @m2) -> c_14(matrixMult'#1^#(@m1, @m2))
767.45/212.83	  , matrixMult'#1^#(nil(), @m2) -> c_30()
767.45/212.83	  , matrixMult'#1^#(::(@l, @ls), @m2) ->
767.45/212.83	    c_31(lineMult^#(@l, @m2), matrixMult'^#(@ls, @m2))
767.45/212.83	  , transAcc#1^#(nil(), @base) -> c_18()
767.45/212.83	  , transAcc#1^#(::(@l, @m'), @base) ->
767.45/212.83	    c_19(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
767.45/212.83	  , mult#1^#(nil(), @l2) -> c_37(#abs^#(#0()))
767.45/212.83	  , mult#1^#(::(@x, @xs), @l2) -> c_38(mult#2^#(@l2, @x, @xs))
767.45/212.83	  , mkBase#1^#(nil()) -> c_23()
767.45/212.83	  , mkBase#1^#(::(@l, @m')) -> c_24(mkBase^#(@m'))
767.45/212.83	  , mkBase^#(@m) -> c_35(mkBase#1^#(@m))
767.45/212.83	  , transpose#3^#(nil(), @l) -> c_25()
767.45/212.83	  , transpose#3^#(::(@y, @ys), @l) -> c_26(transpose^#(::(@y, @ys)))
767.45/212.83	  , attach#2^#(nil(), @x, @xs) -> c_41()
767.45/212.83	  , attach#2^#(::(@l, @ls), @x, @xs) -> c_42(attach^#(@xs, @ls))
767.45/212.83	  , transpose#2^#(tuple#2(@l, @m')) -> c_29(transpose#3^#(@m', @l))
767.45/212.83	  , lineMult^#(@l, @m2) -> c_51(lineMult#1^#(@m2, @l))
767.45/212.83	  , matrixMultOld^#(@m1, @m2) ->
767.45/212.83	    c_32(matrixMult'^#(@m1, transpose(@m2)), transpose^#(@m2))
767.45/212.83	  , split#3^#(tuple#2(@ys, @m'), @x, @xs) -> c_54()
767.45/212.83	  , makeBase#1^#(nil()) -> c_43()
767.45/212.83	  , makeBase#1^#(::(@l, @m')) -> c_44(mkBase^#(@l))
767.45/212.83	  , lineMult#1^#(nil(), @l) -> c_39()
767.45/212.83	  , lineMult#1^#(::(@x, @xs), @l) ->
767.45/212.83	    c_40(mult^#(@l, @x), lineMult^#(@l, @xs))
767.45/212.83	  , m3^#(@x) ->
767.45/212.83	    c_45(#abs^#(#pos(#s(#0()))),
767.45/212.83	         #abs^#(#pos(#s(#s(#0())))),
767.45/212.83	         #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.83	         #abs^#(#pos(#s(#s(#s(#s(#s(#0()))))))),
767.45/212.83	         #abs^#(#pos(#s(#s(#0())))),
767.45/212.83	         #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.83	         #abs^#(#pos(#s(#s(#s(#s(#0())))))),
767.45/212.83	         #abs^#(#pos(#s(#s(#s(#s(#s(#0())))))))) }
767.45/212.83	Weak DPs:
767.45/212.83	  { #add^#(#neg(#s(#0())), @y) -> c_55(#pred^#(@y))
767.45/212.83	  , #add^#(#neg(#s(#s(@x))), @y) ->
767.45/212.83	    c_56(#pred^#(#add(#pos(#s(@x)), @y)), #add^#(#pos(#s(@x)), @y))
767.45/212.83	  , #add^#(#pos(#s(#0())), @y) -> c_57(#succ^#(@y))
767.45/212.83	  , #add^#(#pos(#s(#s(@x))), @y) ->
767.45/212.83	    c_58(#succ^#(#add(#pos(#s(@x)), @y)), #add^#(#pos(#s(@x)), @y))
767.45/212.83	  , #add^#(#0(), @y) -> c_59()
767.45/212.83	  , #mult^#(#neg(@x), #neg(@y)) -> c_62(#natmult^#(@x, @y))
767.45/212.83	  , #mult^#(#neg(@x), #pos(@y)) -> c_63(#natmult^#(@x, @y))
767.45/212.83	  , #mult^#(#neg(@x), #0()) -> c_64()
767.45/212.83	  , #mult^#(#pos(@x), #neg(@y)) -> c_65(#natmult^#(@x, @y))
767.45/212.83	  , #mult^#(#pos(@x), #pos(@y)) -> c_66(#natmult^#(@x, @y))
767.45/212.83	  , #mult^#(#pos(@x), #0()) -> c_67()
767.45/212.83	  , #mult^#(#0(), #neg(@y)) -> c_68()
767.45/212.83	  , #mult^#(#0(), #pos(@y)) -> c_69()
767.45/212.83	  , #mult^#(#0(), #0()) -> c_70()
767.45/212.83	  , #pred^#(#neg(#s(@x))) -> c_75()
767.45/212.83	  , #pred^#(#pos(#s(#0()))) -> c_76()
767.45/212.83	  , #pred^#(#pos(#s(#s(@x)))) -> c_77()
767.45/212.83	  , #pred^#(#0()) -> c_78()
767.45/212.83	  , #succ^#(#neg(#s(#0()))) -> c_71()
767.45/212.83	  , #succ^#(#neg(#s(#s(@x)))) -> c_72()
767.45/212.83	  , #succ^#(#pos(#s(@x))) -> c_73()
767.45/212.83	  , #succ^#(#0()) -> c_74()
767.45/212.83	  , #natmult^#(#0(), @y) -> c_60()
767.45/212.83	  , #natmult^#(#s(@x), @y) ->
767.45/212.83	    c_61(#add^#(#pos(@y), #natmult(@x, @y)), #natmult^#(@x, @y)) }
767.45/212.83	Weak Trs:
767.45/212.83	  { m1(@x) ->
767.45/212.83	    ::(::(#abs(#pos(#s(#0()))),
767.45/212.83	          ::(#abs(#pos(#s(#s(#0())))),
767.45/212.83	             ::(#abs(#pos(#s(#s(#s(#0()))))), nil()))),
767.45/212.83	       ::(::(#abs(#pos(#s(#s(#0())))),
767.45/212.83	             ::(#abs(#pos(#s(#s(#s(#0()))))),
767.45/212.83	                ::(#abs(#pos(#s(#s(#s(#s(#0())))))), nil()))),
767.45/212.83	          nil()))
767.45/212.83	  , matrixMultList(@acc, @mm) -> matrixMultList#1(@mm, @acc)
767.45/212.83	  , m4(@x) ->
767.45/212.83	    ::(::(#abs(#pos(#s(#0()))), nil()),
767.45/212.83	       ::(::(#abs(#pos(#s(#s(#0())))), nil()),
767.45/212.83	          ::(::(#abs(#pos(#s(#s(#s(#0()))))), nil()),
767.45/212.83	             ::(::(#abs(#pos(#s(#s(#s(#s(#0())))))), nil()), nil()))))
767.45/212.83	  , attach(@line, @m) -> attach#1(@line, @m)
767.45/212.83	  , split(@m) -> split#1(@m)
767.45/212.84	  , matrixMult3(@m1, @m2, @m3) ->
767.45/212.84	    matrixMult(matrixMult(@m1, @m2), @m3)
767.45/212.84	  , #add(#neg(#s(#0())), @y) -> #pred(@y)
767.45/212.84	  , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
767.45/212.84	  , #add(#pos(#s(#0())), @y) -> #succ(@y)
767.45/212.84	  , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
767.45/212.84	  , #add(#0(), @y) -> @y
767.45/212.84	  , mult#2(nil(), @x, @xs) -> #abs(#0())
767.45/212.84	  , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
767.45/212.84	  , transpose'(@m) -> transAcc(@m, makeBase(@m))
767.45/212.84	  , split#1(nil()) -> tuple#2(nil(), nil())
767.45/212.84	  , split#1(::(@l, @ls)) -> split#2(@l, @ls)
767.45/212.84	  , transpose(@m) -> transpose#1(@m, @m)
767.45/212.84	  , m2(@x) ->
767.45/212.84	    ::(::(#abs(#pos(#s(#0()))), ::(#abs(#pos(#s(#s(#0())))), nil())),
767.45/212.84	       ::(::(#abs(#pos(#s(#s(#0())))),
767.45/212.84	             ::(#abs(#pos(#s(#s(#s(#0()))))), nil())),
767.45/212.84	          ::(::(#abs(#pos(#s(#s(#s(#s(#0())))))),
767.45/212.84	                ::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))), nil())),
767.45/212.84	             nil())))
767.45/212.84	  , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
767.45/212.84	  , transAcc(@m, @base) -> transAcc#1(@m, @base)
767.45/212.84	  , mult(@l1, @l2) -> mult#1(@l1, @l2)
767.45/212.84	  , +(@x, @y) -> #add(@x, @y)
767.45/212.84	  , transAcc#1(nil(), @base) -> @base
767.45/212.84	  , transAcc#1(::(@l, @m'), @base) ->
767.45/212.84	    attach(@l, transAcc(@m', @base))
767.45/212.84	  , matrixMultList#1(nil(), @acc) -> @acc
767.45/212.84	  , matrixMultList#1(::(@m, @ms), @acc) ->
767.45/212.84	    matrixMultList(matrixMult(@acc, @m), @ms)
767.45/212.84	  , *(@x, @y) -> #mult(@x, @y)
767.45/212.84	  , mkBase#1(nil()) -> nil()
767.45/212.84	  , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.45/212.84	  , transpose#3(nil(), @l) -> nil()
767.45/212.84	  , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
767.45/212.84	  , attach#1(nil(), @m) -> nil()
767.45/212.84	  , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.45/212.84	  , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
767.45/212.84	  , matrixMult'#1(nil(), @m2) -> nil()
767.45/212.84	  , matrixMult'#1(::(@l, @ls), @m2) ->
767.45/212.84	    ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
767.45/212.84	  , #natmult(#0(), @y) -> #0()
767.45/212.84	  , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
767.45/212.84	  , matrixMultOld(@m1, @m2) -> matrixMult'(@m1, transpose(@m2))
767.45/212.84	  , split#2(nil(), @ls) -> tuple#2(nil(), nil())
767.45/212.84	  , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
767.45/212.84	  , mkBase(@m) -> mkBase#1(@m)
767.45/212.84	  , makeBase(@m) -> makeBase#1(@m)
767.45/212.84	  , mult#1(nil(), @l2) -> #abs(#0())
767.45/212.84	  , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
767.45/212.84	  , lineMult#1(nil(), @l) -> nil()
767.45/212.84	  , lineMult#1(::(@x, @xs), @l) ->
767.45/212.84	    ::(mult(@l, @x), lineMult(@l, @xs))
767.45/212.84	  , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
767.45/212.84	  , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
767.45/212.84	  , #mult(#neg(@x), #0()) -> #0()
767.45/212.84	  , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
767.45/212.84	  , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
767.45/212.84	  , #mult(#pos(@x), #0()) -> #0()
767.45/212.84	  , #mult(#0(), #neg(@y)) -> #0()
767.45/212.84	  , #mult(#0(), #pos(@y)) -> #0()
767.45/212.84	  , #mult(#0(), #0()) -> #0()
767.45/212.84	  , attach#2(nil(), @x, @xs) -> nil()
767.45/212.84	  , attach#2(::(@l, @ls), @x, @xs) ->
767.45/212.84	    ::(::(@x, @l), attach(@xs, @ls))
767.45/212.84	  , #succ(#neg(#s(#0()))) -> #0()
767.45/212.84	  , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
767.45/212.84	  , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
767.45/212.84	  , #succ(#0()) -> #pos(#s(#0()))
767.45/212.84	  , makeBase#1(nil()) -> nil()
767.45/212.84	  , makeBase#1(::(@l, @m')) -> mkBase(@l)
767.45/212.84	  , m3(@x) ->
767.45/212.84	    ::(::(#abs(#pos(#s(#0()))),
767.45/212.84	          ::(#abs(#pos(#s(#s(#0())))),
767.45/212.84	             ::(#abs(#pos(#s(#s(#s(#0()))))),
767.45/212.84	                ::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))), nil())))),
767.45/212.84	       ::(::(#abs(#pos(#s(#s(#0())))),
767.45/212.84	             ::(#abs(#pos(#s(#s(#s(#0()))))),
767.45/212.84	                ::(#abs(#pos(#s(#s(#s(#s(#0())))))),
767.45/212.84	                   ::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))), nil())))),
767.45/212.84	          nil()))
767.45/212.84	  , matrixMult(@m1, @m2) ->
767.45/212.84	    matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
767.45/212.84	  , #abs(#neg(@x)) -> #pos(@x)
767.45/212.84	  , #abs(#pos(@x)) -> #pos(@x)
767.45/212.84	  , #abs(#0()) -> #0()
767.45/212.84	  , #abs(#s(@x)) -> #pos(#s(@x))
767.45/212.84	  , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
767.45/212.84	  , transpose#1(nil(), @m) -> nil()
767.45/212.84	  , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
767.45/212.84	  , split#3(tuple#2(@ys, @m'), @x, @xs) ->
767.45/212.84	    tuple#2(::(@x, @ys), ::(@xs, @m'))
767.45/212.84	  , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
767.45/212.84	  , #pred(#pos(#s(#0()))) -> #0()
767.45/212.84	  , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
767.45/212.84	  , #pred(#0()) -> #neg(#s(#0())) }
767.45/212.84	Obligation:
767.45/212.84	  innermost runtime complexity
767.45/212.84	Answer:
767.45/212.84	  YES(O(1),O(n^3))
767.45/212.84	
767.45/212.84	We estimate the number of application of
767.45/212.84	{2,3,4,5,7,11,14,20,21,26,29,33,35,39,42,44,49,50,52} by
767.45/212.84	applications of
767.45/212.84	Pre({2,3,4,5,7,11,14,20,21,26,29,33,35,39,42,44,49,50,52}) =
767.45/212.84	{1,6,9,10,12,13,15,18,19,24,25,27,28,31,32,37,41,46,47,54}. Here
767.45/212.84	rules are labeled as follows:
767.45/212.84	
767.45/212.84	  DPs:
767.45/212.84	    { 1: m1^#(@x) ->
767.45/212.84	         c_1(#abs^#(#pos(#s(#0()))),
767.45/212.84	             #abs^#(#pos(#s(#s(#0())))),
767.45/212.84	             #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.84	             #abs^#(#pos(#s(#s(#0())))),
767.45/212.84	             #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.84	             #abs^#(#pos(#s(#s(#s(#s(#0())))))))
767.45/212.84	    , 2: #abs^#(#neg(@x)) -> c_47()
767.45/212.84	    , 3: #abs^#(#pos(@x)) -> c_48()
767.45/212.84	    , 4: #abs^#(#0()) -> c_49()
767.45/212.84	    , 5: #abs^#(#s(@x)) -> c_50()
767.45/212.84	    , 6: matrixMultList^#(@acc, @mm) ->
767.45/212.84	         c_2(matrixMultList#1^#(@mm, @acc))
767.45/212.84	    , 7: matrixMultList#1^#(nil(), @acc) -> c_20()
767.45/212.84	    , 8: matrixMultList#1^#(::(@m, @ms), @acc) ->
767.45/212.84	         c_21(matrixMultList^#(matrixMult(@acc, @m), @ms),
767.45/212.84	              matrixMult^#(@acc, @m))
767.45/212.84	    , 9: m4^#(@x) ->
767.45/212.84	         c_3(#abs^#(#pos(#s(#0()))),
767.45/212.84	             #abs^#(#pos(#s(#s(#0())))),
767.45/212.84	             #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.84	             #abs^#(#pos(#s(#s(#s(#s(#0())))))))
767.45/212.84	    , 10: attach^#(@line, @m) -> c_4(attach#1^#(@line, @m))
767.45/212.84	    , 11: attach#1^#(nil(), @m) -> c_27()
767.45/212.84	    , 12: attach#1^#(::(@x, @xs), @m) -> c_28(attach#2^#(@m, @x, @xs))
767.45/212.84	    , 13: split^#(@m) -> c_5(split#1^#(@m))
767.45/212.84	    , 14: split#1^#(nil()) -> c_10()
767.45/212.84	    , 15: split#1^#(::(@l, @ls)) -> c_11(split#2^#(@l, @ls))
767.45/212.84	    , 16: matrixMult3^#(@m1, @m2, @m3) ->
767.45/212.84	          c_6(matrixMult^#(matrixMult(@m1, @m2), @m3),
767.45/212.84	              matrixMult^#(@m1, @m2))
767.45/212.84	    , 17: matrixMult^#(@m1, @m2) ->
767.45/212.84	          c_46(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))),
767.45/212.84	               transAcc^#(@m2, makeBase(@m2)),
767.45/212.84	               makeBase^#(@m2))
767.45/212.84	    , 18: mult#2^#(nil(), @x, @xs) -> c_7(#abs^#(#0()))
767.45/212.84	    , 19: mult#2^#(::(@y, @ys), @x, @xs) ->
767.45/212.84	          c_8(+^#(*(@x, @y), mult(@xs, @ys)), *^#(@x, @y), mult^#(@xs, @ys))
767.45/212.84	    , 20: +^#(@x, @y) -> c_17(#add^#(@x, @y))
767.45/212.84	    , 21: *^#(@x, @y) -> c_22(#mult^#(@x, @y))
767.45/212.84	    , 22: mult^#(@l1, @l2) -> c_16(mult#1^#(@l1, @l2))
767.45/212.84	    , 23: transpose'^#(@m) ->
767.45/212.84	          c_9(transAcc^#(@m, makeBase(@m)), makeBase^#(@m))
767.45/212.84	    , 24: transAcc^#(@m, @base) -> c_15(transAcc#1^#(@m, @base))
767.45/212.84	    , 25: makeBase^#(@m) -> c_36(makeBase#1^#(@m))
767.45/212.84	    , 26: split#2^#(nil(), @ls) -> c_33()
767.45/212.84	    , 27: split#2^#(::(@x, @xs), @ls) ->
767.45/212.84	          c_34(split#3^#(split(@ls), @x, @xs), split^#(@ls))
767.45/212.84	    , 28: transpose^#(@m) -> c_12(transpose#1^#(@m, @m))
767.45/212.84	    , 29: transpose#1^#(nil(), @m) -> c_52()
767.45/212.84	    , 30: transpose#1^#(::(@xs, @xss), @m) ->
767.45/212.84	          c_53(transpose#2^#(split(@m)), split^#(@m))
767.45/212.84	    , 31: m2^#(@x) ->
767.45/212.84	          c_13(#abs^#(#pos(#s(#0()))),
767.45/212.84	               #abs^#(#pos(#s(#s(#0())))),
767.45/212.84	               #abs^#(#pos(#s(#s(#0())))),
767.45/212.84	               #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.84	               #abs^#(#pos(#s(#s(#s(#s(#0())))))),
767.45/212.84	               #abs^#(#pos(#s(#s(#s(#s(#s(#0()))))))))
767.45/212.84	    , 32: matrixMult'^#(@m1, @m2) -> c_14(matrixMult'#1^#(@m1, @m2))
767.45/212.84	    , 33: matrixMult'#1^#(nil(), @m2) -> c_30()
767.45/212.84	    , 34: matrixMult'#1^#(::(@l, @ls), @m2) ->
767.45/212.84	          c_31(lineMult^#(@l, @m2), matrixMult'^#(@ls, @m2))
767.45/212.84	    , 35: transAcc#1^#(nil(), @base) -> c_18()
767.45/212.84	    , 36: transAcc#1^#(::(@l, @m'), @base) ->
767.45/212.84	          c_19(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
767.45/212.84	    , 37: mult#1^#(nil(), @l2) -> c_37(#abs^#(#0()))
767.45/212.84	    , 38: mult#1^#(::(@x, @xs), @l2) -> c_38(mult#2^#(@l2, @x, @xs))
767.45/212.84	    , 39: mkBase#1^#(nil()) -> c_23()
767.45/212.84	    , 40: mkBase#1^#(::(@l, @m')) -> c_24(mkBase^#(@m'))
767.45/212.84	    , 41: mkBase^#(@m) -> c_35(mkBase#1^#(@m))
767.45/212.84	    , 42: transpose#3^#(nil(), @l) -> c_25()
767.45/212.84	    , 43: transpose#3^#(::(@y, @ys), @l) ->
767.45/212.84	          c_26(transpose^#(::(@y, @ys)))
767.45/212.84	    , 44: attach#2^#(nil(), @x, @xs) -> c_41()
767.45/212.84	    , 45: attach#2^#(::(@l, @ls), @x, @xs) -> c_42(attach^#(@xs, @ls))
767.45/212.84	    , 46: transpose#2^#(tuple#2(@l, @m')) ->
767.45/212.84	          c_29(transpose#3^#(@m', @l))
767.45/212.84	    , 47: lineMult^#(@l, @m2) -> c_51(lineMult#1^#(@m2, @l))
767.45/212.84	    , 48: matrixMultOld^#(@m1, @m2) ->
767.45/212.84	          c_32(matrixMult'^#(@m1, transpose(@m2)), transpose^#(@m2))
767.45/212.84	    , 49: split#3^#(tuple#2(@ys, @m'), @x, @xs) -> c_54()
767.45/212.84	    , 50: makeBase#1^#(nil()) -> c_43()
767.45/212.84	    , 51: makeBase#1^#(::(@l, @m')) -> c_44(mkBase^#(@l))
767.45/212.84	    , 52: lineMult#1^#(nil(), @l) -> c_39()
767.45/212.84	    , 53: lineMult#1^#(::(@x, @xs), @l) ->
767.45/212.84	          c_40(mult^#(@l, @x), lineMult^#(@l, @xs))
767.45/212.84	    , 54: m3^#(@x) ->
767.45/212.84	          c_45(#abs^#(#pos(#s(#0()))),
767.45/212.84	               #abs^#(#pos(#s(#s(#0())))),
767.45/212.84	               #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.84	               #abs^#(#pos(#s(#s(#s(#s(#s(#0()))))))),
767.45/212.84	               #abs^#(#pos(#s(#s(#0())))),
767.45/212.84	               #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.84	               #abs^#(#pos(#s(#s(#s(#s(#0())))))),
767.45/212.84	               #abs^#(#pos(#s(#s(#s(#s(#s(#0()))))))))
767.45/212.84	    , 55: #add^#(#neg(#s(#0())), @y) -> c_55(#pred^#(@y))
767.45/212.84	    , 56: #add^#(#neg(#s(#s(@x))), @y) ->
767.45/212.84	          c_56(#pred^#(#add(#pos(#s(@x)), @y)), #add^#(#pos(#s(@x)), @y))
767.45/212.84	    , 57: #add^#(#pos(#s(#0())), @y) -> c_57(#succ^#(@y))
767.45/212.84	    , 58: #add^#(#pos(#s(#s(@x))), @y) ->
767.45/212.84	          c_58(#succ^#(#add(#pos(#s(@x)), @y)), #add^#(#pos(#s(@x)), @y))
767.45/212.84	    , 59: #add^#(#0(), @y) -> c_59()
767.45/212.84	    , 60: #mult^#(#neg(@x), #neg(@y)) -> c_62(#natmult^#(@x, @y))
767.45/212.84	    , 61: #mult^#(#neg(@x), #pos(@y)) -> c_63(#natmult^#(@x, @y))
767.45/212.84	    , 62: #mult^#(#neg(@x), #0()) -> c_64()
767.45/212.84	    , 63: #mult^#(#pos(@x), #neg(@y)) -> c_65(#natmult^#(@x, @y))
767.45/212.84	    , 64: #mult^#(#pos(@x), #pos(@y)) -> c_66(#natmult^#(@x, @y))
767.45/212.84	    , 65: #mult^#(#pos(@x), #0()) -> c_67()
767.45/212.84	    , 66: #mult^#(#0(), #neg(@y)) -> c_68()
767.45/212.84	    , 67: #mult^#(#0(), #pos(@y)) -> c_69()
767.45/212.84	    , 68: #mult^#(#0(), #0()) -> c_70()
767.45/212.84	    , 69: #pred^#(#neg(#s(@x))) -> c_75()
767.45/212.84	    , 70: #pred^#(#pos(#s(#0()))) -> c_76()
767.45/212.84	    , 71: #pred^#(#pos(#s(#s(@x)))) -> c_77()
767.45/212.84	    , 72: #pred^#(#0()) -> c_78()
767.45/212.84	    , 73: #succ^#(#neg(#s(#0()))) -> c_71()
767.45/212.84	    , 74: #succ^#(#neg(#s(#s(@x)))) -> c_72()
767.45/212.84	    , 75: #succ^#(#pos(#s(@x))) -> c_73()
767.45/212.84	    , 76: #succ^#(#0()) -> c_74()
767.45/212.84	    , 77: #natmult^#(#0(), @y) -> c_60()
767.45/212.84	    , 78: #natmult^#(#s(@x), @y) ->
767.45/212.84	          c_61(#add^#(#pos(@y), #natmult(@x, @y)), #natmult^#(@x, @y)) }
767.45/212.84	
767.45/212.84	We are left with following problem, upon which TcT provides the
767.45/212.84	certificate YES(O(1),O(n^3)).
767.45/212.84	
767.45/212.84	Strict DPs:
767.45/212.84	  { m1^#(@x) ->
767.45/212.84	    c_1(#abs^#(#pos(#s(#0()))),
767.45/212.84	        #abs^#(#pos(#s(#s(#0())))),
767.45/212.84	        #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.84	        #abs^#(#pos(#s(#s(#0())))),
767.45/212.84	        #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.84	        #abs^#(#pos(#s(#s(#s(#s(#0())))))))
767.45/212.84	  , matrixMultList^#(@acc, @mm) -> c_2(matrixMultList#1^#(@mm, @acc))
767.45/212.84	  , matrixMultList#1^#(::(@m, @ms), @acc) ->
767.45/212.84	    c_21(matrixMultList^#(matrixMult(@acc, @m), @ms),
767.45/212.84	         matrixMult^#(@acc, @m))
767.45/212.84	  , m4^#(@x) ->
767.45/212.84	    c_3(#abs^#(#pos(#s(#0()))),
767.45/212.84	        #abs^#(#pos(#s(#s(#0())))),
767.45/212.84	        #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.84	        #abs^#(#pos(#s(#s(#s(#s(#0())))))))
767.45/212.84	  , attach^#(@line, @m) -> c_4(attach#1^#(@line, @m))
767.45/212.84	  , attach#1^#(::(@x, @xs), @m) -> c_28(attach#2^#(@m, @x, @xs))
767.45/212.84	  , split^#(@m) -> c_5(split#1^#(@m))
767.45/212.84	  , split#1^#(::(@l, @ls)) -> c_11(split#2^#(@l, @ls))
767.45/212.84	  , matrixMult3^#(@m1, @m2, @m3) ->
767.45/212.84	    c_6(matrixMult^#(matrixMult(@m1, @m2), @m3),
767.45/212.84	        matrixMult^#(@m1, @m2))
767.45/212.84	  , matrixMult^#(@m1, @m2) ->
767.45/212.84	    c_46(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))),
767.45/212.84	         transAcc^#(@m2, makeBase(@m2)),
767.45/212.84	         makeBase^#(@m2))
767.45/212.84	  , mult#2^#(nil(), @x, @xs) -> c_7(#abs^#(#0()))
767.45/212.84	  , mult#2^#(::(@y, @ys), @x, @xs) ->
767.45/212.84	    c_8(+^#(*(@x, @y), mult(@xs, @ys)), *^#(@x, @y), mult^#(@xs, @ys))
767.45/212.84	  , mult^#(@l1, @l2) -> c_16(mult#1^#(@l1, @l2))
767.45/212.84	  , transpose'^#(@m) ->
767.45/212.84	    c_9(transAcc^#(@m, makeBase(@m)), makeBase^#(@m))
767.45/212.84	  , transAcc^#(@m, @base) -> c_15(transAcc#1^#(@m, @base))
767.45/212.84	  , makeBase^#(@m) -> c_36(makeBase#1^#(@m))
767.45/212.84	  , split#2^#(::(@x, @xs), @ls) ->
767.45/212.84	    c_34(split#3^#(split(@ls), @x, @xs), split^#(@ls))
767.45/212.84	  , transpose^#(@m) -> c_12(transpose#1^#(@m, @m))
767.45/212.84	  , transpose#1^#(::(@xs, @xss), @m) ->
767.45/212.84	    c_53(transpose#2^#(split(@m)), split^#(@m))
767.45/212.84	  , m2^#(@x) ->
767.45/212.84	    c_13(#abs^#(#pos(#s(#0()))),
767.45/212.84	         #abs^#(#pos(#s(#s(#0())))),
767.45/212.84	         #abs^#(#pos(#s(#s(#0())))),
767.45/212.84	         #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.84	         #abs^#(#pos(#s(#s(#s(#s(#0())))))),
767.45/212.84	         #abs^#(#pos(#s(#s(#s(#s(#s(#0()))))))))
767.45/212.84	  , matrixMult'^#(@m1, @m2) -> c_14(matrixMult'#1^#(@m1, @m2))
767.45/212.84	  , matrixMult'#1^#(::(@l, @ls), @m2) ->
767.45/212.84	    c_31(lineMult^#(@l, @m2), matrixMult'^#(@ls, @m2))
767.45/212.84	  , transAcc#1^#(::(@l, @m'), @base) ->
767.45/212.84	    c_19(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
767.45/212.84	  , mult#1^#(nil(), @l2) -> c_37(#abs^#(#0()))
767.45/212.84	  , mult#1^#(::(@x, @xs), @l2) -> c_38(mult#2^#(@l2, @x, @xs))
767.45/212.84	  , mkBase#1^#(::(@l, @m')) -> c_24(mkBase^#(@m'))
767.45/212.84	  , mkBase^#(@m) -> c_35(mkBase#1^#(@m))
767.45/212.84	  , transpose#3^#(::(@y, @ys), @l) -> c_26(transpose^#(::(@y, @ys)))
767.45/212.84	  , attach#2^#(::(@l, @ls), @x, @xs) -> c_42(attach^#(@xs, @ls))
767.45/212.84	  , transpose#2^#(tuple#2(@l, @m')) -> c_29(transpose#3^#(@m', @l))
767.45/212.84	  , lineMult^#(@l, @m2) -> c_51(lineMult#1^#(@m2, @l))
767.45/212.84	  , matrixMultOld^#(@m1, @m2) ->
767.45/212.84	    c_32(matrixMult'^#(@m1, transpose(@m2)), transpose^#(@m2))
767.45/212.84	  , makeBase#1^#(::(@l, @m')) -> c_44(mkBase^#(@l))
767.45/212.84	  , lineMult#1^#(::(@x, @xs), @l) ->
767.45/212.84	    c_40(mult^#(@l, @x), lineMult^#(@l, @xs))
767.45/212.84	  , m3^#(@x) ->
767.45/212.84	    c_45(#abs^#(#pos(#s(#0()))),
767.45/212.84	         #abs^#(#pos(#s(#s(#0())))),
767.45/212.84	         #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.84	         #abs^#(#pos(#s(#s(#s(#s(#s(#0()))))))),
767.45/212.84	         #abs^#(#pos(#s(#s(#0())))),
767.45/212.84	         #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.84	         #abs^#(#pos(#s(#s(#s(#s(#0())))))),
767.45/212.84	         #abs^#(#pos(#s(#s(#s(#s(#s(#0())))))))) }
767.45/212.84	Weak DPs:
767.45/212.84	  { #abs^#(#neg(@x)) -> c_47()
767.45/212.84	  , #abs^#(#pos(@x)) -> c_48()
767.45/212.84	  , #abs^#(#0()) -> c_49()
767.45/212.84	  , #abs^#(#s(@x)) -> c_50()
767.45/212.84	  , matrixMultList#1^#(nil(), @acc) -> c_20()
767.45/212.84	  , attach#1^#(nil(), @m) -> c_27()
767.45/212.84	  , split#1^#(nil()) -> c_10()
767.45/212.84	  , +^#(@x, @y) -> c_17(#add^#(@x, @y))
767.45/212.84	  , *^#(@x, @y) -> c_22(#mult^#(@x, @y))
767.45/212.84	  , split#2^#(nil(), @ls) -> c_33()
767.45/212.84	  , transpose#1^#(nil(), @m) -> c_52()
767.45/212.84	  , matrixMult'#1^#(nil(), @m2) -> c_30()
767.45/212.84	  , transAcc#1^#(nil(), @base) -> c_18()
767.45/212.84	  , #add^#(#neg(#s(#0())), @y) -> c_55(#pred^#(@y))
767.45/212.84	  , #add^#(#neg(#s(#s(@x))), @y) ->
767.45/212.84	    c_56(#pred^#(#add(#pos(#s(@x)), @y)), #add^#(#pos(#s(@x)), @y))
767.45/212.84	  , #add^#(#pos(#s(#0())), @y) -> c_57(#succ^#(@y))
767.45/212.84	  , #add^#(#pos(#s(#s(@x))), @y) ->
767.45/212.84	    c_58(#succ^#(#add(#pos(#s(@x)), @y)), #add^#(#pos(#s(@x)), @y))
767.45/212.84	  , #add^#(#0(), @y) -> c_59()
767.45/212.84	  , #mult^#(#neg(@x), #neg(@y)) -> c_62(#natmult^#(@x, @y))
767.45/212.84	  , #mult^#(#neg(@x), #pos(@y)) -> c_63(#natmult^#(@x, @y))
767.45/212.84	  , #mult^#(#neg(@x), #0()) -> c_64()
767.45/212.84	  , #mult^#(#pos(@x), #neg(@y)) -> c_65(#natmult^#(@x, @y))
767.45/212.84	  , #mult^#(#pos(@x), #pos(@y)) -> c_66(#natmult^#(@x, @y))
767.45/212.84	  , #mult^#(#pos(@x), #0()) -> c_67()
767.45/212.84	  , #mult^#(#0(), #neg(@y)) -> c_68()
767.45/212.84	  , #mult^#(#0(), #pos(@y)) -> c_69()
767.45/212.84	  , #mult^#(#0(), #0()) -> c_70()
767.45/212.84	  , mkBase#1^#(nil()) -> c_23()
767.45/212.84	  , transpose#3^#(nil(), @l) -> c_25()
767.45/212.84	  , attach#2^#(nil(), @x, @xs) -> c_41()
767.45/212.84	  , split#3^#(tuple#2(@ys, @m'), @x, @xs) -> c_54()
767.45/212.84	  , makeBase#1^#(nil()) -> c_43()
767.45/212.84	  , lineMult#1^#(nil(), @l) -> c_39()
767.45/212.84	  , #pred^#(#neg(#s(@x))) -> c_75()
767.45/212.84	  , #pred^#(#pos(#s(#0()))) -> c_76()
767.45/212.84	  , #pred^#(#pos(#s(#s(@x)))) -> c_77()
767.45/212.84	  , #pred^#(#0()) -> c_78()
767.45/212.84	  , #succ^#(#neg(#s(#0()))) -> c_71()
767.45/212.84	  , #succ^#(#neg(#s(#s(@x)))) -> c_72()
767.45/212.84	  , #succ^#(#pos(#s(@x))) -> c_73()
767.45/212.84	  , #succ^#(#0()) -> c_74()
767.45/212.84	  , #natmult^#(#0(), @y) -> c_60()
767.45/212.84	  , #natmult^#(#s(@x), @y) ->
767.45/212.84	    c_61(#add^#(#pos(@y), #natmult(@x, @y)), #natmult^#(@x, @y)) }
767.45/212.84	Weak Trs:
767.45/212.84	  { m1(@x) ->
767.45/212.84	    ::(::(#abs(#pos(#s(#0()))),
767.45/212.84	          ::(#abs(#pos(#s(#s(#0())))),
767.45/212.84	             ::(#abs(#pos(#s(#s(#s(#0()))))), nil()))),
767.45/212.84	       ::(::(#abs(#pos(#s(#s(#0())))),
767.45/212.84	             ::(#abs(#pos(#s(#s(#s(#0()))))),
767.45/212.84	                ::(#abs(#pos(#s(#s(#s(#s(#0())))))), nil()))),
767.45/212.84	          nil()))
767.45/212.84	  , matrixMultList(@acc, @mm) -> matrixMultList#1(@mm, @acc)
767.45/212.84	  , m4(@x) ->
767.45/212.84	    ::(::(#abs(#pos(#s(#0()))), nil()),
767.45/212.84	       ::(::(#abs(#pos(#s(#s(#0())))), nil()),
767.45/212.84	          ::(::(#abs(#pos(#s(#s(#s(#0()))))), nil()),
767.45/212.84	             ::(::(#abs(#pos(#s(#s(#s(#s(#0())))))), nil()), nil()))))
767.45/212.85	  , attach(@line, @m) -> attach#1(@line, @m)
767.45/212.85	  , split(@m) -> split#1(@m)
767.45/212.85	  , matrixMult3(@m1, @m2, @m3) ->
767.45/212.85	    matrixMult(matrixMult(@m1, @m2), @m3)
767.45/212.85	  , #add(#neg(#s(#0())), @y) -> #pred(@y)
767.45/212.85	  , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
767.45/212.85	  , #add(#pos(#s(#0())), @y) -> #succ(@y)
767.45/212.85	  , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
767.45/212.85	  , #add(#0(), @y) -> @y
767.45/212.85	  , mult#2(nil(), @x, @xs) -> #abs(#0())
767.45/212.85	  , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
767.45/212.85	  , transpose'(@m) -> transAcc(@m, makeBase(@m))
767.45/212.85	  , split#1(nil()) -> tuple#2(nil(), nil())
767.45/212.85	  , split#1(::(@l, @ls)) -> split#2(@l, @ls)
767.45/212.85	  , transpose(@m) -> transpose#1(@m, @m)
767.45/212.85	  , m2(@x) ->
767.45/212.85	    ::(::(#abs(#pos(#s(#0()))), ::(#abs(#pos(#s(#s(#0())))), nil())),
767.45/212.85	       ::(::(#abs(#pos(#s(#s(#0())))),
767.45/212.85	             ::(#abs(#pos(#s(#s(#s(#0()))))), nil())),
767.45/212.85	          ::(::(#abs(#pos(#s(#s(#s(#s(#0())))))),
767.45/212.85	                ::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))), nil())),
767.45/212.85	             nil())))
767.45/212.85	  , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
767.45/212.85	  , transAcc(@m, @base) -> transAcc#1(@m, @base)
767.45/212.85	  , mult(@l1, @l2) -> mult#1(@l1, @l2)
767.45/212.85	  , +(@x, @y) -> #add(@x, @y)
767.45/212.85	  , transAcc#1(nil(), @base) -> @base
767.45/212.85	  , transAcc#1(::(@l, @m'), @base) ->
767.45/212.85	    attach(@l, transAcc(@m', @base))
767.45/212.85	  , matrixMultList#1(nil(), @acc) -> @acc
767.45/212.85	  , matrixMultList#1(::(@m, @ms), @acc) ->
767.45/212.85	    matrixMultList(matrixMult(@acc, @m), @ms)
767.45/212.85	  , *(@x, @y) -> #mult(@x, @y)
767.45/212.85	  , mkBase#1(nil()) -> nil()
767.45/212.85	  , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.45/212.85	  , transpose#3(nil(), @l) -> nil()
767.45/212.85	  , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
767.45/212.85	  , attach#1(nil(), @m) -> nil()
767.45/212.85	  , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.45/212.85	  , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
767.45/212.85	  , matrixMult'#1(nil(), @m2) -> nil()
767.45/212.85	  , matrixMult'#1(::(@l, @ls), @m2) ->
767.45/212.85	    ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
767.45/212.85	  , #natmult(#0(), @y) -> #0()
767.45/212.85	  , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
767.45/212.85	  , matrixMultOld(@m1, @m2) -> matrixMult'(@m1, transpose(@m2))
767.45/212.85	  , split#2(nil(), @ls) -> tuple#2(nil(), nil())
767.45/212.85	  , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
767.45/212.85	  , mkBase(@m) -> mkBase#1(@m)
767.45/212.85	  , makeBase(@m) -> makeBase#1(@m)
767.45/212.85	  , mult#1(nil(), @l2) -> #abs(#0())
767.45/212.85	  , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
767.45/212.85	  , lineMult#1(nil(), @l) -> nil()
767.45/212.85	  , lineMult#1(::(@x, @xs), @l) ->
767.45/212.85	    ::(mult(@l, @x), lineMult(@l, @xs))
767.45/212.85	  , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
767.45/212.85	  , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
767.45/212.85	  , #mult(#neg(@x), #0()) -> #0()
767.45/212.85	  , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
767.45/212.85	  , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
767.45/212.85	  , #mult(#pos(@x), #0()) -> #0()
767.45/212.85	  , #mult(#0(), #neg(@y)) -> #0()
767.45/212.85	  , #mult(#0(), #pos(@y)) -> #0()
767.45/212.85	  , #mult(#0(), #0()) -> #0()
767.45/212.85	  , attach#2(nil(), @x, @xs) -> nil()
767.45/212.85	  , attach#2(::(@l, @ls), @x, @xs) ->
767.45/212.85	    ::(::(@x, @l), attach(@xs, @ls))
767.45/212.85	  , #succ(#neg(#s(#0()))) -> #0()
767.45/212.85	  , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
767.45/212.85	  , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
767.45/212.85	  , #succ(#0()) -> #pos(#s(#0()))
767.45/212.85	  , makeBase#1(nil()) -> nil()
767.45/212.85	  , makeBase#1(::(@l, @m')) -> mkBase(@l)
767.45/212.85	  , m3(@x) ->
767.45/212.85	    ::(::(#abs(#pos(#s(#0()))),
767.45/212.85	          ::(#abs(#pos(#s(#s(#0())))),
767.45/212.85	             ::(#abs(#pos(#s(#s(#s(#0()))))),
767.45/212.85	                ::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))), nil())))),
767.45/212.85	       ::(::(#abs(#pos(#s(#s(#0())))),
767.45/212.85	             ::(#abs(#pos(#s(#s(#s(#0()))))),
767.45/212.85	                ::(#abs(#pos(#s(#s(#s(#s(#0())))))),
767.45/212.85	                   ::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))), nil())))),
767.45/212.85	          nil()))
767.45/212.85	  , matrixMult(@m1, @m2) ->
767.45/212.85	    matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
767.45/212.85	  , #abs(#neg(@x)) -> #pos(@x)
767.45/212.85	  , #abs(#pos(@x)) -> #pos(@x)
767.45/212.85	  , #abs(#0()) -> #0()
767.45/212.85	  , #abs(#s(@x)) -> #pos(#s(@x))
767.45/212.85	  , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
767.45/212.85	  , transpose#1(nil(), @m) -> nil()
767.45/212.85	  , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
767.45/212.85	  , split#3(tuple#2(@ys, @m'), @x, @xs) ->
767.45/212.85	    tuple#2(::(@x, @ys), ::(@xs, @m'))
767.45/212.85	  , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
767.45/212.85	  , #pred(#pos(#s(#0()))) -> #0()
767.45/212.85	  , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
767.45/212.85	  , #pred(#0()) -> #neg(#s(#0())) }
767.45/212.85	Obligation:
767.45/212.85	  innermost runtime complexity
767.45/212.85	Answer:
767.45/212.85	  YES(O(1),O(n^3))
767.45/212.85	
767.45/212.85	We estimate the number of application of {1,4,11,20,24,35} by
767.45/212.85	applications of Pre({1,4,11,20,24,35}) = {13,25}. Here rules are
767.45/212.85	labeled as follows:
767.45/212.85	
767.45/212.85	  DPs:
767.45/212.85	    { 1: m1^#(@x) ->
767.45/212.85	         c_1(#abs^#(#pos(#s(#0()))),
767.45/212.85	             #abs^#(#pos(#s(#s(#0())))),
767.45/212.85	             #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.85	             #abs^#(#pos(#s(#s(#0())))),
767.45/212.85	             #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.85	             #abs^#(#pos(#s(#s(#s(#s(#0())))))))
767.45/212.85	    , 2: matrixMultList^#(@acc, @mm) ->
767.45/212.85	         c_2(matrixMultList#1^#(@mm, @acc))
767.45/212.85	    , 3: matrixMultList#1^#(::(@m, @ms), @acc) ->
767.45/212.85	         c_21(matrixMultList^#(matrixMult(@acc, @m), @ms),
767.45/212.85	              matrixMult^#(@acc, @m))
767.45/212.85	    , 4: m4^#(@x) ->
767.45/212.85	         c_3(#abs^#(#pos(#s(#0()))),
767.45/212.85	             #abs^#(#pos(#s(#s(#0())))),
767.45/212.85	             #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.85	             #abs^#(#pos(#s(#s(#s(#s(#0())))))))
767.45/212.85	    , 5: attach^#(@line, @m) -> c_4(attach#1^#(@line, @m))
767.45/212.85	    , 6: attach#1^#(::(@x, @xs), @m) -> c_28(attach#2^#(@m, @x, @xs))
767.45/212.85	    , 7: split^#(@m) -> c_5(split#1^#(@m))
767.45/212.85	    , 8: split#1^#(::(@l, @ls)) -> c_11(split#2^#(@l, @ls))
767.45/212.85	    , 9: matrixMult3^#(@m1, @m2, @m3) ->
767.45/212.85	         c_6(matrixMult^#(matrixMult(@m1, @m2), @m3),
767.45/212.85	             matrixMult^#(@m1, @m2))
767.45/212.85	    , 10: matrixMult^#(@m1, @m2) ->
767.45/212.85	          c_46(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))),
767.45/212.85	               transAcc^#(@m2, makeBase(@m2)),
767.45/212.85	               makeBase^#(@m2))
767.45/212.85	    , 11: mult#2^#(nil(), @x, @xs) -> c_7(#abs^#(#0()))
767.45/212.85	    , 12: mult#2^#(::(@y, @ys), @x, @xs) ->
767.45/212.85	          c_8(+^#(*(@x, @y), mult(@xs, @ys)), *^#(@x, @y), mult^#(@xs, @ys))
767.45/212.85	    , 13: mult^#(@l1, @l2) -> c_16(mult#1^#(@l1, @l2))
767.45/212.85	    , 14: transpose'^#(@m) ->
767.45/212.85	          c_9(transAcc^#(@m, makeBase(@m)), makeBase^#(@m))
767.45/212.85	    , 15: transAcc^#(@m, @base) -> c_15(transAcc#1^#(@m, @base))
767.45/212.85	    , 16: makeBase^#(@m) -> c_36(makeBase#1^#(@m))
767.45/212.85	    , 17: split#2^#(::(@x, @xs), @ls) ->
767.45/212.85	          c_34(split#3^#(split(@ls), @x, @xs), split^#(@ls))
767.45/212.85	    , 18: transpose^#(@m) -> c_12(transpose#1^#(@m, @m))
767.45/212.85	    , 19: transpose#1^#(::(@xs, @xss), @m) ->
767.45/212.85	          c_53(transpose#2^#(split(@m)), split^#(@m))
767.45/212.85	    , 20: m2^#(@x) ->
767.45/212.85	          c_13(#abs^#(#pos(#s(#0()))),
767.45/212.85	               #abs^#(#pos(#s(#s(#0())))),
767.45/212.85	               #abs^#(#pos(#s(#s(#0())))),
767.45/212.85	               #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.85	               #abs^#(#pos(#s(#s(#s(#s(#0())))))),
767.45/212.85	               #abs^#(#pos(#s(#s(#s(#s(#s(#0()))))))))
767.45/212.85	    , 21: matrixMult'^#(@m1, @m2) -> c_14(matrixMult'#1^#(@m1, @m2))
767.45/212.85	    , 22: matrixMult'#1^#(::(@l, @ls), @m2) ->
767.45/212.85	          c_31(lineMult^#(@l, @m2), matrixMult'^#(@ls, @m2))
767.45/212.85	    , 23: transAcc#1^#(::(@l, @m'), @base) ->
767.45/212.85	          c_19(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
767.45/212.85	    , 24: mult#1^#(nil(), @l2) -> c_37(#abs^#(#0()))
767.45/212.85	    , 25: mult#1^#(::(@x, @xs), @l2) -> c_38(mult#2^#(@l2, @x, @xs))
767.45/212.85	    , 26: mkBase#1^#(::(@l, @m')) -> c_24(mkBase^#(@m'))
767.45/212.85	    , 27: mkBase^#(@m) -> c_35(mkBase#1^#(@m))
767.45/212.85	    , 28: transpose#3^#(::(@y, @ys), @l) ->
767.45/212.85	          c_26(transpose^#(::(@y, @ys)))
767.45/212.85	    , 29: attach#2^#(::(@l, @ls), @x, @xs) -> c_42(attach^#(@xs, @ls))
767.45/212.85	    , 30: transpose#2^#(tuple#2(@l, @m')) ->
767.45/212.85	          c_29(transpose#3^#(@m', @l))
767.45/212.85	    , 31: lineMult^#(@l, @m2) -> c_51(lineMult#1^#(@m2, @l))
767.45/212.85	    , 32: matrixMultOld^#(@m1, @m2) ->
767.45/212.85	          c_32(matrixMult'^#(@m1, transpose(@m2)), transpose^#(@m2))
767.45/212.85	    , 33: makeBase#1^#(::(@l, @m')) -> c_44(mkBase^#(@l))
767.45/212.85	    , 34: lineMult#1^#(::(@x, @xs), @l) ->
767.45/212.85	          c_40(mult^#(@l, @x), lineMult^#(@l, @xs))
767.45/212.85	    , 35: m3^#(@x) ->
767.45/212.85	          c_45(#abs^#(#pos(#s(#0()))),
767.45/212.85	               #abs^#(#pos(#s(#s(#0())))),
767.45/212.85	               #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.85	               #abs^#(#pos(#s(#s(#s(#s(#s(#0()))))))),
767.45/212.85	               #abs^#(#pos(#s(#s(#0())))),
767.45/212.85	               #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.85	               #abs^#(#pos(#s(#s(#s(#s(#0())))))),
767.45/212.85	               #abs^#(#pos(#s(#s(#s(#s(#s(#0()))))))))
767.45/212.85	    , 36: #abs^#(#neg(@x)) -> c_47()
767.45/212.85	    , 37: #abs^#(#pos(@x)) -> c_48()
767.45/212.85	    , 38: #abs^#(#0()) -> c_49()
767.45/212.85	    , 39: #abs^#(#s(@x)) -> c_50()
767.45/212.85	    , 40: matrixMultList#1^#(nil(), @acc) -> c_20()
767.45/212.85	    , 41: attach#1^#(nil(), @m) -> c_27()
767.45/212.85	    , 42: split#1^#(nil()) -> c_10()
767.45/212.85	    , 43: +^#(@x, @y) -> c_17(#add^#(@x, @y))
767.45/212.85	    , 44: *^#(@x, @y) -> c_22(#mult^#(@x, @y))
767.45/212.85	    , 45: split#2^#(nil(), @ls) -> c_33()
767.45/212.85	    , 46: transpose#1^#(nil(), @m) -> c_52()
767.45/212.85	    , 47: matrixMult'#1^#(nil(), @m2) -> c_30()
767.45/212.85	    , 48: transAcc#1^#(nil(), @base) -> c_18()
767.45/212.85	    , 49: #add^#(#neg(#s(#0())), @y) -> c_55(#pred^#(@y))
767.45/212.85	    , 50: #add^#(#neg(#s(#s(@x))), @y) ->
767.45/212.85	          c_56(#pred^#(#add(#pos(#s(@x)), @y)), #add^#(#pos(#s(@x)), @y))
767.45/212.85	    , 51: #add^#(#pos(#s(#0())), @y) -> c_57(#succ^#(@y))
767.45/212.85	    , 52: #add^#(#pos(#s(#s(@x))), @y) ->
767.45/212.85	          c_58(#succ^#(#add(#pos(#s(@x)), @y)), #add^#(#pos(#s(@x)), @y))
767.45/212.85	    , 53: #add^#(#0(), @y) -> c_59()
767.45/212.85	    , 54: #mult^#(#neg(@x), #neg(@y)) -> c_62(#natmult^#(@x, @y))
767.45/212.85	    , 55: #mult^#(#neg(@x), #pos(@y)) -> c_63(#natmult^#(@x, @y))
767.45/212.85	    , 56: #mult^#(#neg(@x), #0()) -> c_64()
767.45/212.85	    , 57: #mult^#(#pos(@x), #neg(@y)) -> c_65(#natmult^#(@x, @y))
767.45/212.85	    , 58: #mult^#(#pos(@x), #pos(@y)) -> c_66(#natmult^#(@x, @y))
767.45/212.85	    , 59: #mult^#(#pos(@x), #0()) -> c_67()
767.45/212.85	    , 60: #mult^#(#0(), #neg(@y)) -> c_68()
767.45/212.85	    , 61: #mult^#(#0(), #pos(@y)) -> c_69()
767.45/212.85	    , 62: #mult^#(#0(), #0()) -> c_70()
767.45/212.85	    , 63: mkBase#1^#(nil()) -> c_23()
767.45/212.85	    , 64: transpose#3^#(nil(), @l) -> c_25()
767.45/212.85	    , 65: attach#2^#(nil(), @x, @xs) -> c_41()
767.45/212.85	    , 66: split#3^#(tuple#2(@ys, @m'), @x, @xs) -> c_54()
767.45/212.85	    , 67: makeBase#1^#(nil()) -> c_43()
767.45/212.85	    , 68: lineMult#1^#(nil(), @l) -> c_39()
767.45/212.85	    , 69: #pred^#(#neg(#s(@x))) -> c_75()
767.45/212.85	    , 70: #pred^#(#pos(#s(#0()))) -> c_76()
767.45/212.85	    , 71: #pred^#(#pos(#s(#s(@x)))) -> c_77()
767.45/212.85	    , 72: #pred^#(#0()) -> c_78()
767.45/212.85	    , 73: #succ^#(#neg(#s(#0()))) -> c_71()
767.45/212.85	    , 74: #succ^#(#neg(#s(#s(@x)))) -> c_72()
767.45/212.85	    , 75: #succ^#(#pos(#s(@x))) -> c_73()
767.45/212.85	    , 76: #succ^#(#0()) -> c_74()
767.45/212.85	    , 77: #natmult^#(#0(), @y) -> c_60()
767.45/212.85	    , 78: #natmult^#(#s(@x), @y) ->
767.45/212.85	          c_61(#add^#(#pos(@y), #natmult(@x, @y)), #natmult^#(@x, @y)) }
767.45/212.85	
767.45/212.85	We are left with following problem, upon which TcT provides the
767.45/212.85	certificate YES(O(1),O(n^3)).
767.45/212.85	
767.45/212.85	Strict DPs:
767.45/212.85	  { matrixMultList^#(@acc, @mm) -> c_2(matrixMultList#1^#(@mm, @acc))
767.45/212.85	  , matrixMultList#1^#(::(@m, @ms), @acc) ->
767.45/212.85	    c_21(matrixMultList^#(matrixMult(@acc, @m), @ms),
767.45/212.85	         matrixMult^#(@acc, @m))
767.45/212.85	  , attach^#(@line, @m) -> c_4(attach#1^#(@line, @m))
767.45/212.85	  , attach#1^#(::(@x, @xs), @m) -> c_28(attach#2^#(@m, @x, @xs))
767.45/212.85	  , split^#(@m) -> c_5(split#1^#(@m))
767.45/212.85	  , split#1^#(::(@l, @ls)) -> c_11(split#2^#(@l, @ls))
767.45/212.85	  , matrixMult3^#(@m1, @m2, @m3) ->
767.45/212.85	    c_6(matrixMult^#(matrixMult(@m1, @m2), @m3),
767.45/212.85	        matrixMult^#(@m1, @m2))
767.45/212.85	  , matrixMult^#(@m1, @m2) ->
767.45/212.85	    c_46(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))),
767.45/212.85	         transAcc^#(@m2, makeBase(@m2)),
767.45/212.85	         makeBase^#(@m2))
767.45/212.85	  , mult#2^#(::(@y, @ys), @x, @xs) ->
767.45/212.85	    c_8(+^#(*(@x, @y), mult(@xs, @ys)), *^#(@x, @y), mult^#(@xs, @ys))
767.45/212.85	  , mult^#(@l1, @l2) -> c_16(mult#1^#(@l1, @l2))
767.45/212.85	  , transpose'^#(@m) ->
767.45/212.85	    c_9(transAcc^#(@m, makeBase(@m)), makeBase^#(@m))
767.45/212.85	  , transAcc^#(@m, @base) -> c_15(transAcc#1^#(@m, @base))
767.45/212.85	  , makeBase^#(@m) -> c_36(makeBase#1^#(@m))
767.45/212.85	  , split#2^#(::(@x, @xs), @ls) ->
767.45/212.85	    c_34(split#3^#(split(@ls), @x, @xs), split^#(@ls))
767.45/212.85	  , transpose^#(@m) -> c_12(transpose#1^#(@m, @m))
767.45/212.85	  , transpose#1^#(::(@xs, @xss), @m) ->
767.45/212.85	    c_53(transpose#2^#(split(@m)), split^#(@m))
767.45/212.85	  , matrixMult'^#(@m1, @m2) -> c_14(matrixMult'#1^#(@m1, @m2))
767.45/212.85	  , matrixMult'#1^#(::(@l, @ls), @m2) ->
767.45/212.85	    c_31(lineMult^#(@l, @m2), matrixMult'^#(@ls, @m2))
767.45/212.85	  , transAcc#1^#(::(@l, @m'), @base) ->
767.45/212.85	    c_19(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
767.45/212.85	  , mult#1^#(::(@x, @xs), @l2) -> c_38(mult#2^#(@l2, @x, @xs))
767.45/212.85	  , mkBase#1^#(::(@l, @m')) -> c_24(mkBase^#(@m'))
767.45/212.85	  , mkBase^#(@m) -> c_35(mkBase#1^#(@m))
767.45/212.85	  , transpose#3^#(::(@y, @ys), @l) -> c_26(transpose^#(::(@y, @ys)))
767.45/212.85	  , attach#2^#(::(@l, @ls), @x, @xs) -> c_42(attach^#(@xs, @ls))
767.45/212.85	  , transpose#2^#(tuple#2(@l, @m')) -> c_29(transpose#3^#(@m', @l))
767.45/212.85	  , lineMult^#(@l, @m2) -> c_51(lineMult#1^#(@m2, @l))
767.45/212.85	  , matrixMultOld^#(@m1, @m2) ->
767.45/212.85	    c_32(matrixMult'^#(@m1, transpose(@m2)), transpose^#(@m2))
767.45/212.85	  , makeBase#1^#(::(@l, @m')) -> c_44(mkBase^#(@l))
767.45/212.85	  , lineMult#1^#(::(@x, @xs), @l) ->
767.45/212.85	    c_40(mult^#(@l, @x), lineMult^#(@l, @xs)) }
767.45/212.85	Weak DPs:
767.45/212.85	  { m1^#(@x) ->
767.45/212.85	    c_1(#abs^#(#pos(#s(#0()))),
767.45/212.85	        #abs^#(#pos(#s(#s(#0())))),
767.45/212.85	        #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.85	        #abs^#(#pos(#s(#s(#0())))),
767.45/212.85	        #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.85	        #abs^#(#pos(#s(#s(#s(#s(#0())))))))
767.45/212.85	  , #abs^#(#neg(@x)) -> c_47()
767.45/212.85	  , #abs^#(#pos(@x)) -> c_48()
767.45/212.85	  , #abs^#(#0()) -> c_49()
767.45/212.85	  , #abs^#(#s(@x)) -> c_50()
767.45/212.85	  , matrixMultList#1^#(nil(), @acc) -> c_20()
767.45/212.85	  , m4^#(@x) ->
767.45/212.85	    c_3(#abs^#(#pos(#s(#0()))),
767.45/212.85	        #abs^#(#pos(#s(#s(#0())))),
767.45/212.85	        #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.85	        #abs^#(#pos(#s(#s(#s(#s(#0())))))))
767.45/212.85	  , attach#1^#(nil(), @m) -> c_27()
767.45/212.85	  , split#1^#(nil()) -> c_10()
767.45/212.85	  , mult#2^#(nil(), @x, @xs) -> c_7(#abs^#(#0()))
767.45/212.85	  , +^#(@x, @y) -> c_17(#add^#(@x, @y))
767.45/212.85	  , *^#(@x, @y) -> c_22(#mult^#(@x, @y))
767.45/212.85	  , split#2^#(nil(), @ls) -> c_33()
767.45/212.85	  , transpose#1^#(nil(), @m) -> c_52()
767.45/212.85	  , m2^#(@x) ->
767.45/212.85	    c_13(#abs^#(#pos(#s(#0()))),
767.45/212.85	         #abs^#(#pos(#s(#s(#0())))),
767.45/212.85	         #abs^#(#pos(#s(#s(#0())))),
767.45/212.85	         #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.85	         #abs^#(#pos(#s(#s(#s(#s(#0())))))),
767.45/212.85	         #abs^#(#pos(#s(#s(#s(#s(#s(#0()))))))))
767.45/212.85	  , matrixMult'#1^#(nil(), @m2) -> c_30()
767.45/212.85	  , transAcc#1^#(nil(), @base) -> c_18()
767.45/212.85	  , mult#1^#(nil(), @l2) -> c_37(#abs^#(#0()))
767.45/212.85	  , #add^#(#neg(#s(#0())), @y) -> c_55(#pred^#(@y))
767.45/212.85	  , #add^#(#neg(#s(#s(@x))), @y) ->
767.45/212.85	    c_56(#pred^#(#add(#pos(#s(@x)), @y)), #add^#(#pos(#s(@x)), @y))
767.45/212.85	  , #add^#(#pos(#s(#0())), @y) -> c_57(#succ^#(@y))
767.45/212.85	  , #add^#(#pos(#s(#s(@x))), @y) ->
767.45/212.85	    c_58(#succ^#(#add(#pos(#s(@x)), @y)), #add^#(#pos(#s(@x)), @y))
767.45/212.85	  , #add^#(#0(), @y) -> c_59()
767.45/212.85	  , #mult^#(#neg(@x), #neg(@y)) -> c_62(#natmult^#(@x, @y))
767.45/212.85	  , #mult^#(#neg(@x), #pos(@y)) -> c_63(#natmult^#(@x, @y))
767.45/212.85	  , #mult^#(#neg(@x), #0()) -> c_64()
767.45/212.85	  , #mult^#(#pos(@x), #neg(@y)) -> c_65(#natmult^#(@x, @y))
767.45/212.85	  , #mult^#(#pos(@x), #pos(@y)) -> c_66(#natmult^#(@x, @y))
767.45/212.85	  , #mult^#(#pos(@x), #0()) -> c_67()
767.45/212.85	  , #mult^#(#0(), #neg(@y)) -> c_68()
767.45/212.85	  , #mult^#(#0(), #pos(@y)) -> c_69()
767.45/212.85	  , #mult^#(#0(), #0()) -> c_70()
767.45/212.85	  , mkBase#1^#(nil()) -> c_23()
767.45/212.85	  , transpose#3^#(nil(), @l) -> c_25()
767.45/212.85	  , attach#2^#(nil(), @x, @xs) -> c_41()
767.45/212.85	  , split#3^#(tuple#2(@ys, @m'), @x, @xs) -> c_54()
767.45/212.85	  , makeBase#1^#(nil()) -> c_43()
767.45/212.85	  , lineMult#1^#(nil(), @l) -> c_39()
767.45/212.85	  , m3^#(@x) ->
767.45/212.85	    c_45(#abs^#(#pos(#s(#0()))),
767.45/212.85	         #abs^#(#pos(#s(#s(#0())))),
767.45/212.85	         #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.85	         #abs^#(#pos(#s(#s(#s(#s(#s(#0()))))))),
767.45/212.85	         #abs^#(#pos(#s(#s(#0())))),
767.45/212.85	         #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.85	         #abs^#(#pos(#s(#s(#s(#s(#0())))))),
767.45/212.85	         #abs^#(#pos(#s(#s(#s(#s(#s(#0()))))))))
767.45/212.85	  , #pred^#(#neg(#s(@x))) -> c_75()
767.45/212.85	  , #pred^#(#pos(#s(#0()))) -> c_76()
767.45/212.85	  , #pred^#(#pos(#s(#s(@x)))) -> c_77()
767.45/212.85	  , #pred^#(#0()) -> c_78()
767.45/212.85	  , #succ^#(#neg(#s(#0()))) -> c_71()
767.45/212.85	  , #succ^#(#neg(#s(#s(@x)))) -> c_72()
767.45/212.85	  , #succ^#(#pos(#s(@x))) -> c_73()
767.45/212.85	  , #succ^#(#0()) -> c_74()
767.45/212.85	  , #natmult^#(#0(), @y) -> c_60()
767.45/212.85	  , #natmult^#(#s(@x), @y) ->
767.45/212.85	    c_61(#add^#(#pos(@y), #natmult(@x, @y)), #natmult^#(@x, @y)) }
767.45/212.85	Weak Trs:
767.45/212.85	  { m1(@x) ->
767.45/212.85	    ::(::(#abs(#pos(#s(#0()))),
767.45/212.85	          ::(#abs(#pos(#s(#s(#0())))),
767.45/212.85	             ::(#abs(#pos(#s(#s(#s(#0()))))), nil()))),
767.45/212.85	       ::(::(#abs(#pos(#s(#s(#0())))),
767.45/212.85	             ::(#abs(#pos(#s(#s(#s(#0()))))),
767.45/212.85	                ::(#abs(#pos(#s(#s(#s(#s(#0())))))), nil()))),
767.45/212.85	          nil()))
767.45/212.85	  , matrixMultList(@acc, @mm) -> matrixMultList#1(@mm, @acc)
767.45/212.85	  , m4(@x) ->
767.45/212.85	    ::(::(#abs(#pos(#s(#0()))), nil()),
767.45/212.85	       ::(::(#abs(#pos(#s(#s(#0())))), nil()),
767.45/212.85	          ::(::(#abs(#pos(#s(#s(#s(#0()))))), nil()),
767.45/212.85	             ::(::(#abs(#pos(#s(#s(#s(#s(#0())))))), nil()), nil()))))
767.45/212.85	  , attach(@line, @m) -> attach#1(@line, @m)
767.45/212.85	  , split(@m) -> split#1(@m)
767.45/212.85	  , matrixMult3(@m1, @m2, @m3) ->
767.45/212.85	    matrixMult(matrixMult(@m1, @m2), @m3)
767.45/212.85	  , #add(#neg(#s(#0())), @y) -> #pred(@y)
767.45/212.85	  , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
767.45/212.85	  , #add(#pos(#s(#0())), @y) -> #succ(@y)
767.45/212.85	  , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
767.45/212.85	  , #add(#0(), @y) -> @y
767.45/212.85	  , mult#2(nil(), @x, @xs) -> #abs(#0())
767.45/212.85	  , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
767.45/212.85	  , transpose'(@m) -> transAcc(@m, makeBase(@m))
767.45/212.85	  , split#1(nil()) -> tuple#2(nil(), nil())
767.45/212.85	  , split#1(::(@l, @ls)) -> split#2(@l, @ls)
767.45/212.85	  , transpose(@m) -> transpose#1(@m, @m)
767.45/212.85	  , m2(@x) ->
767.45/212.85	    ::(::(#abs(#pos(#s(#0()))), ::(#abs(#pos(#s(#s(#0())))), nil())),
767.45/212.85	       ::(::(#abs(#pos(#s(#s(#0())))),
767.45/212.85	             ::(#abs(#pos(#s(#s(#s(#0()))))), nil())),
767.45/212.85	          ::(::(#abs(#pos(#s(#s(#s(#s(#0())))))),
767.45/212.85	                ::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))), nil())),
767.45/212.85	             nil())))
767.45/212.85	  , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
767.45/212.85	  , transAcc(@m, @base) -> transAcc#1(@m, @base)
767.45/212.85	  , mult(@l1, @l2) -> mult#1(@l1, @l2)
767.45/212.85	  , +(@x, @y) -> #add(@x, @y)
767.45/212.85	  , transAcc#1(nil(), @base) -> @base
767.45/212.85	  , transAcc#1(::(@l, @m'), @base) ->
767.45/212.85	    attach(@l, transAcc(@m', @base))
767.45/212.85	  , matrixMultList#1(nil(), @acc) -> @acc
767.45/212.85	  , matrixMultList#1(::(@m, @ms), @acc) ->
767.45/212.85	    matrixMultList(matrixMult(@acc, @m), @ms)
767.45/212.85	  , *(@x, @y) -> #mult(@x, @y)
767.45/212.85	  , mkBase#1(nil()) -> nil()
767.45/212.85	  , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.45/212.85	  , transpose#3(nil(), @l) -> nil()
767.45/212.85	  , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
767.45/212.85	  , attach#1(nil(), @m) -> nil()
767.45/212.85	  , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.45/212.85	  , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
767.45/212.85	  , matrixMult'#1(nil(), @m2) -> nil()
767.45/212.85	  , matrixMult'#1(::(@l, @ls), @m2) ->
767.45/212.85	    ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
767.45/212.85	  , #natmult(#0(), @y) -> #0()
767.45/212.85	  , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
767.45/212.85	  , matrixMultOld(@m1, @m2) -> matrixMult'(@m1, transpose(@m2))
767.45/212.85	  , split#2(nil(), @ls) -> tuple#2(nil(), nil())
767.45/212.85	  , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
767.45/212.85	  , mkBase(@m) -> mkBase#1(@m)
767.45/212.85	  , makeBase(@m) -> makeBase#1(@m)
767.45/212.85	  , mult#1(nil(), @l2) -> #abs(#0())
767.45/212.85	  , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
767.45/212.85	  , lineMult#1(nil(), @l) -> nil()
767.45/212.85	  , lineMult#1(::(@x, @xs), @l) ->
767.45/212.85	    ::(mult(@l, @x), lineMult(@l, @xs))
767.45/212.85	  , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
767.45/212.85	  , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
767.45/212.85	  , #mult(#neg(@x), #0()) -> #0()
767.45/212.85	  , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
767.45/212.85	  , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
767.45/212.85	  , #mult(#pos(@x), #0()) -> #0()
767.45/212.85	  , #mult(#0(), #neg(@y)) -> #0()
767.45/212.85	  , #mult(#0(), #pos(@y)) -> #0()
767.45/212.85	  , #mult(#0(), #0()) -> #0()
767.45/212.85	  , attach#2(nil(), @x, @xs) -> nil()
767.45/212.85	  , attach#2(::(@l, @ls), @x, @xs) ->
767.45/212.85	    ::(::(@x, @l), attach(@xs, @ls))
767.45/212.85	  , #succ(#neg(#s(#0()))) -> #0()
767.45/212.85	  , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
767.45/212.85	  , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
767.45/212.86	  , #succ(#0()) -> #pos(#s(#0()))
767.45/212.86	  , makeBase#1(nil()) -> nil()
767.45/212.86	  , makeBase#1(::(@l, @m')) -> mkBase(@l)
767.45/212.86	  , m3(@x) ->
767.45/212.86	    ::(::(#abs(#pos(#s(#0()))),
767.45/212.86	          ::(#abs(#pos(#s(#s(#0())))),
767.45/212.86	             ::(#abs(#pos(#s(#s(#s(#0()))))),
767.45/212.86	                ::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))), nil())))),
767.45/212.86	       ::(::(#abs(#pos(#s(#s(#0())))),
767.45/212.86	             ::(#abs(#pos(#s(#s(#s(#0()))))),
767.45/212.86	                ::(#abs(#pos(#s(#s(#s(#s(#0())))))),
767.45/212.86	                   ::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))), nil())))),
767.45/212.86	          nil()))
767.45/212.86	  , matrixMult(@m1, @m2) ->
767.45/212.86	    matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
767.45/212.86	  , #abs(#neg(@x)) -> #pos(@x)
767.45/212.86	  , #abs(#pos(@x)) -> #pos(@x)
767.45/212.86	  , #abs(#0()) -> #0()
767.45/212.86	  , #abs(#s(@x)) -> #pos(#s(@x))
767.45/212.86	  , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
767.45/212.86	  , transpose#1(nil(), @m) -> nil()
767.45/212.86	  , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
767.45/212.86	  , split#3(tuple#2(@ys, @m'), @x, @xs) ->
767.45/212.86	    tuple#2(::(@x, @ys), ::(@xs, @m'))
767.45/212.86	  , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
767.45/212.86	  , #pred(#pos(#s(#0()))) -> #0()
767.45/212.86	  , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
767.45/212.86	  , #pred(#0()) -> #neg(#s(#0())) }
767.45/212.86	Obligation:
767.45/212.86	  innermost runtime complexity
767.45/212.86	Answer:
767.45/212.86	  YES(O(1),O(n^3))
767.45/212.86	
767.45/212.86	The following weak DPs constitute a sub-graph of the DG that is
767.45/212.86	closed under successors. The DPs are removed.
767.45/212.86	
767.45/212.86	{ m1^#(@x) ->
767.45/212.86	  c_1(#abs^#(#pos(#s(#0()))),
767.45/212.86	      #abs^#(#pos(#s(#s(#0())))),
767.45/212.86	      #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.86	      #abs^#(#pos(#s(#s(#0())))),
767.45/212.86	      #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.86	      #abs^#(#pos(#s(#s(#s(#s(#0())))))))
767.45/212.86	, #abs^#(#neg(@x)) -> c_47()
767.45/212.86	, #abs^#(#pos(@x)) -> c_48()
767.45/212.86	, #abs^#(#0()) -> c_49()
767.45/212.86	, #abs^#(#s(@x)) -> c_50()
767.45/212.86	, matrixMultList#1^#(nil(), @acc) -> c_20()
767.45/212.86	, m4^#(@x) ->
767.45/212.86	  c_3(#abs^#(#pos(#s(#0()))),
767.45/212.86	      #abs^#(#pos(#s(#s(#0())))),
767.45/212.86	      #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.86	      #abs^#(#pos(#s(#s(#s(#s(#0())))))))
767.45/212.86	, attach#1^#(nil(), @m) -> c_27()
767.45/212.86	, split#1^#(nil()) -> c_10()
767.45/212.86	, mult#2^#(nil(), @x, @xs) -> c_7(#abs^#(#0()))
767.45/212.86	, +^#(@x, @y) -> c_17(#add^#(@x, @y))
767.45/212.86	, *^#(@x, @y) -> c_22(#mult^#(@x, @y))
767.45/212.86	, split#2^#(nil(), @ls) -> c_33()
767.45/212.86	, transpose#1^#(nil(), @m) -> c_52()
767.45/212.86	, m2^#(@x) ->
767.45/212.86	  c_13(#abs^#(#pos(#s(#0()))),
767.45/212.86	       #abs^#(#pos(#s(#s(#0())))),
767.45/212.86	       #abs^#(#pos(#s(#s(#0())))),
767.45/212.86	       #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.86	       #abs^#(#pos(#s(#s(#s(#s(#0())))))),
767.45/212.86	       #abs^#(#pos(#s(#s(#s(#s(#s(#0()))))))))
767.45/212.86	, matrixMult'#1^#(nil(), @m2) -> c_30()
767.45/212.86	, transAcc#1^#(nil(), @base) -> c_18()
767.45/212.86	, mult#1^#(nil(), @l2) -> c_37(#abs^#(#0()))
767.45/212.86	, #add^#(#neg(#s(#0())), @y) -> c_55(#pred^#(@y))
767.45/212.86	, #add^#(#neg(#s(#s(@x))), @y) ->
767.45/212.86	  c_56(#pred^#(#add(#pos(#s(@x)), @y)), #add^#(#pos(#s(@x)), @y))
767.45/212.86	, #add^#(#pos(#s(#0())), @y) -> c_57(#succ^#(@y))
767.45/212.86	, #add^#(#pos(#s(#s(@x))), @y) ->
767.45/212.86	  c_58(#succ^#(#add(#pos(#s(@x)), @y)), #add^#(#pos(#s(@x)), @y))
767.45/212.86	, #add^#(#0(), @y) -> c_59()
767.45/212.86	, #mult^#(#neg(@x), #neg(@y)) -> c_62(#natmult^#(@x, @y))
767.45/212.86	, #mult^#(#neg(@x), #pos(@y)) -> c_63(#natmult^#(@x, @y))
767.45/212.86	, #mult^#(#neg(@x), #0()) -> c_64()
767.45/212.86	, #mult^#(#pos(@x), #neg(@y)) -> c_65(#natmult^#(@x, @y))
767.45/212.86	, #mult^#(#pos(@x), #pos(@y)) -> c_66(#natmult^#(@x, @y))
767.45/212.86	, #mult^#(#pos(@x), #0()) -> c_67()
767.45/212.86	, #mult^#(#0(), #neg(@y)) -> c_68()
767.45/212.86	, #mult^#(#0(), #pos(@y)) -> c_69()
767.45/212.86	, #mult^#(#0(), #0()) -> c_70()
767.45/212.86	, mkBase#1^#(nil()) -> c_23()
767.45/212.86	, transpose#3^#(nil(), @l) -> c_25()
767.45/212.86	, attach#2^#(nil(), @x, @xs) -> c_41()
767.45/212.86	, split#3^#(tuple#2(@ys, @m'), @x, @xs) -> c_54()
767.45/212.86	, makeBase#1^#(nil()) -> c_43()
767.45/212.86	, lineMult#1^#(nil(), @l) -> c_39()
767.45/212.86	, m3^#(@x) ->
767.45/212.86	  c_45(#abs^#(#pos(#s(#0()))),
767.45/212.86	       #abs^#(#pos(#s(#s(#0())))),
767.45/212.86	       #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.86	       #abs^#(#pos(#s(#s(#s(#s(#s(#0()))))))),
767.45/212.86	       #abs^#(#pos(#s(#s(#0())))),
767.45/212.86	       #abs^#(#pos(#s(#s(#s(#0()))))),
767.45/212.86	       #abs^#(#pos(#s(#s(#s(#s(#0())))))),
767.45/212.86	       #abs^#(#pos(#s(#s(#s(#s(#s(#0()))))))))
767.45/212.86	, #pred^#(#neg(#s(@x))) -> c_75()
767.45/212.86	, #pred^#(#pos(#s(#0()))) -> c_76()
767.45/212.86	, #pred^#(#pos(#s(#s(@x)))) -> c_77()
767.45/212.86	, #pred^#(#0()) -> c_78()
767.45/212.86	, #succ^#(#neg(#s(#0()))) -> c_71()
767.45/212.86	, #succ^#(#neg(#s(#s(@x)))) -> c_72()
767.45/212.86	, #succ^#(#pos(#s(@x))) -> c_73()
767.45/212.86	, #succ^#(#0()) -> c_74()
767.45/212.86	, #natmult^#(#0(), @y) -> c_60()
767.45/212.86	, #natmult^#(#s(@x), @y) ->
767.45/212.86	  c_61(#add^#(#pos(@y), #natmult(@x, @y)), #natmult^#(@x, @y)) }
767.45/212.86	
767.45/212.86	We are left with following problem, upon which TcT provides the
767.45/212.86	certificate YES(O(1),O(n^3)).
767.45/212.86	
767.45/212.86	Strict DPs:
767.45/212.86	  { matrixMultList^#(@acc, @mm) -> c_2(matrixMultList#1^#(@mm, @acc))
767.45/212.86	  , matrixMultList#1^#(::(@m, @ms), @acc) ->
767.45/212.86	    c_21(matrixMultList^#(matrixMult(@acc, @m), @ms),
767.45/212.86	         matrixMult^#(@acc, @m))
767.45/212.86	  , attach^#(@line, @m) -> c_4(attach#1^#(@line, @m))
767.45/212.86	  , attach#1^#(::(@x, @xs), @m) -> c_28(attach#2^#(@m, @x, @xs))
767.45/212.86	  , split^#(@m) -> c_5(split#1^#(@m))
767.45/212.86	  , split#1^#(::(@l, @ls)) -> c_11(split#2^#(@l, @ls))
767.45/212.86	  , matrixMult3^#(@m1, @m2, @m3) ->
767.45/212.86	    c_6(matrixMult^#(matrixMult(@m1, @m2), @m3),
767.45/212.86	        matrixMult^#(@m1, @m2))
767.45/212.86	  , matrixMult^#(@m1, @m2) ->
767.45/212.86	    c_46(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))),
767.45/212.86	         transAcc^#(@m2, makeBase(@m2)),
767.45/212.86	         makeBase^#(@m2))
767.45/212.86	  , mult#2^#(::(@y, @ys), @x, @xs) ->
767.45/212.86	    c_8(+^#(*(@x, @y), mult(@xs, @ys)), *^#(@x, @y), mult^#(@xs, @ys))
767.45/212.86	  , mult^#(@l1, @l2) -> c_16(mult#1^#(@l1, @l2))
767.45/212.86	  , transpose'^#(@m) ->
767.45/212.86	    c_9(transAcc^#(@m, makeBase(@m)), makeBase^#(@m))
767.45/212.86	  , transAcc^#(@m, @base) -> c_15(transAcc#1^#(@m, @base))
767.45/212.86	  , makeBase^#(@m) -> c_36(makeBase#1^#(@m))
767.45/212.86	  , split#2^#(::(@x, @xs), @ls) ->
767.45/212.86	    c_34(split#3^#(split(@ls), @x, @xs), split^#(@ls))
767.45/212.86	  , transpose^#(@m) -> c_12(transpose#1^#(@m, @m))
767.45/212.86	  , transpose#1^#(::(@xs, @xss), @m) ->
767.45/212.86	    c_53(transpose#2^#(split(@m)), split^#(@m))
767.45/212.86	  , matrixMult'^#(@m1, @m2) -> c_14(matrixMult'#1^#(@m1, @m2))
767.45/212.86	  , matrixMult'#1^#(::(@l, @ls), @m2) ->
767.45/212.86	    c_31(lineMult^#(@l, @m2), matrixMult'^#(@ls, @m2))
767.45/212.86	  , transAcc#1^#(::(@l, @m'), @base) ->
767.45/212.86	    c_19(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
767.45/212.86	  , mult#1^#(::(@x, @xs), @l2) -> c_38(mult#2^#(@l2, @x, @xs))
767.45/212.86	  , mkBase#1^#(::(@l, @m')) -> c_24(mkBase^#(@m'))
767.45/212.86	  , mkBase^#(@m) -> c_35(mkBase#1^#(@m))
767.45/212.86	  , transpose#3^#(::(@y, @ys), @l) -> c_26(transpose^#(::(@y, @ys)))
767.45/212.86	  , attach#2^#(::(@l, @ls), @x, @xs) -> c_42(attach^#(@xs, @ls))
767.45/212.86	  , transpose#2^#(tuple#2(@l, @m')) -> c_29(transpose#3^#(@m', @l))
767.45/212.86	  , lineMult^#(@l, @m2) -> c_51(lineMult#1^#(@m2, @l))
767.45/212.86	  , matrixMultOld^#(@m1, @m2) ->
767.45/212.86	    c_32(matrixMult'^#(@m1, transpose(@m2)), transpose^#(@m2))
767.45/212.86	  , makeBase#1^#(::(@l, @m')) -> c_44(mkBase^#(@l))
767.45/212.86	  , lineMult#1^#(::(@x, @xs), @l) ->
767.45/212.86	    c_40(mult^#(@l, @x), lineMult^#(@l, @xs)) }
767.45/212.86	Weak Trs:
767.45/212.86	  { m1(@x) ->
767.45/212.86	    ::(::(#abs(#pos(#s(#0()))),
767.45/212.86	          ::(#abs(#pos(#s(#s(#0())))),
767.45/212.86	             ::(#abs(#pos(#s(#s(#s(#0()))))), nil()))),
767.45/212.86	       ::(::(#abs(#pos(#s(#s(#0())))),
767.45/212.86	             ::(#abs(#pos(#s(#s(#s(#0()))))),
767.45/212.86	                ::(#abs(#pos(#s(#s(#s(#s(#0())))))), nil()))),
767.45/212.86	          nil()))
767.45/212.86	  , matrixMultList(@acc, @mm) -> matrixMultList#1(@mm, @acc)
767.45/212.86	  , m4(@x) ->
767.45/212.86	    ::(::(#abs(#pos(#s(#0()))), nil()),
767.45/212.86	       ::(::(#abs(#pos(#s(#s(#0())))), nil()),
767.45/212.86	          ::(::(#abs(#pos(#s(#s(#s(#0()))))), nil()),
767.45/212.86	             ::(::(#abs(#pos(#s(#s(#s(#s(#0())))))), nil()), nil()))))
767.45/212.86	  , attach(@line, @m) -> attach#1(@line, @m)
767.45/212.86	  , split(@m) -> split#1(@m)
767.45/212.86	  , matrixMult3(@m1, @m2, @m3) ->
767.45/212.86	    matrixMult(matrixMult(@m1, @m2), @m3)
767.45/212.86	  , #add(#neg(#s(#0())), @y) -> #pred(@y)
767.45/212.86	  , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
767.45/212.86	  , #add(#pos(#s(#0())), @y) -> #succ(@y)
767.45/212.86	  , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
767.45/212.86	  , #add(#0(), @y) -> @y
767.45/212.86	  , mult#2(nil(), @x, @xs) -> #abs(#0())
767.45/212.86	  , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
767.45/212.86	  , transpose'(@m) -> transAcc(@m, makeBase(@m))
767.45/212.86	  , split#1(nil()) -> tuple#2(nil(), nil())
767.45/212.86	  , split#1(::(@l, @ls)) -> split#2(@l, @ls)
767.45/212.86	  , transpose(@m) -> transpose#1(@m, @m)
767.45/212.86	  , m2(@x) ->
767.45/212.86	    ::(::(#abs(#pos(#s(#0()))), ::(#abs(#pos(#s(#s(#0())))), nil())),
767.45/212.86	       ::(::(#abs(#pos(#s(#s(#0())))),
767.45/212.86	             ::(#abs(#pos(#s(#s(#s(#0()))))), nil())),
767.45/212.86	          ::(::(#abs(#pos(#s(#s(#s(#s(#0())))))),
767.45/212.86	                ::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))), nil())),
767.45/212.86	             nil())))
767.45/212.86	  , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
767.45/212.86	  , transAcc(@m, @base) -> transAcc#1(@m, @base)
767.45/212.86	  , mult(@l1, @l2) -> mult#1(@l1, @l2)
767.45/212.86	  , +(@x, @y) -> #add(@x, @y)
767.45/212.86	  , transAcc#1(nil(), @base) -> @base
767.45/212.86	  , transAcc#1(::(@l, @m'), @base) ->
767.45/212.86	    attach(@l, transAcc(@m', @base))
767.45/212.86	  , matrixMultList#1(nil(), @acc) -> @acc
767.45/212.86	  , matrixMultList#1(::(@m, @ms), @acc) ->
767.45/212.86	    matrixMultList(matrixMult(@acc, @m), @ms)
767.45/212.86	  , *(@x, @y) -> #mult(@x, @y)
767.45/212.86	  , mkBase#1(nil()) -> nil()
767.45/212.86	  , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.45/212.86	  , transpose#3(nil(), @l) -> nil()
767.45/212.86	  , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
767.45/212.86	  , attach#1(nil(), @m) -> nil()
767.45/212.86	  , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.45/212.86	  , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
767.45/212.86	  , matrixMult'#1(nil(), @m2) -> nil()
767.45/212.86	  , matrixMult'#1(::(@l, @ls), @m2) ->
767.45/212.86	    ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
767.45/212.86	  , #natmult(#0(), @y) -> #0()
767.45/212.86	  , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
767.45/212.86	  , matrixMultOld(@m1, @m2) -> matrixMult'(@m1, transpose(@m2))
767.45/212.86	  , split#2(nil(), @ls) -> tuple#2(nil(), nil())
767.45/212.86	  , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
767.45/212.86	  , mkBase(@m) -> mkBase#1(@m)
767.45/212.86	  , makeBase(@m) -> makeBase#1(@m)
767.45/212.86	  , mult#1(nil(), @l2) -> #abs(#0())
767.45/212.86	  , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
767.45/212.86	  , lineMult#1(nil(), @l) -> nil()
767.45/212.86	  , lineMult#1(::(@x, @xs), @l) ->
767.45/212.86	    ::(mult(@l, @x), lineMult(@l, @xs))
767.45/212.86	  , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
767.45/212.86	  , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
767.45/212.86	  , #mult(#neg(@x), #0()) -> #0()
767.45/212.86	  , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
767.45/212.86	  , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
767.45/212.86	  , #mult(#pos(@x), #0()) -> #0()
767.45/212.86	  , #mult(#0(), #neg(@y)) -> #0()
767.45/212.86	  , #mult(#0(), #pos(@y)) -> #0()
767.45/212.86	  , #mult(#0(), #0()) -> #0()
767.45/212.86	  , attach#2(nil(), @x, @xs) -> nil()
767.45/212.86	  , attach#2(::(@l, @ls), @x, @xs) ->
767.45/212.86	    ::(::(@x, @l), attach(@xs, @ls))
767.45/212.86	  , #succ(#neg(#s(#0()))) -> #0()
767.45/212.86	  , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
767.45/212.86	  , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
767.45/212.86	  , #succ(#0()) -> #pos(#s(#0()))
767.45/212.86	  , makeBase#1(nil()) -> nil()
767.45/212.86	  , makeBase#1(::(@l, @m')) -> mkBase(@l)
767.45/212.86	  , m3(@x) ->
767.45/212.86	    ::(::(#abs(#pos(#s(#0()))),
767.45/212.86	          ::(#abs(#pos(#s(#s(#0())))),
767.45/212.86	             ::(#abs(#pos(#s(#s(#s(#0()))))),
767.45/212.86	                ::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))), nil())))),
767.45/212.86	       ::(::(#abs(#pos(#s(#s(#0())))),
767.45/212.86	             ::(#abs(#pos(#s(#s(#s(#0()))))),
767.45/212.86	                ::(#abs(#pos(#s(#s(#s(#s(#0())))))),
767.45/212.86	                   ::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))), nil())))),
767.45/212.86	          nil()))
767.45/212.86	  , matrixMult(@m1, @m2) ->
767.45/212.86	    matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
767.45/212.86	  , #abs(#neg(@x)) -> #pos(@x)
767.45/212.86	  , #abs(#pos(@x)) -> #pos(@x)
767.45/212.86	  , #abs(#0()) -> #0()
767.45/212.86	  , #abs(#s(@x)) -> #pos(#s(@x))
767.45/212.86	  , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
767.45/212.86	  , transpose#1(nil(), @m) -> nil()
767.45/212.86	  , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
767.45/212.86	  , split#3(tuple#2(@ys, @m'), @x, @xs) ->
767.45/212.86	    tuple#2(::(@x, @ys), ::(@xs, @m'))
767.45/212.86	  , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
767.45/212.86	  , #pred(#pos(#s(#0()))) -> #0()
767.45/212.86	  , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
767.45/212.86	  , #pred(#0()) -> #neg(#s(#0())) }
767.45/212.86	Obligation:
767.45/212.86	  innermost runtime complexity
767.45/212.86	Answer:
767.45/212.86	  YES(O(1),O(n^3))
767.45/212.86	
767.45/212.86	Due to missing edges in the dependency-graph, the right-hand sides
767.45/212.86	of following rules could be simplified:
767.45/212.86	
767.45/212.86	  { mult#2^#(::(@y, @ys), @x, @xs) ->
767.45/212.86	    c_8(+^#(*(@x, @y), mult(@xs, @ys)), *^#(@x, @y), mult^#(@xs, @ys))
767.45/212.86	  , split#2^#(::(@x, @xs), @ls) ->
767.45/212.86	    c_34(split#3^#(split(@ls), @x, @xs), split^#(@ls)) }
767.45/212.86	
767.45/212.86	We are left with following problem, upon which TcT provides the
767.45/212.86	certificate YES(O(1),O(n^3)).
767.45/212.86	
767.45/212.86	Strict DPs:
767.45/212.86	  { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
767.45/212.86	  , matrixMultList#1^#(::(@m, @ms), @acc) ->
767.45/212.86	    c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
767.45/212.86	        matrixMult^#(@acc, @m))
767.45/212.86	  , attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
767.45/212.86	  , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
767.45/212.86	  , split^#(@m) -> c_5(split#1^#(@m))
767.45/212.86	  , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
767.45/212.86	  , matrixMult3^#(@m1, @m2, @m3) ->
767.45/212.86	    c_7(matrixMult^#(matrixMult(@m1, @m2), @m3),
767.45/212.86	        matrixMult^#(@m1, @m2))
767.45/212.86	  , matrixMult^#(@m1, @m2) ->
767.45/212.86	    c_8(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))),
767.45/212.86	        transAcc^#(@m2, makeBase(@m2)),
767.45/212.86	        makeBase^#(@m2))
767.45/212.86	  , mult#2^#(::(@y, @ys), @x, @xs) -> c_9(mult^#(@xs, @ys))
767.45/212.86	  , mult^#(@l1, @l2) -> c_10(mult#1^#(@l1, @l2))
767.45/212.86	  , transpose'^#(@m) ->
767.45/212.86	    c_11(transAcc^#(@m, makeBase(@m)), makeBase^#(@m))
767.45/212.86	  , transAcc^#(@m, @base) -> c_12(transAcc#1^#(@m, @base))
767.45/212.86	  , makeBase^#(@m) -> c_13(makeBase#1^#(@m))
767.45/212.86	  , split#2^#(::(@x, @xs), @ls) -> c_14(split^#(@ls))
767.45/212.86	  , transpose^#(@m) -> c_15(transpose#1^#(@m, @m))
767.45/212.86	  , transpose#1^#(::(@xs, @xss), @m) ->
767.45/212.86	    c_16(transpose#2^#(split(@m)), split^#(@m))
767.45/212.86	  , matrixMult'^#(@m1, @m2) -> c_17(matrixMult'#1^#(@m1, @m2))
767.45/212.86	  , matrixMult'#1^#(::(@l, @ls), @m2) ->
767.45/212.86	    c_18(lineMult^#(@l, @m2), matrixMult'^#(@ls, @m2))
767.45/212.86	  , transAcc#1^#(::(@l, @m'), @base) ->
767.45/212.86	    c_19(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
767.45/212.86	  , mult#1^#(::(@x, @xs), @l2) -> c_20(mult#2^#(@l2, @x, @xs))
767.45/212.86	  , mkBase#1^#(::(@l, @m')) -> c_21(mkBase^#(@m'))
767.45/212.86	  , mkBase^#(@m) -> c_22(mkBase#1^#(@m))
767.45/212.86	  , transpose#3^#(::(@y, @ys), @l) -> c_23(transpose^#(::(@y, @ys)))
767.45/212.86	  , attach#2^#(::(@l, @ls), @x, @xs) -> c_24(attach^#(@xs, @ls))
767.45/212.86	  , transpose#2^#(tuple#2(@l, @m')) -> c_25(transpose#3^#(@m', @l))
767.45/212.86	  , lineMult^#(@l, @m2) -> c_26(lineMult#1^#(@m2, @l))
767.45/212.86	  , matrixMultOld^#(@m1, @m2) ->
767.45/212.86	    c_27(matrixMult'^#(@m1, transpose(@m2)), transpose^#(@m2))
767.45/212.86	  , makeBase#1^#(::(@l, @m')) -> c_28(mkBase^#(@l))
767.45/212.86	  , lineMult#1^#(::(@x, @xs), @l) ->
767.45/212.86	    c_29(mult^#(@l, @x), lineMult^#(@l, @xs)) }
767.45/212.86	Weak Trs:
767.45/212.86	  { m1(@x) ->
767.45/212.86	    ::(::(#abs(#pos(#s(#0()))),
767.45/212.86	          ::(#abs(#pos(#s(#s(#0())))),
767.45/212.86	             ::(#abs(#pos(#s(#s(#s(#0()))))), nil()))),
767.45/212.86	       ::(::(#abs(#pos(#s(#s(#0())))),
767.45/212.86	             ::(#abs(#pos(#s(#s(#s(#0()))))),
767.45/212.86	                ::(#abs(#pos(#s(#s(#s(#s(#0())))))), nil()))),
767.45/212.86	          nil()))
767.45/212.86	  , matrixMultList(@acc, @mm) -> matrixMultList#1(@mm, @acc)
767.45/212.86	  , m4(@x) ->
767.45/212.86	    ::(::(#abs(#pos(#s(#0()))), nil()),
767.45/212.86	       ::(::(#abs(#pos(#s(#s(#0())))), nil()),
767.45/212.86	          ::(::(#abs(#pos(#s(#s(#s(#0()))))), nil()),
767.45/212.86	             ::(::(#abs(#pos(#s(#s(#s(#s(#0())))))), nil()), nil()))))
767.45/212.86	  , attach(@line, @m) -> attach#1(@line, @m)
767.45/212.86	  , split(@m) -> split#1(@m)
767.45/212.86	  , matrixMult3(@m1, @m2, @m3) ->
767.45/212.86	    matrixMult(matrixMult(@m1, @m2), @m3)
767.45/212.86	  , #add(#neg(#s(#0())), @y) -> #pred(@y)
767.45/212.86	  , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
767.45/212.86	  , #add(#pos(#s(#0())), @y) -> #succ(@y)
767.45/212.86	  , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
767.45/212.86	  , #add(#0(), @y) -> @y
767.45/212.86	  , mult#2(nil(), @x, @xs) -> #abs(#0())
767.45/212.86	  , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
767.45/212.86	  , transpose'(@m) -> transAcc(@m, makeBase(@m))
767.45/212.86	  , split#1(nil()) -> tuple#2(nil(), nil())
767.45/212.86	  , split#1(::(@l, @ls)) -> split#2(@l, @ls)
767.45/212.86	  , transpose(@m) -> transpose#1(@m, @m)
767.45/212.86	  , m2(@x) ->
767.45/212.86	    ::(::(#abs(#pos(#s(#0()))), ::(#abs(#pos(#s(#s(#0())))), nil())),
767.45/212.86	       ::(::(#abs(#pos(#s(#s(#0())))),
767.45/212.86	             ::(#abs(#pos(#s(#s(#s(#0()))))), nil())),
767.45/212.86	          ::(::(#abs(#pos(#s(#s(#s(#s(#0())))))),
767.45/212.86	                ::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))), nil())),
767.45/212.86	             nil())))
767.45/212.86	  , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
767.45/212.86	  , transAcc(@m, @base) -> transAcc#1(@m, @base)
767.45/212.86	  , mult(@l1, @l2) -> mult#1(@l1, @l2)
767.45/212.86	  , +(@x, @y) -> #add(@x, @y)
767.45/212.86	  , transAcc#1(nil(), @base) -> @base
767.45/212.86	  , transAcc#1(::(@l, @m'), @base) ->
767.45/212.86	    attach(@l, transAcc(@m', @base))
767.45/212.86	  , matrixMultList#1(nil(), @acc) -> @acc
767.45/212.86	  , matrixMultList#1(::(@m, @ms), @acc) ->
767.45/212.86	    matrixMultList(matrixMult(@acc, @m), @ms)
767.45/212.86	  , *(@x, @y) -> #mult(@x, @y)
767.45/212.86	  , mkBase#1(nil()) -> nil()
767.45/212.86	  , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.45/212.86	  , transpose#3(nil(), @l) -> nil()
767.45/212.86	  , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
767.45/212.86	  , attach#1(nil(), @m) -> nil()
767.45/212.86	  , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.45/212.86	  , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
767.45/212.86	  , matrixMult'#1(nil(), @m2) -> nil()
767.45/212.86	  , matrixMult'#1(::(@l, @ls), @m2) ->
767.45/212.86	    ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
767.45/212.86	  , #natmult(#0(), @y) -> #0()
767.45/212.86	  , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
767.45/212.86	  , matrixMultOld(@m1, @m2) -> matrixMult'(@m1, transpose(@m2))
767.45/212.86	  , split#2(nil(), @ls) -> tuple#2(nil(), nil())
767.45/212.86	  , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
767.45/212.86	  , mkBase(@m) -> mkBase#1(@m)
767.45/212.86	  , makeBase(@m) -> makeBase#1(@m)
767.45/212.86	  , mult#1(nil(), @l2) -> #abs(#0())
767.45/212.86	  , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
767.45/212.86	  , lineMult#1(nil(), @l) -> nil()
767.45/212.86	  , lineMult#1(::(@x, @xs), @l) ->
767.45/212.86	    ::(mult(@l, @x), lineMult(@l, @xs))
767.45/212.86	  , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
767.45/212.86	  , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
767.45/212.86	  , #mult(#neg(@x), #0()) -> #0()
767.45/212.86	  , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
767.45/212.86	  , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
767.45/212.86	  , #mult(#pos(@x), #0()) -> #0()
767.45/212.86	  , #mult(#0(), #neg(@y)) -> #0()
767.45/212.86	  , #mult(#0(), #pos(@y)) -> #0()
767.45/212.86	  , #mult(#0(), #0()) -> #0()
767.45/212.86	  , attach#2(nil(), @x, @xs) -> nil()
767.45/212.86	  , attach#2(::(@l, @ls), @x, @xs) ->
767.45/212.86	    ::(::(@x, @l), attach(@xs, @ls))
767.45/212.86	  , #succ(#neg(#s(#0()))) -> #0()
767.45/212.86	  , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
767.45/212.86	  , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
767.45/212.86	  , #succ(#0()) -> #pos(#s(#0()))
767.45/212.86	  , makeBase#1(nil()) -> nil()
767.45/212.86	  , makeBase#1(::(@l, @m')) -> mkBase(@l)
767.45/212.86	  , m3(@x) ->
767.45/212.86	    ::(::(#abs(#pos(#s(#0()))),
767.45/212.86	          ::(#abs(#pos(#s(#s(#0())))),
767.45/212.86	             ::(#abs(#pos(#s(#s(#s(#0()))))),
767.45/212.86	                ::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))), nil())))),
767.45/212.86	       ::(::(#abs(#pos(#s(#s(#0())))),
767.45/212.86	             ::(#abs(#pos(#s(#s(#s(#0()))))),
767.45/212.86	                ::(#abs(#pos(#s(#s(#s(#s(#0())))))),
767.45/212.86	                   ::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))), nil())))),
767.45/212.86	          nil()))
767.45/212.86	  , matrixMult(@m1, @m2) ->
767.45/212.86	    matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
767.45/212.86	  , #abs(#neg(@x)) -> #pos(@x)
767.45/212.86	  , #abs(#pos(@x)) -> #pos(@x)
767.45/212.86	  , #abs(#0()) -> #0()
767.45/212.86	  , #abs(#s(@x)) -> #pos(#s(@x))
767.45/212.86	  , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
767.45/212.86	  , transpose#1(nil(), @m) -> nil()
767.45/212.87	  , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
767.45/212.87	  , split#3(tuple#2(@ys, @m'), @x, @xs) ->
767.45/212.87	    tuple#2(::(@x, @ys), ::(@xs, @m'))
767.45/212.87	  , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
767.45/212.87	  , #pred(#pos(#s(#0()))) -> #0()
767.45/212.87	  , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
767.45/212.87	  , #pred(#0()) -> #neg(#s(#0())) }
767.45/212.87	Obligation:
767.45/212.87	  innermost runtime complexity
767.45/212.87	Answer:
767.45/212.87	  YES(O(1),O(n^3))
767.45/212.87	
767.45/212.87	We replace rewrite rules by usable rules:
767.45/212.87	
767.45/212.87	  Weak Usable Rules:
767.45/212.87	    { attach(@line, @m) -> attach#1(@line, @m)
767.45/212.87	    , split(@m) -> split#1(@m)
767.45/212.87	    , #add(#neg(#s(#0())), @y) -> #pred(@y)
767.45/212.87	    , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
767.45/212.87	    , #add(#pos(#s(#0())), @y) -> #succ(@y)
767.45/212.87	    , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
767.45/212.87	    , #add(#0(), @y) -> @y
767.45/212.87	    , mult#2(nil(), @x, @xs) -> #abs(#0())
767.45/212.87	    , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
767.45/212.87	    , split#1(nil()) -> tuple#2(nil(), nil())
767.45/212.87	    , split#1(::(@l, @ls)) -> split#2(@l, @ls)
767.45/212.87	    , transpose(@m) -> transpose#1(@m, @m)
767.45/212.87	    , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
767.45/212.87	    , transAcc(@m, @base) -> transAcc#1(@m, @base)
767.45/212.87	    , mult(@l1, @l2) -> mult#1(@l1, @l2)
767.45/212.87	    , +(@x, @y) -> #add(@x, @y)
767.45/212.87	    , transAcc#1(nil(), @base) -> @base
767.45/212.87	    , transAcc#1(::(@l, @m'), @base) ->
767.45/212.87	      attach(@l, transAcc(@m', @base))
767.45/212.87	    , *(@x, @y) -> #mult(@x, @y)
767.45/212.87	    , mkBase#1(nil()) -> nil()
767.45/212.87	    , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.45/212.87	    , transpose#3(nil(), @l) -> nil()
767.45/212.87	    , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
767.45/212.87	    , attach#1(nil(), @m) -> nil()
767.45/212.87	    , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.45/212.87	    , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
767.45/212.87	    , matrixMult'#1(nil(), @m2) -> nil()
767.45/212.87	    , matrixMult'#1(::(@l, @ls), @m2) ->
767.45/212.87	      ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
767.45/212.87	    , #natmult(#0(), @y) -> #0()
767.45/212.87	    , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
767.45/212.87	    , split#2(nil(), @ls) -> tuple#2(nil(), nil())
767.45/212.87	    , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
767.45/212.87	    , mkBase(@m) -> mkBase#1(@m)
767.45/212.87	    , makeBase(@m) -> makeBase#1(@m)
767.45/212.87	    , mult#1(nil(), @l2) -> #abs(#0())
767.45/212.87	    , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
767.45/212.87	    , lineMult#1(nil(), @l) -> nil()
767.45/212.87	    , lineMult#1(::(@x, @xs), @l) ->
767.45/212.87	      ::(mult(@l, @x), lineMult(@l, @xs))
767.45/212.87	    , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
767.45/212.87	    , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
767.45/212.87	    , #mult(#neg(@x), #0()) -> #0()
767.45/212.87	    , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
767.45/212.87	    , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
767.45/212.87	    , #mult(#pos(@x), #0()) -> #0()
767.45/212.87	    , #mult(#0(), #neg(@y)) -> #0()
767.45/212.87	    , #mult(#0(), #pos(@y)) -> #0()
767.45/212.87	    , #mult(#0(), #0()) -> #0()
767.45/212.87	    , attach#2(nil(), @x, @xs) -> nil()
767.45/212.87	    , attach#2(::(@l, @ls), @x, @xs) ->
767.45/212.87	      ::(::(@x, @l), attach(@xs, @ls))
767.45/212.87	    , #succ(#neg(#s(#0()))) -> #0()
767.45/212.87	    , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
767.45/212.87	    , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
767.45/212.87	    , #succ(#0()) -> #pos(#s(#0()))
767.45/212.87	    , makeBase#1(nil()) -> nil()
767.45/212.87	    , makeBase#1(::(@l, @m')) -> mkBase(@l)
767.45/212.87	    , matrixMult(@m1, @m2) ->
767.45/212.87	      matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
767.45/212.87	    , #abs(#neg(@x)) -> #pos(@x)
767.45/212.87	    , #abs(#pos(@x)) -> #pos(@x)
767.45/212.87	    , #abs(#0()) -> #0()
767.45/212.87	    , #abs(#s(@x)) -> #pos(#s(@x))
767.45/212.87	    , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
767.45/212.87	    , transpose#1(nil(), @m) -> nil()
767.45/212.87	    , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
767.45/212.87	    , split#3(tuple#2(@ys, @m'), @x, @xs) ->
767.45/212.87	      tuple#2(::(@x, @ys), ::(@xs, @m'))
767.45/212.87	    , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
767.45/212.87	    , #pred(#pos(#s(#0()))) -> #0()
767.45/212.87	    , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
767.45/212.87	    , #pred(#0()) -> #neg(#s(#0())) }
767.45/212.87	
767.45/212.87	We are left with following problem, upon which TcT provides the
767.45/212.87	certificate YES(O(1),O(n^3)).
767.45/212.87	
767.45/212.87	Strict DPs:
767.45/212.87	  { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
767.45/212.87	  , matrixMultList#1^#(::(@m, @ms), @acc) ->
767.45/212.87	    c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
767.45/212.87	        matrixMult^#(@acc, @m))
767.45/212.87	  , attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
767.45/212.87	  , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
767.45/212.87	  , split^#(@m) -> c_5(split#1^#(@m))
767.45/212.87	  , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
767.45/212.87	  , matrixMult3^#(@m1, @m2, @m3) ->
767.45/212.87	    c_7(matrixMult^#(matrixMult(@m1, @m2), @m3),
767.45/212.87	        matrixMult^#(@m1, @m2))
767.45/212.87	  , matrixMult^#(@m1, @m2) ->
767.45/212.87	    c_8(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))),
767.45/212.87	        transAcc^#(@m2, makeBase(@m2)),
767.45/212.87	        makeBase^#(@m2))
767.45/212.87	  , mult#2^#(::(@y, @ys), @x, @xs) -> c_9(mult^#(@xs, @ys))
767.45/212.87	  , mult^#(@l1, @l2) -> c_10(mult#1^#(@l1, @l2))
767.45/212.87	  , transpose'^#(@m) ->
767.45/212.87	    c_11(transAcc^#(@m, makeBase(@m)), makeBase^#(@m))
767.45/212.87	  , transAcc^#(@m, @base) -> c_12(transAcc#1^#(@m, @base))
767.45/212.87	  , makeBase^#(@m) -> c_13(makeBase#1^#(@m))
767.45/212.87	  , split#2^#(::(@x, @xs), @ls) -> c_14(split^#(@ls))
767.45/212.87	  , transpose^#(@m) -> c_15(transpose#1^#(@m, @m))
767.45/212.87	  , transpose#1^#(::(@xs, @xss), @m) ->
767.45/212.87	    c_16(transpose#2^#(split(@m)), split^#(@m))
767.45/212.87	  , matrixMult'^#(@m1, @m2) -> c_17(matrixMult'#1^#(@m1, @m2))
767.45/212.87	  , matrixMult'#1^#(::(@l, @ls), @m2) ->
767.45/212.87	    c_18(lineMult^#(@l, @m2), matrixMult'^#(@ls, @m2))
767.45/212.87	  , transAcc#1^#(::(@l, @m'), @base) ->
767.45/212.87	    c_19(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
767.45/212.87	  , mult#1^#(::(@x, @xs), @l2) -> c_20(mult#2^#(@l2, @x, @xs))
767.45/212.87	  , mkBase#1^#(::(@l, @m')) -> c_21(mkBase^#(@m'))
767.45/212.87	  , mkBase^#(@m) -> c_22(mkBase#1^#(@m))
767.45/212.87	  , transpose#3^#(::(@y, @ys), @l) -> c_23(transpose^#(::(@y, @ys)))
767.45/212.87	  , attach#2^#(::(@l, @ls), @x, @xs) -> c_24(attach^#(@xs, @ls))
767.45/212.87	  , transpose#2^#(tuple#2(@l, @m')) -> c_25(transpose#3^#(@m', @l))
767.45/212.87	  , lineMult^#(@l, @m2) -> c_26(lineMult#1^#(@m2, @l))
767.45/212.87	  , matrixMultOld^#(@m1, @m2) ->
767.45/212.87	    c_27(matrixMult'^#(@m1, transpose(@m2)), transpose^#(@m2))
767.45/212.87	  , makeBase#1^#(::(@l, @m')) -> c_28(mkBase^#(@l))
767.45/212.87	  , lineMult#1^#(::(@x, @xs), @l) ->
767.45/212.87	    c_29(mult^#(@l, @x), lineMult^#(@l, @xs)) }
767.45/212.87	Weak Trs:
767.45/212.87	  { attach(@line, @m) -> attach#1(@line, @m)
767.45/212.87	  , split(@m) -> split#1(@m)
767.45/212.87	  , #add(#neg(#s(#0())), @y) -> #pred(@y)
767.45/212.87	  , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
767.45/212.87	  , #add(#pos(#s(#0())), @y) -> #succ(@y)
767.45/212.87	  , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
767.45/212.87	  , #add(#0(), @y) -> @y
767.45/212.87	  , mult#2(nil(), @x, @xs) -> #abs(#0())
767.45/212.87	  , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
767.45/212.87	  , split#1(nil()) -> tuple#2(nil(), nil())
767.45/212.87	  , split#1(::(@l, @ls)) -> split#2(@l, @ls)
767.45/212.87	  , transpose(@m) -> transpose#1(@m, @m)
767.45/212.87	  , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
767.45/212.87	  , transAcc(@m, @base) -> transAcc#1(@m, @base)
767.45/212.87	  , mult(@l1, @l2) -> mult#1(@l1, @l2)
767.45/212.87	  , +(@x, @y) -> #add(@x, @y)
767.45/212.87	  , transAcc#1(nil(), @base) -> @base
767.45/212.87	  , transAcc#1(::(@l, @m'), @base) ->
767.45/212.87	    attach(@l, transAcc(@m', @base))
767.45/212.87	  , *(@x, @y) -> #mult(@x, @y)
767.45/212.87	  , mkBase#1(nil()) -> nil()
767.45/212.87	  , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.45/212.87	  , transpose#3(nil(), @l) -> nil()
767.45/212.87	  , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
767.45/212.87	  , attach#1(nil(), @m) -> nil()
767.45/212.87	  , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.45/212.87	  , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
767.45/212.87	  , matrixMult'#1(nil(), @m2) -> nil()
767.45/212.87	  , matrixMult'#1(::(@l, @ls), @m2) ->
767.45/212.87	    ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
767.45/212.87	  , #natmult(#0(), @y) -> #0()
767.45/212.87	  , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
767.45/212.87	  , split#2(nil(), @ls) -> tuple#2(nil(), nil())
767.45/212.87	  , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
767.45/212.87	  , mkBase(@m) -> mkBase#1(@m)
767.45/212.87	  , makeBase(@m) -> makeBase#1(@m)
767.45/212.87	  , mult#1(nil(), @l2) -> #abs(#0())
767.45/212.87	  , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
767.45/212.87	  , lineMult#1(nil(), @l) -> nil()
767.45/212.87	  , lineMult#1(::(@x, @xs), @l) ->
767.45/212.87	    ::(mult(@l, @x), lineMult(@l, @xs))
767.45/212.87	  , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
767.45/212.87	  , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
767.45/212.87	  , #mult(#neg(@x), #0()) -> #0()
767.45/212.87	  , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
767.45/212.87	  , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
767.45/212.87	  , #mult(#pos(@x), #0()) -> #0()
767.45/212.87	  , #mult(#0(), #neg(@y)) -> #0()
767.45/212.87	  , #mult(#0(), #pos(@y)) -> #0()
767.45/212.87	  , #mult(#0(), #0()) -> #0()
767.45/212.87	  , attach#2(nil(), @x, @xs) -> nil()
767.45/212.87	  , attach#2(::(@l, @ls), @x, @xs) ->
767.45/212.87	    ::(::(@x, @l), attach(@xs, @ls))
767.45/212.87	  , #succ(#neg(#s(#0()))) -> #0()
767.45/212.87	  , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
767.45/212.87	  , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
767.45/212.87	  , #succ(#0()) -> #pos(#s(#0()))
767.45/212.87	  , makeBase#1(nil()) -> nil()
767.45/212.87	  , makeBase#1(::(@l, @m')) -> mkBase(@l)
767.45/212.87	  , matrixMult(@m1, @m2) ->
767.45/212.87	    matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
767.45/212.87	  , #abs(#neg(@x)) -> #pos(@x)
767.45/212.87	  , #abs(#pos(@x)) -> #pos(@x)
767.45/212.87	  , #abs(#0()) -> #0()
767.45/212.87	  , #abs(#s(@x)) -> #pos(#s(@x))
767.45/212.87	  , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
767.45/212.87	  , transpose#1(nil(), @m) -> nil()
767.45/212.87	  , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
767.45/212.87	  , split#3(tuple#2(@ys, @m'), @x, @xs) ->
767.45/212.87	    tuple#2(::(@x, @ys), ::(@xs, @m'))
767.45/212.87	  , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
767.45/212.87	  , #pred(#pos(#s(#0()))) -> #0()
767.45/212.87	  , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
767.45/212.87	  , #pred(#0()) -> #neg(#s(#0())) }
767.45/212.87	Obligation:
767.45/212.87	  innermost runtime complexity
767.45/212.87	Answer:
767.45/212.87	  YES(O(1),O(n^3))
767.45/212.87	
767.45/212.87	We analyse the complexity of following sub-problems (R) and (S).
767.45/212.87	Problem (S) is obtained from the input problem by shifting strict
767.45/212.87	rules from (R) into the weak component:
767.45/212.87	
767.45/212.87	Problem (R):
767.45/212.87	------------
767.45/212.87	  Strict DPs:
767.45/212.87	    { matrixMult3^#(@m1, @m2, @m3) ->
767.45/212.87	      c_7(matrixMult^#(matrixMult(@m1, @m2), @m3),
767.45/212.87	          matrixMult^#(@m1, @m2))
767.45/212.87	    , matrixMult^#(@m1, @m2) ->
767.45/212.87	      c_8(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))),
767.45/212.87	          transAcc^#(@m2, makeBase(@m2)),
767.45/212.87	          makeBase^#(@m2))
767.45/212.87	    , mult#2^#(::(@y, @ys), @x, @xs) -> c_9(mult^#(@xs, @ys))
767.45/212.87	    , mult^#(@l1, @l2) -> c_10(mult#1^#(@l1, @l2))
767.45/212.87	    , matrixMult'^#(@m1, @m2) -> c_17(matrixMult'#1^#(@m1, @m2))
767.45/212.87	    , matrixMult'#1^#(::(@l, @ls), @m2) ->
767.45/212.87	      c_18(lineMult^#(@l, @m2), matrixMult'^#(@ls, @m2))
767.45/212.87	    , mult#1^#(::(@x, @xs), @l2) -> c_20(mult#2^#(@l2, @x, @xs))
767.45/212.87	    , lineMult^#(@l, @m2) -> c_26(lineMult#1^#(@m2, @l))
767.45/212.87	    , lineMult#1^#(::(@x, @xs), @l) ->
767.45/212.87	      c_29(mult^#(@l, @x), lineMult^#(@l, @xs)) }
767.45/212.87	  Weak DPs:
767.45/212.87	    { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
767.45/212.87	    , matrixMultList#1^#(::(@m, @ms), @acc) ->
767.45/212.87	      c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
767.45/212.87	          matrixMult^#(@acc, @m))
767.45/212.87	    , attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
767.45/212.87	    , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
767.45/212.87	    , split^#(@m) -> c_5(split#1^#(@m))
767.45/212.87	    , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
767.45/212.87	    , transpose'^#(@m) ->
767.45/212.87	      c_11(transAcc^#(@m, makeBase(@m)), makeBase^#(@m))
767.45/212.87	    , transAcc^#(@m, @base) -> c_12(transAcc#1^#(@m, @base))
767.45/212.87	    , makeBase^#(@m) -> c_13(makeBase#1^#(@m))
767.45/212.87	    , split#2^#(::(@x, @xs), @ls) -> c_14(split^#(@ls))
767.45/212.87	    , transpose^#(@m) -> c_15(transpose#1^#(@m, @m))
767.45/212.87	    , transpose#1^#(::(@xs, @xss), @m) ->
767.45/212.87	      c_16(transpose#2^#(split(@m)), split^#(@m))
767.45/212.87	    , transAcc#1^#(::(@l, @m'), @base) ->
767.45/212.87	      c_19(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
767.45/212.87	    , mkBase#1^#(::(@l, @m')) -> c_21(mkBase^#(@m'))
767.45/212.87	    , mkBase^#(@m) -> c_22(mkBase#1^#(@m))
767.45/212.87	    , transpose#3^#(::(@y, @ys), @l) -> c_23(transpose^#(::(@y, @ys)))
767.45/212.87	    , attach#2^#(::(@l, @ls), @x, @xs) -> c_24(attach^#(@xs, @ls))
767.45/212.87	    , transpose#2^#(tuple#2(@l, @m')) -> c_25(transpose#3^#(@m', @l))
767.45/212.87	    , matrixMultOld^#(@m1, @m2) ->
767.45/212.87	      c_27(matrixMult'^#(@m1, transpose(@m2)), transpose^#(@m2))
767.45/212.87	    , makeBase#1^#(::(@l, @m')) -> c_28(mkBase^#(@l)) }
767.45/212.87	  Weak Trs:
767.45/212.87	    { attach(@line, @m) -> attach#1(@line, @m)
767.45/212.87	    , split(@m) -> split#1(@m)
767.45/212.87	    , #add(#neg(#s(#0())), @y) -> #pred(@y)
767.45/212.87	    , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
767.45/212.87	    , #add(#pos(#s(#0())), @y) -> #succ(@y)
767.45/212.87	    , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
767.45/212.87	    , #add(#0(), @y) -> @y
767.45/212.87	    , mult#2(nil(), @x, @xs) -> #abs(#0())
767.45/212.87	    , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
767.45/212.87	    , split#1(nil()) -> tuple#2(nil(), nil())
767.45/212.87	    , split#1(::(@l, @ls)) -> split#2(@l, @ls)
767.45/212.87	    , transpose(@m) -> transpose#1(@m, @m)
767.45/212.87	    , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
767.45/212.87	    , transAcc(@m, @base) -> transAcc#1(@m, @base)
767.45/212.87	    , mult(@l1, @l2) -> mult#1(@l1, @l2)
767.45/212.87	    , +(@x, @y) -> #add(@x, @y)
767.45/212.87	    , transAcc#1(nil(), @base) -> @base
767.45/212.87	    , transAcc#1(::(@l, @m'), @base) ->
767.45/212.87	      attach(@l, transAcc(@m', @base))
767.45/212.87	    , *(@x, @y) -> #mult(@x, @y)
767.45/212.87	    , mkBase#1(nil()) -> nil()
767.45/212.87	    , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.45/212.87	    , transpose#3(nil(), @l) -> nil()
767.45/212.87	    , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
767.45/212.87	    , attach#1(nil(), @m) -> nil()
767.45/212.87	    , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.45/212.87	    , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
767.45/212.87	    , matrixMult'#1(nil(), @m2) -> nil()
767.45/212.87	    , matrixMult'#1(::(@l, @ls), @m2) ->
767.45/212.87	      ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
767.45/212.87	    , #natmult(#0(), @y) -> #0()
767.45/212.87	    , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
767.45/212.87	    , split#2(nil(), @ls) -> tuple#2(nil(), nil())
767.45/212.87	    , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
767.45/212.87	    , mkBase(@m) -> mkBase#1(@m)
767.45/212.87	    , makeBase(@m) -> makeBase#1(@m)
767.45/212.87	    , mult#1(nil(), @l2) -> #abs(#0())
767.45/212.87	    , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
767.45/212.87	    , lineMult#1(nil(), @l) -> nil()
767.45/212.87	    , lineMult#1(::(@x, @xs), @l) ->
767.45/212.87	      ::(mult(@l, @x), lineMult(@l, @xs))
767.45/212.87	    , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
767.45/212.87	    , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
767.45/212.87	    , #mult(#neg(@x), #0()) -> #0()
767.45/212.87	    , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
767.45/212.87	    , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
767.45/212.87	    , #mult(#pos(@x), #0()) -> #0()
767.45/212.87	    , #mult(#0(), #neg(@y)) -> #0()
767.45/212.87	    , #mult(#0(), #pos(@y)) -> #0()
767.45/212.87	    , #mult(#0(), #0()) -> #0()
767.45/212.87	    , attach#2(nil(), @x, @xs) -> nil()
767.45/212.87	    , attach#2(::(@l, @ls), @x, @xs) ->
767.45/212.87	      ::(::(@x, @l), attach(@xs, @ls))
767.45/212.87	    , #succ(#neg(#s(#0()))) -> #0()
767.45/212.87	    , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
767.45/212.87	    , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
767.45/212.87	    , #succ(#0()) -> #pos(#s(#0()))
767.45/212.87	    , makeBase#1(nil()) -> nil()
767.45/212.87	    , makeBase#1(::(@l, @m')) -> mkBase(@l)
767.45/212.87	    , matrixMult(@m1, @m2) ->
767.45/212.87	      matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
767.45/212.87	    , #abs(#neg(@x)) -> #pos(@x)
767.45/212.87	    , #abs(#pos(@x)) -> #pos(@x)
767.45/212.87	    , #abs(#0()) -> #0()
767.45/212.87	    , #abs(#s(@x)) -> #pos(#s(@x))
767.45/212.87	    , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
767.45/212.87	    , transpose#1(nil(), @m) -> nil()
767.45/212.87	    , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
767.45/212.87	    , split#3(tuple#2(@ys, @m'), @x, @xs) ->
767.45/212.87	      tuple#2(::(@x, @ys), ::(@xs, @m'))
767.45/212.87	    , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
767.45/212.87	    , #pred(#pos(#s(#0()))) -> #0()
767.45/212.87	    , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
767.45/212.87	    , #pred(#0()) -> #neg(#s(#0())) }
767.45/212.87	  StartTerms: basic terms
767.45/212.87	  Strategy: innermost
767.45/212.87	
767.45/212.87	Problem (S):
767.45/212.87	------------
767.45/212.87	  Strict DPs:
767.45/212.87	    { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
767.45/212.87	    , matrixMultList#1^#(::(@m, @ms), @acc) ->
767.45/212.87	      c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
767.45/212.87	          matrixMult^#(@acc, @m))
767.45/212.87	    , attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
767.45/212.87	    , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
767.45/212.87	    , split^#(@m) -> c_5(split#1^#(@m))
767.45/212.87	    , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
767.45/212.87	    , transpose'^#(@m) ->
767.45/212.87	      c_11(transAcc^#(@m, makeBase(@m)), makeBase^#(@m))
767.45/212.87	    , transAcc^#(@m, @base) -> c_12(transAcc#1^#(@m, @base))
767.45/212.87	    , makeBase^#(@m) -> c_13(makeBase#1^#(@m))
767.45/212.87	    , split#2^#(::(@x, @xs), @ls) -> c_14(split^#(@ls))
767.45/212.87	    , transpose^#(@m) -> c_15(transpose#1^#(@m, @m))
767.45/212.87	    , transpose#1^#(::(@xs, @xss), @m) ->
767.45/212.87	      c_16(transpose#2^#(split(@m)), split^#(@m))
767.45/212.87	    , transAcc#1^#(::(@l, @m'), @base) ->
767.45/212.87	      c_19(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
767.45/212.87	    , mkBase#1^#(::(@l, @m')) -> c_21(mkBase^#(@m'))
767.45/212.87	    , mkBase^#(@m) -> c_22(mkBase#1^#(@m))
767.45/212.87	    , transpose#3^#(::(@y, @ys), @l) -> c_23(transpose^#(::(@y, @ys)))
767.45/212.87	    , attach#2^#(::(@l, @ls), @x, @xs) -> c_24(attach^#(@xs, @ls))
767.45/212.87	    , transpose#2^#(tuple#2(@l, @m')) -> c_25(transpose#3^#(@m', @l))
767.45/212.87	    , matrixMultOld^#(@m1, @m2) ->
767.45/212.87	      c_27(matrixMult'^#(@m1, transpose(@m2)), transpose^#(@m2))
767.45/212.87	    , makeBase#1^#(::(@l, @m')) -> c_28(mkBase^#(@l)) }
767.45/212.87	  Weak DPs:
767.45/212.87	    { matrixMult3^#(@m1, @m2, @m3) ->
767.45/212.87	      c_7(matrixMult^#(matrixMult(@m1, @m2), @m3),
767.45/212.87	          matrixMult^#(@m1, @m2))
767.45/212.87	    , matrixMult^#(@m1, @m2) ->
767.45/212.87	      c_8(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))),
767.45/212.87	          transAcc^#(@m2, makeBase(@m2)),
767.45/212.87	          makeBase^#(@m2))
767.45/212.87	    , mult#2^#(::(@y, @ys), @x, @xs) -> c_9(mult^#(@xs, @ys))
767.45/212.87	    , mult^#(@l1, @l2) -> c_10(mult#1^#(@l1, @l2))
767.45/212.87	    , matrixMult'^#(@m1, @m2) -> c_17(matrixMult'#1^#(@m1, @m2))
767.45/212.87	    , matrixMult'#1^#(::(@l, @ls), @m2) ->
767.45/212.87	      c_18(lineMult^#(@l, @m2), matrixMult'^#(@ls, @m2))
767.45/212.87	    , mult#1^#(::(@x, @xs), @l2) -> c_20(mult#2^#(@l2, @x, @xs))
767.45/212.87	    , lineMult^#(@l, @m2) -> c_26(lineMult#1^#(@m2, @l))
767.45/212.87	    , lineMult#1^#(::(@x, @xs), @l) ->
767.45/212.87	      c_29(mult^#(@l, @x), lineMult^#(@l, @xs)) }
767.45/212.87	  Weak Trs:
767.45/212.87	    { attach(@line, @m) -> attach#1(@line, @m)
767.45/212.87	    , split(@m) -> split#1(@m)
767.45/212.87	    , #add(#neg(#s(#0())), @y) -> #pred(@y)
767.45/212.87	    , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
767.45/212.87	    , #add(#pos(#s(#0())), @y) -> #succ(@y)
767.45/212.87	    , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
767.45/212.87	    , #add(#0(), @y) -> @y
767.45/212.87	    , mult#2(nil(), @x, @xs) -> #abs(#0())
767.45/212.87	    , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
767.45/212.87	    , split#1(nil()) -> tuple#2(nil(), nil())
767.45/212.87	    , split#1(::(@l, @ls)) -> split#2(@l, @ls)
767.45/212.87	    , transpose(@m) -> transpose#1(@m, @m)
767.45/212.87	    , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
767.45/212.87	    , transAcc(@m, @base) -> transAcc#1(@m, @base)
767.45/212.87	    , mult(@l1, @l2) -> mult#1(@l1, @l2)
767.45/212.87	    , +(@x, @y) -> #add(@x, @y)
767.45/212.87	    , transAcc#1(nil(), @base) -> @base
767.45/212.87	    , transAcc#1(::(@l, @m'), @base) ->
767.45/212.87	      attach(@l, transAcc(@m', @base))
767.45/212.87	    , *(@x, @y) -> #mult(@x, @y)
767.45/212.87	    , mkBase#1(nil()) -> nil()
767.45/212.87	    , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.45/212.87	    , transpose#3(nil(), @l) -> nil()
767.45/212.87	    , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
767.45/212.87	    , attach#1(nil(), @m) -> nil()
767.45/212.87	    , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.45/212.87	    , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
767.45/212.87	    , matrixMult'#1(nil(), @m2) -> nil()
767.45/212.87	    , matrixMult'#1(::(@l, @ls), @m2) ->
767.45/212.87	      ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
767.45/212.87	    , #natmult(#0(), @y) -> #0()
767.45/212.87	    , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
767.45/212.87	    , split#2(nil(), @ls) -> tuple#2(nil(), nil())
767.45/212.87	    , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
767.45/212.87	    , mkBase(@m) -> mkBase#1(@m)
767.45/212.87	    , makeBase(@m) -> makeBase#1(@m)
767.45/212.87	    , mult#1(nil(), @l2) -> #abs(#0())
767.45/212.87	    , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
767.45/212.87	    , lineMult#1(nil(), @l) -> nil()
767.45/212.87	    , lineMult#1(::(@x, @xs), @l) ->
767.45/212.87	      ::(mult(@l, @x), lineMult(@l, @xs))
767.45/212.87	    , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
767.45/212.87	    , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
767.45/212.87	    , #mult(#neg(@x), #0()) -> #0()
767.45/212.87	    , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
767.45/212.87	    , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
767.45/212.87	    , #mult(#pos(@x), #0()) -> #0()
767.45/212.87	    , #mult(#0(), #neg(@y)) -> #0()
767.45/212.88	    , #mult(#0(), #pos(@y)) -> #0()
767.45/212.88	    , #mult(#0(), #0()) -> #0()
767.45/212.88	    , attach#2(nil(), @x, @xs) -> nil()
767.45/212.88	    , attach#2(::(@l, @ls), @x, @xs) ->
767.45/212.88	      ::(::(@x, @l), attach(@xs, @ls))
767.45/212.88	    , #succ(#neg(#s(#0()))) -> #0()
767.45/212.88	    , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
767.45/212.88	    , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
767.45/212.88	    , #succ(#0()) -> #pos(#s(#0()))
767.45/212.88	    , makeBase#1(nil()) -> nil()
767.45/212.88	    , makeBase#1(::(@l, @m')) -> mkBase(@l)
767.45/212.88	    , matrixMult(@m1, @m2) ->
767.45/212.88	      matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
767.45/212.88	    , #abs(#neg(@x)) -> #pos(@x)
767.45/212.88	    , #abs(#pos(@x)) -> #pos(@x)
767.45/212.88	    , #abs(#0()) -> #0()
767.45/212.88	    , #abs(#s(@x)) -> #pos(#s(@x))
767.45/212.88	    , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
767.45/212.88	    , transpose#1(nil(), @m) -> nil()
767.45/212.88	    , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
767.45/212.88	    , split#3(tuple#2(@ys, @m'), @x, @xs) ->
767.45/212.88	      tuple#2(::(@x, @ys), ::(@xs, @m'))
767.45/212.88	    , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
767.45/212.88	    , #pred(#pos(#s(#0()))) -> #0()
767.45/212.88	    , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
767.45/212.88	    , #pred(#0()) -> #neg(#s(#0())) }
767.45/212.88	  StartTerms: basic terms
767.45/212.88	  Strategy: innermost
767.45/212.88	
767.45/212.88	Overall, the transformation results in the following sub-problem(s):
767.45/212.88	
767.45/212.88	Generated new problems:
767.45/212.88	-----------------------
767.45/212.88	R) Strict DPs:
767.45/212.88	     { matrixMult3^#(@m1, @m2, @m3) ->
767.45/212.88	       c_7(matrixMult^#(matrixMult(@m1, @m2), @m3),
767.45/212.88	           matrixMult^#(@m1, @m2))
767.45/212.88	     , matrixMult^#(@m1, @m2) ->
767.45/212.88	       c_8(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))),
767.45/212.88	           transAcc^#(@m2, makeBase(@m2)),
767.45/212.88	           makeBase^#(@m2))
767.45/212.88	     , mult#2^#(::(@y, @ys), @x, @xs) -> c_9(mult^#(@xs, @ys))
767.45/212.88	     , mult^#(@l1, @l2) -> c_10(mult#1^#(@l1, @l2))
767.45/212.88	     , matrixMult'^#(@m1, @m2) -> c_17(matrixMult'#1^#(@m1, @m2))
767.45/212.88	     , matrixMult'#1^#(::(@l, @ls), @m2) ->
767.45/212.88	       c_18(lineMult^#(@l, @m2), matrixMult'^#(@ls, @m2))
767.45/212.88	     , mult#1^#(::(@x, @xs), @l2) -> c_20(mult#2^#(@l2, @x, @xs))
767.45/212.88	     , lineMult^#(@l, @m2) -> c_26(lineMult#1^#(@m2, @l))
767.45/212.88	     , lineMult#1^#(::(@x, @xs), @l) ->
767.45/212.88	       c_29(mult^#(@l, @x), lineMult^#(@l, @xs)) }
767.45/212.88	   Weak DPs:
767.45/212.88	     { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
767.45/212.88	     , matrixMultList#1^#(::(@m, @ms), @acc) ->
767.45/212.88	       c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
767.45/212.88	           matrixMult^#(@acc, @m))
767.45/212.88	     , attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
767.45/212.88	     , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
767.45/212.88	     , split^#(@m) -> c_5(split#1^#(@m))
767.45/212.88	     , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
767.45/212.88	     , transpose'^#(@m) ->
767.45/212.88	       c_11(transAcc^#(@m, makeBase(@m)), makeBase^#(@m))
767.45/212.88	     , transAcc^#(@m, @base) -> c_12(transAcc#1^#(@m, @base))
767.45/212.88	     , makeBase^#(@m) -> c_13(makeBase#1^#(@m))
767.45/212.88	     , split#2^#(::(@x, @xs), @ls) -> c_14(split^#(@ls))
767.45/212.88	     , transpose^#(@m) -> c_15(transpose#1^#(@m, @m))
767.45/212.88	     , transpose#1^#(::(@xs, @xss), @m) ->
767.45/212.88	       c_16(transpose#2^#(split(@m)), split^#(@m))
767.45/212.88	     , transAcc#1^#(::(@l, @m'), @base) ->
767.45/212.88	       c_19(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
767.45/212.88	     , mkBase#1^#(::(@l, @m')) -> c_21(mkBase^#(@m'))
767.45/212.88	     , mkBase^#(@m) -> c_22(mkBase#1^#(@m))
767.45/212.88	     , transpose#3^#(::(@y, @ys), @l) -> c_23(transpose^#(::(@y, @ys)))
767.45/212.88	     , attach#2^#(::(@l, @ls), @x, @xs) -> c_24(attach^#(@xs, @ls))
767.45/212.88	     , transpose#2^#(tuple#2(@l, @m')) -> c_25(transpose#3^#(@m', @l))
767.45/212.88	     , matrixMultOld^#(@m1, @m2) ->
767.45/212.88	       c_27(matrixMult'^#(@m1, transpose(@m2)), transpose^#(@m2))
767.45/212.88	     , makeBase#1^#(::(@l, @m')) -> c_28(mkBase^#(@l)) }
767.45/212.88	   Weak Trs:
767.45/212.88	     { attach(@line, @m) -> attach#1(@line, @m)
767.45/212.88	     , split(@m) -> split#1(@m)
767.45/212.88	     , #add(#neg(#s(#0())), @y) -> #pred(@y)
767.45/212.88	     , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
767.45/212.88	     , #add(#pos(#s(#0())), @y) -> #succ(@y)
767.45/212.88	     , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
767.45/212.88	     , #add(#0(), @y) -> @y
767.45/212.88	     , mult#2(nil(), @x, @xs) -> #abs(#0())
767.45/212.88	     , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
767.45/212.88	     , split#1(nil()) -> tuple#2(nil(), nil())
767.45/212.88	     , split#1(::(@l, @ls)) -> split#2(@l, @ls)
767.45/212.88	     , transpose(@m) -> transpose#1(@m, @m)
767.45/212.88	     , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
767.45/212.88	     , transAcc(@m, @base) -> transAcc#1(@m, @base)
767.45/212.88	     , mult(@l1, @l2) -> mult#1(@l1, @l2)
767.45/212.88	     , +(@x, @y) -> #add(@x, @y)
767.45/212.88	     , transAcc#1(nil(), @base) -> @base
767.45/212.88	     , transAcc#1(::(@l, @m'), @base) ->
767.45/212.88	       attach(@l, transAcc(@m', @base))
767.45/212.88	     , *(@x, @y) -> #mult(@x, @y)
767.45/212.88	     , mkBase#1(nil()) -> nil()
767.45/212.88	     , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.45/212.88	     , transpose#3(nil(), @l) -> nil()
767.45/212.88	     , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
767.45/212.88	     , attach#1(nil(), @m) -> nil()
767.45/212.88	     , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.45/212.88	     , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
767.45/212.88	     , matrixMult'#1(nil(), @m2) -> nil()
767.45/212.88	     , matrixMult'#1(::(@l, @ls), @m2) ->
767.45/212.88	       ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
767.45/212.88	     , #natmult(#0(), @y) -> #0()
767.45/212.88	     , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
767.45/212.88	     , split#2(nil(), @ls) -> tuple#2(nil(), nil())
767.45/212.88	     , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
767.45/212.88	     , mkBase(@m) -> mkBase#1(@m)
767.45/212.88	     , makeBase(@m) -> makeBase#1(@m)
767.45/212.88	     , mult#1(nil(), @l2) -> #abs(#0())
767.45/212.88	     , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
767.45/212.88	     , lineMult#1(nil(), @l) -> nil()
767.45/212.88	     , lineMult#1(::(@x, @xs), @l) ->
767.45/212.88	       ::(mult(@l, @x), lineMult(@l, @xs))
767.45/212.88	     , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
767.45/212.88	     , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
767.45/212.88	     , #mult(#neg(@x), #0()) -> #0()
767.45/212.88	     , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
767.45/212.88	     , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
767.45/212.88	     , #mult(#pos(@x), #0()) -> #0()
767.45/212.88	     , #mult(#0(), #neg(@y)) -> #0()
767.45/212.88	     , #mult(#0(), #pos(@y)) -> #0()
767.45/212.88	     , #mult(#0(), #0()) -> #0()
767.45/212.88	     , attach#2(nil(), @x, @xs) -> nil()
767.45/212.88	     , attach#2(::(@l, @ls), @x, @xs) ->
767.45/212.88	       ::(::(@x, @l), attach(@xs, @ls))
767.45/212.88	     , #succ(#neg(#s(#0()))) -> #0()
767.45/212.88	     , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
767.45/212.88	     , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
767.45/212.88	     , #succ(#0()) -> #pos(#s(#0()))
767.45/212.88	     , makeBase#1(nil()) -> nil()
767.45/212.88	     , makeBase#1(::(@l, @m')) -> mkBase(@l)
767.45/212.88	     , matrixMult(@m1, @m2) ->
767.45/212.88	       matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
767.45/212.88	     , #abs(#neg(@x)) -> #pos(@x)
767.45/212.88	     , #abs(#pos(@x)) -> #pos(@x)
767.45/212.88	     , #abs(#0()) -> #0()
767.45/212.88	     , #abs(#s(@x)) -> #pos(#s(@x))
767.45/212.88	     , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
767.45/212.88	     , transpose#1(nil(), @m) -> nil()
767.45/212.88	     , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
767.45/212.88	     , split#3(tuple#2(@ys, @m'), @x, @xs) ->
767.45/212.88	       tuple#2(::(@x, @ys), ::(@xs, @m'))
767.45/212.88	     , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
767.45/212.88	     , #pred(#pos(#s(#0()))) -> #0()
767.45/212.88	     , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
767.45/212.88	     , #pred(#0()) -> #neg(#s(#0())) }
767.45/212.88	   StartTerms: basic terms
767.45/212.88	   Strategy: innermost
767.45/212.88	   
767.45/212.88	   This problem was proven YES(O(1),O(n^3)).
767.45/212.88	
767.45/212.88	S) Strict DPs:
767.45/212.88	     { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
767.45/212.88	     , matrixMultList#1^#(::(@m, @ms), @acc) ->
767.45/212.88	       c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
767.45/212.88	           matrixMult^#(@acc, @m))
767.45/212.88	     , attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
767.45/212.88	     , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
767.45/212.88	     , split^#(@m) -> c_5(split#1^#(@m))
767.45/212.88	     , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
767.45/212.88	     , transpose'^#(@m) ->
767.45/212.88	       c_11(transAcc^#(@m, makeBase(@m)), makeBase^#(@m))
767.45/212.88	     , transAcc^#(@m, @base) -> c_12(transAcc#1^#(@m, @base))
767.45/212.88	     , makeBase^#(@m) -> c_13(makeBase#1^#(@m))
767.45/212.88	     , split#2^#(::(@x, @xs), @ls) -> c_14(split^#(@ls))
767.45/212.88	     , transpose^#(@m) -> c_15(transpose#1^#(@m, @m))
767.45/212.88	     , transpose#1^#(::(@xs, @xss), @m) ->
767.45/212.88	       c_16(transpose#2^#(split(@m)), split^#(@m))
767.45/212.88	     , transAcc#1^#(::(@l, @m'), @base) ->
767.45/212.88	       c_19(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
767.45/212.88	     , mkBase#1^#(::(@l, @m')) -> c_21(mkBase^#(@m'))
767.45/212.88	     , mkBase^#(@m) -> c_22(mkBase#1^#(@m))
767.45/212.88	     , transpose#3^#(::(@y, @ys), @l) -> c_23(transpose^#(::(@y, @ys)))
767.45/212.88	     , attach#2^#(::(@l, @ls), @x, @xs) -> c_24(attach^#(@xs, @ls))
767.45/212.88	     , transpose#2^#(tuple#2(@l, @m')) -> c_25(transpose#3^#(@m', @l))
767.45/212.88	     , matrixMultOld^#(@m1, @m2) ->
767.45/212.88	       c_27(matrixMult'^#(@m1, transpose(@m2)), transpose^#(@m2))
767.45/212.88	     , makeBase#1^#(::(@l, @m')) -> c_28(mkBase^#(@l)) }
767.45/212.88	   Weak DPs:
767.45/212.88	     { matrixMult3^#(@m1, @m2, @m3) ->
767.45/212.88	       c_7(matrixMult^#(matrixMult(@m1, @m2), @m3),
767.45/212.88	           matrixMult^#(@m1, @m2))
767.45/212.88	     , matrixMult^#(@m1, @m2) ->
767.45/212.88	       c_8(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))),
767.45/212.88	           transAcc^#(@m2, makeBase(@m2)),
767.45/212.88	           makeBase^#(@m2))
767.45/212.88	     , mult#2^#(::(@y, @ys), @x, @xs) -> c_9(mult^#(@xs, @ys))
767.45/212.88	     , mult^#(@l1, @l2) -> c_10(mult#1^#(@l1, @l2))
767.45/212.88	     , matrixMult'^#(@m1, @m2) -> c_17(matrixMult'#1^#(@m1, @m2))
767.45/212.88	     , matrixMult'#1^#(::(@l, @ls), @m2) ->
767.45/212.88	       c_18(lineMult^#(@l, @m2), matrixMult'^#(@ls, @m2))
767.45/212.88	     , mult#1^#(::(@x, @xs), @l2) -> c_20(mult#2^#(@l2, @x, @xs))
767.45/212.88	     , lineMult^#(@l, @m2) -> c_26(lineMult#1^#(@m2, @l))
767.45/212.88	     , lineMult#1^#(::(@x, @xs), @l) ->
767.45/212.88	       c_29(mult^#(@l, @x), lineMult^#(@l, @xs)) }
767.45/212.88	   Weak Trs:
767.45/212.88	     { attach(@line, @m) -> attach#1(@line, @m)
767.45/212.88	     , split(@m) -> split#1(@m)
767.45/212.88	     , #add(#neg(#s(#0())), @y) -> #pred(@y)
767.45/212.88	     , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
767.45/212.88	     , #add(#pos(#s(#0())), @y) -> #succ(@y)
767.45/212.88	     , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
767.45/212.88	     , #add(#0(), @y) -> @y
767.45/212.88	     , mult#2(nil(), @x, @xs) -> #abs(#0())
767.45/212.88	     , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
767.45/212.88	     , split#1(nil()) -> tuple#2(nil(), nil())
767.45/212.88	     , split#1(::(@l, @ls)) -> split#2(@l, @ls)
767.45/212.88	     , transpose(@m) -> transpose#1(@m, @m)
767.45/212.88	     , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
767.45/212.88	     , transAcc(@m, @base) -> transAcc#1(@m, @base)
767.45/212.88	     , mult(@l1, @l2) -> mult#1(@l1, @l2)
767.45/212.88	     , +(@x, @y) -> #add(@x, @y)
767.45/212.88	     , transAcc#1(nil(), @base) -> @base
767.45/212.88	     , transAcc#1(::(@l, @m'), @base) ->
767.45/212.88	       attach(@l, transAcc(@m', @base))
767.45/212.88	     , *(@x, @y) -> #mult(@x, @y)
767.45/212.88	     , mkBase#1(nil()) -> nil()
767.45/212.88	     , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.45/212.88	     , transpose#3(nil(), @l) -> nil()
767.45/212.88	     , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
767.45/212.88	     , attach#1(nil(), @m) -> nil()
767.45/212.88	     , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.45/212.88	     , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
767.45/212.88	     , matrixMult'#1(nil(), @m2) -> nil()
767.45/212.88	     , matrixMult'#1(::(@l, @ls), @m2) ->
767.45/212.88	       ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
767.45/212.88	     , #natmult(#0(), @y) -> #0()
767.45/212.88	     , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
767.45/212.88	     , split#2(nil(), @ls) -> tuple#2(nil(), nil())
767.45/212.88	     , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
767.45/212.88	     , mkBase(@m) -> mkBase#1(@m)
767.45/212.88	     , makeBase(@m) -> makeBase#1(@m)
767.45/212.88	     , mult#1(nil(), @l2) -> #abs(#0())
767.45/212.88	     , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
767.45/212.88	     , lineMult#1(nil(), @l) -> nil()
767.45/212.88	     , lineMult#1(::(@x, @xs), @l) ->
767.45/212.88	       ::(mult(@l, @x), lineMult(@l, @xs))
767.45/212.88	     , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
767.45/212.88	     , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
767.45/212.88	     , #mult(#neg(@x), #0()) -> #0()
767.45/212.88	     , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
767.45/212.88	     , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
767.45/212.88	     , #mult(#pos(@x), #0()) -> #0()
767.45/212.88	     , #mult(#0(), #neg(@y)) -> #0()
767.45/212.88	     , #mult(#0(), #pos(@y)) -> #0()
767.45/212.88	     , #mult(#0(), #0()) -> #0()
767.45/212.88	     , attach#2(nil(), @x, @xs) -> nil()
767.45/212.88	     , attach#2(::(@l, @ls), @x, @xs) ->
767.45/212.88	       ::(::(@x, @l), attach(@xs, @ls))
767.45/212.88	     , #succ(#neg(#s(#0()))) -> #0()
767.45/212.88	     , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
767.45/212.88	     , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
767.45/212.88	     , #succ(#0()) -> #pos(#s(#0()))
767.45/212.88	     , makeBase#1(nil()) -> nil()
767.45/212.88	     , makeBase#1(::(@l, @m')) -> mkBase(@l)
767.45/212.88	     , matrixMult(@m1, @m2) ->
767.45/212.88	       matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
767.45/212.88	     , #abs(#neg(@x)) -> #pos(@x)
767.45/212.88	     , #abs(#pos(@x)) -> #pos(@x)
767.45/212.88	     , #abs(#0()) -> #0()
767.45/212.88	     , #abs(#s(@x)) -> #pos(#s(@x))
767.45/212.88	     , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
767.45/212.88	     , transpose#1(nil(), @m) -> nil()
767.45/212.88	     , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
767.45/212.88	     , split#3(tuple#2(@ys, @m'), @x, @xs) ->
767.45/212.88	       tuple#2(::(@x, @ys), ::(@xs, @m'))
767.45/212.88	     , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
767.45/212.88	     , #pred(#pos(#s(#0()))) -> #0()
767.45/212.88	     , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
767.45/212.88	     , #pred(#0()) -> #neg(#s(#0())) }
767.45/212.88	   StartTerms: basic terms
767.45/212.88	   Strategy: innermost
767.45/212.88	   
767.45/212.88	   This problem was proven YES(O(1),O(n^1)).
767.45/212.88	
767.45/212.88	
767.45/212.88	Proofs for generated problems:
767.45/212.88	------------------------------
767.45/212.88	R) We are left with following problem, upon which TcT provides the
767.45/212.88	   certificate YES(O(1),O(n^3)).
767.45/212.88	   
767.45/212.88	   Strict DPs:
767.45/212.88	     { matrixMult3^#(@m1, @m2, @m3) ->
767.45/212.88	       c_7(matrixMult^#(matrixMult(@m1, @m2), @m3),
767.45/212.88	           matrixMult^#(@m1, @m2))
767.45/212.88	     , matrixMult^#(@m1, @m2) ->
767.45/212.88	       c_8(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))),
767.45/212.88	           transAcc^#(@m2, makeBase(@m2)),
767.45/212.88	           makeBase^#(@m2))
767.45/212.88	     , mult#2^#(::(@y, @ys), @x, @xs) -> c_9(mult^#(@xs, @ys))
767.45/212.88	     , mult^#(@l1, @l2) -> c_10(mult#1^#(@l1, @l2))
767.45/212.88	     , matrixMult'^#(@m1, @m2) -> c_17(matrixMult'#1^#(@m1, @m2))
767.45/212.88	     , matrixMult'#1^#(::(@l, @ls), @m2) ->
767.45/212.88	       c_18(lineMult^#(@l, @m2), matrixMult'^#(@ls, @m2))
767.45/212.88	     , mult#1^#(::(@x, @xs), @l2) -> c_20(mult#2^#(@l2, @x, @xs))
767.45/212.88	     , lineMult^#(@l, @m2) -> c_26(lineMult#1^#(@m2, @l))
767.45/212.88	     , lineMult#1^#(::(@x, @xs), @l) ->
767.45/212.88	       c_29(mult^#(@l, @x), lineMult^#(@l, @xs)) }
767.45/212.88	   Weak DPs:
767.45/212.88	     { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
767.45/212.88	     , matrixMultList#1^#(::(@m, @ms), @acc) ->
767.45/212.88	       c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
767.45/212.88	           matrixMult^#(@acc, @m))
767.45/212.88	     , attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
767.45/212.88	     , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
767.45/212.88	     , split^#(@m) -> c_5(split#1^#(@m))
767.45/212.88	     , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
767.45/212.88	     , transpose'^#(@m) ->
767.45/212.88	       c_11(transAcc^#(@m, makeBase(@m)), makeBase^#(@m))
767.45/212.88	     , transAcc^#(@m, @base) -> c_12(transAcc#1^#(@m, @base))
767.45/212.88	     , makeBase^#(@m) -> c_13(makeBase#1^#(@m))
767.45/212.88	     , split#2^#(::(@x, @xs), @ls) -> c_14(split^#(@ls))
767.45/212.88	     , transpose^#(@m) -> c_15(transpose#1^#(@m, @m))
767.45/212.88	     , transpose#1^#(::(@xs, @xss), @m) ->
767.45/212.88	       c_16(transpose#2^#(split(@m)), split^#(@m))
767.45/212.88	     , transAcc#1^#(::(@l, @m'), @base) ->
767.45/212.88	       c_19(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
767.45/212.88	     , mkBase#1^#(::(@l, @m')) -> c_21(mkBase^#(@m'))
767.45/212.88	     , mkBase^#(@m) -> c_22(mkBase#1^#(@m))
767.45/212.88	     , transpose#3^#(::(@y, @ys), @l) -> c_23(transpose^#(::(@y, @ys)))
767.45/212.88	     , attach#2^#(::(@l, @ls), @x, @xs) -> c_24(attach^#(@xs, @ls))
767.45/212.88	     , transpose#2^#(tuple#2(@l, @m')) -> c_25(transpose#3^#(@m', @l))
767.45/212.88	     , matrixMultOld^#(@m1, @m2) ->
767.45/212.88	       c_27(matrixMult'^#(@m1, transpose(@m2)), transpose^#(@m2))
767.45/212.88	     , makeBase#1^#(::(@l, @m')) -> c_28(mkBase^#(@l)) }
767.45/212.88	   Weak Trs:
767.45/212.88	     { attach(@line, @m) -> attach#1(@line, @m)
767.45/212.88	     , split(@m) -> split#1(@m)
767.45/212.88	     , #add(#neg(#s(#0())), @y) -> #pred(@y)
767.45/212.88	     , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
767.45/212.88	     , #add(#pos(#s(#0())), @y) -> #succ(@y)
767.45/212.88	     , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
767.45/212.88	     , #add(#0(), @y) -> @y
767.45/212.88	     , mult#2(nil(), @x, @xs) -> #abs(#0())
767.45/212.88	     , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
767.45/212.88	     , split#1(nil()) -> tuple#2(nil(), nil())
767.45/212.88	     , split#1(::(@l, @ls)) -> split#2(@l, @ls)
767.45/212.88	     , transpose(@m) -> transpose#1(@m, @m)
767.45/212.88	     , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
767.45/212.88	     , transAcc(@m, @base) -> transAcc#1(@m, @base)
767.45/212.88	     , mult(@l1, @l2) -> mult#1(@l1, @l2)
767.45/212.88	     , +(@x, @y) -> #add(@x, @y)
767.45/212.88	     , transAcc#1(nil(), @base) -> @base
767.45/212.88	     , transAcc#1(::(@l, @m'), @base) ->
767.45/212.88	       attach(@l, transAcc(@m', @base))
767.45/212.88	     , *(@x, @y) -> #mult(@x, @y)
767.45/212.88	     , mkBase#1(nil()) -> nil()
767.45/212.88	     , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.45/212.88	     , transpose#3(nil(), @l) -> nil()
767.45/212.88	     , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
767.45/212.88	     , attach#1(nil(), @m) -> nil()
767.45/212.88	     , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.45/212.88	     , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
767.45/212.89	     , matrixMult'#1(nil(), @m2) -> nil()
767.45/212.89	     , matrixMult'#1(::(@l, @ls), @m2) ->
767.45/212.89	       ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
767.45/212.89	     , #natmult(#0(), @y) -> #0()
767.45/212.89	     , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
767.45/212.89	     , split#2(nil(), @ls) -> tuple#2(nil(), nil())
767.45/212.89	     , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
767.45/212.89	     , mkBase(@m) -> mkBase#1(@m)
767.45/212.89	     , makeBase(@m) -> makeBase#1(@m)
767.45/212.89	     , mult#1(nil(), @l2) -> #abs(#0())
767.45/212.89	     , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
767.45/212.89	     , lineMult#1(nil(), @l) -> nil()
767.45/212.89	     , lineMult#1(::(@x, @xs), @l) ->
767.45/212.89	       ::(mult(@l, @x), lineMult(@l, @xs))
767.45/212.89	     , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
767.45/212.89	     , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
767.45/212.89	     , #mult(#neg(@x), #0()) -> #0()
767.45/212.89	     , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
767.45/212.89	     , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
767.45/212.89	     , #mult(#pos(@x), #0()) -> #0()
767.45/212.89	     , #mult(#0(), #neg(@y)) -> #0()
767.45/212.89	     , #mult(#0(), #pos(@y)) -> #0()
767.45/212.89	     , #mult(#0(), #0()) -> #0()
767.45/212.89	     , attach#2(nil(), @x, @xs) -> nil()
767.45/212.89	     , attach#2(::(@l, @ls), @x, @xs) ->
767.45/212.89	       ::(::(@x, @l), attach(@xs, @ls))
767.45/212.89	     , #succ(#neg(#s(#0()))) -> #0()
767.45/212.89	     , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
767.45/212.89	     , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
767.45/212.89	     , #succ(#0()) -> #pos(#s(#0()))
767.45/212.89	     , makeBase#1(nil()) -> nil()
767.45/212.89	     , makeBase#1(::(@l, @m')) -> mkBase(@l)
767.45/212.89	     , matrixMult(@m1, @m2) ->
767.45/212.89	       matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
767.45/212.89	     , #abs(#neg(@x)) -> #pos(@x)
767.45/212.89	     , #abs(#pos(@x)) -> #pos(@x)
767.45/212.89	     , #abs(#0()) -> #0()
767.45/212.89	     , #abs(#s(@x)) -> #pos(#s(@x))
767.45/212.89	     , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
767.45/212.89	     , transpose#1(nil(), @m) -> nil()
767.45/212.89	     , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
767.45/212.89	     , split#3(tuple#2(@ys, @m'), @x, @xs) ->
767.45/212.89	       tuple#2(::(@x, @ys), ::(@xs, @m'))
767.45/212.89	     , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
767.45/212.89	     , #pred(#pos(#s(#0()))) -> #0()
767.45/212.89	     , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
767.45/212.89	     , #pred(#0()) -> #neg(#s(#0())) }
767.45/212.89	   Obligation:
767.45/212.89	     innermost runtime complexity
767.45/212.89	   Answer:
767.45/212.89	     YES(O(1),O(n^3))
767.45/212.89	   
767.45/212.89	   The following weak DPs constitute a sub-graph of the DG that is
767.45/212.89	   closed under successors. The DPs are removed.
767.45/212.89	   
767.45/212.89	   { attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
767.45/212.89	   , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
767.45/212.89	   , split^#(@m) -> c_5(split#1^#(@m))
767.45/212.89	   , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
767.45/212.89	   , transpose'^#(@m) ->
767.45/212.89	     c_11(transAcc^#(@m, makeBase(@m)), makeBase^#(@m))
767.45/212.89	   , transAcc^#(@m, @base) -> c_12(transAcc#1^#(@m, @base))
767.45/212.89	   , makeBase^#(@m) -> c_13(makeBase#1^#(@m))
767.45/212.89	   , split#2^#(::(@x, @xs), @ls) -> c_14(split^#(@ls))
767.45/212.89	   , transpose^#(@m) -> c_15(transpose#1^#(@m, @m))
767.45/212.89	   , transpose#1^#(::(@xs, @xss), @m) ->
767.45/212.89	     c_16(transpose#2^#(split(@m)), split^#(@m))
767.45/212.89	   , transAcc#1^#(::(@l, @m'), @base) ->
767.45/212.89	     c_19(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
767.45/212.89	   , mkBase#1^#(::(@l, @m')) -> c_21(mkBase^#(@m'))
767.45/212.89	   , mkBase^#(@m) -> c_22(mkBase#1^#(@m))
767.45/212.89	   , transpose#3^#(::(@y, @ys), @l) -> c_23(transpose^#(::(@y, @ys)))
767.45/212.89	   , attach#2^#(::(@l, @ls), @x, @xs) -> c_24(attach^#(@xs, @ls))
767.45/212.89	   , transpose#2^#(tuple#2(@l, @m')) -> c_25(transpose#3^#(@m', @l))
767.45/212.89	   , makeBase#1^#(::(@l, @m')) -> c_28(mkBase^#(@l)) }
767.45/212.89	   
767.45/212.89	   We are left with following problem, upon which TcT provides the
767.45/212.89	   certificate YES(O(1),O(n^3)).
767.45/212.89	   
767.45/212.89	   Strict DPs:
767.45/212.89	     { matrixMult3^#(@m1, @m2, @m3) ->
767.45/212.89	       c_7(matrixMult^#(matrixMult(@m1, @m2), @m3),
767.45/212.89	           matrixMult^#(@m1, @m2))
767.45/212.89	     , matrixMult^#(@m1, @m2) ->
767.45/212.89	       c_8(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))),
767.45/212.89	           transAcc^#(@m2, makeBase(@m2)),
767.45/212.89	           makeBase^#(@m2))
767.45/212.89	     , mult#2^#(::(@y, @ys), @x, @xs) -> c_9(mult^#(@xs, @ys))
767.45/212.89	     , mult^#(@l1, @l2) -> c_10(mult#1^#(@l1, @l2))
767.45/212.89	     , matrixMult'^#(@m1, @m2) -> c_17(matrixMult'#1^#(@m1, @m2))
767.45/212.89	     , matrixMult'#1^#(::(@l, @ls), @m2) ->
767.45/212.89	       c_18(lineMult^#(@l, @m2), matrixMult'^#(@ls, @m2))
767.45/212.89	     , mult#1^#(::(@x, @xs), @l2) -> c_20(mult#2^#(@l2, @x, @xs))
767.45/212.89	     , lineMult^#(@l, @m2) -> c_26(lineMult#1^#(@m2, @l))
767.45/212.89	     , lineMult#1^#(::(@x, @xs), @l) ->
767.45/212.89	       c_29(mult^#(@l, @x), lineMult^#(@l, @xs)) }
767.45/212.89	   Weak DPs:
767.45/212.89	     { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
767.45/212.89	     , matrixMultList#1^#(::(@m, @ms), @acc) ->
767.45/212.89	       c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
767.45/212.89	           matrixMult^#(@acc, @m))
767.45/212.89	     , matrixMultOld^#(@m1, @m2) ->
767.45/212.89	       c_27(matrixMult'^#(@m1, transpose(@m2)), transpose^#(@m2)) }
767.45/212.89	   Weak Trs:
767.45/212.89	     { attach(@line, @m) -> attach#1(@line, @m)
767.45/212.89	     , split(@m) -> split#1(@m)
767.45/212.89	     , #add(#neg(#s(#0())), @y) -> #pred(@y)
767.45/212.89	     , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
767.45/212.89	     , #add(#pos(#s(#0())), @y) -> #succ(@y)
767.45/212.89	     , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
767.45/212.89	     , #add(#0(), @y) -> @y
767.45/212.89	     , mult#2(nil(), @x, @xs) -> #abs(#0())
767.45/212.89	     , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
767.45/212.89	     , split#1(nil()) -> tuple#2(nil(), nil())
767.45/212.89	     , split#1(::(@l, @ls)) -> split#2(@l, @ls)
767.45/212.89	     , transpose(@m) -> transpose#1(@m, @m)
767.45/212.89	     , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
767.45/212.89	     , transAcc(@m, @base) -> transAcc#1(@m, @base)
767.45/212.89	     , mult(@l1, @l2) -> mult#1(@l1, @l2)
767.45/212.89	     , +(@x, @y) -> #add(@x, @y)
767.45/212.89	     , transAcc#1(nil(), @base) -> @base
767.45/212.89	     , transAcc#1(::(@l, @m'), @base) ->
767.45/212.89	       attach(@l, transAcc(@m', @base))
767.45/212.89	     , *(@x, @y) -> #mult(@x, @y)
767.45/212.89	     , mkBase#1(nil()) -> nil()
767.45/212.89	     , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.45/212.89	     , transpose#3(nil(), @l) -> nil()
767.45/212.89	     , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
767.45/212.89	     , attach#1(nil(), @m) -> nil()
767.45/212.89	     , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.45/212.89	     , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
767.45/212.89	     , matrixMult'#1(nil(), @m2) -> nil()
767.45/212.89	     , matrixMult'#1(::(@l, @ls), @m2) ->
767.45/212.89	       ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
767.45/212.89	     , #natmult(#0(), @y) -> #0()
767.45/212.89	     , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
767.45/212.89	     , split#2(nil(), @ls) -> tuple#2(nil(), nil())
767.45/212.89	     , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
767.45/212.89	     , mkBase(@m) -> mkBase#1(@m)
767.45/212.89	     , makeBase(@m) -> makeBase#1(@m)
767.45/212.89	     , mult#1(nil(), @l2) -> #abs(#0())
767.45/212.89	     , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
767.45/212.89	     , lineMult#1(nil(), @l) -> nil()
767.45/212.89	     , lineMult#1(::(@x, @xs), @l) ->
767.45/212.89	       ::(mult(@l, @x), lineMult(@l, @xs))
767.45/212.89	     , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
767.45/212.89	     , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
767.45/212.89	     , #mult(#neg(@x), #0()) -> #0()
767.45/212.89	     , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
767.45/212.89	     , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
767.45/212.89	     , #mult(#pos(@x), #0()) -> #0()
767.45/212.89	     , #mult(#0(), #neg(@y)) -> #0()
767.45/212.89	     , #mult(#0(), #pos(@y)) -> #0()
767.45/212.89	     , #mult(#0(), #0()) -> #0()
767.45/212.89	     , attach#2(nil(), @x, @xs) -> nil()
767.45/212.89	     , attach#2(::(@l, @ls), @x, @xs) ->
767.45/212.89	       ::(::(@x, @l), attach(@xs, @ls))
767.45/212.89	     , #succ(#neg(#s(#0()))) -> #0()
767.45/212.89	     , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
767.45/212.89	     , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
767.45/212.89	     , #succ(#0()) -> #pos(#s(#0()))
767.45/212.89	     , makeBase#1(nil()) -> nil()
767.45/212.89	     , makeBase#1(::(@l, @m')) -> mkBase(@l)
767.45/212.89	     , matrixMult(@m1, @m2) ->
767.45/212.89	       matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
767.45/212.89	     , #abs(#neg(@x)) -> #pos(@x)
767.45/212.89	     , #abs(#pos(@x)) -> #pos(@x)
767.45/212.89	     , #abs(#0()) -> #0()
767.45/212.89	     , #abs(#s(@x)) -> #pos(#s(@x))
767.45/212.89	     , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
767.45/212.89	     , transpose#1(nil(), @m) -> nil()
767.45/212.89	     , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
767.45/212.89	     , split#3(tuple#2(@ys, @m'), @x, @xs) ->
767.45/212.89	       tuple#2(::(@x, @ys), ::(@xs, @m'))
767.45/212.89	     , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
767.45/212.89	     , #pred(#pos(#s(#0()))) -> #0()
767.45/212.89	     , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
767.45/212.89	     , #pred(#0()) -> #neg(#s(#0())) }
767.45/212.89	   Obligation:
767.45/212.89	     innermost runtime complexity
767.45/212.89	   Answer:
767.45/212.89	     YES(O(1),O(n^3))
767.45/212.89	   
767.45/212.89	   Due to missing edges in the dependency-graph, the right-hand sides
767.45/212.89	   of following rules could be simplified:
767.45/212.89	   
767.45/212.89	     { matrixMult^#(@m1, @m2) ->
767.45/212.89	       c_8(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))),
767.45/212.89	           transAcc^#(@m2, makeBase(@m2)),
767.45/212.89	           makeBase^#(@m2))
767.45/212.89	     , matrixMultOld^#(@m1, @m2) ->
767.45/212.89	       c_27(matrixMult'^#(@m1, transpose(@m2)), transpose^#(@m2)) }
767.45/212.89	   
767.45/212.89	   We are left with following problem, upon which TcT provides the
767.45/212.89	   certificate YES(O(1),O(n^3)).
767.45/212.89	   
767.45/212.89	   Strict DPs:
767.45/212.89	     { matrixMult3^#(@m1, @m2, @m3) ->
767.45/212.89	       c_1(matrixMult^#(matrixMult(@m1, @m2), @m3),
767.45/212.89	           matrixMult^#(@m1, @m2))
767.45/212.89	     , matrixMult^#(@m1, @m2) ->
767.45/212.89	       c_2(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))))
767.45/212.89	     , mult#2^#(::(@y, @ys), @x, @xs) -> c_3(mult^#(@xs, @ys))
767.45/212.89	     , mult^#(@l1, @l2) -> c_4(mult#1^#(@l1, @l2))
767.45/212.89	     , matrixMult'^#(@m1, @m2) -> c_5(matrixMult'#1^#(@m1, @m2))
767.45/212.89	     , matrixMult'#1^#(::(@l, @ls), @m2) ->
767.45/212.89	       c_6(lineMult^#(@l, @m2), matrixMult'^#(@ls, @m2))
767.45/212.89	     , mult#1^#(::(@x, @xs), @l2) -> c_7(mult#2^#(@l2, @x, @xs))
767.45/212.89	     , lineMult^#(@l, @m2) -> c_8(lineMult#1^#(@m2, @l))
767.45/212.89	     , lineMult#1^#(::(@x, @xs), @l) ->
767.45/212.89	       c_9(mult^#(@l, @x), lineMult^#(@l, @xs)) }
767.45/212.89	   Weak DPs:
767.45/212.89	     { matrixMultList^#(@acc, @mm) ->
767.45/212.89	       c_10(matrixMultList#1^#(@mm, @acc))
767.45/212.89	     , matrixMultList#1^#(::(@m, @ms), @acc) ->
767.45/212.89	       c_11(matrixMultList^#(matrixMult(@acc, @m), @ms),
767.45/212.89	            matrixMult^#(@acc, @m))
767.45/212.89	     , matrixMultOld^#(@m1, @m2) ->
767.45/212.89	       c_12(matrixMult'^#(@m1, transpose(@m2))) }
767.45/212.89	   Weak Trs:
767.45/212.89	     { attach(@line, @m) -> attach#1(@line, @m)
767.45/212.89	     , split(@m) -> split#1(@m)
767.45/212.89	     , #add(#neg(#s(#0())), @y) -> #pred(@y)
767.45/212.89	     , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
767.45/212.89	     , #add(#pos(#s(#0())), @y) -> #succ(@y)
767.45/212.89	     , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
767.45/212.89	     , #add(#0(), @y) -> @y
767.45/212.89	     , mult#2(nil(), @x, @xs) -> #abs(#0())
767.45/212.89	     , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
767.45/212.89	     , split#1(nil()) -> tuple#2(nil(), nil())
767.45/212.89	     , split#1(::(@l, @ls)) -> split#2(@l, @ls)
767.45/212.89	     , transpose(@m) -> transpose#1(@m, @m)
767.45/212.89	     , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
767.45/212.89	     , transAcc(@m, @base) -> transAcc#1(@m, @base)
767.45/212.89	     , mult(@l1, @l2) -> mult#1(@l1, @l2)
767.45/212.89	     , +(@x, @y) -> #add(@x, @y)
767.45/212.89	     , transAcc#1(nil(), @base) -> @base
767.45/212.89	     , transAcc#1(::(@l, @m'), @base) ->
767.45/212.89	       attach(@l, transAcc(@m', @base))
767.45/212.89	     , *(@x, @y) -> #mult(@x, @y)
767.45/212.89	     , mkBase#1(nil()) -> nil()
767.45/212.89	     , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.45/212.89	     , transpose#3(nil(), @l) -> nil()
767.45/212.89	     , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
767.45/212.89	     , attach#1(nil(), @m) -> nil()
767.45/212.89	     , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.45/212.89	     , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
767.45/212.89	     , matrixMult'#1(nil(), @m2) -> nil()
767.45/212.89	     , matrixMult'#1(::(@l, @ls), @m2) ->
767.45/212.89	       ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
767.45/212.89	     , #natmult(#0(), @y) -> #0()
767.45/212.89	     , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
767.45/212.89	     , split#2(nil(), @ls) -> tuple#2(nil(), nil())
767.45/212.89	     , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
767.45/212.89	     , mkBase(@m) -> mkBase#1(@m)
767.45/212.89	     , makeBase(@m) -> makeBase#1(@m)
767.45/212.89	     , mult#1(nil(), @l2) -> #abs(#0())
767.45/212.89	     , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
767.45/212.89	     , lineMult#1(nil(), @l) -> nil()
767.45/212.89	     , lineMult#1(::(@x, @xs), @l) ->
767.45/212.89	       ::(mult(@l, @x), lineMult(@l, @xs))
767.45/212.89	     , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
767.45/212.89	     , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
767.45/212.89	     , #mult(#neg(@x), #0()) -> #0()
767.45/212.89	     , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
767.45/212.89	     , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
767.45/212.89	     , #mult(#pos(@x), #0()) -> #0()
767.45/212.89	     , #mult(#0(), #neg(@y)) -> #0()
767.45/212.89	     , #mult(#0(), #pos(@y)) -> #0()
767.45/212.89	     , #mult(#0(), #0()) -> #0()
767.45/212.89	     , attach#2(nil(), @x, @xs) -> nil()
767.45/212.89	     , attach#2(::(@l, @ls), @x, @xs) ->
767.45/212.89	       ::(::(@x, @l), attach(@xs, @ls))
767.45/212.89	     , #succ(#neg(#s(#0()))) -> #0()
767.45/212.89	     , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
767.45/212.89	     , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
767.45/212.89	     , #succ(#0()) -> #pos(#s(#0()))
767.45/212.89	     , makeBase#1(nil()) -> nil()
767.45/212.89	     , makeBase#1(::(@l, @m')) -> mkBase(@l)
767.45/212.89	     , matrixMult(@m1, @m2) ->
767.45/212.89	       matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
767.45/212.89	     , #abs(#neg(@x)) -> #pos(@x)
767.45/212.89	     , #abs(#pos(@x)) -> #pos(@x)
767.45/212.89	     , #abs(#0()) -> #0()
767.45/212.89	     , #abs(#s(@x)) -> #pos(#s(@x))
767.45/212.89	     , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
767.45/212.89	     , transpose#1(nil(), @m) -> nil()
767.45/212.89	     , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
767.45/212.89	     , split#3(tuple#2(@ys, @m'), @x, @xs) ->
767.45/212.89	       tuple#2(::(@x, @ys), ::(@xs, @m'))
767.45/212.89	     , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
767.45/212.89	     , #pred(#pos(#s(#0()))) -> #0()
767.45/212.89	     , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
767.45/212.89	     , #pred(#0()) -> #neg(#s(#0())) }
767.45/212.89	   Obligation:
767.45/212.89	     innermost runtime complexity
767.45/212.89	   Answer:
767.45/212.89	     YES(O(1),O(n^3))
767.45/212.89	   
767.45/212.89	   We decompose the input problem according to the dependency graph
767.45/212.89	   into the upper component
767.45/212.89	   
767.45/212.89	     { matrixMultList^#(@acc, @mm) ->
767.45/212.89	       c_10(matrixMultList#1^#(@mm, @acc))
767.45/212.89	     , matrixMultList#1^#(::(@m, @ms), @acc) ->
767.45/212.89	       c_11(matrixMultList^#(matrixMult(@acc, @m), @ms),
767.45/212.89	            matrixMult^#(@acc, @m))
767.45/212.89	     , matrixMult3^#(@m1, @m2, @m3) ->
767.45/212.89	       c_1(matrixMult^#(matrixMult(@m1, @m2), @m3),
767.45/212.89	           matrixMult^#(@m1, @m2))
767.45/212.89	     , matrixMultOld^#(@m1, @m2) ->
767.45/212.89	       c_12(matrixMult'^#(@m1, transpose(@m2))) }
767.45/212.89	   
767.45/212.89	   and lower component
767.45/212.89	   
767.45/212.89	     { matrixMult^#(@m1, @m2) ->
767.45/212.89	       c_2(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))))
767.45/212.89	     , mult#2^#(::(@y, @ys), @x, @xs) -> c_3(mult^#(@xs, @ys))
767.45/212.89	     , mult^#(@l1, @l2) -> c_4(mult#1^#(@l1, @l2))
767.45/212.89	     , matrixMult'^#(@m1, @m2) -> c_5(matrixMult'#1^#(@m1, @m2))
767.45/212.89	     , matrixMult'#1^#(::(@l, @ls), @m2) ->
767.45/212.89	       c_6(lineMult^#(@l, @m2), matrixMult'^#(@ls, @m2))
767.45/212.89	     , mult#1^#(::(@x, @xs), @l2) -> c_7(mult#2^#(@l2, @x, @xs))
767.45/212.89	     , lineMult^#(@l, @m2) -> c_8(lineMult#1^#(@m2, @l))
767.45/212.89	     , lineMult#1^#(::(@x, @xs), @l) ->
767.45/212.89	       c_9(mult^#(@l, @x), lineMult^#(@l, @xs)) }
767.45/212.89	   
767.45/212.89	   Further, following extension rules are added to the lower
767.45/212.89	   component.
767.45/212.89	   
767.45/212.89	   { matrixMultList^#(@acc, @mm) -> matrixMultList#1^#(@mm, @acc)
767.45/212.89	   , matrixMultList#1^#(::(@m, @ms), @acc) ->
767.45/212.89	     matrixMultList^#(matrixMult(@acc, @m), @ms)
767.45/212.89	   , matrixMultList#1^#(::(@m, @ms), @acc) -> matrixMult^#(@acc, @m)
767.45/212.89	   , matrixMult3^#(@m1, @m2, @m3) -> matrixMult^#(@m1, @m2)
767.45/212.89	   , matrixMult3^#(@m1, @m2, @m3) ->
767.45/212.89	     matrixMult^#(matrixMult(@m1, @m2), @m3)
767.45/212.89	   , matrixMultOld^#(@m1, @m2) -> matrixMult'^#(@m1, transpose(@m2)) }
767.45/212.89	   
767.45/212.89	   TcT solves the upper component with certificate YES(O(1),O(n^1)).
767.45/212.89	   
767.45/212.89	   Sub-proof:
767.45/212.89	   ----------
767.45/212.89	     We are left with following problem, upon which TcT provides the
767.45/212.89	     certificate YES(O(1),O(n^1)).
767.45/212.89	     
767.45/212.89	     Strict DPs:
767.45/212.89	       { matrixMultList#1^#(::(@m, @ms), @acc) ->
767.45/212.89	         c_11(matrixMultList^#(matrixMult(@acc, @m), @ms),
767.45/212.89	              matrixMult^#(@acc, @m))
767.45/212.89	       , matrixMult3^#(@m1, @m2, @m3) ->
767.45/212.89	         c_1(matrixMult^#(matrixMult(@m1, @m2), @m3),
767.45/212.89	             matrixMult^#(@m1, @m2))
767.45/212.89	       , matrixMultOld^#(@m1, @m2) ->
767.45/212.89	         c_12(matrixMult'^#(@m1, transpose(@m2))) }
767.45/212.89	     Weak DPs:
767.45/212.89	       { matrixMultList^#(@acc, @mm) ->
767.45/212.89	         c_10(matrixMultList#1^#(@mm, @acc)) }
767.45/212.89	     Weak Trs:
767.45/212.89	       { attach(@line, @m) -> attach#1(@line, @m)
767.45/212.89	       , split(@m) -> split#1(@m)
767.45/212.89	       , #add(#neg(#s(#0())), @y) -> #pred(@y)
767.45/212.89	       , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
767.45/212.89	       , #add(#pos(#s(#0())), @y) -> #succ(@y)
767.45/212.89	       , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
767.45/212.89	       , #add(#0(), @y) -> @y
767.45/212.89	       , mult#2(nil(), @x, @xs) -> #abs(#0())
767.45/212.89	       , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
767.45/212.89	       , split#1(nil()) -> tuple#2(nil(), nil())
767.45/212.89	       , split#1(::(@l, @ls)) -> split#2(@l, @ls)
767.45/212.89	       , transpose(@m) -> transpose#1(@m, @m)
767.45/212.89	       , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
767.45/212.89	       , transAcc(@m, @base) -> transAcc#1(@m, @base)
767.45/212.89	       , mult(@l1, @l2) -> mult#1(@l1, @l2)
767.45/212.89	       , +(@x, @y) -> #add(@x, @y)
767.45/212.89	       , transAcc#1(nil(), @base) -> @base
767.45/212.90	       , transAcc#1(::(@l, @m'), @base) ->
767.45/212.90	         attach(@l, transAcc(@m', @base))
767.45/212.90	       , *(@x, @y) -> #mult(@x, @y)
767.45/212.90	       , mkBase#1(nil()) -> nil()
767.45/212.90	       , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.45/212.90	       , transpose#3(nil(), @l) -> nil()
767.45/212.90	       , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
767.45/212.90	       , attach#1(nil(), @m) -> nil()
767.45/212.90	       , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.45/212.90	       , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
767.45/212.90	       , matrixMult'#1(nil(), @m2) -> nil()
767.45/212.90	       , matrixMult'#1(::(@l, @ls), @m2) ->
767.45/212.90	         ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
767.45/212.90	       , #natmult(#0(), @y) -> #0()
767.45/212.90	       , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
767.45/212.90	       , split#2(nil(), @ls) -> tuple#2(nil(), nil())
767.45/212.90	       , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
767.45/212.90	       , mkBase(@m) -> mkBase#1(@m)
767.45/212.90	       , makeBase(@m) -> makeBase#1(@m)
767.45/212.90	       , mult#1(nil(), @l2) -> #abs(#0())
767.45/212.90	       , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
767.45/212.90	       , lineMult#1(nil(), @l) -> nil()
767.45/212.90	       , lineMult#1(::(@x, @xs), @l) ->
767.45/212.90	         ::(mult(@l, @x), lineMult(@l, @xs))
767.45/212.90	       , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
767.45/212.90	       , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
767.45/212.90	       , #mult(#neg(@x), #0()) -> #0()
767.45/212.90	       , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
767.45/212.90	       , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
767.45/212.90	       , #mult(#pos(@x), #0()) -> #0()
767.45/212.90	       , #mult(#0(), #neg(@y)) -> #0()
767.45/212.90	       , #mult(#0(), #pos(@y)) -> #0()
767.45/212.90	       , #mult(#0(), #0()) -> #0()
767.45/212.90	       , attach#2(nil(), @x, @xs) -> nil()
767.45/212.90	       , attach#2(::(@l, @ls), @x, @xs) ->
767.45/212.90	         ::(::(@x, @l), attach(@xs, @ls))
767.45/212.90	       , #succ(#neg(#s(#0()))) -> #0()
767.45/212.90	       , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
767.45/212.90	       , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
767.45/212.90	       , #succ(#0()) -> #pos(#s(#0()))
767.45/212.90	       , makeBase#1(nil()) -> nil()
767.45/212.90	       , makeBase#1(::(@l, @m')) -> mkBase(@l)
767.45/212.90	       , matrixMult(@m1, @m2) ->
767.45/212.90	         matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
767.45/212.90	       , #abs(#neg(@x)) -> #pos(@x)
767.45/212.90	       , #abs(#pos(@x)) -> #pos(@x)
767.45/212.90	       , #abs(#0()) -> #0()
767.45/212.90	       , #abs(#s(@x)) -> #pos(#s(@x))
767.45/212.90	       , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
767.45/212.90	       , transpose#1(nil(), @m) -> nil()
767.45/212.90	       , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
767.45/212.90	       , split#3(tuple#2(@ys, @m'), @x, @xs) ->
767.45/212.90	         tuple#2(::(@x, @ys), ::(@xs, @m'))
767.45/212.90	       , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
767.45/212.90	       , #pred(#pos(#s(#0()))) -> #0()
767.45/212.90	       , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
767.45/212.90	       , #pred(#0()) -> #neg(#s(#0())) }
767.45/212.90	     Obligation:
767.45/212.90	       innermost runtime complexity
767.45/212.90	     Answer:
767.45/212.90	       YES(O(1),O(n^1))
767.45/212.90	     
767.45/212.90	     We estimate the number of application of {2,3} by applications of
767.45/212.90	     Pre({2,3}) = {}. Here rules are labeled as follows:
767.45/212.90	     
767.45/212.90	       DPs:
767.45/212.90	         { 1: matrixMultList#1^#(::(@m, @ms), @acc) ->
767.45/212.90	              c_11(matrixMultList^#(matrixMult(@acc, @m), @ms),
767.45/212.90	                   matrixMult^#(@acc, @m))
767.45/212.90	         , 2: matrixMult3^#(@m1, @m2, @m3) ->
767.45/212.90	              c_1(matrixMult^#(matrixMult(@m1, @m2), @m3),
767.45/212.90	                  matrixMult^#(@m1, @m2))
767.45/212.90	         , 3: matrixMultOld^#(@m1, @m2) ->
767.45/212.90	              c_12(matrixMult'^#(@m1, transpose(@m2)))
767.45/212.90	         , 4: matrixMultList^#(@acc, @mm) ->
767.45/212.90	              c_10(matrixMultList#1^#(@mm, @acc)) }
767.45/212.90	     
767.45/212.90	     We are left with following problem, upon which TcT provides the
767.45/212.90	     certificate YES(O(1),O(n^1)).
767.45/212.90	     
767.45/212.90	     Strict DPs:
767.45/212.90	       { matrixMultList#1^#(::(@m, @ms), @acc) ->
767.45/212.90	         c_11(matrixMultList^#(matrixMult(@acc, @m), @ms),
767.45/212.90	              matrixMult^#(@acc, @m)) }
767.45/212.90	     Weak DPs:
767.45/212.90	       { matrixMultList^#(@acc, @mm) ->
767.45/212.90	         c_10(matrixMultList#1^#(@mm, @acc))
767.45/212.90	       , matrixMult3^#(@m1, @m2, @m3) ->
767.45/212.90	         c_1(matrixMult^#(matrixMult(@m1, @m2), @m3),
767.45/212.90	             matrixMult^#(@m1, @m2))
767.45/212.90	       , matrixMultOld^#(@m1, @m2) ->
767.45/212.90	         c_12(matrixMult'^#(@m1, transpose(@m2))) }
767.45/212.90	     Weak Trs:
767.45/212.90	       { attach(@line, @m) -> attach#1(@line, @m)
767.45/212.90	       , split(@m) -> split#1(@m)
767.45/212.90	       , #add(#neg(#s(#0())), @y) -> #pred(@y)
767.45/212.90	       , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
767.45/212.90	       , #add(#pos(#s(#0())), @y) -> #succ(@y)
767.45/212.90	       , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
767.45/212.90	       , #add(#0(), @y) -> @y
767.45/212.90	       , mult#2(nil(), @x, @xs) -> #abs(#0())
767.45/212.90	       , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
767.45/212.90	       , split#1(nil()) -> tuple#2(nil(), nil())
767.45/212.90	       , split#1(::(@l, @ls)) -> split#2(@l, @ls)
767.45/212.90	       , transpose(@m) -> transpose#1(@m, @m)
767.45/212.90	       , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
767.45/212.90	       , transAcc(@m, @base) -> transAcc#1(@m, @base)
767.45/212.90	       , mult(@l1, @l2) -> mult#1(@l1, @l2)
767.45/212.90	       , +(@x, @y) -> #add(@x, @y)
767.45/212.90	       , transAcc#1(nil(), @base) -> @base
767.45/212.90	       , transAcc#1(::(@l, @m'), @base) ->
767.45/212.90	         attach(@l, transAcc(@m', @base))
767.45/212.90	       , *(@x, @y) -> #mult(@x, @y)
767.45/212.90	       , mkBase#1(nil()) -> nil()
767.45/212.90	       , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.45/212.90	       , transpose#3(nil(), @l) -> nil()
767.45/212.90	       , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
767.45/212.90	       , attach#1(nil(), @m) -> nil()
767.45/212.90	       , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.45/212.90	       , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
767.45/212.90	       , matrixMult'#1(nil(), @m2) -> nil()
767.45/212.90	       , matrixMult'#1(::(@l, @ls), @m2) ->
767.45/212.90	         ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
767.45/212.90	       , #natmult(#0(), @y) -> #0()
767.45/212.90	       , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
767.45/212.90	       , split#2(nil(), @ls) -> tuple#2(nil(), nil())
767.45/212.90	       , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
767.45/212.90	       , mkBase(@m) -> mkBase#1(@m)
767.45/212.90	       , makeBase(@m) -> makeBase#1(@m)
767.45/212.90	       , mult#1(nil(), @l2) -> #abs(#0())
767.45/212.90	       , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
767.45/212.90	       , lineMult#1(nil(), @l) -> nil()
767.45/212.90	       , lineMult#1(::(@x, @xs), @l) ->
767.45/212.90	         ::(mult(@l, @x), lineMult(@l, @xs))
767.45/212.90	       , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
767.45/212.90	       , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
767.69/212.90	       , #mult(#neg(@x), #0()) -> #0()
767.69/212.90	       , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
767.69/212.90	       , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
767.69/212.90	       , #mult(#pos(@x), #0()) -> #0()
767.69/212.90	       , #mult(#0(), #neg(@y)) -> #0()
767.69/212.90	       , #mult(#0(), #pos(@y)) -> #0()
767.69/212.90	       , #mult(#0(), #0()) -> #0()
767.69/212.90	       , attach#2(nil(), @x, @xs) -> nil()
767.69/212.90	       , attach#2(::(@l, @ls), @x, @xs) ->
767.69/212.90	         ::(::(@x, @l), attach(@xs, @ls))
767.69/212.90	       , #succ(#neg(#s(#0()))) -> #0()
767.69/212.90	       , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
767.69/212.90	       , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
767.69/212.90	       , #succ(#0()) -> #pos(#s(#0()))
767.69/212.90	       , makeBase#1(nil()) -> nil()
767.69/212.90	       , makeBase#1(::(@l, @m')) -> mkBase(@l)
767.69/212.90	       , matrixMult(@m1, @m2) ->
767.69/212.90	         matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
767.69/212.90	       , #abs(#neg(@x)) -> #pos(@x)
767.69/212.90	       , #abs(#pos(@x)) -> #pos(@x)
767.69/212.90	       , #abs(#0()) -> #0()
767.69/212.90	       , #abs(#s(@x)) -> #pos(#s(@x))
767.69/212.90	       , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
767.69/212.90	       , transpose#1(nil(), @m) -> nil()
767.69/212.90	       , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
767.69/212.90	       , split#3(tuple#2(@ys, @m'), @x, @xs) ->
767.69/212.90	         tuple#2(::(@x, @ys), ::(@xs, @m'))
767.69/212.90	       , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
767.69/212.90	       , #pred(#pos(#s(#0()))) -> #0()
767.69/212.90	       , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
767.69/212.90	       , #pred(#0()) -> #neg(#s(#0())) }
767.69/212.90	     Obligation:
767.69/212.90	       innermost runtime complexity
767.69/212.90	     Answer:
767.69/212.90	       YES(O(1),O(n^1))
767.69/212.90	     
767.69/212.90	     The following weak DPs constitute a sub-graph of the DG that is
767.69/212.90	     closed under successors. The DPs are removed.
767.69/212.90	     
767.69/212.90	     { matrixMult3^#(@m1, @m2, @m3) ->
767.69/212.90	       c_1(matrixMult^#(matrixMult(@m1, @m2), @m3),
767.69/212.90	           matrixMult^#(@m1, @m2))
767.69/212.90	     , matrixMultOld^#(@m1, @m2) ->
767.69/212.90	       c_12(matrixMult'^#(@m1, transpose(@m2))) }
767.69/212.90	     
767.69/212.90	     We are left with following problem, upon which TcT provides the
767.69/212.90	     certificate YES(O(1),O(n^1)).
767.69/212.90	     
767.69/212.90	     Strict DPs:
767.69/212.90	       { matrixMultList#1^#(::(@m, @ms), @acc) ->
767.69/212.90	         c_11(matrixMultList^#(matrixMult(@acc, @m), @ms),
767.69/212.90	              matrixMult^#(@acc, @m)) }
767.69/212.90	     Weak DPs:
767.69/212.90	       { matrixMultList^#(@acc, @mm) ->
767.69/212.90	         c_10(matrixMultList#1^#(@mm, @acc)) }
767.69/212.90	     Weak Trs:
767.69/212.90	       { attach(@line, @m) -> attach#1(@line, @m)
767.69/212.90	       , split(@m) -> split#1(@m)
767.69/212.90	       , #add(#neg(#s(#0())), @y) -> #pred(@y)
767.69/212.90	       , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
767.69/212.90	       , #add(#pos(#s(#0())), @y) -> #succ(@y)
767.69/212.90	       , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
767.69/212.90	       , #add(#0(), @y) -> @y
767.69/212.90	       , mult#2(nil(), @x, @xs) -> #abs(#0())
767.69/212.90	       , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
767.69/212.90	       , split#1(nil()) -> tuple#2(nil(), nil())
767.69/212.90	       , split#1(::(@l, @ls)) -> split#2(@l, @ls)
767.69/212.90	       , transpose(@m) -> transpose#1(@m, @m)
767.69/212.90	       , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
767.69/212.90	       , transAcc(@m, @base) -> transAcc#1(@m, @base)
767.69/212.90	       , mult(@l1, @l2) -> mult#1(@l1, @l2)
767.69/212.90	       , +(@x, @y) -> #add(@x, @y)
767.69/212.90	       , transAcc#1(nil(), @base) -> @base
767.69/212.90	       , transAcc#1(::(@l, @m'), @base) ->
767.69/212.90	         attach(@l, transAcc(@m', @base))
767.69/212.90	       , *(@x, @y) -> #mult(@x, @y)
767.69/212.90	       , mkBase#1(nil()) -> nil()
767.69/212.90	       , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.69/212.90	       , transpose#3(nil(), @l) -> nil()
767.69/212.90	       , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
767.69/212.90	       , attach#1(nil(), @m) -> nil()
767.69/212.90	       , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.69/212.90	       , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
767.69/212.90	       , matrixMult'#1(nil(), @m2) -> nil()
767.69/212.90	       , matrixMult'#1(::(@l, @ls), @m2) ->
767.69/212.90	         ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
767.69/212.90	       , #natmult(#0(), @y) -> #0()
767.69/212.90	       , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
767.69/212.90	       , split#2(nil(), @ls) -> tuple#2(nil(), nil())
767.69/212.90	       , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
767.69/212.90	       , mkBase(@m) -> mkBase#1(@m)
767.69/212.90	       , makeBase(@m) -> makeBase#1(@m)
767.69/212.90	       , mult#1(nil(), @l2) -> #abs(#0())
767.69/212.90	       , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
767.69/212.90	       , lineMult#1(nil(), @l) -> nil()
767.69/212.90	       , lineMult#1(::(@x, @xs), @l) ->
767.69/212.90	         ::(mult(@l, @x), lineMult(@l, @xs))
767.69/212.90	       , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
767.69/212.90	       , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
767.69/212.90	       , #mult(#neg(@x), #0()) -> #0()
767.69/212.90	       , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
767.69/212.90	       , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
767.69/212.90	       , #mult(#pos(@x), #0()) -> #0()
767.69/212.90	       , #mult(#0(), #neg(@y)) -> #0()
767.69/212.90	       , #mult(#0(), #pos(@y)) -> #0()
767.69/212.90	       , #mult(#0(), #0()) -> #0()
767.69/212.90	       , attach#2(nil(), @x, @xs) -> nil()
767.69/212.90	       , attach#2(::(@l, @ls), @x, @xs) ->
767.69/212.90	         ::(::(@x, @l), attach(@xs, @ls))
767.69/212.90	       , #succ(#neg(#s(#0()))) -> #0()
767.69/212.90	       , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
767.69/212.90	       , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
767.69/212.90	       , #succ(#0()) -> #pos(#s(#0()))
767.69/212.90	       , makeBase#1(nil()) -> nil()
767.69/212.90	       , makeBase#1(::(@l, @m')) -> mkBase(@l)
767.69/212.90	       , matrixMult(@m1, @m2) ->
767.69/212.90	         matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
767.69/212.90	       , #abs(#neg(@x)) -> #pos(@x)
767.69/212.90	       , #abs(#pos(@x)) -> #pos(@x)
767.69/212.90	       , #abs(#0()) -> #0()
767.69/212.90	       , #abs(#s(@x)) -> #pos(#s(@x))
767.69/212.90	       , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
767.69/212.90	       , transpose#1(nil(), @m) -> nil()
767.69/212.90	       , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
767.69/212.90	       , split#3(tuple#2(@ys, @m'), @x, @xs) ->
767.69/212.90	         tuple#2(::(@x, @ys), ::(@xs, @m'))
767.69/212.90	       , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
767.69/212.90	       , #pred(#pos(#s(#0()))) -> #0()
767.69/212.90	       , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
767.69/212.90	       , #pred(#0()) -> #neg(#s(#0())) }
767.69/212.90	     Obligation:
767.69/212.90	       innermost runtime complexity
767.69/212.90	     Answer:
767.69/212.90	       YES(O(1),O(n^1))
767.69/212.90	     
767.69/212.90	     Due to missing edges in the dependency-graph, the right-hand sides
767.69/212.90	     of following rules could be simplified:
767.69/212.90	     
767.69/212.90	       { matrixMultList#1^#(::(@m, @ms), @acc) ->
767.69/212.90	         c_11(matrixMultList^#(matrixMult(@acc, @m), @ms),
767.69/212.90	              matrixMult^#(@acc, @m)) }
767.69/212.90	     
767.69/212.90	     We are left with following problem, upon which TcT provides the
767.69/212.90	     certificate YES(O(1),O(n^1)).
767.69/212.90	     
767.69/212.90	     Strict DPs:
767.69/212.90	       { matrixMultList#1^#(::(@m, @ms), @acc) ->
767.69/212.90	         c_1(matrixMultList^#(matrixMult(@acc, @m), @ms)) }
767.69/212.90	     Weak DPs:
767.69/212.90	       { matrixMultList^#(@acc, @mm) ->
767.69/212.90	         c_2(matrixMultList#1^#(@mm, @acc)) }
767.69/212.90	     Weak Trs:
767.69/212.90	       { attach(@line, @m) -> attach#1(@line, @m)
767.69/212.90	       , split(@m) -> split#1(@m)
767.69/212.90	       , #add(#neg(#s(#0())), @y) -> #pred(@y)
767.69/212.90	       , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
767.69/212.90	       , #add(#pos(#s(#0())), @y) -> #succ(@y)
767.69/212.90	       , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
767.69/212.90	       , #add(#0(), @y) -> @y
767.69/212.90	       , mult#2(nil(), @x, @xs) -> #abs(#0())
767.69/212.90	       , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
767.69/212.90	       , split#1(nil()) -> tuple#2(nil(), nil())
767.69/212.90	       , split#1(::(@l, @ls)) -> split#2(@l, @ls)
767.69/212.90	       , transpose(@m) -> transpose#1(@m, @m)
767.69/212.90	       , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
767.69/212.90	       , transAcc(@m, @base) -> transAcc#1(@m, @base)
767.69/212.90	       , mult(@l1, @l2) -> mult#1(@l1, @l2)
767.69/212.90	       , +(@x, @y) -> #add(@x, @y)
767.69/212.90	       , transAcc#1(nil(), @base) -> @base
767.69/212.90	       , transAcc#1(::(@l, @m'), @base) ->
767.69/212.90	         attach(@l, transAcc(@m', @base))
767.69/212.90	       , *(@x, @y) -> #mult(@x, @y)
767.69/212.90	       , mkBase#1(nil()) -> nil()
767.69/212.90	       , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.69/212.90	       , transpose#3(nil(), @l) -> nil()
767.69/212.90	       , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
767.69/212.90	       , attach#1(nil(), @m) -> nil()
767.69/212.90	       , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.69/212.90	       , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
767.69/212.90	       , matrixMult'#1(nil(), @m2) -> nil()
767.69/212.90	       , matrixMult'#1(::(@l, @ls), @m2) ->
767.69/212.90	         ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
767.69/212.90	       , #natmult(#0(), @y) -> #0()
767.69/212.90	       , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
767.69/212.90	       , split#2(nil(), @ls) -> tuple#2(nil(), nil())
767.69/212.90	       , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
767.69/212.90	       , mkBase(@m) -> mkBase#1(@m)
767.69/212.90	       , makeBase(@m) -> makeBase#1(@m)
767.69/212.90	       , mult#1(nil(), @l2) -> #abs(#0())
767.69/212.90	       , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
767.69/212.90	       , lineMult#1(nil(), @l) -> nil()
767.69/212.90	       , lineMult#1(::(@x, @xs), @l) ->
767.69/212.90	         ::(mult(@l, @x), lineMult(@l, @xs))
767.69/212.90	       , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
767.69/212.90	       , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
767.69/212.90	       , #mult(#neg(@x), #0()) -> #0()
767.69/212.90	       , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
767.69/212.90	       , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
767.69/212.90	       , #mult(#pos(@x), #0()) -> #0()
767.69/212.90	       , #mult(#0(), #neg(@y)) -> #0()
767.69/212.90	       , #mult(#0(), #pos(@y)) -> #0()
767.69/212.90	       , #mult(#0(), #0()) -> #0()
767.69/212.90	       , attach#2(nil(), @x, @xs) -> nil()
767.69/212.90	       , attach#2(::(@l, @ls), @x, @xs) ->
767.69/212.90	         ::(::(@x, @l), attach(@xs, @ls))
767.69/212.90	       , #succ(#neg(#s(#0()))) -> #0()
767.69/212.90	       , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
767.69/212.90	       , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
767.69/212.90	       , #succ(#0()) -> #pos(#s(#0()))
767.69/212.90	       , makeBase#1(nil()) -> nil()
767.69/212.90	       , makeBase#1(::(@l, @m')) -> mkBase(@l)
767.69/212.90	       , matrixMult(@m1, @m2) ->
767.69/212.90	         matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
767.69/212.90	       , #abs(#neg(@x)) -> #pos(@x)
767.69/212.90	       , #abs(#pos(@x)) -> #pos(@x)
767.69/212.90	       , #abs(#0()) -> #0()
767.69/212.90	       , #abs(#s(@x)) -> #pos(#s(@x))
767.69/212.90	       , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
767.69/212.90	       , transpose#1(nil(), @m) -> nil()
767.69/212.90	       , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
767.69/212.90	       , split#3(tuple#2(@ys, @m'), @x, @xs) ->
767.69/212.90	         tuple#2(::(@x, @ys), ::(@xs, @m'))
767.69/212.90	       , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
767.69/212.90	       , #pred(#pos(#s(#0()))) -> #0()
767.69/212.90	       , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
767.69/212.90	       , #pred(#0()) -> #neg(#s(#0())) }
767.69/212.90	     Obligation:
767.69/212.90	       innermost runtime complexity
767.69/212.90	     Answer:
767.69/212.90	       YES(O(1),O(n^1))
767.69/212.90	     
767.69/212.90	     We replace rewrite rules by usable rules:
767.69/212.90	     
767.69/212.90	       Weak Usable Rules:
767.69/212.90	         { attach(@line, @m) -> attach#1(@line, @m)
767.69/212.90	         , #add(#neg(#s(#0())), @y) -> #pred(@y)
767.69/212.90	         , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
767.69/212.90	         , #add(#pos(#s(#0())), @y) -> #succ(@y)
767.69/212.90	         , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
767.69/212.90	         , #add(#0(), @y) -> @y
767.69/212.90	         , mult#2(nil(), @x, @xs) -> #abs(#0())
767.69/212.90	         , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
767.69/212.90	         , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
767.69/212.90	         , transAcc(@m, @base) -> transAcc#1(@m, @base)
767.69/212.90	         , mult(@l1, @l2) -> mult#1(@l1, @l2)
767.69/212.90	         , +(@x, @y) -> #add(@x, @y)
767.69/212.90	         , transAcc#1(nil(), @base) -> @base
767.69/212.90	         , transAcc#1(::(@l, @m'), @base) ->
767.69/212.90	           attach(@l, transAcc(@m', @base))
767.69/212.90	         , *(@x, @y) -> #mult(@x, @y)
767.69/212.90	         , mkBase#1(nil()) -> nil()
767.69/212.90	         , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.69/212.90	         , attach#1(nil(), @m) -> nil()
767.69/212.90	         , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.69/212.90	         , matrixMult'#1(nil(), @m2) -> nil()
767.69/212.90	         , matrixMult'#1(::(@l, @ls), @m2) ->
767.69/212.90	           ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
767.69/212.90	         , #natmult(#0(), @y) -> #0()
767.69/212.90	         , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
767.69/212.90	         , mkBase(@m) -> mkBase#1(@m)
767.69/212.90	         , makeBase(@m) -> makeBase#1(@m)
767.69/212.90	         , mult#1(nil(), @l2) -> #abs(#0())
767.69/212.90	         , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
767.69/212.90	         , lineMult#1(nil(), @l) -> nil()
767.69/212.90	         , lineMult#1(::(@x, @xs), @l) ->
767.69/212.90	           ::(mult(@l, @x), lineMult(@l, @xs))
767.69/212.90	         , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
767.69/212.90	         , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
767.69/212.90	         , #mult(#neg(@x), #0()) -> #0()
767.69/212.90	         , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
767.69/212.90	         , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
767.69/212.90	         , #mult(#pos(@x), #0()) -> #0()
767.69/212.90	         , #mult(#0(), #neg(@y)) -> #0()
767.69/212.90	         , #mult(#0(), #pos(@y)) -> #0()
767.69/212.90	         , #mult(#0(), #0()) -> #0()
767.69/212.90	         , attach#2(nil(), @x, @xs) -> nil()
767.69/212.90	         , attach#2(::(@l, @ls), @x, @xs) ->
767.69/212.90	           ::(::(@x, @l), attach(@xs, @ls))
767.69/212.90	         , #succ(#neg(#s(#0()))) -> #0()
767.69/212.90	         , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
767.69/212.90	         , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
767.69/212.90	         , #succ(#0()) -> #pos(#s(#0()))
767.69/212.90	         , makeBase#1(nil()) -> nil()
767.69/212.90	         , makeBase#1(::(@l, @m')) -> mkBase(@l)
767.69/212.90	         , matrixMult(@m1, @m2) ->
767.69/212.90	           matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
767.69/212.90	         , #abs(#neg(@x)) -> #pos(@x)
767.69/212.90	         , #abs(#pos(@x)) -> #pos(@x)
767.69/212.90	         , #abs(#0()) -> #0()
767.69/212.90	         , #abs(#s(@x)) -> #pos(#s(@x))
767.69/212.90	         , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
767.69/212.90	         , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
767.69/212.90	         , #pred(#pos(#s(#0()))) -> #0()
767.69/212.90	         , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
767.69/212.90	         , #pred(#0()) -> #neg(#s(#0())) }
767.69/212.90	     
767.69/212.90	     We are left with following problem, upon which TcT provides the
767.69/212.90	     certificate YES(O(1),O(n^1)).
767.69/212.90	     
767.69/212.90	     Strict DPs:
767.69/212.90	       { matrixMultList#1^#(::(@m, @ms), @acc) ->
767.69/212.90	         c_1(matrixMultList^#(matrixMult(@acc, @m), @ms)) }
767.69/212.90	     Weak DPs:
767.69/212.90	       { matrixMultList^#(@acc, @mm) ->
767.69/212.90	         c_2(matrixMultList#1^#(@mm, @acc)) }
767.69/212.90	     Weak Trs:
767.69/212.90	       { attach(@line, @m) -> attach#1(@line, @m)
767.69/212.90	       , #add(#neg(#s(#0())), @y) -> #pred(@y)
767.69/212.90	       , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
767.69/212.90	       , #add(#pos(#s(#0())), @y) -> #succ(@y)
767.69/212.90	       , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
767.69/212.90	       , #add(#0(), @y) -> @y
767.69/212.90	       , mult#2(nil(), @x, @xs) -> #abs(#0())
767.69/212.90	       , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
767.69/212.90	       , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
767.69/212.90	       , transAcc(@m, @base) -> transAcc#1(@m, @base)
767.69/212.90	       , mult(@l1, @l2) -> mult#1(@l1, @l2)
767.69/212.90	       , +(@x, @y) -> #add(@x, @y)
767.69/212.90	       , transAcc#1(nil(), @base) -> @base
767.69/212.90	       , transAcc#1(::(@l, @m'), @base) ->
767.69/212.90	         attach(@l, transAcc(@m', @base))
767.69/212.90	       , *(@x, @y) -> #mult(@x, @y)
767.69/212.90	       , mkBase#1(nil()) -> nil()
767.69/212.90	       , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.69/212.90	       , attach#1(nil(), @m) -> nil()
767.69/212.90	       , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.69/212.90	       , matrixMult'#1(nil(), @m2) -> nil()
767.69/212.90	       , matrixMult'#1(::(@l, @ls), @m2) ->
767.69/212.90	         ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
767.69/212.90	       , #natmult(#0(), @y) -> #0()
767.69/212.90	       , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
767.69/212.90	       , mkBase(@m) -> mkBase#1(@m)
767.69/212.90	       , makeBase(@m) -> makeBase#1(@m)
767.69/212.90	       , mult#1(nil(), @l2) -> #abs(#0())
767.69/212.90	       , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
767.69/212.90	       , lineMult#1(nil(), @l) -> nil()
767.69/212.90	       , lineMult#1(::(@x, @xs), @l) ->
767.69/212.90	         ::(mult(@l, @x), lineMult(@l, @xs))
767.69/212.90	       , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
767.69/212.90	       , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
767.69/212.90	       , #mult(#neg(@x), #0()) -> #0()
767.69/212.90	       , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
767.69/212.90	       , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
767.69/212.90	       , #mult(#pos(@x), #0()) -> #0()
767.69/212.90	       , #mult(#0(), #neg(@y)) -> #0()
767.69/212.91	       , #mult(#0(), #pos(@y)) -> #0()
767.69/212.91	       , #mult(#0(), #0()) -> #0()
767.69/212.91	       , attach#2(nil(), @x, @xs) -> nil()
767.69/212.91	       , attach#2(::(@l, @ls), @x, @xs) ->
767.69/212.91	         ::(::(@x, @l), attach(@xs, @ls))
767.69/212.91	       , #succ(#neg(#s(#0()))) -> #0()
767.69/212.91	       , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
767.69/212.91	       , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
767.69/212.91	       , #succ(#0()) -> #pos(#s(#0()))
767.69/212.91	       , makeBase#1(nil()) -> nil()
767.69/212.91	       , makeBase#1(::(@l, @m')) -> mkBase(@l)
767.69/212.91	       , matrixMult(@m1, @m2) ->
767.69/212.91	         matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
767.69/212.91	       , #abs(#neg(@x)) -> #pos(@x)
767.69/212.91	       , #abs(#pos(@x)) -> #pos(@x)
767.69/212.91	       , #abs(#0()) -> #0()
767.69/212.91	       , #abs(#s(@x)) -> #pos(#s(@x))
767.69/212.91	       , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
767.69/212.91	       , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
767.69/212.91	       , #pred(#pos(#s(#0()))) -> #0()
767.69/212.91	       , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
767.69/212.91	       , #pred(#0()) -> #neg(#s(#0())) }
767.69/212.91	     Obligation:
767.69/212.91	       innermost runtime complexity
767.69/212.91	     Answer:
767.69/212.91	       YES(O(1),O(n^1))
767.69/212.91	     
767.69/212.91	     We use the processor 'matrix interpretation of dimension 1' to
767.69/212.91	     orient following rules strictly.
767.69/212.91	     
767.69/212.91	     DPs:
767.69/212.91	       { 1: matrixMultList#1^#(::(@m, @ms), @acc) ->
767.69/212.91	            c_1(matrixMultList^#(matrixMult(@acc, @m), @ms))
767.69/212.91	       , 2: matrixMultList^#(@acc, @mm) ->
767.69/212.91	            c_2(matrixMultList#1^#(@mm, @acc)) }
767.69/212.91	     
767.69/212.91	     Sub-proof:
767.69/212.91	     ----------
767.69/212.91	       The following argument positions are usable:
767.69/212.91	         Uargs(c_1) = {1}, Uargs(c_2) = {1}
767.69/212.91	       
767.69/212.91	       TcT has computed the following constructor-based matrix
767.69/212.91	       interpretation satisfying not(EDA).
767.69/212.91	       
767.69/212.91	                     [attach](x1, x2) = [3] x1 + [0]                  
767.69/212.91	                                                                      
767.69/212.91	                          [split](x1) = [7] x1 + [0]                  
767.69/212.91	                                                                      
767.69/212.91	                       [#add](x1, x2) = [0]                           
767.69/212.91	                                                                      
767.69/212.91	                 [mult#2](x1, x2, x3) = [4] x2 + [7] x3 + [0]         
767.69/212.91	                                                                      
767.69/212.91	                                [nil] = [0]                           
767.69/212.91	                                                                      
767.69/212.91	                        [split#1](x1) = [7] x1 + [0]                  
767.69/212.91	                                                                      
767.69/212.91	                      [transpose](x1) = [7] x1 + [0]                  
767.69/212.91	                                                                      
767.69/212.91	                [matrixMult'](x1, x2) = [4] x1 + [0]                  
767.69/212.91	                                                                      
767.69/212.91	                   [transAcc](x1, x2) = [0]                           
767.69/212.91	                                                                      
767.69/212.91	                       [mult](x1, x2) = [0]                           
767.69/212.91	                                                                      
767.69/212.91	                          [+](x1, x2) = [0]                           
767.69/212.91	                                                                      
767.69/212.91	                 [transAcc#1](x1, x2) = [4] x2 + [0]                  
767.69/212.91	                                                                      
767.69/212.91	                           [#neg](x1) = [0]                           
767.69/212.91	                                                                      
767.69/212.91	                          [*](x1, x2) = [0]                           
767.69/212.91	                                                                      
767.69/212.91	                       [mkBase#1](x1) = [0]                           
767.69/212.91	                                                                      
767.69/212.91	                [transpose#3](x1, x2) = [7] x1 + [7] x2 + [0]         
767.69/212.91	                                                                      
767.69/212.91	                   [attach#1](x1, x2) = [4] x2 + [0]                  
767.69/212.91	                                                                      
767.69/212.91	                    [transpose#2](x1) = [7] x1 + [0]                  
767.69/212.91	                                                                      
767.69/212.91	              [matrixMult'#1](x1, x2) = [0]                           
767.69/212.91	                                                                      
767.69/212.91	                   [#natmult](x1, x2) = [0]                           
767.69/212.91	                                                                      
767.69/212.91	                    [split#2](x1, x2) = [7] x1 + [7] x2 + [0]         
767.69/212.91	                                                                      
767.69/212.91	                           [#pos](x1) = [0]                           
767.69/212.91	                                                                      
767.69/212.91	                    [tuple#2](x1, x2) = [1] x1 + [1] x2 + [0]         
767.69/212.91	                                                                      
767.69/212.91	                         [mkBase](x1) = [3] x1 + [0]                  
767.69/212.91	                                                                      
767.69/212.91	                       [makeBase](x1) = [0]                           
767.69/212.91	                                                                      
767.69/212.91	                     [mult#1](x1, x2) = [4] x2 + [0]                  
767.69/212.91	                                                                      
767.69/212.91	                         [::](x1, x2) = [1] x2 + [4]                  
767.69/212.91	                                                                      
767.69/212.91	                 [lineMult#1](x1, x2) = [7] x2 + [0]                  
767.69/212.91	                                                                      
767.69/212.91	                      [#mult](x1, x2) = [0]                           
767.69/212.91	                                                                      
767.69/212.91	               [attach#2](x1, x2, x3) = [4] x3 + [0]                  
767.69/212.91	                                                                      
767.69/212.91	                          [#succ](x1) = [0]                           
767.69/212.91	                                                                      
767.69/212.91	                                 [#0] = [0]                           
767.69/212.91	                                                                      
767.69/212.91	                     [makeBase#1](x1) = [0]                           
767.69/212.91	                                                                      
767.69/212.91	                 [matrixMult](x1, x2) = [0]                           
767.69/212.91	                                                                      
767.69/212.91	                           [#abs](x1) = [0]                           
767.69/212.91	                                                                      
767.69/212.91	                   [lineMult](x1, x2) = [3] x2 + [4]                  
767.69/212.91	                                                                      
767.69/212.91	                [transpose#1](x1, x2) = [7] x1 + [7] x2 + [0]         
767.69/212.91	                                                                      
767.69/212.91	                [split#3](x1, x2, x3) = [7] x1 + [7] x2 + [7] x3 + [0]
767.69/212.91	                                                                      
767.69/212.91	                          [#pred](x1) = [0]                           
767.69/212.91	                                                                      
767.69/212.91	                             [#s](x1) = [0]                           
767.69/212.91	                                                                      
767.69/212.91	           [matrixMultList^#](x1, x2) = [2] x2 + [4]                  
767.69/212.91	                                                                      
767.69/212.91	         [matrixMultList#1^#](x1, x2) = [2] x1 + [0]                  
767.69/212.91	                                                                      
767.69/212.91	          [matrixMult3^#](x1, x2, x3) = [7] x1 + [7] x2 + [7] x3 + [0]
767.69/212.91	                                                                      
767.69/212.91	               [matrixMult^#](x1, x2) = [7] x1 + [7] x2 + [0]         
767.69/212.91	                                                                      
767.69/212.91	              [matrixMult'^#](x1, x2) = [7] x1 + [7] x2 + [0]         
767.69/212.91	                                                                      
767.69/212.91	            [matrixMultOld^#](x1, x2) = [7] x1 + [7] x2 + [0]         
767.69/212.91	                                                                      
767.69/212.91	                        [c_1](x1, x2) = [7] x1 + [7] x2 + [0]         
767.69/212.91	                                                                      
767.69/212.91	                           [c_10](x1) = [7] x1 + [0]                  
767.69/212.91	                                                                      
767.69/212.91	                       [c_11](x1, x2) = [7] x1 + [7] x2 + [0]         
767.69/212.91	                                                                      
767.69/212.91	                           [c_12](x1) = [7] x1 + [0]                  
767.69/212.91	                                                                      
767.69/212.91	                                  [c] = [0]                           
767.69/212.91	                                                                      
767.69/212.91	                            [c_1](x1) = [1] x1 + [3]                  
767.69/212.91	                                                                      
767.69/212.91	                            [c_2](x1) = [1] x1 + [3]                  
767.69/212.91	       
767.69/212.91	       The order satisfies the following ordering constraints:
767.69/212.91	       
767.69/212.91	                             [attach(@line, @m)] =  [3] @line + [0]                                   
767.69/212.91	                                                 ?  [4] @m + [0]                                      
767.69/212.91	                                                 =  [attach#1(@line, @m)]                             
767.69/212.91	                                                                                                      
767.69/212.91	                      [#add(#neg(#s(#0())), @y)] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#pred(@y)]                                       
767.69/212.91	                                                                                                      
767.69/212.91	                    [#add(#neg(#s(#s(@x))), @y)] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#pred(#add(#pos(#s(@x)), @y))]                   
767.69/212.91	                                                                                                      
767.69/212.91	                      [#add(#pos(#s(#0())), @y)] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#succ(@y)]                                       
767.69/212.91	                                                                                                      
767.69/212.91	                    [#add(#pos(#s(#s(@x))), @y)] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#succ(#add(#pos(#s(@x)), @y))]                   
767.69/212.91	                                                                                                      
767.69/212.91	                                [#add(#0(), @y)] =  [0]                                               
767.69/212.91	                                                 ?  [1] @y + [0]                                      
767.69/212.91	                                                 =  [@y]                                              
767.69/212.91	                                                                                                      
767.69/212.91	                        [mult#2(nil(), @x, @xs)] =  [4] @x + [7] @xs + [0]                            
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#abs(#0())]                                      
767.69/212.91	                                                                                                      
767.69/212.91	                  [mult#2(::(@y, @ys), @x, @xs)] =  [4] @x + [7] @xs + [0]                            
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [+(*(@x, @y), mult(@xs, @ys))]                    
767.69/212.91	                                                                                                      
767.69/212.91	                         [matrixMult'(@m1, @m2)] =  [4] @m1 + [0]                                     
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [matrixMult'#1(@m1, @m2)]                         
767.69/212.91	                                                                                                      
767.69/212.91	                           [transAcc(@m, @base)] =  [0]                                               
767.69/212.91	                                                 ?  [4] @base + [0]                                   
767.69/212.91	                                                 =  [transAcc#1(@m, @base)]                           
767.69/212.91	                                                                                                      
767.69/212.91	                                [mult(@l1, @l2)] =  [0]                                               
767.69/212.91	                                                 ?  [4] @l2 + [0]                                     
767.69/212.91	                                                 =  [mult#1(@l1, @l2)]                                
767.69/212.91	                                                                                                      
767.69/212.91	                                     [+(@x, @y)] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#add(@x, @y)]                                    
767.69/212.91	                                                                                                      
767.69/212.91	                      [transAcc#1(nil(), @base)] =  [4] @base + [0]                                   
767.69/212.91	                                                 >= [1] @base + [0]                                   
767.69/212.91	                                                 =  [@base]                                           
767.69/212.91	                                                                                                      
767.69/212.91	                [transAcc#1(::(@l, @m'), @base)] =  [4] @base + [0]                                   
767.69/212.91	                                                 ?  [3] @l + [0]                                      
767.69/212.91	                                                 =  [attach(@l, transAcc(@m', @base))]                
767.69/212.91	                                                                                                      
767.69/212.91	                                     [*(@x, @y)] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#mult(@x, @y)]                                   
767.69/212.91	                                                                                                      
767.69/212.91	                               [mkBase#1(nil())] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [nil()]                                           
767.69/212.91	                                                                                                      
767.69/212.91	                         [mkBase#1(::(@l, @m'))] =  [0]                                               
767.69/212.91	                                                 ?  [3] @m' + [4]                                     
767.69/212.91	                                                 =  [::(nil(), mkBase(@m'))]                          
767.69/212.91	                                                                                                      
767.69/212.91	                           [attach#1(nil(), @m)] =  [4] @m + [0]                                      
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [nil()]                                           
767.69/212.91	                                                                                                      
767.69/212.91	                     [attach#1(::(@x, @xs), @m)] =  [4] @m + [0]                                      
767.69/212.91	                                                 ?  [4] @xs + [0]                                     
767.69/212.91	                                                 =  [attach#2(@m, @x, @xs)]                           
767.69/212.91	                                                                                                      
767.69/212.91	                     [matrixMult'#1(nil(), @m2)] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [nil()]                                           
767.69/212.91	                                                                                                      
767.69/212.91	               [matrixMult'#1(::(@l, @ls), @m2)] =  [0]                                               
767.69/212.91	                                                 ?  [4] @ls + [4]                                     
767.69/212.91	                                                 =  [::(lineMult(@l, @m2), matrixMult'(@ls, @m2))]    
767.69/212.91	                                                                                                      
767.69/212.91	                            [#natmult(#0(), @y)] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#0()]                                            
767.69/212.91	                                                                                                      
767.69/212.91	                          [#natmult(#s(@x), @y)] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#add(#pos(@y), #natmult(@x, @y))]                
767.69/212.91	                                                                                                      
767.69/212.91	                                    [mkBase(@m)] =  [3] @m + [0]                                      
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [mkBase#1(@m)]                                    
767.69/212.91	                                                                                                      
767.69/212.91	                                  [makeBase(@m)] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [makeBase#1(@m)]                                  
767.69/212.91	                                                                                                      
767.69/212.91	                            [mult#1(nil(), @l2)] =  [4] @l2 + [0]                                     
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#abs(#0())]                                      
767.69/212.91	                                                                                                      
767.69/212.91	                      [mult#1(::(@x, @xs), @l2)] =  [4] @l2 + [0]                                     
767.69/212.91	                                                 ?  [4] @x + [7] @xs + [0]                            
767.69/212.91	                                                 =  [mult#2(@l2, @x, @xs)]                            
767.69/212.91	                                                                                                      
767.69/212.91	                         [lineMult#1(nil(), @l)] =  [7] @l + [0]                                      
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [nil()]                                           
767.69/212.91	                                                                                                      
767.69/212.91	                   [lineMult#1(::(@x, @xs), @l)] =  [7] @l + [0]                                      
767.69/212.91	                                                 ?  [3] @xs + [8]                                     
767.69/212.91	                                                 =  [::(mult(@l, @x), lineMult(@l, @xs))]             
767.69/212.91	                                                                                                      
767.69/212.91	                     [#mult(#neg(@x), #neg(@y))] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#pos(#natmult(@x, @y))]                          
767.69/212.91	                                                                                                      
767.69/212.91	                     [#mult(#neg(@x), #pos(@y))] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#neg(#natmult(@x, @y))]                          
767.69/212.91	                                                                                                      
767.69/212.91	                         [#mult(#neg(@x), #0())] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#0()]                                            
767.69/212.91	                                                                                                      
767.69/212.91	                     [#mult(#pos(@x), #neg(@y))] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#neg(#natmult(@x, @y))]                          
767.69/212.91	                                                                                                      
767.69/212.91	                     [#mult(#pos(@x), #pos(@y))] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#pos(#natmult(@x, @y))]                          
767.69/212.91	                                                                                                      
767.69/212.91	                         [#mult(#pos(@x), #0())] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#0()]                                            
767.69/212.91	                                                                                                      
767.69/212.91	                         [#mult(#0(), #neg(@y))] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#0()]                                            
767.69/212.91	                                                                                                      
767.69/212.91	                         [#mult(#0(), #pos(@y))] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#0()]                                            
767.69/212.91	                                                                                                      
767.69/212.91	                             [#mult(#0(), #0())] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#0()]                                            
767.69/212.91	                                                                                                      
767.69/212.91	                      [attach#2(nil(), @x, @xs)] =  [4] @xs + [0]                                     
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [nil()]                                           
767.69/212.91	                                                                                                      
767.69/212.91	                [attach#2(::(@l, @ls), @x, @xs)] =  [4] @xs + [0]                                     
767.69/212.91	                                                 ?  [3] @xs + [4]                                     
767.69/212.91	                                                 =  [::(::(@x, @l), attach(@xs, @ls))]                
767.69/212.91	                                                                                                      
767.69/212.91	                         [#succ(#neg(#s(#0())))] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#0()]                                            
767.69/212.91	                                                                                                      
767.69/212.91	                       [#succ(#neg(#s(#s(@x))))] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#neg(#s(@x))]                                    
767.69/212.91	                                                                                                      
767.69/212.91	                           [#succ(#pos(#s(@x)))] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#pos(#s(#s(@x)))]                                
767.69/212.91	                                                                                                      
767.69/212.91	                                   [#succ(#0())] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#pos(#s(#0()))]                                  
767.69/212.91	                                                                                                      
767.69/212.91	                             [makeBase#1(nil())] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [nil()]                                           
767.69/212.91	                                                                                                      
767.69/212.91	                       [makeBase#1(::(@l, @m'))] =  [0]                                               
767.69/212.91	                                                 ?  [3] @l + [0]                                      
767.69/212.91	                                                 =  [mkBase(@l)]                                      
767.69/212.91	                                                                                                      
767.69/212.91	                          [matrixMult(@m1, @m2)] =  [0]                                               
767.69/212.91	                                                 ?  [4] @m1 + [0]                                     
767.69/212.91	                                                 =  [matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))]  
767.69/212.91	                                                                                                      
767.69/212.91	                                [#abs(#neg(@x))] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#pos(@x)]                                        
767.69/212.91	                                                                                                      
767.69/212.91	                                [#abs(#pos(@x))] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#pos(@x)]                                        
767.69/212.91	                                                                                                      
767.69/212.91	                                    [#abs(#0())] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#0()]                                            
767.69/212.91	                                                                                                      
767.69/212.91	                                  [#abs(#s(@x))] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#pos(#s(@x))]                                    
767.69/212.91	                                                                                                      
767.69/212.91	                             [lineMult(@l, @m2)] =  [3] @m2 + [4]                                     
767.69/212.91	                                                 ?  [7] @l + [0]                                      
767.69/212.91	                                                 =  [lineMult#1(@m2, @l)]                             
767.69/212.91	                                                                                                      
767.69/212.91	                           [#pred(#neg(#s(@x)))] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#neg(#s(#s(@x)))]                                
767.69/212.91	                                                                                                      
767.69/212.91	                         [#pred(#pos(#s(#0())))] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#0()]                                            
767.69/212.91	                                                                                                      
767.69/212.91	                       [#pred(#pos(#s(#s(@x))))] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#pos(#s(@x))]                                    
767.69/212.91	                                                                                                      
767.69/212.91	                                   [#pred(#0())] =  [0]                                               
767.69/212.91	                                                 >= [0]                                               
767.69/212.91	                                                 =  [#neg(#s(#0()))]                                  
767.69/212.91	                                                                                                      
767.69/212.91	                   [matrixMultList^#(@acc, @mm)] =  [2] @mm + [4]                                     
767.69/212.91	                                                 >  [2] @mm + [3]                                     
767.69/212.91	                                                 =  [c_2(matrixMultList#1^#(@mm, @acc))]              
767.69/212.91	                                                                                                      
767.69/212.91	         [matrixMultList#1^#(::(@m, @ms), @acc)] =  [2] @ms + [8]                                     
767.69/212.91	                                                 >  [2] @ms + [7]                                     
767.69/212.91	                                                 =  [c_1(matrixMultList^#(matrixMult(@acc, @m), @ms))]
767.69/212.91	                                                                                                      
767.69/212.91	     
767.69/212.91	     The strictly oriented rules are moved into the weak component.
767.69/212.91	     
767.69/212.91	     We are left with following problem, upon which TcT provides the
767.69/212.91	     certificate YES(O(1),O(1)).
767.69/212.91	     
767.69/212.91	     Weak DPs:
767.69/212.91	       { matrixMultList^#(@acc, @mm) -> c_2(matrixMultList#1^#(@mm, @acc))
767.69/212.91	       , matrixMultList#1^#(::(@m, @ms), @acc) ->
767.69/212.91	         c_1(matrixMultList^#(matrixMult(@acc, @m), @ms)) }
767.69/212.91	     Weak Trs:
767.69/212.91	       { attach(@line, @m) -> attach#1(@line, @m)
767.69/212.91	       , #add(#neg(#s(#0())), @y) -> #pred(@y)
767.69/212.91	       , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
767.69/212.91	       , #add(#pos(#s(#0())), @y) -> #succ(@y)
767.69/212.91	       , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
767.69/212.91	       , #add(#0(), @y) -> @y
767.69/212.91	       , mult#2(nil(), @x, @xs) -> #abs(#0())
767.69/212.91	       , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
767.69/212.91	       , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
767.69/212.91	       , transAcc(@m, @base) -> transAcc#1(@m, @base)
767.69/212.91	       , mult(@l1, @l2) -> mult#1(@l1, @l2)
767.69/212.91	       , +(@x, @y) -> #add(@x, @y)
767.69/212.91	       , transAcc#1(nil(), @base) -> @base
767.69/212.91	       , transAcc#1(::(@l, @m'), @base) ->
767.69/212.91	         attach(@l, transAcc(@m', @base))
767.69/212.91	       , *(@x, @y) -> #mult(@x, @y)
767.69/212.91	       , mkBase#1(nil()) -> nil()
767.69/212.91	       , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.69/212.91	       , attach#1(nil(), @m) -> nil()
767.69/212.91	       , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.69/212.91	       , matrixMult'#1(nil(), @m2) -> nil()
767.69/212.91	       , matrixMult'#1(::(@l, @ls), @m2) ->
767.69/212.91	         ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
767.69/212.91	       , #natmult(#0(), @y) -> #0()
767.69/212.91	       , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
767.69/212.91	       , mkBase(@m) -> mkBase#1(@m)
767.69/212.91	       , makeBase(@m) -> makeBase#1(@m)
767.69/212.91	       , mult#1(nil(), @l2) -> #abs(#0())
767.69/212.91	       , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
767.69/212.91	       , lineMult#1(nil(), @l) -> nil()
767.69/212.91	       , lineMult#1(::(@x, @xs), @l) ->
767.69/212.91	         ::(mult(@l, @x), lineMult(@l, @xs))
767.69/212.91	       , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
767.69/212.91	       , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
767.69/212.91	       , #mult(#neg(@x), #0()) -> #0()
767.69/212.91	       , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
767.69/212.91	       , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
767.69/212.91	       , #mult(#pos(@x), #0()) -> #0()
767.69/212.91	       , #mult(#0(), #neg(@y)) -> #0()
767.69/212.91	       , #mult(#0(), #pos(@y)) -> #0()
767.69/212.91	       , #mult(#0(), #0()) -> #0()
767.69/212.91	       , attach#2(nil(), @x, @xs) -> nil()
767.69/212.91	       , attach#2(::(@l, @ls), @x, @xs) ->
767.69/212.91	         ::(::(@x, @l), attach(@xs, @ls))
767.69/212.91	       , #succ(#neg(#s(#0()))) -> #0()
767.69/212.91	       , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
767.69/212.91	       , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
767.69/212.91	       , #succ(#0()) -> #pos(#s(#0()))
767.69/212.91	       , makeBase#1(nil()) -> nil()
767.69/212.91	       , makeBase#1(::(@l, @m')) -> mkBase(@l)
767.69/212.91	       , matrixMult(@m1, @m2) ->
767.69/212.91	         matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
767.69/212.91	       , #abs(#neg(@x)) -> #pos(@x)
767.69/212.91	       , #abs(#pos(@x)) -> #pos(@x)
767.69/212.91	       , #abs(#0()) -> #0()
767.69/212.91	       , #abs(#s(@x)) -> #pos(#s(@x))
767.69/212.91	       , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
767.69/212.91	       , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
767.69/212.91	       , #pred(#pos(#s(#0()))) -> #0()
767.69/212.91	       , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
767.69/212.91	       , #pred(#0()) -> #neg(#s(#0())) }
767.69/212.91	     Obligation:
767.69/212.91	       innermost runtime complexity
767.69/212.91	     Answer:
767.69/212.91	       YES(O(1),O(1))
767.69/212.91	     
767.69/212.91	     The following weak DPs constitute a sub-graph of the DG that is
767.69/212.92	     closed under successors. The DPs are removed.
767.69/212.92	     
767.69/212.92	     { matrixMultList^#(@acc, @mm) -> c_2(matrixMultList#1^#(@mm, @acc))
767.69/212.92	     , matrixMultList#1^#(::(@m, @ms), @acc) ->
767.69/212.92	       c_1(matrixMultList^#(matrixMult(@acc, @m), @ms)) }
767.69/212.92	     
767.69/212.92	     We are left with following problem, upon which TcT provides the
767.69/212.92	     certificate YES(O(1),O(1)).
767.69/212.92	     
767.69/212.92	     Weak Trs:
767.69/212.92	       { attach(@line, @m) -> attach#1(@line, @m)
767.69/212.92	       , #add(#neg(#s(#0())), @y) -> #pred(@y)
767.69/212.92	       , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
767.69/212.92	       , #add(#pos(#s(#0())), @y) -> #succ(@y)
767.69/212.92	       , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
767.69/212.92	       , #add(#0(), @y) -> @y
767.69/212.92	       , mult#2(nil(), @x, @xs) -> #abs(#0())
767.69/212.92	       , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
767.69/212.92	       , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
767.69/212.92	       , transAcc(@m, @base) -> transAcc#1(@m, @base)
767.69/212.92	       , mult(@l1, @l2) -> mult#1(@l1, @l2)
767.69/212.92	       , +(@x, @y) -> #add(@x, @y)
767.69/212.92	       , transAcc#1(nil(), @base) -> @base
767.69/212.92	       , transAcc#1(::(@l, @m'), @base) ->
767.69/212.92	         attach(@l, transAcc(@m', @base))
767.69/212.92	       , *(@x, @y) -> #mult(@x, @y)
767.69/212.92	       , mkBase#1(nil()) -> nil()
767.69/212.92	       , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.69/212.92	       , attach#1(nil(), @m) -> nil()
767.69/212.92	       , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.69/212.92	       , matrixMult'#1(nil(), @m2) -> nil()
767.69/212.92	       , matrixMult'#1(::(@l, @ls), @m2) ->
767.69/212.92	         ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
767.69/212.92	       , #natmult(#0(), @y) -> #0()
767.69/212.92	       , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
767.69/212.92	       , mkBase(@m) -> mkBase#1(@m)
767.69/212.92	       , makeBase(@m) -> makeBase#1(@m)
767.69/212.92	       , mult#1(nil(), @l2) -> #abs(#0())
767.69/212.92	       , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
767.69/212.92	       , lineMult#1(nil(), @l) -> nil()
767.69/212.92	       , lineMult#1(::(@x, @xs), @l) ->
767.69/212.92	         ::(mult(@l, @x), lineMult(@l, @xs))
767.69/212.92	       , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
767.69/212.92	       , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
767.69/212.92	       , #mult(#neg(@x), #0()) -> #0()
767.69/212.92	       , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
767.69/212.92	       , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
767.69/212.92	       , #mult(#pos(@x), #0()) -> #0()
767.69/212.92	       , #mult(#0(), #neg(@y)) -> #0()
767.69/212.92	       , #mult(#0(), #pos(@y)) -> #0()
767.69/212.92	       , #mult(#0(), #0()) -> #0()
767.69/212.92	       , attach#2(nil(), @x, @xs) -> nil()
767.69/212.92	       , attach#2(::(@l, @ls), @x, @xs) ->
767.69/212.92	         ::(::(@x, @l), attach(@xs, @ls))
767.69/212.92	       , #succ(#neg(#s(#0()))) -> #0()
767.69/212.92	       , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
767.69/212.92	       , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
767.69/212.92	       , #succ(#0()) -> #pos(#s(#0()))
767.69/212.92	       , makeBase#1(nil()) -> nil()
767.69/212.92	       , makeBase#1(::(@l, @m')) -> mkBase(@l)
767.69/212.92	       , matrixMult(@m1, @m2) ->
767.69/212.92	         matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
767.69/212.92	       , #abs(#neg(@x)) -> #pos(@x)
767.69/212.92	       , #abs(#pos(@x)) -> #pos(@x)
767.69/212.92	       , #abs(#0()) -> #0()
767.69/212.92	       , #abs(#s(@x)) -> #pos(#s(@x))
767.69/212.92	       , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
767.69/212.92	       , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
767.69/212.92	       , #pred(#pos(#s(#0()))) -> #0()
767.69/212.92	       , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
767.69/212.92	       , #pred(#0()) -> #neg(#s(#0())) }
767.69/212.92	     Obligation:
767.69/212.92	       innermost runtime complexity
767.69/212.92	     Answer:
767.69/212.92	       YES(O(1),O(1))
767.69/212.92	     
767.69/212.92	     No rule is usable, rules are removed from the input problem.
767.69/212.92	     
767.69/212.92	     We are left with following problem, upon which TcT provides the
767.69/212.92	     certificate YES(O(1),O(1)).
767.69/212.92	     
767.69/212.92	     Rules: Empty
767.69/212.92	     Obligation:
767.69/212.92	       innermost runtime complexity
767.69/212.92	     Answer:
767.69/212.92	       YES(O(1),O(1))
767.69/212.92	     
767.69/212.92	     Empty rules are trivially bounded
767.69/212.92	   
767.69/212.92	   We return to the main proof.
767.69/212.92	   
767.69/212.92	   We are left with following problem, upon which TcT provides the
767.69/212.92	   certificate YES(O(1),O(n^2)).
767.69/212.92	   
767.69/212.92	   Strict DPs:
767.69/212.92	     { matrixMult^#(@m1, @m2) ->
767.69/212.92	       c_2(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))))
767.69/212.92	     , mult#2^#(::(@y, @ys), @x, @xs) -> c_3(mult^#(@xs, @ys))
767.69/212.92	     , mult^#(@l1, @l2) -> c_4(mult#1^#(@l1, @l2))
767.69/212.92	     , matrixMult'^#(@m1, @m2) -> c_5(matrixMult'#1^#(@m1, @m2))
767.69/212.92	     , matrixMult'#1^#(::(@l, @ls), @m2) ->
767.69/212.92	       c_6(lineMult^#(@l, @m2), matrixMult'^#(@ls, @m2))
767.69/212.92	     , mult#1^#(::(@x, @xs), @l2) -> c_7(mult#2^#(@l2, @x, @xs))
767.69/212.92	     , lineMult^#(@l, @m2) -> c_8(lineMult#1^#(@m2, @l))
767.69/212.92	     , lineMult#1^#(::(@x, @xs), @l) ->
767.69/212.92	       c_9(mult^#(@l, @x), lineMult^#(@l, @xs)) }
767.69/212.92	   Weak DPs:
767.69/212.92	     { matrixMultList^#(@acc, @mm) -> matrixMultList#1^#(@mm, @acc)
767.69/212.92	     , matrixMultList#1^#(::(@m, @ms), @acc) ->
767.69/212.92	       matrixMultList^#(matrixMult(@acc, @m), @ms)
767.69/212.92	     , matrixMultList#1^#(::(@m, @ms), @acc) -> matrixMult^#(@acc, @m)
767.69/212.92	     , matrixMult3^#(@m1, @m2, @m3) -> matrixMult^#(@m1, @m2)
767.69/212.92	     , matrixMult3^#(@m1, @m2, @m3) ->
767.69/212.92	       matrixMult^#(matrixMult(@m1, @m2), @m3)
767.69/212.92	     , matrixMultOld^#(@m1, @m2) -> matrixMult'^#(@m1, transpose(@m2)) }
767.69/212.92	   Weak Trs:
767.69/212.92	     { attach(@line, @m) -> attach#1(@line, @m)
767.69/212.92	     , split(@m) -> split#1(@m)
767.69/212.92	     , #add(#neg(#s(#0())), @y) -> #pred(@y)
767.69/212.92	     , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
767.69/212.92	     , #add(#pos(#s(#0())), @y) -> #succ(@y)
767.69/212.92	     , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
767.69/212.92	     , #add(#0(), @y) -> @y
767.69/212.92	     , mult#2(nil(), @x, @xs) -> #abs(#0())
767.69/212.92	     , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
767.69/212.92	     , split#1(nil()) -> tuple#2(nil(), nil())
767.69/212.92	     , split#1(::(@l, @ls)) -> split#2(@l, @ls)
767.69/212.92	     , transpose(@m) -> transpose#1(@m, @m)
767.69/212.92	     , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
767.69/212.92	     , transAcc(@m, @base) -> transAcc#1(@m, @base)
767.69/212.92	     , mult(@l1, @l2) -> mult#1(@l1, @l2)
767.69/212.92	     , +(@x, @y) -> #add(@x, @y)
767.69/212.92	     , transAcc#1(nil(), @base) -> @base
767.69/212.92	     , transAcc#1(::(@l, @m'), @base) ->
767.69/212.92	       attach(@l, transAcc(@m', @base))
767.69/212.92	     , *(@x, @y) -> #mult(@x, @y)
767.69/212.92	     , mkBase#1(nil()) -> nil()
767.69/212.92	     , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.69/212.92	     , transpose#3(nil(), @l) -> nil()
767.69/212.92	     , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
767.69/212.92	     , attach#1(nil(), @m) -> nil()
767.69/212.92	     , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.69/212.92	     , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
767.69/212.92	     , matrixMult'#1(nil(), @m2) -> nil()
767.69/212.92	     , matrixMult'#1(::(@l, @ls), @m2) ->
767.69/212.92	       ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
767.69/212.92	     , #natmult(#0(), @y) -> #0()
767.69/212.92	     , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
767.69/212.92	     , split#2(nil(), @ls) -> tuple#2(nil(), nil())
767.69/212.92	     , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
767.69/212.92	     , mkBase(@m) -> mkBase#1(@m)
767.69/212.92	     , makeBase(@m) -> makeBase#1(@m)
767.69/212.92	     , mult#1(nil(), @l2) -> #abs(#0())
767.69/212.92	     , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
767.69/212.92	     , lineMult#1(nil(), @l) -> nil()
767.69/212.92	     , lineMult#1(::(@x, @xs), @l) ->
767.69/212.92	       ::(mult(@l, @x), lineMult(@l, @xs))
767.69/212.92	     , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
767.69/212.92	     , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
767.69/212.92	     , #mult(#neg(@x), #0()) -> #0()
767.69/212.92	     , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
767.69/212.92	     , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
767.69/212.92	     , #mult(#pos(@x), #0()) -> #0()
767.69/212.92	     , #mult(#0(), #neg(@y)) -> #0()
767.69/212.97	     , #mult(#0(), #pos(@y)) -> #0()
767.69/212.97	     , #mult(#0(), #0()) -> #0()
767.69/212.97	     , attach#2(nil(), @x, @xs) -> nil()
767.69/212.97	     , attach#2(::(@l, @ls), @x, @xs) ->
767.69/212.97	       ::(::(@x, @l), attach(@xs, @ls))
767.69/212.97	     , #succ(#neg(#s(#0()))) -> #0()
767.69/212.97	     , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
767.69/212.97	     , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
767.69/212.97	     , #succ(#0()) -> #pos(#s(#0()))
767.69/212.97	     , makeBase#1(nil()) -> nil()
767.69/212.97	     , makeBase#1(::(@l, @m')) -> mkBase(@l)
767.69/212.97	     , matrixMult(@m1, @m2) ->
767.69/212.97	       matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
767.69/212.97	     , #abs(#neg(@x)) -> #pos(@x)
767.69/212.97	     , #abs(#pos(@x)) -> #pos(@x)
767.69/212.97	     , #abs(#0()) -> #0()
767.69/212.97	     , #abs(#s(@x)) -> #pos(#s(@x))
767.69/212.97	     , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
767.69/212.97	     , transpose#1(nil(), @m) -> nil()
767.69/212.97	     , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
767.69/212.97	     , split#3(tuple#2(@ys, @m'), @x, @xs) ->
767.69/212.97	       tuple#2(::(@x, @ys), ::(@xs, @m'))
767.69/212.97	     , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
767.69/212.97	     , #pred(#pos(#s(#0()))) -> #0()
767.69/212.97	     , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
767.69/212.97	     , #pred(#0()) -> #neg(#s(#0())) }
767.69/212.97	   Obligation:
767.69/212.97	     innermost runtime complexity
767.69/212.97	   Answer:
767.69/212.97	     YES(O(1),O(n^2))
767.69/212.97	   
767.69/212.97	   We decompose the input problem according to the dependency graph
767.69/212.97	   into the upper component
767.69/212.97	   
767.69/212.97	     { matrixMultList^#(@acc, @mm) -> matrixMultList#1^#(@mm, @acc)
767.69/212.97	     , matrixMultList#1^#(::(@m, @ms), @acc) ->
767.69/212.97	       matrixMultList^#(matrixMult(@acc, @m), @ms)
767.69/212.97	     , matrixMultList#1^#(::(@m, @ms), @acc) -> matrixMult^#(@acc, @m)
767.69/212.97	     , matrixMult3^#(@m1, @m2, @m3) -> matrixMult^#(@m1, @m2)
767.69/212.97	     , matrixMult3^#(@m1, @m2, @m3) ->
767.69/212.97	       matrixMult^#(matrixMult(@m1, @m2), @m3)
767.69/212.97	     , matrixMult^#(@m1, @m2) ->
767.69/212.97	       c_2(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))))
767.69/212.97	     , matrixMult'^#(@m1, @m2) -> c_5(matrixMult'#1^#(@m1, @m2))
767.69/212.97	     , matrixMult'#1^#(::(@l, @ls), @m2) ->
767.69/212.97	       c_6(lineMult^#(@l, @m2), matrixMult'^#(@ls, @m2))
767.69/212.97	     , matrixMultOld^#(@m1, @m2) -> matrixMult'^#(@m1, transpose(@m2)) }
767.69/212.97	   
767.69/212.97	   and lower component
767.69/212.97	   
767.69/212.97	     { mult#2^#(::(@y, @ys), @x, @xs) -> c_3(mult^#(@xs, @ys))
767.69/212.97	     , mult^#(@l1, @l2) -> c_4(mult#1^#(@l1, @l2))
767.69/212.97	     , mult#1^#(::(@x, @xs), @l2) -> c_7(mult#2^#(@l2, @x, @xs))
767.69/212.97	     , lineMult^#(@l, @m2) -> c_8(lineMult#1^#(@m2, @l))
767.69/212.97	     , lineMult#1^#(::(@x, @xs), @l) ->
767.69/212.97	       c_9(mult^#(@l, @x), lineMult^#(@l, @xs)) }
767.69/212.97	   
767.69/212.97	   Further, following extension rules are added to the lower
767.69/212.97	   component.
767.69/212.97	   
767.69/212.97	   { matrixMultList^#(@acc, @mm) -> matrixMultList#1^#(@mm, @acc)
767.69/212.97	   , matrixMultList#1^#(::(@m, @ms), @acc) ->
767.69/212.97	     matrixMultList^#(matrixMult(@acc, @m), @ms)
767.69/212.97	   , matrixMultList#1^#(::(@m, @ms), @acc) -> matrixMult^#(@acc, @m)
767.69/212.97	   , matrixMult3^#(@m1, @m2, @m3) -> matrixMult^#(@m1, @m2)
767.69/212.97	   , matrixMult3^#(@m1, @m2, @m3) ->
767.69/212.97	     matrixMult^#(matrixMult(@m1, @m2), @m3)
767.69/212.97	   , matrixMult^#(@m1, @m2) ->
767.69/212.97	     matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2)))
767.69/212.97	   , matrixMult'^#(@m1, @m2) -> matrixMult'#1^#(@m1, @m2)
767.69/212.97	   , matrixMult'#1^#(::(@l, @ls), @m2) -> matrixMult'^#(@ls, @m2)
767.69/212.97	   , matrixMult'#1^#(::(@l, @ls), @m2) -> lineMult^#(@l, @m2)
767.69/212.97	   , matrixMultOld^#(@m1, @m2) -> matrixMult'^#(@m1, transpose(@m2)) }
767.69/212.97	   
767.69/212.97	   TcT solves the upper component with certificate YES(O(1),O(n^1)).
767.69/212.97	   
767.69/212.97	   Sub-proof:
767.69/212.97	   ----------
767.69/212.97	     We are left with following problem, upon which TcT provides the
767.69/212.97	     certificate YES(O(1),O(n^1)).
767.69/212.97	     
767.69/212.97	     Strict DPs:
767.69/212.97	       { matrixMult^#(@m1, @m2) ->
767.69/212.97	         c_2(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))))
767.69/212.97	       , matrixMult'^#(@m1, @m2) -> c_5(matrixMult'#1^#(@m1, @m2))
767.69/212.97	       , matrixMult'#1^#(::(@l, @ls), @m2) ->
767.69/212.97	         c_6(lineMult^#(@l, @m2), matrixMult'^#(@ls, @m2)) }
767.69/212.97	     Weak DPs:
767.69/212.97	       { matrixMultList^#(@acc, @mm) -> matrixMultList#1^#(@mm, @acc)
767.69/212.97	       , matrixMultList#1^#(::(@m, @ms), @acc) ->
767.69/212.97	         matrixMultList^#(matrixMult(@acc, @m), @ms)
767.69/212.97	       , matrixMultList#1^#(::(@m, @ms), @acc) -> matrixMult^#(@acc, @m)
767.69/212.97	       , matrixMult3^#(@m1, @m2, @m3) -> matrixMult^#(@m1, @m2)
767.69/212.97	       , matrixMult3^#(@m1, @m2, @m3) ->
767.69/212.97	         matrixMult^#(matrixMult(@m1, @m2), @m3)
767.69/212.97	       , matrixMultOld^#(@m1, @m2) -> matrixMult'^#(@m1, transpose(@m2)) }
767.69/212.97	     Weak Trs:
767.69/212.97	       { attach(@line, @m) -> attach#1(@line, @m)
767.69/212.97	       , split(@m) -> split#1(@m)
767.69/212.97	       , #add(#neg(#s(#0())), @y) -> #pred(@y)
767.69/212.97	       , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
767.69/212.97	       , #add(#pos(#s(#0())), @y) -> #succ(@y)
767.69/212.97	       , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
767.69/212.97	       , #add(#0(), @y) -> @y
767.69/212.97	       , mult#2(nil(), @x, @xs) -> #abs(#0())
767.69/212.97	       , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
767.69/212.97	       , split#1(nil()) -> tuple#2(nil(), nil())
767.69/212.97	       , split#1(::(@l, @ls)) -> split#2(@l, @ls)
767.69/212.97	       , transpose(@m) -> transpose#1(@m, @m)
767.69/212.97	       , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
767.69/212.97	       , transAcc(@m, @base) -> transAcc#1(@m, @base)
767.69/212.97	       , mult(@l1, @l2) -> mult#1(@l1, @l2)
767.69/212.97	       , +(@x, @y) -> #add(@x, @y)
767.69/212.97	       , transAcc#1(nil(), @base) -> @base
767.69/212.97	       , transAcc#1(::(@l, @m'), @base) ->
767.69/212.97	         attach(@l, transAcc(@m', @base))
767.69/212.97	       , *(@x, @y) -> #mult(@x, @y)
767.69/212.97	       , mkBase#1(nil()) -> nil()
767.69/212.97	       , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.69/212.97	       , transpose#3(nil(), @l) -> nil()
767.69/212.97	       , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
767.69/212.97	       , attach#1(nil(), @m) -> nil()
767.69/212.97	       , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.69/212.97	       , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
767.69/212.97	       , matrixMult'#1(nil(), @m2) -> nil()
767.69/212.97	       , matrixMult'#1(::(@l, @ls), @m2) ->
767.69/212.97	         ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
767.69/212.97	       , #natmult(#0(), @y) -> #0()
767.69/212.97	       , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
767.69/212.97	       , split#2(nil(), @ls) -> tuple#2(nil(), nil())
767.69/212.97	       , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
767.69/212.97	       , mkBase(@m) -> mkBase#1(@m)
767.69/212.97	       , makeBase(@m) -> makeBase#1(@m)
767.69/212.97	       , mult#1(nil(), @l2) -> #abs(#0())
767.69/212.97	       , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
767.69/212.97	       , lineMult#1(nil(), @l) -> nil()
767.69/212.97	       , lineMult#1(::(@x, @xs), @l) ->
767.69/212.97	         ::(mult(@l, @x), lineMult(@l, @xs))
767.69/212.97	       , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
767.69/212.97	       , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
767.69/212.97	       , #mult(#neg(@x), #0()) -> #0()
767.69/212.97	       , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
767.69/212.97	       , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
767.69/212.97	       , #mult(#pos(@x), #0()) -> #0()
767.69/212.97	       , #mult(#0(), #neg(@y)) -> #0()
767.69/212.97	       , #mult(#0(), #pos(@y)) -> #0()
767.69/212.97	       , #mult(#0(), #0()) -> #0()
767.69/212.97	       , attach#2(nil(), @x, @xs) -> nil()
767.69/212.97	       , attach#2(::(@l, @ls), @x, @xs) ->
767.69/212.97	         ::(::(@x, @l), attach(@xs, @ls))
767.69/212.97	       , #succ(#neg(#s(#0()))) -> #0()
767.69/212.97	       , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
767.69/212.97	       , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
767.69/212.97	       , #succ(#0()) -> #pos(#s(#0()))
767.69/212.97	       , makeBase#1(nil()) -> nil()
767.69/212.97	       , makeBase#1(::(@l, @m')) -> mkBase(@l)
767.69/212.97	       , matrixMult(@m1, @m2) ->
767.69/212.97	         matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
767.69/212.97	       , #abs(#neg(@x)) -> #pos(@x)
767.69/212.97	       , #abs(#pos(@x)) -> #pos(@x)
767.69/212.97	       , #abs(#0()) -> #0()
767.69/212.97	       , #abs(#s(@x)) -> #pos(#s(@x))
767.69/212.97	       , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
767.69/212.97	       , transpose#1(nil(), @m) -> nil()
767.69/212.97	       , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
767.69/212.97	       , split#3(tuple#2(@ys, @m'), @x, @xs) ->
767.69/212.97	         tuple#2(::(@x, @ys), ::(@xs, @m'))
767.69/212.97	       , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
767.69/212.97	       , #pred(#pos(#s(#0()))) -> #0()
767.69/212.97	       , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
767.69/212.97	       , #pred(#0()) -> #neg(#s(#0())) }
767.69/212.97	     Obligation:
767.69/212.97	       innermost runtime complexity
767.69/212.97	     Answer:
767.69/212.97	       YES(O(1),O(n^1))
767.69/212.97	     
767.69/212.97	     We use the processor 'matrix interpretation of dimension 1' to
767.69/212.97	     orient following rules strictly.
767.69/212.97	     
767.69/212.97	     DPs:
767.69/212.97	       { 3: matrixMult'#1^#(::(@l, @ls), @m2) ->
767.69/212.97	            c_6(lineMult^#(@l, @m2), matrixMult'^#(@ls, @m2))
767.69/212.97	       , 5: matrixMultList#1^#(::(@m, @ms), @acc) ->
767.69/212.97	            matrixMultList^#(matrixMult(@acc, @m), @ms)
767.69/212.97	       , 6: matrixMultList#1^#(::(@m, @ms), @acc) ->
767.69/212.97	            matrixMult^#(@acc, @m)
767.69/212.97	       , 7: matrixMult3^#(@m1, @m2, @m3) -> matrixMult^#(@m1, @m2)
767.69/212.97	       , 8: matrixMult3^#(@m1, @m2, @m3) ->
767.69/212.97	            matrixMult^#(matrixMult(@m1, @m2), @m3)
767.69/212.97	       , 9: matrixMultOld^#(@m1, @m2) ->
767.69/212.97	            matrixMult'^#(@m1, transpose(@m2)) }
767.69/212.97	     
767.69/212.97	     Sub-proof:
767.69/212.97	     ----------
767.69/212.97	       The following argument positions are usable:
767.69/212.97	         Uargs(c_2) = {1}, Uargs(c_5) = {1}, Uargs(c_6) = {2}
767.69/212.97	       
767.69/212.97	       TcT has computed the following constructor-based matrix
767.69/212.97	       interpretation satisfying not(EDA).
767.69/212.97	       
767.69/212.97	                     [attach](x1, x2) = [3] x1 + [0]                  
767.69/212.97	                                                                      
767.69/212.97	                          [split](x1) = [0]                           
767.69/212.97	                                                                      
767.69/212.97	                       [#add](x1, x2) = [0]                           
767.69/212.97	                                                                      
767.69/212.97	                 [mult#2](x1, x2, x3) = [4] x2 + [7] x3 + [0]         
767.69/212.97	                                                                      
767.69/212.97	                                [nil] = [0]                           
767.69/212.97	                                                                      
767.69/212.97	                        [split#1](x1) = [0]                           
767.69/212.97	                                                                      
767.69/212.97	                      [transpose](x1) = [0]                           
767.69/212.97	                                                                      
767.69/212.97	                [matrixMult'](x1, x2) = [1] x1 + [0]                  
767.69/212.97	                                                                      
767.69/212.97	                   [transAcc](x1, x2) = [0]                           
767.69/212.97	                                                                      
767.69/212.97	                       [mult](x1, x2) = [0]                           
767.69/212.97	                                                                      
767.69/212.97	                          [+](x1, x2) = [0]                           
767.69/212.97	                                                                      
767.69/212.97	                 [transAcc#1](x1, x2) = [4] x2 + [0]                  
767.69/212.97	                                                                      
767.69/212.97	                           [#neg](x1) = [0]                           
767.69/212.97	                                                                      
767.69/212.97	                          [*](x1, x2) = [0]                           
767.69/212.97	                                                                      
767.69/212.97	                       [mkBase#1](x1) = [0]                           
767.69/212.97	                                                                      
767.69/212.97	                [transpose#3](x1, x2) = [4] x2 + [0]                  
767.69/212.97	                                                                      
767.69/212.97	                   [attach#1](x1, x2) = [4] x2 + [0]                  
767.69/212.97	                                                                      
767.69/212.97	                    [transpose#2](x1) = [0]                           
767.69/212.97	                                                                      
767.69/212.97	              [matrixMult'#1](x1, x2) = [1] x1 + [0]                  
767.69/212.97	                                                                      
767.69/212.97	                   [#natmult](x1, x2) = [0]                           
767.69/212.97	                                                                      
767.69/212.97	                    [split#2](x1, x2) = [7] x2 + [0]                  
767.69/212.97	                                                                      
767.69/212.97	                           [#pos](x1) = [0]                           
767.69/212.97	                                                                      
767.69/212.97	                    [tuple#2](x1, x2) = [0]                           
767.69/212.97	                                                                      
767.69/212.97	                         [mkBase](x1) = [2] x1 + [0]                  
767.69/212.97	                                                                      
767.69/212.97	                       [makeBase](x1) = [0]                           
767.69/212.97	                                                                      
767.69/212.97	                     [mult#1](x1, x2) = [4] x2 + [0]                  
767.69/212.97	                                                                      
767.69/212.97	                         [::](x1, x2) = [1] x2 + [1]                  
767.69/212.97	                                                                      
767.69/212.97	                 [lineMult#1](x1, x2) = [4] x2 + [0]                  
767.69/212.97	                                                                      
767.69/212.97	                      [#mult](x1, x2) = [0]                           
767.69/212.97	                                                                      
767.69/212.97	               [attach#2](x1, x2, x3) = [7] x3 + [0]                  
767.69/212.97	                                                                      
767.69/212.97	                          [#succ](x1) = [0]                           
767.69/212.97	                                                                      
767.69/212.97	                                 [#0] = [0]                           
767.69/212.97	                                                                      
767.69/212.97	                     [makeBase#1](x1) = [0]                           
767.69/212.97	                                                                      
767.69/212.97	                 [matrixMult](x1, x2) = [1] x1 + [0]                  
767.69/212.97	                                                                      
767.69/212.97	                           [#abs](x1) = [0]                           
767.69/212.97	                                                                      
767.69/212.97	                   [lineMult](x1, x2) = [1] x2 + [0]                  
767.69/212.97	                                                                      
767.69/212.97	                [transpose#1](x1, x2) = [0]                           
767.69/212.97	                                                                      
767.69/212.97	                [split#3](x1, x2, x3) = [0]                           
767.69/212.97	                                                                      
767.69/212.97	                          [#pred](x1) = [0]                           
767.69/212.97	                                                                      
767.69/212.97	                             [#s](x1) = [0]                           
767.69/212.97	                                                                      
767.69/212.97	           [matrixMultList^#](x1, x2) = [4] x1 + [4] x2 + [0]         
767.69/212.97	                                                                      
767.69/212.97	         [matrixMultList#1^#](x1, x2) = [4] x1 + [4] x2 + [0]         
767.69/212.97	                                                                      
767.69/212.97	          [matrixMult3^#](x1, x2, x3) = [7] x1 + [7] x2 + [7] x3 + [7]
767.69/212.97	                                                                      
767.69/212.97	               [matrixMult^#](x1, x2) = [4] x1 + [0]                  
767.69/212.97	                                                                      
767.69/212.97	              [matrixMult'^#](x1, x2) = [2] x1 + [0]                  
767.69/212.97	                                                                      
767.69/212.97	            [matrixMult'#1^#](x1, x2) = [2] x1 + [0]                  
767.69/212.97	                                                                      
767.69/212.97	                 [lineMult^#](x1, x2) = [7] x1 + [7] x2 + [7]         
767.69/212.97	                                                                      
767.69/212.97	            [matrixMultOld^#](x1, x2) = [7] x1 + [7] x2 + [7]         
767.69/212.97	                                                                      
767.69/212.97	                            [c_2](x1) = [2] x1 + [0]                  
767.69/212.97	                                                                      
767.69/212.97	                            [c_5](x1) = [1] x1 + [0]                  
767.69/212.97	                                                                      
767.69/212.97	                        [c_6](x1, x2) = [1] x2 + [1]                  
767.69/212.97	       
767.69/212.97	       The order satisfies the following ordering constraints:
767.69/212.97	       
767.69/212.97	                             [attach(@line, @m)] =  [3] @line + [0]                                        
767.69/212.97	                                                 ?  [4] @m + [0]                                           
767.69/212.97	                                                 =  [attach#1(@line, @m)]                                  
767.69/212.97	                                                                                                           
767.69/212.97	                                     [split(@m)] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [split#1(@m)]                                          
767.69/212.97	                                                                                                           
767.69/212.97	                      [#add(#neg(#s(#0())), @y)] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#pred(@y)]                                            
767.69/212.97	                                                                                                           
767.69/212.97	                    [#add(#neg(#s(#s(@x))), @y)] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#pred(#add(#pos(#s(@x)), @y))]                        
767.69/212.97	                                                                                                           
767.69/212.97	                      [#add(#pos(#s(#0())), @y)] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#succ(@y)]                                            
767.69/212.97	                                                                                                           
767.69/212.97	                    [#add(#pos(#s(#s(@x))), @y)] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#succ(#add(#pos(#s(@x)), @y))]                        
767.69/212.97	                                                                                                           
767.69/212.97	                                [#add(#0(), @y)] =  [0]                                                    
767.69/212.97	                                                 ?  [1] @y + [0]                                           
767.69/212.97	                                                 =  [@y]                                                   
767.69/212.97	                                                                                                           
767.69/212.97	                        [mult#2(nil(), @x, @xs)] =  [4] @x + [7] @xs + [0]                                 
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#abs(#0())]                                           
767.69/212.97	                                                                                                           
767.69/212.97	                  [mult#2(::(@y, @ys), @x, @xs)] =  [4] @x + [7] @xs + [0]                                 
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [+(*(@x, @y), mult(@xs, @ys))]                         
767.69/212.97	                                                                                                           
767.69/212.97	                                [split#1(nil())] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [tuple#2(nil(), nil())]                                
767.69/212.97	                                                                                                           
767.69/212.97	                          [split#1(::(@l, @ls))] =  [0]                                                    
767.69/212.97	                                                 ?  [7] @ls + [0]                                          
767.69/212.97	                                                 =  [split#2(@l, @ls)]                                     
767.69/212.97	                                                                                                           
767.69/212.97	                                 [transpose(@m)] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [transpose#1(@m, @m)]                                  
767.69/212.97	                                                                                                           
767.69/212.97	                         [matrixMult'(@m1, @m2)] =  [1] @m1 + [0]                                          
767.69/212.97	                                                 >= [1] @m1 + [0]                                          
767.69/212.97	                                                 =  [matrixMult'#1(@m1, @m2)]                              
767.69/212.97	                                                                                                           
767.69/212.97	                           [transAcc(@m, @base)] =  [0]                                                    
767.69/212.97	                                                 ?  [4] @base + [0]                                        
767.69/212.97	                                                 =  [transAcc#1(@m, @base)]                                
767.69/212.97	                                                                                                           
767.69/212.97	                                [mult(@l1, @l2)] =  [0]                                                    
767.69/212.97	                                                 ?  [4] @l2 + [0]                                          
767.69/212.97	                                                 =  [mult#1(@l1, @l2)]                                     
767.69/212.97	                                                                                                           
767.69/212.97	                                     [+(@x, @y)] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#add(@x, @y)]                                         
767.69/212.97	                                                                                                           
767.69/212.97	                      [transAcc#1(nil(), @base)] =  [4] @base + [0]                                        
767.69/212.97	                                                 >= [1] @base + [0]                                        
767.69/212.97	                                                 =  [@base]                                                
767.69/212.97	                                                                                                           
767.69/212.97	                [transAcc#1(::(@l, @m'), @base)] =  [4] @base + [0]                                        
767.69/212.97	                                                 ?  [3] @l + [0]                                           
767.69/212.97	                                                 =  [attach(@l, transAcc(@m', @base))]                     
767.69/212.97	                                                                                                           
767.69/212.97	                                     [*(@x, @y)] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#mult(@x, @y)]                                        
767.69/212.97	                                                                                                           
767.69/212.97	                               [mkBase#1(nil())] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [nil()]                                                
767.69/212.97	                                                                                                           
767.69/212.97	                         [mkBase#1(::(@l, @m'))] =  [0]                                                    
767.69/212.97	                                                 ?  [2] @m' + [1]                                          
767.69/212.97	                                                 =  [::(nil(), mkBase(@m'))]                               
767.69/212.97	                                                                                                           
767.69/212.97	                        [transpose#3(nil(), @l)] =  [4] @l + [0]                                           
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [nil()]                                                
767.69/212.97	                                                                                                           
767.69/212.97	                  [transpose#3(::(@y, @ys), @l)] =  [4] @l + [0]                                           
767.69/212.97	                                                 ?  [1]                                                    
767.69/212.97	                                                 =  [::(@l, transpose(::(@y, @ys)))]                       
767.69/212.97	                                                                                                           
767.69/212.97	                           [attach#1(nil(), @m)] =  [4] @m + [0]                                           
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [nil()]                                                
767.69/212.97	                                                                                                           
767.69/212.97	                     [attach#1(::(@x, @xs), @m)] =  [4] @m + [0]                                           
767.69/212.97	                                                 ?  [7] @xs + [0]                                          
767.69/212.97	                                                 =  [attach#2(@m, @x, @xs)]                                
767.69/212.97	                                                                                                           
767.69/212.97	                 [transpose#2(tuple#2(@l, @m'))] =  [0]                                                    
767.69/212.97	                                                 ?  [4] @l + [0]                                           
767.69/212.97	                                                 =  [transpose#3(@m', @l)]                                 
767.69/212.97	                                                                                                           
767.69/212.97	                     [matrixMult'#1(nil(), @m2)] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [nil()]                                                
767.69/212.97	                                                                                                           
767.69/212.97	               [matrixMult'#1(::(@l, @ls), @m2)] =  [1] @ls + [1]                                          
767.69/212.97	                                                 >= [1] @ls + [1]                                          
767.69/212.97	                                                 =  [::(lineMult(@l, @m2), matrixMult'(@ls, @m2))]         
767.69/212.97	                                                                                                           
767.69/212.97	                            [#natmult(#0(), @y)] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#0()]                                                 
767.69/212.97	                                                                                                           
767.69/212.97	                          [#natmult(#s(@x), @y)] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#add(#pos(@y), #natmult(@x, @y))]                     
767.69/212.97	                                                                                                           
767.69/212.97	                           [split#2(nil(), @ls)] =  [7] @ls + [0]                                          
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [tuple#2(nil(), nil())]                                
767.69/212.97	                                                                                                           
767.69/212.97	                     [split#2(::(@x, @xs), @ls)] =  [7] @ls + [0]                                          
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [split#3(split(@ls), @x, @xs)]                         
767.69/212.97	                                                                                                           
767.69/212.97	                                    [mkBase(@m)] =  [2] @m + [0]                                           
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [mkBase#1(@m)]                                         
767.69/212.97	                                                                                                           
767.69/212.97	                                  [makeBase(@m)] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [makeBase#1(@m)]                                       
767.69/212.97	                                                                                                           
767.69/212.97	                            [mult#1(nil(), @l2)] =  [4] @l2 + [0]                                          
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#abs(#0())]                                           
767.69/212.97	                                                                                                           
767.69/212.97	                      [mult#1(::(@x, @xs), @l2)] =  [4] @l2 + [0]                                          
767.69/212.97	                                                 ?  [4] @x + [7] @xs + [0]                                 
767.69/212.97	                                                 =  [mult#2(@l2, @x, @xs)]                                 
767.69/212.97	                                                                                                           
767.69/212.97	                         [lineMult#1(nil(), @l)] =  [4] @l + [0]                                           
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [nil()]                                                
767.69/212.97	                                                                                                           
767.69/212.97	                   [lineMult#1(::(@x, @xs), @l)] =  [4] @l + [0]                                           
767.69/212.97	                                                 ?  [1] @xs + [1]                                          
767.69/212.97	                                                 =  [::(mult(@l, @x), lineMult(@l, @xs))]                  
767.69/212.97	                                                                                                           
767.69/212.97	                     [#mult(#neg(@x), #neg(@y))] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#pos(#natmult(@x, @y))]                               
767.69/212.97	                                                                                                           
767.69/212.97	                     [#mult(#neg(@x), #pos(@y))] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#neg(#natmult(@x, @y))]                               
767.69/212.97	                                                                                                           
767.69/212.97	                         [#mult(#neg(@x), #0())] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#0()]                                                 
767.69/212.97	                                                                                                           
767.69/212.97	                     [#mult(#pos(@x), #neg(@y))] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#neg(#natmult(@x, @y))]                               
767.69/212.97	                                                                                                           
767.69/212.97	                     [#mult(#pos(@x), #pos(@y))] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#pos(#natmult(@x, @y))]                               
767.69/212.97	                                                                                                           
767.69/212.97	                         [#mult(#pos(@x), #0())] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#0()]                                                 
767.69/212.97	                                                                                                           
767.69/212.97	                         [#mult(#0(), #neg(@y))] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#0()]                                                 
767.69/212.97	                                                                                                           
767.69/212.97	                         [#mult(#0(), #pos(@y))] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#0()]                                                 
767.69/212.97	                                                                                                           
767.69/212.97	                             [#mult(#0(), #0())] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#0()]                                                 
767.69/212.97	                                                                                                           
767.69/212.97	                      [attach#2(nil(), @x, @xs)] =  [7] @xs + [0]                                          
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [nil()]                                                
767.69/212.97	                                                                                                           
767.69/212.97	                [attach#2(::(@l, @ls), @x, @xs)] =  [7] @xs + [0]                                          
767.69/212.97	                                                 ?  [3] @xs + [1]                                          
767.69/212.97	                                                 =  [::(::(@x, @l), attach(@xs, @ls))]                     
767.69/212.97	                                                                                                           
767.69/212.97	                         [#succ(#neg(#s(#0())))] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#0()]                                                 
767.69/212.97	                                                                                                           
767.69/212.97	                       [#succ(#neg(#s(#s(@x))))] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#neg(#s(@x))]                                         
767.69/212.97	                                                                                                           
767.69/212.97	                           [#succ(#pos(#s(@x)))] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#pos(#s(#s(@x)))]                                     
767.69/212.97	                                                                                                           
767.69/212.97	                                   [#succ(#0())] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#pos(#s(#0()))]                                       
767.69/212.97	                                                                                                           
767.69/212.97	                             [makeBase#1(nil())] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [nil()]                                                
767.69/212.97	                                                                                                           
767.69/212.97	                       [makeBase#1(::(@l, @m'))] =  [0]                                                    
767.69/212.97	                                                 ?  [2] @l + [0]                                           
767.69/212.97	                                                 =  [mkBase(@l)]                                           
767.69/212.97	                                                                                                           
767.69/212.97	                          [matrixMult(@m1, @m2)] =  [1] @m1 + [0]                                          
767.69/212.97	                                                 >= [1] @m1 + [0]                                          
767.69/212.97	                                                 =  [matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))]       
767.69/212.97	                                                                                                           
767.69/212.97	                                [#abs(#neg(@x))] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#pos(@x)]                                             
767.69/212.97	                                                                                                           
767.69/212.97	                                [#abs(#pos(@x))] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#pos(@x)]                                             
767.69/212.97	                                                                                                           
767.69/212.97	                                    [#abs(#0())] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#0()]                                                 
767.69/212.97	                                                                                                           
767.69/212.97	                                  [#abs(#s(@x))] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#pos(#s(@x))]                                         
767.69/212.97	                                                                                                           
767.69/212.97	                             [lineMult(@l, @m2)] =  [1] @m2 + [0]                                          
767.69/212.97	                                                 ?  [4] @l + [0]                                           
767.69/212.97	                                                 =  [lineMult#1(@m2, @l)]                                  
767.69/212.97	                                                                                                           
767.69/212.97	                        [transpose#1(nil(), @m)] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [nil()]                                                
767.69/212.97	                                                                                                           
767.69/212.97	                [transpose#1(::(@xs, @xss), @m)] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [transpose#2(split(@m))]                               
767.69/212.97	                                                                                                           
767.69/212.97	           [split#3(tuple#2(@ys, @m'), @x, @xs)] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [tuple#2(::(@x, @ys), ::(@xs, @m'))]                   
767.69/212.97	                                                                                                           
767.69/212.97	                           [#pred(#neg(#s(@x)))] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#neg(#s(#s(@x)))]                                     
767.69/212.97	                                                                                                           
767.69/212.97	                         [#pred(#pos(#s(#0())))] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#0()]                                                 
767.69/212.97	                                                                                                           
767.69/212.97	                       [#pred(#pos(#s(#s(@x))))] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#pos(#s(@x))]                                         
767.69/212.97	                                                                                                           
767.69/212.97	                                   [#pred(#0())] =  [0]                                                    
767.69/212.97	                                                 >= [0]                                                    
767.69/212.97	                                                 =  [#neg(#s(#0()))]                                       
767.69/212.97	                                                                                                           
767.69/212.97	                   [matrixMultList^#(@acc, @mm)] =  [4] @acc + [4] @mm + [0]                               
767.69/212.97	                                                 >= [4] @acc + [4] @mm + [0]                               
767.69/212.97	                                                 =  [matrixMultList#1^#(@mm, @acc)]                        
767.69/212.97	                                                                                                           
767.69/212.97	         [matrixMultList#1^#(::(@m, @ms), @acc)] =  [4] @acc + [4] @ms + [4]                               
767.69/212.97	                                                 >  [4] @acc + [4] @ms + [0]                               
767.69/212.97	                                                 =  [matrixMultList^#(matrixMult(@acc, @m), @ms)]          
767.69/212.97	                                                                                                           
767.69/212.97	         [matrixMultList#1^#(::(@m, @ms), @acc)] =  [4] @acc + [4] @ms + [4]                               
767.69/212.97	                                                 >  [4] @acc + [0]                                         
767.69/212.97	                                                 =  [matrixMult^#(@acc, @m)]                               
767.69/212.97	                                                                                                           
767.69/212.97	                  [matrixMult3^#(@m1, @m2, @m3)] =  [7] @m2 + [7] @m1 + [7] @m3 + [7]                      
767.69/212.97	                                                 >  [4] @m1 + [0]                                          
767.69/212.97	                                                 =  [matrixMult^#(@m1, @m2)]                               
767.69/212.97	                                                                                                           
767.69/212.97	                  [matrixMult3^#(@m1, @m2, @m3)] =  [7] @m2 + [7] @m1 + [7] @m3 + [7]                      
767.69/212.97	                                                 >  [4] @m1 + [0]                                          
767.69/212.97	                                                 =  [matrixMult^#(matrixMult(@m1, @m2), @m3)]              
767.69/212.97	                                                                                                           
767.69/212.97	                        [matrixMult^#(@m1, @m2)] =  [4] @m1 + [0]                                          
767.69/212.97	                                                 >= [4] @m1 + [0]                                          
767.69/212.97	                                                 =  [c_2(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))))]
767.69/212.97	                                                                                                           
767.69/212.97	                       [matrixMult'^#(@m1, @m2)] =  [2] @m1 + [0]                                          
767.69/212.97	                                                 >= [2] @m1 + [0]                                          
767.69/212.97	                                                 =  [c_5(matrixMult'#1^#(@m1, @m2))]                       
767.69/212.97	                                                                                                           
767.69/212.97	             [matrixMult'#1^#(::(@l, @ls), @m2)] =  [2] @ls + [2]                                          
767.69/212.97	                                                 >  [2] @ls + [1]                                          
767.69/212.97	                                                 =  [c_6(lineMult^#(@l, @m2), matrixMult'^#(@ls, @m2))]    
767.69/212.98	                                                                                                           
767.69/212.98	                     [matrixMultOld^#(@m1, @m2)] =  [7] @m2 + [7] @m1 + [7]                                
767.69/212.98	                                                 >  [2] @m1 + [0]                                          
767.69/212.98	                                                 =  [matrixMult'^#(@m1, transpose(@m2))]                   
767.69/212.98	                                                                                                           
767.69/212.98	     
767.69/212.98	     We return to the main proof. Consider the set of all dependency
767.69/212.98	     pairs
767.69/212.98	     
767.69/212.98	     :
767.69/212.98	       { 1: matrixMult^#(@m1, @m2) ->
767.69/212.98	            c_2(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))))
767.69/212.98	       , 2: matrixMult'^#(@m1, @m2) -> c_5(matrixMult'#1^#(@m1, @m2))
767.69/212.98	       , 3: matrixMult'#1^#(::(@l, @ls), @m2) ->
767.69/212.98	            c_6(lineMult^#(@l, @m2), matrixMult'^#(@ls, @m2))
767.69/212.98	       , 4: matrixMultList^#(@acc, @mm) -> matrixMultList#1^#(@mm, @acc)
767.69/212.98	       , 5: matrixMultList#1^#(::(@m, @ms), @acc) ->
767.69/212.98	            matrixMultList^#(matrixMult(@acc, @m), @ms)
767.69/212.98	       , 6: matrixMultList#1^#(::(@m, @ms), @acc) ->
767.69/212.98	            matrixMult^#(@acc, @m)
767.69/212.98	       , 7: matrixMult3^#(@m1, @m2, @m3) -> matrixMult^#(@m1, @m2)
767.69/212.98	       , 8: matrixMult3^#(@m1, @m2, @m3) ->
767.69/212.98	            matrixMult^#(matrixMult(@m1, @m2), @m3)
767.69/212.98	       , 9: matrixMultOld^#(@m1, @m2) ->
767.69/212.98	            matrixMult'^#(@m1, transpose(@m2)) }
767.69/212.98	     
767.69/212.98	     Processor 'matrix interpretation of dimension 1' induces the
767.69/212.98	     complexity certificate YES(?,O(n^1)) on application of dependency
767.69/212.98	     pairs {3,5,6,7,8,9}. These cover all (indirect) predecessors of
767.69/212.98	     dependency pairs {1,2,3,4,5,6,7,8,9}, their number of application
767.69/212.98	     is equally bounded. The dependency pairs are shifted into the weak
767.69/212.98	     component.
767.69/212.98	     
767.69/212.98	     We are left with following problem, upon which TcT provides the
767.69/212.98	     certificate YES(O(1),O(1)).
767.69/212.98	     
767.69/212.98	     Weak DPs:
767.69/212.98	       { matrixMultList^#(@acc, @mm) -> matrixMultList#1^#(@mm, @acc)
767.69/212.98	       , matrixMultList#1^#(::(@m, @ms), @acc) ->
767.69/212.98	         matrixMultList^#(matrixMult(@acc, @m), @ms)
767.69/212.98	       , matrixMultList#1^#(::(@m, @ms), @acc) -> matrixMult^#(@acc, @m)
767.69/212.98	       , matrixMult3^#(@m1, @m2, @m3) -> matrixMult^#(@m1, @m2)
767.69/212.98	       , matrixMult3^#(@m1, @m2, @m3) ->
767.69/212.98	         matrixMult^#(matrixMult(@m1, @m2), @m3)
767.69/212.98	       , matrixMult^#(@m1, @m2) ->
767.69/212.98	         c_2(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))))
767.69/212.98	       , matrixMult'^#(@m1, @m2) -> c_5(matrixMult'#1^#(@m1, @m2))
767.69/212.98	       , matrixMult'#1^#(::(@l, @ls), @m2) ->
767.69/212.98	         c_6(lineMult^#(@l, @m2), matrixMult'^#(@ls, @m2))
767.69/212.98	       , matrixMultOld^#(@m1, @m2) -> matrixMult'^#(@m1, transpose(@m2)) }
767.69/212.98	     Weak Trs:
767.69/212.98	       { attach(@line, @m) -> attach#1(@line, @m)
767.69/212.98	       , split(@m) -> split#1(@m)
767.69/212.98	       , #add(#neg(#s(#0())), @y) -> #pred(@y)
767.69/212.98	       , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
767.69/212.98	       , #add(#pos(#s(#0())), @y) -> #succ(@y)
767.69/212.98	       , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
767.69/212.98	       , #add(#0(), @y) -> @y
767.69/212.98	       , mult#2(nil(), @x, @xs) -> #abs(#0())
767.69/212.98	       , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
767.69/212.98	       , split#1(nil()) -> tuple#2(nil(), nil())
767.69/212.98	       , split#1(::(@l, @ls)) -> split#2(@l, @ls)
767.69/212.98	       , transpose(@m) -> transpose#1(@m, @m)
767.69/212.98	       , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
767.69/212.98	       , transAcc(@m, @base) -> transAcc#1(@m, @base)
767.69/212.98	       , mult(@l1, @l2) -> mult#1(@l1, @l2)
767.69/212.98	       , +(@x, @y) -> #add(@x, @y)
767.69/212.98	       , transAcc#1(nil(), @base) -> @base
767.69/212.98	       , transAcc#1(::(@l, @m'), @base) ->
767.69/212.98	         attach(@l, transAcc(@m', @base))
767.69/212.98	       , *(@x, @y) -> #mult(@x, @y)
767.69/212.98	       , mkBase#1(nil()) -> nil()
767.69/212.98	       , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.69/212.98	       , transpose#3(nil(), @l) -> nil()
767.69/212.98	       , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
767.69/212.98	       , attach#1(nil(), @m) -> nil()
767.69/212.98	       , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.69/212.98	       , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
767.69/212.98	       , matrixMult'#1(nil(), @m2) -> nil()
767.69/212.98	       , matrixMult'#1(::(@l, @ls), @m2) ->
767.69/212.98	         ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
767.69/212.98	       , #natmult(#0(), @y) -> #0()
767.69/212.98	       , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
767.69/212.98	       , split#2(nil(), @ls) -> tuple#2(nil(), nil())
767.69/212.98	       , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
767.69/212.98	       , mkBase(@m) -> mkBase#1(@m)
767.69/212.98	       , makeBase(@m) -> makeBase#1(@m)
767.69/212.98	       , mult#1(nil(), @l2) -> #abs(#0())
767.69/212.98	       , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
767.69/212.98	       , lineMult#1(nil(), @l) -> nil()
767.69/212.98	       , lineMult#1(::(@x, @xs), @l) ->
767.69/212.98	         ::(mult(@l, @x), lineMult(@l, @xs))
767.69/212.98	       , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
767.69/212.98	       , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
767.69/212.98	       , #mult(#neg(@x), #0()) -> #0()
767.69/212.98	       , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
767.69/212.98	       , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
767.69/212.98	       , #mult(#pos(@x), #0()) -> #0()
767.69/212.98	       , #mult(#0(), #neg(@y)) -> #0()
767.69/212.98	       , #mult(#0(), #pos(@y)) -> #0()
767.69/212.98	       , #mult(#0(), #0()) -> #0()
767.69/212.98	       , attach#2(nil(), @x, @xs) -> nil()
767.69/212.98	       , attach#2(::(@l, @ls), @x, @xs) ->
767.69/212.98	         ::(::(@x, @l), attach(@xs, @ls))
767.69/212.98	       , #succ(#neg(#s(#0()))) -> #0()
767.69/212.98	       , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
767.69/212.98	       , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
767.69/212.98	       , #succ(#0()) -> #pos(#s(#0()))
767.69/212.98	       , makeBase#1(nil()) -> nil()
767.69/212.98	       , makeBase#1(::(@l, @m')) -> mkBase(@l)
767.69/212.98	       , matrixMult(@m1, @m2) ->
767.69/212.98	         matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
767.69/212.98	       , #abs(#neg(@x)) -> #pos(@x)
767.69/212.98	       , #abs(#pos(@x)) -> #pos(@x)
767.69/212.98	       , #abs(#0()) -> #0()
767.69/212.98	       , #abs(#s(@x)) -> #pos(#s(@x))
767.69/212.98	       , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
767.69/212.98	       , transpose#1(nil(), @m) -> nil()
767.69/212.98	       , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
767.69/212.98	       , split#3(tuple#2(@ys, @m'), @x, @xs) ->
767.69/212.98	         tuple#2(::(@x, @ys), ::(@xs, @m'))
767.69/212.98	       , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
767.69/212.98	       , #pred(#pos(#s(#0()))) -> #0()
767.69/212.98	       , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
767.69/212.98	       , #pred(#0()) -> #neg(#s(#0())) }
767.69/212.98	     Obligation:
767.69/212.98	       innermost runtime complexity
767.69/212.98	     Answer:
767.69/212.98	       YES(O(1),O(1))
767.69/212.98	     
767.69/212.98	     The following weak DPs constitute a sub-graph of the DG that is
767.69/212.98	     closed under successors. The DPs are removed.
767.69/212.98	     
767.69/212.98	     { matrixMultList^#(@acc, @mm) -> matrixMultList#1^#(@mm, @acc)
767.69/212.98	     , matrixMultList#1^#(::(@m, @ms), @acc) ->
767.69/212.98	       matrixMultList^#(matrixMult(@acc, @m), @ms)
767.69/212.98	     , matrixMultList#1^#(::(@m, @ms), @acc) -> matrixMult^#(@acc, @m)
767.69/212.98	     , matrixMult3^#(@m1, @m2, @m3) -> matrixMult^#(@m1, @m2)
767.69/212.98	     , matrixMult3^#(@m1, @m2, @m3) ->
767.69/212.98	       matrixMult^#(matrixMult(@m1, @m2), @m3)
767.69/212.98	     , matrixMult^#(@m1, @m2) ->
767.69/212.98	       c_2(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))))
767.69/212.98	     , matrixMult'^#(@m1, @m2) -> c_5(matrixMult'#1^#(@m1, @m2))
767.69/212.98	     , matrixMult'#1^#(::(@l, @ls), @m2) ->
767.69/212.98	       c_6(lineMult^#(@l, @m2), matrixMult'^#(@ls, @m2))
767.69/212.98	     , matrixMultOld^#(@m1, @m2) -> matrixMult'^#(@m1, transpose(@m2)) }
767.69/212.98	     
767.69/212.98	     We are left with following problem, upon which TcT provides the
767.69/212.98	     certificate YES(O(1),O(1)).
767.69/212.98	     
767.69/212.98	     Weak Trs:
767.69/212.98	       { attach(@line, @m) -> attach#1(@line, @m)
767.69/212.98	       , split(@m) -> split#1(@m)
767.69/212.98	       , #add(#neg(#s(#0())), @y) -> #pred(@y)
767.69/212.98	       , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
767.69/212.98	       , #add(#pos(#s(#0())), @y) -> #succ(@y)
767.69/212.98	       , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
767.69/212.98	       , #add(#0(), @y) -> @y
767.69/212.98	       , mult#2(nil(), @x, @xs) -> #abs(#0())
767.69/212.98	       , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
767.69/212.98	       , split#1(nil()) -> tuple#2(nil(), nil())
767.69/212.98	       , split#1(::(@l, @ls)) -> split#2(@l, @ls)
767.69/212.98	       , transpose(@m) -> transpose#1(@m, @m)
767.69/212.98	       , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
767.69/212.98	       , transAcc(@m, @base) -> transAcc#1(@m, @base)
767.69/212.98	       , mult(@l1, @l2) -> mult#1(@l1, @l2)
767.69/212.98	       , +(@x, @y) -> #add(@x, @y)
767.69/212.98	       , transAcc#1(nil(), @base) -> @base
767.69/212.98	       , transAcc#1(::(@l, @m'), @base) ->
767.69/212.98	         attach(@l, transAcc(@m', @base))
767.69/212.98	       , *(@x, @y) -> #mult(@x, @y)
767.69/212.98	       , mkBase#1(nil()) -> nil()
767.69/212.98	       , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.69/212.98	       , transpose#3(nil(), @l) -> nil()
767.69/212.98	       , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
767.69/212.98	       , attach#1(nil(), @m) -> nil()
767.69/212.98	       , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.69/212.98	       , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
767.69/212.98	       , matrixMult'#1(nil(), @m2) -> nil()
767.69/212.98	       , matrixMult'#1(::(@l, @ls), @m2) ->
767.69/212.98	         ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
767.69/212.98	       , #natmult(#0(), @y) -> #0()
767.69/212.98	       , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
767.69/212.98	       , split#2(nil(), @ls) -> tuple#2(nil(), nil())
767.69/212.98	       , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
767.69/212.98	       , mkBase(@m) -> mkBase#1(@m)
767.69/212.98	       , makeBase(@m) -> makeBase#1(@m)
767.69/212.98	       , mult#1(nil(), @l2) -> #abs(#0())
767.69/212.98	       , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
767.69/212.98	       , lineMult#1(nil(), @l) -> nil()
767.69/212.98	       , lineMult#1(::(@x, @xs), @l) ->
767.69/212.98	         ::(mult(@l, @x), lineMult(@l, @xs))
767.69/212.98	       , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
767.69/212.98	       , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
767.69/212.98	       , #mult(#neg(@x), #0()) -> #0()
767.69/212.98	       , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
767.69/212.98	       , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
767.69/212.98	       , #mult(#pos(@x), #0()) -> #0()
767.69/212.98	       , #mult(#0(), #neg(@y)) -> #0()
767.69/212.98	       , #mult(#0(), #pos(@y)) -> #0()
767.69/212.98	       , #mult(#0(), #0()) -> #0()
767.69/212.98	       , attach#2(nil(), @x, @xs) -> nil()
767.69/212.98	       , attach#2(::(@l, @ls), @x, @xs) ->
767.69/212.98	         ::(::(@x, @l), attach(@xs, @ls))
767.69/212.98	       , #succ(#neg(#s(#0()))) -> #0()
767.69/212.98	       , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
767.69/212.98	       , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
767.69/212.98	       , #succ(#0()) -> #pos(#s(#0()))
767.69/212.98	       , makeBase#1(nil()) -> nil()
767.69/212.98	       , makeBase#1(::(@l, @m')) -> mkBase(@l)
767.69/212.98	       , matrixMult(@m1, @m2) ->
767.69/212.98	         matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
767.69/212.98	       , #abs(#neg(@x)) -> #pos(@x)
767.69/212.98	       , #abs(#pos(@x)) -> #pos(@x)
767.69/212.98	       , #abs(#0()) -> #0()
767.69/212.98	       , #abs(#s(@x)) -> #pos(#s(@x))
767.69/212.98	       , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
767.69/212.98	       , transpose#1(nil(), @m) -> nil()
767.69/212.98	       , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
767.69/212.98	       , split#3(tuple#2(@ys, @m'), @x, @xs) ->
767.69/212.98	         tuple#2(::(@x, @ys), ::(@xs, @m'))
767.69/212.98	       , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
767.69/212.98	       , #pred(#pos(#s(#0()))) -> #0()
767.69/212.98	       , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
767.69/212.98	       , #pred(#0()) -> #neg(#s(#0())) }
767.69/212.98	     Obligation:
767.69/212.98	       innermost runtime complexity
767.69/212.98	     Answer:
767.69/212.98	       YES(O(1),O(1))
767.69/212.98	     
767.69/212.98	     No rule is usable, rules are removed from the input problem.
767.69/212.98	     
767.69/212.98	     We are left with following problem, upon which TcT provides the
767.69/212.98	     certificate YES(O(1),O(1)).
767.69/212.98	     
767.69/212.98	     Rules: Empty
767.69/212.98	     Obligation:
767.69/212.98	       innermost runtime complexity
767.69/212.98	     Answer:
767.69/212.98	       YES(O(1),O(1))
767.69/212.98	     
767.69/212.98	     Empty rules are trivially bounded
767.69/212.98	   
767.69/212.98	   We return to the main proof.
767.69/212.98	   
767.69/212.98	   We are left with following problem, upon which TcT provides the
767.69/212.98	   certificate YES(O(1),O(n^1)).
767.69/212.98	   
767.69/212.98	   Strict DPs:
767.69/212.98	     { mult#2^#(::(@y, @ys), @x, @xs) -> c_3(mult^#(@xs, @ys))
767.69/212.98	     , mult^#(@l1, @l2) -> c_4(mult#1^#(@l1, @l2))
767.69/212.98	     , mult#1^#(::(@x, @xs), @l2) -> c_7(mult#2^#(@l2, @x, @xs))
767.69/212.98	     , lineMult^#(@l, @m2) -> c_8(lineMult#1^#(@m2, @l))
767.69/212.98	     , lineMult#1^#(::(@x, @xs), @l) ->
767.69/212.98	       c_9(mult^#(@l, @x), lineMult^#(@l, @xs)) }
767.69/212.98	   Weak DPs:
767.69/212.98	     { matrixMultList^#(@acc, @mm) -> matrixMultList#1^#(@mm, @acc)
767.69/212.98	     , matrixMultList#1^#(::(@m, @ms), @acc) ->
767.69/212.98	       matrixMultList^#(matrixMult(@acc, @m), @ms)
767.69/212.98	     , matrixMultList#1^#(::(@m, @ms), @acc) -> matrixMult^#(@acc, @m)
767.69/212.98	     , matrixMult3^#(@m1, @m2, @m3) -> matrixMult^#(@m1, @m2)
767.69/212.98	     , matrixMult3^#(@m1, @m2, @m3) ->
767.69/212.98	       matrixMult^#(matrixMult(@m1, @m2), @m3)
767.69/212.98	     , matrixMult^#(@m1, @m2) ->
767.69/212.98	       matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2)))
767.69/212.98	     , matrixMult'^#(@m1, @m2) -> matrixMult'#1^#(@m1, @m2)
767.69/212.98	     , matrixMult'#1^#(::(@l, @ls), @m2) -> matrixMult'^#(@ls, @m2)
767.69/212.98	     , matrixMult'#1^#(::(@l, @ls), @m2) -> lineMult^#(@l, @m2)
767.69/212.98	     , matrixMultOld^#(@m1, @m2) -> matrixMult'^#(@m1, transpose(@m2)) }
767.69/212.98	   Weak Trs:
767.69/212.98	     { attach(@line, @m) -> attach#1(@line, @m)
767.69/212.98	     , split(@m) -> split#1(@m)
767.69/212.98	     , #add(#neg(#s(#0())), @y) -> #pred(@y)
767.69/212.98	     , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
767.69/212.98	     , #add(#pos(#s(#0())), @y) -> #succ(@y)
767.69/212.98	     , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
767.69/212.98	     , #add(#0(), @y) -> @y
767.69/212.98	     , mult#2(nil(), @x, @xs) -> #abs(#0())
767.69/212.98	     , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
767.69/212.98	     , split#1(nil()) -> tuple#2(nil(), nil())
767.69/212.98	     , split#1(::(@l, @ls)) -> split#2(@l, @ls)
767.69/212.98	     , transpose(@m) -> transpose#1(@m, @m)
767.69/212.98	     , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
767.69/212.98	     , transAcc(@m, @base) -> transAcc#1(@m, @base)
767.69/212.98	     , mult(@l1, @l2) -> mult#1(@l1, @l2)
767.69/212.98	     , +(@x, @y) -> #add(@x, @y)
767.69/212.98	     , transAcc#1(nil(), @base) -> @base
767.69/212.98	     , transAcc#1(::(@l, @m'), @base) ->
767.69/212.98	       attach(@l, transAcc(@m', @base))
767.69/212.98	     , *(@x, @y) -> #mult(@x, @y)
767.69/212.98	     , mkBase#1(nil()) -> nil()
767.69/212.98	     , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.69/212.98	     , transpose#3(nil(), @l) -> nil()
767.69/212.98	     , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
767.69/212.98	     , attach#1(nil(), @m) -> nil()
767.69/212.98	     , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.69/212.98	     , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
767.69/212.98	     , matrixMult'#1(nil(), @m2) -> nil()
767.69/212.98	     , matrixMult'#1(::(@l, @ls), @m2) ->
767.69/212.98	       ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
767.69/212.98	     , #natmult(#0(), @y) -> #0()
767.69/212.98	     , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
767.69/212.98	     , split#2(nil(), @ls) -> tuple#2(nil(), nil())
767.69/212.98	     , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
767.69/212.98	     , mkBase(@m) -> mkBase#1(@m)
767.69/212.98	     , makeBase(@m) -> makeBase#1(@m)
767.69/212.98	     , mult#1(nil(), @l2) -> #abs(#0())
767.69/212.98	     , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
767.69/212.98	     , lineMult#1(nil(), @l) -> nil()
767.69/212.98	     , lineMult#1(::(@x, @xs), @l) ->
767.69/212.98	       ::(mult(@l, @x), lineMult(@l, @xs))
767.69/212.98	     , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
767.69/212.98	     , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
767.69/212.98	     , #mult(#neg(@x), #0()) -> #0()
767.69/212.98	     , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
767.69/212.98	     , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
767.69/212.98	     , #mult(#pos(@x), #0()) -> #0()
767.69/212.98	     , #mult(#0(), #neg(@y)) -> #0()
767.69/212.98	     , #mult(#0(), #pos(@y)) -> #0()
767.69/212.98	     , #mult(#0(), #0()) -> #0()
767.69/212.98	     , attach#2(nil(), @x, @xs) -> nil()
767.69/212.98	     , attach#2(::(@l, @ls), @x, @xs) ->
767.69/212.98	       ::(::(@x, @l), attach(@xs, @ls))
767.69/212.98	     , #succ(#neg(#s(#0()))) -> #0()
767.69/212.98	     , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
767.69/212.98	     , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
767.69/212.98	     , #succ(#0()) -> #pos(#s(#0()))
767.69/212.98	     , makeBase#1(nil()) -> nil()
767.69/212.98	     , makeBase#1(::(@l, @m')) -> mkBase(@l)
767.69/212.98	     , matrixMult(@m1, @m2) ->
767.69/212.98	       matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
767.69/212.98	     , #abs(#neg(@x)) -> #pos(@x)
767.69/212.98	     , #abs(#pos(@x)) -> #pos(@x)
767.69/212.98	     , #abs(#0()) -> #0()
767.69/212.98	     , #abs(#s(@x)) -> #pos(#s(@x))
767.69/212.98	     , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
767.69/212.98	     , transpose#1(nil(), @m) -> nil()
767.69/212.98	     , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
767.69/212.98	     , split#3(tuple#2(@ys, @m'), @x, @xs) ->
767.69/212.98	       tuple#2(::(@x, @ys), ::(@xs, @m'))
767.69/212.98	     , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
767.69/212.98	     , #pred(#pos(#s(#0()))) -> #0()
767.69/212.98	     , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
767.69/212.98	     , #pred(#0()) -> #neg(#s(#0())) }
767.69/212.98	   Obligation:
767.69/212.98	     innermost runtime complexity
767.69/212.98	   Answer:
767.69/212.98	     YES(O(1),O(n^1))
767.69/212.98	   
767.69/212.98	   We use the processor 'matrix interpretation of dimension 2' to
767.69/212.98	   orient following rules strictly.
767.69/212.98	   
767.69/212.98	   DPs:
767.69/212.98	     { 1: mult#2^#(::(@y, @ys), @x, @xs) -> c_3(mult^#(@xs, @ys))
767.69/212.98	     , 7: matrixMultList#1^#(::(@m, @ms), @acc) ->
767.69/212.98	          matrixMultList^#(matrixMult(@acc, @m), @ms)
767.69/212.98	     , 8: matrixMultList#1^#(::(@m, @ms), @acc) ->
767.69/212.98	          matrixMult^#(@acc, @m)
767.69/212.98	     , 9: matrixMult3^#(@m1, @m2, @m3) -> matrixMult^#(@m1, @m2)
767.69/212.98	     , 10: matrixMult3^#(@m1, @m2, @m3) ->
767.69/212.98	           matrixMult^#(matrixMult(@m1, @m2), @m3)
767.69/212.98	     , 11: matrixMult^#(@m1, @m2) ->
767.69/212.98	           matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2)))
767.69/212.98	     , 15: matrixMultOld^#(@m1, @m2) ->
767.69/212.98	           matrixMult'^#(@m1, transpose(@m2)) }
767.69/212.98	   Trs:
767.69/212.98	     { mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.69/212.98	     , transpose#3(nil(), @l) -> nil()
767.69/212.98	     , attach#1(nil(), @m) -> nil()
767.69/212.98	     , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
767.69/212.98	     , split#2(nil(), @ls) -> tuple#2(nil(), nil())
767.69/212.98	     , attach#2(nil(), @x, @xs) -> nil()
767.69/212.98	     , makeBase#1(::(@l, @m')) -> mkBase(@l) }
767.69/212.98	   
767.69/212.98	   Sub-proof:
767.69/212.98	   ----------
767.69/212.98	     The following argument positions are usable:
767.69/212.98	       Uargs(c_3) = {1}, Uargs(c_4) = {1}, Uargs(c_7) = {1},
767.69/212.98	       Uargs(c_8) = {1}, Uargs(c_9) = {1, 2}
767.69/212.98	     
767.69/212.98	     TcT has computed the following constructor-based matrix
767.69/212.98	     interpretation satisfying not(EDA) and not(IDA(1)).
767.69/212.98	     
767.69/212.98	                   [attach](x1, x2) = [1 0] x1 + [1 0] x2 + [1]           
767.69/212.98	                                      [0 0]      [0 0]      [4]           
767.69/212.98	                                                                          
767.69/212.98	                        [split](x1) = [1 0] x1 + [0]                      
767.69/212.98	                                      [1 1]      [0]                      
767.69/212.98	                                                                          
767.69/212.98	                     [#add](x1, x2) = [0]                                 
767.69/212.98	                                      [0]                                 
767.69/212.98	                                                                          
767.69/212.98	               [mult#2](x1, x2, x3) = [6 0] x2 + [6 0] x3 + [0]           
767.69/212.98	                                      [6 6]      [6 6]      [0]           
767.69/212.98	                                                                          
767.69/212.98	                              [nil] = [0]                                 
767.69/212.98	                                      [1]                                 
767.69/212.98	                                                                          
767.69/212.98	                      [split#1](x1) = [1 0] x1 + [0]                      
767.69/212.98	                                      [1 1]      [0]                      
767.69/212.98	                                                                          
767.69/212.98	                    [transpose](x1) = [5 4] x1 + [0]                      
767.69/212.98	                                      [0 0]      [4]                      
767.69/212.98	                                                                          
767.69/212.98	              [matrixMult'](x1, x2) = [0]                                 
767.69/212.98	                                      [0]                                 
767.69/212.98	                                                                          
767.69/212.98	                 [transAcc](x1, x2) = [1 0] x1 + [1 0] x2 + [0]           
767.69/212.98	                                      [4 0]      [0 4]      [4]           
767.69/212.98	                                                                          
767.69/212.98	                     [mult](x1, x2) = [0]                                 
767.69/212.98	                                      [0]                                 
767.69/212.98	                                                                          
767.69/212.98	                        [+](x1, x2) = [0]                                 
767.69/212.98	                                      [0]                                 
767.69/212.98	                                                                          
767.69/212.98	               [transAcc#1](x1, x2) = [1 0] x1 + [1 0] x2 + [0]           
767.69/212.98	                                      [0 0]      [0 4]      [4]           
767.69/212.98	                                                                          
767.69/212.98	                         [#neg](x1) = [1 0] x1 + [0]                      
767.69/212.98	                                      [1 0]      [0]                      
767.69/212.98	                                                                          
767.69/212.98	                        [*](x1, x2) = [0]                                 
767.69/212.98	                                      [0]                                 
767.69/212.98	                                                                          
767.69/212.98	                     [mkBase#1](x1) = [2 0] x1 + [0]                      
767.69/212.98	                                      [0 0]      [1]                      
767.69/212.98	                                                                          
767.69/212.98	              [transpose#3](x1, x2) = [5 0] x1 + [1 0] x2 + [1]           
767.69/212.98	                                      [0 0]      [0 0]      [1]           
767.69/212.98	                                                                          
767.69/212.98	                 [attach#1](x1, x2) = [1 0] x1 + [1 0] x2 + [1]           
767.69/212.98	                                      [0 0]      [0 0]      [4]           
767.69/212.98	                                                                          
767.69/212.98	                  [transpose#2](x1) = [1 4] x1 + [0]                      
767.69/212.98	                                      [0 0]      [1]                      
767.69/212.98	                                                                          
767.69/212.98	            [matrixMult'#1](x1, x2) = [6 0] x2 + [0]                      
767.69/212.98	                                      [6 6]      [0]                      
767.69/212.98	                                                                          
767.69/212.98	                 [#natmult](x1, x2) = [0]                                 
767.69/212.98	                                      [0]                                 
767.69/212.98	                                                                          
767.69/212.98	                  [split#2](x1, x2) = [1 0] x1 + [1 0] x2 + [1]           
767.69/212.98	                                      [1 0]      [1 0]      [1]           
767.69/212.98	                                                                          
767.69/212.98	                         [#pos](x1) = [0]                                 
767.69/212.98	                                      [0]                                 
767.69/212.98	                                                                          
767.69/212.98	                  [tuple#2](x1, x2) = [1 0] x1 + [1 0] x2 + [0]           
767.69/212.98	                                      [0 0]      [1 0]      [1]           
767.69/212.98	                                                                          
767.69/212.98	                       [mkBase](x1) = [2 0] x1 + [0]                      
767.69/212.98	                                      [0 0]      [1]                      
767.69/212.98	                                                                          
767.69/212.98	                     [makeBase](x1) = [2 0] x1 + [0]                      
767.69/212.98	                                      [4 4]      [4]                      
767.69/212.98	                                                                          
767.69/212.98	                   [mult#1](x1, x2) = [6 0] x2 + [0]                      
767.69/212.98	                                      [4 4]      [0]                      
767.69/212.98	                                                                          
767.69/212.98	                       [::](x1, x2) = [1 0] x1 + [1 0] x2 + [1]           
767.69/212.98	                                      [0 0]      [0 0]      [0]           
767.69/212.98	                                                                          
767.69/212.98	               [lineMult#1](x1, x2) = [6 0] x2 + [0]                      
767.69/212.98	                                      [6 6]      [0]                      
767.69/212.98	                                                                          
767.69/212.98	                    [#mult](x1, x2) = [0]                                 
767.69/212.98	                                      [0]                                 
767.69/212.98	                                                                          
767.69/212.98	             [attach#2](x1, x2, x3) = [1 0] x1 + [1 0] x2 + [1 0] x3 + [2]
767.69/212.98	                                      [0 0]      [0 0]      [0 0]      [1]
767.69/212.98	                                                                          
767.69/212.98	                        [#succ](x1) = [0]                                 
767.69/212.98	                                      [0]                                 
767.69/212.98	                                                                          
767.69/212.98	                               [#0] = [0]                                 
767.69/212.98	                                      [0]                                 
767.69/212.98	                                                                          
767.69/212.98	                   [makeBase#1](x1) = [2 0] x1 + [0]                      
767.69/212.98	                                      [4 4]      [0]                      
767.69/212.98	                                                                          
767.69/212.98	               [matrixMult](x1, x2) = [0]                                 
767.69/212.98	                                      [0]                                 
767.69/212.98	                                                                          
767.69/212.98	                         [#abs](x1) = [0]                                 
767.69/212.98	                                      [0]                                 
767.69/212.98	                                                                          
767.69/212.98	                 [lineMult](x1, x2) = [0]                                 
767.69/212.98	                                      [0]                                 
767.69/212.98	                                                                          
767.69/212.98	              [transpose#1](x1, x2) = [5 4] x2 + [0]                      
767.69/212.98	                                      [0 0]      [4]                      
767.69/212.98	                                                                          
767.69/212.98	              [split#3](x1, x2, x3) = [1 0] x1 + [1 0] x2 + [1 0] x3 + [2]
767.69/212.98	                                      [1 0]      [1 0]      [1 0]      [2]
767.69/212.98	                                                                          
767.69/212.98	                        [#pred](x1) = [0]                                 
767.69/212.98	                                      [0]                                 
767.69/212.98	                                                                          
767.69/212.98	                           [#s](x1) = [0]                                 
767.69/212.98	                                      [0]                                 
767.69/212.98	                                                                          
767.69/212.98	         [matrixMultList^#](x1, x2) = [4 0] x2 + [4]                      
767.69/212.98	                                      [2 0]      [4]                      
767.69/212.99	                                                                          
767.69/212.99	       [matrixMultList#1^#](x1, x2) = [4 0] x1 + [4]                      
767.69/212.99	                                      [2 0]      [2]                      
767.69/212.99	                                                                          
767.69/212.99	        [matrixMult3^#](x1, x2, x3) = [7 7] x1 + [7 7] x2 + [7 7] x3 + [7]
767.69/212.99	                                      [7 7]      [7 7]      [7 7]      [7]
767.69/212.99	                                                                          
767.69/212.99	             [matrixMult^#](x1, x2) = [3 0] x2 + [4]                      
767.69/212.99	                                      [2 0]      [4]                      
767.69/212.99	                                                                          
767.69/212.99	             [mult#2^#](x1, x2, x3) = [1 0] x1 + [0 0] x3 + [0]           
767.69/212.99	                                      [0 0]      [4 0]      [0]           
767.69/212.99	                                                                          
767.69/212.99	                   [mult^#](x1, x2) = [0 0] x1 + [1 0] x2 + [0]           
767.69/212.99	                                      [4 0]      [0 0]      [0]           
767.69/212.99	                                                                          
767.69/212.99	            [matrixMult'^#](x1, x2) = [1 0] x2 + [0]                      
767.69/212.99	                                      [0 0]      [0]                      
767.69/212.99	                                                                          
767.69/212.99	          [matrixMult'#1^#](x1, x2) = [1 0] x2 + [0]                      
767.69/212.99	                                      [0 0]      [0]                      
767.69/212.99	                                                                          
767.69/212.99	                 [mult#1^#](x1, x2) = [0 0] x1 + [1 0] x2 + [0]           
767.69/212.99	                                      [1 0]      [0 0]      [3]           
767.69/212.99	                                                                          
767.69/212.99	               [lineMult^#](x1, x2) = [1 0] x2 + [0]                      
767.69/212.99	                                      [0 0]      [0]                      
767.69/212.99	                                                                          
767.69/212.99	          [matrixMultOld^#](x1, x2) = [7 7] x1 + [7 7] x2 + [7]           
767.69/212.99	                                      [7 7]      [7 7]      [7]           
767.69/212.99	                                                                          
767.69/212.99	             [lineMult#1^#](x1, x2) = [1 0] x1 + [0 0] x2 + [0]           
767.69/212.99	                                      [2 0]      [4 0]      [6]           
767.69/212.99	                                                                          
767.69/212.99	                          [c_3](x1) = [1 0] x1 + [0]                      
767.69/212.99	                                      [0 0]      [0]                      
767.69/212.99	                                                                          
767.69/212.99	                          [c_4](x1) = [1 0] x1 + [0]                      
767.69/212.99	                                      [0 0]      [0]                      
767.69/212.99	                                                                          
767.69/212.99	                          [c_7](x1) = [1 0] x1 + [0]                      
767.69/212.99	                                      [0 0]      [3]                      
767.69/212.99	                                                                          
767.69/212.99	                          [c_8](x1) = [1 0] x1 + [0]                      
767.69/212.99	                                      [0 0]      [0]                      
767.69/212.99	                                                                          
767.69/212.99	                      [c_9](x1, x2) = [1 0] x1 + [1 0] x2 + [1]           
767.69/212.99	                                      [0 0]      [0 0]      [3]           
767.69/212.99	     
767.69/212.99	     The order satisfies the following ordering constraints:
767.69/212.99	     
767.69/212.99	                           [attach(@line, @m)] =  [1 0] @line + [1 0] @m + [1]                      
767.69/212.99	                                                  [0 0]         [0 0]      [4]                      
767.69/212.99	                                               >= [1 0] @line + [1 0] @m + [1]                      
767.69/212.99	                                                  [0 0]         [0 0]      [4]                      
767.69/212.99	                                               =  [attach#1(@line, @m)]                             
767.69/212.99	                                                                                                    
767.69/212.99	                                   [split(@m)] =  [1 0] @m + [0]                                    
767.69/212.99	                                                  [1 1]      [0]                                    
767.69/212.99	                                               >= [1 0] @m + [0]                                    
767.69/212.99	                                                  [1 1]      [0]                                    
767.69/212.99	                                               =  [split#1(@m)]                                     
767.69/212.99	                                                                                                    
767.69/212.99	                    [#add(#neg(#s(#0())), @y)] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#pred(@y)]                                       
767.69/212.99	                                                                                                    
767.69/212.99	                  [#add(#neg(#s(#s(@x))), @y)] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#pred(#add(#pos(#s(@x)), @y))]                   
767.69/212.99	                                                                                                    
767.69/212.99	                    [#add(#pos(#s(#0())), @y)] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#succ(@y)]                                       
767.69/212.99	                                                                                                    
767.69/212.99	                  [#add(#pos(#s(#s(@x))), @y)] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#succ(#add(#pos(#s(@x)), @y))]                   
767.69/212.99	                                                                                                    
767.69/212.99	                              [#add(#0(), @y)] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               ?  [1 0] @y + [0]                                    
767.69/212.99	                                                  [0 1]      [0]                                    
767.69/212.99	                                               =  [@y]                                              
767.69/212.99	                                                                                                    
767.69/212.99	                      [mult#2(nil(), @x, @xs)] =  [6 0] @x + [6 0] @xs + [0]                        
767.69/212.99	                                                  [6 6]      [6 6]       [0]                        
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#abs(#0())]                                      
767.69/212.99	                                                                                                    
767.69/212.99	                [mult#2(::(@y, @ys), @x, @xs)] =  [6 0] @x + [6 0] @xs + [0]                        
767.69/212.99	                                                  [6 6]      [6 6]       [0]                        
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [+(*(@x, @y), mult(@xs, @ys))]                    
767.69/212.99	                                                                                                    
767.69/212.99	                              [split#1(nil())] =  [0]                                               
767.69/212.99	                                                  [1]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [1]                                               
767.69/212.99	                                               =  [tuple#2(nil(), nil())]                           
767.69/212.99	                                                                                                    
767.69/212.99	                        [split#1(::(@l, @ls))] =  [1 0] @l + [1 0] @ls + [1]                        
767.69/212.99	                                                  [1 0]      [1 0]       [1]                        
767.69/212.99	                                               >= [1 0] @l + [1 0] @ls + [1]                        
767.69/212.99	                                                  [1 0]      [1 0]       [1]                        
767.69/212.99	                                               =  [split#2(@l, @ls)]                                
767.69/212.99	                                                                                                    
767.69/212.99	                               [transpose(@m)] =  [5 4] @m + [0]                                    
767.69/212.99	                                                  [0 0]      [4]                                    
767.69/212.99	                                               >= [5 4] @m + [0]                                    
767.69/212.99	                                                  [0 0]      [4]                                    
767.69/212.99	                                               =  [transpose#1(@m, @m)]                             
767.69/212.99	                                                                                                    
767.69/212.99	                       [matrixMult'(@m1, @m2)] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               ?  [6 0] @m2 + [0]                                   
767.69/212.99	                                                  [6 6]       [0]                                   
767.69/212.99	                                               =  [matrixMult'#1(@m1, @m2)]                         
767.69/212.99	                                                                                                    
767.69/212.99	                         [transAcc(@m, @base)] =  [1 0] @m + [1 0] @base + [0]                      
767.69/212.99	                                                  [4 0]      [0 4]         [4]                      
767.69/212.99	                                               >= [1 0] @m + [1 0] @base + [0]                      
767.69/212.99	                                                  [0 0]      [0 4]         [4]                      
767.69/212.99	                                               =  [transAcc#1(@m, @base)]                           
767.69/212.99	                                                                                                    
767.69/212.99	                              [mult(@l1, @l2)] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               ?  [6 0] @l2 + [0]                                   
767.69/212.99	                                                  [4 4]       [0]                                   
767.69/212.99	                                               =  [mult#1(@l1, @l2)]                                
767.69/212.99	                                                                                                    
767.69/212.99	                                   [+(@x, @y)] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#add(@x, @y)]                                    
767.69/212.99	                                                                                                    
767.69/212.99	                    [transAcc#1(nil(), @base)] =  [1 0] @base + [0]                                 
767.69/212.99	                                                  [0 4]         [4]                                 
767.69/212.99	                                               >= [1 0] @base + [0]                                 
767.69/212.99	                                                  [0 1]         [0]                                 
767.69/212.99	                                               =  [@base]                                           
767.69/212.99	                                                                                                    
767.69/212.99	              [transAcc#1(::(@l, @m'), @base)] =  [1 0] @l + [1 0] @m' + [1 0] @base + [1]          
767.69/212.99	                                                  [0 0]      [0 0]       [0 4]         [4]          
767.69/212.99	                                               >= [1 0] @l + [1 0] @m' + [1 0] @base + [1]          
767.69/212.99	                                                  [0 0]      [0 0]       [0 0]         [4]          
767.69/212.99	                                               =  [attach(@l, transAcc(@m', @base))]                
767.69/212.99	                                                                                                    
767.69/212.99	                                   [*(@x, @y)] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#mult(@x, @y)]                                   
767.69/212.99	                                                                                                    
767.69/212.99	                             [mkBase#1(nil())] =  [0]                                               
767.69/212.99	                                                  [1]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [1]                                               
767.69/212.99	                                               =  [nil()]                                           
767.69/212.99	                                                                                                    
767.69/212.99	                       [mkBase#1(::(@l, @m'))] =  [2 0] @l + [2 0] @m' + [2]                        
767.69/212.99	                                                  [0 0]      [0 0]       [1]                        
767.69/212.99	                                               >  [2 0] @m' + [1]                                   
767.69/212.99	                                                  [0 0]       [0]                                   
767.69/212.99	                                               =  [::(nil(), mkBase(@m'))]                          
767.69/212.99	                                                                                                    
767.69/212.99	                      [transpose#3(nil(), @l)] =  [1 0] @l + [1]                                    
767.69/212.99	                                                  [0 0]      [1]                                    
767.69/212.99	                                               >  [0]                                               
767.69/212.99	                                                  [1]                                               
767.69/212.99	                                               =  [nil()]                                           
767.69/212.99	                                                                                                    
767.69/212.99	                [transpose#3(::(@y, @ys), @l)] =  [5 0] @y + [1 0] @l + [5 0] @ys + [6]             
767.69/212.99	                                                  [0 0]      [0 0]      [0 0]       [1]             
767.69/212.99	                                               >= [5 0] @y + [1 0] @l + [5 0] @ys + [6]             
767.69/212.99	                                                  [0 0]      [0 0]      [0 0]       [0]             
767.69/212.99	                                               =  [::(@l, transpose(::(@y, @ys)))]                  
767.69/212.99	                                                                                                    
767.69/212.99	                         [attach#1(nil(), @m)] =  [1 0] @m + [1]                                    
767.69/212.99	                                                  [0 0]      [4]                                    
767.69/212.99	                                               >  [0]                                               
767.69/212.99	                                                  [1]                                               
767.69/212.99	                                               =  [nil()]                                           
767.69/212.99	                                                                                                    
767.69/212.99	                   [attach#1(::(@x, @xs), @m)] =  [1 0] @x + [1 0] @m + [1 0] @xs + [2]             
767.69/212.99	                                                  [0 0]      [0 0]      [0 0]       [4]             
767.69/212.99	                                               >= [1 0] @x + [1 0] @m + [1 0] @xs + [2]             
767.69/212.99	                                                  [0 0]      [0 0]      [0 0]       [1]             
767.69/212.99	                                               =  [attach#2(@m, @x, @xs)]                           
767.69/212.99	                                                                                                    
767.69/212.99	               [transpose#2(tuple#2(@l, @m'))] =  [1 0] @l + [5 0] @m' + [4]                        
767.69/212.99	                                                  [0 0]      [0 0]       [1]                        
767.69/212.99	                                               >  [1 0] @l + [5 0] @m' + [1]                        
767.69/212.99	                                                  [0 0]      [0 0]       [1]                        
767.69/212.99	                                               =  [transpose#3(@m', @l)]                            
767.69/212.99	                                                                                                    
767.69/212.99	                   [matrixMult'#1(nil(), @m2)] =  [6 0] @m2 + [0]                                   
767.69/212.99	                                                  [6 6]       [0]                                   
767.69/212.99	                                               ?  [0]                                               
767.69/212.99	                                                  [1]                                               
767.69/212.99	                                               =  [nil()]                                           
767.69/212.99	                                                                                                    
767.69/212.99	             [matrixMult'#1(::(@l, @ls), @m2)] =  [6 0] @m2 + [0]                                   
767.69/212.99	                                                  [6 6]       [0]                                   
767.69/212.99	                                               ?  [1]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [::(lineMult(@l, @m2), matrixMult'(@ls, @m2))]    
767.69/212.99	                                                                                                    
767.69/212.99	                          [#natmult(#0(), @y)] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#0()]                                            
767.69/212.99	                                                                                                    
767.69/212.99	                        [#natmult(#s(@x), @y)] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#add(#pos(@y), #natmult(@x, @y))]                
767.69/212.99	                                                                                                    
767.69/212.99	                         [split#2(nil(), @ls)] =  [1 0] @ls + [1]                                   
767.69/212.99	                                                  [1 0]       [1]                                   
767.69/212.99	                                               >  [0]                                               
767.69/212.99	                                                  [1]                                               
767.69/212.99	                                               =  [tuple#2(nil(), nil())]                           
767.69/212.99	                                                                                                    
767.69/212.99	                   [split#2(::(@x, @xs), @ls)] =  [1 0] @x + [1 0] @xs + [1 0] @ls + [2]            
767.69/212.99	                                                  [1 0]      [1 0]       [1 0]       [2]            
767.69/212.99	                                               >= [1 0] @x + [1 0] @xs + [1 0] @ls + [2]            
767.69/212.99	                                                  [1 0]      [1 0]       [1 0]       [2]            
767.69/212.99	                                               =  [split#3(split(@ls), @x, @xs)]                    
767.69/212.99	                                                                                                    
767.69/212.99	                                  [mkBase(@m)] =  [2 0] @m + [0]                                    
767.69/212.99	                                                  [0 0]      [1]                                    
767.69/212.99	                                               >= [2 0] @m + [0]                                    
767.69/212.99	                                                  [0 0]      [1]                                    
767.69/212.99	                                               =  [mkBase#1(@m)]                                    
767.69/212.99	                                                                                                    
767.69/212.99	                                [makeBase(@m)] =  [2 0] @m + [0]                                    
767.69/212.99	                                                  [4 4]      [4]                                    
767.69/212.99	                                               >= [2 0] @m + [0]                                    
767.69/212.99	                                                  [4 4]      [0]                                    
767.69/212.99	                                               =  [makeBase#1(@m)]                                  
767.69/212.99	                                                                                                    
767.69/212.99	                          [mult#1(nil(), @l2)] =  [6 0] @l2 + [0]                                   
767.69/212.99	                                                  [4 4]       [0]                                   
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#abs(#0())]                                      
767.69/212.99	                                                                                                    
767.69/212.99	                    [mult#1(::(@x, @xs), @l2)] =  [6 0] @l2 + [0]                                   
767.69/212.99	                                                  [4 4]       [0]                                   
767.69/212.99	                                               ?  [6 0] @x + [6 0] @xs + [0]                        
767.69/212.99	                                                  [6 6]      [6 6]       [0]                        
767.69/212.99	                                               =  [mult#2(@l2, @x, @xs)]                            
767.69/212.99	                                                                                                    
767.69/212.99	                       [lineMult#1(nil(), @l)] =  [6 0] @l + [0]                                    
767.69/212.99	                                                  [6 6]      [0]                                    
767.69/212.99	                                               ?  [0]                                               
767.69/212.99	                                                  [1]                                               
767.69/212.99	                                               =  [nil()]                                           
767.69/212.99	                                                                                                    
767.69/212.99	                 [lineMult#1(::(@x, @xs), @l)] =  [6 0] @l + [0]                                    
767.69/212.99	                                                  [6 6]      [0]                                    
767.69/212.99	                                               ?  [1]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [::(mult(@l, @x), lineMult(@l, @xs))]             
767.69/212.99	                                                                                                    
767.69/212.99	                   [#mult(#neg(@x), #neg(@y))] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#pos(#natmult(@x, @y))]                          
767.69/212.99	                                                                                                    
767.69/212.99	                   [#mult(#neg(@x), #pos(@y))] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#neg(#natmult(@x, @y))]                          
767.69/212.99	                                                                                                    
767.69/212.99	                       [#mult(#neg(@x), #0())] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#0()]                                            
767.69/212.99	                                                                                                    
767.69/212.99	                   [#mult(#pos(@x), #neg(@y))] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#neg(#natmult(@x, @y))]                          
767.69/212.99	                                                                                                    
767.69/212.99	                   [#mult(#pos(@x), #pos(@y))] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#pos(#natmult(@x, @y))]                          
767.69/212.99	                                                                                                    
767.69/212.99	                       [#mult(#pos(@x), #0())] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#0()]                                            
767.69/212.99	                                                                                                    
767.69/212.99	                       [#mult(#0(), #neg(@y))] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#0()]                                            
767.69/212.99	                                                                                                    
767.69/212.99	                       [#mult(#0(), #pos(@y))] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#0()]                                            
767.69/212.99	                                                                                                    
767.69/212.99	                           [#mult(#0(), #0())] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#0()]                                            
767.69/212.99	                                                                                                    
767.69/212.99	                    [attach#2(nil(), @x, @xs)] =  [1 0] @x + [1 0] @xs + [2]                        
767.69/212.99	                                                  [0 0]      [0 0]       [1]                        
767.69/212.99	                                               >  [0]                                               
767.69/212.99	                                                  [1]                                               
767.69/212.99	                                               =  [nil()]                                           
767.69/212.99	                                                                                                    
767.69/212.99	              [attach#2(::(@l, @ls), @x, @xs)] =  [1 0] @x + [1 0] @xs + [1 0] @l + [1 0] @ls + [3] 
767.69/212.99	                                                  [0 0]      [0 0]       [0 0]      [0 0]       [1] 
767.69/212.99	                                               >= [1 0] @x + [1 0] @xs + [1 0] @l + [1 0] @ls + [3] 
767.69/212.99	                                                  [0 0]      [0 0]       [0 0]      [0 0]       [0] 
767.69/212.99	                                               =  [::(::(@x, @l), attach(@xs, @ls))]                
767.69/212.99	                                                                                                    
767.69/212.99	                       [#succ(#neg(#s(#0())))] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#0()]                                            
767.69/212.99	                                                                                                    
767.69/212.99	                     [#succ(#neg(#s(#s(@x))))] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#neg(#s(@x))]                                    
767.69/212.99	                                                                                                    
767.69/212.99	                         [#succ(#pos(#s(@x)))] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#pos(#s(#s(@x)))]                                
767.69/212.99	                                                                                                    
767.69/212.99	                                 [#succ(#0())] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#pos(#s(#0()))]                                  
767.69/212.99	                                                                                                    
767.69/212.99	                           [makeBase#1(nil())] =  [0]                                               
767.69/212.99	                                                  [4]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [1]                                               
767.69/212.99	                                               =  [nil()]                                           
767.69/212.99	                                                                                                    
767.69/212.99	                     [makeBase#1(::(@l, @m'))] =  [2 0] @l + [2 0] @m' + [2]                        
767.69/212.99	                                                  [4 0]      [4 0]       [4]                        
767.69/212.99	                                               >  [2 0] @l + [0]                                    
767.69/212.99	                                                  [0 0]      [1]                                    
767.69/212.99	                                               =  [mkBase(@l)]                                      
767.69/212.99	                                                                                                    
767.69/212.99	                        [matrixMult(@m1, @m2)] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))]  
767.69/212.99	                                                                                                    
767.69/212.99	                              [#abs(#neg(@x))] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#pos(@x)]                                        
767.69/212.99	                                                                                                    
767.69/212.99	                              [#abs(#pos(@x))] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#pos(@x)]                                        
767.69/212.99	                                                                                                    
767.69/212.99	                                  [#abs(#0())] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#0()]                                            
767.69/212.99	                                                                                                    
767.69/212.99	                                [#abs(#s(@x))] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#pos(#s(@x))]                                    
767.69/212.99	                                                                                                    
767.69/212.99	                           [lineMult(@l, @m2)] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               ?  [6 0] @l + [0]                                    
767.69/212.99	                                                  [6 6]      [0]                                    
767.69/212.99	                                               =  [lineMult#1(@m2, @l)]                             
767.69/212.99	                                                                                                    
767.69/212.99	                      [transpose#1(nil(), @m)] =  [5 4] @m + [0]                                    
767.69/212.99	                                                  [0 0]      [4]                                    
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [1]                                               
767.69/212.99	                                               =  [nil()]                                           
767.69/212.99	                                                                                                    
767.69/212.99	              [transpose#1(::(@xs, @xss), @m)] =  [5 4] @m + [0]                                    
767.69/212.99	                                                  [0 0]      [4]                                    
767.69/212.99	                                               >= [5 4] @m + [0]                                    
767.69/212.99	                                                  [0 0]      [1]                                    
767.69/212.99	                                               =  [transpose#2(split(@m))]                          
767.69/212.99	                                                                                                    
767.69/212.99	         [split#3(tuple#2(@ys, @m'), @x, @xs)] =  [1 0] @x + [1 0] @xs + [1 0] @m' + [1 0] @ys + [2]
767.69/212.99	                                                  [1 0]      [1 0]       [1 0]       [1 0]       [2]
767.69/212.99	                                               >= [1 0] @x + [1 0] @xs + [1 0] @m' + [1 0] @ys + [2]
767.69/212.99	                                                  [0 0]      [1 0]       [1 0]       [0 0]       [2]
767.69/212.99	                                               =  [tuple#2(::(@x, @ys), ::(@xs, @m'))]              
767.69/212.99	                                                                                                    
767.69/212.99	                         [#pred(#neg(#s(@x)))] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#neg(#s(#s(@x)))]                                
767.69/212.99	                                                                                                    
767.69/212.99	                       [#pred(#pos(#s(#0())))] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#0()]                                            
767.69/212.99	                                                                                                    
767.69/212.99	                     [#pred(#pos(#s(#s(@x))))] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#pos(#s(@x))]                                    
767.69/212.99	                                                                                                    
767.69/212.99	                                 [#pred(#0())] =  [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               >= [0]                                               
767.69/212.99	                                                  [0]                                               
767.69/212.99	                                               =  [#neg(#s(#0()))]                                  
767.69/212.99	                                                                                                    
767.69/212.99	                 [matrixMultList^#(@acc, @mm)] =  [4 0] @mm + [4]                                   
767.69/212.99	                                                  [2 0]       [4]                                   
767.69/212.99	                                               >= [4 0] @mm + [4]                                   
767.69/212.99	                                                  [2 0]       [2]                                   
767.69/212.99	                                               =  [matrixMultList#1^#(@mm, @acc)]                   
767.69/212.99	                                                                                                    
767.69/212.99	       [matrixMultList#1^#(::(@m, @ms), @acc)] =  [4 0] @m + [4 0] @ms + [8]                        
767.69/212.99	                                                  [2 0]      [2 0]       [4]                        
767.69/212.99	                                               >  [4 0] @ms + [4]                                   
767.69/212.99	                                                  [2 0]       [4]                                   
767.69/212.99	                                               =  [matrixMultList^#(matrixMult(@acc, @m), @ms)]     
767.69/212.99	                                                                                                    
767.69/212.99	       [matrixMultList#1^#(::(@m, @ms), @acc)] =  [4 0] @m + [4 0] @ms + [8]                        
767.69/212.99	                                                  [2 0]      [2 0]       [4]                        
767.69/212.99	                                               >  [3 0] @m + [4]                                    
767.69/212.99	                                                  [2 0]      [4]                                    
767.69/212.99	                                               =  [matrixMult^#(@acc, @m)]                          
767.69/212.99	                                                                                                    
767.69/212.99	                [matrixMult3^#(@m1, @m2, @m3)] =  [7 7] @m2 + [7 7] @m1 + [7 7] @m3 + [7]           
767.69/212.99	                                                  [7 7]       [7 7]       [7 7]       [7]           
767.69/212.99	                                               >  [3 0] @m2 + [4]                                   
767.69/212.99	                                                  [2 0]       [4]                                   
767.69/212.99	                                               =  [matrixMult^#(@m1, @m2)]                          
767.69/212.99	                                                                                                    
767.69/212.99	                [matrixMult3^#(@m1, @m2, @m3)] =  [7 7] @m2 + [7 7] @m1 + [7 7] @m3 + [7]           
767.69/212.99	                                                  [7 7]       [7 7]       [7 7]       [7]           
767.69/212.99	                                               >  [3 0] @m3 + [4]                                   
767.69/212.99	                                                  [2 0]       [4]                                   
767.69/212.99	                                               =  [matrixMult^#(matrixMult(@m1, @m2), @m3)]         
767.69/212.99	                                                                                                    
767.69/212.99	                      [matrixMult^#(@m1, @m2)] =  [3 0] @m2 + [4]                                   
767.69/212.99	                                                  [2 0]       [4]                                   
767.69/212.99	                                               >  [3 0] @m2 + [0]                                   
767.69/212.99	                                                  [0 0]       [0]                                   
767.69/212.99	                                               =  [matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2)))]
767.69/212.99	                                                                                                    
767.69/212.99	              [mult#2^#(::(@y, @ys), @x, @xs)] =  [1 0] @y + [0 0] @xs + [1 0] @ys + [1]            
767.69/212.99	                                                  [0 0]      [4 0]       [0 0]       [0]            
767.69/212.99	                                               >  [1 0] @ys + [0]                                   
767.69/212.99	                                                  [0 0]       [0]                                   
767.69/212.99	                                               =  [c_3(mult^#(@xs, @ys))]                           
767.69/212.99	                                                                                                    
767.69/212.99	                            [mult^#(@l1, @l2)] =  [0 0] @l1 + [1 0] @l2 + [0]                       
767.69/212.99	                                                  [4 0]       [0 0]       [0]                       
767.69/212.99	                                               >= [1 0] @l2 + [0]                                   
767.69/212.99	                                                  [0 0]       [0]                                   
767.69/212.99	                                               =  [c_4(mult#1^#(@l1, @l2))]                         
767.69/212.99	                                                                                                    
767.69/212.99	                     [matrixMult'^#(@m1, @m2)] =  [1 0] @m2 + [0]                                   
767.69/212.99	                                                  [0 0]       [0]                                   
767.69/212.99	                                               >= [1 0] @m2 + [0]                                   
767.69/212.99	                                                  [0 0]       [0]                                   
767.69/212.99	                                               =  [matrixMult'#1^#(@m1, @m2)]                       
767.69/212.99	                                                                                                    
767.69/212.99	           [matrixMult'#1^#(::(@l, @ls), @m2)] =  [1 0] @m2 + [0]                                   
767.69/212.99	                                                  [0 0]       [0]                                   
767.69/212.99	                                               >= [1 0] @m2 + [0]                                   
767.69/212.99	                                                  [0 0]       [0]                                   
767.69/212.99	                                               =  [matrixMult'^#(@ls, @m2)]                         
767.69/212.99	                                                                                                    
767.69/212.99	           [matrixMult'#1^#(::(@l, @ls), @m2)] =  [1 0] @m2 + [0]                                   
767.69/212.99	                                                  [0 0]       [0]                                   
767.69/212.99	                                               >= [1 0] @m2 + [0]                                   
767.69/212.99	                                                  [0 0]       [0]                                   
767.69/212.99	                                               =  [lineMult^#(@l, @m2)]                             
767.69/212.99	                                                                                                    
767.69/212.99	                  [mult#1^#(::(@x, @xs), @l2)] =  [0 0] @x + [0 0] @xs + [1 0] @l2 + [0]            
767.69/212.99	                                                  [1 0]      [1 0]       [0 0]       [4]            
767.69/212.99	                                               >= [1 0] @l2 + [0]                                   
767.69/212.99	                                                  [0 0]       [3]                                   
767.69/212.99	                                               =  [c_7(mult#2^#(@l2, @x, @xs))]                     
767.69/212.99	                                                                                                    
767.69/212.99	                         [lineMult^#(@l, @m2)] =  [1 0] @m2 + [0]                                   
767.69/212.99	                                                  [0 0]       [0]                                   
767.69/212.99	                                               >= [1 0] @m2 + [0]                                   
767.69/212.99	                                                  [0 0]       [0]                                   
767.69/212.99	                                               =  [c_8(lineMult#1^#(@m2, @l))]                      
767.69/212.99	                                                                                                    
767.69/212.99	                   [matrixMultOld^#(@m1, @m2)] =  [7 7] @m2 + [7 7] @m1 + [7]                       
767.69/212.99	                                                  [7 7]       [7 7]       [7]                       
767.69/212.99	                                               >  [5 4] @m2 + [0]                                   
767.69/212.99	                                                  [0 0]       [0]                                   
767.69/212.99	                                               =  [matrixMult'^#(@m1, transpose(@m2))]              
767.69/212.99	                                                                                                    
767.69/212.99	               [lineMult#1^#(::(@x, @xs), @l)] =  [1 0] @x + [1 0] @xs + [0 0] @l + [1]             
767.69/212.99	                                                  [2 0]      [2 0]       [4 0]      [8]             
767.69/212.99	                                               >= [1 0] @x + [1 0] @xs + [1]                        
767.69/212.99	                                                  [0 0]      [0 0]       [3]                        
767.69/212.99	                                               =  [c_9(mult^#(@l, @x), lineMult^#(@l, @xs))]        
767.69/212.99	                                                                                                    
767.69/212.99	   
767.69/212.99	   We return to the main proof. Consider the set of all dependency
767.69/212.99	   pairs
767.69/212.99	   
767.69/212.99	   :
767.69/212.99	     { 1: mult#2^#(::(@y, @ys), @x, @xs) -> c_3(mult^#(@xs, @ys))
767.69/212.99	     , 2: mult^#(@l1, @l2) -> c_4(mult#1^#(@l1, @l2))
767.69/212.99	     , 3: mult#1^#(::(@x, @xs), @l2) -> c_7(mult#2^#(@l2, @x, @xs))
767.69/212.99	     , 4: lineMult^#(@l, @m2) -> c_8(lineMult#1^#(@m2, @l))
767.69/212.99	     , 5: lineMult#1^#(::(@x, @xs), @l) ->
767.69/212.99	          c_9(mult^#(@l, @x), lineMult^#(@l, @xs))
767.69/212.99	     , 6: matrixMultList^#(@acc, @mm) -> matrixMultList#1^#(@mm, @acc)
767.69/212.99	     , 7: matrixMultList#1^#(::(@m, @ms), @acc) ->
767.69/212.99	          matrixMultList^#(matrixMult(@acc, @m), @ms)
767.69/212.99	     , 8: matrixMultList#1^#(::(@m, @ms), @acc) ->
767.69/212.99	          matrixMult^#(@acc, @m)
767.69/212.99	     , 9: matrixMult3^#(@m1, @m2, @m3) -> matrixMult^#(@m1, @m2)
767.69/212.99	     , 10: matrixMult3^#(@m1, @m2, @m3) ->
767.69/212.99	           matrixMult^#(matrixMult(@m1, @m2), @m3)
767.69/212.99	     , 11: matrixMult^#(@m1, @m2) ->
767.69/212.99	           matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2)))
767.69/212.99	     , 12: matrixMult'^#(@m1, @m2) -> matrixMult'#1^#(@m1, @m2)
767.69/212.99	     , 13: matrixMult'#1^#(::(@l, @ls), @m2) -> matrixMult'^#(@ls, @m2)
767.69/212.99	     , 14: matrixMult'#1^#(::(@l, @ls), @m2) -> lineMult^#(@l, @m2)
767.69/212.99	     , 15: matrixMultOld^#(@m1, @m2) ->
767.69/212.99	           matrixMult'^#(@m1, transpose(@m2)) }
767.69/212.99	   
767.69/212.99	   Processor 'matrix interpretation of dimension 2' induces the
767.69/212.99	   complexity certificate YES(?,O(n^1)) on application of dependency
767.69/212.99	   pairs {1,7,8,9,10,11,15}. These cover all (indirect) predecessors
767.69/212.99	   of dependency pairs {1,6,7,8,9,10,11,15}, their number of
767.69/212.99	   application is equally bounded. The dependency pairs are shifted
767.69/212.99	   into the weak component.
767.69/212.99	   
767.69/212.99	   We are left with following problem, upon which TcT provides the
767.69/212.99	   certificate YES(O(1),O(n^1)).
767.69/212.99	   
767.69/212.99	   Strict DPs:
767.69/212.99	     { mult^#(@l1, @l2) -> c_4(mult#1^#(@l1, @l2))
767.69/212.99	     , mult#1^#(::(@x, @xs), @l2) -> c_7(mult#2^#(@l2, @x, @xs))
767.69/212.99	     , lineMult^#(@l, @m2) -> c_8(lineMult#1^#(@m2, @l))
767.69/212.99	     , lineMult#1^#(::(@x, @xs), @l) ->
767.69/212.99	       c_9(mult^#(@l, @x), lineMult^#(@l, @xs)) }
767.69/212.99	   Weak DPs:
767.69/212.99	     { matrixMultList^#(@acc, @mm) -> matrixMultList#1^#(@mm, @acc)
767.69/212.99	     , matrixMultList#1^#(::(@m, @ms), @acc) ->
767.69/212.99	       matrixMultList^#(matrixMult(@acc, @m), @ms)
767.69/212.99	     , matrixMultList#1^#(::(@m, @ms), @acc) -> matrixMult^#(@acc, @m)
767.69/212.99	     , matrixMult3^#(@m1, @m2, @m3) -> matrixMult^#(@m1, @m2)
767.69/212.99	     , matrixMult3^#(@m1, @m2, @m3) ->
767.69/212.99	       matrixMult^#(matrixMult(@m1, @m2), @m3)
767.69/212.99	     , matrixMult^#(@m1, @m2) ->
767.69/212.99	       matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2)))
767.69/212.99	     , mult#2^#(::(@y, @ys), @x, @xs) -> c_3(mult^#(@xs, @ys))
767.69/212.99	     , matrixMult'^#(@m1, @m2) -> matrixMult'#1^#(@m1, @m2)
767.69/212.99	     , matrixMult'#1^#(::(@l, @ls), @m2) -> matrixMult'^#(@ls, @m2)
767.69/212.99	     , matrixMult'#1^#(::(@l, @ls), @m2) -> lineMult^#(@l, @m2)
767.69/212.99	     , matrixMultOld^#(@m1, @m2) -> matrixMult'^#(@m1, transpose(@m2)) }
767.69/212.99	   Weak Trs:
767.69/212.99	     { attach(@line, @m) -> attach#1(@line, @m)
767.69/212.99	     , split(@m) -> split#1(@m)
767.69/212.99	     , #add(#neg(#s(#0())), @y) -> #pred(@y)
767.69/212.99	     , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
767.69/212.99	     , #add(#pos(#s(#0())), @y) -> #succ(@y)
767.69/212.99	     , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
767.69/212.99	     , #add(#0(), @y) -> @y
767.69/212.99	     , mult#2(nil(), @x, @xs) -> #abs(#0())
767.69/212.99	     , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
767.69/212.99	     , split#1(nil()) -> tuple#2(nil(), nil())
767.69/212.99	     , split#1(::(@l, @ls)) -> split#2(@l, @ls)
767.69/212.99	     , transpose(@m) -> transpose#1(@m, @m)
767.69/212.99	     , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
767.69/212.99	     , transAcc(@m, @base) -> transAcc#1(@m, @base)
767.69/212.99	     , mult(@l1, @l2) -> mult#1(@l1, @l2)
767.69/212.99	     , +(@x, @y) -> #add(@x, @y)
767.69/212.99	     , transAcc#1(nil(), @base) -> @base
767.69/212.99	     , transAcc#1(::(@l, @m'), @base) ->
767.69/212.99	       attach(@l, transAcc(@m', @base))
767.69/212.99	     , *(@x, @y) -> #mult(@x, @y)
767.69/212.99	     , mkBase#1(nil()) -> nil()
767.69/212.99	     , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.69/212.99	     , transpose#3(nil(), @l) -> nil()
767.69/212.99	     , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
767.69/212.99	     , attach#1(nil(), @m) -> nil()
767.69/212.99	     , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.69/212.99	     , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
767.69/212.99	     , matrixMult'#1(nil(), @m2) -> nil()
767.69/212.99	     , matrixMult'#1(::(@l, @ls), @m2) ->
767.69/212.99	       ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
767.69/212.99	     , #natmult(#0(), @y) -> #0()
767.69/212.99	     , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
767.69/212.99	     , split#2(nil(), @ls) -> tuple#2(nil(), nil())
767.69/212.99	     , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
767.69/212.99	     , mkBase(@m) -> mkBase#1(@m)
767.69/212.99	     , makeBase(@m) -> makeBase#1(@m)
767.69/212.99	     , mult#1(nil(), @l2) -> #abs(#0())
767.69/212.99	     , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
767.69/212.99	     , lineMult#1(nil(), @l) -> nil()
767.69/212.99	     , lineMult#1(::(@x, @xs), @l) ->
767.69/212.99	       ::(mult(@l, @x), lineMult(@l, @xs))
767.69/212.99	     , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
767.69/212.99	     , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
767.69/212.99	     , #mult(#neg(@x), #0()) -> #0()
767.69/212.99	     , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
767.69/212.99	     , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
767.69/212.99	     , #mult(#pos(@x), #0()) -> #0()
767.69/212.99	     , #mult(#0(), #neg(@y)) -> #0()
767.69/212.99	     , #mult(#0(), #pos(@y)) -> #0()
767.69/212.99	     , #mult(#0(), #0()) -> #0()
767.69/212.99	     , attach#2(nil(), @x, @xs) -> nil()
767.69/212.99	     , attach#2(::(@l, @ls), @x, @xs) ->
767.69/212.99	       ::(::(@x, @l), attach(@xs, @ls))
767.69/212.99	     , #succ(#neg(#s(#0()))) -> #0()
767.69/212.99	     , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
767.69/212.99	     , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
767.69/212.99	     , #succ(#0()) -> #pos(#s(#0()))
767.69/212.99	     , makeBase#1(nil()) -> nil()
767.69/212.99	     , makeBase#1(::(@l, @m')) -> mkBase(@l)
767.69/212.99	     , matrixMult(@m1, @m2) ->
767.69/212.99	       matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
767.69/212.99	     , #abs(#neg(@x)) -> #pos(@x)
767.69/212.99	     , #abs(#pos(@x)) -> #pos(@x)
767.69/212.99	     , #abs(#0()) -> #0()
767.69/212.99	     , #abs(#s(@x)) -> #pos(#s(@x))
767.69/212.99	     , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
767.69/212.99	     , transpose#1(nil(), @m) -> nil()
767.69/212.99	     , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
767.69/212.99	     , split#3(tuple#2(@ys, @m'), @x, @xs) ->
767.69/212.99	       tuple#2(::(@x, @ys), ::(@xs, @m'))
767.69/212.99	     , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
767.69/212.99	     , #pred(#pos(#s(#0()))) -> #0()
767.69/212.99	     , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
767.69/212.99	     , #pred(#0()) -> #neg(#s(#0())) }
767.69/212.99	   Obligation:
767.69/212.99	     innermost runtime complexity
767.69/212.99	   Answer:
767.69/212.99	     YES(O(1),O(n^1))
767.69/212.99	   
767.69/212.99	   We use the processor 'matrix interpretation of dimension 2' to
767.69/212.99	   orient following rules strictly.
767.69/212.99	   
767.69/212.99	   DPs:
767.69/212.99	     { 4: lineMult#1^#(::(@x, @xs), @l) ->
767.69/212.99	          c_9(mult^#(@l, @x), lineMult^#(@l, @xs))
767.69/212.99	     , 6: matrixMultList#1^#(::(@m, @ms), @acc) ->
767.69/212.99	          matrixMultList^#(matrixMult(@acc, @m), @ms)
767.69/212.99	     , 7: matrixMultList#1^#(::(@m, @ms), @acc) ->
767.69/212.99	          matrixMult^#(@acc, @m)
767.69/212.99	     , 8: matrixMult3^#(@m1, @m2, @m3) -> matrixMult^#(@m1, @m2)
767.69/212.99	     , 9: matrixMult3^#(@m1, @m2, @m3) ->
767.69/212.99	          matrixMult^#(matrixMult(@m1, @m2), @m3)
767.69/212.99	     , 10: matrixMult^#(@m1, @m2) ->
767.69/212.99	           matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2)))
767.69/212.99	     , 11: mult#2^#(::(@y, @ys), @x, @xs) -> c_3(mult^#(@xs, @ys))
767.69/212.99	     , 15: matrixMultOld^#(@m1, @m2) ->
767.69/212.99	           matrixMult'^#(@m1, transpose(@m2)) }
767.69/212.99	   Trs:
767.69/212.99	     { split#1(nil()) -> tuple#2(nil(), nil())
767.69/212.99	     , transAcc#1(::(@l, @m'), @base) ->
767.69/212.99	       attach(@l, transAcc(@m', @base))
767.69/212.99	     , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
767.69/212.99	     , transpose#3(nil(), @l) -> nil()
767.69/212.99	     , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
767.69/212.99	     , mkBase(@m) -> mkBase#1(@m)
767.69/212.99	     , attach#2(nil(), @x, @xs) -> nil()
767.69/212.99	     , makeBase#1(::(@l, @m')) -> mkBase(@l) }
767.69/212.99	   
767.69/212.99	   Sub-proof:
767.69/212.99	   ----------
767.69/212.99	     The following argument positions are usable:
767.69/212.99	       Uargs(c_3) = {1}, Uargs(c_4) = {1}, Uargs(c_7) = {1},
767.69/212.99	       Uargs(c_8) = {1}, Uargs(c_9) = {1, 2}
767.69/212.99	     
767.69/212.99	     TcT has computed the following constructor-based matrix
767.69/212.99	     interpretation satisfying not(EDA) and not(IDA(1)).
767.69/212.99	     
767.69/212.99	                   [attach](x1, x2) = [2 0] x1 + [1 0] x2 + [0]           
767.69/212.99	                                      [0 0]      [0 0]      [4]           
767.69/212.99	                                                                          
767.69/212.99	                        [split](x1) = [1 4] x1 + [0]                      
767.69/212.99	                                      [1 0]      [0]                      
767.69/212.99	                                                                          
767.69/212.99	                     [#add](x1, x2) = [0]                                 
767.69/212.99	                                      [0]                                 
767.69/212.99	                                                                          
767.69/212.99	               [mult#2](x1, x2, x3) = [6 0] x2 + [6 0] x3 + [0]           
767.69/212.99	                                      [6 6]      [6 6]      [0]           
767.69/212.99	                                                                          
767.69/212.99	                              [nil] = [0]                                 
767.69/212.99	                                      [2]                                 
767.69/212.99	                                                                          
767.69/212.99	                      [split#1](x1) = [1 4] x1 + [0]                      
767.69/212.99	                                      [1 0]      [0]                      
767.69/212.99	                                                                          
767.69/212.99	                    [transpose](x1) = [3 4] x1 + [0]                      
767.69/212.99	                                      [4 4]      [4]                      
767.69/212.99	                                                                          
767.69/212.99	              [matrixMult'](x1, x2) = [0]                                 
767.69/212.99	                                      [0]                                 
767.69/212.99	                                                                          
767.69/212.99	                 [transAcc](x1, x2) = [2 0] x1 + [1 0] x2 + [0]           
767.69/212.99	                                      [4 4]      [0 1]      [0]           
767.69/212.99	                                                                          
767.69/212.99	                     [mult](x1, x2) = [6]                                 
767.69/212.99	                                      [0]                                 
767.69/212.99	                                                                          
767.69/212.99	                        [+](x1, x2) = [0]                                 
767.69/212.99	                                      [0]                                 
767.69/212.99	                                                                          
767.69/212.99	               [transAcc#1](x1, x2) = [2 0] x1 + [1 0] x2 + [0]           
767.69/212.99	                                      [4 0]      [0 1]      [0]           
767.69/212.99	                                                                          
767.69/212.99	                         [#neg](x1) = [0]                                 
767.69/212.99	                                      [0]                                 
767.69/212.99	                                                                          
767.69/212.99	                        [*](x1, x2) = [0]                                 
767.69/212.99	                                      [0]                                 
767.69/212.99	                                                                          
767.69/212.99	                     [mkBase#1](x1) = [4 0] x1 + [0]                      
767.69/212.99	                                      [4 0]      [2]                      
767.69/212.99	                                                                          
767.69/212.99	              [transpose#3](x1, x2) = [3 0] x1 + [1 0] x2 + [2]           
767.69/212.99	                                      [0 0]      [3 0]      [2]           
767.69/212.99	                                                                          
767.69/212.99	                 [attach#1](x1, x2) = [2 0] x1 + [1 0] x2 + [0]           
767.69/212.99	                                      [0 0]      [0 0]      [4]           
767.69/212.99	                                                                          
767.69/212.99	                  [transpose#2](x1) = [1 2] x1 + [0]                      
767.69/212.99	                                      [0 4]      [2]                      
767.69/212.99	                                                                          
767.69/212.99	            [matrixMult'#1](x1, x2) = [6 0] x2 + [0]                      
767.69/212.99	                                      [6 6]      [0]                      
767.69/212.99	                                                                          
767.69/212.99	                 [#natmult](x1, x2) = [0]                                 
767.69/212.99	                                      [0]                                 
767.69/212.99	                                                                          
767.69/212.99	                  [split#2](x1, x2) = [1 0] x1 + [1 0] x2 + [2]           
767.69/212.99	                                      [1 0]      [1 0]      [2]           
767.69/212.99	                                                                          
767.69/212.99	                         [#pos](x1) = [1 0] x1 + [0]                      
767.69/212.99	                                      [1 0]      [0]                      
767.69/212.99	                                                                          
767.69/212.99	                  [tuple#2](x1, x2) = [0 0] x1 + [1 0] x2 + [2]           
767.69/212.99	                                      [1 0]      [1 0]      [0]           
767.69/212.99	                                                                          
767.69/212.99	                       [mkBase](x1) = [4 0] x1 + [1]                      
767.69/212.99	                                      [4 0]      [4]                      
767.69/212.99	                                                                          
767.69/212.99	                     [makeBase](x1) = [4 0] x1 + [0]                      
767.69/212.99	                                      [4 4]      [2]                      
767.69/212.99	                                                                          
767.69/212.99	                   [mult#1](x1, x2) = [6 0] x2 + [0]                      
767.69/212.99	                                      [6 4]      [0]                      
767.69/212.99	                                                                          
767.69/212.99	                       [::](x1, x2) = [1 0] x1 + [1 0] x2 + [2]           
767.69/212.99	                                      [0 0]      [0 0]      [0]           
767.69/212.99	                                                                          
767.69/212.99	               [lineMult#1](x1, x2) = [6 0] x2 + [0]                      
767.69/212.99	                                      [6 6]      [0]                      
767.69/212.99	                                                                          
767.69/212.99	                    [#mult](x1, x2) = [0]                                 
767.69/212.99	                                      [0]                                 
767.69/212.99	                                                                          
767.69/212.99	             [attach#2](x1, x2, x3) = [1 0] x1 + [2 0] x2 + [2 0] x3 + [2]
767.69/212.99	                                      [0 0]      [0 0]      [0 0]      [4]
767.69/212.99	                                                                          
767.69/212.99	                        [#succ](x1) = [0]                                 
767.69/212.99	                                      [0]                                 
767.69/212.99	                                                                          
767.69/212.99	                               [#0] = [0]                                 
767.69/212.99	                                      [0]                                 
767.69/212.99	                                                                          
767.69/212.99	                   [makeBase#1](x1) = [4 0] x1 + [0]                      
767.69/212.99	                                      [4 0]      [2]                      
767.69/212.99	                                                                          
767.69/212.99	               [matrixMult](x1, x2) = [0]                                 
767.69/212.99	                                      [0]                                 
767.69/212.99	                                                                          
767.69/212.99	                         [#abs](x1) = [0]                                 
767.69/212.99	                                      [0]                                 
767.69/212.99	                                                                          
767.69/212.99	                 [lineMult](x1, x2) = [2]                                 
767.69/212.99	                                      [0]                                 
767.69/212.99	                                                                          
767.69/212.99	              [transpose#1](x1, x2) = [3 4] x2 + [0]                      
767.69/212.99	                                      [4 4]      [2]                      
767.69/212.99	                                                                          
767.69/212.99	              [split#3](x1, x2, x3) = [0 1] x1 + [0 0] x2 + [1 0] x3 + [4]
767.69/212.99	                                      [0 1]      [1 0]      [1 0]      [4]
767.69/212.99	                                                                          
767.69/212.99	                        [#pred](x1) = [0]                                 
767.69/212.99	                                      [0]                                 
767.69/212.99	                                                                          
767.69/212.99	                           [#s](x1) = [0]                                 
767.69/212.99	                                      [0]                                 
767.69/212.99	                                                                          
767.69/212.99	         [matrixMultList^#](x1, x2) = [6 0] x2 + [0]                      
767.69/212.99	                                      [0 0]      [0]                      
767.69/212.99	                                                                          
767.69/212.99	       [matrixMultList#1^#](x1, x2) = [6 0] x1 + [0]                      
767.69/212.99	                                      [0 0]      [0]                      
767.69/212.99	                                                                          
767.69/212.99	        [matrixMult3^#](x1, x2, x3) = [7 7] x1 + [7 7] x2 + [7 7] x3 + [7]
767.69/212.99	                                      [7 7]      [7 7]      [7 7]      [7]
767.69/212.99	                                                                          
767.69/212.99	             [matrixMult^#](x1, x2) = [6 0] x2 + [4]                      
767.69/212.99	                                      [0 0]      [0]                      
767.69/212.99	                                                                          
767.69/212.99	             [mult#2^#](x1, x2, x3) = [1 0] x1 + [0]                      
767.69/212.99	                                      [0 0]      [4]                      
767.69/212.99	                                                                          
767.69/213.00	                   [mult^#](x1, x2) = [0 0] x1 + [1 0] x2 + [0]           
767.69/213.00	                                      [4 0]      [0 0]      [0]           
767.69/213.00	                                                                          
767.69/213.00	            [matrixMult'^#](x1, x2) = [1 0] x2 + [0]                      
767.69/213.00	                                      [0 0]      [0]                      
767.69/213.00	                                                                          
767.69/213.00	          [matrixMult'#1^#](x1, x2) = [1 0] x2 + [0]                      
767.69/213.00	                                      [0 0]      [0]                      
767.69/213.00	                                                                          
767.69/213.00	                 [mult#1^#](x1, x2) = [1 0] x2 + [0]                      
767.69/213.00	                                      [4 0]      [0]                      
767.69/213.00	                                                                          
767.69/213.00	               [lineMult^#](x1, x2) = [1 0] x2 + [0]                      
767.69/213.00	                                      [0 0]      [0]                      
767.69/213.00	                                                                          
767.69/213.00	          [matrixMultOld^#](x1, x2) = [7 7] x1 + [7 7] x2 + [7]           
767.69/213.00	                                      [7 7]      [7 7]      [7]           
767.69/213.00	                                                                          
767.69/213.00	             [lineMult#1^#](x1, x2) = [1 0] x1 + [0]                      
767.69/213.00	                                      [2 0]      [0]                      
767.69/213.00	                                                                          
767.69/213.00	                          [c_3](x1) = [1 0] x1 + [1]                      
767.69/213.00	                                      [0 0]      [3]                      
767.69/213.00	                                                                          
767.69/213.00	                          [c_4](x1) = [1 0] x1 + [0]                      
767.69/213.00	                                      [0 0]      [0]                      
767.69/213.00	                                                                          
767.69/213.00	                          [c_7](x1) = [1 0] x1 + [0]                      
767.69/213.00	                                      [0 0]      [0]                      
767.69/213.00	                                                                          
767.69/213.00	                          [c_8](x1) = [1 0] x1 + [0]                      
767.69/213.00	                                      [0 0]      [0]                      
767.69/213.00	                                                                          
767.69/213.00	                      [c_9](x1, x2) = [1 0] x1 + [1 0] x2 + [1]           
767.69/213.00	                                      [0 0]      [0 0]      [3]           
767.69/213.00	     
767.69/213.00	     The order satisfies the following ordering constraints:
767.69/213.00	     
767.69/213.00	                           [attach(@line, @m)] =  [2 0] @line + [1 0] @m + [0]                      
767.69/213.00	                                                  [0 0]         [0 0]      [4]                      
767.69/213.00	                                               >= [2 0] @line + [1 0] @m + [0]                      
767.69/213.00	                                                  [0 0]         [0 0]      [4]                      
767.69/213.00	                                               =  [attach#1(@line, @m)]                             
767.69/213.00	                                                                                                    
767.69/213.00	                                   [split(@m)] =  [1 4] @m + [0]                                    
767.69/213.00	                                                  [1 0]      [0]                                    
767.69/213.00	                                               >= [1 4] @m + [0]                                    
767.69/213.00	                                                  [1 0]      [0]                                    
767.69/213.00	                                               =  [split#1(@m)]                                     
767.69/213.00	                                                                                                    
767.69/213.00	                    [#add(#neg(#s(#0())), @y)] =  [0]                                               
767.69/213.00	                                                  [0]                                               
767.69/213.00	                                               >= [0]                                               
767.69/213.00	                                                  [0]                                               
767.69/213.00	                                               =  [#pred(@y)]                                       
767.69/213.00	                                                                                                    
767.69/213.00	                  [#add(#neg(#s(#s(@x))), @y)] =  [0]                                               
767.69/213.00	                                                  [0]                                               
767.69/213.00	                                               >= [0]                                               
767.69/213.00	                                                  [0]                                               
767.69/213.00	                                               =  [#pred(#add(#pos(#s(@x)), @y))]                   
767.69/213.00	                                                                                                    
767.69/213.00	                    [#add(#pos(#s(#0())), @y)] =  [0]                                               
767.69/213.00	                                                  [0]                                               
767.69/213.00	                                               >= [0]                                               
767.69/213.00	                                                  [0]                                               
767.69/213.00	                                               =  [#succ(@y)]                                       
767.69/213.00	                                                                                                    
767.69/213.00	                  [#add(#pos(#s(#s(@x))), @y)] =  [0]                                               
767.69/213.00	                                                  [0]                                               
767.69/213.00	                                               >= [0]                                               
767.69/213.00	                                                  [0]                                               
767.69/213.00	                                               =  [#succ(#add(#pos(#s(@x)), @y))]                   
767.69/213.00	                                                                                                    
767.69/213.00	                              [#add(#0(), @y)] =  [0]                                               
767.69/213.00	                                                  [0]                                               
767.69/213.00	                                               ?  [1 0] @y + [0]                                    
767.69/213.00	                                                  [0 1]      [0]                                    
767.69/213.00	                                               =  [@y]                                              
767.69/213.00	                                                                                                    
767.69/213.00	                      [mult#2(nil(), @x, @xs)] =  [6 0] @x + [6 0] @xs + [0]                        
768.00/213.00	                                                  [6 6]      [6 6]       [0]                        
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [#abs(#0())]                                      
768.00/213.00	                                                                                                    
768.00/213.00	                [mult#2(::(@y, @ys), @x, @xs)] =  [6 0] @x + [6 0] @xs + [0]                        
768.00/213.00	                                                  [6 6]      [6 6]       [0]                        
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [+(*(@x, @y), mult(@xs, @ys))]                    
768.00/213.00	                                                                                                    
768.00/213.00	                              [split#1(nil())] =  [8]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               >  [2]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [tuple#2(nil(), nil())]                           
768.00/213.00	                                                                                                    
768.00/213.00	                        [split#1(::(@l, @ls))] =  [1 0] @l + [1 0] @ls + [2]                        
768.00/213.00	                                                  [1 0]      [1 0]       [2]                        
768.00/213.00	                                               >= [1 0] @l + [1 0] @ls + [2]                        
768.00/213.00	                                                  [1 0]      [1 0]       [2]                        
768.00/213.00	                                               =  [split#2(@l, @ls)]                                
768.00/213.00	                                                                                                    
768.00/213.00	                               [transpose(@m)] =  [3 4] @m + [0]                                    
768.00/213.00	                                                  [4 4]      [4]                                    
768.00/213.00	                                               >= [3 4] @m + [0]                                    
768.00/213.00	                                                  [4 4]      [2]                                    
768.00/213.00	                                               =  [transpose#1(@m, @m)]                             
768.00/213.00	                                                                                                    
768.00/213.00	                       [matrixMult'(@m1, @m2)] =  [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               ?  [6 0] @m2 + [0]                                   
768.00/213.00	                                                  [6 6]       [0]                                   
768.00/213.00	                                               =  [matrixMult'#1(@m1, @m2)]                         
768.00/213.00	                                                                                                    
768.00/213.00	                         [transAcc(@m, @base)] =  [2 0] @m + [1 0] @base + [0]                      
768.00/213.00	                                                  [4 4]      [0 1]         [0]                      
768.00/213.00	                                               >= [2 0] @m + [1 0] @base + [0]                      
768.00/213.00	                                                  [4 0]      [0 1]         [0]                      
768.00/213.00	                                               =  [transAcc#1(@m, @base)]                           
768.00/213.00	                                                                                                    
768.00/213.00	                              [mult(@l1, @l2)] =  [6]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               ?  [6 0] @l2 + [0]                                   
768.00/213.00	                                                  [6 4]       [0]                                   
768.00/213.00	                                               =  [mult#1(@l1, @l2)]                                
768.00/213.00	                                                                                                    
768.00/213.00	                                   [+(@x, @y)] =  [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [#add(@x, @y)]                                    
768.00/213.00	                                                                                                    
768.00/213.00	                    [transAcc#1(nil(), @base)] =  [1 0] @base + [0]                                 
768.00/213.00	                                                  [0 1]         [0]                                 
768.00/213.00	                                               >= [1 0] @base + [0]                                 
768.00/213.00	                                                  [0 1]         [0]                                 
768.00/213.00	                                               =  [@base]                                           
768.00/213.00	                                                                                                    
768.00/213.00	              [transAcc#1(::(@l, @m'), @base)] =  [2 0] @l + [2 0] @m' + [1 0] @base + [4]          
768.00/213.00	                                                  [4 0]      [4 0]       [0 1]         [8]          
768.00/213.00	                                               >  [2 0] @l + [2 0] @m' + [1 0] @base + [0]          
768.00/213.00	                                                  [0 0]      [0 0]       [0 0]         [4]          
768.00/213.00	                                               =  [attach(@l, transAcc(@m', @base))]                
768.00/213.00	                                                                                                    
768.00/213.00	                                   [*(@x, @y)] =  [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [#mult(@x, @y)]                                   
768.00/213.00	                                                                                                    
768.00/213.00	                             [mkBase#1(nil())] =  [0]                                               
768.00/213.00	                                                  [2]                                               
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [2]                                               
768.00/213.00	                                               =  [nil()]                                           
768.00/213.00	                                                                                                    
768.00/213.00	                       [mkBase#1(::(@l, @m'))] =  [4 0] @l + [4 0] @m' + [8]                        
768.00/213.00	                                                  [4 0]      [4 0]       [10]                       
768.00/213.00	                                               >  [4 0] @m' + [3]                                   
768.00/213.00	                                                  [0 0]       [0]                                   
768.00/213.00	                                               =  [::(nil(), mkBase(@m'))]                          
768.00/213.00	                                                                                                    
768.00/213.00	                      [transpose#3(nil(), @l)] =  [1 0] @l + [2]                                    
768.00/213.00	                                                  [3 0]      [2]                                    
768.00/213.00	                                               >  [0]                                               
768.00/213.00	                                                  [2]                                               
768.00/213.00	                                               =  [nil()]                                           
768.00/213.00	                                                                                                    
768.00/213.00	                [transpose#3(::(@y, @ys), @l)] =  [3 0] @y + [1 0] @l + [3 0] @ys + [8]             
768.00/213.00	                                                  [0 0]      [3 0]      [0 0]       [2]             
768.00/213.00	                                               >= [3 0] @y + [1 0] @l + [3 0] @ys + [8]             
768.00/213.00	                                                  [0 0]      [0 0]      [0 0]       [0]             
768.00/213.00	                                               =  [::(@l, transpose(::(@y, @ys)))]                  
768.00/213.00	                                                                                                    
768.00/213.00	                         [attach#1(nil(), @m)] =  [1 0] @m + [0]                                    
768.00/213.00	                                                  [0 0]      [4]                                    
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [2]                                               
768.00/213.00	                                               =  [nil()]                                           
768.00/213.00	                                                                                                    
768.00/213.00	                   [attach#1(::(@x, @xs), @m)] =  [2 0] @x + [1 0] @m + [2 0] @xs + [4]             
768.00/213.00	                                                  [0 0]      [0 0]      [0 0]       [4]             
768.00/213.00	                                               >  [2 0] @x + [1 0] @m + [2 0] @xs + [2]             
768.00/213.00	                                                  [0 0]      [0 0]      [0 0]       [4]             
768.00/213.00	                                               =  [attach#2(@m, @x, @xs)]                           
768.00/213.00	                                                                                                    
768.00/213.00	               [transpose#2(tuple#2(@l, @m'))] =  [2 0] @l + [3 0] @m' + [2]                        
768.00/213.00	                                                  [4 0]      [4 0]       [2]                        
768.00/213.00	                                               >= [1 0] @l + [3 0] @m' + [2]                        
768.00/213.00	                                                  [3 0]      [0 0]       [2]                        
768.00/213.00	                                               =  [transpose#3(@m', @l)]                            
768.00/213.00	                                                                                                    
768.00/213.00	                   [matrixMult'#1(nil(), @m2)] =  [6 0] @m2 + [0]                                   
768.00/213.00	                                                  [6 6]       [0]                                   
768.00/213.00	                                               ?  [0]                                               
768.00/213.00	                                                  [2]                                               
768.00/213.00	                                               =  [nil()]                                           
768.00/213.00	                                                                                                    
768.00/213.00	             [matrixMult'#1(::(@l, @ls), @m2)] =  [6 0] @m2 + [0]                                   
768.00/213.00	                                                  [6 6]       [0]                                   
768.00/213.00	                                               ?  [4]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [::(lineMult(@l, @m2), matrixMult'(@ls, @m2))]    
768.00/213.00	                                                                                                    
768.00/213.00	                          [#natmult(#0(), @y)] =  [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [#0()]                                            
768.00/213.00	                                                                                                    
768.00/213.00	                        [#natmult(#s(@x), @y)] =  [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [#add(#pos(@y), #natmult(@x, @y))]                
768.00/213.00	                                                                                                    
768.00/213.00	                         [split#2(nil(), @ls)] =  [1 0] @ls + [2]                                   
768.00/213.00	                                                  [1 0]       [2]                                   
768.00/213.00	                                               >= [2]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [tuple#2(nil(), nil())]                           
768.00/213.00	                                                                                                    
768.00/213.00	                   [split#2(::(@x, @xs), @ls)] =  [1 0] @x + [1 0] @xs + [1 0] @ls + [4]            
768.00/213.00	                                                  [1 0]      [1 0]       [1 0]       [4]            
768.00/213.00	                                               >= [0 0] @x + [1 0] @xs + [1 0] @ls + [4]            
768.00/213.00	                                                  [1 0]      [1 0]       [1 0]       [4]            
768.00/213.00	                                               =  [split#3(split(@ls), @x, @xs)]                    
768.00/213.00	                                                                                                    
768.00/213.00	                                  [mkBase(@m)] =  [4 0] @m + [1]                                    
768.00/213.00	                                                  [4 0]      [4]                                    
768.00/213.00	                                               >  [4 0] @m + [0]                                    
768.00/213.00	                                                  [4 0]      [2]                                    
768.00/213.00	                                               =  [mkBase#1(@m)]                                    
768.00/213.00	                                                                                                    
768.00/213.00	                                [makeBase(@m)] =  [4 0] @m + [0]                                    
768.00/213.00	                                                  [4 4]      [2]                                    
768.00/213.00	                                               >= [4 0] @m + [0]                                    
768.00/213.00	                                                  [4 0]      [2]                                    
768.00/213.00	                                               =  [makeBase#1(@m)]                                  
768.00/213.00	                                                                                                    
768.00/213.00	                          [mult#1(nil(), @l2)] =  [6 0] @l2 + [0]                                   
768.00/213.00	                                                  [6 4]       [0]                                   
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [#abs(#0())]                                      
768.00/213.00	                                                                                                    
768.00/213.00	                    [mult#1(::(@x, @xs), @l2)] =  [6 0] @l2 + [0]                                   
768.00/213.00	                                                  [6 4]       [0]                                   
768.00/213.00	                                               ?  [6 0] @x + [6 0] @xs + [0]                        
768.00/213.00	                                                  [6 6]      [6 6]       [0]                        
768.00/213.00	                                               =  [mult#2(@l2, @x, @xs)]                            
768.00/213.00	                                                                                                    
768.00/213.00	                       [lineMult#1(nil(), @l)] =  [6 0] @l + [0]                                    
768.00/213.00	                                                  [6 6]      [0]                                    
768.00/213.00	                                               ?  [0]                                               
768.00/213.00	                                                  [2]                                               
768.00/213.00	                                               =  [nil()]                                           
768.00/213.00	                                                                                                    
768.00/213.00	                 [lineMult#1(::(@x, @xs), @l)] =  [6 0] @l + [0]                                    
768.00/213.00	                                                  [6 6]      [0]                                    
768.00/213.00	                                               ?  [10]                                              
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [::(mult(@l, @x), lineMult(@l, @xs))]             
768.00/213.00	                                                                                                    
768.00/213.00	                   [#mult(#neg(@x), #neg(@y))] =  [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [#pos(#natmult(@x, @y))]                          
768.00/213.00	                                                                                                    
768.00/213.00	                   [#mult(#neg(@x), #pos(@y))] =  [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [#neg(#natmult(@x, @y))]                          
768.00/213.00	                                                                                                    
768.00/213.00	                       [#mult(#neg(@x), #0())] =  [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [#0()]                                            
768.00/213.00	                                                                                                    
768.00/213.00	                   [#mult(#pos(@x), #neg(@y))] =  [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [#neg(#natmult(@x, @y))]                          
768.00/213.00	                                                                                                    
768.00/213.00	                   [#mult(#pos(@x), #pos(@y))] =  [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [#pos(#natmult(@x, @y))]                          
768.00/213.00	                                                                                                    
768.00/213.00	                       [#mult(#pos(@x), #0())] =  [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [#0()]                                            
768.00/213.00	                                                                                                    
768.00/213.00	                       [#mult(#0(), #neg(@y))] =  [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [#0()]                                            
768.00/213.00	                                                                                                    
768.00/213.00	                       [#mult(#0(), #pos(@y))] =  [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [#0()]                                            
768.00/213.00	                                                                                                    
768.00/213.00	                           [#mult(#0(), #0())] =  [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [#0()]                                            
768.00/213.00	                                                                                                    
768.00/213.00	                    [attach#2(nil(), @x, @xs)] =  [2 0] @x + [2 0] @xs + [2]                        
768.00/213.00	                                                  [0 0]      [0 0]       [4]                        
768.00/213.00	                                               >  [0]                                               
768.00/213.00	                                                  [2]                                               
768.00/213.00	                                               =  [nil()]                                           
768.00/213.00	                                                                                                    
768.00/213.00	              [attach#2(::(@l, @ls), @x, @xs)] =  [2 0] @x + [2 0] @xs + [1 0] @l + [1 0] @ls + [4] 
768.00/213.00	                                                  [0 0]      [0 0]       [0 0]      [0 0]       [4] 
768.00/213.00	                                               >= [1 0] @x + [2 0] @xs + [1 0] @l + [1 0] @ls + [4] 
768.00/213.00	                                                  [0 0]      [0 0]       [0 0]      [0 0]       [0] 
768.00/213.00	                                               =  [::(::(@x, @l), attach(@xs, @ls))]                
768.00/213.00	                                                                                                    
768.00/213.00	                       [#succ(#neg(#s(#0())))] =  [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [#0()]                                            
768.00/213.00	                                                                                                    
768.00/213.00	                     [#succ(#neg(#s(#s(@x))))] =  [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [#neg(#s(@x))]                                    
768.00/213.00	                                                                                                    
768.00/213.00	                         [#succ(#pos(#s(@x)))] =  [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [#pos(#s(#s(@x)))]                                
768.00/213.00	                                                                                                    
768.00/213.00	                                 [#succ(#0())] =  [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [#pos(#s(#0()))]                                  
768.00/213.00	                                                                                                    
768.00/213.00	                           [makeBase#1(nil())] =  [0]                                               
768.00/213.00	                                                  [2]                                               
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [2]                                               
768.00/213.00	                                               =  [nil()]                                           
768.00/213.00	                                                                                                    
768.00/213.00	                     [makeBase#1(::(@l, @m'))] =  [4 0] @l + [4 0] @m' + [8]                        
768.00/213.00	                                                  [4 0]      [4 0]       [10]                       
768.00/213.00	                                               >  [4 0] @l + [1]                                    
768.00/213.00	                                                  [4 0]      [4]                                    
768.00/213.00	                                               =  [mkBase(@l)]                                      
768.00/213.00	                                                                                                    
768.00/213.00	                        [matrixMult(@m1, @m2)] =  [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))]  
768.00/213.00	                                                                                                    
768.00/213.00	                              [#abs(#neg(@x))] =  [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               ?  [1 0] @x + [0]                                    
768.00/213.00	                                                  [1 0]      [0]                                    
768.00/213.00	                                               =  [#pos(@x)]                                        
768.00/213.00	                                                                                                    
768.00/213.00	                              [#abs(#pos(@x))] =  [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               ?  [1 0] @x + [0]                                    
768.00/213.00	                                                  [1 0]      [0]                                    
768.00/213.00	                                               =  [#pos(@x)]                                        
768.00/213.00	                                                                                                    
768.00/213.00	                                  [#abs(#0())] =  [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [#0()]                                            
768.00/213.00	                                                                                                    
768.00/213.00	                                [#abs(#s(@x))] =  [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [#pos(#s(@x))]                                    
768.00/213.00	                                                                                                    
768.00/213.00	                           [lineMult(@l, @m2)] =  [2]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               ?  [6 0] @l + [0]                                    
768.00/213.00	                                                  [6 6]      [0]                                    
768.00/213.00	                                               =  [lineMult#1(@m2, @l)]                             
768.00/213.00	                                                                                                    
768.00/213.00	                      [transpose#1(nil(), @m)] =  [3 4] @m + [0]                                    
768.00/213.00	                                                  [4 4]      [2]                                    
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [2]                                               
768.00/213.00	                                               =  [nil()]                                           
768.00/213.00	                                                                                                    
768.00/213.00	              [transpose#1(::(@xs, @xss), @m)] =  [3 4] @m + [0]                                    
768.00/213.00	                                                  [4 4]      [2]                                    
768.00/213.00	                                               >= [3 4] @m + [0]                                    
768.00/213.00	                                                  [4 0]      [2]                                    
768.00/213.00	                                               =  [transpose#2(split(@m))]                          
768.00/213.00	                                                                                                    
768.00/213.00	         [split#3(tuple#2(@ys, @m'), @x, @xs)] =  [0 0] @x + [1 0] @xs + [1 0] @m' + [1 0] @ys + [4]
768.00/213.00	                                                  [1 0]      [1 0]       [1 0]       [1 0]       [4]
768.00/213.00	                                               >= [0 0] @x + [1 0] @xs + [1 0] @m' + [0 0] @ys + [4]
768.00/213.00	                                                  [1 0]      [1 0]       [1 0]       [1 0]       [4]
768.00/213.00	                                               =  [tuple#2(::(@x, @ys), ::(@xs, @m'))]              
768.00/213.00	                                                                                                    
768.00/213.00	                         [#pred(#neg(#s(@x)))] =  [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [#neg(#s(#s(@x)))]                                
768.00/213.00	                                                                                                    
768.00/213.00	                       [#pred(#pos(#s(#0())))] =  [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [#0()]                                            
768.00/213.00	                                                                                                    
768.00/213.00	                     [#pred(#pos(#s(#s(@x))))] =  [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [#pos(#s(@x))]                                    
768.00/213.00	                                                                                                    
768.00/213.00	                                 [#pred(#0())] =  [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               >= [0]                                               
768.00/213.00	                                                  [0]                                               
768.00/213.00	                                               =  [#neg(#s(#0()))]                                  
768.00/213.00	                                                                                                    
768.00/213.00	                 [matrixMultList^#(@acc, @mm)] =  [6 0] @mm + [0]                                   
768.00/213.00	                                                  [0 0]       [0]                                   
768.00/213.00	                                               >= [6 0] @mm + [0]                                   
768.00/213.00	                                                  [0 0]       [0]                                   
768.00/213.00	                                               =  [matrixMultList#1^#(@mm, @acc)]                   
768.00/213.00	                                                                                                    
768.00/213.00	       [matrixMultList#1^#(::(@m, @ms), @acc)] =  [6 0] @m + [6 0] @ms + [12]                       
768.00/213.00	                                                  [0 0]      [0 0]       [0]                        
768.00/213.00	                                               >  [6 0] @ms + [0]                                   
768.00/213.00	                                                  [0 0]       [0]                                   
768.00/213.00	                                               =  [matrixMultList^#(matrixMult(@acc, @m), @ms)]     
768.00/213.00	                                                                                                    
768.00/213.00	       [matrixMultList#1^#(::(@m, @ms), @acc)] =  [6 0] @m + [6 0] @ms + [12]                       
768.00/213.00	                                                  [0 0]      [0 0]       [0]                        
768.00/213.00	                                               >  [6 0] @m + [4]                                    
768.00/213.00	                                                  [0 0]      [0]                                    
768.00/213.00	                                               =  [matrixMult^#(@acc, @m)]                          
768.00/213.00	                                                                                                    
768.00/213.00	                [matrixMult3^#(@m1, @m2, @m3)] =  [7 7] @m2 + [7 7] @m1 + [7 7] @m3 + [7]           
768.00/213.00	                                                  [7 7]       [7 7]       [7 7]       [7]           
768.00/213.00	                                               >  [6 0] @m2 + [4]                                   
768.00/213.00	                                                  [0 0]       [0]                                   
768.00/213.00	                                               =  [matrixMult^#(@m1, @m2)]                          
768.00/213.00	                                                                                                    
768.00/213.00	                [matrixMult3^#(@m1, @m2, @m3)] =  [7 7] @m2 + [7 7] @m1 + [7 7] @m3 + [7]           
768.00/213.00	                                                  [7 7]       [7 7]       [7 7]       [7]           
768.00/213.00	                                               >  [6 0] @m3 + [4]                                   
768.00/213.00	                                                  [0 0]       [0]                                   
768.00/213.00	                                               =  [matrixMult^#(matrixMult(@m1, @m2), @m3)]         
768.00/213.00	                                                                                                    
768.00/213.00	                      [matrixMult^#(@m1, @m2)] =  [6 0] @m2 + [4]                                   
768.00/213.00	                                                  [0 0]       [0]                                   
768.00/213.00	                                               >  [6 0] @m2 + [0]                                   
768.00/213.00	                                                  [0 0]       [0]                                   
768.00/213.00	                                               =  [matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2)))]
768.00/213.00	                                                                                                    
768.00/213.00	              [mult#2^#(::(@y, @ys), @x, @xs)] =  [1 0] @y + [1 0] @ys + [2]                        
768.00/213.00	                                                  [0 0]      [0 0]       [4]                        
768.00/213.00	                                               >  [1 0] @ys + [1]                                   
768.00/213.00	                                                  [0 0]       [3]                                   
768.00/213.00	                                               =  [c_3(mult^#(@xs, @ys))]                           
768.00/213.00	                                                                                                    
768.00/213.00	                            [mult^#(@l1, @l2)] =  [0 0] @l1 + [1 0] @l2 + [0]                       
768.00/213.00	                                                  [4 0]       [0 0]       [0]                       
768.00/213.00	                                               >= [1 0] @l2 + [0]                                   
768.00/213.00	                                                  [0 0]       [0]                                   
768.00/213.00	                                               =  [c_4(mult#1^#(@l1, @l2))]                         
768.00/213.00	                                                                                                    
768.00/213.00	                     [matrixMult'^#(@m1, @m2)] =  [1 0] @m2 + [0]                                   
768.00/213.00	                                                  [0 0]       [0]                                   
768.00/213.00	                                               >= [1 0] @m2 + [0]                                   
768.00/213.00	                                                  [0 0]       [0]                                   
768.00/213.00	                                               =  [matrixMult'#1^#(@m1, @m2)]                       
768.00/213.00	                                                                                                    
768.00/213.00	           [matrixMult'#1^#(::(@l, @ls), @m2)] =  [1 0] @m2 + [0]                                   
768.00/213.00	                                                  [0 0]       [0]                                   
768.00/213.00	                                               >= [1 0] @m2 + [0]                                   
768.00/213.00	                                                  [0 0]       [0]                                   
768.00/213.00	                                               =  [matrixMult'^#(@ls, @m2)]                         
768.00/213.00	                                                                                                    
768.00/213.00	           [matrixMult'#1^#(::(@l, @ls), @m2)] =  [1 0] @m2 + [0]                                   
768.00/213.00	                                                  [0 0]       [0]                                   
768.00/213.00	                                               >= [1 0] @m2 + [0]                                   
768.00/213.00	                                                  [0 0]       [0]                                   
768.00/213.00	                                               =  [lineMult^#(@l, @m2)]                             
768.00/213.00	                                                                                                    
768.00/213.00	                  [mult#1^#(::(@x, @xs), @l2)] =  [1 0] @l2 + [0]                                   
768.00/213.00	                                                  [4 0]       [0]                                   
768.00/213.00	                                               >= [1 0] @l2 + [0]                                   
768.00/213.00	                                                  [0 0]       [0]                                   
768.00/213.00	                                               =  [c_7(mult#2^#(@l2, @x, @xs))]                     
768.00/213.00	                                                                                                    
768.00/213.00	                         [lineMult^#(@l, @m2)] =  [1 0] @m2 + [0]                                   
768.00/213.00	                                                  [0 0]       [0]                                   
768.00/213.00	                                               >= [1 0] @m2 + [0]                                   
768.00/213.00	                                                  [0 0]       [0]                                   
768.00/213.00	                                               =  [c_8(lineMult#1^#(@m2, @l))]                      
768.00/213.00	                                                                                                    
768.00/213.00	                   [matrixMultOld^#(@m1, @m2)] =  [7 7] @m2 + [7 7] @m1 + [7]                       
768.00/213.00	                                                  [7 7]       [7 7]       [7]                       
768.00/213.00	                                               >  [3 4] @m2 + [0]                                   
768.00/213.00	                                                  [0 0]       [0]                                   
768.00/213.00	                                               =  [matrixMult'^#(@m1, transpose(@m2))]              
768.00/213.00	                                                                                                    
768.00/213.00	               [lineMult#1^#(::(@x, @xs), @l)] =  [1 0] @x + [1 0] @xs + [2]                        
768.00/213.00	                                                  [2 0]      [2 0]       [4]                        
768.00/213.00	                                               >  [1 0] @x + [1 0] @xs + [1]                        
768.00/213.00	                                                  [0 0]      [0 0]       [3]                        
768.00/213.00	                                               =  [c_9(mult^#(@l, @x), lineMult^#(@l, @xs))]        
768.00/213.00	                                                                                                    
768.00/213.00	   
768.00/213.00	   We return to the main proof. Consider the set of all dependency
768.00/213.00	   pairs
768.00/213.00	   
768.00/213.00	   :
768.00/213.00	     { 1: mult^#(@l1, @l2) -> c_4(mult#1^#(@l1, @l2))
768.00/213.00	     , 2: mult#1^#(::(@x, @xs), @l2) -> c_7(mult#2^#(@l2, @x, @xs))
768.00/213.00	     , 3: lineMult^#(@l, @m2) -> c_8(lineMult#1^#(@m2, @l))
768.00/213.00	     , 4: lineMult#1^#(::(@x, @xs), @l) ->
768.00/213.00	          c_9(mult^#(@l, @x), lineMult^#(@l, @xs))
768.00/213.00	     , 5: matrixMultList^#(@acc, @mm) -> matrixMultList#1^#(@mm, @acc)
768.00/213.00	     , 6: matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.00	          matrixMultList^#(matrixMult(@acc, @m), @ms)
768.00/213.00	     , 7: matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.00	          matrixMult^#(@acc, @m)
768.00/213.00	     , 8: matrixMult3^#(@m1, @m2, @m3) -> matrixMult^#(@m1, @m2)
768.00/213.00	     , 9: matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.00	          matrixMult^#(matrixMult(@m1, @m2), @m3)
768.00/213.00	     , 10: matrixMult^#(@m1, @m2) ->
768.00/213.00	           matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.00	     , 11: mult#2^#(::(@y, @ys), @x, @xs) -> c_3(mult^#(@xs, @ys))
768.00/213.00	     , 12: matrixMult'^#(@m1, @m2) -> matrixMult'#1^#(@m1, @m2)
768.00/213.00	     , 13: matrixMult'#1^#(::(@l, @ls), @m2) -> matrixMult'^#(@ls, @m2)
768.00/213.00	     , 14: matrixMult'#1^#(::(@l, @ls), @m2) -> lineMult^#(@l, @m2)
768.00/213.00	     , 15: matrixMultOld^#(@m1, @m2) ->
768.00/213.00	           matrixMult'^#(@m1, transpose(@m2)) }
768.00/213.00	   
768.00/213.00	   Processor 'matrix interpretation of dimension 2' induces the
768.00/213.00	   complexity certificate YES(?,O(n^1)) on application of dependency
768.00/213.00	   pairs {4,6,7,8,9,10,11,15}. These cover all (indirect) predecessors
768.00/213.00	   of dependency pairs {1,2,4,5,6,7,8,9,10,11,15}, their number of
768.00/213.00	   application is equally bounded. The dependency pairs are shifted
768.00/213.00	   into the weak component.
768.00/213.00	   
768.00/213.00	   We are left with following problem, upon which TcT provides the
768.00/213.00	   certificate YES(O(1),O(n^1)).
768.00/213.00	   
768.00/213.00	   Strict DPs: { lineMult^#(@l, @m2) -> c_8(lineMult#1^#(@m2, @l)) }
768.00/213.00	   Weak DPs:
768.00/213.00	     { matrixMultList^#(@acc, @mm) -> matrixMultList#1^#(@mm, @acc)
768.00/213.00	     , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.00	       matrixMultList^#(matrixMult(@acc, @m), @ms)
768.00/213.00	     , matrixMultList#1^#(::(@m, @ms), @acc) -> matrixMult^#(@acc, @m)
768.00/213.00	     , matrixMult3^#(@m1, @m2, @m3) -> matrixMult^#(@m1, @m2)
768.00/213.00	     , matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.00	       matrixMult^#(matrixMult(@m1, @m2), @m3)
768.00/213.00	     , matrixMult^#(@m1, @m2) ->
768.00/213.00	       matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.00	     , mult#2^#(::(@y, @ys), @x, @xs) -> c_3(mult^#(@xs, @ys))
768.00/213.00	     , mult^#(@l1, @l2) -> c_4(mult#1^#(@l1, @l2))
768.00/213.00	     , matrixMult'^#(@m1, @m2) -> matrixMult'#1^#(@m1, @m2)
768.00/213.00	     , matrixMult'#1^#(::(@l, @ls), @m2) -> matrixMult'^#(@ls, @m2)
768.00/213.00	     , matrixMult'#1^#(::(@l, @ls), @m2) -> lineMult^#(@l, @m2)
768.00/213.00	     , mult#1^#(::(@x, @xs), @l2) -> c_7(mult#2^#(@l2, @x, @xs))
768.00/213.01	     , matrixMultOld^#(@m1, @m2) -> matrixMult'^#(@m1, transpose(@m2))
768.00/213.01	     , lineMult#1^#(::(@x, @xs), @l) ->
768.00/213.01	       c_9(mult^#(@l, @x), lineMult^#(@l, @xs)) }
768.00/213.01	   Weak Trs:
768.00/213.01	     { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.01	     , split(@m) -> split#1(@m)
768.00/213.01	     , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.01	     , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.01	     , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.01	     , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.01	     , #add(#0(), @y) -> @y
768.00/213.01	     , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.01	     , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.01	     , split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.01	     , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.00/213.01	     , transpose(@m) -> transpose#1(@m, @m)
768.00/213.01	     , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.01	     , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.01	     , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.01	     , +(@x, @y) -> #add(@x, @y)
768.00/213.01	     , transAcc#1(nil(), @base) -> @base
768.00/213.01	     , transAcc#1(::(@l, @m'), @base) ->
768.00/213.01	       attach(@l, transAcc(@m', @base))
768.00/213.01	     , *(@x, @y) -> #mult(@x, @y)
768.00/213.01	     , mkBase#1(nil()) -> nil()
768.00/213.01	     , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.01	     , transpose#3(nil(), @l) -> nil()
768.00/213.01	     , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
768.00/213.01	     , attach#1(nil(), @m) -> nil()
768.00/213.01	     , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.01	     , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
768.00/213.01	     , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.01	     , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.01	       ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.01	     , #natmult(#0(), @y) -> #0()
768.00/213.01	     , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.01	     , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.01	     , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.00/213.01	     , mkBase(@m) -> mkBase#1(@m)
768.00/213.01	     , makeBase(@m) -> makeBase#1(@m)
768.00/213.01	     , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.01	     , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.01	     , lineMult#1(nil(), @l) -> nil()
768.00/213.01	     , lineMult#1(::(@x, @xs), @l) ->
768.00/213.01	       ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.01	     , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.01	     , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.01	     , #mult(#neg(@x), #0()) -> #0()
768.00/213.01	     , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.01	     , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.01	     , #mult(#pos(@x), #0()) -> #0()
768.00/213.01	     , #mult(#0(), #neg(@y)) -> #0()
768.00/213.01	     , #mult(#0(), #pos(@y)) -> #0()
768.00/213.01	     , #mult(#0(), #0()) -> #0()
768.00/213.01	     , attach#2(nil(), @x, @xs) -> nil()
768.00/213.01	     , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.01	       ::(::(@x, @l), attach(@xs, @ls))
768.00/213.01	     , #succ(#neg(#s(#0()))) -> #0()
768.00/213.01	     , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.01	     , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.01	     , #succ(#0()) -> #pos(#s(#0()))
768.00/213.01	     , makeBase#1(nil()) -> nil()
768.00/213.01	     , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.01	     , matrixMult(@m1, @m2) ->
768.00/213.01	       matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.01	     , #abs(#neg(@x)) -> #pos(@x)
768.00/213.01	     , #abs(#pos(@x)) -> #pos(@x)
768.00/213.01	     , #abs(#0()) -> #0()
768.00/213.01	     , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.01	     , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.01	     , transpose#1(nil(), @m) -> nil()
768.00/213.01	     , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
768.00/213.01	     , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.00/213.01	       tuple#2(::(@x, @ys), ::(@xs, @m'))
768.00/213.01	     , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.01	     , #pred(#pos(#s(#0()))) -> #0()
768.00/213.01	     , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.01	     , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.01	   Obligation:
768.00/213.01	     innermost runtime complexity
768.00/213.01	   Answer:
768.00/213.01	     YES(O(1),O(n^1))
768.00/213.01	   
768.00/213.01	   The following weak DPs constitute a sub-graph of the DG that is
768.00/213.01	   closed under successors. The DPs are removed.
768.00/213.01	   
768.00/213.01	   { mult#2^#(::(@y, @ys), @x, @xs) -> c_3(mult^#(@xs, @ys))
768.00/213.01	   , mult^#(@l1, @l2) -> c_4(mult#1^#(@l1, @l2))
768.00/213.01	   , mult#1^#(::(@x, @xs), @l2) -> c_7(mult#2^#(@l2, @x, @xs)) }
768.00/213.01	   
768.00/213.01	   We are left with following problem, upon which TcT provides the
768.00/213.01	   certificate YES(O(1),O(n^1)).
768.00/213.01	   
768.00/213.01	   Strict DPs: { lineMult^#(@l, @m2) -> c_8(lineMult#1^#(@m2, @l)) }
768.00/213.01	   Weak DPs:
768.00/213.01	     { matrixMultList^#(@acc, @mm) -> matrixMultList#1^#(@mm, @acc)
768.00/213.01	     , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.01	       matrixMultList^#(matrixMult(@acc, @m), @ms)
768.00/213.01	     , matrixMultList#1^#(::(@m, @ms), @acc) -> matrixMult^#(@acc, @m)
768.00/213.01	     , matrixMult3^#(@m1, @m2, @m3) -> matrixMult^#(@m1, @m2)
768.00/213.01	     , matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.01	       matrixMult^#(matrixMult(@m1, @m2), @m3)
768.00/213.01	     , matrixMult^#(@m1, @m2) ->
768.00/213.01	       matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.01	     , matrixMult'^#(@m1, @m2) -> matrixMult'#1^#(@m1, @m2)
768.00/213.01	     , matrixMult'#1^#(::(@l, @ls), @m2) -> matrixMult'^#(@ls, @m2)
768.00/213.01	     , matrixMult'#1^#(::(@l, @ls), @m2) -> lineMult^#(@l, @m2)
768.00/213.01	     , matrixMultOld^#(@m1, @m2) -> matrixMult'^#(@m1, transpose(@m2))
768.00/213.01	     , lineMult#1^#(::(@x, @xs), @l) ->
768.00/213.01	       c_9(mult^#(@l, @x), lineMult^#(@l, @xs)) }
768.00/213.01	   Weak Trs:
768.00/213.01	     { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.01	     , split(@m) -> split#1(@m)
768.00/213.01	     , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.01	     , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.01	     , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.01	     , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.01	     , #add(#0(), @y) -> @y
768.00/213.01	     , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.01	     , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.01	     , split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.01	     , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.00/213.01	     , transpose(@m) -> transpose#1(@m, @m)
768.00/213.01	     , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.01	     , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.01	     , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.01	     , +(@x, @y) -> #add(@x, @y)
768.00/213.01	     , transAcc#1(nil(), @base) -> @base
768.00/213.01	     , transAcc#1(::(@l, @m'), @base) ->
768.00/213.01	       attach(@l, transAcc(@m', @base))
768.00/213.01	     , *(@x, @y) -> #mult(@x, @y)
768.00/213.01	     , mkBase#1(nil()) -> nil()
768.00/213.01	     , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.01	     , transpose#3(nil(), @l) -> nil()
768.00/213.01	     , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
768.00/213.01	     , attach#1(nil(), @m) -> nil()
768.00/213.01	     , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.01	     , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
768.00/213.01	     , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.01	     , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.01	       ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.01	     , #natmult(#0(), @y) -> #0()
768.00/213.01	     , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.01	     , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.01	     , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.00/213.01	     , mkBase(@m) -> mkBase#1(@m)
768.00/213.01	     , makeBase(@m) -> makeBase#1(@m)
768.00/213.01	     , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.01	     , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.01	     , lineMult#1(nil(), @l) -> nil()
768.00/213.01	     , lineMult#1(::(@x, @xs), @l) ->
768.00/213.01	       ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.01	     , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.01	     , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.01	     , #mult(#neg(@x), #0()) -> #0()
768.00/213.01	     , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.01	     , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.01	     , #mult(#pos(@x), #0()) -> #0()
768.00/213.01	     , #mult(#0(), #neg(@y)) -> #0()
768.00/213.01	     , #mult(#0(), #pos(@y)) -> #0()
768.00/213.01	     , #mult(#0(), #0()) -> #0()
768.00/213.01	     , attach#2(nil(), @x, @xs) -> nil()
768.00/213.01	     , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.01	       ::(::(@x, @l), attach(@xs, @ls))
768.00/213.01	     , #succ(#neg(#s(#0()))) -> #0()
768.00/213.01	     , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.01	     , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.01	     , #succ(#0()) -> #pos(#s(#0()))
768.00/213.01	     , makeBase#1(nil()) -> nil()
768.00/213.01	     , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.01	     , matrixMult(@m1, @m2) ->
768.00/213.01	       matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.01	     , #abs(#neg(@x)) -> #pos(@x)
768.00/213.01	     , #abs(#pos(@x)) -> #pos(@x)
768.00/213.01	     , #abs(#0()) -> #0()
768.00/213.01	     , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.01	     , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.01	     , transpose#1(nil(), @m) -> nil()
768.00/213.01	     , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
768.00/213.01	     , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.00/213.01	       tuple#2(::(@x, @ys), ::(@xs, @m'))
768.00/213.01	     , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.01	     , #pred(#pos(#s(#0()))) -> #0()
768.00/213.01	     , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.01	     , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.01	   Obligation:
768.00/213.01	     innermost runtime complexity
768.00/213.01	   Answer:
768.00/213.01	     YES(O(1),O(n^1))
768.00/213.01	   
768.00/213.01	   Due to missing edges in the dependency-graph, the right-hand sides
768.00/213.01	   of following rules could be simplified:
768.00/213.01	   
768.00/213.01	     { lineMult#1^#(::(@x, @xs), @l) ->
768.00/213.01	       c_9(mult^#(@l, @x), lineMult^#(@l, @xs)) }
768.00/213.01	   
768.00/213.01	   We are left with following problem, upon which TcT provides the
768.00/213.01	   certificate YES(O(1),O(n^1)).
768.00/213.01	   
768.00/213.01	   Strict DPs: { lineMult^#(@l, @m2) -> c_1(lineMult#1^#(@m2, @l)) }
768.00/213.01	   Weak DPs:
768.00/213.01	     { matrixMultList^#(@acc, @mm) -> c_2(matrixMultList#1^#(@mm, @acc))
768.00/213.01	     , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.01	       c_3(matrixMultList^#(matrixMult(@acc, @m), @ms))
768.00/213.01	     , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.01	       c_4(matrixMult^#(@acc, @m))
768.00/213.01	     , matrixMult3^#(@m1, @m2, @m3) -> c_5(matrixMult^#(@m1, @m2))
768.00/213.01	     , matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.01	       c_6(matrixMult^#(matrixMult(@m1, @m2), @m3))
768.00/213.01	     , matrixMult^#(@m1, @m2) ->
768.00/213.01	       c_7(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))))
768.00/213.01	     , matrixMult'^#(@m1, @m2) -> c_8(matrixMult'#1^#(@m1, @m2))
768.00/213.01	     , matrixMult'#1^#(::(@l, @ls), @m2) -> c_9(matrixMult'^#(@ls, @m2))
768.00/213.01	     , matrixMult'#1^#(::(@l, @ls), @m2) -> c_10(lineMult^#(@l, @m2))
768.00/213.01	     , matrixMultOld^#(@m1, @m2) ->
768.00/213.01	       c_11(matrixMult'^#(@m1, transpose(@m2)))
768.00/213.01	     , lineMult#1^#(::(@x, @xs), @l) -> c_12(lineMult^#(@l, @xs)) }
768.00/213.01	   Weak Trs:
768.00/213.01	     { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.01	     , split(@m) -> split#1(@m)
768.00/213.01	     , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.01	     , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.01	     , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.01	     , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.01	     , #add(#0(), @y) -> @y
768.00/213.01	     , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.01	     , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.01	     , split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.01	     , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.00/213.01	     , transpose(@m) -> transpose#1(@m, @m)
768.00/213.01	     , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.01	     , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.01	     , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.01	     , +(@x, @y) -> #add(@x, @y)
768.00/213.01	     , transAcc#1(nil(), @base) -> @base
768.00/213.01	     , transAcc#1(::(@l, @m'), @base) ->
768.00/213.01	       attach(@l, transAcc(@m', @base))
768.00/213.01	     , *(@x, @y) -> #mult(@x, @y)
768.00/213.01	     , mkBase#1(nil()) -> nil()
768.00/213.01	     , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.01	     , transpose#3(nil(), @l) -> nil()
768.00/213.01	     , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
768.00/213.01	     , attach#1(nil(), @m) -> nil()
768.00/213.01	     , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.01	     , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
768.00/213.01	     , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.01	     , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.01	       ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.01	     , #natmult(#0(), @y) -> #0()
768.00/213.01	     , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.01	     , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.01	     , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.00/213.01	     , mkBase(@m) -> mkBase#1(@m)
768.00/213.01	     , makeBase(@m) -> makeBase#1(@m)
768.00/213.01	     , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.01	     , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.01	     , lineMult#1(nil(), @l) -> nil()
768.00/213.01	     , lineMult#1(::(@x, @xs), @l) ->
768.00/213.01	       ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.01	     , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.01	     , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.01	     , #mult(#neg(@x), #0()) -> #0()
768.00/213.01	     , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.01	     , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.01	     , #mult(#pos(@x), #0()) -> #0()
768.00/213.01	     , #mult(#0(), #neg(@y)) -> #0()
768.00/213.01	     , #mult(#0(), #pos(@y)) -> #0()
768.00/213.01	     , #mult(#0(), #0()) -> #0()
768.00/213.01	     , attach#2(nil(), @x, @xs) -> nil()
768.00/213.01	     , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.01	       ::(::(@x, @l), attach(@xs, @ls))
768.00/213.01	     , #succ(#neg(#s(#0()))) -> #0()
768.00/213.01	     , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.01	     , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.01	     , #succ(#0()) -> #pos(#s(#0()))
768.00/213.01	     , makeBase#1(nil()) -> nil()
768.00/213.01	     , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.01	     , matrixMult(@m1, @m2) ->
768.00/213.01	       matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.01	     , #abs(#neg(@x)) -> #pos(@x)
768.00/213.01	     , #abs(#pos(@x)) -> #pos(@x)
768.00/213.01	     , #abs(#0()) -> #0()
768.00/213.01	     , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.01	     , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.01	     , transpose#1(nil(), @m) -> nil()
768.00/213.01	     , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
768.00/213.01	     , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.00/213.01	       tuple#2(::(@x, @ys), ::(@xs, @m'))
768.00/213.01	     , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.01	     , #pred(#pos(#s(#0()))) -> #0()
768.00/213.01	     , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.01	     , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.01	   Obligation:
768.00/213.01	     innermost runtime complexity
768.00/213.01	   Answer:
768.00/213.01	     YES(O(1),O(n^1))
768.00/213.01	   
768.00/213.01	   We use the processor 'matrix interpretation of dimension 2' to
768.00/213.01	   orient following rules strictly.
768.00/213.01	   
768.00/213.01	   DPs:
768.00/213.01	     { 3: matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.01	          c_3(matrixMultList^#(matrixMult(@acc, @m), @ms))
768.00/213.01	     , 4: matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.01	          c_4(matrixMult^#(@acc, @m))
768.00/213.01	     , 5: matrixMult3^#(@m1, @m2, @m3) -> c_5(matrixMult^#(@m1, @m2))
768.00/213.01	     , 6: matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.01	          c_6(matrixMult^#(matrixMult(@m1, @m2), @m3))
768.00/213.01	     , 10: matrixMult'#1^#(::(@l, @ls), @m2) ->
768.00/213.01	           c_10(lineMult^#(@l, @m2))
768.00/213.01	     , 11: matrixMultOld^#(@m1, @m2) ->
768.00/213.01	           c_11(matrixMult'^#(@m1, transpose(@m2)))
768.00/213.01	     , 12: lineMult#1^#(::(@x, @xs), @l) -> c_12(lineMult^#(@l, @xs)) }
768.00/213.01	   Trs:
768.00/213.01	     { split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.01	     , transAcc#1(::(@l, @m'), @base) ->
768.00/213.01	       attach(@l, transAcc(@m', @base))
768.00/213.01	     , transpose#3(nil(), @l) -> nil()
768.00/213.01	     , attach#2(nil(), @x, @xs) -> nil()
768.00/213.01	     , makeBase#1(::(@l, @m')) -> mkBase(@l) }
768.00/213.01	   
768.00/213.01	   Sub-proof:
768.00/213.01	   ----------
768.00/213.01	     The following argument positions are usable:
768.00/213.01	       Uargs(c_1) = {1}, Uargs(c_2) = {1}, Uargs(c_3) = {1},
768.00/213.01	       Uargs(c_4) = {1}, Uargs(c_5) = {1}, Uargs(c_6) = {1},
768.00/213.01	       Uargs(c_7) = {1}, Uargs(c_8) = {1}, Uargs(c_9) = {1},
768.00/213.01	       Uargs(c_10) = {1}, Uargs(c_11) = {1}, Uargs(c_12) = {1}
768.00/213.01	     
768.00/213.01	     TcT has computed the following constructor-based matrix
768.00/213.01	     interpretation satisfying not(EDA) and not(IDA(1)).
768.00/213.01	     
768.00/213.01	                   [attach](x1, x2) = [1 0] x1 + [1 0] x2 + [0]           
768.00/213.01	                                      [0 0]      [0 0]      [2]           
768.00/213.01	                                                                          
768.00/213.01	                        [split](x1) = [1 4] x1 + [0]                      
768.00/213.01	                                      [1 0]      [0]                      
768.00/213.01	                                                                          
768.00/213.01	                     [#add](x1, x2) = [0]                                 
768.00/213.01	                                      [0]                                 
768.00/213.01	                                                                          
768.00/213.01	               [mult#2](x1, x2, x3) = [6 0] x2 + [6 0] x3 + [0]           
768.00/213.01	                                      [6 6]      [6 6]      [0]           
768.00/213.01	                                                                          
768.00/213.01	                              [nil] = [0]                                 
768.00/213.01	                                      [2]                                 
768.00/213.01	                                                                          
768.00/213.01	                      [split#1](x1) = [1 1] x1 + [0]                      
768.00/213.01	                                      [1 0]      [0]                      
768.00/213.01	                                                                          
768.00/213.01	                    [transpose](x1) = [2 4] x1 + [0]                      
768.00/213.01	                                      [4 0]      [6]                      
768.00/213.01	                                                                          
768.00/213.01	              [matrixMult'](x1, x2) = [0]                                 
768.00/213.01	                                      [0]                                 
768.00/213.01	                                                                          
768.00/213.01	                 [transAcc](x1, x2) = [1 0] x1 + [1 0] x2 + [0]           
768.00/213.01	                                      [0 0]      [4 1]      [2]           
768.00/213.01	                                                                          
768.00/213.01	                     [mult](x1, x2) = [0]                                 
768.00/213.01	                                      [0]                                 
768.00/213.01	                                                                          
768.00/213.01	                        [+](x1, x2) = [0]                                 
768.00/213.01	                                      [0]                                 
768.00/213.01	                                                                          
768.00/213.01	               [transAcc#1](x1, x2) = [1 0] x1 + [1 0] x2 + [0]           
768.00/213.01	                                      [0 0]      [4 1]      [2]           
768.00/213.01	                                                                          
768.00/213.01	                         [#neg](x1) = [1 0] x1 + [0]                      
768.00/213.01	                                      [1 0]      [0]                      
768.00/213.01	                                                                          
768.00/213.01	                        [*](x1, x2) = [0]                                 
768.00/213.01	                                      [0]                                 
768.00/213.01	                                                                          
768.00/213.01	                     [mkBase#1](x1) = [1 0] x1 + [0]                      
768.00/213.01	                                      [0 0]      [4]                      
768.00/213.01	                                                                          
768.00/213.01	              [transpose#3](x1, x2) = [2 0] x1 + [1 0] x2 + [1]           
768.00/213.01	                                      [0 0]      [0 0]      [2]           
768.00/213.01	                                                                          
768.00/213.01	                 [attach#1](x1, x2) = [1 0] x1 + [1 0] x2 + [0]           
768.00/213.01	                                      [0 0]      [0 0]      [2]           
768.00/213.01	                                                                          
768.00/213.01	                  [transpose#2](x1) = [1 1] x1 + [0]                      
768.00/213.01	                                      [0 0]      [2]                      
768.00/213.01	                                                                          
768.00/213.01	            [matrixMult'#1](x1, x2) = [6 0] x2 + [0]                      
768.00/213.01	                                      [6 6]      [0]                      
768.00/213.01	                                                                          
768.00/213.01	                 [#natmult](x1, x2) = [0]                                 
768.00/213.01	                                      [0]                                 
768.00/213.01	                                                                          
768.00/213.01	                  [split#2](x1, x2) = [1 0] x1 + [1 0] x2 + [1]           
768.00/213.01	                                      [1 0]      [1 0]      [1]           
768.00/213.01	                                                                          
768.00/213.01	                         [#pos](x1) = [0]                                 
768.00/213.01	                                      [0]                                 
768.00/213.01	                                                                          
768.00/213.01	                  [tuple#2](x1, x2) = [0 0] x1 + [1 0] x2 + [1]           
768.00/213.01	                                      [1 0]      [1 0]      [0]           
768.00/213.01	                                                                          
768.00/213.01	                       [mkBase](x1) = [1 0] x1 + [0]                      
768.00/213.01	                                      [0 0]      [4]                      
768.00/213.01	                                                                          
768.00/213.01	                     [makeBase](x1) = [4 0] x1 + [0]                      
768.00/213.01	                                      [4 0]      [4]                      
768.00/213.01	                                                                          
768.00/213.01	                   [mult#1](x1, x2) = [6 0] x2 + [0]                      
768.00/213.01	                                      [4 6]      [0]                      
768.00/213.01	                                                                          
768.00/213.01	                       [::](x1, x2) = [1 0] x1 + [1 0] x2 + [1]           
768.00/213.01	                                      [0 0]      [0 0]      [0]           
768.00/213.01	                                                                          
768.00/213.01	               [lineMult#1](x1, x2) = [6 0] x2 + [0]                      
768.00/213.01	                                      [6 6]      [0]                      
768.00/213.01	                                                                          
768.00/213.01	                    [#mult](x1, x2) = [0]                                 
768.00/213.01	                                      [0]                                 
768.00/213.01	                                                                          
768.00/213.01	             [attach#2](x1, x2, x3) = [1 0] x1 + [1 0] x2 + [1 0] x3 + [1]
768.00/213.01	                                      [0 0]      [0 0]      [0 0]      [2]
768.00/213.01	                                                                          
768.00/213.01	                        [#succ](x1) = [0]                                 
768.00/213.01	                                      [0]                                 
768.00/213.01	                                                                          
768.00/213.01	                               [#0] = [0]                                 
768.00/213.01	                                      [0]                                 
768.00/213.01	                                                                          
768.00/213.01	                   [makeBase#1](x1) = [4 0] x1 + [0]                      
768.00/213.01	                                      [0 0]      [4]                      
768.00/213.01	                                                                          
768.00/213.01	               [matrixMult](x1, x2) = [0]                                 
768.00/213.01	                                      [0]                                 
768.00/213.01	                                                                          
768.00/213.01	                         [#abs](x1) = [0]                                 
768.00/213.01	                                      [0]                                 
768.00/213.01	                                                                          
768.00/213.01	                 [lineMult](x1, x2) = [0]                                 
768.00/213.01	                                      [0]                                 
768.00/213.01	                                                                          
768.00/213.01	              [transpose#1](x1, x2) = [0 0] x1 + [2 4] x2 + [0]           
768.00/213.01	                                      [2 0]      [0 0]      [6]           
768.00/213.01	                                                                          
768.00/213.01	              [split#3](x1, x2, x3) = [0 1] x1 + [0 0] x2 + [1 0] x3 + [2]
768.00/213.01	                                      [0 1]      [1 0]      [1 0]      [2]
768.00/213.01	                                                                          
768.00/213.01	                        [#pred](x1) = [0]                                 
768.00/213.01	                                      [0]                                 
768.00/213.01	                                                                          
768.00/213.01	                           [#s](x1) = [0]                                 
768.00/213.01	                                      [0]                                 
768.00/213.01	                                                                          
768.00/213.01	         [matrixMultList^#](x1, x2) = [5 0] x2 + [0]                      
768.00/213.01	                                      [0 0]      [0]                      
768.00/213.01	                                                                          
768.00/213.01	       [matrixMultList#1^#](x1, x2) = [5 0] x1 + [0 0] x2 + [0]           
768.00/213.01	                                      [0 0]      [0 4]      [0]           
768.00/213.01	                                                                          
768.00/213.01	        [matrixMult3^#](x1, x2, x3) = [7 7] x1 + [7 7] x2 + [7 7] x3 + [7]
768.00/213.01	                                      [7 7]      [7 7]      [7 7]      [7]
768.00/213.01	                                                                          
768.00/213.01	             [matrixMult^#](x1, x2) = [5 0] x2 + [1]                      
768.00/213.01	                                      [0 0]      [0]                      
768.00/213.01	                                                                          
768.00/213.01	             [mult#2^#](x1, x2, x3) = [7 7] x1 + [7 7] x2 + [7 7] x3 + [0]
768.00/213.01	                                      [0 0]      [0 0]      [0 0]      [0]
768.00/213.01	                                                                          
768.00/213.01	                   [mult^#](x1, x2) = [7 7] x1 + [7 7] x2 + [0]           
768.00/213.01	                                      [0 0]      [0 0]      [0]           
768.00/213.01	                                                                          
768.00/213.01	            [matrixMult'^#](x1, x2) = [0 0] x1 + [1 0] x2 + [1]           
768.00/213.01	                                      [4 4]      [0 4]      [0]           
768.00/213.01	                                                                          
768.00/213.01	          [matrixMult'#1^#](x1, x2) = [1 0] x2 + [1]                      
768.00/213.01	                                      [4 0]      [0]                      
768.00/213.01	                                                                          
768.00/213.01	                 [mult#1^#](x1, x2) = [7 7] x1 + [7 7] x2 + [0]           
768.00/213.01	                                      [0 0]      [0 0]      [0]           
768.00/213.01	                                                                          
768.00/213.01	               [lineMult^#](x1, x2) = [0 0] x1 + [1 0] x2 + [0]           
768.00/213.01	                                      [4 4]      [4 4]      [0]           
768.00/213.01	                                                                          
768.00/213.01	          [matrixMultOld^#](x1, x2) = [7 7] x1 + [7 7] x2 + [7]           
768.00/213.01	                                      [7 7]      [7 7]      [7]           
768.00/213.01	                                                                          
768.00/213.01	             [lineMult#1^#](x1, x2) = [1 0] x1 + [0 0] x2 + [0]           
768.00/213.01	                                      [0 0]      [4 0]      [0]           
768.00/213.01	                                                                          
768.00/213.01	                          [c_3](x1) = [7 7] x1 + [0]                      
768.00/213.01	                                      [0 0]      [0]                      
768.00/213.01	                                                                          
768.00/213.01	                          [c_4](x1) = [7 7] x1 + [0]                      
768.00/213.01	                                      [0 0]      [0]                      
768.00/213.01	                                                                          
768.00/213.01	                          [c_7](x1) = [7 7] x1 + [0]                      
768.00/213.01	                                      [0 0]      [0]                      
768.00/213.01	                                                                          
768.00/213.01	                          [c_8](x1) = [7 7] x1 + [0]                      
768.00/213.01	                                      [0 0]      [0]                      
768.00/213.01	                                                                          
768.00/213.01	                      [c_9](x1, x2) = [7 7] x1 + [7 7] x2 + [0]           
768.00/213.01	                                      [0 0]      [0 0]      [0]           
768.00/213.01	                                                                          
768.00/213.01	                                [c] = [0]                                 
768.00/213.01	                                      [0]                                 
768.00/213.01	                                                                          
768.00/213.01	                          [c_1](x1) = [1 0] x1 + [0]                      
768.00/213.01	                                      [0 0]      [0]                      
768.00/213.01	                                                                          
768.00/213.01	                          [c_2](x1) = [1 0] x1 + [0]                      
768.00/213.01	                                      [0 0]      [0]                      
768.00/213.01	                                                                          
768.00/213.01	                          [c_3](x1) = [1 0] x1 + [3]                      
768.00/213.01	                                      [0 0]      [0]                      
768.00/213.01	                                                                          
768.00/213.01	                          [c_4](x1) = [1 0] x1 + [1]                      
768.00/213.01	                                      [0 0]      [0]                      
768.00/213.01	                                                                          
768.00/213.01	                          [c_5](x1) = [1 0] x1 + [3]                      
768.00/213.01	                                      [0 0]      [7]                      
768.00/213.01	                                                                          
768.00/213.01	                          [c_6](x1) = [1 0] x1 + [3]                      
768.00/213.01	                                      [0 0]      [7]                      
768.00/213.01	                                                                          
768.00/213.01	                          [c_7](x1) = [1 0] x1 + [0]                      
768.00/213.01	                                      [0 0]      [0]                      
768.00/213.01	                                                                          
768.00/213.01	                          [c_8](x1) = [1 0] x1 + [0]                      
768.00/213.01	                                      [0 0]      [0]                      
768.00/213.01	                                                                          
768.00/213.01	                          [c_9](x1) = [1 0] x1 + [0]                      
768.00/213.01	                                      [0 0]      [0]                      
768.00/213.01	                                                                          
768.00/213.01	                         [c_10](x1) = [1 0] x1 + [0]                      
768.00/213.01	                                      [0 0]      [0]                      
768.00/213.01	                                                                          
768.00/213.01	                         [c_11](x1) = [1 0] x1 + [3]                      
768.00/213.01	                                      [0 0]      [7]                      
768.00/213.01	                                                                          
768.00/213.01	                         [c_12](x1) = [1 0] x1 + [0]                      
768.00/213.01	                                      [0 0]      [0]                      
768.00/213.01	     
768.00/213.01	     The order satisfies the following ordering constraints:
768.00/213.01	     
768.00/213.01	                           [attach(@line, @m)] =  [1 0] @line + [1 0] @m + [0]                           
768.00/213.01	                                                  [0 0]         [0 0]      [2]                           
768.00/213.01	                                               >= [1 0] @line + [1 0] @m + [0]                           
768.00/213.01	                                                  [0 0]         [0 0]      [2]                           
768.00/213.01	                                               =  [attach#1(@line, @m)]                                  
768.00/213.01	                                                                                                         
768.00/213.01	                                   [split(@m)] =  [1 4] @m + [0]                                         
768.00/213.01	                                                  [1 0]      [0]                                         
768.00/213.01	                                               >= [1 1] @m + [0]                                         
768.00/213.01	                                                  [1 0]      [0]                                         
768.00/213.01	                                               =  [split#1(@m)]                                          
768.00/213.01	                                                                                                         
768.00/213.01	                    [#add(#neg(#s(#0())), @y)] =  [0]                                                    
768.00/213.01	                                                  [0]                                                    
768.00/213.01	                                               >= [0]                                                    
768.00/213.01	                                                  [0]                                                    
768.00/213.01	                                               =  [#pred(@y)]                                            
768.00/213.01	                                                                                                         
768.00/213.01	                  [#add(#neg(#s(#s(@x))), @y)] =  [0]                                                    
768.00/213.01	                                                  [0]                                                    
768.00/213.01	                                               >= [0]                                                    
768.00/213.01	                                                  [0]                                                    
768.00/213.01	                                               =  [#pred(#add(#pos(#s(@x)), @y))]                        
768.00/213.01	                                                                                                         
768.00/213.01	                    [#add(#pos(#s(#0())), @y)] =  [0]                                                    
768.00/213.01	                                                  [0]                                                    
768.00/213.01	                                               >= [0]                                                    
768.00/213.01	                                                  [0]                                                    
768.00/213.01	                                               =  [#succ(@y)]                                            
768.00/213.01	                                                                                                         
768.00/213.01	                  [#add(#pos(#s(#s(@x))), @y)] =  [0]                                                    
768.00/213.01	                                                  [0]                                                    
768.00/213.01	                                               >= [0]                                                    
768.00/213.01	                                                  [0]                                                    
768.00/213.01	                                               =  [#succ(#add(#pos(#s(@x)), @y))]                        
768.00/213.01	                                                                                                         
768.00/213.01	                              [#add(#0(), @y)] =  [0]                                                    
768.00/213.01	                                                  [0]                                                    
768.00/213.01	                                               ?  [1 0] @y + [0]                                         
768.00/213.01	                                                  [0 1]      [0]                                         
768.00/213.01	                                               =  [@y]                                                   
768.00/213.01	                                                                                                         
768.00/213.01	                      [mult#2(nil(), @x, @xs)] =  [6 0] @x + [6 0] @xs + [0]                             
768.00/213.01	                                                  [6 6]      [6 6]       [0]                             
768.00/213.01	                                               >= [0]                                                    
768.00/213.01	                                                  [0]                                                    
768.00/213.01	                                               =  [#abs(#0())]                                           
768.00/213.01	                                                                                                         
768.00/213.01	                [mult#2(::(@y, @ys), @x, @xs)] =  [6 0] @x + [6 0] @xs + [0]                             
768.00/213.01	                                                  [6 6]      [6 6]       [0]                             
768.00/213.01	                                               >= [0]                                                    
768.00/213.01	                                                  [0]                                                    
768.00/213.01	                                               =  [+(*(@x, @y), mult(@xs, @ys))]                         
768.00/213.01	                                                                                                         
768.00/213.01	                              [split#1(nil())] =  [2]                                                    
768.00/213.01	                                                  [0]                                                    
768.00/213.01	                                               >  [1]                                                    
768.00/213.01	                                                  [0]                                                    
768.00/213.01	                                               =  [tuple#2(nil(), nil())]                                
768.00/213.01	                                                                                                         
768.00/213.01	                        [split#1(::(@l, @ls))] =  [1 0] @l + [1 0] @ls + [1]                             
768.00/213.01	                                                  [1 0]      [1 0]       [1]                             
768.00/213.01	                                               >= [1 0] @l + [1 0] @ls + [1]                             
768.00/213.01	                                                  [1 0]      [1 0]       [1]                             
768.00/213.01	                                               =  [split#2(@l, @ls)]                                     
768.00/213.01	                                                                                                         
768.00/213.01	                               [transpose(@m)] =  [2 4] @m + [0]                                         
768.00/213.01	                                                  [4 0]      [6]                                         
768.00/213.01	                                               >= [2 4] @m + [0]                                         
768.00/213.01	                                                  [2 0]      [6]                                         
768.00/213.01	                                               =  [transpose#1(@m, @m)]                                  
768.00/213.01	                                                                                                         
768.00/213.01	                       [matrixMult'(@m1, @m2)] =  [0]                                                    
768.00/213.01	                                                  [0]                                                    
768.00/213.01	                                               ?  [6 0] @m2 + [0]                                        
768.00/213.01	                                                  [6 6]       [0]                                        
768.00/213.01	                                               =  [matrixMult'#1(@m1, @m2)]                              
768.00/213.01	                                                                                                         
768.00/213.01	                         [transAcc(@m, @base)] =  [1 0] @m + [1 0] @base + [0]                           
768.00/213.01	                                                  [0 0]      [4 1]         [2]                           
768.00/213.01	                                               >= [1 0] @m + [1 0] @base + [0]                           
768.00/213.01	                                                  [0 0]      [4 1]         [2]                           
768.00/213.01	                                               =  [transAcc#1(@m, @base)]                                
768.00/213.01	                                                                                                         
768.00/213.01	                              [mult(@l1, @l2)] =  [0]                                                    
768.00/213.01	                                                  [0]                                                    
768.00/213.01	                                               ?  [6 0] @l2 + [0]                                        
768.00/213.01	                                                  [4 6]       [0]                                        
768.00/213.01	                                               =  [mult#1(@l1, @l2)]                                     
768.00/213.01	                                                                                                         
768.00/213.01	                                   [+(@x, @y)] =  [0]                                                    
768.00/213.01	                                                  [0]                                                    
768.00/213.01	                                               >= [0]                                                    
768.00/213.01	                                                  [0]                                                    
768.00/213.01	                                               =  [#add(@x, @y)]                                         
768.00/213.01	                                                                                                         
768.00/213.01	                    [transAcc#1(nil(), @base)] =  [1 0] @base + [0]                                      
768.00/213.02	                                                  [4 1]         [2]                                      
768.00/213.02	                                               >= [1 0] @base + [0]                                      
768.00/213.02	                                                  [0 1]         [0]                                      
768.00/213.02	                                               =  [@base]                                                
768.00/213.02	                                                                                                         
768.00/213.02	              [transAcc#1(::(@l, @m'), @base)] =  [1 0] @l + [1 0] @m' + [1 0] @base + [1]               
768.00/213.02	                                                  [0 0]      [0 0]       [4 1]         [2]               
768.00/213.02	                                               >  [1 0] @l + [1 0] @m' + [1 0] @base + [0]               
768.00/213.02	                                                  [0 0]      [0 0]       [0 0]         [2]               
768.00/213.02	                                               =  [attach(@l, transAcc(@m', @base))]                     
768.00/213.02	                                                                                                         
768.00/213.02	                                   [*(@x, @y)] =  [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               =  [#mult(@x, @y)]                                        
768.00/213.02	                                                                                                         
768.00/213.02	                             [mkBase#1(nil())] =  [0]                                                    
768.00/213.02	                                                  [4]                                                    
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [2]                                                    
768.00/213.02	                                               =  [nil()]                                                
768.00/213.02	                                                                                                         
768.00/213.02	                       [mkBase#1(::(@l, @m'))] =  [1 0] @l + [1 0] @m' + [1]                             
768.00/213.02	                                                  [0 0]      [0 0]       [4]                             
768.00/213.02	                                               >= [1 0] @m' + [1]                                        
768.00/213.02	                                                  [0 0]       [0]                                        
768.00/213.02	                                               =  [::(nil(), mkBase(@m'))]                               
768.00/213.02	                                                                                                         
768.00/213.02	                      [transpose#3(nil(), @l)] =  [1 0] @l + [1]                                         
768.00/213.02	                                                  [0 0]      [2]                                         
768.00/213.02	                                               >  [0]                                                    
768.00/213.02	                                                  [2]                                                    
768.00/213.02	                                               =  [nil()]                                                
768.00/213.02	                                                                                                         
768.00/213.02	                [transpose#3(::(@y, @ys), @l)] =  [2 0] @y + [1 0] @l + [2 0] @ys + [3]                  
768.00/213.02	                                                  [0 0]      [0 0]      [0 0]       [2]                  
768.00/213.02	                                               >= [2 0] @y + [1 0] @l + [2 0] @ys + [3]                  
768.00/213.02	                                                  [0 0]      [0 0]      [0 0]       [0]                  
768.00/213.02	                                               =  [::(@l, transpose(::(@y, @ys)))]                       
768.00/213.02	                                                                                                         
768.00/213.02	                         [attach#1(nil(), @m)] =  [1 0] @m + [0]                                         
768.00/213.02	                                                  [0 0]      [2]                                         
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [2]                                                    
768.00/213.02	                                               =  [nil()]                                                
768.00/213.02	                                                                                                         
768.00/213.02	                   [attach#1(::(@x, @xs), @m)] =  [1 0] @x + [1 0] @m + [1 0] @xs + [1]                  
768.00/213.02	                                                  [0 0]      [0 0]      [0 0]       [2]                  
768.00/213.02	                                               >= [1 0] @x + [1 0] @m + [1 0] @xs + [1]                  
768.00/213.02	                                                  [0 0]      [0 0]      [0 0]       [2]                  
768.00/213.02	                                               =  [attach#2(@m, @x, @xs)]                                
768.00/213.02	                                                                                                         
768.00/213.02	               [transpose#2(tuple#2(@l, @m'))] =  [1 0] @l + [2 0] @m' + [1]                             
768.00/213.02	                                                  [0 0]      [0 0]       [2]                             
768.00/213.02	                                               >= [1 0] @l + [2 0] @m' + [1]                             
768.00/213.02	                                                  [0 0]      [0 0]       [2]                             
768.00/213.02	                                               =  [transpose#3(@m', @l)]                                 
768.00/213.02	                                                                                                         
768.00/213.02	                   [matrixMult'#1(nil(), @m2)] =  [6 0] @m2 + [0]                                        
768.00/213.02	                                                  [6 6]       [0]                                        
768.00/213.02	                                               ?  [0]                                                    
768.00/213.02	                                                  [2]                                                    
768.00/213.02	                                               =  [nil()]                                                
768.00/213.02	                                                                                                         
768.00/213.02	             [matrixMult'#1(::(@l, @ls), @m2)] =  [6 0] @m2 + [0]                                        
768.00/213.02	                                                  [6 6]       [0]                                        
768.00/213.02	                                               ?  [1]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               =  [::(lineMult(@l, @m2), matrixMult'(@ls, @m2))]         
768.00/213.02	                                                                                                         
768.00/213.02	                          [#natmult(#0(), @y)] =  [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               =  [#0()]                                                 
768.00/213.02	                                                                                                         
768.00/213.02	                        [#natmult(#s(@x), @y)] =  [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               =  [#add(#pos(@y), #natmult(@x, @y))]                     
768.00/213.02	                                                                                                         
768.00/213.02	                         [split#2(nil(), @ls)] =  [1 0] @ls + [1]                                        
768.00/213.02	                                                  [1 0]       [1]                                        
768.00/213.02	                                               >= [1]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               =  [tuple#2(nil(), nil())]                                
768.00/213.02	                                                                                                         
768.00/213.02	                   [split#2(::(@x, @xs), @ls)] =  [1 0] @x + [1 0] @xs + [1 0] @ls + [2]                 
768.00/213.02	                                                  [1 0]      [1 0]       [1 0]       [2]                 
768.00/213.02	                                               >= [0 0] @x + [1 0] @xs + [1 0] @ls + [2]                 
768.00/213.02	                                                  [1 0]      [1 0]       [1 0]       [2]                 
768.00/213.02	                                               =  [split#3(split(@ls), @x, @xs)]                         
768.00/213.02	                                                                                                         
768.00/213.02	                                  [mkBase(@m)] =  [1 0] @m + [0]                                         
768.00/213.02	                                                  [0 0]      [4]                                         
768.00/213.02	                                               >= [1 0] @m + [0]                                         
768.00/213.02	                                                  [0 0]      [4]                                         
768.00/213.02	                                               =  [mkBase#1(@m)]                                         
768.00/213.02	                                                                                                         
768.00/213.02	                                [makeBase(@m)] =  [4 0] @m + [0]                                         
768.00/213.02	                                                  [4 0]      [4]                                         
768.00/213.02	                                               >= [4 0] @m + [0]                                         
768.00/213.02	                                                  [0 0]      [4]                                         
768.00/213.02	                                               =  [makeBase#1(@m)]                                       
768.00/213.02	                                                                                                         
768.00/213.02	                          [mult#1(nil(), @l2)] =  [6 0] @l2 + [0]                                        
768.00/213.02	                                                  [4 6]       [0]                                        
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               =  [#abs(#0())]                                           
768.00/213.02	                                                                                                         
768.00/213.02	                    [mult#1(::(@x, @xs), @l2)] =  [6 0] @l2 + [0]                                        
768.00/213.02	                                                  [4 6]       [0]                                        
768.00/213.02	                                               ?  [6 0] @x + [6 0] @xs + [0]                             
768.00/213.02	                                                  [6 6]      [6 6]       [0]                             
768.00/213.02	                                               =  [mult#2(@l2, @x, @xs)]                                 
768.00/213.02	                                                                                                         
768.00/213.02	                       [lineMult#1(nil(), @l)] =  [6 0] @l + [0]                                         
768.00/213.02	                                                  [6 6]      [0]                                         
768.00/213.02	                                               ?  [0]                                                    
768.00/213.02	                                                  [2]                                                    
768.00/213.02	                                               =  [nil()]                                                
768.00/213.02	                                                                                                         
768.00/213.02	                 [lineMult#1(::(@x, @xs), @l)] =  [6 0] @l + [0]                                         
768.00/213.02	                                                  [6 6]      [0]                                         
768.00/213.02	                                               ?  [1]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               =  [::(mult(@l, @x), lineMult(@l, @xs))]                  
768.00/213.02	                                                                                                         
768.00/213.02	                   [#mult(#neg(@x), #neg(@y))] =  [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               =  [#pos(#natmult(@x, @y))]                               
768.00/213.02	                                                                                                         
768.00/213.02	                   [#mult(#neg(@x), #pos(@y))] =  [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               =  [#neg(#natmult(@x, @y))]                               
768.00/213.02	                                                                                                         
768.00/213.02	                       [#mult(#neg(@x), #0())] =  [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               =  [#0()]                                                 
768.00/213.02	                                                                                                         
768.00/213.02	                   [#mult(#pos(@x), #neg(@y))] =  [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               =  [#neg(#natmult(@x, @y))]                               
768.00/213.02	                                                                                                         
768.00/213.02	                   [#mult(#pos(@x), #pos(@y))] =  [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               =  [#pos(#natmult(@x, @y))]                               
768.00/213.02	                                                                                                         
768.00/213.02	                       [#mult(#pos(@x), #0())] =  [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               =  [#0()]                                                 
768.00/213.02	                                                                                                         
768.00/213.02	                       [#mult(#0(), #neg(@y))] =  [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               =  [#0()]                                                 
768.00/213.02	                                                                                                         
768.00/213.02	                       [#mult(#0(), #pos(@y))] =  [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               =  [#0()]                                                 
768.00/213.02	                                                                                                         
768.00/213.02	                           [#mult(#0(), #0())] =  [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               =  [#0()]                                                 
768.00/213.02	                                                                                                         
768.00/213.02	                    [attach#2(nil(), @x, @xs)] =  [1 0] @x + [1 0] @xs + [1]                             
768.00/213.02	                                                  [0 0]      [0 0]       [2]                             
768.00/213.02	                                               >  [0]                                                    
768.00/213.02	                                                  [2]                                                    
768.00/213.02	                                               =  [nil()]                                                
768.00/213.02	                                                                                                         
768.00/213.02	              [attach#2(::(@l, @ls), @x, @xs)] =  [1 0] @x + [1 0] @xs + [1 0] @l + [1 0] @ls + [2]      
768.00/213.02	                                                  [0 0]      [0 0]       [0 0]      [0 0]       [2]      
768.00/213.02	                                               >= [1 0] @x + [1 0] @xs + [1 0] @l + [1 0] @ls + [2]      
768.00/213.02	                                                  [0 0]      [0 0]       [0 0]      [0 0]       [0]      
768.00/213.02	                                               =  [::(::(@x, @l), attach(@xs, @ls))]                     
768.00/213.02	                                                                                                         
768.00/213.02	                       [#succ(#neg(#s(#0())))] =  [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               =  [#0()]                                                 
768.00/213.02	                                                                                                         
768.00/213.02	                     [#succ(#neg(#s(#s(@x))))] =  [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               =  [#neg(#s(@x))]                                         
768.00/213.02	                                                                                                         
768.00/213.02	                         [#succ(#pos(#s(@x)))] =  [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               =  [#pos(#s(#s(@x)))]                                     
768.00/213.02	                                                                                                         
768.00/213.02	                                 [#succ(#0())] =  [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               =  [#pos(#s(#0()))]                                       
768.00/213.02	                                                                                                         
768.00/213.02	                           [makeBase#1(nil())] =  [0]                                                    
768.00/213.02	                                                  [4]                                                    
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [2]                                                    
768.00/213.02	                                               =  [nil()]                                                
768.00/213.02	                                                                                                         
768.00/213.02	                     [makeBase#1(::(@l, @m'))] =  [4 0] @l + [4 0] @m' + [4]                             
768.00/213.02	                                                  [0 0]      [0 0]       [4]                             
768.00/213.02	                                               >  [1 0] @l + [0]                                         
768.00/213.02	                                                  [0 0]      [4]                                         
768.00/213.02	                                               =  [mkBase(@l)]                                           
768.00/213.02	                                                                                                         
768.00/213.02	                        [matrixMult(@m1, @m2)] =  [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               =  [matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))]       
768.00/213.02	                                                                                                         
768.00/213.02	                              [#abs(#neg(@x))] =  [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               =  [#pos(@x)]                                             
768.00/213.02	                                                                                                         
768.00/213.02	                              [#abs(#pos(@x))] =  [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               =  [#pos(@x)]                                             
768.00/213.02	                                                                                                         
768.00/213.02	                                  [#abs(#0())] =  [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               =  [#0()]                                                 
768.00/213.02	                                                                                                         
768.00/213.02	                                [#abs(#s(@x))] =  [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               =  [#pos(#s(@x))]                                         
768.00/213.02	                                                                                                         
768.00/213.02	                           [lineMult(@l, @m2)] =  [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               ?  [6 0] @l + [0]                                         
768.00/213.02	                                                  [6 6]      [0]                                         
768.00/213.02	                                               =  [lineMult#1(@m2, @l)]                                  
768.00/213.02	                                                                                                         
768.00/213.02	                      [transpose#1(nil(), @m)] =  [2 4] @m + [0]                                         
768.00/213.02	                                                  [0 0]      [6]                                         
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [2]                                                    
768.00/213.02	                                               =  [nil()]                                                
768.00/213.02	                                                                                                         
768.00/213.02	              [transpose#1(::(@xs, @xss), @m)] =  [2 4] @m + [0 0] @xs + [0 0] @xss + [0]                
768.00/213.02	                                                  [0 0]      [2 0]       [2 0]        [8]                
768.00/213.02	                                               >= [2 4] @m + [0]                                         
768.00/213.02	                                                  [0 0]      [2]                                         
768.00/213.02	                                               =  [transpose#2(split(@m))]                               
768.00/213.02	                                                                                                         
768.00/213.02	         [split#3(tuple#2(@ys, @m'), @x, @xs)] =  [0 0] @x + [1 0] @xs + [1 0] @m' + [1 0] @ys + [2]     
768.00/213.02	                                                  [1 0]      [1 0]       [1 0]       [1 0]       [2]     
768.00/213.02	                                               >= [0 0] @x + [1 0] @xs + [1 0] @m' + [0 0] @ys + [2]     
768.00/213.02	                                                  [1 0]      [1 0]       [1 0]       [1 0]       [2]     
768.00/213.02	                                               =  [tuple#2(::(@x, @ys), ::(@xs, @m'))]                   
768.00/213.02	                                                                                                         
768.00/213.02	                         [#pred(#neg(#s(@x)))] =  [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               =  [#neg(#s(#s(@x)))]                                     
768.00/213.02	                                                                                                         
768.00/213.02	                       [#pred(#pos(#s(#0())))] =  [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               =  [#0()]                                                 
768.00/213.02	                                                                                                         
768.00/213.02	                     [#pred(#pos(#s(#s(@x))))] =  [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               =  [#pos(#s(@x))]                                         
768.00/213.02	                                                                                                         
768.00/213.02	                                 [#pred(#0())] =  [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               >= [0]                                                    
768.00/213.02	                                                  [0]                                                    
768.00/213.02	                                               =  [#neg(#s(#0()))]                                       
768.00/213.02	                                                                                                         
768.00/213.02	                 [matrixMultList^#(@acc, @mm)] =  [5 0] @mm + [0]                                        
768.00/213.02	                                                  [0 0]       [0]                                        
768.00/213.02	                                               >= [5 0] @mm + [0]                                        
768.00/213.02	                                                  [0 0]       [0]                                        
768.00/213.02	                                               =  [c_2(matrixMultList#1^#(@mm, @acc))]                   
768.00/213.02	                                                                                                         
768.00/213.02	       [matrixMultList#1^#(::(@m, @ms), @acc)] =  [5 0] @m + [0 0] @acc + [5 0] @ms + [5]                
768.00/213.02	                                                  [0 0]      [0 4]        [0 0]       [0]                
768.00/213.02	                                               >  [5 0] @ms + [3]                                        
768.00/213.02	                                                  [0 0]       [0]                                        
768.00/213.02	                                               =  [c_3(matrixMultList^#(matrixMult(@acc, @m), @ms))]     
768.00/213.02	                                                                                                         
768.00/213.02	       [matrixMultList#1^#(::(@m, @ms), @acc)] =  [5 0] @m + [0 0] @acc + [5 0] @ms + [5]                
768.00/213.02	                                                  [0 0]      [0 4]        [0 0]       [0]                
768.00/213.02	                                               >  [5 0] @m + [2]                                         
768.00/213.02	                                                  [0 0]      [0]                                         
768.00/213.02	                                               =  [c_4(matrixMult^#(@acc, @m))]                          
768.00/213.02	                                                                                                         
768.00/213.02	                [matrixMult3^#(@m1, @m2, @m3)] =  [7 7] @m2 + [7 7] @m1 + [7 7] @m3 + [7]                
768.00/213.02	                                                  [7 7]       [7 7]       [7 7]       [7]                
768.00/213.02	                                               >  [5 0] @m2 + [4]                                        
768.00/213.02	                                                  [0 0]       [7]                                        
768.00/213.02	                                               =  [c_5(matrixMult^#(@m1, @m2))]                          
768.00/213.02	                                                                                                         
768.00/213.02	                [matrixMult3^#(@m1, @m2, @m3)] =  [7 7] @m2 + [7 7] @m1 + [7 7] @m3 + [7]                
768.00/213.02	                                                  [7 7]       [7 7]       [7 7]       [7]                
768.00/213.02	                                               >  [5 0] @m3 + [4]                                        
768.00/213.02	                                                  [0 0]       [7]                                        
768.00/213.02	                                               =  [c_6(matrixMult^#(matrixMult(@m1, @m2), @m3))]         
768.00/213.02	                                                                                                         
768.00/213.02	                      [matrixMult^#(@m1, @m2)] =  [5 0] @m2 + [1]                                        
768.00/213.02	                                                  [0 0]       [0]                                        
768.00/213.02	                                               >= [5 0] @m2 + [1]                                        
768.00/213.02	                                                  [0 0]       [0]                                        
768.00/213.02	                                               =  [c_7(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))))]
768.00/213.02	                                                                                                         
768.00/213.02	                     [matrixMult'^#(@m1, @m2)] =  [1 0] @m2 + [0 0] @m1 + [1]                            
768.00/213.02	                                                  [0 4]       [4 4]       [0]                            
768.00/213.02	                                               >= [1 0] @m2 + [1]                                        
768.00/213.02	                                                  [0 0]       [0]                                        
768.00/213.02	                                               =  [c_8(matrixMult'#1^#(@m1, @m2))]                       
768.00/213.02	                                                                                                         
768.00/213.02	           [matrixMult'#1^#(::(@l, @ls), @m2)] =  [1 0] @m2 + [1]                                        
768.00/213.02	                                                  [4 0]       [0]                                        
768.00/213.02	                                               >= [1 0] @m2 + [1]                                        
768.00/213.02	                                                  [0 0]       [0]                                        
768.00/213.02	                                               =  [c_9(matrixMult'^#(@ls, @m2))]                         
768.00/213.02	                                                                                                         
768.00/213.02	           [matrixMult'#1^#(::(@l, @ls), @m2)] =  [1 0] @m2 + [1]                                        
768.00/213.02	                                                  [4 0]       [0]                                        
768.00/213.02	                                               >  [1 0] @m2 + [0]                                        
768.00/213.02	                                                  [0 0]       [0]                                        
768.00/213.02	                                               =  [c_10(lineMult^#(@l, @m2))]                            
768.00/213.02	                                                                                                         
768.00/213.02	                         [lineMult^#(@l, @m2)] =  [0 0] @l + [1 0] @m2 + [0]                             
768.00/213.02	                                                  [4 4]      [4 4]       [0]                             
768.00/213.02	                                               >= [1 0] @m2 + [0]                                        
768.00/213.02	                                                  [0 0]       [0]                                        
768.00/213.02	                                               =  [c_1(lineMult#1^#(@m2, @l))]                           
768.00/213.02	                                                                                                         
768.00/213.02	                   [matrixMultOld^#(@m1, @m2)] =  [7 7] @m2 + [7 7] @m1 + [7]                            
768.00/213.02	                                                  [7 7]       [7 7]       [7]                            
768.00/213.02	                                               >  [2 4] @m2 + [4]                                        
768.00/213.02	                                                  [0 0]       [7]                                        
768.00/213.02	                                               =  [c_11(matrixMult'^#(@m1, transpose(@m2)))]             
768.00/213.02	                                                                                                         
768.00/213.02	               [lineMult#1^#(::(@x, @xs), @l)] =  [1 0] @x + [1 0] @xs + [0 0] @l + [1]                  
768.00/213.02	                                                  [0 0]      [0 0]       [4 0]      [0]                  
768.00/213.02	                                               >  [1 0] @xs + [0]                                        
768.00/213.02	                                                  [0 0]       [0]                                        
768.00/213.02	                                               =  [c_12(lineMult^#(@l, @xs))]                            
768.00/213.02	                                                                                                         
768.00/213.02	   
768.00/213.02	   We return to the main proof. Consider the set of all dependency
768.00/213.02	   pairs
768.00/213.02	   
768.00/213.02	   :
768.00/213.02	     { 1: lineMult^#(@l, @m2) -> c_1(lineMult#1^#(@m2, @l))
768.00/213.02	     , 2: matrixMultList^#(@acc, @mm) ->
768.00/213.02	          c_2(matrixMultList#1^#(@mm, @acc))
768.00/213.02	     , 3: matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.02	          c_3(matrixMultList^#(matrixMult(@acc, @m), @ms))
768.00/213.02	     , 4: matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.02	          c_4(matrixMult^#(@acc, @m))
768.00/213.02	     , 5: matrixMult3^#(@m1, @m2, @m3) -> c_5(matrixMult^#(@m1, @m2))
768.00/213.02	     , 6: matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.02	          c_6(matrixMult^#(matrixMult(@m1, @m2), @m3))
768.00/213.02	     , 7: matrixMult^#(@m1, @m2) ->
768.00/213.02	          c_7(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))))
768.00/213.02	     , 8: matrixMult'^#(@m1, @m2) -> c_8(matrixMult'#1^#(@m1, @m2))
768.00/213.02	     , 9: matrixMult'#1^#(::(@l, @ls), @m2) ->
768.00/213.02	          c_9(matrixMult'^#(@ls, @m2))
768.00/213.02	     , 10: matrixMult'#1^#(::(@l, @ls), @m2) ->
768.00/213.02	           c_10(lineMult^#(@l, @m2))
768.00/213.02	     , 11: matrixMultOld^#(@m1, @m2) ->
768.00/213.02	           c_11(matrixMult'^#(@m1, transpose(@m2)))
768.00/213.02	     , 12: lineMult#1^#(::(@x, @xs), @l) -> c_12(lineMult^#(@l, @xs)) }
768.00/213.02	   
768.00/213.02	   Processor 'matrix interpretation of dimension 2' induces the
768.00/213.02	   complexity certificate YES(?,O(n^1)) on application of dependency
768.00/213.02	   pairs {3,4,5,6,10,11,12}. These cover all (indirect) predecessors
768.00/213.02	   of dependency pairs {1,2,3,4,5,6,7,10,11,12}, their number of
768.00/213.02	   application is equally bounded. The dependency pairs are shifted
768.00/213.02	   into the weak component.
768.00/213.02	   
768.00/213.02	   We are left with following problem, upon which TcT provides the
768.00/213.02	   certificate YES(O(1),O(1)).
768.00/213.02	   
768.00/213.02	   Weak DPs:
768.00/213.02	     { matrixMultList^#(@acc, @mm) -> c_2(matrixMultList#1^#(@mm, @acc))
768.00/213.02	     , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.02	       c_3(matrixMultList^#(matrixMult(@acc, @m), @ms))
768.00/213.02	     , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.02	       c_4(matrixMult^#(@acc, @m))
768.00/213.02	     , matrixMult3^#(@m1, @m2, @m3) -> c_5(matrixMult^#(@m1, @m2))
768.00/213.02	     , matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.02	       c_6(matrixMult^#(matrixMult(@m1, @m2), @m3))
768.00/213.02	     , matrixMult^#(@m1, @m2) ->
768.00/213.02	       c_7(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))))
768.00/213.02	     , matrixMult'^#(@m1, @m2) -> c_8(matrixMult'#1^#(@m1, @m2))
768.00/213.02	     , matrixMult'#1^#(::(@l, @ls), @m2) -> c_9(matrixMult'^#(@ls, @m2))
768.00/213.02	     , matrixMult'#1^#(::(@l, @ls), @m2) -> c_10(lineMult^#(@l, @m2))
768.00/213.02	     , lineMult^#(@l, @m2) -> c_1(lineMult#1^#(@m2, @l))
768.00/213.02	     , matrixMultOld^#(@m1, @m2) ->
768.00/213.02	       c_11(matrixMult'^#(@m1, transpose(@m2)))
768.00/213.02	     , lineMult#1^#(::(@x, @xs), @l) -> c_12(lineMult^#(@l, @xs)) }
768.00/213.02	   Weak Trs:
768.00/213.02	     { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.02	     , split(@m) -> split#1(@m)
768.00/213.02	     , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.02	     , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.02	     , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.02	     , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.02	     , #add(#0(), @y) -> @y
768.00/213.02	     , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.02	     , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.02	     , split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.02	     , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.00/213.02	     , transpose(@m) -> transpose#1(@m, @m)
768.00/213.02	     , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.02	     , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.02	     , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.02	     , +(@x, @y) -> #add(@x, @y)
768.00/213.02	     , transAcc#1(nil(), @base) -> @base
768.00/213.02	     , transAcc#1(::(@l, @m'), @base) ->
768.00/213.02	       attach(@l, transAcc(@m', @base))
768.00/213.02	     , *(@x, @y) -> #mult(@x, @y)
768.00/213.02	     , mkBase#1(nil()) -> nil()
768.00/213.02	     , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.02	     , transpose#3(nil(), @l) -> nil()
768.00/213.02	     , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
768.00/213.02	     , attach#1(nil(), @m) -> nil()
768.00/213.02	     , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.02	     , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
768.00/213.02	     , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.02	     , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.02	       ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.02	     , #natmult(#0(), @y) -> #0()
768.00/213.02	     , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.02	     , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.02	     , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.00/213.02	     , mkBase(@m) -> mkBase#1(@m)
768.00/213.02	     , makeBase(@m) -> makeBase#1(@m)
768.00/213.02	     , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.02	     , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.02	     , lineMult#1(nil(), @l) -> nil()
768.00/213.02	     , lineMult#1(::(@x, @xs), @l) ->
768.00/213.02	       ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.02	     , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.02	     , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.02	     , #mult(#neg(@x), #0()) -> #0()
768.00/213.02	     , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.02	     , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.02	     , #mult(#pos(@x), #0()) -> #0()
768.00/213.02	     , #mult(#0(), #neg(@y)) -> #0()
768.00/213.02	     , #mult(#0(), #pos(@y)) -> #0()
768.00/213.02	     , #mult(#0(), #0()) -> #0()
768.00/213.02	     , attach#2(nil(), @x, @xs) -> nil()
768.00/213.02	     , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.02	       ::(::(@x, @l), attach(@xs, @ls))
768.00/213.02	     , #succ(#neg(#s(#0()))) -> #0()
768.00/213.02	     , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.02	     , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.02	     , #succ(#0()) -> #pos(#s(#0()))
768.00/213.02	     , makeBase#1(nil()) -> nil()
768.00/213.02	     , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.02	     , matrixMult(@m1, @m2) ->
768.00/213.02	       matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.02	     , #abs(#neg(@x)) -> #pos(@x)
768.00/213.02	     , #abs(#pos(@x)) -> #pos(@x)
768.00/213.02	     , #abs(#0()) -> #0()
768.00/213.02	     , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.02	     , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.02	     , transpose#1(nil(), @m) -> nil()
768.00/213.02	     , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
768.00/213.02	     , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.00/213.02	       tuple#2(::(@x, @ys), ::(@xs, @m'))
768.00/213.02	     , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.02	     , #pred(#pos(#s(#0()))) -> #0()
768.00/213.02	     , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.02	     , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.02	   Obligation:
768.00/213.02	     innermost runtime complexity
768.00/213.02	   Answer:
768.00/213.02	     YES(O(1),O(1))
768.00/213.02	   
768.00/213.02	   The following weak DPs constitute a sub-graph of the DG that is
768.00/213.02	   closed under successors. The DPs are removed.
768.00/213.02	   
768.00/213.02	   { matrixMultList^#(@acc, @mm) -> c_2(matrixMultList#1^#(@mm, @acc))
768.00/213.02	   , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.02	     c_3(matrixMultList^#(matrixMult(@acc, @m), @ms))
768.00/213.02	   , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.02	     c_4(matrixMult^#(@acc, @m))
768.00/213.02	   , matrixMult3^#(@m1, @m2, @m3) -> c_5(matrixMult^#(@m1, @m2))
768.00/213.02	   , matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.02	     c_6(matrixMult^#(matrixMult(@m1, @m2), @m3))
768.00/213.02	   , matrixMult^#(@m1, @m2) ->
768.00/213.02	     c_7(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))))
768.00/213.02	   , matrixMult'^#(@m1, @m2) -> c_8(matrixMult'#1^#(@m1, @m2))
768.00/213.02	   , matrixMult'#1^#(::(@l, @ls), @m2) -> c_9(matrixMult'^#(@ls, @m2))
768.00/213.02	   , matrixMult'#1^#(::(@l, @ls), @m2) -> c_10(lineMult^#(@l, @m2))
768.00/213.02	   , lineMult^#(@l, @m2) -> c_1(lineMult#1^#(@m2, @l))
768.00/213.02	   , matrixMultOld^#(@m1, @m2) ->
768.00/213.02	     c_11(matrixMult'^#(@m1, transpose(@m2)))
768.00/213.02	   , lineMult#1^#(::(@x, @xs), @l) -> c_12(lineMult^#(@l, @xs)) }
768.00/213.02	   
768.00/213.02	   We are left with following problem, upon which TcT provides the
768.00/213.02	   certificate YES(O(1),O(1)).
768.00/213.02	   
768.00/213.02	   Weak Trs:
768.00/213.02	     { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.02	     , split(@m) -> split#1(@m)
768.00/213.02	     , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.02	     , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.02	     , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.02	     , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.02	     , #add(#0(), @y) -> @y
768.00/213.02	     , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.02	     , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.02	     , split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.02	     , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.00/213.02	     , transpose(@m) -> transpose#1(@m, @m)
768.00/213.02	     , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.02	     , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.02	     , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.02	     , +(@x, @y) -> #add(@x, @y)
768.00/213.02	     , transAcc#1(nil(), @base) -> @base
768.00/213.02	     , transAcc#1(::(@l, @m'), @base) ->
768.00/213.03	       attach(@l, transAcc(@m', @base))
768.00/213.03	     , *(@x, @y) -> #mult(@x, @y)
768.00/213.03	     , mkBase#1(nil()) -> nil()
768.00/213.03	     , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.03	     , transpose#3(nil(), @l) -> nil()
768.00/213.03	     , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
768.00/213.03	     , attach#1(nil(), @m) -> nil()
768.00/213.03	     , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.03	     , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
768.00/213.03	     , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.03	     , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.03	       ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.03	     , #natmult(#0(), @y) -> #0()
768.00/213.03	     , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.03	     , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.03	     , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.00/213.03	     , mkBase(@m) -> mkBase#1(@m)
768.00/213.03	     , makeBase(@m) -> makeBase#1(@m)
768.00/213.03	     , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.03	     , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.03	     , lineMult#1(nil(), @l) -> nil()
768.00/213.03	     , lineMult#1(::(@x, @xs), @l) ->
768.00/213.03	       ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.03	     , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.03	     , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.03	     , #mult(#neg(@x), #0()) -> #0()
768.00/213.03	     , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.03	     , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.03	     , #mult(#pos(@x), #0()) -> #0()
768.00/213.03	     , #mult(#0(), #neg(@y)) -> #0()
768.00/213.03	     , #mult(#0(), #pos(@y)) -> #0()
768.00/213.03	     , #mult(#0(), #0()) -> #0()
768.00/213.03	     , attach#2(nil(), @x, @xs) -> nil()
768.00/213.03	     , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.03	       ::(::(@x, @l), attach(@xs, @ls))
768.00/213.03	     , #succ(#neg(#s(#0()))) -> #0()
768.00/213.03	     , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.03	     , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.03	     , #succ(#0()) -> #pos(#s(#0()))
768.00/213.03	     , makeBase#1(nil()) -> nil()
768.00/213.03	     , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.03	     , matrixMult(@m1, @m2) ->
768.00/213.03	       matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.03	     , #abs(#neg(@x)) -> #pos(@x)
768.00/213.03	     , #abs(#pos(@x)) -> #pos(@x)
768.00/213.03	     , #abs(#0()) -> #0()
768.00/213.03	     , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.03	     , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.03	     , transpose#1(nil(), @m) -> nil()
768.00/213.03	     , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
768.00/213.03	     , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.00/213.03	       tuple#2(::(@x, @ys), ::(@xs, @m'))
768.00/213.03	     , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.03	     , #pred(#pos(#s(#0()))) -> #0()
768.00/213.03	     , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.03	     , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.03	   Obligation:
768.00/213.03	     innermost runtime complexity
768.00/213.03	   Answer:
768.00/213.03	     YES(O(1),O(1))
768.00/213.03	   
768.00/213.03	   No rule is usable, rules are removed from the input problem.
768.00/213.03	   
768.00/213.03	   We are left with following problem, upon which TcT provides the
768.00/213.03	   certificate YES(O(1),O(1)).
768.00/213.03	   
768.00/213.03	   Rules: Empty
768.00/213.03	   Obligation:
768.00/213.03	     innermost runtime complexity
768.00/213.03	   Answer:
768.00/213.03	     YES(O(1),O(1))
768.00/213.03	   
768.00/213.03	   Empty rules are trivially bounded
768.00/213.03	
768.00/213.03	S) We are left with following problem, upon which TcT provides the
768.00/213.03	   certificate YES(O(1),O(n^1)).
768.00/213.03	   
768.00/213.03	   Strict DPs:
768.00/213.03	     { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.00/213.03	     , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.03	       c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.00/213.03	           matrixMult^#(@acc, @m))
768.00/213.03	     , attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.00/213.03	     , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.00/213.03	     , split^#(@m) -> c_5(split#1^#(@m))
768.00/213.03	     , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
768.00/213.03	     , transpose'^#(@m) ->
768.00/213.03	       c_11(transAcc^#(@m, makeBase(@m)), makeBase^#(@m))
768.00/213.03	     , transAcc^#(@m, @base) -> c_12(transAcc#1^#(@m, @base))
768.00/213.03	     , makeBase^#(@m) -> c_13(makeBase#1^#(@m))
768.00/213.03	     , split#2^#(::(@x, @xs), @ls) -> c_14(split^#(@ls))
768.00/213.03	     , transpose^#(@m) -> c_15(transpose#1^#(@m, @m))
768.00/213.03	     , transpose#1^#(::(@xs, @xss), @m) ->
768.00/213.03	       c_16(transpose#2^#(split(@m)), split^#(@m))
768.00/213.03	     , transAcc#1^#(::(@l, @m'), @base) ->
768.00/213.03	       c_19(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.00/213.03	     , mkBase#1^#(::(@l, @m')) -> c_21(mkBase^#(@m'))
768.00/213.03	     , mkBase^#(@m) -> c_22(mkBase#1^#(@m))
768.00/213.03	     , transpose#3^#(::(@y, @ys), @l) -> c_23(transpose^#(::(@y, @ys)))
768.00/213.03	     , attach#2^#(::(@l, @ls), @x, @xs) -> c_24(attach^#(@xs, @ls))
768.00/213.03	     , transpose#2^#(tuple#2(@l, @m')) -> c_25(transpose#3^#(@m', @l))
768.00/213.03	     , matrixMultOld^#(@m1, @m2) ->
768.00/213.03	       c_27(matrixMult'^#(@m1, transpose(@m2)), transpose^#(@m2))
768.00/213.03	     , makeBase#1^#(::(@l, @m')) -> c_28(mkBase^#(@l)) }
768.00/213.03	   Weak DPs:
768.00/213.03	     { matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.03	       c_7(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.00/213.03	           matrixMult^#(@m1, @m2))
768.00/213.03	     , matrixMult^#(@m1, @m2) ->
768.00/213.03	       c_8(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))),
768.00/213.03	           transAcc^#(@m2, makeBase(@m2)),
768.00/213.03	           makeBase^#(@m2))
768.00/213.03	     , mult#2^#(::(@y, @ys), @x, @xs) -> c_9(mult^#(@xs, @ys))
768.00/213.03	     , mult^#(@l1, @l2) -> c_10(mult#1^#(@l1, @l2))
768.00/213.03	     , matrixMult'^#(@m1, @m2) -> c_17(matrixMult'#1^#(@m1, @m2))
768.00/213.03	     , matrixMult'#1^#(::(@l, @ls), @m2) ->
768.00/213.03	       c_18(lineMult^#(@l, @m2), matrixMult'^#(@ls, @m2))
768.00/213.03	     , mult#1^#(::(@x, @xs), @l2) -> c_20(mult#2^#(@l2, @x, @xs))
768.00/213.03	     , lineMult^#(@l, @m2) -> c_26(lineMult#1^#(@m2, @l))
768.00/213.03	     , lineMult#1^#(::(@x, @xs), @l) ->
768.00/213.03	       c_29(mult^#(@l, @x), lineMult^#(@l, @xs)) }
768.00/213.03	   Weak Trs:
768.00/213.03	     { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.03	     , split(@m) -> split#1(@m)
768.00/213.03	     , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.03	     , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.03	     , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.03	     , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.03	     , #add(#0(), @y) -> @y
768.00/213.03	     , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.03	     , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.03	     , split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.03	     , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.00/213.03	     , transpose(@m) -> transpose#1(@m, @m)
768.00/213.03	     , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.03	     , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.03	     , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.03	     , +(@x, @y) -> #add(@x, @y)
768.00/213.03	     , transAcc#1(nil(), @base) -> @base
768.00/213.03	     , transAcc#1(::(@l, @m'), @base) ->
768.00/213.03	       attach(@l, transAcc(@m', @base))
768.00/213.03	     , *(@x, @y) -> #mult(@x, @y)
768.00/213.03	     , mkBase#1(nil()) -> nil()
768.00/213.03	     , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.03	     , transpose#3(nil(), @l) -> nil()
768.00/213.03	     , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
768.00/213.03	     , attach#1(nil(), @m) -> nil()
768.00/213.03	     , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.03	     , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
768.00/213.03	     , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.03	     , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.03	       ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.03	     , #natmult(#0(), @y) -> #0()
768.00/213.03	     , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.03	     , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.03	     , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.00/213.03	     , mkBase(@m) -> mkBase#1(@m)
768.00/213.03	     , makeBase(@m) -> makeBase#1(@m)
768.00/213.03	     , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.03	     , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.03	     , lineMult#1(nil(), @l) -> nil()
768.00/213.03	     , lineMult#1(::(@x, @xs), @l) ->
768.00/213.03	       ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.03	     , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.03	     , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.03	     , #mult(#neg(@x), #0()) -> #0()
768.00/213.03	     , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.03	     , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.03	     , #mult(#pos(@x), #0()) -> #0()
768.00/213.03	     , #mult(#0(), #neg(@y)) -> #0()
768.00/213.03	     , #mult(#0(), #pos(@y)) -> #0()
768.00/213.03	     , #mult(#0(), #0()) -> #0()
768.00/213.03	     , attach#2(nil(), @x, @xs) -> nil()
768.00/213.03	     , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.03	       ::(::(@x, @l), attach(@xs, @ls))
768.00/213.03	     , #succ(#neg(#s(#0()))) -> #0()
768.00/213.03	     , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.03	     , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.03	     , #succ(#0()) -> #pos(#s(#0()))
768.00/213.03	     , makeBase#1(nil()) -> nil()
768.00/213.03	     , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.03	     , matrixMult(@m1, @m2) ->
768.00/213.03	       matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.03	     , #abs(#neg(@x)) -> #pos(@x)
768.00/213.03	     , #abs(#pos(@x)) -> #pos(@x)
768.00/213.03	     , #abs(#0()) -> #0()
768.00/213.03	     , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.03	     , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.03	     , transpose#1(nil(), @m) -> nil()
768.00/213.03	     , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
768.00/213.03	     , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.00/213.03	       tuple#2(::(@x, @ys), ::(@xs, @m'))
768.00/213.03	     , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.03	     , #pred(#pos(#s(#0()))) -> #0()
768.00/213.03	     , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.03	     , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.03	   Obligation:
768.00/213.03	     innermost runtime complexity
768.00/213.03	   Answer:
768.00/213.03	     YES(O(1),O(n^1))
768.00/213.03	   
768.00/213.03	   The following weak DPs constitute a sub-graph of the DG that is
768.00/213.03	   closed under successors. The DPs are removed.
768.00/213.03	   
768.00/213.03	   { mult#2^#(::(@y, @ys), @x, @xs) -> c_9(mult^#(@xs, @ys))
768.00/213.03	   , mult^#(@l1, @l2) -> c_10(mult#1^#(@l1, @l2))
768.00/213.03	   , matrixMult'^#(@m1, @m2) -> c_17(matrixMult'#1^#(@m1, @m2))
768.00/213.03	   , matrixMult'#1^#(::(@l, @ls), @m2) ->
768.00/213.03	     c_18(lineMult^#(@l, @m2), matrixMult'^#(@ls, @m2))
768.00/213.03	   , mult#1^#(::(@x, @xs), @l2) -> c_20(mult#2^#(@l2, @x, @xs))
768.00/213.03	   , lineMult^#(@l, @m2) -> c_26(lineMult#1^#(@m2, @l))
768.00/213.03	   , lineMult#1^#(::(@x, @xs), @l) ->
768.00/213.03	     c_29(mult^#(@l, @x), lineMult^#(@l, @xs)) }
768.00/213.03	   
768.00/213.03	   We are left with following problem, upon which TcT provides the
768.00/213.03	   certificate YES(O(1),O(n^1)).
768.00/213.03	   
768.00/213.03	   Strict DPs:
768.00/213.03	     { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.00/213.03	     , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.03	       c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.00/213.03	           matrixMult^#(@acc, @m))
768.00/213.03	     , attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.00/213.03	     , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.00/213.03	     , split^#(@m) -> c_5(split#1^#(@m))
768.00/213.03	     , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
768.00/213.03	     , transpose'^#(@m) ->
768.00/213.03	       c_11(transAcc^#(@m, makeBase(@m)), makeBase^#(@m))
768.00/213.03	     , transAcc^#(@m, @base) -> c_12(transAcc#1^#(@m, @base))
768.00/213.03	     , makeBase^#(@m) -> c_13(makeBase#1^#(@m))
768.00/213.03	     , split#2^#(::(@x, @xs), @ls) -> c_14(split^#(@ls))
768.00/213.03	     , transpose^#(@m) -> c_15(transpose#1^#(@m, @m))
768.00/213.03	     , transpose#1^#(::(@xs, @xss), @m) ->
768.00/213.03	       c_16(transpose#2^#(split(@m)), split^#(@m))
768.00/213.03	     , transAcc#1^#(::(@l, @m'), @base) ->
768.00/213.03	       c_19(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.00/213.03	     , mkBase#1^#(::(@l, @m')) -> c_21(mkBase^#(@m'))
768.00/213.03	     , mkBase^#(@m) -> c_22(mkBase#1^#(@m))
768.00/213.03	     , transpose#3^#(::(@y, @ys), @l) -> c_23(transpose^#(::(@y, @ys)))
768.00/213.03	     , attach#2^#(::(@l, @ls), @x, @xs) -> c_24(attach^#(@xs, @ls))
768.00/213.03	     , transpose#2^#(tuple#2(@l, @m')) -> c_25(transpose#3^#(@m', @l))
768.00/213.03	     , matrixMultOld^#(@m1, @m2) ->
768.00/213.03	       c_27(matrixMult'^#(@m1, transpose(@m2)), transpose^#(@m2))
768.00/213.03	     , makeBase#1^#(::(@l, @m')) -> c_28(mkBase^#(@l)) }
768.00/213.03	   Weak DPs:
768.00/213.03	     { matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.03	       c_7(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.00/213.03	           matrixMult^#(@m1, @m2))
768.00/213.03	     , matrixMult^#(@m1, @m2) ->
768.00/213.03	       c_8(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))),
768.00/213.03	           transAcc^#(@m2, makeBase(@m2)),
768.00/213.03	           makeBase^#(@m2)) }
768.00/213.03	   Weak Trs:
768.00/213.03	     { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.03	     , split(@m) -> split#1(@m)
768.00/213.03	     , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.03	     , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.03	     , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.03	     , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.03	     , #add(#0(), @y) -> @y
768.00/213.03	     , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.03	     , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.03	     , split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.03	     , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.00/213.03	     , transpose(@m) -> transpose#1(@m, @m)
768.00/213.03	     , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.03	     , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.03	     , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.03	     , +(@x, @y) -> #add(@x, @y)
768.00/213.03	     , transAcc#1(nil(), @base) -> @base
768.00/213.03	     , transAcc#1(::(@l, @m'), @base) ->
768.00/213.03	       attach(@l, transAcc(@m', @base))
768.00/213.03	     , *(@x, @y) -> #mult(@x, @y)
768.00/213.03	     , mkBase#1(nil()) -> nil()
768.00/213.03	     , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.03	     , transpose#3(nil(), @l) -> nil()
768.00/213.03	     , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
768.00/213.03	     , attach#1(nil(), @m) -> nil()
768.00/213.03	     , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.03	     , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
768.00/213.03	     , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.03	     , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.03	       ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.03	     , #natmult(#0(), @y) -> #0()
768.00/213.03	     , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.03	     , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.03	     , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.00/213.03	     , mkBase(@m) -> mkBase#1(@m)
768.00/213.03	     , makeBase(@m) -> makeBase#1(@m)
768.00/213.03	     , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.03	     , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.03	     , lineMult#1(nil(), @l) -> nil()
768.00/213.03	     , lineMult#1(::(@x, @xs), @l) ->
768.00/213.03	       ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.03	     , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.03	     , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.03	     , #mult(#neg(@x), #0()) -> #0()
768.00/213.03	     , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.03	     , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.03	     , #mult(#pos(@x), #0()) -> #0()
768.00/213.03	     , #mult(#0(), #neg(@y)) -> #0()
768.00/213.03	     , #mult(#0(), #pos(@y)) -> #0()
768.00/213.03	     , #mult(#0(), #0()) -> #0()
768.00/213.03	     , attach#2(nil(), @x, @xs) -> nil()
768.00/213.03	     , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.03	       ::(::(@x, @l), attach(@xs, @ls))
768.00/213.03	     , #succ(#neg(#s(#0()))) -> #0()
768.00/213.03	     , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.03	     , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.03	     , #succ(#0()) -> #pos(#s(#0()))
768.00/213.03	     , makeBase#1(nil()) -> nil()
768.00/213.03	     , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.03	     , matrixMult(@m1, @m2) ->
768.00/213.03	       matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.03	     , #abs(#neg(@x)) -> #pos(@x)
768.00/213.03	     , #abs(#pos(@x)) -> #pos(@x)
768.00/213.03	     , #abs(#0()) -> #0()
768.00/213.03	     , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.03	     , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.03	     , transpose#1(nil(), @m) -> nil()
768.00/213.03	     , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
768.00/213.03	     , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.00/213.03	       tuple#2(::(@x, @ys), ::(@xs, @m'))
768.00/213.03	     , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.03	     , #pred(#pos(#s(#0()))) -> #0()
768.00/213.03	     , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.03	     , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.03	   Obligation:
768.00/213.03	     innermost runtime complexity
768.00/213.03	   Answer:
768.00/213.03	     YES(O(1),O(n^1))
768.00/213.03	   
768.00/213.03	   Due to missing edges in the dependency-graph, the right-hand sides
768.00/213.03	   of following rules could be simplified:
768.00/213.03	   
768.00/213.03	     { matrixMult^#(@m1, @m2) ->
768.00/213.03	       c_8(matrixMult'^#(@m1, transAcc(@m2, makeBase(@m2))),
768.00/213.03	           transAcc^#(@m2, makeBase(@m2)),
768.00/213.03	           makeBase^#(@m2))
768.00/213.03	     , matrixMultOld^#(@m1, @m2) ->
768.00/213.03	       c_27(matrixMult'^#(@m1, transpose(@m2)), transpose^#(@m2)) }
768.00/213.03	   
768.00/213.03	   We are left with following problem, upon which TcT provides the
768.00/213.03	   certificate YES(O(1),O(n^1)).
768.00/213.03	   
768.00/213.03	   Strict DPs:
768.00/213.03	     { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.00/213.03	     , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.03	       c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.00/213.03	           matrixMult^#(@acc, @m))
768.00/213.03	     , attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.00/213.03	     , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.00/213.03	     , split^#(@m) -> c_5(split#1^#(@m))
768.00/213.03	     , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
768.00/213.03	     , transpose'^#(@m) ->
768.00/213.03	       c_7(transAcc^#(@m, makeBase(@m)), makeBase^#(@m))
768.00/213.03	     , transAcc^#(@m, @base) -> c_8(transAcc#1^#(@m, @base))
768.00/213.03	     , makeBase^#(@m) -> c_9(makeBase#1^#(@m))
768.00/213.03	     , split#2^#(::(@x, @xs), @ls) -> c_10(split^#(@ls))
768.00/213.03	     , transpose^#(@m) -> c_11(transpose#1^#(@m, @m))
768.00/213.03	     , transpose#1^#(::(@xs, @xss), @m) ->
768.00/213.03	       c_12(transpose#2^#(split(@m)), split^#(@m))
768.00/213.03	     , transAcc#1^#(::(@l, @m'), @base) ->
768.00/213.03	       c_13(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.00/213.03	     , mkBase#1^#(::(@l, @m')) -> c_14(mkBase^#(@m'))
768.00/213.03	     , mkBase^#(@m) -> c_15(mkBase#1^#(@m))
768.00/213.03	     , transpose#3^#(::(@y, @ys), @l) -> c_16(transpose^#(::(@y, @ys)))
768.00/213.03	     , attach#2^#(::(@l, @ls), @x, @xs) -> c_17(attach^#(@xs, @ls))
768.00/213.03	     , transpose#2^#(tuple#2(@l, @m')) -> c_18(transpose#3^#(@m', @l))
768.00/213.03	     , matrixMultOld^#(@m1, @m2) -> c_19(transpose^#(@m2))
768.00/213.03	     , makeBase#1^#(::(@l, @m')) -> c_20(mkBase^#(@l)) }
768.00/213.03	   Weak DPs:
768.00/213.03	     { matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.03	       c_21(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.00/213.03	            matrixMult^#(@m1, @m2))
768.00/213.03	     , matrixMult^#(@m1, @m2) ->
768.00/213.03	       c_22(transAcc^#(@m2, makeBase(@m2)), makeBase^#(@m2)) }
768.00/213.03	   Weak Trs:
768.00/213.03	     { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.03	     , split(@m) -> split#1(@m)
768.00/213.03	     , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.03	     , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.03	     , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.03	     , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.03	     , #add(#0(), @y) -> @y
768.00/213.03	     , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.03	     , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.03	     , split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.03	     , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.00/213.03	     , transpose(@m) -> transpose#1(@m, @m)
768.00/213.03	     , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.03	     , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.03	     , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.03	     , +(@x, @y) -> #add(@x, @y)
768.00/213.03	     , transAcc#1(nil(), @base) -> @base
768.00/213.03	     , transAcc#1(::(@l, @m'), @base) ->
768.00/213.03	       attach(@l, transAcc(@m', @base))
768.00/213.03	     , *(@x, @y) -> #mult(@x, @y)
768.00/213.03	     , mkBase#1(nil()) -> nil()
768.00/213.03	     , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.03	     , transpose#3(nil(), @l) -> nil()
768.00/213.03	     , transpose#3(::(@y, @ys), @l) -> ::(@l, transpose(::(@y, @ys)))
768.00/213.03	     , attach#1(nil(), @m) -> nil()
768.00/213.03	     , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.03	     , transpose#2(tuple#2(@l, @m')) -> transpose#3(@m', @l)
768.00/213.03	     , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.03	     , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.03	       ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.03	     , #natmult(#0(), @y) -> #0()
768.00/213.03	     , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.03	     , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.03	     , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.00/213.03	     , mkBase(@m) -> mkBase#1(@m)
768.00/213.03	     , makeBase(@m) -> makeBase#1(@m)
768.00/213.03	     , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.03	     , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.03	     , lineMult#1(nil(), @l) -> nil()
768.00/213.03	     , lineMult#1(::(@x, @xs), @l) ->
768.00/213.03	       ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.03	     , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.03	     , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.03	     , #mult(#neg(@x), #0()) -> #0()
768.00/213.03	     , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.03	     , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.03	     , #mult(#pos(@x), #0()) -> #0()
768.00/213.03	     , #mult(#0(), #neg(@y)) -> #0()
768.00/213.03	     , #mult(#0(), #pos(@y)) -> #0()
768.00/213.03	     , #mult(#0(), #0()) -> #0()
768.00/213.03	     , attach#2(nil(), @x, @xs) -> nil()
768.00/213.03	     , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.03	       ::(::(@x, @l), attach(@xs, @ls))
768.00/213.03	     , #succ(#neg(#s(#0()))) -> #0()
768.00/213.03	     , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.03	     , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.03	     , #succ(#0()) -> #pos(#s(#0()))
768.00/213.03	     , makeBase#1(nil()) -> nil()
768.00/213.03	     , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.03	     , matrixMult(@m1, @m2) ->
768.00/213.03	       matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.03	     , #abs(#neg(@x)) -> #pos(@x)
768.00/213.03	     , #abs(#pos(@x)) -> #pos(@x)
768.00/213.03	     , #abs(#0()) -> #0()
768.00/213.03	     , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.03	     , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.03	     , transpose#1(nil(), @m) -> nil()
768.00/213.03	     , transpose#1(::(@xs, @xss), @m) -> transpose#2(split(@m))
768.00/213.03	     , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.00/213.03	       tuple#2(::(@x, @ys), ::(@xs, @m'))
768.00/213.03	     , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.03	     , #pred(#pos(#s(#0()))) -> #0()
768.00/213.03	     , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.03	     , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.03	   Obligation:
768.00/213.03	     innermost runtime complexity
768.00/213.03	   Answer:
768.00/213.03	     YES(O(1),O(n^1))
768.00/213.03	   
768.00/213.03	   We replace rewrite rules by usable rules:
768.00/213.03	   
768.00/213.03	     Weak Usable Rules:
768.00/213.03	       { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.03	       , split(@m) -> split#1(@m)
768.00/213.03	       , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.03	       , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.03	       , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.03	       , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.03	       , #add(#0(), @y) -> @y
768.00/213.03	       , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.03	       , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.03	       , split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.03	       , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.00/213.03	       , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.03	       , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.03	       , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.03	       , +(@x, @y) -> #add(@x, @y)
768.00/213.03	       , transAcc#1(nil(), @base) -> @base
768.00/213.03	       , transAcc#1(::(@l, @m'), @base) ->
768.00/213.03	         attach(@l, transAcc(@m', @base))
768.00/213.03	       , *(@x, @y) -> #mult(@x, @y)
768.00/213.03	       , mkBase#1(nil()) -> nil()
768.00/213.03	       , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.03	       , attach#1(nil(), @m) -> nil()
768.00/213.03	       , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.03	       , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.03	       , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.03	         ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.03	       , #natmult(#0(), @y) -> #0()
768.00/213.03	       , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.03	       , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.03	       , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.00/213.03	       , mkBase(@m) -> mkBase#1(@m)
768.00/213.03	       , makeBase(@m) -> makeBase#1(@m)
768.00/213.03	       , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.03	       , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.03	       , lineMult#1(nil(), @l) -> nil()
768.00/213.03	       , lineMult#1(::(@x, @xs), @l) ->
768.00/213.03	         ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.03	       , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.03	       , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.03	       , #mult(#neg(@x), #0()) -> #0()
768.00/213.03	       , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.03	       , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.03	       , #mult(#pos(@x), #0()) -> #0()
768.00/213.03	       , #mult(#0(), #neg(@y)) -> #0()
768.00/213.03	       , #mult(#0(), #pos(@y)) -> #0()
768.00/213.03	       , #mult(#0(), #0()) -> #0()
768.00/213.03	       , attach#2(nil(), @x, @xs) -> nil()
768.00/213.04	       , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.04	         ::(::(@x, @l), attach(@xs, @ls))
768.00/213.04	       , #succ(#neg(#s(#0()))) -> #0()
768.00/213.04	       , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.04	       , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.04	       , #succ(#0()) -> #pos(#s(#0()))
768.00/213.04	       , makeBase#1(nil()) -> nil()
768.00/213.04	       , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.04	       , matrixMult(@m1, @m2) ->
768.00/213.04	         matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.04	       , #abs(#neg(@x)) -> #pos(@x)
768.00/213.04	       , #abs(#pos(@x)) -> #pos(@x)
768.00/213.04	       , #abs(#0()) -> #0()
768.00/213.04	       , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.04	       , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.04	       , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.00/213.04	         tuple#2(::(@x, @ys), ::(@xs, @m'))
768.00/213.04	       , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.04	       , #pred(#pos(#s(#0()))) -> #0()
768.00/213.04	       , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.04	       , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.04	   
768.00/213.04	   We are left with following problem, upon which TcT provides the
768.00/213.04	   certificate YES(O(1),O(n^1)).
768.00/213.04	   
768.00/213.04	   Strict DPs:
768.00/213.04	     { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.00/213.04	     , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.04	       c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.00/213.04	           matrixMult^#(@acc, @m))
768.00/213.04	     , attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.00/213.04	     , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.00/213.04	     , split^#(@m) -> c_5(split#1^#(@m))
768.00/213.04	     , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
768.00/213.04	     , transpose'^#(@m) ->
768.00/213.04	       c_7(transAcc^#(@m, makeBase(@m)), makeBase^#(@m))
768.00/213.04	     , transAcc^#(@m, @base) -> c_8(transAcc#1^#(@m, @base))
768.00/213.04	     , makeBase^#(@m) -> c_9(makeBase#1^#(@m))
768.00/213.04	     , split#2^#(::(@x, @xs), @ls) -> c_10(split^#(@ls))
768.00/213.04	     , transpose^#(@m) -> c_11(transpose#1^#(@m, @m))
768.00/213.04	     , transpose#1^#(::(@xs, @xss), @m) ->
768.00/213.04	       c_12(transpose#2^#(split(@m)), split^#(@m))
768.00/213.04	     , transAcc#1^#(::(@l, @m'), @base) ->
768.00/213.04	       c_13(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.00/213.04	     , mkBase#1^#(::(@l, @m')) -> c_14(mkBase^#(@m'))
768.00/213.04	     , mkBase^#(@m) -> c_15(mkBase#1^#(@m))
768.00/213.04	     , transpose#3^#(::(@y, @ys), @l) -> c_16(transpose^#(::(@y, @ys)))
768.00/213.04	     , attach#2^#(::(@l, @ls), @x, @xs) -> c_17(attach^#(@xs, @ls))
768.00/213.04	     , transpose#2^#(tuple#2(@l, @m')) -> c_18(transpose#3^#(@m', @l))
768.00/213.04	     , matrixMultOld^#(@m1, @m2) -> c_19(transpose^#(@m2))
768.00/213.04	     , makeBase#1^#(::(@l, @m')) -> c_20(mkBase^#(@l)) }
768.00/213.04	   Weak DPs:
768.00/213.04	     { matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.04	       c_21(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.00/213.04	            matrixMult^#(@m1, @m2))
768.00/213.04	     , matrixMult^#(@m1, @m2) ->
768.00/213.04	       c_22(transAcc^#(@m2, makeBase(@m2)), makeBase^#(@m2)) }
768.00/213.04	   Weak Trs:
768.00/213.04	     { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.04	     , split(@m) -> split#1(@m)
768.00/213.04	     , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.04	     , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.04	     , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.04	     , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.04	     , #add(#0(), @y) -> @y
768.00/213.04	     , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.04	     , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.04	     , split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.04	     , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.00/213.04	     , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.04	     , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.04	     , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.04	     , +(@x, @y) -> #add(@x, @y)
768.00/213.04	     , transAcc#1(nil(), @base) -> @base
768.00/213.04	     , transAcc#1(::(@l, @m'), @base) ->
768.00/213.04	       attach(@l, transAcc(@m', @base))
768.00/213.04	     , *(@x, @y) -> #mult(@x, @y)
768.00/213.04	     , mkBase#1(nil()) -> nil()
768.00/213.04	     , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.04	     , attach#1(nil(), @m) -> nil()
768.00/213.04	     , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.04	     , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.04	     , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.04	       ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.04	     , #natmult(#0(), @y) -> #0()
768.00/213.04	     , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.04	     , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.04	     , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.00/213.04	     , mkBase(@m) -> mkBase#1(@m)
768.00/213.04	     , makeBase(@m) -> makeBase#1(@m)
768.00/213.04	     , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.04	     , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.04	     , lineMult#1(nil(), @l) -> nil()
768.00/213.04	     , lineMult#1(::(@x, @xs), @l) ->
768.00/213.04	       ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.04	     , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.04	     , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.04	     , #mult(#neg(@x), #0()) -> #0()
768.00/213.04	     , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.04	     , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.04	     , #mult(#pos(@x), #0()) -> #0()
768.00/213.04	     , #mult(#0(), #neg(@y)) -> #0()
768.00/213.04	     , #mult(#0(), #pos(@y)) -> #0()
768.00/213.04	     , #mult(#0(), #0()) -> #0()
768.00/213.04	     , attach#2(nil(), @x, @xs) -> nil()
768.00/213.04	     , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.04	       ::(::(@x, @l), attach(@xs, @ls))
768.00/213.04	     , #succ(#neg(#s(#0()))) -> #0()
768.00/213.04	     , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.04	     , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.04	     , #succ(#0()) -> #pos(#s(#0()))
768.00/213.04	     , makeBase#1(nil()) -> nil()
768.00/213.04	     , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.04	     , matrixMult(@m1, @m2) ->
768.00/213.04	       matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.04	     , #abs(#neg(@x)) -> #pos(@x)
768.00/213.04	     , #abs(#pos(@x)) -> #pos(@x)
768.00/213.04	     , #abs(#0()) -> #0()
768.00/213.04	     , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.04	     , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.04	     , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.00/213.04	       tuple#2(::(@x, @ys), ::(@xs, @m'))
768.00/213.04	     , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.04	     , #pred(#pos(#s(#0()))) -> #0()
768.00/213.04	     , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.04	     , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.04	   Obligation:
768.00/213.04	     innermost runtime complexity
768.00/213.04	   Answer:
768.00/213.04	     YES(O(1),O(n^1))
768.00/213.04	   
768.00/213.04	   We analyse the complexity of following sub-problems (R) and (S).
768.00/213.04	   Problem (S) is obtained from the input problem by shifting strict
768.00/213.04	   rules from (R) into the weak component:
768.00/213.04	   
768.00/213.04	   Problem (R):
768.00/213.04	   ------------
768.00/213.04	     Strict DPs:
768.00/213.04	       { transpose'^#(@m) ->
768.00/213.04	         c_7(transAcc^#(@m, makeBase(@m)), makeBase^#(@m))
768.00/213.04	       , makeBase^#(@m) -> c_9(makeBase#1^#(@m))
768.00/213.04	       , mkBase#1^#(::(@l, @m')) -> c_14(mkBase^#(@m'))
768.00/213.04	       , mkBase^#(@m) -> c_15(mkBase#1^#(@m))
768.00/213.04	       , makeBase#1^#(::(@l, @m')) -> c_20(mkBase^#(@l)) }
768.00/213.04	     Weak DPs:
768.00/213.04	       { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.00/213.04	       , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.04	         c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.00/213.04	             matrixMult^#(@acc, @m))
768.00/213.04	       , attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.00/213.04	       , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.00/213.04	       , split^#(@m) -> c_5(split#1^#(@m))
768.00/213.04	       , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
768.00/213.04	       , matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.04	         c_21(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.00/213.04	              matrixMult^#(@m1, @m2))
768.00/213.04	       , matrixMult^#(@m1, @m2) ->
768.00/213.04	         c_22(transAcc^#(@m2, makeBase(@m2)), makeBase^#(@m2))
768.00/213.04	       , transAcc^#(@m, @base) -> c_8(transAcc#1^#(@m, @base))
768.00/213.04	       , split#2^#(::(@x, @xs), @ls) -> c_10(split^#(@ls))
768.00/213.04	       , transpose^#(@m) -> c_11(transpose#1^#(@m, @m))
768.00/213.04	       , transpose#1^#(::(@xs, @xss), @m) ->
768.00/213.04	         c_12(transpose#2^#(split(@m)), split^#(@m))
768.00/213.04	       , transAcc#1^#(::(@l, @m'), @base) ->
768.00/213.04	         c_13(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.00/213.04	       , transpose#3^#(::(@y, @ys), @l) -> c_16(transpose^#(::(@y, @ys)))
768.00/213.04	       , attach#2^#(::(@l, @ls), @x, @xs) -> c_17(attach^#(@xs, @ls))
768.00/213.04	       , transpose#2^#(tuple#2(@l, @m')) -> c_18(transpose#3^#(@m', @l))
768.00/213.04	       , matrixMultOld^#(@m1, @m2) -> c_19(transpose^#(@m2)) }
768.00/213.04	     Weak Trs:
768.00/213.04	       { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.04	       , split(@m) -> split#1(@m)
768.00/213.04	       , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.04	       , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.04	       , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.04	       , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.04	       , #add(#0(), @y) -> @y
768.00/213.04	       , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.04	       , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.04	       , split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.04	       , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.00/213.04	       , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.04	       , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.04	       , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.04	       , +(@x, @y) -> #add(@x, @y)
768.00/213.04	       , transAcc#1(nil(), @base) -> @base
768.00/213.04	       , transAcc#1(::(@l, @m'), @base) ->
768.00/213.04	         attach(@l, transAcc(@m', @base))
768.00/213.04	       , *(@x, @y) -> #mult(@x, @y)
768.00/213.04	       , mkBase#1(nil()) -> nil()
768.00/213.04	       , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.04	       , attach#1(nil(), @m) -> nil()
768.00/213.04	       , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.04	       , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.04	       , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.04	         ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.04	       , #natmult(#0(), @y) -> #0()
768.00/213.04	       , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.04	       , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.04	       , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.00/213.04	       , mkBase(@m) -> mkBase#1(@m)
768.00/213.04	       , makeBase(@m) -> makeBase#1(@m)
768.00/213.04	       , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.04	       , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.04	       , lineMult#1(nil(), @l) -> nil()
768.00/213.04	       , lineMult#1(::(@x, @xs), @l) ->
768.00/213.04	         ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.04	       , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.04	       , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.04	       , #mult(#neg(@x), #0()) -> #0()
768.00/213.04	       , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.04	       , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.04	       , #mult(#pos(@x), #0()) -> #0()
768.00/213.04	       , #mult(#0(), #neg(@y)) -> #0()
768.00/213.04	       , #mult(#0(), #pos(@y)) -> #0()
768.00/213.04	       , #mult(#0(), #0()) -> #0()
768.00/213.04	       , attach#2(nil(), @x, @xs) -> nil()
768.00/213.04	       , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.04	         ::(::(@x, @l), attach(@xs, @ls))
768.00/213.04	       , #succ(#neg(#s(#0()))) -> #0()
768.00/213.04	       , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.04	       , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.04	       , #succ(#0()) -> #pos(#s(#0()))
768.00/213.04	       , makeBase#1(nil()) -> nil()
768.00/213.04	       , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.04	       , matrixMult(@m1, @m2) ->
768.00/213.04	         matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.04	       , #abs(#neg(@x)) -> #pos(@x)
768.00/213.04	       , #abs(#pos(@x)) -> #pos(@x)
768.00/213.04	       , #abs(#0()) -> #0()
768.00/213.04	       , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.04	       , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.04	       , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.00/213.04	         tuple#2(::(@x, @ys), ::(@xs, @m'))
768.00/213.04	       , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.04	       , #pred(#pos(#s(#0()))) -> #0()
768.00/213.04	       , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.04	       , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.04	     StartTerms: basic terms
768.00/213.04	     Strategy: innermost
768.00/213.04	   
768.00/213.04	   Problem (S):
768.00/213.04	   ------------
768.00/213.04	     Strict DPs:
768.00/213.04	       { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.00/213.04	       , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.04	         c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.00/213.04	             matrixMult^#(@acc, @m))
768.00/213.04	       , attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.00/213.04	       , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.00/213.04	       , split^#(@m) -> c_5(split#1^#(@m))
768.00/213.04	       , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
768.00/213.04	       , transAcc^#(@m, @base) -> c_8(transAcc#1^#(@m, @base))
768.00/213.04	       , split#2^#(::(@x, @xs), @ls) -> c_10(split^#(@ls))
768.00/213.04	       , transpose^#(@m) -> c_11(transpose#1^#(@m, @m))
768.00/213.04	       , transpose#1^#(::(@xs, @xss), @m) ->
768.00/213.04	         c_12(transpose#2^#(split(@m)), split^#(@m))
768.00/213.04	       , transAcc#1^#(::(@l, @m'), @base) ->
768.00/213.04	         c_13(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.00/213.04	       , transpose#3^#(::(@y, @ys), @l) -> c_16(transpose^#(::(@y, @ys)))
768.00/213.04	       , attach#2^#(::(@l, @ls), @x, @xs) -> c_17(attach^#(@xs, @ls))
768.00/213.04	       , transpose#2^#(tuple#2(@l, @m')) -> c_18(transpose#3^#(@m', @l))
768.00/213.04	       , matrixMultOld^#(@m1, @m2) -> c_19(transpose^#(@m2)) }
768.00/213.04	     Weak DPs:
768.00/213.04	       { matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.04	         c_21(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.00/213.04	              matrixMult^#(@m1, @m2))
768.00/213.04	       , matrixMult^#(@m1, @m2) ->
768.00/213.04	         c_22(transAcc^#(@m2, makeBase(@m2)), makeBase^#(@m2))
768.00/213.04	       , transpose'^#(@m) ->
768.00/213.04	         c_7(transAcc^#(@m, makeBase(@m)), makeBase^#(@m))
768.00/213.04	       , makeBase^#(@m) -> c_9(makeBase#1^#(@m))
768.00/213.04	       , mkBase#1^#(::(@l, @m')) -> c_14(mkBase^#(@m'))
768.00/213.04	       , mkBase^#(@m) -> c_15(mkBase#1^#(@m))
768.00/213.04	       , makeBase#1^#(::(@l, @m')) -> c_20(mkBase^#(@l)) }
768.00/213.04	     Weak Trs:
768.00/213.04	       { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.04	       , split(@m) -> split#1(@m)
768.00/213.04	       , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.04	       , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.04	       , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.04	       , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.04	       , #add(#0(), @y) -> @y
768.00/213.04	       , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.04	       , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.04	       , split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.04	       , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.00/213.04	       , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.04	       , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.04	       , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.04	       , +(@x, @y) -> #add(@x, @y)
768.00/213.04	       , transAcc#1(nil(), @base) -> @base
768.00/213.04	       , transAcc#1(::(@l, @m'), @base) ->
768.00/213.04	         attach(@l, transAcc(@m', @base))
768.00/213.04	       , *(@x, @y) -> #mult(@x, @y)
768.00/213.04	       , mkBase#1(nil()) -> nil()
768.00/213.04	       , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.04	       , attach#1(nil(), @m) -> nil()
768.00/213.04	       , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.04	       , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.04	       , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.04	         ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.04	       , #natmult(#0(), @y) -> #0()
768.00/213.04	       , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.04	       , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.04	       , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.00/213.04	       , mkBase(@m) -> mkBase#1(@m)
768.00/213.04	       , makeBase(@m) -> makeBase#1(@m)
768.00/213.04	       , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.04	       , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.04	       , lineMult#1(nil(), @l) -> nil()
768.00/213.04	       , lineMult#1(::(@x, @xs), @l) ->
768.00/213.04	         ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.04	       , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.04	       , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.04	       , #mult(#neg(@x), #0()) -> #0()
768.00/213.04	       , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.04	       , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.04	       , #mult(#pos(@x), #0()) -> #0()
768.00/213.04	       , #mult(#0(), #neg(@y)) -> #0()
768.00/213.04	       , #mult(#0(), #pos(@y)) -> #0()
768.00/213.04	       , #mult(#0(), #0()) -> #0()
768.00/213.04	       , attach#2(nil(), @x, @xs) -> nil()
768.00/213.04	       , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.04	         ::(::(@x, @l), attach(@xs, @ls))
768.00/213.04	       , #succ(#neg(#s(#0()))) -> #0()
768.00/213.04	       , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.04	       , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.04	       , #succ(#0()) -> #pos(#s(#0()))
768.00/213.04	       , makeBase#1(nil()) -> nil()
768.00/213.04	       , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.04	       , matrixMult(@m1, @m2) ->
768.00/213.04	         matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.04	       , #abs(#neg(@x)) -> #pos(@x)
768.00/213.04	       , #abs(#pos(@x)) -> #pos(@x)
768.00/213.04	       , #abs(#0()) -> #0()
768.00/213.04	       , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.04	       , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.04	       , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.00/213.04	         tuple#2(::(@x, @ys), ::(@xs, @m'))
768.00/213.04	       , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.04	       , #pred(#pos(#s(#0()))) -> #0()
768.00/213.04	       , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.04	       , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.04	     StartTerms: basic terms
768.00/213.04	     Strategy: innermost
768.00/213.04	   
768.00/213.04	   Overall, the transformation results in the following sub-problem(s):
768.00/213.04	   
768.00/213.04	   Generated new problems:
768.00/213.04	   -----------------------
768.00/213.04	   R) Strict DPs:
768.00/213.04	        { transpose'^#(@m) ->
768.00/213.04	          c_7(transAcc^#(@m, makeBase(@m)), makeBase^#(@m))
768.00/213.04	        , makeBase^#(@m) -> c_9(makeBase#1^#(@m))
768.00/213.04	        , mkBase#1^#(::(@l, @m')) -> c_14(mkBase^#(@m'))
768.00/213.04	        , mkBase^#(@m) -> c_15(mkBase#1^#(@m))
768.00/213.04	        , makeBase#1^#(::(@l, @m')) -> c_20(mkBase^#(@l)) }
768.00/213.04	      Weak DPs:
768.00/213.04	        { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.00/213.04	        , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.04	          c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.00/213.04	              matrixMult^#(@acc, @m))
768.00/213.04	        , attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.00/213.04	        , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.00/213.04	        , split^#(@m) -> c_5(split#1^#(@m))
768.00/213.04	        , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
768.00/213.04	        , matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.04	          c_21(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.00/213.04	               matrixMult^#(@m1, @m2))
768.00/213.04	        , matrixMult^#(@m1, @m2) ->
768.00/213.04	          c_22(transAcc^#(@m2, makeBase(@m2)), makeBase^#(@m2))
768.00/213.04	        , transAcc^#(@m, @base) -> c_8(transAcc#1^#(@m, @base))
768.00/213.04	        , split#2^#(::(@x, @xs), @ls) -> c_10(split^#(@ls))
768.00/213.04	        , transpose^#(@m) -> c_11(transpose#1^#(@m, @m))
768.00/213.04	        , transpose#1^#(::(@xs, @xss), @m) ->
768.00/213.04	          c_12(transpose#2^#(split(@m)), split^#(@m))
768.00/213.04	        , transAcc#1^#(::(@l, @m'), @base) ->
768.00/213.04	          c_13(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.00/213.04	        , transpose#3^#(::(@y, @ys), @l) -> c_16(transpose^#(::(@y, @ys)))
768.00/213.04	        , attach#2^#(::(@l, @ls), @x, @xs) -> c_17(attach^#(@xs, @ls))
768.00/213.04	        , transpose#2^#(tuple#2(@l, @m')) -> c_18(transpose#3^#(@m', @l))
768.00/213.04	        , matrixMultOld^#(@m1, @m2) -> c_19(transpose^#(@m2)) }
768.00/213.04	      Weak Trs:
768.00/213.04	        { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.04	        , split(@m) -> split#1(@m)
768.00/213.04	        , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.04	        , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.04	        , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.04	        , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.04	        , #add(#0(), @y) -> @y
768.00/213.04	        , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.04	        , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.04	        , split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.05	        , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.00/213.05	        , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.05	        , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.05	        , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.05	        , +(@x, @y) -> #add(@x, @y)
768.00/213.05	        , transAcc#1(nil(), @base) -> @base
768.00/213.05	        , transAcc#1(::(@l, @m'), @base) ->
768.00/213.05	          attach(@l, transAcc(@m', @base))
768.00/213.05	        , *(@x, @y) -> #mult(@x, @y)
768.00/213.05	        , mkBase#1(nil()) -> nil()
768.00/213.05	        , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.05	        , attach#1(nil(), @m) -> nil()
768.00/213.05	        , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.05	        , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.05	        , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.05	          ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.05	        , #natmult(#0(), @y) -> #0()
768.00/213.05	        , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.05	        , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.05	        , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.00/213.05	        , mkBase(@m) -> mkBase#1(@m)
768.00/213.05	        , makeBase(@m) -> makeBase#1(@m)
768.00/213.05	        , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.05	        , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.05	        , lineMult#1(nil(), @l) -> nil()
768.00/213.05	        , lineMult#1(::(@x, @xs), @l) ->
768.00/213.05	          ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.05	        , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.05	        , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.05	        , #mult(#neg(@x), #0()) -> #0()
768.00/213.05	        , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.05	        , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.05	        , #mult(#pos(@x), #0()) -> #0()
768.00/213.05	        , #mult(#0(), #neg(@y)) -> #0()
768.00/213.05	        , #mult(#0(), #pos(@y)) -> #0()
768.00/213.05	        , #mult(#0(), #0()) -> #0()
768.00/213.05	        , attach#2(nil(), @x, @xs) -> nil()
768.00/213.05	        , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.05	          ::(::(@x, @l), attach(@xs, @ls))
768.00/213.05	        , #succ(#neg(#s(#0()))) -> #0()
768.00/213.05	        , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.05	        , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.05	        , #succ(#0()) -> #pos(#s(#0()))
768.00/213.05	        , makeBase#1(nil()) -> nil()
768.00/213.05	        , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.05	        , matrixMult(@m1, @m2) ->
768.00/213.05	          matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.05	        , #abs(#neg(@x)) -> #pos(@x)
768.00/213.05	        , #abs(#pos(@x)) -> #pos(@x)
768.00/213.05	        , #abs(#0()) -> #0()
768.00/213.05	        , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.05	        , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.05	        , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.00/213.05	          tuple#2(::(@x, @ys), ::(@xs, @m'))
768.00/213.05	        , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.05	        , #pred(#pos(#s(#0()))) -> #0()
768.00/213.05	        , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.05	        , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.05	      StartTerms: basic terms
768.00/213.05	      Strategy: innermost
768.00/213.05	      
768.00/213.05	      This problem was proven YES(O(1),O(n^1)).
768.00/213.05	   
768.00/213.05	   S) Strict DPs:
768.00/213.05	        { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.00/213.05	        , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.05	          c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.00/213.05	              matrixMult^#(@acc, @m))
768.00/213.05	        , attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.00/213.05	        , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.00/213.05	        , split^#(@m) -> c_5(split#1^#(@m))
768.00/213.05	        , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
768.00/213.05	        , transAcc^#(@m, @base) -> c_8(transAcc#1^#(@m, @base))
768.00/213.05	        , split#2^#(::(@x, @xs), @ls) -> c_10(split^#(@ls))
768.00/213.05	        , transpose^#(@m) -> c_11(transpose#1^#(@m, @m))
768.00/213.05	        , transpose#1^#(::(@xs, @xss), @m) ->
768.00/213.05	          c_12(transpose#2^#(split(@m)), split^#(@m))
768.00/213.05	        , transAcc#1^#(::(@l, @m'), @base) ->
768.00/213.05	          c_13(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.00/213.05	        , transpose#3^#(::(@y, @ys), @l) -> c_16(transpose^#(::(@y, @ys)))
768.00/213.05	        , attach#2^#(::(@l, @ls), @x, @xs) -> c_17(attach^#(@xs, @ls))
768.00/213.05	        , transpose#2^#(tuple#2(@l, @m')) -> c_18(transpose#3^#(@m', @l))
768.00/213.05	        , matrixMultOld^#(@m1, @m2) -> c_19(transpose^#(@m2)) }
768.00/213.05	      Weak DPs:
768.00/213.05	        { matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.05	          c_21(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.00/213.05	               matrixMult^#(@m1, @m2))
768.00/213.05	        , matrixMult^#(@m1, @m2) ->
768.00/213.05	          c_22(transAcc^#(@m2, makeBase(@m2)), makeBase^#(@m2))
768.00/213.05	        , transpose'^#(@m) ->
768.00/213.05	          c_7(transAcc^#(@m, makeBase(@m)), makeBase^#(@m))
768.00/213.05	        , makeBase^#(@m) -> c_9(makeBase#1^#(@m))
768.00/213.05	        , mkBase#1^#(::(@l, @m')) -> c_14(mkBase^#(@m'))
768.00/213.05	        , mkBase^#(@m) -> c_15(mkBase#1^#(@m))
768.00/213.05	        , makeBase#1^#(::(@l, @m')) -> c_20(mkBase^#(@l)) }
768.00/213.05	      Weak Trs:
768.00/213.05	        { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.05	        , split(@m) -> split#1(@m)
768.00/213.05	        , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.05	        , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.05	        , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.05	        , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.05	        , #add(#0(), @y) -> @y
768.00/213.05	        , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.05	        , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.05	        , split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.05	        , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.00/213.05	        , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.05	        , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.05	        , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.05	        , +(@x, @y) -> #add(@x, @y)
768.00/213.05	        , transAcc#1(nil(), @base) -> @base
768.00/213.05	        , transAcc#1(::(@l, @m'), @base) ->
768.00/213.05	          attach(@l, transAcc(@m', @base))
768.00/213.05	        , *(@x, @y) -> #mult(@x, @y)
768.00/213.05	        , mkBase#1(nil()) -> nil()
768.00/213.05	        , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.05	        , attach#1(nil(), @m) -> nil()
768.00/213.05	        , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.05	        , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.05	        , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.05	          ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.05	        , #natmult(#0(), @y) -> #0()
768.00/213.05	        , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.05	        , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.05	        , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.00/213.05	        , mkBase(@m) -> mkBase#1(@m)
768.00/213.05	        , makeBase(@m) -> makeBase#1(@m)
768.00/213.05	        , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.05	        , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.05	        , lineMult#1(nil(), @l) -> nil()
768.00/213.05	        , lineMult#1(::(@x, @xs), @l) ->
768.00/213.05	          ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.05	        , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.05	        , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.05	        , #mult(#neg(@x), #0()) -> #0()
768.00/213.05	        , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.05	        , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.05	        , #mult(#pos(@x), #0()) -> #0()
768.00/213.05	        , #mult(#0(), #neg(@y)) -> #0()
768.00/213.05	        , #mult(#0(), #pos(@y)) -> #0()
768.00/213.05	        , #mult(#0(), #0()) -> #0()
768.00/213.05	        , attach#2(nil(), @x, @xs) -> nil()
768.00/213.05	        , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.05	          ::(::(@x, @l), attach(@xs, @ls))
768.00/213.05	        , #succ(#neg(#s(#0()))) -> #0()
768.00/213.05	        , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.05	        , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.05	        , #succ(#0()) -> #pos(#s(#0()))
768.00/213.05	        , makeBase#1(nil()) -> nil()
768.00/213.05	        , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.05	        , matrixMult(@m1, @m2) ->
768.00/213.05	          matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.05	        , #abs(#neg(@x)) -> #pos(@x)
768.00/213.05	        , #abs(#pos(@x)) -> #pos(@x)
768.00/213.05	        , #abs(#0()) -> #0()
768.00/213.05	        , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.05	        , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.05	        , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.00/213.05	          tuple#2(::(@x, @ys), ::(@xs, @m'))
768.00/213.05	        , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.05	        , #pred(#pos(#s(#0()))) -> #0()
768.00/213.05	        , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.05	        , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.05	      StartTerms: basic terms
768.00/213.05	      Strategy: innermost
768.00/213.05	      
768.00/213.05	      This problem was proven YES(O(1),O(n^1)).
768.00/213.05	   
768.00/213.05	   
768.00/213.05	   Proofs for generated problems:
768.00/213.05	   ------------------------------
768.00/213.05	   R) We are left with following problem, upon which TcT provides the
768.00/213.05	      certificate YES(O(1),O(n^1)).
768.00/213.05	      
768.00/213.05	      Strict DPs:
768.00/213.05	        { transpose'^#(@m) ->
768.00/213.05	          c_7(transAcc^#(@m, makeBase(@m)), makeBase^#(@m))
768.00/213.05	        , makeBase^#(@m) -> c_9(makeBase#1^#(@m))
768.00/213.05	        , mkBase#1^#(::(@l, @m')) -> c_14(mkBase^#(@m'))
768.00/213.05	        , mkBase^#(@m) -> c_15(mkBase#1^#(@m))
768.00/213.05	        , makeBase#1^#(::(@l, @m')) -> c_20(mkBase^#(@l)) }
768.00/213.05	      Weak DPs:
768.00/213.05	        { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.00/213.05	        , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.05	          c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.00/213.05	              matrixMult^#(@acc, @m))
768.00/213.05	        , attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.00/213.05	        , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.00/213.05	        , split^#(@m) -> c_5(split#1^#(@m))
768.00/213.05	        , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
768.00/213.05	        , matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.05	          c_21(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.00/213.05	               matrixMult^#(@m1, @m2))
768.00/213.05	        , matrixMult^#(@m1, @m2) ->
768.00/213.05	          c_22(transAcc^#(@m2, makeBase(@m2)), makeBase^#(@m2))
768.00/213.05	        , transAcc^#(@m, @base) -> c_8(transAcc#1^#(@m, @base))
768.00/213.05	        , split#2^#(::(@x, @xs), @ls) -> c_10(split^#(@ls))
768.00/213.05	        , transpose^#(@m) -> c_11(transpose#1^#(@m, @m))
768.00/213.05	        , transpose#1^#(::(@xs, @xss), @m) ->
768.00/213.05	          c_12(transpose#2^#(split(@m)), split^#(@m))
768.00/213.05	        , transAcc#1^#(::(@l, @m'), @base) ->
768.00/213.05	          c_13(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.00/213.05	        , transpose#3^#(::(@y, @ys), @l) -> c_16(transpose^#(::(@y, @ys)))
768.00/213.05	        , attach#2^#(::(@l, @ls), @x, @xs) -> c_17(attach^#(@xs, @ls))
768.00/213.05	        , transpose#2^#(tuple#2(@l, @m')) -> c_18(transpose#3^#(@m', @l))
768.00/213.05	        , matrixMultOld^#(@m1, @m2) -> c_19(transpose^#(@m2)) }
768.00/213.05	      Weak Trs:
768.00/213.05	        { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.05	        , split(@m) -> split#1(@m)
768.00/213.05	        , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.05	        , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.05	        , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.05	        , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.05	        , #add(#0(), @y) -> @y
768.00/213.05	        , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.05	        , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.05	        , split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.05	        , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.00/213.05	        , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.05	        , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.05	        , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.05	        , +(@x, @y) -> #add(@x, @y)
768.00/213.05	        , transAcc#1(nil(), @base) -> @base
768.00/213.05	        , transAcc#1(::(@l, @m'), @base) ->
768.00/213.05	          attach(@l, transAcc(@m', @base))
768.00/213.05	        , *(@x, @y) -> #mult(@x, @y)
768.00/213.05	        , mkBase#1(nil()) -> nil()
768.00/213.05	        , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.05	        , attach#1(nil(), @m) -> nil()
768.00/213.05	        , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.05	        , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.05	        , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.05	          ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.05	        , #natmult(#0(), @y) -> #0()
768.00/213.05	        , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.05	        , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.05	        , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.00/213.05	        , mkBase(@m) -> mkBase#1(@m)
768.00/213.05	        , makeBase(@m) -> makeBase#1(@m)
768.00/213.05	        , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.05	        , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.05	        , lineMult#1(nil(), @l) -> nil()
768.00/213.05	        , lineMult#1(::(@x, @xs), @l) ->
768.00/213.05	          ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.05	        , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.05	        , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.05	        , #mult(#neg(@x), #0()) -> #0()
768.00/213.05	        , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.05	        , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.05	        , #mult(#pos(@x), #0()) -> #0()
768.00/213.05	        , #mult(#0(), #neg(@y)) -> #0()
768.00/213.05	        , #mult(#0(), #pos(@y)) -> #0()
768.00/213.05	        , #mult(#0(), #0()) -> #0()
768.00/213.05	        , attach#2(nil(), @x, @xs) -> nil()
768.00/213.05	        , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.05	          ::(::(@x, @l), attach(@xs, @ls))
768.00/213.05	        , #succ(#neg(#s(#0()))) -> #0()
768.00/213.05	        , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.05	        , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.05	        , #succ(#0()) -> #pos(#s(#0()))
768.00/213.05	        , makeBase#1(nil()) -> nil()
768.00/213.05	        , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.05	        , matrixMult(@m1, @m2) ->
768.00/213.05	          matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.05	        , #abs(#neg(@x)) -> #pos(@x)
768.00/213.05	        , #abs(#pos(@x)) -> #pos(@x)
768.00/213.05	        , #abs(#0()) -> #0()
768.00/213.05	        , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.05	        , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.05	        , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.00/213.05	          tuple#2(::(@x, @ys), ::(@xs, @m'))
768.00/213.05	        , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.05	        , #pred(#pos(#s(#0()))) -> #0()
768.00/213.05	        , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.05	        , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.05	      Obligation:
768.00/213.05	        innermost runtime complexity
768.00/213.05	      Answer:
768.00/213.05	        YES(O(1),O(n^1))
768.00/213.05	      
768.00/213.05	      The following weak DPs constitute a sub-graph of the DG that is
768.00/213.05	      closed under successors. The DPs are removed.
768.00/213.05	      
768.00/213.05	      { attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.00/213.05	      , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.00/213.05	      , split^#(@m) -> c_5(split#1^#(@m))
768.00/213.05	      , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
768.00/213.05	      , transAcc^#(@m, @base) -> c_8(transAcc#1^#(@m, @base))
768.00/213.05	      , split#2^#(::(@x, @xs), @ls) -> c_10(split^#(@ls))
768.00/213.05	      , transpose^#(@m) -> c_11(transpose#1^#(@m, @m))
768.00/213.05	      , transpose#1^#(::(@xs, @xss), @m) ->
768.00/213.05	        c_12(transpose#2^#(split(@m)), split^#(@m))
768.00/213.05	      , transAcc#1^#(::(@l, @m'), @base) ->
768.00/213.05	        c_13(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.00/213.05	      , transpose#3^#(::(@y, @ys), @l) -> c_16(transpose^#(::(@y, @ys)))
768.00/213.05	      , attach#2^#(::(@l, @ls), @x, @xs) -> c_17(attach^#(@xs, @ls))
768.00/213.05	      , transpose#2^#(tuple#2(@l, @m')) -> c_18(transpose#3^#(@m', @l))
768.00/213.05	      , matrixMultOld^#(@m1, @m2) -> c_19(transpose^#(@m2)) }
768.00/213.05	      
768.00/213.05	      We are left with following problem, upon which TcT provides the
768.00/213.05	      certificate YES(O(1),O(n^1)).
768.00/213.05	      
768.00/213.05	      Strict DPs:
768.00/213.05	        { transpose'^#(@m) ->
768.00/213.05	          c_7(transAcc^#(@m, makeBase(@m)), makeBase^#(@m))
768.00/213.05	        , makeBase^#(@m) -> c_9(makeBase#1^#(@m))
768.00/213.05	        , mkBase#1^#(::(@l, @m')) -> c_14(mkBase^#(@m'))
768.00/213.05	        , mkBase^#(@m) -> c_15(mkBase#1^#(@m))
768.00/213.05	        , makeBase#1^#(::(@l, @m')) -> c_20(mkBase^#(@l)) }
768.00/213.05	      Weak DPs:
768.00/213.05	        { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.00/213.05	        , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.05	          c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.00/213.05	              matrixMult^#(@acc, @m))
768.00/213.05	        , matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.05	          c_21(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.00/213.05	               matrixMult^#(@m1, @m2))
768.00/213.05	        , matrixMult^#(@m1, @m2) ->
768.00/213.05	          c_22(transAcc^#(@m2, makeBase(@m2)), makeBase^#(@m2)) }
768.00/213.05	      Weak Trs:
768.00/213.05	        { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.05	        , split(@m) -> split#1(@m)
768.00/213.05	        , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.05	        , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.05	        , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.05	        , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.05	        , #add(#0(), @y) -> @y
768.00/213.05	        , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.05	        , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.05	        , split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.05	        , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.00/213.05	        , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.05	        , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.05	        , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.05	        , +(@x, @y) -> #add(@x, @y)
768.00/213.05	        , transAcc#1(nil(), @base) -> @base
768.00/213.05	        , transAcc#1(::(@l, @m'), @base) ->
768.00/213.05	          attach(@l, transAcc(@m', @base))
768.00/213.05	        , *(@x, @y) -> #mult(@x, @y)
768.00/213.05	        , mkBase#1(nil()) -> nil()
768.00/213.05	        , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.05	        , attach#1(nil(), @m) -> nil()
768.00/213.05	        , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.05	        , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.05	        , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.05	          ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.05	        , #natmult(#0(), @y) -> #0()
768.00/213.05	        , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.05	        , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.05	        , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.00/213.05	        , mkBase(@m) -> mkBase#1(@m)
768.00/213.05	        , makeBase(@m) -> makeBase#1(@m)
768.00/213.05	        , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.05	        , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.05	        , lineMult#1(nil(), @l) -> nil()
768.00/213.05	        , lineMult#1(::(@x, @xs), @l) ->
768.00/213.05	          ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.05	        , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.05	        , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.05	        , #mult(#neg(@x), #0()) -> #0()
768.00/213.05	        , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.05	        , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.05	        , #mult(#pos(@x), #0()) -> #0()
768.00/213.05	        , #mult(#0(), #neg(@y)) -> #0()
768.00/213.05	        , #mult(#0(), #pos(@y)) -> #0()
768.00/213.05	        , #mult(#0(), #0()) -> #0()
768.00/213.05	        , attach#2(nil(), @x, @xs) -> nil()
768.00/213.05	        , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.05	          ::(::(@x, @l), attach(@xs, @ls))
768.00/213.05	        , #succ(#neg(#s(#0()))) -> #0()
768.00/213.05	        , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.05	        , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.05	        , #succ(#0()) -> #pos(#s(#0()))
768.00/213.05	        , makeBase#1(nil()) -> nil()
768.00/213.05	        , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.05	        , matrixMult(@m1, @m2) ->
768.00/213.05	          matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.05	        , #abs(#neg(@x)) -> #pos(@x)
768.00/213.05	        , #abs(#pos(@x)) -> #pos(@x)
768.00/213.05	        , #abs(#0()) -> #0()
768.00/213.05	        , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.05	        , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.05	        , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.00/213.05	          tuple#2(::(@x, @ys), ::(@xs, @m'))
768.00/213.05	        , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.05	        , #pred(#pos(#s(#0()))) -> #0()
768.00/213.05	        , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.05	        , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.05	      Obligation:
768.00/213.05	        innermost runtime complexity
768.00/213.05	      Answer:
768.00/213.05	        YES(O(1),O(n^1))
768.00/213.05	      
768.00/213.05	      Due to missing edges in the dependency-graph, the right-hand sides
768.00/213.05	      of following rules could be simplified:
768.00/213.05	      
768.00/213.05	        { matrixMult^#(@m1, @m2) ->
768.00/213.05	          c_22(transAcc^#(@m2, makeBase(@m2)), makeBase^#(@m2))
768.00/213.05	        , transpose'^#(@m) ->
768.00/213.05	          c_7(transAcc^#(@m, makeBase(@m)), makeBase^#(@m)) }
768.00/213.05	      
768.00/213.05	      We are left with following problem, upon which TcT provides the
768.00/213.05	      certificate YES(O(1),O(n^1)).
768.00/213.05	      
768.00/213.05	      Strict DPs:
768.00/213.05	        { transpose'^#(@m) -> c_1(makeBase^#(@m))
768.00/213.05	        , makeBase^#(@m) -> c_2(makeBase#1^#(@m))
768.00/213.05	        , mkBase#1^#(::(@l, @m')) -> c_3(mkBase^#(@m'))
768.00/213.05	        , mkBase^#(@m) -> c_4(mkBase#1^#(@m))
768.00/213.05	        , makeBase#1^#(::(@l, @m')) -> c_5(mkBase^#(@l)) }
768.00/213.05	      Weak DPs:
768.00/213.05	        { matrixMultList^#(@acc, @mm) -> c_6(matrixMultList#1^#(@mm, @acc))
768.00/213.05	        , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.05	          c_7(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.00/213.05	              matrixMult^#(@acc, @m))
768.00/213.05	        , matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.05	          c_8(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.00/213.05	              matrixMult^#(@m1, @m2))
768.00/213.05	        , matrixMult^#(@m1, @m2) -> c_9(makeBase^#(@m2)) }
768.00/213.05	      Weak Trs:
768.00/213.05	        { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.05	        , split(@m) -> split#1(@m)
768.00/213.05	        , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.05	        , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.05	        , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.05	        , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.05	        , #add(#0(), @y) -> @y
768.00/213.05	        , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.05	        , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.05	        , split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.05	        , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.00/213.05	        , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.05	        , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.05	        , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.05	        , +(@x, @y) -> #add(@x, @y)
768.00/213.05	        , transAcc#1(nil(), @base) -> @base
768.00/213.05	        , transAcc#1(::(@l, @m'), @base) ->
768.00/213.05	          attach(@l, transAcc(@m', @base))
768.00/213.05	        , *(@x, @y) -> #mult(@x, @y)
768.00/213.05	        , mkBase#1(nil()) -> nil()
768.00/213.05	        , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.05	        , attach#1(nil(), @m) -> nil()
768.00/213.05	        , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.05	        , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.05	        , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.05	          ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.05	        , #natmult(#0(), @y) -> #0()
768.00/213.05	        , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.05	        , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.05	        , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.00/213.05	        , mkBase(@m) -> mkBase#1(@m)
768.00/213.05	        , makeBase(@m) -> makeBase#1(@m)
768.00/213.05	        , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.05	        , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.05	        , lineMult#1(nil(), @l) -> nil()
768.00/213.05	        , lineMult#1(::(@x, @xs), @l) ->
768.00/213.05	          ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.05	        , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.05	        , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.05	        , #mult(#neg(@x), #0()) -> #0()
768.00/213.05	        , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.05	        , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.05	        , #mult(#pos(@x), #0()) -> #0()
768.00/213.05	        , #mult(#0(), #neg(@y)) -> #0()
768.00/213.05	        , #mult(#0(), #pos(@y)) -> #0()
768.00/213.05	        , #mult(#0(), #0()) -> #0()
768.00/213.05	        , attach#2(nil(), @x, @xs) -> nil()
768.00/213.05	        , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.05	          ::(::(@x, @l), attach(@xs, @ls))
768.00/213.05	        , #succ(#neg(#s(#0()))) -> #0()
768.00/213.05	        , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.05	        , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.05	        , #succ(#0()) -> #pos(#s(#0()))
768.00/213.05	        , makeBase#1(nil()) -> nil()
768.00/213.05	        , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.05	        , matrixMult(@m1, @m2) ->
768.00/213.05	          matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.05	        , #abs(#neg(@x)) -> #pos(@x)
768.00/213.05	        , #abs(#pos(@x)) -> #pos(@x)
768.00/213.05	        , #abs(#0()) -> #0()
768.00/213.05	        , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.05	        , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.05	        , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.00/213.05	          tuple#2(::(@x, @ys), ::(@xs, @m'))
768.00/213.05	        , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.05	        , #pred(#pos(#s(#0()))) -> #0()
768.00/213.05	        , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.05	        , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.05	      Obligation:
768.00/213.05	        innermost runtime complexity
768.00/213.05	      Answer:
768.00/213.05	        YES(O(1),O(n^1))
768.00/213.05	      
768.00/213.05	      We replace rewrite rules by usable rules:
768.00/213.05	      
768.00/213.05	        Weak Usable Rules:
768.00/213.05	          { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.05	          , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.05	          , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.05	          , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.05	          , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.05	          , #add(#0(), @y) -> @y
768.00/213.05	          , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.05	          , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.05	          , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.05	          , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.05	          , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.05	          , +(@x, @y) -> #add(@x, @y)
768.00/213.05	          , transAcc#1(nil(), @base) -> @base
768.00/213.05	          , transAcc#1(::(@l, @m'), @base) ->
768.00/213.05	            attach(@l, transAcc(@m', @base))
768.00/213.05	          , *(@x, @y) -> #mult(@x, @y)
768.00/213.05	          , mkBase#1(nil()) -> nil()
768.00/213.05	          , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.05	          , attach#1(nil(), @m) -> nil()
768.00/213.05	          , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.05	          , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.05	          , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.05	            ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.05	          , #natmult(#0(), @y) -> #0()
768.00/213.05	          , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.05	          , mkBase(@m) -> mkBase#1(@m)
768.00/213.05	          , makeBase(@m) -> makeBase#1(@m)
768.00/213.06	          , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.06	          , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.06	          , lineMult#1(nil(), @l) -> nil()
768.00/213.06	          , lineMult#1(::(@x, @xs), @l) ->
768.00/213.06	            ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.06	          , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.06	          , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.06	          , #mult(#neg(@x), #0()) -> #0()
768.00/213.06	          , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.06	          , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.06	          , #mult(#pos(@x), #0()) -> #0()
768.00/213.06	          , #mult(#0(), #neg(@y)) -> #0()
768.00/213.06	          , #mult(#0(), #pos(@y)) -> #0()
768.00/213.06	          , #mult(#0(), #0()) -> #0()
768.00/213.06	          , attach#2(nil(), @x, @xs) -> nil()
768.00/213.06	          , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.06	            ::(::(@x, @l), attach(@xs, @ls))
768.00/213.06	          , #succ(#neg(#s(#0()))) -> #0()
768.00/213.06	          , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.06	          , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.06	          , #succ(#0()) -> #pos(#s(#0()))
768.00/213.06	          , makeBase#1(nil()) -> nil()
768.00/213.06	          , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.06	          , matrixMult(@m1, @m2) ->
768.00/213.06	            matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.06	          , #abs(#neg(@x)) -> #pos(@x)
768.00/213.06	          , #abs(#pos(@x)) -> #pos(@x)
768.00/213.06	          , #abs(#0()) -> #0()
768.00/213.06	          , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.06	          , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.06	          , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.06	          , #pred(#pos(#s(#0()))) -> #0()
768.00/213.06	          , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.06	          , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.06	      
768.00/213.06	      We are left with following problem, upon which TcT provides the
768.00/213.06	      certificate YES(O(1),O(n^1)).
768.00/213.06	      
768.00/213.06	      Strict DPs:
768.00/213.06	        { transpose'^#(@m) -> c_1(makeBase^#(@m))
768.00/213.06	        , makeBase^#(@m) -> c_2(makeBase#1^#(@m))
768.00/213.06	        , mkBase#1^#(::(@l, @m')) -> c_3(mkBase^#(@m'))
768.00/213.06	        , mkBase^#(@m) -> c_4(mkBase#1^#(@m))
768.00/213.06	        , makeBase#1^#(::(@l, @m')) -> c_5(mkBase^#(@l)) }
768.00/213.06	      Weak DPs:
768.00/213.06	        { matrixMultList^#(@acc, @mm) -> c_6(matrixMultList#1^#(@mm, @acc))
768.00/213.06	        , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.06	          c_7(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.00/213.06	              matrixMult^#(@acc, @m))
768.00/213.06	        , matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.06	          c_8(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.00/213.06	              matrixMult^#(@m1, @m2))
768.00/213.06	        , matrixMult^#(@m1, @m2) -> c_9(makeBase^#(@m2)) }
768.00/213.06	      Weak Trs:
768.00/213.06	        { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.06	        , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.06	        , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.06	        , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.06	        , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.06	        , #add(#0(), @y) -> @y
768.00/213.06	        , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.06	        , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.06	        , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.06	        , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.06	        , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.06	        , +(@x, @y) -> #add(@x, @y)
768.00/213.06	        , transAcc#1(nil(), @base) -> @base
768.00/213.06	        , transAcc#1(::(@l, @m'), @base) ->
768.00/213.06	          attach(@l, transAcc(@m', @base))
768.00/213.06	        , *(@x, @y) -> #mult(@x, @y)
768.00/213.06	        , mkBase#1(nil()) -> nil()
768.00/213.06	        , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.06	        , attach#1(nil(), @m) -> nil()
768.00/213.06	        , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.06	        , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.06	        , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.06	          ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.06	        , #natmult(#0(), @y) -> #0()
768.00/213.06	        , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.06	        , mkBase(@m) -> mkBase#1(@m)
768.00/213.06	        , makeBase(@m) -> makeBase#1(@m)
768.00/213.06	        , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.06	        , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.06	        , lineMult#1(nil(), @l) -> nil()
768.00/213.06	        , lineMult#1(::(@x, @xs), @l) ->
768.00/213.06	          ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.06	        , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.06	        , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.06	        , #mult(#neg(@x), #0()) -> #0()
768.00/213.06	        , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.06	        , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.06	        , #mult(#pos(@x), #0()) -> #0()
768.00/213.06	        , #mult(#0(), #neg(@y)) -> #0()
768.00/213.06	        , #mult(#0(), #pos(@y)) -> #0()
768.00/213.06	        , #mult(#0(), #0()) -> #0()
768.00/213.06	        , attach#2(nil(), @x, @xs) -> nil()
768.00/213.06	        , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.06	          ::(::(@x, @l), attach(@xs, @ls))
768.00/213.06	        , #succ(#neg(#s(#0()))) -> #0()
768.00/213.06	        , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.06	        , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.06	        , #succ(#0()) -> #pos(#s(#0()))
768.00/213.06	        , makeBase#1(nil()) -> nil()
768.00/213.06	        , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.06	        , matrixMult(@m1, @m2) ->
768.00/213.06	          matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.06	        , #abs(#neg(@x)) -> #pos(@x)
768.00/213.06	        , #abs(#pos(@x)) -> #pos(@x)
768.00/213.06	        , #abs(#0()) -> #0()
768.00/213.06	        , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.06	        , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.06	        , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.06	        , #pred(#pos(#s(#0()))) -> #0()
768.00/213.06	        , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.06	        , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.06	      Obligation:
768.00/213.06	        innermost runtime complexity
768.00/213.06	      Answer:
768.00/213.06	        YES(O(1),O(n^1))
768.00/213.06	      
768.00/213.06	      We use the processor 'matrix interpretation of dimension 1' to
768.00/213.06	      orient following rules strictly.
768.00/213.06	      
768.00/213.06	      DPs:
768.00/213.06	        { 1: transpose'^#(@m) -> c_1(makeBase^#(@m))
768.00/213.06	        , 3: mkBase#1^#(::(@l, @m')) -> c_3(mkBase^#(@m'))
768.00/213.06	        , 5: makeBase#1^#(::(@l, @m')) -> c_5(mkBase^#(@l))
768.00/213.06	        , 7: matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.06	             c_7(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.00/213.06	                 matrixMult^#(@acc, @m)) }
768.00/213.06	      
768.00/213.06	      Sub-proof:
768.00/213.06	      ----------
768.00/213.06	        The following argument positions are usable:
768.00/213.06	          Uargs(c_1) = {1}, Uargs(c_2) = {1}, Uargs(c_3) = {1},
768.00/213.06	          Uargs(c_4) = {1}, Uargs(c_5) = {1}, Uargs(c_6) = {1},
768.00/213.06	          Uargs(c_7) = {1, 2}, Uargs(c_8) = {1, 2}, Uargs(c_9) = {1}
768.00/213.06	        
768.00/213.06	        TcT has computed the following constructor-based matrix
768.00/213.06	        interpretation satisfying not(EDA).
768.00/213.06	        
768.00/213.06	                      [attach](x1, x2) = [3] x1 + [2]                  
768.00/213.06	                                                                       
768.00/213.06	                        [#add](x1, x2) = [0]                           
768.00/213.06	                                                                       
768.00/213.06	                  [mult#2](x1, x2, x3) = [4] x2 + [7] x3 + [0]         
768.00/213.06	                                                                       
768.00/213.06	                                 [nil] = [0]                           
768.00/213.06	                                                                       
768.00/213.06	                 [matrixMult'](x1, x2) = [4] x1 + [0]                  
768.00/213.06	                                                                       
768.00/213.06	                    [transAcc](x1, x2) = [0]                           
768.00/213.06	                                                                       
768.00/213.06	                        [mult](x1, x2) = [0]                           
768.00/213.06	                                                                       
768.00/213.06	                           [+](x1, x2) = [0]                           
768.00/213.06	                                                                       
768.00/213.06	                  [transAcc#1](x1, x2) = [4] x2 + [0]                  
768.00/213.06	                                                                       
768.00/213.06	                            [#neg](x1) = [0]                           
768.00/213.06	                                                                       
768.00/213.06	                           [*](x1, x2) = [0]                           
768.00/213.06	                                                                       
768.00/213.06	                        [mkBase#1](x1) = [0]                           
768.00/213.06	                                                                       
768.00/213.06	                    [attach#1](x1, x2) = [4] x2 + [0]                  
768.00/213.06	                                                                       
768.00/213.06	               [matrixMult'#1](x1, x2) = [0]                           
768.00/213.06	                                                                       
768.00/213.06	                    [#natmult](x1, x2) = [0]                           
768.00/213.06	                                                                       
768.00/213.06	                            [#pos](x1) = [0]                           
768.00/213.06	                                                                       
768.00/213.06	                          [mkBase](x1) = [2] x1 + [0]                  
768.00/213.06	                                                                       
768.00/213.06	                        [makeBase](x1) = [0]                           
768.00/213.06	                                                                       
768.00/213.06	                      [mult#1](x1, x2) = [4] x2 + [0]                  
768.00/213.06	                                                                       
768.00/213.06	                          [::](x1, x2) = [1] x1 + [1] x2 + [1]         
768.00/213.06	                                                                       
768.00/213.06	                  [lineMult#1](x1, x2) = [4] x2 + [0]                  
768.00/213.06	                                                                       
768.00/213.06	                       [#mult](x1, x2) = [0]                           
768.00/213.06	                                                                       
768.00/213.06	                [attach#2](x1, x2, x3) = [7] x3 + [0]                  
768.00/213.06	                                                                       
768.00/213.06	                           [#succ](x1) = [0]                           
768.00/213.06	                                                                       
768.00/213.06	                                  [#0] = [0]                           
768.00/213.06	                                                                       
768.00/213.06	                      [makeBase#1](x1) = [0]                           
768.00/213.06	                                                                       
768.00/213.06	                  [matrixMult](x1, x2) = [0]                           
768.00/213.06	                                                                       
768.00/213.06	                            [#abs](x1) = [0]                           
768.00/213.06	                                                                       
768.00/213.06	                    [lineMult](x1, x2) = [0]                           
768.00/213.06	                                                                       
768.00/213.06	                           [#pred](x1) = [0]                           
768.00/213.06	                                                                       
768.00/213.06	                              [#s](x1) = [0]                           
768.00/213.06	                                                                       
768.00/213.06	            [matrixMultList^#](x1, x2) = [4] x2 + [0]                  
768.00/213.06	                                                                       
768.00/213.06	          [matrixMultList#1^#](x1, x2) = [4] x1 + [0]                  
768.00/213.06	                                                                       
768.00/213.06	           [matrixMult3^#](x1, x2, x3) = [7] x1 + [7] x2 + [7] x3 + [7]
768.00/213.06	                                                                       
768.00/213.06	                [matrixMult^#](x1, x2) = [4] x2 + [0]                  
768.00/213.06	                                                                       
768.00/213.06	                    [transpose'^#](x1) = [7] x1 + [7]                  
768.00/213.06	                                                                       
768.00/213.06	                      [makeBase^#](x1) = [4] x1 + [0]                  
768.00/213.06	                                                                       
768.00/213.06	                      [mkBase#1^#](x1) = [1] x1 + [0]                  
768.00/213.06	                                                                       
768.00/213.06	                        [mkBase^#](x1) = [1] x1 + [0]                  
768.00/213.06	                                                                       
768.00/213.06	                    [makeBase#1^#](x1) = [4] x1 + [0]                  
768.00/213.06	                                                                       
768.00/213.06	                             [c_1](x1) = [1] x1 + [3]                  
768.00/213.06	                                                                       
768.00/213.06	                             [c_2](x1) = [1] x1 + [0]                  
768.00/213.06	                                                                       
768.00/213.06	                             [c_3](x1) = [1] x1 + [0]                  
768.00/213.06	                                                                       
768.00/213.06	                             [c_4](x1) = [1] x1 + [0]                  
768.00/213.06	                                                                       
768.00/213.06	                             [c_5](x1) = [4] x1 + [1]                  
768.00/213.06	                                                                       
768.00/213.06	                             [c_6](x1) = [1] x1 + [0]                  
768.00/213.06	                                                                       
768.00/213.06	                         [c_7](x1, x2) = [1] x1 + [1] x2 + [3]         
768.00/213.06	                                                                       
768.00/213.06	                         [c_8](x1, x2) = [1] x1 + [1] x2 + [7]         
768.00/213.06	                                                                       
768.00/213.06	                             [c_9](x1) = [1] x1 + [0]                  
768.00/213.06	        
768.00/213.06	        The order satisfies the following ordering constraints:
768.00/213.06	        
768.00/213.06	                              [attach(@line, @m)] =  [3] @line + [2]                                  
768.00/213.06	                                                  ?  [4] @m + [0]                                     
768.00/213.06	                                                  =  [attach#1(@line, @m)]                            
768.00/213.06	                                                                                                      
768.00/213.06	                       [#add(#neg(#s(#0())), @y)] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#pred(@y)]                                      
768.00/213.06	                                                                                                      
768.00/213.06	                     [#add(#neg(#s(#s(@x))), @y)] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#pred(#add(#pos(#s(@x)), @y))]                  
768.00/213.06	                                                                                                      
768.00/213.06	                       [#add(#pos(#s(#0())), @y)] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#succ(@y)]                                      
768.00/213.06	                                                                                                      
768.00/213.06	                     [#add(#pos(#s(#s(@x))), @y)] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#succ(#add(#pos(#s(@x)), @y))]                  
768.00/213.06	                                                                                                      
768.00/213.06	                                 [#add(#0(), @y)] =  [0]                                              
768.00/213.06	                                                  ?  [1] @y + [0]                                     
768.00/213.06	                                                  =  [@y]                                             
768.00/213.06	                                                                                                      
768.00/213.06	                         [mult#2(nil(), @x, @xs)] =  [4] @x + [7] @xs + [0]                           
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#abs(#0())]                                     
768.00/213.06	                                                                                                      
768.00/213.06	                   [mult#2(::(@y, @ys), @x, @xs)] =  [4] @x + [7] @xs + [0]                           
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [+(*(@x, @y), mult(@xs, @ys))]                   
768.00/213.06	                                                                                                      
768.00/213.06	                          [matrixMult'(@m1, @m2)] =  [4] @m1 + [0]                                    
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [matrixMult'#1(@m1, @m2)]                        
768.00/213.06	                                                                                                      
768.00/213.06	                            [transAcc(@m, @base)] =  [0]                                              
768.00/213.06	                                                  ?  [4] @base + [0]                                  
768.00/213.06	                                                  =  [transAcc#1(@m, @base)]                          
768.00/213.06	                                                                                                      
768.00/213.06	                                 [mult(@l1, @l2)] =  [0]                                              
768.00/213.06	                                                  ?  [4] @l2 + [0]                                    
768.00/213.06	                                                  =  [mult#1(@l1, @l2)]                               
768.00/213.06	                                                                                                      
768.00/213.06	                                      [+(@x, @y)] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#add(@x, @y)]                                   
768.00/213.06	                                                                                                      
768.00/213.06	                       [transAcc#1(nil(), @base)] =  [4] @base + [0]                                  
768.00/213.06	                                                  >= [1] @base + [0]                                  
768.00/213.06	                                                  =  [@base]                                          
768.00/213.06	                                                                                                      
768.00/213.06	                 [transAcc#1(::(@l, @m'), @base)] =  [4] @base + [0]                                  
768.00/213.06	                                                  ?  [3] @l + [2]                                     
768.00/213.06	                                                  =  [attach(@l, transAcc(@m', @base))]               
768.00/213.06	                                                                                                      
768.00/213.06	                                      [*(@x, @y)] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#mult(@x, @y)]                                  
768.00/213.06	                                                                                                      
768.00/213.06	                                [mkBase#1(nil())] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [nil()]                                          
768.00/213.06	                                                                                                      
768.00/213.06	                          [mkBase#1(::(@l, @m'))] =  [0]                                              
768.00/213.06	                                                  ?  [2] @m' + [1]                                    
768.00/213.06	                                                  =  [::(nil(), mkBase(@m'))]                         
768.00/213.06	                                                                                                      
768.00/213.06	                            [attach#1(nil(), @m)] =  [4] @m + [0]                                     
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [nil()]                                          
768.00/213.06	                                                                                                      
768.00/213.06	                      [attach#1(::(@x, @xs), @m)] =  [4] @m + [0]                                     
768.00/213.06	                                                  ?  [7] @xs + [0]                                    
768.00/213.06	                                                  =  [attach#2(@m, @x, @xs)]                          
768.00/213.06	                                                                                                      
768.00/213.06	                      [matrixMult'#1(nil(), @m2)] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [nil()]                                          
768.00/213.06	                                                                                                      
768.00/213.06	                [matrixMult'#1(::(@l, @ls), @m2)] =  [0]                                              
768.00/213.06	                                                  ?  [4] @ls + [1]                                    
768.00/213.06	                                                  =  [::(lineMult(@l, @m2), matrixMult'(@ls, @m2))]   
768.00/213.06	                                                                                                      
768.00/213.06	                             [#natmult(#0(), @y)] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#0()]                                           
768.00/213.06	                                                                                                      
768.00/213.06	                           [#natmult(#s(@x), @y)] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#add(#pos(@y), #natmult(@x, @y))]               
768.00/213.06	                                                                                                      
768.00/213.06	                                     [mkBase(@m)] =  [2] @m + [0]                                     
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [mkBase#1(@m)]                                   
768.00/213.06	                                                                                                      
768.00/213.06	                                   [makeBase(@m)] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [makeBase#1(@m)]                                 
768.00/213.06	                                                                                                      
768.00/213.06	                             [mult#1(nil(), @l2)] =  [4] @l2 + [0]                                    
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#abs(#0())]                                     
768.00/213.06	                                                                                                      
768.00/213.06	                       [mult#1(::(@x, @xs), @l2)] =  [4] @l2 + [0]                                    
768.00/213.06	                                                  ?  [4] @x + [7] @xs + [0]                           
768.00/213.06	                                                  =  [mult#2(@l2, @x, @xs)]                           
768.00/213.06	                                                                                                      
768.00/213.06	                          [lineMult#1(nil(), @l)] =  [4] @l + [0]                                     
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [nil()]                                          
768.00/213.06	                                                                                                      
768.00/213.06	                    [lineMult#1(::(@x, @xs), @l)] =  [4] @l + [0]                                     
768.00/213.06	                                                  ?  [1]                                              
768.00/213.06	                                                  =  [::(mult(@l, @x), lineMult(@l, @xs))]            
768.00/213.06	                                                                                                      
768.00/213.06	                      [#mult(#neg(@x), #neg(@y))] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#pos(#natmult(@x, @y))]                         
768.00/213.06	                                                                                                      
768.00/213.06	                      [#mult(#neg(@x), #pos(@y))] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#neg(#natmult(@x, @y))]                         
768.00/213.06	                                                                                                      
768.00/213.06	                          [#mult(#neg(@x), #0())] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#0()]                                           
768.00/213.06	                                                                                                      
768.00/213.06	                      [#mult(#pos(@x), #neg(@y))] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#neg(#natmult(@x, @y))]                         
768.00/213.06	                                                                                                      
768.00/213.06	                      [#mult(#pos(@x), #pos(@y))] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#pos(#natmult(@x, @y))]                         
768.00/213.06	                                                                                                      
768.00/213.06	                          [#mult(#pos(@x), #0())] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#0()]                                           
768.00/213.06	                                                                                                      
768.00/213.06	                          [#mult(#0(), #neg(@y))] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#0()]                                           
768.00/213.06	                                                                                                      
768.00/213.06	                          [#mult(#0(), #pos(@y))] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#0()]                                           
768.00/213.06	                                                                                                      
768.00/213.06	                              [#mult(#0(), #0())] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#0()]                                           
768.00/213.06	                                                                                                      
768.00/213.06	                       [attach#2(nil(), @x, @xs)] =  [7] @xs + [0]                                    
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [nil()]                                          
768.00/213.06	                                                                                                      
768.00/213.06	                 [attach#2(::(@l, @ls), @x, @xs)] =  [7] @xs + [0]                                    
768.00/213.06	                                                  ?  [1] @x + [3] @xs + [1] @l + [4]                  
768.00/213.06	                                                  =  [::(::(@x, @l), attach(@xs, @ls))]               
768.00/213.06	                                                                                                      
768.00/213.06	                          [#succ(#neg(#s(#0())))] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#0()]                                           
768.00/213.06	                                                                                                      
768.00/213.06	                        [#succ(#neg(#s(#s(@x))))] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#neg(#s(@x))]                                   
768.00/213.06	                                                                                                      
768.00/213.06	                            [#succ(#pos(#s(@x)))] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#pos(#s(#s(@x)))]                               
768.00/213.06	                                                                                                      
768.00/213.06	                                    [#succ(#0())] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#pos(#s(#0()))]                                 
768.00/213.06	                                                                                                      
768.00/213.06	                              [makeBase#1(nil())] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [nil()]                                          
768.00/213.06	                                                                                                      
768.00/213.06	                        [makeBase#1(::(@l, @m'))] =  [0]                                              
768.00/213.06	                                                  ?  [2] @l + [0]                                     
768.00/213.06	                                                  =  [mkBase(@l)]                                     
768.00/213.06	                                                                                                      
768.00/213.06	                           [matrixMult(@m1, @m2)] =  [0]                                              
768.00/213.06	                                                  ?  [4] @m1 + [0]                                    
768.00/213.06	                                                  =  [matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))] 
768.00/213.06	                                                                                                      
768.00/213.06	                                 [#abs(#neg(@x))] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#pos(@x)]                                       
768.00/213.06	                                                                                                      
768.00/213.06	                                 [#abs(#pos(@x))] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#pos(@x)]                                       
768.00/213.06	                                                                                                      
768.00/213.06	                                     [#abs(#0())] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#0()]                                           
768.00/213.06	                                                                                                      
768.00/213.06	                                   [#abs(#s(@x))] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#pos(#s(@x))]                                   
768.00/213.06	                                                                                                      
768.00/213.06	                              [lineMult(@l, @m2)] =  [0]                                              
768.00/213.06	                                                  ?  [4] @l + [0]                                     
768.00/213.06	                                                  =  [lineMult#1(@m2, @l)]                            
768.00/213.06	                                                                                                      
768.00/213.06	                            [#pred(#neg(#s(@x)))] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#neg(#s(#s(@x)))]                               
768.00/213.06	                                                                                                      
768.00/213.06	                          [#pred(#pos(#s(#0())))] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#0()]                                           
768.00/213.06	                                                                                                      
768.00/213.06	                        [#pred(#pos(#s(#s(@x))))] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#pos(#s(@x))]                                   
768.00/213.06	                                                                                                      
768.00/213.06	                                    [#pred(#0())] =  [0]                                              
768.00/213.06	                                                  >= [0]                                              
768.00/213.06	                                                  =  [#neg(#s(#0()))]                                 
768.00/213.06	                                                                                                      
768.00/213.06	                    [matrixMultList^#(@acc, @mm)] =  [4] @mm + [0]                                    
768.00/213.06	                                                  >= [4] @mm + [0]                                    
768.00/213.06	                                                  =  [c_6(matrixMultList#1^#(@mm, @acc))]             
768.00/213.06	                                                                                                      
768.00/213.06	          [matrixMultList#1^#(::(@m, @ms), @acc)] =  [4] @m + [4] @ms + [4]                           
768.00/213.06	                                                  >  [4] @m + [4] @ms + [3]                           
768.00/213.06	                                                  =  [c_7(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.00/213.06	                                                          matrixMult^#(@acc, @m))]                    
768.00/213.06	                                                                                                      
768.00/213.06	                   [matrixMult3^#(@m1, @m2, @m3)] =  [7] @m2 + [7] @m1 + [7] @m3 + [7]                
768.00/213.06	                                                  >= [4] @m2 + [4] @m3 + [7]                          
768.00/213.06	                                                  =  [c_8(matrixMult^#(matrixMult(@m1, @m2), @m3),    
768.00/213.06	                                                          matrixMult^#(@m1, @m2))]                    
768.00/213.06	                                                                                                      
768.00/213.06	                         [matrixMult^#(@m1, @m2)] =  [4] @m2 + [0]                                    
768.00/213.06	                                                  >= [4] @m2 + [0]                                    
768.00/213.06	                                                  =  [c_9(makeBase^#(@m2))]                           
768.00/213.06	                                                                                                      
768.00/213.06	                               [transpose'^#(@m)] =  [7] @m + [7]                                     
768.00/213.06	                                                  >  [4] @m + [3]                                     
768.00/213.06	                                                  =  [c_1(makeBase^#(@m))]                            
768.00/213.06	                                                                                                      
768.00/213.06	                                 [makeBase^#(@m)] =  [4] @m + [0]                                     
768.00/213.06	                                                  >= [4] @m + [0]                                     
768.00/213.06	                                                  =  [c_2(makeBase#1^#(@m))]                          
768.00/213.06	                                                                                                      
768.00/213.06	                        [mkBase#1^#(::(@l, @m'))] =  [1] @l + [1] @m' + [1]                           
768.00/213.06	                                                  >  [1] @m' + [0]                                    
768.00/213.06	                                                  =  [c_3(mkBase^#(@m'))]                             
768.00/213.06	                                                                                                      
768.00/213.06	                                   [mkBase^#(@m)] =  [1] @m + [0]                                     
768.00/213.06	                                                  >= [1] @m + [0]                                     
768.00/213.06	                                                  =  [c_4(mkBase#1^#(@m))]                            
768.00/213.06	                                                                                                      
768.00/213.06	                      [makeBase#1^#(::(@l, @m'))] =  [4] @l + [4] @m' + [4]                           
768.00/213.06	                                                  >  [4] @l + [1]                                     
768.00/213.06	                                                  =  [c_5(mkBase^#(@l))]                              
768.00/213.06	                                                                                                      
768.00/213.06	      
768.00/213.06	      We return to the main proof. Consider the set of all dependency
768.00/213.06	      pairs
768.00/213.06	      
768.00/213.06	      :
768.00/213.06	        { 1: transpose'^#(@m) -> c_1(makeBase^#(@m))
768.00/213.06	        , 2: makeBase^#(@m) -> c_2(makeBase#1^#(@m))
768.00/213.06	        , 3: mkBase#1^#(::(@l, @m')) -> c_3(mkBase^#(@m'))
768.00/213.06	        , 4: mkBase^#(@m) -> c_4(mkBase#1^#(@m))
768.00/213.06	        , 5: makeBase#1^#(::(@l, @m')) -> c_5(mkBase^#(@l))
768.00/213.06	        , 6: matrixMultList^#(@acc, @mm) ->
768.00/213.06	             c_6(matrixMultList#1^#(@mm, @acc))
768.00/213.06	        , 7: matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.06	             c_7(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.00/213.06	                 matrixMult^#(@acc, @m))
768.00/213.06	        , 8: matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.06	             c_8(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.00/213.06	                 matrixMult^#(@m1, @m2))
768.00/213.06	        , 9: matrixMult^#(@m1, @m2) -> c_9(makeBase^#(@m2)) }
768.00/213.06	      
768.00/213.06	      Processor 'matrix interpretation of dimension 1' induces the
768.00/213.06	      complexity certificate YES(?,O(n^1)) on application of dependency
768.00/213.06	      pairs {1,3,5,7}. These cover all (indirect) predecessors of
768.00/213.06	      dependency pairs {1,2,3,4,5,6,7,8,9}, their number of application
768.00/213.06	      is equally bounded. The dependency pairs are shifted into the weak
768.00/213.06	      component.
768.00/213.06	      
768.00/213.06	      We are left with following problem, upon which TcT provides the
768.00/213.06	      certificate YES(O(1),O(1)).
768.00/213.06	      
768.00/213.06	      Weak DPs:
768.00/213.06	        { matrixMultList^#(@acc, @mm) -> c_6(matrixMultList#1^#(@mm, @acc))
768.00/213.06	        , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.06	          c_7(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.00/213.06	              matrixMult^#(@acc, @m))
768.00/213.06	        , matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.06	          c_8(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.00/213.06	              matrixMult^#(@m1, @m2))
768.00/213.06	        , matrixMult^#(@m1, @m2) -> c_9(makeBase^#(@m2))
768.00/213.06	        , transpose'^#(@m) -> c_1(makeBase^#(@m))
768.00/213.06	        , makeBase^#(@m) -> c_2(makeBase#1^#(@m))
768.00/213.06	        , mkBase#1^#(::(@l, @m')) -> c_3(mkBase^#(@m'))
768.00/213.06	        , mkBase^#(@m) -> c_4(mkBase#1^#(@m))
768.00/213.06	        , makeBase#1^#(::(@l, @m')) -> c_5(mkBase^#(@l)) }
768.00/213.06	      Weak Trs:
768.00/213.06	        { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.06	        , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.06	        , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.06	        , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.06	        , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.06	        , #add(#0(), @y) -> @y
768.00/213.06	        , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.06	        , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.06	        , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.06	        , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.06	        , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.06	        , +(@x, @y) -> #add(@x, @y)
768.00/213.06	        , transAcc#1(nil(), @base) -> @base
768.00/213.06	        , transAcc#1(::(@l, @m'), @base) ->
768.00/213.06	          attach(@l, transAcc(@m', @base))
768.00/213.06	        , *(@x, @y) -> #mult(@x, @y)
768.00/213.06	        , mkBase#1(nil()) -> nil()
768.00/213.06	        , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.06	        , attach#1(nil(), @m) -> nil()
768.00/213.06	        , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.06	        , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.06	        , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.06	          ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.06	        , #natmult(#0(), @y) -> #0()
768.00/213.06	        , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.06	        , mkBase(@m) -> mkBase#1(@m)
768.00/213.06	        , makeBase(@m) -> makeBase#1(@m)
768.00/213.06	        , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.06	        , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.06	        , lineMult#1(nil(), @l) -> nil()
768.00/213.06	        , lineMult#1(::(@x, @xs), @l) ->
768.00/213.06	          ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.06	        , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.06	        , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.06	        , #mult(#neg(@x), #0()) -> #0()
768.00/213.06	        , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.06	        , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.06	        , #mult(#pos(@x), #0()) -> #0()
768.00/213.06	        , #mult(#0(), #neg(@y)) -> #0()
768.00/213.06	        , #mult(#0(), #pos(@y)) -> #0()
768.00/213.06	        , #mult(#0(), #0()) -> #0()
768.00/213.06	        , attach#2(nil(), @x, @xs) -> nil()
768.00/213.06	        , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.06	          ::(::(@x, @l), attach(@xs, @ls))
768.00/213.06	        , #succ(#neg(#s(#0()))) -> #0()
768.00/213.06	        , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.06	        , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.06	        , #succ(#0()) -> #pos(#s(#0()))
768.00/213.06	        , makeBase#1(nil()) -> nil()
768.00/213.06	        , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.06	        , matrixMult(@m1, @m2) ->
768.00/213.06	          matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.06	        , #abs(#neg(@x)) -> #pos(@x)
768.00/213.06	        , #abs(#pos(@x)) -> #pos(@x)
768.00/213.06	        , #abs(#0()) -> #0()
768.00/213.06	        , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.06	        , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.06	        , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.06	        , #pred(#pos(#s(#0()))) -> #0()
768.00/213.06	        , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.06	        , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.06	      Obligation:
768.00/213.06	        innermost runtime complexity
768.00/213.06	      Answer:
768.00/213.06	        YES(O(1),O(1))
768.00/213.06	      
768.00/213.06	      The following weak DPs constitute a sub-graph of the DG that is
768.00/213.06	      closed under successors. The DPs are removed.
768.00/213.06	      
768.00/213.06	      { matrixMultList^#(@acc, @mm) -> c_6(matrixMultList#1^#(@mm, @acc))
768.00/213.06	      , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.06	        c_7(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.00/213.06	            matrixMult^#(@acc, @m))
768.00/213.06	      , matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.06	        c_8(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.00/213.06	            matrixMult^#(@m1, @m2))
768.00/213.06	      , matrixMult^#(@m1, @m2) -> c_9(makeBase^#(@m2))
768.00/213.06	      , transpose'^#(@m) -> c_1(makeBase^#(@m))
768.00/213.06	      , makeBase^#(@m) -> c_2(makeBase#1^#(@m))
768.00/213.06	      , mkBase#1^#(::(@l, @m')) -> c_3(mkBase^#(@m'))
768.00/213.06	      , mkBase^#(@m) -> c_4(mkBase#1^#(@m))
768.00/213.06	      , makeBase#1^#(::(@l, @m')) -> c_5(mkBase^#(@l)) }
768.00/213.06	      
768.00/213.06	      We are left with following problem, upon which TcT provides the
768.00/213.06	      certificate YES(O(1),O(1)).
768.00/213.06	      
768.00/213.06	      Weak Trs:
768.00/213.06	        { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.06	        , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.06	        , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.06	        , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.06	        , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.06	        , #add(#0(), @y) -> @y
768.00/213.06	        , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.06	        , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.06	        , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.06	        , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.06	        , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.06	        , +(@x, @y) -> #add(@x, @y)
768.00/213.06	        , transAcc#1(nil(), @base) -> @base
768.00/213.06	        , transAcc#1(::(@l, @m'), @base) ->
768.00/213.06	          attach(@l, transAcc(@m', @base))
768.00/213.06	        , *(@x, @y) -> #mult(@x, @y)
768.00/213.06	        , mkBase#1(nil()) -> nil()
768.00/213.06	        , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.06	        , attach#1(nil(), @m) -> nil()
768.00/213.06	        , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.06	        , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.06	        , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.06	          ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.06	        , #natmult(#0(), @y) -> #0()
768.00/213.06	        , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.06	        , mkBase(@m) -> mkBase#1(@m)
768.00/213.06	        , makeBase(@m) -> makeBase#1(@m)
768.00/213.06	        , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.06	        , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.06	        , lineMult#1(nil(), @l) -> nil()
768.00/213.06	        , lineMult#1(::(@x, @xs), @l) ->
768.00/213.06	          ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.06	        , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.06	        , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.06	        , #mult(#neg(@x), #0()) -> #0()
768.00/213.06	        , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.06	        , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.06	        , #mult(#pos(@x), #0()) -> #0()
768.00/213.06	        , #mult(#0(), #neg(@y)) -> #0()
768.00/213.06	        , #mult(#0(), #pos(@y)) -> #0()
768.00/213.06	        , #mult(#0(), #0()) -> #0()
768.00/213.06	        , attach#2(nil(), @x, @xs) -> nil()
768.00/213.06	        , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.06	          ::(::(@x, @l), attach(@xs, @ls))
768.00/213.06	        , #succ(#neg(#s(#0()))) -> #0()
768.00/213.06	        , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.06	        , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.06	        , #succ(#0()) -> #pos(#s(#0()))
768.00/213.06	        , makeBase#1(nil()) -> nil()
768.00/213.07	        , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.07	        , matrixMult(@m1, @m2) ->
768.00/213.07	          matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.07	        , #abs(#neg(@x)) -> #pos(@x)
768.00/213.07	        , #abs(#pos(@x)) -> #pos(@x)
768.00/213.07	        , #abs(#0()) -> #0()
768.00/213.07	        , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.07	        , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.07	        , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.07	        , #pred(#pos(#s(#0()))) -> #0()
768.00/213.07	        , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.07	        , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.07	      Obligation:
768.00/213.07	        innermost runtime complexity
768.00/213.07	      Answer:
768.00/213.07	        YES(O(1),O(1))
768.00/213.07	      
768.00/213.07	      No rule is usable, rules are removed from the input problem.
768.00/213.07	      
768.00/213.07	      We are left with following problem, upon which TcT provides the
768.00/213.07	      certificate YES(O(1),O(1)).
768.00/213.07	      
768.00/213.07	      Rules: Empty
768.00/213.07	      Obligation:
768.00/213.07	        innermost runtime complexity
768.00/213.07	      Answer:
768.00/213.07	        YES(O(1),O(1))
768.00/213.07	      
768.00/213.07	      Empty rules are trivially bounded
768.00/213.07	   
768.00/213.07	   S) We are left with following problem, upon which TcT provides the
768.00/213.07	      certificate YES(O(1),O(n^1)).
768.00/213.07	      
768.00/213.07	      Strict DPs:
768.00/213.07	        { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.00/213.07	        , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.07	          c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.00/213.07	              matrixMult^#(@acc, @m))
768.00/213.07	        , attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.00/213.07	        , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.00/213.07	        , split^#(@m) -> c_5(split#1^#(@m))
768.00/213.07	        , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
768.00/213.07	        , transAcc^#(@m, @base) -> c_8(transAcc#1^#(@m, @base))
768.00/213.07	        , split#2^#(::(@x, @xs), @ls) -> c_10(split^#(@ls))
768.00/213.07	        , transpose^#(@m) -> c_11(transpose#1^#(@m, @m))
768.00/213.07	        , transpose#1^#(::(@xs, @xss), @m) ->
768.00/213.07	          c_12(transpose#2^#(split(@m)), split^#(@m))
768.00/213.07	        , transAcc#1^#(::(@l, @m'), @base) ->
768.00/213.07	          c_13(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.00/213.07	        , transpose#3^#(::(@y, @ys), @l) -> c_16(transpose^#(::(@y, @ys)))
768.00/213.07	        , attach#2^#(::(@l, @ls), @x, @xs) -> c_17(attach^#(@xs, @ls))
768.00/213.07	        , transpose#2^#(tuple#2(@l, @m')) -> c_18(transpose#3^#(@m', @l))
768.00/213.07	        , matrixMultOld^#(@m1, @m2) -> c_19(transpose^#(@m2)) }
768.00/213.07	      Weak DPs:
768.00/213.07	        { matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.07	          c_21(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.00/213.07	               matrixMult^#(@m1, @m2))
768.00/213.07	        , matrixMult^#(@m1, @m2) ->
768.00/213.07	          c_22(transAcc^#(@m2, makeBase(@m2)), makeBase^#(@m2))
768.00/213.07	        , transpose'^#(@m) ->
768.00/213.07	          c_7(transAcc^#(@m, makeBase(@m)), makeBase^#(@m))
768.00/213.07	        , makeBase^#(@m) -> c_9(makeBase#1^#(@m))
768.00/213.07	        , mkBase#1^#(::(@l, @m')) -> c_14(mkBase^#(@m'))
768.00/213.07	        , mkBase^#(@m) -> c_15(mkBase#1^#(@m))
768.00/213.07	        , makeBase#1^#(::(@l, @m')) -> c_20(mkBase^#(@l)) }
768.00/213.07	      Weak Trs:
768.00/213.07	        { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.07	        , split(@m) -> split#1(@m)
768.00/213.07	        , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.07	        , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.07	        , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.07	        , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.07	        , #add(#0(), @y) -> @y
768.00/213.07	        , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.07	        , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.07	        , split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.07	        , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.00/213.07	        , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.07	        , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.07	        , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.07	        , +(@x, @y) -> #add(@x, @y)
768.00/213.07	        , transAcc#1(nil(), @base) -> @base
768.00/213.07	        , transAcc#1(::(@l, @m'), @base) ->
768.00/213.07	          attach(@l, transAcc(@m', @base))
768.00/213.07	        , *(@x, @y) -> #mult(@x, @y)
768.00/213.07	        , mkBase#1(nil()) -> nil()
768.00/213.07	        , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.07	        , attach#1(nil(), @m) -> nil()
768.00/213.07	        , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.07	        , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.07	        , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.07	          ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.07	        , #natmult(#0(), @y) -> #0()
768.00/213.07	        , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.07	        , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.07	        , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.00/213.07	        , mkBase(@m) -> mkBase#1(@m)
768.00/213.07	        , makeBase(@m) -> makeBase#1(@m)
768.00/213.07	        , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.07	        , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.07	        , lineMult#1(nil(), @l) -> nil()
768.00/213.07	        , lineMult#1(::(@x, @xs), @l) ->
768.00/213.07	          ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.07	        , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.07	        , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.07	        , #mult(#neg(@x), #0()) -> #0()
768.00/213.07	        , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.07	        , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.07	        , #mult(#pos(@x), #0()) -> #0()
768.00/213.07	        , #mult(#0(), #neg(@y)) -> #0()
768.00/213.07	        , #mult(#0(), #pos(@y)) -> #0()
768.00/213.07	        , #mult(#0(), #0()) -> #0()
768.00/213.07	        , attach#2(nil(), @x, @xs) -> nil()
768.00/213.07	        , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.07	          ::(::(@x, @l), attach(@xs, @ls))
768.00/213.07	        , #succ(#neg(#s(#0()))) -> #0()
768.00/213.07	        , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.07	        , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.07	        , #succ(#0()) -> #pos(#s(#0()))
768.00/213.07	        , makeBase#1(nil()) -> nil()
768.00/213.07	        , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.07	        , matrixMult(@m1, @m2) ->
768.00/213.07	          matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.07	        , #abs(#neg(@x)) -> #pos(@x)
768.00/213.07	        , #abs(#pos(@x)) -> #pos(@x)
768.00/213.07	        , #abs(#0()) -> #0()
768.00/213.07	        , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.07	        , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.07	        , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.00/213.07	          tuple#2(::(@x, @ys), ::(@xs, @m'))
768.00/213.07	        , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.07	        , #pred(#pos(#s(#0()))) -> #0()
768.00/213.07	        , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.07	        , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.07	      Obligation:
768.00/213.07	        innermost runtime complexity
768.00/213.07	      Answer:
768.00/213.07	        YES(O(1),O(n^1))
768.00/213.07	      
768.00/213.07	      The following weak DPs constitute a sub-graph of the DG that is
768.00/213.07	      closed under successors. The DPs are removed.
768.00/213.07	      
768.00/213.07	      { makeBase^#(@m) -> c_9(makeBase#1^#(@m))
768.00/213.07	      , mkBase#1^#(::(@l, @m')) -> c_14(mkBase^#(@m'))
768.00/213.07	      , mkBase^#(@m) -> c_15(mkBase#1^#(@m))
768.00/213.07	      , makeBase#1^#(::(@l, @m')) -> c_20(mkBase^#(@l)) }
768.00/213.07	      
768.00/213.07	      We are left with following problem, upon which TcT provides the
768.00/213.07	      certificate YES(O(1),O(n^1)).
768.00/213.07	      
768.00/213.07	      Strict DPs:
768.00/213.07	        { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.00/213.07	        , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.07	          c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.00/213.07	              matrixMult^#(@acc, @m))
768.00/213.07	        , attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.00/213.07	        , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.00/213.07	        , split^#(@m) -> c_5(split#1^#(@m))
768.00/213.07	        , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
768.00/213.07	        , transAcc^#(@m, @base) -> c_8(transAcc#1^#(@m, @base))
768.00/213.07	        , split#2^#(::(@x, @xs), @ls) -> c_10(split^#(@ls))
768.00/213.07	        , transpose^#(@m) -> c_11(transpose#1^#(@m, @m))
768.00/213.07	        , transpose#1^#(::(@xs, @xss), @m) ->
768.00/213.07	          c_12(transpose#2^#(split(@m)), split^#(@m))
768.00/213.07	        , transAcc#1^#(::(@l, @m'), @base) ->
768.00/213.07	          c_13(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.00/213.07	        , transpose#3^#(::(@y, @ys), @l) -> c_16(transpose^#(::(@y, @ys)))
768.00/213.07	        , attach#2^#(::(@l, @ls), @x, @xs) -> c_17(attach^#(@xs, @ls))
768.00/213.07	        , transpose#2^#(tuple#2(@l, @m')) -> c_18(transpose#3^#(@m', @l))
768.00/213.07	        , matrixMultOld^#(@m1, @m2) -> c_19(transpose^#(@m2)) }
768.00/213.07	      Weak DPs:
768.00/213.07	        { matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.07	          c_21(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.00/213.07	               matrixMult^#(@m1, @m2))
768.00/213.07	        , matrixMult^#(@m1, @m2) ->
768.00/213.07	          c_22(transAcc^#(@m2, makeBase(@m2)), makeBase^#(@m2))
768.00/213.07	        , transpose'^#(@m) ->
768.00/213.07	          c_7(transAcc^#(@m, makeBase(@m)), makeBase^#(@m)) }
768.00/213.07	      Weak Trs:
768.00/213.07	        { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.07	        , split(@m) -> split#1(@m)
768.00/213.07	        , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.07	        , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.07	        , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.07	        , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.07	        , #add(#0(), @y) -> @y
768.00/213.07	        , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.07	        , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.07	        , split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.07	        , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.00/213.07	        , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.07	        , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.07	        , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.07	        , +(@x, @y) -> #add(@x, @y)
768.00/213.07	        , transAcc#1(nil(), @base) -> @base
768.00/213.07	        , transAcc#1(::(@l, @m'), @base) ->
768.00/213.07	          attach(@l, transAcc(@m', @base))
768.00/213.07	        , *(@x, @y) -> #mult(@x, @y)
768.00/213.07	        , mkBase#1(nil()) -> nil()
768.00/213.07	        , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.07	        , attach#1(nil(), @m) -> nil()
768.00/213.07	        , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.07	        , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.07	        , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.07	          ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.07	        , #natmult(#0(), @y) -> #0()
768.00/213.07	        , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.07	        , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.07	        , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.00/213.07	        , mkBase(@m) -> mkBase#1(@m)
768.00/213.07	        , makeBase(@m) -> makeBase#1(@m)
768.00/213.07	        , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.07	        , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.07	        , lineMult#1(nil(), @l) -> nil()
768.00/213.07	        , lineMult#1(::(@x, @xs), @l) ->
768.00/213.07	          ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.07	        , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.07	        , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.07	        , #mult(#neg(@x), #0()) -> #0()
768.00/213.07	        , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.07	        , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.07	        , #mult(#pos(@x), #0()) -> #0()
768.00/213.07	        , #mult(#0(), #neg(@y)) -> #0()
768.00/213.07	        , #mult(#0(), #pos(@y)) -> #0()
768.00/213.07	        , #mult(#0(), #0()) -> #0()
768.00/213.07	        , attach#2(nil(), @x, @xs) -> nil()
768.00/213.07	        , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.07	          ::(::(@x, @l), attach(@xs, @ls))
768.00/213.07	        , #succ(#neg(#s(#0()))) -> #0()
768.00/213.07	        , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.07	        , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.07	        , #succ(#0()) -> #pos(#s(#0()))
768.00/213.07	        , makeBase#1(nil()) -> nil()
768.00/213.07	        , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.07	        , matrixMult(@m1, @m2) ->
768.00/213.07	          matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.07	        , #abs(#neg(@x)) -> #pos(@x)
768.00/213.07	        , #abs(#pos(@x)) -> #pos(@x)
768.00/213.07	        , #abs(#0()) -> #0()
768.00/213.07	        , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.07	        , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.07	        , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.00/213.07	          tuple#2(::(@x, @ys), ::(@xs, @m'))
768.00/213.07	        , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.07	        , #pred(#pos(#s(#0()))) -> #0()
768.00/213.07	        , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.07	        , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.07	      Obligation:
768.00/213.07	        innermost runtime complexity
768.00/213.07	      Answer:
768.00/213.07	        YES(O(1),O(n^1))
768.00/213.07	      
768.00/213.07	      Due to missing edges in the dependency-graph, the right-hand sides
768.00/213.07	      of following rules could be simplified:
768.00/213.07	      
768.00/213.07	        { matrixMult^#(@m1, @m2) ->
768.00/213.07	          c_22(transAcc^#(@m2, makeBase(@m2)), makeBase^#(@m2))
768.00/213.07	        , transpose'^#(@m) ->
768.00/213.07	          c_7(transAcc^#(@m, makeBase(@m)), makeBase^#(@m)) }
768.00/213.07	      
768.00/213.07	      We are left with following problem, upon which TcT provides the
768.00/213.07	      certificate YES(O(1),O(n^1)).
768.00/213.07	      
768.00/213.07	      Strict DPs:
768.00/213.07	        { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.00/213.07	        , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.07	          c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.00/213.07	              matrixMult^#(@acc, @m))
768.00/213.07	        , attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.00/213.07	        , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.00/213.07	        , split^#(@m) -> c_5(split#1^#(@m))
768.00/213.07	        , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
768.00/213.07	        , transAcc^#(@m, @base) -> c_7(transAcc#1^#(@m, @base))
768.00/213.07	        , split#2^#(::(@x, @xs), @ls) -> c_8(split^#(@ls))
768.00/213.07	        , transpose^#(@m) -> c_9(transpose#1^#(@m, @m))
768.00/213.07	        , transpose#1^#(::(@xs, @xss), @m) ->
768.00/213.07	          c_10(transpose#2^#(split(@m)), split^#(@m))
768.00/213.07	        , transAcc#1^#(::(@l, @m'), @base) ->
768.00/213.07	          c_11(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.00/213.07	        , transpose#3^#(::(@y, @ys), @l) -> c_12(transpose^#(::(@y, @ys)))
768.00/213.07	        , attach#2^#(::(@l, @ls), @x, @xs) -> c_13(attach^#(@xs, @ls))
768.00/213.07	        , transpose#2^#(tuple#2(@l, @m')) -> c_14(transpose#3^#(@m', @l))
768.00/213.07	        , matrixMultOld^#(@m1, @m2) -> c_15(transpose^#(@m2)) }
768.00/213.07	      Weak DPs:
768.00/213.07	        { matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.07	          c_16(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.00/213.07	               matrixMult^#(@m1, @m2))
768.00/213.07	        , matrixMult^#(@m1, @m2) -> c_17(transAcc^#(@m2, makeBase(@m2)))
768.00/213.07	        , transpose'^#(@m) -> c_18(transAcc^#(@m, makeBase(@m))) }
768.00/213.07	      Weak Trs:
768.00/213.07	        { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.07	        , split(@m) -> split#1(@m)
768.00/213.07	        , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.07	        , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.07	        , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.07	        , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.07	        , #add(#0(), @y) -> @y
768.00/213.07	        , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.07	        , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.07	        , split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.07	        , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.00/213.07	        , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.07	        , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.07	        , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.07	        , +(@x, @y) -> #add(@x, @y)
768.00/213.07	        , transAcc#1(nil(), @base) -> @base
768.00/213.07	        , transAcc#1(::(@l, @m'), @base) ->
768.00/213.07	          attach(@l, transAcc(@m', @base))
768.00/213.07	        , *(@x, @y) -> #mult(@x, @y)
768.00/213.07	        , mkBase#1(nil()) -> nil()
768.00/213.07	        , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.07	        , attach#1(nil(), @m) -> nil()
768.00/213.07	        , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.07	        , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.07	        , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.07	          ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.07	        , #natmult(#0(), @y) -> #0()
768.00/213.07	        , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.07	        , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.07	        , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.00/213.07	        , mkBase(@m) -> mkBase#1(@m)
768.00/213.07	        , makeBase(@m) -> makeBase#1(@m)
768.00/213.07	        , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.07	        , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.07	        , lineMult#1(nil(), @l) -> nil()
768.00/213.07	        , lineMult#1(::(@x, @xs), @l) ->
768.00/213.07	          ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.07	        , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.07	        , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.07	        , #mult(#neg(@x), #0()) -> #0()
768.00/213.07	        , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.07	        , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.07	        , #mult(#pos(@x), #0()) -> #0()
768.00/213.07	        , #mult(#0(), #neg(@y)) -> #0()
768.00/213.07	        , #mult(#0(), #pos(@y)) -> #0()
768.00/213.07	        , #mult(#0(), #0()) -> #0()
768.00/213.07	        , attach#2(nil(), @x, @xs) -> nil()
768.00/213.07	        , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.07	          ::(::(@x, @l), attach(@xs, @ls))
768.00/213.07	        , #succ(#neg(#s(#0()))) -> #0()
768.00/213.07	        , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.07	        , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.07	        , #succ(#0()) -> #pos(#s(#0()))
768.00/213.07	        , makeBase#1(nil()) -> nil()
768.00/213.07	        , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.07	        , matrixMult(@m1, @m2) ->
768.00/213.07	          matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.07	        , #abs(#neg(@x)) -> #pos(@x)
768.00/213.07	        , #abs(#pos(@x)) -> #pos(@x)
768.00/213.07	        , #abs(#0()) -> #0()
768.00/213.07	        , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.08	        , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.08	        , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.00/213.08	          tuple#2(::(@x, @ys), ::(@xs, @m'))
768.00/213.08	        , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.08	        , #pred(#pos(#s(#0()))) -> #0()
768.00/213.08	        , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.08	        , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.08	      Obligation:
768.00/213.08	        innermost runtime complexity
768.00/213.08	      Answer:
768.00/213.08	        YES(O(1),O(n^1))
768.00/213.08	      
768.00/213.08	      We analyse the complexity of following sub-problems (R) and (S).
768.00/213.08	      Problem (S) is obtained from the input problem by shifting strict
768.00/213.08	      rules from (R) into the weak component:
768.00/213.08	      
768.00/213.08	      Problem (R):
768.00/213.08	      ------------
768.00/213.08	        Strict DPs:
768.00/213.08	          { split^#(@m) -> c_5(split#1^#(@m))
768.00/213.08	          , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
768.00/213.08	          , split#2^#(::(@x, @xs), @ls) -> c_8(split^#(@ls))
768.00/213.08	          , transpose^#(@m) -> c_9(transpose#1^#(@m, @m))
768.00/213.08	          , transpose#1^#(::(@xs, @xss), @m) ->
768.00/213.08	            c_10(transpose#2^#(split(@m)), split^#(@m))
768.00/213.08	          , transpose#3^#(::(@y, @ys), @l) -> c_12(transpose^#(::(@y, @ys)))
768.00/213.08	          , transpose#2^#(tuple#2(@l, @m')) -> c_14(transpose#3^#(@m', @l))
768.00/213.08	          , matrixMultOld^#(@m1, @m2) -> c_15(transpose^#(@m2)) }
768.00/213.08	        Weak DPs:
768.00/213.08	          { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.00/213.08	          , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.08	            c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.00/213.08	                matrixMult^#(@acc, @m))
768.00/213.08	          , attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.00/213.08	          , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.00/213.08	          , matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.08	            c_16(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.00/213.08	                 matrixMult^#(@m1, @m2))
768.00/213.08	          , matrixMult^#(@m1, @m2) -> c_17(transAcc^#(@m2, makeBase(@m2)))
768.00/213.08	          , transpose'^#(@m) -> c_18(transAcc^#(@m, makeBase(@m)))
768.00/213.08	          , transAcc^#(@m, @base) -> c_7(transAcc#1^#(@m, @base))
768.00/213.08	          , transAcc#1^#(::(@l, @m'), @base) ->
768.00/213.08	            c_11(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.00/213.08	          , attach#2^#(::(@l, @ls), @x, @xs) -> c_13(attach^#(@xs, @ls)) }
768.00/213.08	        Weak Trs:
768.00/213.08	          { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.08	          , split(@m) -> split#1(@m)
768.00/213.08	          , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.08	          , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.08	          , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.08	          , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.08	          , #add(#0(), @y) -> @y
768.00/213.08	          , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.08	          , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.08	          , split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.08	          , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.00/213.08	          , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.08	          , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.08	          , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.08	          , +(@x, @y) -> #add(@x, @y)
768.00/213.08	          , transAcc#1(nil(), @base) -> @base
768.00/213.08	          , transAcc#1(::(@l, @m'), @base) ->
768.00/213.08	            attach(@l, transAcc(@m', @base))
768.00/213.08	          , *(@x, @y) -> #mult(@x, @y)
768.00/213.08	          , mkBase#1(nil()) -> nil()
768.00/213.08	          , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.08	          , attach#1(nil(), @m) -> nil()
768.00/213.08	          , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.08	          , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.08	          , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.08	            ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.08	          , #natmult(#0(), @y) -> #0()
768.00/213.08	          , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.08	          , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.08	          , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.00/213.08	          , mkBase(@m) -> mkBase#1(@m)
768.00/213.08	          , makeBase(@m) -> makeBase#1(@m)
768.00/213.08	          , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.08	          , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.08	          , lineMult#1(nil(), @l) -> nil()
768.00/213.08	          , lineMult#1(::(@x, @xs), @l) ->
768.00/213.08	            ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.08	          , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.08	          , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.08	          , #mult(#neg(@x), #0()) -> #0()
768.00/213.08	          , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.08	          , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.08	          , #mult(#pos(@x), #0()) -> #0()
768.00/213.08	          , #mult(#0(), #neg(@y)) -> #0()
768.00/213.08	          , #mult(#0(), #pos(@y)) -> #0()
768.00/213.08	          , #mult(#0(), #0()) -> #0()
768.00/213.08	          , attach#2(nil(), @x, @xs) -> nil()
768.00/213.08	          , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.08	            ::(::(@x, @l), attach(@xs, @ls))
768.00/213.08	          , #succ(#neg(#s(#0()))) -> #0()
768.00/213.08	          , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.08	          , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.08	          , #succ(#0()) -> #pos(#s(#0()))
768.00/213.08	          , makeBase#1(nil()) -> nil()
768.00/213.08	          , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.08	          , matrixMult(@m1, @m2) ->
768.00/213.08	            matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.08	          , #abs(#neg(@x)) -> #pos(@x)
768.00/213.08	          , #abs(#pos(@x)) -> #pos(@x)
768.00/213.08	          , #abs(#0()) -> #0()
768.00/213.08	          , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.08	          , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.08	          , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.00/213.08	            tuple#2(::(@x, @ys), ::(@xs, @m'))
768.00/213.08	          , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.08	          , #pred(#pos(#s(#0()))) -> #0()
768.00/213.08	          , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.08	          , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.08	        StartTerms: basic terms
768.00/213.08	        Strategy: innermost
768.00/213.08	      
768.00/213.08	      Problem (S):
768.00/213.08	      ------------
768.00/213.08	        Strict DPs:
768.00/213.08	          { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.00/213.08	          , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.08	            c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.00/213.08	                matrixMult^#(@acc, @m))
768.00/213.08	          , attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.00/213.08	          , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.00/213.08	          , transAcc^#(@m, @base) -> c_7(transAcc#1^#(@m, @base))
768.00/213.08	          , transAcc#1^#(::(@l, @m'), @base) ->
768.00/213.08	            c_11(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.00/213.08	          , attach#2^#(::(@l, @ls), @x, @xs) -> c_13(attach^#(@xs, @ls)) }
768.00/213.08	        Weak DPs:
768.00/213.08	          { split^#(@m) -> c_5(split#1^#(@m))
768.00/213.08	          , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
768.00/213.08	          , matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.08	            c_16(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.00/213.08	                 matrixMult^#(@m1, @m2))
768.00/213.08	          , matrixMult^#(@m1, @m2) -> c_17(transAcc^#(@m2, makeBase(@m2)))
768.00/213.08	          , transpose'^#(@m) -> c_18(transAcc^#(@m, makeBase(@m)))
768.00/213.08	          , split#2^#(::(@x, @xs), @ls) -> c_8(split^#(@ls))
768.00/213.08	          , transpose^#(@m) -> c_9(transpose#1^#(@m, @m))
768.00/213.08	          , transpose#1^#(::(@xs, @xss), @m) ->
768.00/213.08	            c_10(transpose#2^#(split(@m)), split^#(@m))
768.00/213.08	          , transpose#3^#(::(@y, @ys), @l) -> c_12(transpose^#(::(@y, @ys)))
768.00/213.08	          , transpose#2^#(tuple#2(@l, @m')) -> c_14(transpose#3^#(@m', @l))
768.00/213.08	          , matrixMultOld^#(@m1, @m2) -> c_15(transpose^#(@m2)) }
768.00/213.08	        Weak Trs:
768.00/213.08	          { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.08	          , split(@m) -> split#1(@m)
768.00/213.08	          , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.08	          , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.08	          , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.08	          , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.08	          , #add(#0(), @y) -> @y
768.00/213.08	          , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.08	          , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.08	          , split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.08	          , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.00/213.08	          , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.08	          , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.08	          , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.08	          , +(@x, @y) -> #add(@x, @y)
768.00/213.08	          , transAcc#1(nil(), @base) -> @base
768.00/213.08	          , transAcc#1(::(@l, @m'), @base) ->
768.00/213.08	            attach(@l, transAcc(@m', @base))
768.00/213.08	          , *(@x, @y) -> #mult(@x, @y)
768.00/213.08	          , mkBase#1(nil()) -> nil()
768.00/213.08	          , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.08	          , attach#1(nil(), @m) -> nil()
768.00/213.08	          , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.08	          , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.08	          , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.08	            ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.08	          , #natmult(#0(), @y) -> #0()
768.00/213.08	          , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.08	          , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.08	          , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.00/213.08	          , mkBase(@m) -> mkBase#1(@m)
768.00/213.08	          , makeBase(@m) -> makeBase#1(@m)
768.00/213.08	          , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.08	          , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.08	          , lineMult#1(nil(), @l) -> nil()
768.00/213.08	          , lineMult#1(::(@x, @xs), @l) ->
768.00/213.08	            ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.08	          , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.08	          , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.08	          , #mult(#neg(@x), #0()) -> #0()
768.00/213.08	          , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.08	          , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.08	          , #mult(#pos(@x), #0()) -> #0()
768.00/213.08	          , #mult(#0(), #neg(@y)) -> #0()
768.00/213.08	          , #mult(#0(), #pos(@y)) -> #0()
768.00/213.08	          , #mult(#0(), #0()) -> #0()
768.00/213.08	          , attach#2(nil(), @x, @xs) -> nil()
768.00/213.08	          , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.08	            ::(::(@x, @l), attach(@xs, @ls))
768.00/213.08	          , #succ(#neg(#s(#0()))) -> #0()
768.00/213.08	          , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.08	          , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.08	          , #succ(#0()) -> #pos(#s(#0()))
768.00/213.08	          , makeBase#1(nil()) -> nil()
768.00/213.08	          , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.08	          , matrixMult(@m1, @m2) ->
768.00/213.08	            matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.08	          , #abs(#neg(@x)) -> #pos(@x)
768.00/213.08	          , #abs(#pos(@x)) -> #pos(@x)
768.00/213.08	          , #abs(#0()) -> #0()
768.00/213.08	          , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.08	          , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.08	          , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.00/213.08	            tuple#2(::(@x, @ys), ::(@xs, @m'))
768.00/213.08	          , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.08	          , #pred(#pos(#s(#0()))) -> #0()
768.00/213.08	          , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.08	          , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.08	        StartTerms: basic terms
768.00/213.08	        Strategy: innermost
768.00/213.08	      
768.00/213.08	      Overall, the transformation results in the following sub-problem(s):
768.00/213.08	      
768.00/213.08	      Generated new problems:
768.00/213.08	      -----------------------
768.00/213.08	      R) Strict DPs:
768.00/213.08	           { split^#(@m) -> c_5(split#1^#(@m))
768.00/213.08	           , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
768.00/213.08	           , split#2^#(::(@x, @xs), @ls) -> c_8(split^#(@ls))
768.00/213.08	           , transpose^#(@m) -> c_9(transpose#1^#(@m, @m))
768.00/213.08	           , transpose#1^#(::(@xs, @xss), @m) ->
768.00/213.08	             c_10(transpose#2^#(split(@m)), split^#(@m))
768.00/213.08	           , transpose#3^#(::(@y, @ys), @l) -> c_12(transpose^#(::(@y, @ys)))
768.00/213.08	           , transpose#2^#(tuple#2(@l, @m')) -> c_14(transpose#3^#(@m', @l))
768.00/213.08	           , matrixMultOld^#(@m1, @m2) -> c_15(transpose^#(@m2)) }
768.00/213.08	         Weak DPs:
768.00/213.08	           { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.00/213.08	           , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.08	             c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.00/213.08	                 matrixMult^#(@acc, @m))
768.00/213.08	           , attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.00/213.08	           , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.00/213.08	           , matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.08	             c_16(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.00/213.08	                  matrixMult^#(@m1, @m2))
768.00/213.08	           , matrixMult^#(@m1, @m2) -> c_17(transAcc^#(@m2, makeBase(@m2)))
768.00/213.08	           , transpose'^#(@m) -> c_18(transAcc^#(@m, makeBase(@m)))
768.00/213.08	           , transAcc^#(@m, @base) -> c_7(transAcc#1^#(@m, @base))
768.00/213.08	           , transAcc#1^#(::(@l, @m'), @base) ->
768.00/213.08	             c_11(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.00/213.08	           , attach#2^#(::(@l, @ls), @x, @xs) -> c_13(attach^#(@xs, @ls)) }
768.00/213.08	         Weak Trs:
768.00/213.08	           { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.08	           , split(@m) -> split#1(@m)
768.00/213.08	           , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.08	           , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.08	           , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.08	           , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.08	           , #add(#0(), @y) -> @y
768.00/213.08	           , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.08	           , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.08	           , split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.08	           , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.00/213.08	           , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.08	           , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.08	           , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.08	           , +(@x, @y) -> #add(@x, @y)
768.00/213.08	           , transAcc#1(nil(), @base) -> @base
768.00/213.08	           , transAcc#1(::(@l, @m'), @base) ->
768.00/213.08	             attach(@l, transAcc(@m', @base))
768.00/213.08	           , *(@x, @y) -> #mult(@x, @y)
768.00/213.08	           , mkBase#1(nil()) -> nil()
768.00/213.08	           , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.08	           , attach#1(nil(), @m) -> nil()
768.00/213.08	           , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.08	           , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.08	           , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.08	             ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.08	           , #natmult(#0(), @y) -> #0()
768.00/213.08	           , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.08	           , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.08	           , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.00/213.08	           , mkBase(@m) -> mkBase#1(@m)
768.00/213.08	           , makeBase(@m) -> makeBase#1(@m)
768.00/213.08	           , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.08	           , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.08	           , lineMult#1(nil(), @l) -> nil()
768.00/213.08	           , lineMult#1(::(@x, @xs), @l) ->
768.00/213.08	             ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.08	           , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.08	           , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.08	           , #mult(#neg(@x), #0()) -> #0()
768.00/213.08	           , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.08	           , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.08	           , #mult(#pos(@x), #0()) -> #0()
768.00/213.08	           , #mult(#0(), #neg(@y)) -> #0()
768.00/213.08	           , #mult(#0(), #pos(@y)) -> #0()
768.00/213.08	           , #mult(#0(), #0()) -> #0()
768.00/213.08	           , attach#2(nil(), @x, @xs) -> nil()
768.00/213.08	           , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.08	             ::(::(@x, @l), attach(@xs, @ls))
768.00/213.08	           , #succ(#neg(#s(#0()))) -> #0()
768.00/213.08	           , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.08	           , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.08	           , #succ(#0()) -> #pos(#s(#0()))
768.00/213.08	           , makeBase#1(nil()) -> nil()
768.00/213.08	           , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.08	           , matrixMult(@m1, @m2) ->
768.00/213.08	             matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.08	           , #abs(#neg(@x)) -> #pos(@x)
768.00/213.08	           , #abs(#pos(@x)) -> #pos(@x)
768.00/213.08	           , #abs(#0()) -> #0()
768.00/213.08	           , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.08	           , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.08	           , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.00/213.08	             tuple#2(::(@x, @ys), ::(@xs, @m'))
768.00/213.08	           , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.08	           , #pred(#pos(#s(#0()))) -> #0()
768.00/213.08	           , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.08	           , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.08	         StartTerms: basic terms
768.00/213.08	         Strategy: innermost
768.00/213.08	         
768.00/213.08	         This problem was proven YES(O(1),O(n^1)).
768.00/213.08	      
768.00/213.08	      S) Strict DPs:
768.00/213.08	           { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.00/213.08	           , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.08	             c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.00/213.08	                 matrixMult^#(@acc, @m))
768.00/213.08	           , attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.00/213.08	           , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.00/213.08	           , transAcc^#(@m, @base) -> c_7(transAcc#1^#(@m, @base))
768.00/213.08	           , transAcc#1^#(::(@l, @m'), @base) ->
768.00/213.08	             c_11(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.00/213.08	           , attach#2^#(::(@l, @ls), @x, @xs) -> c_13(attach^#(@xs, @ls)) }
768.00/213.08	         Weak DPs:
768.00/213.08	           { split^#(@m) -> c_5(split#1^#(@m))
768.00/213.08	           , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
768.00/213.08	           , matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.08	             c_16(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.00/213.08	                  matrixMult^#(@m1, @m2))
768.00/213.08	           , matrixMult^#(@m1, @m2) -> c_17(transAcc^#(@m2, makeBase(@m2)))
768.00/213.08	           , transpose'^#(@m) -> c_18(transAcc^#(@m, makeBase(@m)))
768.00/213.08	           , split#2^#(::(@x, @xs), @ls) -> c_8(split^#(@ls))
768.00/213.08	           , transpose^#(@m) -> c_9(transpose#1^#(@m, @m))
768.00/213.08	           , transpose#1^#(::(@xs, @xss), @m) ->
768.00/213.08	             c_10(transpose#2^#(split(@m)), split^#(@m))
768.00/213.08	           , transpose#3^#(::(@y, @ys), @l) -> c_12(transpose^#(::(@y, @ys)))
768.00/213.08	           , transpose#2^#(tuple#2(@l, @m')) -> c_14(transpose#3^#(@m', @l))
768.00/213.08	           , matrixMultOld^#(@m1, @m2) -> c_15(transpose^#(@m2)) }
768.00/213.08	         Weak Trs:
768.00/213.08	           { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.08	           , split(@m) -> split#1(@m)
768.00/213.08	           , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.08	           , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.08	           , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.08	           , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.08	           , #add(#0(), @y) -> @y
768.00/213.08	           , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.08	           , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.08	           , split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.08	           , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.00/213.08	           , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.08	           , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.08	           , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.08	           , +(@x, @y) -> #add(@x, @y)
768.00/213.08	           , transAcc#1(nil(), @base) -> @base
768.00/213.08	           , transAcc#1(::(@l, @m'), @base) ->
768.00/213.08	             attach(@l, transAcc(@m', @base))
768.00/213.08	           , *(@x, @y) -> #mult(@x, @y)
768.00/213.08	           , mkBase#1(nil()) -> nil()
768.00/213.08	           , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.08	           , attach#1(nil(), @m) -> nil()
768.00/213.08	           , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.08	           , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.08	           , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.08	             ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.08	           , #natmult(#0(), @y) -> #0()
768.00/213.08	           , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.08	           , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.08	           , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.00/213.08	           , mkBase(@m) -> mkBase#1(@m)
768.00/213.08	           , makeBase(@m) -> makeBase#1(@m)
768.00/213.08	           , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.08	           , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.08	           , lineMult#1(nil(), @l) -> nil()
768.00/213.08	           , lineMult#1(::(@x, @xs), @l) ->
768.00/213.08	             ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.08	           , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.08	           , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.08	           , #mult(#neg(@x), #0()) -> #0()
768.00/213.08	           , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.08	           , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.08	           , #mult(#pos(@x), #0()) -> #0()
768.00/213.08	           , #mult(#0(), #neg(@y)) -> #0()
768.00/213.08	           , #mult(#0(), #pos(@y)) -> #0()
768.00/213.08	           , #mult(#0(), #0()) -> #0()
768.00/213.08	           , attach#2(nil(), @x, @xs) -> nil()
768.00/213.08	           , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.08	             ::(::(@x, @l), attach(@xs, @ls))
768.00/213.08	           , #succ(#neg(#s(#0()))) -> #0()
768.00/213.08	           , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.08	           , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.08	           , #succ(#0()) -> #pos(#s(#0()))
768.00/213.08	           , makeBase#1(nil()) -> nil()
768.00/213.08	           , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.08	           , matrixMult(@m1, @m2) ->
768.00/213.08	             matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.08	           , #abs(#neg(@x)) -> #pos(@x)
768.00/213.08	           , #abs(#pos(@x)) -> #pos(@x)
768.00/213.08	           , #abs(#0()) -> #0()
768.00/213.08	           , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.08	           , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.08	           , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.00/213.08	             tuple#2(::(@x, @ys), ::(@xs, @m'))
768.00/213.08	           , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.08	           , #pred(#pos(#s(#0()))) -> #0()
768.00/213.08	           , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.08	           , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.08	         StartTerms: basic terms
768.00/213.08	         Strategy: innermost
768.00/213.08	         
768.00/213.08	         This problem was proven YES(O(1),O(n^1)).
768.00/213.08	      
768.00/213.08	      
768.00/213.08	      Proofs for generated problems:
768.00/213.08	      ------------------------------
768.00/213.08	      R) We are left with following problem, upon which TcT provides the
768.00/213.08	         certificate YES(O(1),O(n^1)).
768.00/213.08	         
768.00/213.08	         Strict DPs:
768.00/213.08	           { split^#(@m) -> c_5(split#1^#(@m))
768.00/213.08	           , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
768.00/213.08	           , split#2^#(::(@x, @xs), @ls) -> c_8(split^#(@ls))
768.00/213.08	           , transpose^#(@m) -> c_9(transpose#1^#(@m, @m))
768.00/213.08	           , transpose#1^#(::(@xs, @xss), @m) ->
768.00/213.08	             c_10(transpose#2^#(split(@m)), split^#(@m))
768.00/213.08	           , transpose#3^#(::(@y, @ys), @l) -> c_12(transpose^#(::(@y, @ys)))
768.00/213.08	           , transpose#2^#(tuple#2(@l, @m')) -> c_14(transpose#3^#(@m', @l))
768.00/213.08	           , matrixMultOld^#(@m1, @m2) -> c_15(transpose^#(@m2)) }
768.00/213.08	         Weak DPs:
768.00/213.08	           { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.00/213.08	           , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.08	             c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.00/213.08	                 matrixMult^#(@acc, @m))
768.00/213.08	           , attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.00/213.08	           , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.00/213.08	           , matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.08	             c_16(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.00/213.08	                  matrixMult^#(@m1, @m2))
768.00/213.08	           , matrixMult^#(@m1, @m2) -> c_17(transAcc^#(@m2, makeBase(@m2)))
768.00/213.08	           , transpose'^#(@m) -> c_18(transAcc^#(@m, makeBase(@m)))
768.00/213.08	           , transAcc^#(@m, @base) -> c_7(transAcc#1^#(@m, @base))
768.00/213.08	           , transAcc#1^#(::(@l, @m'), @base) ->
768.00/213.08	             c_11(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.00/213.08	           , attach#2^#(::(@l, @ls), @x, @xs) -> c_13(attach^#(@xs, @ls)) }
768.00/213.08	         Weak Trs:
768.00/213.08	           { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.08	           , split(@m) -> split#1(@m)
768.00/213.08	           , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.08	           , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.08	           , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.08	           , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.08	           , #add(#0(), @y) -> @y
768.00/213.08	           , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.08	           , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.08	           , split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.08	           , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.00/213.08	           , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.08	           , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.08	           , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.08	           , +(@x, @y) -> #add(@x, @y)
768.00/213.08	           , transAcc#1(nil(), @base) -> @base
768.00/213.08	           , transAcc#1(::(@l, @m'), @base) ->
768.00/213.08	             attach(@l, transAcc(@m', @base))
768.00/213.08	           , *(@x, @y) -> #mult(@x, @y)
768.00/213.08	           , mkBase#1(nil()) -> nil()
768.00/213.08	           , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.08	           , attach#1(nil(), @m) -> nil()
768.00/213.08	           , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.08	           , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.08	           , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.08	             ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.08	           , #natmult(#0(), @y) -> #0()
768.00/213.08	           , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.08	           , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.08	           , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.00/213.08	           , mkBase(@m) -> mkBase#1(@m)
768.00/213.09	           , makeBase(@m) -> makeBase#1(@m)
768.00/213.09	           , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.09	           , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.09	           , lineMult#1(nil(), @l) -> nil()
768.00/213.09	           , lineMult#1(::(@x, @xs), @l) ->
768.00/213.09	             ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.09	           , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.09	           , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.09	           , #mult(#neg(@x), #0()) -> #0()
768.00/213.09	           , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.09	           , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.09	           , #mult(#pos(@x), #0()) -> #0()
768.00/213.09	           , #mult(#0(), #neg(@y)) -> #0()
768.00/213.09	           , #mult(#0(), #pos(@y)) -> #0()
768.00/213.09	           , #mult(#0(), #0()) -> #0()
768.00/213.09	           , attach#2(nil(), @x, @xs) -> nil()
768.00/213.09	           , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.09	             ::(::(@x, @l), attach(@xs, @ls))
768.00/213.09	           , #succ(#neg(#s(#0()))) -> #0()
768.00/213.09	           , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.09	           , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.09	           , #succ(#0()) -> #pos(#s(#0()))
768.00/213.09	           , makeBase#1(nil()) -> nil()
768.00/213.09	           , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.09	           , matrixMult(@m1, @m2) ->
768.00/213.09	             matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.09	           , #abs(#neg(@x)) -> #pos(@x)
768.00/213.09	           , #abs(#pos(@x)) -> #pos(@x)
768.00/213.09	           , #abs(#0()) -> #0()
768.00/213.09	           , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.09	           , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.09	           , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.00/213.09	             tuple#2(::(@x, @ys), ::(@xs, @m'))
768.00/213.09	           , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.09	           , #pred(#pos(#s(#0()))) -> #0()
768.00/213.09	           , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.09	           , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.09	         Obligation:
768.00/213.09	           innermost runtime complexity
768.00/213.09	         Answer:
768.00/213.09	           YES(O(1),O(n^1))
768.00/213.09	         
768.00/213.09	         The following weak DPs constitute a sub-graph of the DG that is
768.00/213.09	         closed under successors. The DPs are removed.
768.00/213.09	         
768.00/213.09	         { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.00/213.09	         , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.00/213.09	           c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.00/213.09	               matrixMult^#(@acc, @m))
768.00/213.09	         , attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.00/213.09	         , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.00/213.09	         , matrixMult3^#(@m1, @m2, @m3) ->
768.00/213.09	           c_16(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.00/213.09	                matrixMult^#(@m1, @m2))
768.00/213.09	         , matrixMult^#(@m1, @m2) -> c_17(transAcc^#(@m2, makeBase(@m2)))
768.00/213.09	         , transpose'^#(@m) -> c_18(transAcc^#(@m, makeBase(@m)))
768.00/213.09	         , transAcc^#(@m, @base) -> c_7(transAcc#1^#(@m, @base))
768.00/213.09	         , transAcc#1^#(::(@l, @m'), @base) ->
768.00/213.09	           c_11(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.00/213.09	         , attach#2^#(::(@l, @ls), @x, @xs) -> c_13(attach^#(@xs, @ls)) }
768.00/213.09	         
768.00/213.09	         We are left with following problem, upon which TcT provides the
768.00/213.09	         certificate YES(O(1),O(n^1)).
768.00/213.09	         
768.00/213.09	         Strict DPs:
768.00/213.09	           { split^#(@m) -> c_5(split#1^#(@m))
768.00/213.09	           , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
768.00/213.09	           , split#2^#(::(@x, @xs), @ls) -> c_8(split^#(@ls))
768.00/213.09	           , transpose^#(@m) -> c_9(transpose#1^#(@m, @m))
768.00/213.09	           , transpose#1^#(::(@xs, @xss), @m) ->
768.00/213.09	             c_10(transpose#2^#(split(@m)), split^#(@m))
768.00/213.09	           , transpose#3^#(::(@y, @ys), @l) -> c_12(transpose^#(::(@y, @ys)))
768.00/213.09	           , transpose#2^#(tuple#2(@l, @m')) -> c_14(transpose#3^#(@m', @l))
768.00/213.09	           , matrixMultOld^#(@m1, @m2) -> c_15(transpose^#(@m2)) }
768.00/213.09	         Weak Trs:
768.00/213.09	           { attach(@line, @m) -> attach#1(@line, @m)
768.00/213.09	           , split(@m) -> split#1(@m)
768.00/213.09	           , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.00/213.09	           , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.00/213.09	           , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.00/213.09	           , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.00/213.09	           , #add(#0(), @y) -> @y
768.00/213.09	           , mult#2(nil(), @x, @xs) -> #abs(#0())
768.00/213.09	           , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.00/213.09	           , split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.09	           , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.00/213.09	           , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.00/213.09	           , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.00/213.09	           , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.00/213.09	           , +(@x, @y) -> #add(@x, @y)
768.00/213.09	           , transAcc#1(nil(), @base) -> @base
768.00/213.09	           , transAcc#1(::(@l, @m'), @base) ->
768.00/213.09	             attach(@l, transAcc(@m', @base))
768.00/213.09	           , *(@x, @y) -> #mult(@x, @y)
768.00/213.09	           , mkBase#1(nil()) -> nil()
768.00/213.09	           , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.00/213.09	           , attach#1(nil(), @m) -> nil()
768.00/213.09	           , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.00/213.09	           , matrixMult'#1(nil(), @m2) -> nil()
768.00/213.09	           , matrixMult'#1(::(@l, @ls), @m2) ->
768.00/213.09	             ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.00/213.09	           , #natmult(#0(), @y) -> #0()
768.00/213.09	           , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.00/213.09	           , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.09	           , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.00/213.09	           , mkBase(@m) -> mkBase#1(@m)
768.00/213.09	           , makeBase(@m) -> makeBase#1(@m)
768.00/213.09	           , mult#1(nil(), @l2) -> #abs(#0())
768.00/213.09	           , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.00/213.09	           , lineMult#1(nil(), @l) -> nil()
768.00/213.09	           , lineMult#1(::(@x, @xs), @l) ->
768.00/213.09	             ::(mult(@l, @x), lineMult(@l, @xs))
768.00/213.09	           , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.00/213.09	           , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.00/213.09	           , #mult(#neg(@x), #0()) -> #0()
768.00/213.09	           , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.00/213.09	           , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.00/213.09	           , #mult(#pos(@x), #0()) -> #0()
768.00/213.09	           , #mult(#0(), #neg(@y)) -> #0()
768.00/213.09	           , #mult(#0(), #pos(@y)) -> #0()
768.00/213.09	           , #mult(#0(), #0()) -> #0()
768.00/213.09	           , attach#2(nil(), @x, @xs) -> nil()
768.00/213.09	           , attach#2(::(@l, @ls), @x, @xs) ->
768.00/213.09	             ::(::(@x, @l), attach(@xs, @ls))
768.00/213.09	           , #succ(#neg(#s(#0()))) -> #0()
768.00/213.09	           , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.00/213.09	           , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.00/213.09	           , #succ(#0()) -> #pos(#s(#0()))
768.00/213.09	           , makeBase#1(nil()) -> nil()
768.00/213.09	           , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.00/213.09	           , matrixMult(@m1, @m2) ->
768.00/213.09	             matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.00/213.09	           , #abs(#neg(@x)) -> #pos(@x)
768.00/213.09	           , #abs(#pos(@x)) -> #pos(@x)
768.00/213.09	           , #abs(#0()) -> #0()
768.00/213.09	           , #abs(#s(@x)) -> #pos(#s(@x))
768.00/213.09	           , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.00/213.09	           , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.00/213.09	             tuple#2(::(@x, @ys), ::(@xs, @m'))
768.00/213.09	           , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.00/213.09	           , #pred(#pos(#s(#0()))) -> #0()
768.00/213.09	           , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.00/213.09	           , #pred(#0()) -> #neg(#s(#0())) }
768.00/213.09	         Obligation:
768.00/213.09	           innermost runtime complexity
768.00/213.09	         Answer:
768.00/213.09	           YES(O(1),O(n^1))
768.00/213.09	         
768.00/213.09	         We replace rewrite rules by usable rules:
768.00/213.09	         
768.00/213.09	           Weak Usable Rules:
768.00/213.09	             { split(@m) -> split#1(@m)
768.00/213.09	             , split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.09	             , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.00/213.09	             , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.09	             , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.00/213.09	             , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.00/213.09	               tuple#2(::(@x, @ys), ::(@xs, @m')) }
768.00/213.09	         
768.00/213.09	         We are left with following problem, upon which TcT provides the
768.00/213.09	         certificate YES(O(1),O(n^1)).
768.00/213.09	         
768.00/213.09	         Strict DPs:
768.00/213.09	           { split^#(@m) -> c_5(split#1^#(@m))
768.00/213.09	           , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
768.00/213.09	           , split#2^#(::(@x, @xs), @ls) -> c_8(split^#(@ls))
768.00/213.09	           , transpose^#(@m) -> c_9(transpose#1^#(@m, @m))
768.00/213.09	           , transpose#1^#(::(@xs, @xss), @m) ->
768.00/213.09	             c_10(transpose#2^#(split(@m)), split^#(@m))
768.00/213.09	           , transpose#3^#(::(@y, @ys), @l) -> c_12(transpose^#(::(@y, @ys)))
768.00/213.09	           , transpose#2^#(tuple#2(@l, @m')) -> c_14(transpose#3^#(@m', @l))
768.00/213.09	           , matrixMultOld^#(@m1, @m2) -> c_15(transpose^#(@m2)) }
768.00/213.09	         Weak Trs:
768.00/213.09	           { split(@m) -> split#1(@m)
768.00/213.09	           , split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.09	           , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.00/213.09	           , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.09	           , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.00/213.09	           , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.00/213.09	             tuple#2(::(@x, @ys), ::(@xs, @m')) }
768.00/213.09	         Obligation:
768.00/213.09	           innermost runtime complexity
768.00/213.09	         Answer:
768.00/213.09	           YES(O(1),O(n^1))
768.00/213.09	         
768.00/213.09	         We use the processor 'matrix interpretation of dimension 2' to
768.00/213.09	         orient following rules strictly.
768.00/213.09	         
768.00/213.09	         DPs:
768.00/213.09	           { 2: split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
768.00/213.09	           , 8: matrixMultOld^#(@m1, @m2) -> c_15(transpose^#(@m2)) }
768.00/213.09	         Trs:
768.00/213.09	           { split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.09	           , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs) }
768.00/213.09	         
768.00/213.09	         Sub-proof:
768.00/213.09	         ----------
768.00/213.09	           The following argument positions are usable:
768.00/213.09	             Uargs(c_5) = {1}, Uargs(c_6) = {1}, Uargs(c_8) = {1},
768.00/213.09	             Uargs(c_9) = {1}, Uargs(c_10) = {1, 2}, Uargs(c_12) = {1},
768.00/213.09	             Uargs(c_14) = {1}, Uargs(c_15) = {1}
768.00/213.09	           
768.00/213.09	           TcT has computed the following constructor-based matrix
768.00/213.09	           interpretation satisfying not(EDA) and not(IDA(1)).
768.00/213.09	           
768.00/213.09	                           [split](x1) = [4 4] x1 + [0]           
768.00/213.09	                                         [1 0]      [0]           
768.00/213.09	                                                                  
768.00/213.09	                                 [nil] = [0]                      
768.00/213.09	                                         [0]                      
768.00/213.09	                                                                  
768.00/213.09	                         [split#1](x1) = [0 2] x1 + [0]           
768.00/213.09	                                         [1 0]      [0]           
768.00/213.09	                                                                  
768.00/213.09	                     [split#2](x1, x2) = [0 0] x1 + [0 0] x2 + [4]
768.00/213.09	                                         [0 1]      [1 0]      [0]
768.00/213.09	                                                                  
768.00/213.09	                     [tuple#2](x1, x2) = [0 0] x2 + [0]           
768.00/213.09	                                         [1 1]      [0]           
768.00/213.09	                                                                  
768.00/213.09	                          [::](x1, x2) = [0 1] x1 + [1 0] x2 + [0]
768.00/213.09	                                         [0 0]      [0 1]      [2]
768.00/213.09	                                                                  
768.00/213.09	                 [split#3](x1, x2, x3) = [0 0] x1 + [0 0] x3 + [0]
768.00/213.09	                                         [0 1]      [0 1]      [2]
768.00/213.09	                                                                  
768.00/213.09	                         [split^#](x1) = [0 1] x1 + [0]           
768.00/213.09	                                         [0 4]      [0]           
768.00/213.09	                                                                  
768.00/213.09	                       [split#1^#](x1) = [0 1] x1 + [0]           
768.00/213.09	                                         [0 4]      [0]           
768.00/213.09	                                                                  
768.00/213.09	                   [split#2^#](x1, x2) = [0 0] x1 + [0 1] x2 + [0]
768.00/213.09	                                         [0 4]      [0 4]      [0]
768.00/213.09	                                                                  
768.00/213.09	                     [transpose^#](x1) = [1 1] x1 + [0]           
768.00/213.09	                                         [4 4]      [0]           
768.00/213.09	                                                                  
768.00/213.09	               [transpose#1^#](x1, x2) = [1 1] x2 + [0]           
768.00/213.09	                                         [0 0]      [0]           
768.00/213.09	                                                                  
768.00/213.09	               [transpose#3^#](x1, x2) = [1 1] x1 + [0]           
768.00/213.09	                                         [4 0]      [0]           
768.00/213.09	                                                                  
768.00/213.09	                   [transpose#2^#](x1) = [0 1] x1 + [0]           
768.00/213.09	                                         [0 0]      [4]           
768.00/213.09	                                                                  
768.00/213.09	             [matrixMultOld^#](x1, x2) = [7 7] x1 + [7 7] x2 + [7]
768.00/213.09	                                         [7 7]      [7 7]      [7]
768.00/213.09	                                                                  
768.00/213.09	                             [c_5](x1) = [1 0] x1 + [0]           
768.00/213.09	                                         [0 0]      [0]           
768.00/213.09	                                                                  
768.00/213.09	                             [c_6](x1) = [1 0] x1 + [1]           
768.00/213.09	                                         [0 0]      [3]           
768.00/213.09	                                                                  
768.00/213.09	                             [c_8](x1) = [1 0] x1 + [0]           
768.00/213.09	                                         [0 0]      [3]           
768.00/213.09	                                                                  
768.00/213.09	                             [c_9](x1) = [1 0] x1 + [0]           
768.00/213.09	                                         [0 0]      [0]           
768.00/213.09	                                                                  
768.00/213.09	                        [c_10](x1, x2) = [1 0] x1 + [1 0] x2 + [0]
768.00/213.09	                                         [0 0]      [0 0]      [0]
768.00/213.09	                                                                  
768.00/213.09	                            [c_12](x1) = [1 0] x1 + [0]           
768.00/213.09	                                         [0 0]      [0]           
768.00/213.09	                                                                  
768.00/213.09	                            [c_14](x1) = [1 0] x1 + [0]           
768.00/213.09	                                         [0 0]      [3]           
768.00/213.09	                                                                  
768.00/213.09	                            [c_15](x1) = [1 0] x1 + [3]           
768.00/213.09	                                         [0 0]      [7]           
768.00/213.09	           
768.00/213.09	           The order satisfies the following ordering constraints:
768.00/213.09	           
768.00/213.09	                                       [split(@m)] =  [4 4] @m + [0]                               
768.00/213.09	                                                      [1 0]      [0]                               
768.00/213.09	                                                   >= [0 2] @m + [0]                               
768.00/213.09	                                                      [1 0]      [0]                               
768.00/213.09	                                                   =  [split#1(@m)]                                
768.00/213.09	                                                                                                   
768.00/213.09	                                  [split#1(nil())] =  [0]                                          
768.00/213.09	                                                      [0]                                          
768.00/213.09	                                                   >= [0]                                          
768.00/213.09	                                                      [0]                                          
768.00/213.09	                                                   =  [tuple#2(nil(), nil())]                      
768.00/213.09	                                                                                                   
768.00/213.09	                            [split#1(::(@l, @ls))] =  [0 0] @l + [0 2] @ls + [4]                   
768.00/213.09	                                                      [0 1]      [1 0]       [0]                   
768.00/213.09	                                                   >= [0 0] @l + [0 0] @ls + [4]                   
768.00/213.09	                                                      [0 1]      [1 0]       [0]                   
768.00/213.09	                                                   =  [split#2(@l, @ls)]                           
768.00/213.09	                                                                                                   
768.00/213.09	                             [split#2(nil(), @ls)] =  [0 0] @ls + [4]                              
768.00/213.09	                                                      [1 0]       [0]                              
768.00/213.09	                                                   >  [0]                                          
768.00/213.09	                                                      [0]                                          
768.00/213.09	                                                   =  [tuple#2(nil(), nil())]                      
768.00/213.09	                                                                                                   
768.00/213.09	                       [split#2(::(@x, @xs), @ls)] =  [0 0] @xs + [0 0] @ls + [4]                  
768.00/213.09	                                                      [0 1]       [1 0]       [2]                  
768.00/213.09	                                                   >  [0 0] @xs + [0 0] @ls + [0]                  
768.00/213.09	                                                      [0 1]       [1 0]       [2]                  
768.00/213.09	                                                   =  [split#3(split(@ls), @x, @xs)]               
768.00/213.09	                                                                                                   
768.00/213.09	             [split#3(tuple#2(@ys, @m'), @x, @xs)] =  [0 0] @xs + [0 0] @m' + [0]                  
768.00/213.09	                                                      [0 1]       [1 1]       [2]                  
768.00/213.09	                                                   >= [0 0] @xs + [0 0] @m' + [0]                  
768.00/213.09	                                                      [0 1]       [1 1]       [2]                  
768.00/213.09	                                                   =  [tuple#2(::(@x, @ys), ::(@xs, @m'))]         
768.00/213.09	                                                                                                   
768.00/213.09	                                     [split^#(@m)] =  [0 1] @m + [0]                               
768.00/213.09	                                                      [0 4]      [0]                               
768.00/213.09	                                                   >= [0 1] @m + [0]                               
768.00/213.09	                                                      [0 0]      [0]                               
768.00/213.09	                                                   =  [c_5(split#1^#(@m))]                         
768.00/213.09	                                                                                                   
768.00/213.09	                          [split#1^#(::(@l, @ls))] =  [0 1] @ls + [2]                              
768.00/213.09	                                                      [0 4]       [8]                              
768.00/213.09	                                                   >  [0 1] @ls + [1]                              
768.00/213.09	                                                      [0 0]       [3]                              
768.00/213.09	                                                   =  [c_6(split#2^#(@l, @ls))]                    
768.00/213.09	                                                                                                   
768.00/213.09	                     [split#2^#(::(@x, @xs), @ls)] =  [0 0] @xs + [0 1] @ls + [0]                  
768.00/213.09	                                                      [0 4]       [0 4]       [8]                  
768.00/213.09	                                                   >= [0 1] @ls + [0]                              
768.00/213.09	                                                      [0 0]       [3]                              
768.00/213.09	                                                   =  [c_8(split^#(@ls))]                          
768.00/213.09	                                                                                                   
768.00/213.09	                                 [transpose^#(@m)] =  [1 1] @m + [0]                               
768.00/213.09	                                                      [4 4]      [0]                               
768.00/213.09	                                                   >= [1 1] @m + [0]                               
768.00/213.09	                                                      [0 0]      [0]                               
768.00/213.09	                                                   =  [c_9(transpose#1^#(@m, @m))]                 
768.00/213.09	                                                                                                   
768.00/213.09	                [transpose#1^#(::(@xs, @xss), @m)] =  [1 1] @m + [0]                               
768.00/213.09	                                                      [0 0]      [0]                               
768.00/213.09	                                                   >= [1 1] @m + [0]                               
768.00/213.09	                                                      [0 0]      [0]                               
768.00/213.09	                                                   =  [c_10(transpose#2^#(split(@m)), split^#(@m))]
768.00/213.09	                                                                                                   
768.00/213.09	                  [transpose#3^#(::(@y, @ys), @l)] =  [0 1] @y + [1 1] @ys + [2]                   
768.00/213.09	                                                      [0 4]      [4 0]       [0]                   
768.00/213.09	                                                   >= [0 1] @y + [1 1] @ys + [2]                   
768.00/213.09	                                                      [0 0]      [0 0]       [0]                   
768.00/213.09	                                                   =  [c_12(transpose^#(::(@y, @ys)))]             
768.00/213.09	                                                                                                   
768.00/213.09	                 [transpose#2^#(tuple#2(@l, @m'))] =  [1 1] @m' + [0]                              
768.00/213.09	                                                      [0 0]       [4]                              
768.00/213.09	                                                   >= [1 1] @m' + [0]                              
768.00/213.09	                                                      [0 0]       [3]                              
768.00/213.09	                                                   =  [c_14(transpose#3^#(@m', @l))]               
768.00/213.09	                                                                                                   
768.00/213.09	                       [matrixMultOld^#(@m1, @m2)] =  [7 7] @m2 + [7 7] @m1 + [7]                  
768.00/213.09	                                                      [7 7]       [7 7]       [7]                  
768.00/213.09	                                                   >  [1 1] @m2 + [3]                              
768.00/213.09	                                                      [0 0]       [7]                              
768.00/213.09	                                                   =  [c_15(transpose^#(@m2))]                     
768.00/213.09	                                                                                                   
768.00/213.09	         
768.00/213.09	         We return to the main proof. Consider the set of all dependency
768.00/213.09	         pairs
768.00/213.09	         
768.00/213.09	         :
768.00/213.09	           { 1: split^#(@m) -> c_5(split#1^#(@m))
768.00/213.09	           , 2: split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
768.00/213.09	           , 3: split#2^#(::(@x, @xs), @ls) -> c_8(split^#(@ls))
768.00/213.09	           , 4: transpose^#(@m) -> c_9(transpose#1^#(@m, @m))
768.00/213.09	           , 5: transpose#1^#(::(@xs, @xss), @m) ->
768.00/213.09	                c_10(transpose#2^#(split(@m)), split^#(@m))
768.00/213.09	           , 6: transpose#3^#(::(@y, @ys), @l) ->
768.00/213.09	                c_12(transpose^#(::(@y, @ys)))
768.00/213.09	           , 7: transpose#2^#(tuple#2(@l, @m')) ->
768.00/213.09	                c_14(transpose#3^#(@m', @l))
768.00/213.09	           , 8: matrixMultOld^#(@m1, @m2) -> c_15(transpose^#(@m2)) }
768.00/213.09	         
768.00/213.09	         Processor 'matrix interpretation of dimension 2' induces the
768.00/213.09	         complexity certificate YES(?,O(n^1)) on application of dependency
768.00/213.09	         pairs {2,8}. These cover all (indirect) predecessors of dependency
768.00/213.09	         pairs {2,3,8}, their number of application is equally bounded. The
768.00/213.09	         dependency pairs are shifted into the weak component.
768.00/213.09	         
768.00/213.09	         We are left with following problem, upon which TcT provides the
768.00/213.09	         certificate YES(O(1),O(n^1)).
768.00/213.09	         
768.00/213.09	         Strict DPs:
768.00/213.09	           { split^#(@m) -> c_5(split#1^#(@m))
768.00/213.09	           , transpose^#(@m) -> c_9(transpose#1^#(@m, @m))
768.00/213.09	           , transpose#1^#(::(@xs, @xss), @m) ->
768.00/213.09	             c_10(transpose#2^#(split(@m)), split^#(@m))
768.00/213.09	           , transpose#3^#(::(@y, @ys), @l) -> c_12(transpose^#(::(@y, @ys)))
768.00/213.09	           , transpose#2^#(tuple#2(@l, @m')) -> c_14(transpose#3^#(@m', @l)) }
768.00/213.09	         Weak DPs:
768.00/213.09	           { split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
768.00/213.09	           , split#2^#(::(@x, @xs), @ls) -> c_8(split^#(@ls))
768.00/213.09	           , matrixMultOld^#(@m1, @m2) -> c_15(transpose^#(@m2)) }
768.00/213.09	         Weak Trs:
768.00/213.09	           { split(@m) -> split#1(@m)
768.00/213.09	           , split#1(nil()) -> tuple#2(nil(), nil())
768.00/213.09	           , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.00/213.09	           , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.00/213.09	           , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.00/213.09	           , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.00/213.09	             tuple#2(::(@x, @ys), ::(@xs, @m')) }
768.00/213.09	         Obligation:
768.00/213.09	           innermost runtime complexity
768.00/213.09	         Answer:
768.00/213.09	           YES(O(1),O(n^1))
768.00/213.09	         
768.00/213.09	         We use the processor 'matrix interpretation of dimension 2' to
768.00/213.09	         orient following rules strictly.
768.00/213.09	         
768.00/213.09	         DPs:
768.00/213.09	           { 2: transpose^#(@m) -> c_9(transpose#1^#(@m, @m))
768.00/213.09	           , 7: split#2^#(::(@x, @xs), @ls) -> c_8(split^#(@ls))
768.00/213.09	           , 8: matrixMultOld^#(@m1, @m2) -> c_15(transpose^#(@m2)) }
768.00/213.09	         
768.00/213.09	         Sub-proof:
768.00/213.09	         ----------
768.00/213.09	           The following argument positions are usable:
768.00/213.09	             Uargs(c_5) = {1}, Uargs(c_6) = {1}, Uargs(c_8) = {1},
768.00/213.09	             Uargs(c_9) = {1}, Uargs(c_10) = {1, 2}, Uargs(c_12) = {1},
768.00/213.09	             Uargs(c_14) = {1}, Uargs(c_15) = {1}
768.00/213.09	           
768.00/213.09	           TcT has computed the following constructor-based matrix
768.00/213.09	           interpretation satisfying not(EDA) and not(IDA(1)).
768.00/213.09	           
768.00/213.09	                           [split](x1) = [0 0] x1 + [2]                      
768.00/213.09	                                         [1 0]      [0]                      
768.00/213.09	                                                                             
768.00/213.09	                                 [nil] = [0]                                 
768.00/213.09	                                         [0]                                 
768.00/213.09	                                                                             
768.00/213.09	                         [split#1](x1) = [0 0] x1 + [2]                      
768.00/213.09	                                         [1 0]      [0]                      
768.00/213.09	                                                                             
768.00/213.09	                     [split#2](x1, x2) = [0 0] x1 + [0 0] x2 + [2]           
768.00/213.09	                                         [1 0]      [1 0]      [4]           
768.00/213.09	                                                                             
768.00/213.09	                     [tuple#2](x1, x2) = [0 0] x2 + [2]                      
768.00/213.09	                                         [1 1]      [0]                      
768.00/213.09	                                                                             
768.00/213.09	                          [::](x1, x2) = [1 0] x1 + [1 0] x2 + [4]           
768.00/213.09	                                         [0 0]      [0 1]      [1]           
768.00/213.09	                                                                             
768.00/213.09	                 [split#3](x1, x2, x3) = [1 0] x1 + [0 0] x2 + [0 0] x3 + [0]
768.00/213.09	                                         [2 1]      [1 0]      [1 0]      [2]
768.00/213.09	                                                                             
768.00/213.09	                         [split^#](x1) = [0 1] x1 + [0]                      
768.00/213.09	                                         [4 4]      [0]                      
768.00/213.09	                                                                             
768.00/213.09	                       [split#1^#](x1) = [0 1] x1 + [0]                      
768.00/213.09	                                         [0 4]      [4]                      
768.00/213.09	                                                                             
768.00/213.09	                   [split#2^#](x1, x2) = [0 1] x2 + [1]                      
768.00/213.09	                                         [4 4]      [4]                      
768.00/213.09	                                                                             
768.00/213.09	                     [transpose^#](x1) = [3 2] x1 + [1]                      
768.00/213.09	                                         [0 0]      [0]                      
768.00/213.09	                                                                             
768.00/213.09	               [transpose#1^#](x1, x2) = [3 2] x2 + [0]                      
768.00/213.09	                                         [0 0]      [4]                      
768.00/213.09	                                                                             
768.00/213.09	               [transpose#3^#](x1, x2) = [3 3] x1 + [0]                      
768.00/213.09	                                         [0 0]      [0]                      
768.00/213.09	                                                                             
768.00/213.09	                   [transpose#2^#](x1) = [0 3] x1 + [0]                      
768.00/213.09	                                         [0 4]      [0]                      
768.00/213.09	                                                                             
768.00/213.09	             [matrixMultOld^#](x1, x2) = [7 7] x1 + [7 7] x2 + [7]           
768.00/213.09	                                         [7 7]      [7 7]      [7]           
768.00/213.09	                                                                             
768.00/213.09	                             [c_5](x1) = [1 0] x1 + [0]                      
768.00/213.09	                                         [0 0]      [0]                      
768.00/213.09	                                                                             
768.00/213.09	                             [c_6](x1) = [1 0] x1 + [0]                      
768.00/213.09	                                         [0 0]      [3]                      
768.00/213.09	                                                                             
768.00/213.09	                             [c_8](x1) = [1 0] x1 + [0]                      
768.00/213.09	                                         [0 0]      [3]                      
768.00/213.09	                                                                             
768.00/213.09	                             [c_9](x1) = [1 0] x1 + [0]                      
768.00/213.09	                                         [0 0]      [0]                      
768.00/213.09	                                                                             
768.00/213.09	                        [c_10](x1, x2) = [1 0] x1 + [2 0] x2 + [0]           
768.00/213.09	                                         [0 0]      [0 0]      [3]           
768.00/213.09	                                                                             
768.00/213.09	                            [c_12](x1) = [1 0] x1 + [0]                      
768.00/213.09	                                         [0 0]      [0]                      
768.00/213.09	                                                                             
768.00/213.09	                            [c_14](x1) = [1 0] x1 + [0]                      
768.00/213.09	                                         [0 0]      [0]                      
768.00/213.09	                                                                             
768.00/213.09	                            [c_15](x1) = [1 0] x1 + [3]                      
768.00/213.09	                                         [0 0]      [7]                      
768.00/213.09	           
768.00/213.09	           The order satisfies the following ordering constraints:
768.00/213.09	           
768.00/213.09	                                       [split(@m)] =  [0 0] @m + [2]                               
768.00/213.09	                                                      [1 0]      [0]                               
768.00/213.09	                                                   >= [0 0] @m + [2]                               
768.00/213.09	                                                      [1 0]      [0]                               
768.00/213.09	                                                   =  [split#1(@m)]                                
768.00/213.09	                                                                                                   
768.00/213.09	                                  [split#1(nil())] =  [2]                                          
768.00/213.09	                                                      [0]                                          
768.00/213.09	                                                   >= [2]                                          
768.00/213.09	                                                      [0]                                          
768.00/213.09	                                                   =  [tuple#2(nil(), nil())]                      
768.00/213.09	                                                                                                   
768.00/213.09	                            [split#1(::(@l, @ls))] =  [0 0] @l + [0 0] @ls + [2]                   
768.00/213.09	                                                      [1 0]      [1 0]       [4]                   
768.00/213.09	                                                   >= [0 0] @l + [0 0] @ls + [2]                   
768.00/213.09	                                                      [1 0]      [1 0]       [4]                   
768.00/213.09	                                                   =  [split#2(@l, @ls)]                           
768.00/213.09	                                                                                                   
768.00/213.09	                             [split#2(nil(), @ls)] =  [0 0] @ls + [2]                              
768.00/213.09	                                                      [1 0]       [4]                              
768.00/213.09	                                                   >= [2]                                          
768.00/213.09	                                                      [0]                                          
768.00/213.09	                                                   =  [tuple#2(nil(), nil())]                      
768.00/213.09	                                                                                                   
768.00/213.09	                       [split#2(::(@x, @xs), @ls)] =  [0 0] @x + [0 0] @xs + [0 0] @ls + [2]       
768.00/213.09	                                                      [1 0]      [1 0]       [1 0]       [8]       
768.00/213.09	                                                   >= [0 0] @x + [0 0] @xs + [0 0] @ls + [2]       
768.00/213.09	                                                      [1 0]      [1 0]       [1 0]       [6]       
768.00/213.09	                                                   =  [split#3(split(@ls), @x, @xs)]               
768.00/213.09	                                                                                                   
768.00/213.09	             [split#3(tuple#2(@ys, @m'), @x, @xs)] =  [0 0] @x + [0 0] @xs + [0 0] @m' + [2]       
768.00/213.09	                                                      [1 0]      [1 0]       [1 1]       [6]       
768.00/213.09	                                                   >= [0 0] @xs + [0 0] @m' + [2]                  
768.00/213.09	                                                      [1 0]       [1 1]       [5]                  
768.00/213.09	                                                   =  [tuple#2(::(@x, @ys), ::(@xs, @m'))]         
768.00/213.09	                                                                                                   
768.00/213.09	                                     [split^#(@m)] =  [0 1] @m + [0]                               
768.00/213.09	                                                      [4 4]      [0]                               
768.00/213.09	                                                   >= [0 1] @m + [0]                               
768.00/213.09	                                                      [0 0]      [0]                               
768.00/213.09	                                                   =  [c_5(split#1^#(@m))]                         
768.00/213.09	                                                                                                   
768.00/213.09	                          [split#1^#(::(@l, @ls))] =  [0 1] @ls + [1]                              
768.00/213.09	                                                      [0 4]       [8]                              
768.00/213.09	                                                   >= [0 1] @ls + [1]                              
768.00/213.09	                                                      [0 0]       [3]                              
768.00/213.09	                                                   =  [c_6(split#2^#(@l, @ls))]                    
768.00/213.09	                                                                                                   
768.00/213.09	                     [split#2^#(::(@x, @xs), @ls)] =  [0 1] @ls + [1]                              
768.00/213.09	                                                      [4 4]       [4]                              
768.00/213.09	                                                   >  [0 1] @ls + [0]                              
768.00/213.09	                                                      [0 0]       [3]                              
768.00/213.09	                                                   =  [c_8(split^#(@ls))]                          
768.00/213.09	                                                                                                   
768.00/213.09	                                 [transpose^#(@m)] =  [3 2] @m + [1]                               
768.00/213.09	                                                      [0 0]      [0]                               
768.00/213.09	                                                   >  [3 2] @m + [0]                               
768.00/213.09	                                                      [0 0]      [0]                               
768.00/213.09	                                                   =  [c_9(transpose#1^#(@m, @m))]                 
768.00/213.09	                                                                                                   
768.00/213.09	                [transpose#1^#(::(@xs, @xss), @m)] =  [3 2] @m + [0]                               
768.00/213.09	                                                      [0 0]      [4]                               
768.00/213.09	                                                   >= [3 2] @m + [0]                               
768.00/213.09	                                                      [0 0]      [3]                               
768.00/213.09	                                                   =  [c_10(transpose#2^#(split(@m)), split^#(@m))]
768.00/213.09	                                                                                                   
768.00/213.09	                  [transpose#3^#(::(@y, @ys), @l)] =  [3 0] @y + [3 3] @ys + [15]                  
768.00/213.09	                                                      [0 0]      [0 0]       [0]                   
768.00/213.09	                                                   >= [3 0] @y + [3 2] @ys + [15]                  
768.00/213.09	                                                      [0 0]      [0 0]       [0]                   
768.00/213.09	                                                   =  [c_12(transpose^#(::(@y, @ys)))]             
768.00/213.09	                                                                                                   
768.00/213.09	                 [transpose#2^#(tuple#2(@l, @m'))] =  [3 3] @m' + [0]                              
768.00/213.09	                                                      [4 4]       [0]                              
768.00/213.09	                                                   >= [3 3] @m' + [0]                              
768.00/213.09	                                                      [0 0]       [0]                              
768.00/213.09	                                                   =  [c_14(transpose#3^#(@m', @l))]               
768.00/213.09	                                                                                                   
768.00/213.09	                       [matrixMultOld^#(@m1, @m2)] =  [7 7] @m2 + [7 7] @m1 + [7]                  
768.00/213.09	                                                      [7 7]       [7 7]       [7]                  
768.00/213.09	                                                   >  [3 2] @m2 + [4]                              
768.00/213.09	                                                      [0 0]       [7]                              
768.00/213.09	                                                   =  [c_15(transpose^#(@m2))]                     
768.00/213.09	                                                                                                   
768.00/213.09	         
768.00/213.09	         We return to the main proof. Consider the set of all dependency
768.00/213.09	         pairs
768.00/213.09	         
768.00/213.09	         :
768.00/213.09	           { 1: split^#(@m) -> c_5(split#1^#(@m))
768.00/213.09	           , 2: transpose^#(@m) -> c_9(transpose#1^#(@m, @m))
768.00/213.09	           , 3: transpose#1^#(::(@xs, @xss), @m) ->
768.00/213.09	                c_10(transpose#2^#(split(@m)), split^#(@m))
768.00/213.09	           , 4: transpose#3^#(::(@y, @ys), @l) ->
768.00/213.09	                c_12(transpose^#(::(@y, @ys)))
768.00/213.09	           , 5: transpose#2^#(tuple#2(@l, @m')) ->
768.00/213.09	                c_14(transpose#3^#(@m', @l))
768.00/213.09	           , 6: split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
768.00/213.09	           , 7: split#2^#(::(@x, @xs), @ls) -> c_8(split^#(@ls))
768.00/213.09	           , 8: matrixMultOld^#(@m1, @m2) -> c_15(transpose^#(@m2)) }
768.24/213.10	         
768.24/213.10	         Processor 'matrix interpretation of dimension 2' induces the
768.24/213.10	         complexity certificate YES(?,O(n^1)) on application of dependency
768.24/213.10	         pairs {2,7,8}. These cover all (indirect) predecessors of
768.24/213.10	         dependency pairs {1,2,3,4,5,6,7,8}, their number of application is
768.24/213.10	         equally bounded. The dependency pairs are shifted into the weak
768.24/213.10	         component.
768.24/213.10	         
768.24/213.10	         We are left with following problem, upon which TcT provides the
768.24/213.10	         certificate YES(O(1),O(1)).
768.24/213.10	         
768.24/213.10	         Weak DPs:
768.24/213.10	           { split^#(@m) -> c_5(split#1^#(@m))
768.24/213.10	           , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
768.24/213.10	           , split#2^#(::(@x, @xs), @ls) -> c_8(split^#(@ls))
768.24/213.10	           , transpose^#(@m) -> c_9(transpose#1^#(@m, @m))
768.24/213.10	           , transpose#1^#(::(@xs, @xss), @m) ->
768.24/213.10	             c_10(transpose#2^#(split(@m)), split^#(@m))
768.24/213.10	           , transpose#3^#(::(@y, @ys), @l) -> c_12(transpose^#(::(@y, @ys)))
768.24/213.10	           , transpose#2^#(tuple#2(@l, @m')) -> c_14(transpose#3^#(@m', @l))
768.24/213.10	           , matrixMultOld^#(@m1, @m2) -> c_15(transpose^#(@m2)) }
768.24/213.10	         Weak Trs:
768.24/213.10	           { split(@m) -> split#1(@m)
768.24/213.10	           , split#1(nil()) -> tuple#2(nil(), nil())
768.24/213.10	           , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.24/213.10	           , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.24/213.10	           , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.24/213.10	           , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.24/213.10	             tuple#2(::(@x, @ys), ::(@xs, @m')) }
768.24/213.10	         Obligation:
768.24/213.10	           innermost runtime complexity
768.24/213.10	         Answer:
768.24/213.10	           YES(O(1),O(1))
768.24/213.10	         
768.24/213.10	         The following weak DPs constitute a sub-graph of the DG that is
768.24/213.10	         closed under successors. The DPs are removed.
768.24/213.10	         
768.24/213.10	         { split^#(@m) -> c_5(split#1^#(@m))
768.24/213.10	         , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
768.24/213.10	         , split#2^#(::(@x, @xs), @ls) -> c_8(split^#(@ls))
768.24/213.10	         , transpose^#(@m) -> c_9(transpose#1^#(@m, @m))
768.24/213.10	         , transpose#1^#(::(@xs, @xss), @m) ->
768.24/213.10	           c_10(transpose#2^#(split(@m)), split^#(@m))
768.24/213.10	         , transpose#3^#(::(@y, @ys), @l) -> c_12(transpose^#(::(@y, @ys)))
768.24/213.10	         , transpose#2^#(tuple#2(@l, @m')) -> c_14(transpose#3^#(@m', @l))
768.24/213.10	         , matrixMultOld^#(@m1, @m2) -> c_15(transpose^#(@m2)) }
768.24/213.10	         
768.24/213.10	         We are left with following problem, upon which TcT provides the
768.24/213.10	         certificate YES(O(1),O(1)).
768.24/213.10	         
768.24/213.10	         Weak Trs:
768.24/213.10	           { split(@m) -> split#1(@m)
768.24/213.10	           , split#1(nil()) -> tuple#2(nil(), nil())
768.24/213.10	           , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.24/213.10	           , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.24/213.10	           , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.24/213.10	           , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.24/213.10	             tuple#2(::(@x, @ys), ::(@xs, @m')) }
768.24/213.10	         Obligation:
768.24/213.10	           innermost runtime complexity
768.24/213.10	         Answer:
768.24/213.10	           YES(O(1),O(1))
768.24/213.10	         
768.24/213.10	         No rule is usable, rules are removed from the input problem.
768.24/213.10	         
768.24/213.10	         We are left with following problem, upon which TcT provides the
768.24/213.10	         certificate YES(O(1),O(1)).
768.24/213.10	         
768.24/213.10	         Rules: Empty
768.24/213.10	         Obligation:
768.24/213.10	           innermost runtime complexity
768.24/213.10	         Answer:
768.24/213.10	           YES(O(1),O(1))
768.24/213.10	         
768.24/213.10	         Empty rules are trivially bounded
768.24/213.10	      
768.24/213.10	      S) We are left with following problem, upon which TcT provides the
768.24/213.10	         certificate YES(O(1),O(n^1)).
768.24/213.10	         
768.24/213.10	         Strict DPs:
768.24/213.10	           { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.24/213.10	           , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.24/213.10	             c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.24/213.10	                 matrixMult^#(@acc, @m))
768.24/213.10	           , attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.24/213.10	           , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.24/213.10	           , transAcc^#(@m, @base) -> c_7(transAcc#1^#(@m, @base))
768.24/213.10	           , transAcc#1^#(::(@l, @m'), @base) ->
768.24/213.10	             c_11(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.24/213.10	           , attach#2^#(::(@l, @ls), @x, @xs) -> c_13(attach^#(@xs, @ls)) }
768.24/213.10	         Weak DPs:
768.24/213.10	           { split^#(@m) -> c_5(split#1^#(@m))
768.24/213.10	           , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
768.24/213.10	           , matrixMult3^#(@m1, @m2, @m3) ->
768.24/213.10	             c_16(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.24/213.10	                  matrixMult^#(@m1, @m2))
768.24/213.10	           , matrixMult^#(@m1, @m2) -> c_17(transAcc^#(@m2, makeBase(@m2)))
768.24/213.10	           , transpose'^#(@m) -> c_18(transAcc^#(@m, makeBase(@m)))
768.24/213.10	           , split#2^#(::(@x, @xs), @ls) -> c_8(split^#(@ls))
768.24/213.10	           , transpose^#(@m) -> c_9(transpose#1^#(@m, @m))
768.24/213.10	           , transpose#1^#(::(@xs, @xss), @m) ->
768.24/213.10	             c_10(transpose#2^#(split(@m)), split^#(@m))
768.24/213.10	           , transpose#3^#(::(@y, @ys), @l) -> c_12(transpose^#(::(@y, @ys)))
768.24/213.10	           , transpose#2^#(tuple#2(@l, @m')) -> c_14(transpose#3^#(@m', @l))
768.24/213.10	           , matrixMultOld^#(@m1, @m2) -> c_15(transpose^#(@m2)) }
768.24/213.10	         Weak Trs:
768.24/213.10	           { attach(@line, @m) -> attach#1(@line, @m)
768.24/213.10	           , split(@m) -> split#1(@m)
768.24/213.10	           , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.24/213.10	           , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.24/213.10	           , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.24/213.10	           , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.24/213.10	           , #add(#0(), @y) -> @y
768.24/213.10	           , mult#2(nil(), @x, @xs) -> #abs(#0())
768.24/213.10	           , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.24/213.10	           , split#1(nil()) -> tuple#2(nil(), nil())
768.24/213.10	           , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.24/213.10	           , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.24/213.10	           , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.24/213.10	           , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.24/213.10	           , +(@x, @y) -> #add(@x, @y)
768.24/213.10	           , transAcc#1(nil(), @base) -> @base
768.24/213.10	           , transAcc#1(::(@l, @m'), @base) ->
768.24/213.10	             attach(@l, transAcc(@m', @base))
768.24/213.10	           , *(@x, @y) -> #mult(@x, @y)
768.24/213.10	           , mkBase#1(nil()) -> nil()
768.24/213.10	           , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.24/213.10	           , attach#1(nil(), @m) -> nil()
768.24/213.10	           , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.24/213.10	           , matrixMult'#1(nil(), @m2) -> nil()
768.24/213.10	           , matrixMult'#1(::(@l, @ls), @m2) ->
768.24/213.10	             ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.24/213.10	           , #natmult(#0(), @y) -> #0()
768.24/213.10	           , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.24/213.10	           , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.24/213.10	           , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.24/213.10	           , mkBase(@m) -> mkBase#1(@m)
768.24/213.10	           , makeBase(@m) -> makeBase#1(@m)
768.24/213.10	           , mult#1(nil(), @l2) -> #abs(#0())
768.24/213.10	           , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.24/213.10	           , lineMult#1(nil(), @l) -> nil()
768.24/213.10	           , lineMult#1(::(@x, @xs), @l) ->
768.24/213.10	             ::(mult(@l, @x), lineMult(@l, @xs))
768.24/213.10	           , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.24/213.10	           , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.24/213.10	           , #mult(#neg(@x), #0()) -> #0()
768.24/213.10	           , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.24/213.10	           , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.24/213.10	           , #mult(#pos(@x), #0()) -> #0()
768.24/213.10	           , #mult(#0(), #neg(@y)) -> #0()
768.24/213.10	           , #mult(#0(), #pos(@y)) -> #0()
768.24/213.10	           , #mult(#0(), #0()) -> #0()
768.24/213.10	           , attach#2(nil(), @x, @xs) -> nil()
768.24/213.10	           , attach#2(::(@l, @ls), @x, @xs) ->
768.24/213.10	             ::(::(@x, @l), attach(@xs, @ls))
768.24/213.10	           , #succ(#neg(#s(#0()))) -> #0()
768.24/213.10	           , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.24/213.10	           , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.24/213.10	           , #succ(#0()) -> #pos(#s(#0()))
768.24/213.10	           , makeBase#1(nil()) -> nil()
768.24/213.10	           , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.24/213.10	           , matrixMult(@m1, @m2) ->
768.24/213.10	             matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.24/213.10	           , #abs(#neg(@x)) -> #pos(@x)
768.24/213.10	           , #abs(#pos(@x)) -> #pos(@x)
768.24/213.10	           , #abs(#0()) -> #0()
768.24/213.10	           , #abs(#s(@x)) -> #pos(#s(@x))
768.24/213.10	           , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.24/213.10	           , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.24/213.10	             tuple#2(::(@x, @ys), ::(@xs, @m'))
768.24/213.10	           , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.24/213.10	           , #pred(#pos(#s(#0()))) -> #0()
768.24/213.10	           , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.24/213.10	           , #pred(#0()) -> #neg(#s(#0())) }
768.24/213.10	         Obligation:
768.24/213.10	           innermost runtime complexity
768.24/213.10	         Answer:
768.24/213.10	           YES(O(1),O(n^1))
768.24/213.10	         
768.24/213.10	         The following weak DPs constitute a sub-graph of the DG that is
768.24/213.10	         closed under successors. The DPs are removed.
768.24/213.10	         
768.24/213.10	         { split^#(@m) -> c_5(split#1^#(@m))
768.24/213.10	         , split#1^#(::(@l, @ls)) -> c_6(split#2^#(@l, @ls))
768.24/213.10	         , split#2^#(::(@x, @xs), @ls) -> c_8(split^#(@ls))
768.24/213.10	         , transpose^#(@m) -> c_9(transpose#1^#(@m, @m))
768.24/213.10	         , transpose#1^#(::(@xs, @xss), @m) ->
768.24/213.10	           c_10(transpose#2^#(split(@m)), split^#(@m))
768.24/213.10	         , transpose#3^#(::(@y, @ys), @l) -> c_12(transpose^#(::(@y, @ys)))
768.24/213.10	         , transpose#2^#(tuple#2(@l, @m')) -> c_14(transpose#3^#(@m', @l))
768.24/213.10	         , matrixMultOld^#(@m1, @m2) -> c_15(transpose^#(@m2)) }
768.24/213.10	         
768.24/213.10	         We are left with following problem, upon which TcT provides the
768.24/213.10	         certificate YES(O(1),O(n^1)).
768.24/213.10	         
768.24/213.10	         Strict DPs:
768.24/213.10	           { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.24/213.10	           , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.24/213.10	             c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.24/213.10	                 matrixMult^#(@acc, @m))
768.24/213.10	           , attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.24/213.10	           , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.24/213.10	           , transAcc^#(@m, @base) -> c_7(transAcc#1^#(@m, @base))
768.24/213.10	           , transAcc#1^#(::(@l, @m'), @base) ->
768.24/213.10	             c_11(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.24/213.10	           , attach#2^#(::(@l, @ls), @x, @xs) -> c_13(attach^#(@xs, @ls)) }
768.24/213.10	         Weak DPs:
768.24/213.10	           { matrixMult3^#(@m1, @m2, @m3) ->
768.24/213.10	             c_16(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.24/213.10	                  matrixMult^#(@m1, @m2))
768.24/213.10	           , matrixMult^#(@m1, @m2) -> c_17(transAcc^#(@m2, makeBase(@m2)))
768.24/213.10	           , transpose'^#(@m) -> c_18(transAcc^#(@m, makeBase(@m))) }
768.24/213.10	         Weak Trs:
768.24/213.10	           { attach(@line, @m) -> attach#1(@line, @m)
768.24/213.10	           , split(@m) -> split#1(@m)
768.24/213.10	           , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.24/213.10	           , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.24/213.10	           , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.24/213.10	           , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.24/213.10	           , #add(#0(), @y) -> @y
768.24/213.10	           , mult#2(nil(), @x, @xs) -> #abs(#0())
768.24/213.10	           , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.24/213.10	           , split#1(nil()) -> tuple#2(nil(), nil())
768.24/213.10	           , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.24/213.10	           , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.24/213.10	           , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.24/213.10	           , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.24/213.10	           , +(@x, @y) -> #add(@x, @y)
768.24/213.10	           , transAcc#1(nil(), @base) -> @base
768.24/213.10	           , transAcc#1(::(@l, @m'), @base) ->
768.24/213.10	             attach(@l, transAcc(@m', @base))
768.24/213.10	           , *(@x, @y) -> #mult(@x, @y)
768.24/213.10	           , mkBase#1(nil()) -> nil()
768.24/213.10	           , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.24/213.10	           , attach#1(nil(), @m) -> nil()
768.24/213.10	           , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.24/213.10	           , matrixMult'#1(nil(), @m2) -> nil()
768.24/213.10	           , matrixMult'#1(::(@l, @ls), @m2) ->
768.24/213.10	             ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.24/213.10	           , #natmult(#0(), @y) -> #0()
768.24/213.10	           , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.24/213.10	           , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.24/213.10	           , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.24/213.10	           , mkBase(@m) -> mkBase#1(@m)
768.24/213.10	           , makeBase(@m) -> makeBase#1(@m)
768.24/213.10	           , mult#1(nil(), @l2) -> #abs(#0())
768.24/213.10	           , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.24/213.10	           , lineMult#1(nil(), @l) -> nil()
768.24/213.10	           , lineMult#1(::(@x, @xs), @l) ->
768.24/213.10	             ::(mult(@l, @x), lineMult(@l, @xs))
768.24/213.10	           , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.24/213.10	           , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.24/213.10	           , #mult(#neg(@x), #0()) -> #0()
768.24/213.10	           , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.24/213.10	           , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.24/213.10	           , #mult(#pos(@x), #0()) -> #0()
768.24/213.10	           , #mult(#0(), #neg(@y)) -> #0()
768.24/213.10	           , #mult(#0(), #pos(@y)) -> #0()
768.24/213.10	           , #mult(#0(), #0()) -> #0()
768.24/213.10	           , attach#2(nil(), @x, @xs) -> nil()
768.24/213.10	           , attach#2(::(@l, @ls), @x, @xs) ->
768.24/213.10	             ::(::(@x, @l), attach(@xs, @ls))
768.24/213.10	           , #succ(#neg(#s(#0()))) -> #0()
768.24/213.10	           , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.24/213.10	           , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.24/213.10	           , #succ(#0()) -> #pos(#s(#0()))
768.24/213.10	           , makeBase#1(nil()) -> nil()
768.24/213.10	           , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.24/213.10	           , matrixMult(@m1, @m2) ->
768.24/213.10	             matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.24/213.10	           , #abs(#neg(@x)) -> #pos(@x)
768.24/213.10	           , #abs(#pos(@x)) -> #pos(@x)
768.24/213.10	           , #abs(#0()) -> #0()
768.24/213.10	           , #abs(#s(@x)) -> #pos(#s(@x))
768.24/213.10	           , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.24/213.10	           , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.24/213.10	             tuple#2(::(@x, @ys), ::(@xs, @m'))
768.24/213.10	           , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.24/213.10	           , #pred(#pos(#s(#0()))) -> #0()
768.24/213.10	           , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.24/213.10	           , #pred(#0()) -> #neg(#s(#0())) }
768.24/213.10	         Obligation:
768.24/213.10	           innermost runtime complexity
768.24/213.10	         Answer:
768.24/213.10	           YES(O(1),O(n^1))
768.24/213.10	         
768.24/213.10	         We analyse the complexity of following sub-problems (R) and (S).
768.24/213.10	         Problem (S) is obtained from the input problem by shifting strict
768.24/213.10	         rules from (R) into the weak component:
768.24/213.10	         
768.24/213.10	         Problem (R):
768.24/213.10	         ------------
768.24/213.10	           Strict DPs:
768.24/213.10	             { attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.24/213.10	             , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.24/213.10	             , transAcc^#(@m, @base) -> c_7(transAcc#1^#(@m, @base))
768.24/213.10	             , transAcc#1^#(::(@l, @m'), @base) ->
768.24/213.10	               c_11(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.24/213.10	             , attach#2^#(::(@l, @ls), @x, @xs) -> c_13(attach^#(@xs, @ls)) }
768.24/213.10	           Weak DPs:
768.24/213.10	             { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.24/213.10	             , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.24/213.10	               c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.24/213.10	                   matrixMult^#(@acc, @m))
768.24/213.10	             , matrixMult3^#(@m1, @m2, @m3) ->
768.24/213.10	               c_16(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.24/213.10	                    matrixMult^#(@m1, @m2))
768.24/213.10	             , matrixMult^#(@m1, @m2) -> c_17(transAcc^#(@m2, makeBase(@m2)))
768.24/213.10	             , transpose'^#(@m) -> c_18(transAcc^#(@m, makeBase(@m))) }
768.24/213.10	           Weak Trs:
768.24/213.10	             { attach(@line, @m) -> attach#1(@line, @m)
768.24/213.10	             , split(@m) -> split#1(@m)
768.24/213.10	             , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.24/213.10	             , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.24/213.10	             , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.24/213.10	             , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.24/213.10	             , #add(#0(), @y) -> @y
768.24/213.10	             , mult#2(nil(), @x, @xs) -> #abs(#0())
768.24/213.10	             , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.24/213.10	             , split#1(nil()) -> tuple#2(nil(), nil())
768.24/213.10	             , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.24/213.10	             , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.24/213.10	             , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.24/213.10	             , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.24/213.10	             , +(@x, @y) -> #add(@x, @y)
768.24/213.10	             , transAcc#1(nil(), @base) -> @base
768.24/213.10	             , transAcc#1(::(@l, @m'), @base) ->
768.24/213.10	               attach(@l, transAcc(@m', @base))
768.24/213.10	             , *(@x, @y) -> #mult(@x, @y)
768.24/213.10	             , mkBase#1(nil()) -> nil()
768.24/213.11	             , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.24/213.11	             , attach#1(nil(), @m) -> nil()
768.24/213.11	             , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.24/213.11	             , matrixMult'#1(nil(), @m2) -> nil()
768.24/213.11	             , matrixMult'#1(::(@l, @ls), @m2) ->
768.24/213.11	               ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.24/213.11	             , #natmult(#0(), @y) -> #0()
768.24/213.11	             , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.24/213.11	             , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.24/213.11	             , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.24/213.11	             , mkBase(@m) -> mkBase#1(@m)
768.24/213.11	             , makeBase(@m) -> makeBase#1(@m)
768.24/213.11	             , mult#1(nil(), @l2) -> #abs(#0())
768.24/213.11	             , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.24/213.11	             , lineMult#1(nil(), @l) -> nil()
768.24/213.11	             , lineMult#1(::(@x, @xs), @l) ->
768.24/213.11	               ::(mult(@l, @x), lineMult(@l, @xs))
768.24/213.11	             , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.24/213.11	             , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.24/213.11	             , #mult(#neg(@x), #0()) -> #0()
768.24/213.11	             , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.24/213.11	             , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.24/213.11	             , #mult(#pos(@x), #0()) -> #0()
768.24/213.11	             , #mult(#0(), #neg(@y)) -> #0()
768.24/213.11	             , #mult(#0(), #pos(@y)) -> #0()
768.24/213.11	             , #mult(#0(), #0()) -> #0()
768.24/213.11	             , attach#2(nil(), @x, @xs) -> nil()
768.24/213.11	             , attach#2(::(@l, @ls), @x, @xs) ->
768.24/213.11	               ::(::(@x, @l), attach(@xs, @ls))
768.24/213.11	             , #succ(#neg(#s(#0()))) -> #0()
768.24/213.11	             , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.24/213.11	             , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.24/213.11	             , #succ(#0()) -> #pos(#s(#0()))
768.24/213.11	             , makeBase#1(nil()) -> nil()
768.24/213.11	             , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.24/213.11	             , matrixMult(@m1, @m2) ->
768.24/213.11	               matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.24/213.11	             , #abs(#neg(@x)) -> #pos(@x)
768.24/213.11	             , #abs(#pos(@x)) -> #pos(@x)
768.24/213.11	             , #abs(#0()) -> #0()
768.24/213.11	             , #abs(#s(@x)) -> #pos(#s(@x))
768.24/213.11	             , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.24/213.11	             , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.24/213.11	               tuple#2(::(@x, @ys), ::(@xs, @m'))
768.24/213.11	             , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.24/213.11	             , #pred(#pos(#s(#0()))) -> #0()
768.24/213.11	             , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.24/213.11	             , #pred(#0()) -> #neg(#s(#0())) }
768.24/213.11	           StartTerms: basic terms
768.24/213.11	           Strategy: innermost
768.24/213.11	         
768.24/213.11	         Problem (S):
768.24/213.11	         ------------
768.24/213.11	           Strict DPs:
768.24/213.11	             { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.24/213.11	             , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.24/213.11	               c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.24/213.11	                   matrixMult^#(@acc, @m)) }
768.24/213.11	           Weak DPs:
768.24/213.11	             { attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.24/213.11	             , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.24/213.11	             , matrixMult3^#(@m1, @m2, @m3) ->
768.24/213.11	               c_16(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.24/213.11	                    matrixMult^#(@m1, @m2))
768.24/213.11	             , matrixMult^#(@m1, @m2) -> c_17(transAcc^#(@m2, makeBase(@m2)))
768.24/213.11	             , transpose'^#(@m) -> c_18(transAcc^#(@m, makeBase(@m)))
768.24/213.11	             , transAcc^#(@m, @base) -> c_7(transAcc#1^#(@m, @base))
768.24/213.11	             , transAcc#1^#(::(@l, @m'), @base) ->
768.24/213.11	               c_11(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.24/213.11	             , attach#2^#(::(@l, @ls), @x, @xs) -> c_13(attach^#(@xs, @ls)) }
768.24/213.11	           Weak Trs:
768.24/213.11	             { attach(@line, @m) -> attach#1(@line, @m)
768.24/213.11	             , split(@m) -> split#1(@m)
768.24/213.11	             , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.24/213.11	             , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.24/213.11	             , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.24/213.11	             , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.24/213.11	             , #add(#0(), @y) -> @y
768.24/213.11	             , mult#2(nil(), @x, @xs) -> #abs(#0())
768.24/213.11	             , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.24/213.11	             , split#1(nil()) -> tuple#2(nil(), nil())
768.24/213.11	             , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.24/213.11	             , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.24/213.11	             , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.24/213.11	             , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.24/213.11	             , +(@x, @y) -> #add(@x, @y)
768.24/213.11	             , transAcc#1(nil(), @base) -> @base
768.24/213.11	             , transAcc#1(::(@l, @m'), @base) ->
768.24/213.11	               attach(@l, transAcc(@m', @base))
768.24/213.11	             , *(@x, @y) -> #mult(@x, @y)
768.24/213.11	             , mkBase#1(nil()) -> nil()
768.24/213.11	             , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.24/213.11	             , attach#1(nil(), @m) -> nil()
768.24/213.11	             , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.24/213.11	             , matrixMult'#1(nil(), @m2) -> nil()
768.24/213.11	             , matrixMult'#1(::(@l, @ls), @m2) ->
768.24/213.11	               ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.24/213.11	             , #natmult(#0(), @y) -> #0()
768.24/213.11	             , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.24/213.11	             , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.24/213.11	             , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.24/213.11	             , mkBase(@m) -> mkBase#1(@m)
768.24/213.11	             , makeBase(@m) -> makeBase#1(@m)
768.24/213.11	             , mult#1(nil(), @l2) -> #abs(#0())
768.24/213.11	             , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.24/213.11	             , lineMult#1(nil(), @l) -> nil()
768.24/213.11	             , lineMult#1(::(@x, @xs), @l) ->
768.24/213.11	               ::(mult(@l, @x), lineMult(@l, @xs))
768.24/213.11	             , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.24/213.11	             , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.24/213.11	             , #mult(#neg(@x), #0()) -> #0()
768.24/213.11	             , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.24/213.11	             , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.24/213.11	             , #mult(#pos(@x), #0()) -> #0()
768.24/213.11	             , #mult(#0(), #neg(@y)) -> #0()
768.24/213.11	             , #mult(#0(), #pos(@y)) -> #0()
768.24/213.11	             , #mult(#0(), #0()) -> #0()
768.24/213.11	             , attach#2(nil(), @x, @xs) -> nil()
768.24/213.11	             , attach#2(::(@l, @ls), @x, @xs) ->
768.24/213.11	               ::(::(@x, @l), attach(@xs, @ls))
768.24/213.11	             , #succ(#neg(#s(#0()))) -> #0()
768.24/213.11	             , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.24/213.11	             , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.24/213.11	             , #succ(#0()) -> #pos(#s(#0()))
768.24/213.11	             , makeBase#1(nil()) -> nil()
768.24/213.11	             , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.24/213.11	             , matrixMult(@m1, @m2) ->
768.24/213.11	               matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.24/213.11	             , #abs(#neg(@x)) -> #pos(@x)
768.24/213.11	             , #abs(#pos(@x)) -> #pos(@x)
768.24/213.11	             , #abs(#0()) -> #0()
768.24/213.11	             , #abs(#s(@x)) -> #pos(#s(@x))
768.24/213.11	             , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.24/213.11	             , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.24/213.11	               tuple#2(::(@x, @ys), ::(@xs, @m'))
768.24/213.11	             , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.24/213.11	             , #pred(#pos(#s(#0()))) -> #0()
768.24/213.11	             , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.24/213.11	             , #pred(#0()) -> #neg(#s(#0())) }
768.24/213.11	           StartTerms: basic terms
768.24/213.11	           Strategy: innermost
768.24/213.11	         
768.24/213.11	         Overall, the transformation results in the following sub-problem(s):
768.24/213.11	         
768.24/213.11	         Generated new problems:
768.24/213.11	         -----------------------
768.24/213.11	         R) Strict DPs:
768.24/213.11	              { attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.24/213.11	              , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.24/213.11	              , transAcc^#(@m, @base) -> c_7(transAcc#1^#(@m, @base))
768.24/213.11	              , transAcc#1^#(::(@l, @m'), @base) ->
768.24/213.11	                c_11(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.24/213.11	              , attach#2^#(::(@l, @ls), @x, @xs) -> c_13(attach^#(@xs, @ls)) }
768.24/213.11	            Weak DPs:
768.24/213.11	              { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.24/213.11	              , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.24/213.11	                c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.24/213.11	                    matrixMult^#(@acc, @m))
768.24/213.11	              , matrixMult3^#(@m1, @m2, @m3) ->
768.24/213.11	                c_16(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.24/213.11	                     matrixMult^#(@m1, @m2))
768.24/213.11	              , matrixMult^#(@m1, @m2) -> c_17(transAcc^#(@m2, makeBase(@m2)))
768.24/213.11	              , transpose'^#(@m) -> c_18(transAcc^#(@m, makeBase(@m))) }
768.24/213.11	            Weak Trs:
768.24/213.11	              { attach(@line, @m) -> attach#1(@line, @m)
768.24/213.11	              , split(@m) -> split#1(@m)
768.24/213.11	              , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.24/213.11	              , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.24/213.11	              , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.24/213.11	              , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.24/213.11	              , #add(#0(), @y) -> @y
768.24/213.11	              , mult#2(nil(), @x, @xs) -> #abs(#0())
768.24/213.11	              , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.24/213.11	              , split#1(nil()) -> tuple#2(nil(), nil())
768.24/213.11	              , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.24/213.11	              , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.24/213.11	              , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.24/213.11	              , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.24/213.11	              , +(@x, @y) -> #add(@x, @y)
768.24/213.11	              , transAcc#1(nil(), @base) -> @base
768.24/213.11	              , transAcc#1(::(@l, @m'), @base) ->
768.24/213.11	                attach(@l, transAcc(@m', @base))
768.24/213.11	              , *(@x, @y) -> #mult(@x, @y)
768.24/213.11	              , mkBase#1(nil()) -> nil()
768.24/213.11	              , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.24/213.11	              , attach#1(nil(), @m) -> nil()
768.24/213.11	              , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.24/213.11	              , matrixMult'#1(nil(), @m2) -> nil()
768.24/213.11	              , matrixMult'#1(::(@l, @ls), @m2) ->
768.24/213.11	                ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.24/213.11	              , #natmult(#0(), @y) -> #0()
768.24/213.11	              , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.24/213.11	              , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.24/213.11	              , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.24/213.11	              , mkBase(@m) -> mkBase#1(@m)
768.24/213.11	              , makeBase(@m) -> makeBase#1(@m)
768.24/213.11	              , mult#1(nil(), @l2) -> #abs(#0())
768.24/213.11	              , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.24/213.11	              , lineMult#1(nil(), @l) -> nil()
768.24/213.11	              , lineMult#1(::(@x, @xs), @l) ->
768.24/213.11	                ::(mult(@l, @x), lineMult(@l, @xs))
768.24/213.11	              , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.24/213.11	              , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.24/213.11	              , #mult(#neg(@x), #0()) -> #0()
768.24/213.11	              , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.24/213.11	              , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.24/213.11	              , #mult(#pos(@x), #0()) -> #0()
768.24/213.11	              , #mult(#0(), #neg(@y)) -> #0()
768.24/213.11	              , #mult(#0(), #pos(@y)) -> #0()
768.24/213.11	              , #mult(#0(), #0()) -> #0()
768.24/213.11	              , attach#2(nil(), @x, @xs) -> nil()
768.24/213.11	              , attach#2(::(@l, @ls), @x, @xs) ->
768.24/213.11	                ::(::(@x, @l), attach(@xs, @ls))
768.24/213.11	              , #succ(#neg(#s(#0()))) -> #0()
768.24/213.11	              , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.24/213.11	              , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.24/213.11	              , #succ(#0()) -> #pos(#s(#0()))
768.24/213.11	              , makeBase#1(nil()) -> nil()
768.24/213.11	              , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.24/213.11	              , matrixMult(@m1, @m2) ->
768.24/213.11	                matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.24/213.11	              , #abs(#neg(@x)) -> #pos(@x)
768.24/213.11	              , #abs(#pos(@x)) -> #pos(@x)
768.24/213.11	              , #abs(#0()) -> #0()
768.24/213.11	              , #abs(#s(@x)) -> #pos(#s(@x))
768.24/213.11	              , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.24/213.11	              , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.24/213.11	                tuple#2(::(@x, @ys), ::(@xs, @m'))
768.24/213.11	              , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.24/213.11	              , #pred(#pos(#s(#0()))) -> #0()
768.24/213.11	              , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.24/213.11	              , #pred(#0()) -> #neg(#s(#0())) }
768.24/213.11	            StartTerms: basic terms
768.24/213.11	            Strategy: innermost
768.24/213.11	            
768.24/213.11	            This problem was proven YES(O(1),O(n^1)).
768.24/213.11	         
768.24/213.11	         S) Strict DPs:
768.24/213.11	              { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.24/213.11	              , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.24/213.11	                c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.24/213.11	                    matrixMult^#(@acc, @m)) }
768.24/213.11	            Weak DPs:
768.24/213.11	              { attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.24/213.11	              , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.24/213.11	              , matrixMult3^#(@m1, @m2, @m3) ->
768.24/213.11	                c_16(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.24/213.11	                     matrixMult^#(@m1, @m2))
768.24/213.11	              , matrixMult^#(@m1, @m2) -> c_17(transAcc^#(@m2, makeBase(@m2)))
768.24/213.11	              , transpose'^#(@m) -> c_18(transAcc^#(@m, makeBase(@m)))
768.24/213.11	              , transAcc^#(@m, @base) -> c_7(transAcc#1^#(@m, @base))
768.24/213.11	              , transAcc#1^#(::(@l, @m'), @base) ->
768.24/213.11	                c_11(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.24/213.11	              , attach#2^#(::(@l, @ls), @x, @xs) -> c_13(attach^#(@xs, @ls)) }
768.24/213.11	            Weak Trs:
768.24/213.11	              { attach(@line, @m) -> attach#1(@line, @m)
768.24/213.11	              , split(@m) -> split#1(@m)
768.24/213.11	              , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.24/213.11	              , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.24/213.11	              , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.24/213.11	              , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.24/213.11	              , #add(#0(), @y) -> @y
768.24/213.11	              , mult#2(nil(), @x, @xs) -> #abs(#0())
768.24/213.11	              , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.24/213.11	              , split#1(nil()) -> tuple#2(nil(), nil())
768.24/213.11	              , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.24/213.11	              , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.24/213.11	              , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.24/213.11	              , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.24/213.11	              , +(@x, @y) -> #add(@x, @y)
768.24/213.11	              , transAcc#1(nil(), @base) -> @base
768.24/213.11	              , transAcc#1(::(@l, @m'), @base) ->
768.24/213.11	                attach(@l, transAcc(@m', @base))
768.24/213.11	              , *(@x, @y) -> #mult(@x, @y)
768.24/213.11	              , mkBase#1(nil()) -> nil()
768.24/213.11	              , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.24/213.11	              , attach#1(nil(), @m) -> nil()
768.24/213.11	              , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.24/213.11	              , matrixMult'#1(nil(), @m2) -> nil()
768.24/213.11	              , matrixMult'#1(::(@l, @ls), @m2) ->
768.24/213.11	                ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.24/213.11	              , #natmult(#0(), @y) -> #0()
768.24/213.11	              , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.24/213.11	              , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.24/213.11	              , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.24/213.11	              , mkBase(@m) -> mkBase#1(@m)
768.24/213.11	              , makeBase(@m) -> makeBase#1(@m)
768.24/213.11	              , mult#1(nil(), @l2) -> #abs(#0())
768.24/213.11	              , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.24/213.11	              , lineMult#1(nil(), @l) -> nil()
768.24/213.11	              , lineMult#1(::(@x, @xs), @l) ->
768.24/213.11	                ::(mult(@l, @x), lineMult(@l, @xs))
768.24/213.11	              , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.24/213.11	              , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.24/213.11	              , #mult(#neg(@x), #0()) -> #0()
768.24/213.11	              , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.24/213.11	              , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.24/213.11	              , #mult(#pos(@x), #0()) -> #0()
768.24/213.11	              , #mult(#0(), #neg(@y)) -> #0()
768.24/213.11	              , #mult(#0(), #pos(@y)) -> #0()
768.24/213.11	              , #mult(#0(), #0()) -> #0()
768.24/213.11	              , attach#2(nil(), @x, @xs) -> nil()
768.24/213.11	              , attach#2(::(@l, @ls), @x, @xs) ->
768.24/213.11	                ::(::(@x, @l), attach(@xs, @ls))
768.24/213.11	              , #succ(#neg(#s(#0()))) -> #0()
768.24/213.11	              , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.24/213.11	              , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.24/213.11	              , #succ(#0()) -> #pos(#s(#0()))
768.24/213.11	              , makeBase#1(nil()) -> nil()
768.24/213.11	              , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.24/213.11	              , matrixMult(@m1, @m2) ->
768.24/213.11	                matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.24/213.11	              , #abs(#neg(@x)) -> #pos(@x)
768.24/213.11	              , #abs(#pos(@x)) -> #pos(@x)
768.24/213.11	              , #abs(#0()) -> #0()
768.24/213.11	              , #abs(#s(@x)) -> #pos(#s(@x))
768.24/213.11	              , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.24/213.11	              , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.24/213.11	                tuple#2(::(@x, @ys), ::(@xs, @m'))
768.24/213.11	              , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.24/213.11	              , #pred(#pos(#s(#0()))) -> #0()
768.24/213.11	              , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.24/213.11	              , #pred(#0()) -> #neg(#s(#0())) }
768.24/213.11	            StartTerms: basic terms
768.24/213.11	            Strategy: innermost
768.24/213.11	            
768.24/213.11	            This problem was proven YES(O(1),O(n^1)).
768.24/213.11	         
768.24/213.11	         
768.24/213.11	         Proofs for generated problems:
768.24/213.11	         ------------------------------
768.24/213.11	         R) We are left with following problem, upon which TcT provides the
768.24/213.11	            certificate YES(O(1),O(n^1)).
768.24/213.11	            
768.24/213.11	            Strict DPs:
768.24/213.11	              { attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.24/213.11	              , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.24/213.11	              , transAcc^#(@m, @base) -> c_7(transAcc#1^#(@m, @base))
768.24/213.11	              , transAcc#1^#(::(@l, @m'), @base) ->
768.24/213.11	                c_11(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.24/213.11	              , attach#2^#(::(@l, @ls), @x, @xs) -> c_13(attach^#(@xs, @ls)) }
768.24/213.11	            Weak DPs:
768.24/213.11	              { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.24/213.11	              , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.24/213.11	                c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.24/213.11	                    matrixMult^#(@acc, @m))
768.24/213.11	              , matrixMult3^#(@m1, @m2, @m3) ->
768.24/213.11	                c_16(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.24/213.11	                     matrixMult^#(@m1, @m2))
768.24/213.11	              , matrixMult^#(@m1, @m2) -> c_17(transAcc^#(@m2, makeBase(@m2)))
768.24/213.11	              , transpose'^#(@m) -> c_18(transAcc^#(@m, makeBase(@m))) }
768.24/213.11	            Weak Trs:
768.24/213.11	              { attach(@line, @m) -> attach#1(@line, @m)
768.24/213.11	              , split(@m) -> split#1(@m)
768.24/213.11	              , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.24/213.11	              , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.24/213.11	              , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.24/213.11	              , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.24/213.11	              , #add(#0(), @y) -> @y
768.24/213.11	              , mult#2(nil(), @x, @xs) -> #abs(#0())
768.24/213.11	              , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.24/213.11	              , split#1(nil()) -> tuple#2(nil(), nil())
768.24/213.11	              , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.24/213.11	              , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.24/213.11	              , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.24/213.11	              , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.24/213.11	              , +(@x, @y) -> #add(@x, @y)
768.24/213.11	              , transAcc#1(nil(), @base) -> @base
768.24/213.11	              , transAcc#1(::(@l, @m'), @base) ->
768.24/213.11	                attach(@l, transAcc(@m', @base))
768.24/213.11	              , *(@x, @y) -> #mult(@x, @y)
768.24/213.11	              , mkBase#1(nil()) -> nil()
768.24/213.11	              , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.24/213.11	              , attach#1(nil(), @m) -> nil()
768.24/213.11	              , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.24/213.11	              , matrixMult'#1(nil(), @m2) -> nil()
768.24/213.11	              , matrixMult'#1(::(@l, @ls), @m2) ->
768.24/213.11	                ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.24/213.11	              , #natmult(#0(), @y) -> #0()
768.24/213.11	              , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.24/213.11	              , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.24/213.11	              , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.24/213.11	              , mkBase(@m) -> mkBase#1(@m)
768.24/213.11	              , makeBase(@m) -> makeBase#1(@m)
768.24/213.11	              , mult#1(nil(), @l2) -> #abs(#0())
768.24/213.11	              , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.24/213.11	              , lineMult#1(nil(), @l) -> nil()
768.24/213.11	              , lineMult#1(::(@x, @xs), @l) ->
768.24/213.11	                ::(mult(@l, @x), lineMult(@l, @xs))
768.24/213.11	              , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.24/213.11	              , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.24/213.11	              , #mult(#neg(@x), #0()) -> #0()
768.24/213.11	              , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.24/213.11	              , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.24/213.11	              , #mult(#pos(@x), #0()) -> #0()
768.24/213.11	              , #mult(#0(), #neg(@y)) -> #0()
768.24/213.11	              , #mult(#0(), #pos(@y)) -> #0()
768.24/213.11	              , #mult(#0(), #0()) -> #0()
768.24/213.11	              , attach#2(nil(), @x, @xs) -> nil()
768.24/213.11	              , attach#2(::(@l, @ls), @x, @xs) ->
768.24/213.11	                ::(::(@x, @l), attach(@xs, @ls))
768.24/213.11	              , #succ(#neg(#s(#0()))) -> #0()
768.24/213.11	              , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.24/213.11	              , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.24/213.11	              , #succ(#0()) -> #pos(#s(#0()))
768.24/213.11	              , makeBase#1(nil()) -> nil()
768.24/213.11	              , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.24/213.11	              , matrixMult(@m1, @m2) ->
768.24/213.11	                matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.24/213.11	              , #abs(#neg(@x)) -> #pos(@x)
768.24/213.11	              , #abs(#pos(@x)) -> #pos(@x)
768.24/213.11	              , #abs(#0()) -> #0()
768.24/213.11	              , #abs(#s(@x)) -> #pos(#s(@x))
768.24/213.11	              , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.24/213.11	              , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.24/213.11	                tuple#2(::(@x, @ys), ::(@xs, @m'))
768.24/213.11	              , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.24/213.11	              , #pred(#pos(#s(#0()))) -> #0()
768.24/213.11	              , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.24/213.11	              , #pred(#0()) -> #neg(#s(#0())) }
768.24/213.11	            Obligation:
768.24/213.11	              innermost runtime complexity
768.24/213.11	            Answer:
768.24/213.11	              YES(O(1),O(n^1))
768.24/213.11	            
768.24/213.11	            We replace rewrite rules by usable rules:
768.24/213.11	            
768.24/213.11	              Weak Usable Rules:
768.24/213.11	                { attach(@line, @m) -> attach#1(@line, @m)
768.24/213.11	                , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.24/213.11	                , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.24/213.11	                , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.24/213.11	                , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.24/213.11	                , #add(#0(), @y) -> @y
768.24/213.11	                , mult#2(nil(), @x, @xs) -> #abs(#0())
768.24/213.11	                , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.24/213.11	                , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.24/213.11	                , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.24/213.11	                , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.24/213.11	                , +(@x, @y) -> #add(@x, @y)
768.24/213.11	                , transAcc#1(nil(), @base) -> @base
768.24/213.11	                , transAcc#1(::(@l, @m'), @base) ->
768.24/213.11	                  attach(@l, transAcc(@m', @base))
768.24/213.11	                , *(@x, @y) -> #mult(@x, @y)
768.24/213.11	                , mkBase#1(nil()) -> nil()
768.24/213.11	                , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.24/213.11	                , attach#1(nil(), @m) -> nil()
768.24/213.11	                , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.24/213.11	                , matrixMult'#1(nil(), @m2) -> nil()
768.24/213.11	                , matrixMult'#1(::(@l, @ls), @m2) ->
768.24/213.11	                  ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.24/213.11	                , #natmult(#0(), @y) -> #0()
768.24/213.11	                , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.24/213.11	                , mkBase(@m) -> mkBase#1(@m)
768.24/213.11	                , makeBase(@m) -> makeBase#1(@m)
768.24/213.11	                , mult#1(nil(), @l2) -> #abs(#0())
768.24/213.11	                , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.24/213.11	                , lineMult#1(nil(), @l) -> nil()
768.24/213.11	                , lineMult#1(::(@x, @xs), @l) ->
768.24/213.11	                  ::(mult(@l, @x), lineMult(@l, @xs))
768.24/213.11	                , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.24/213.11	                , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.24/213.11	                , #mult(#neg(@x), #0()) -> #0()
768.24/213.11	                , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.24/213.11	                , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.24/213.12	                , #mult(#pos(@x), #0()) -> #0()
768.24/213.12	                , #mult(#0(), #neg(@y)) -> #0()
768.24/213.12	                , #mult(#0(), #pos(@y)) -> #0()
768.24/213.12	                , #mult(#0(), #0()) -> #0()
768.24/213.12	                , attach#2(nil(), @x, @xs) -> nil()
768.24/213.12	                , attach#2(::(@l, @ls), @x, @xs) ->
768.24/213.12	                  ::(::(@x, @l), attach(@xs, @ls))
768.24/213.12	                , #succ(#neg(#s(#0()))) -> #0()
768.24/213.12	                , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.24/213.12	                , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.24/213.12	                , #succ(#0()) -> #pos(#s(#0()))
768.24/213.12	                , makeBase#1(nil()) -> nil()
768.24/213.12	                , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.24/213.12	                , matrixMult(@m1, @m2) ->
768.24/213.12	                  matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.24/213.12	                , #abs(#neg(@x)) -> #pos(@x)
768.24/213.12	                , #abs(#pos(@x)) -> #pos(@x)
768.24/213.12	                , #abs(#0()) -> #0()
768.24/213.12	                , #abs(#s(@x)) -> #pos(#s(@x))
768.24/213.12	                , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.24/213.12	                , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.24/213.12	                , #pred(#pos(#s(#0()))) -> #0()
768.24/213.12	                , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.24/213.12	                , #pred(#0()) -> #neg(#s(#0())) }
768.24/213.12	            
768.24/213.12	            We are left with following problem, upon which TcT provides the
768.24/213.12	            certificate YES(O(1),O(n^1)).
768.24/213.12	            
768.24/213.12	            Strict DPs:
768.24/213.12	              { attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.24/213.12	              , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.24/213.12	              , transAcc^#(@m, @base) -> c_7(transAcc#1^#(@m, @base))
768.24/213.12	              , transAcc#1^#(::(@l, @m'), @base) ->
768.24/213.12	                c_11(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.24/213.12	              , attach#2^#(::(@l, @ls), @x, @xs) -> c_13(attach^#(@xs, @ls)) }
768.24/213.12	            Weak DPs:
768.24/213.12	              { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.24/213.12	              , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.24/213.12	                c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.24/213.12	                    matrixMult^#(@acc, @m))
768.24/213.12	              , matrixMult3^#(@m1, @m2, @m3) ->
768.24/213.12	                c_16(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.24/213.12	                     matrixMult^#(@m1, @m2))
768.24/213.12	              , matrixMult^#(@m1, @m2) -> c_17(transAcc^#(@m2, makeBase(@m2)))
768.24/213.12	              , transpose'^#(@m) -> c_18(transAcc^#(@m, makeBase(@m))) }
768.24/213.12	            Weak Trs:
768.24/213.12	              { attach(@line, @m) -> attach#1(@line, @m)
768.24/213.12	              , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.24/213.12	              , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.24/213.12	              , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.24/213.12	              , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.24/213.12	              , #add(#0(), @y) -> @y
768.24/213.12	              , mult#2(nil(), @x, @xs) -> #abs(#0())
768.24/213.12	              , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.24/213.12	              , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.24/213.12	              , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.24/213.12	              , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.24/213.12	              , +(@x, @y) -> #add(@x, @y)
768.24/213.12	              , transAcc#1(nil(), @base) -> @base
768.24/213.12	              , transAcc#1(::(@l, @m'), @base) ->
768.24/213.12	                attach(@l, transAcc(@m', @base))
768.24/213.12	              , *(@x, @y) -> #mult(@x, @y)
768.24/213.12	              , mkBase#1(nil()) -> nil()
768.24/213.12	              , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.24/213.12	              , attach#1(nil(), @m) -> nil()
768.24/213.12	              , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.24/213.12	              , matrixMult'#1(nil(), @m2) -> nil()
768.24/213.12	              , matrixMult'#1(::(@l, @ls), @m2) ->
768.24/213.12	                ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.24/213.12	              , #natmult(#0(), @y) -> #0()
768.24/213.12	              , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.24/213.12	              , mkBase(@m) -> mkBase#1(@m)
768.24/213.12	              , makeBase(@m) -> makeBase#1(@m)
768.24/213.12	              , mult#1(nil(), @l2) -> #abs(#0())
768.24/213.12	              , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.24/213.12	              , lineMult#1(nil(), @l) -> nil()
768.24/213.12	              , lineMult#1(::(@x, @xs), @l) ->
768.24/213.12	                ::(mult(@l, @x), lineMult(@l, @xs))
768.24/213.12	              , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.24/213.12	              , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.24/213.12	              , #mult(#neg(@x), #0()) -> #0()
768.24/213.12	              , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.24/213.12	              , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.24/213.12	              , #mult(#pos(@x), #0()) -> #0()
768.24/213.12	              , #mult(#0(), #neg(@y)) -> #0()
768.24/213.12	              , #mult(#0(), #pos(@y)) -> #0()
768.24/213.12	              , #mult(#0(), #0()) -> #0()
768.24/213.12	              , attach#2(nil(), @x, @xs) -> nil()
768.24/213.12	              , attach#2(::(@l, @ls), @x, @xs) ->
768.24/213.12	                ::(::(@x, @l), attach(@xs, @ls))
768.24/213.12	              , #succ(#neg(#s(#0()))) -> #0()
768.24/213.12	              , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.24/213.12	              , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.24/213.12	              , #succ(#0()) -> #pos(#s(#0()))
768.24/213.12	              , makeBase#1(nil()) -> nil()
768.24/213.12	              , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.24/213.12	              , matrixMult(@m1, @m2) ->
768.24/213.12	                matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.24/213.12	              , #abs(#neg(@x)) -> #pos(@x)
768.24/213.12	              , #abs(#pos(@x)) -> #pos(@x)
768.24/213.12	              , #abs(#0()) -> #0()
768.24/213.12	              , #abs(#s(@x)) -> #pos(#s(@x))
768.24/213.12	              , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.24/213.12	              , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.24/213.12	              , #pred(#pos(#s(#0()))) -> #0()
768.24/213.12	              , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.24/213.12	              , #pred(#0()) -> #neg(#s(#0())) }
768.24/213.12	            Obligation:
768.24/213.12	              innermost runtime complexity
768.24/213.12	            Answer:
768.24/213.12	              YES(O(1),O(n^1))
768.24/213.12	            
768.24/213.12	            We use the processor 'matrix interpretation of dimension 1' to
768.24/213.12	            orient following rules strictly.
768.24/213.12	            
768.24/213.12	            DPs:
768.24/213.12	              { 2: attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.24/213.12	              , 4: transAcc#1^#(::(@l, @m'), @base) ->
768.24/213.12	                   c_11(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.24/213.12	              , 7: matrixMultList#1^#(::(@m, @ms), @acc) ->
768.24/213.12	                   c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.24/213.12	                       matrixMult^#(@acc, @m))
768.24/213.12	              , 10: transpose'^#(@m) -> c_18(transAcc^#(@m, makeBase(@m))) }
768.24/213.12	            
768.24/213.12	            Sub-proof:
768.24/213.12	            ----------
768.24/213.12	              The following argument positions are usable:
768.24/213.12	                Uargs(c_1) = {1}, Uargs(c_2) = {1, 2}, Uargs(c_3) = {1},
768.24/213.12	                Uargs(c_4) = {1}, Uargs(c_7) = {1}, Uargs(c_11) = {1, 2},
768.24/213.12	                Uargs(c_13) = {1}, Uargs(c_16) = {1, 2}, Uargs(c_17) = {1},
768.24/213.12	                Uargs(c_18) = {1}
768.24/213.12	              
768.24/213.12	              TcT has computed the following constructor-based matrix
768.24/213.12	              interpretation satisfying not(EDA).
768.24/213.12	              
768.24/213.12	                            [attach](x1, x2) = [3] x1 + [0]                  
768.24/213.12	                                                                             
768.24/213.12	                              [#add](x1, x2) = [0]                           
768.24/213.12	                                                                             
768.24/213.12	                        [mult#2](x1, x2, x3) = [4] x2 + [7] x3 + [0]         
768.24/213.12	                                                                             
768.24/213.12	                                       [nil] = [0]                           
768.24/213.12	                                                                             
768.24/213.12	                       [matrixMult'](x1, x2) = [4] x1 + [0]                  
768.24/213.12	                                                                             
768.24/213.12	                          [transAcc](x1, x2) = [0]                           
768.24/213.12	                                                                             
768.24/213.12	                              [mult](x1, x2) = [0]                           
768.24/213.12	                                                                             
768.24/213.12	                                 [+](x1, x2) = [0]                           
768.24/213.12	                                                                             
768.24/213.12	                        [transAcc#1](x1, x2) = [4] x2 + [0]                  
768.24/213.12	                                                                             
768.24/213.12	                                  [#neg](x1) = [0]                           
768.24/213.12	                                                                             
768.24/213.12	                                 [*](x1, x2) = [0]                           
768.24/213.12	                                                                             
768.24/213.12	                              [mkBase#1](x1) = [0]                           
768.24/213.12	                                                                             
768.24/213.12	                          [attach#1](x1, x2) = [4] x2 + [0]                  
768.24/213.12	                                                                             
768.24/213.12	                     [matrixMult'#1](x1, x2) = [0]                           
768.24/213.12	                                                                             
768.24/213.12	                          [#natmult](x1, x2) = [0]                           
768.24/213.12	                                                                             
768.24/213.12	                                  [#pos](x1) = [0]                           
768.24/213.12	                                                                             
768.24/213.12	                                [mkBase](x1) = [2] x1 + [0]                  
768.24/213.12	                                                                             
768.24/213.12	                              [makeBase](x1) = [0]                           
768.24/213.12	                                                                             
768.24/213.12	                            [mult#1](x1, x2) = [4] x2 + [0]                  
768.24/213.12	                                                                             
768.24/213.12	                                [::](x1, x2) = [1] x1 + [1] x2 + [2]         
768.24/213.12	                                                                             
768.24/213.12	                        [lineMult#1](x1, x2) = [4] x2 + [0]                  
768.24/213.12	                                                                             
768.24/213.12	                             [#mult](x1, x2) = [0]                           
768.24/213.12	                                                                             
768.24/213.12	                      [attach#2](x1, x2, x3) = [4] x2 + [7] x3 + [0]         
768.24/213.12	                                                                             
768.24/213.12	                                 [#succ](x1) = [0]                           
768.24/213.12	                                                                             
768.24/213.12	                                        [#0] = [0]                           
768.24/213.12	                                                                             
768.24/213.12	                            [makeBase#1](x1) = [0]                           
768.24/213.12	                                                                             
768.24/213.12	                        [matrixMult](x1, x2) = [0]                           
768.24/213.12	                                                                             
768.24/213.12	                                  [#abs](x1) = [0]                           
768.24/213.12	                                                                             
768.24/213.12	                          [lineMult](x1, x2) = [0]                           
768.24/213.12	                                                                             
768.24/213.12	                                 [#pred](x1) = [0]                           
768.24/213.12	                                                                             
768.24/213.12	                                    [#s](x1) = [0]                           
768.24/213.12	                                                                             
768.24/213.12	                  [matrixMultList^#](x1, x2) = [4] x2 + [0]                  
768.24/213.12	                                                                             
768.24/213.12	                [matrixMultList#1^#](x1, x2) = [4] x1 + [0]                  
768.24/213.12	                                                                             
768.24/213.12	                          [attach^#](x1, x2) = [4] x1 + [0]                  
768.24/213.12	                                                                             
768.24/213.12	                        [attach#1^#](x1, x2) = [4] x1 + [0]                  
768.24/213.12	                                                                             
768.24/213.12	                 [matrixMult3^#](x1, x2, x3) = [7] x1 + [7] x2 + [7] x3 + [7]
768.24/213.12	                                                                             
768.24/213.12	                      [matrixMult^#](x1, x2) = [4] x2 + [0]                  
768.24/213.12	                                                                             
768.24/213.12	                          [transpose'^#](x1) = [7] x1 + [7]                  
768.24/213.12	                                                                             
768.24/213.12	                        [transAcc^#](x1, x2) = [4] x1 + [0]                  
768.24/213.12	                                                                             
768.24/213.12	                      [transAcc#1^#](x1, x2) = [4] x1 + [0]                  
768.24/213.12	                                                                             
768.24/213.12	                    [attach#2^#](x1, x2, x3) = [4] x2 + [4] x3 + [0]         
768.24/213.12	                                                                             
768.24/213.12	                                   [c_1](x1) = [1] x1 + [0]                  
768.24/213.12	                                                                             
768.24/213.12	                               [c_2](x1, x2) = [1] x1 + [1] x2 + [7]         
768.24/213.12	                                                                             
768.24/213.12	                                   [c_3](x1) = [1] x1 + [0]                  
768.24/213.12	                                                                             
768.24/213.12	                                   [c_4](x1) = [1] x1 + [1]                  
768.24/213.12	                                                                             
768.24/213.12	                                   [c_7](x1) = [1] x1 + [0]                  
768.24/213.12	                                                                             
768.24/213.12	                              [c_11](x1, x2) = [1] x1 + [1] x2 + [7]         
768.24/213.12	                                                                             
768.24/213.12	                                  [c_13](x1) = [1] x1 + [0]                  
768.24/213.12	                                                                             
768.24/213.12	                              [c_16](x1, x2) = [1] x1 + [1] x2 + [7]         
768.24/213.12	                                                                             
768.24/213.12	                                  [c_17](x1) = [1] x1 + [0]                  
768.24/213.12	                                                                             
768.24/213.12	                                  [c_18](x1) = [1] x1 + [3]                  
768.24/213.12	              
768.24/213.12	              The order satisfies the following ordering constraints:
768.24/213.12	              
768.24/213.12	                                    [attach(@line, @m)] =  [3] @line + [0]                                                   
768.24/213.12	                                                        ?  [4] @m + [0]                                                      
768.24/213.12	                                                        =  [attach#1(@line, @m)]                                             
768.24/213.12	                                                                                                                             
768.24/213.12	                             [#add(#neg(#s(#0())), @y)] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#pred(@y)]                                                       
768.24/213.12	                                                                                                                             
768.24/213.12	                           [#add(#neg(#s(#s(@x))), @y)] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#pred(#add(#pos(#s(@x)), @y))]                                   
768.24/213.12	                                                                                                                             
768.24/213.12	                             [#add(#pos(#s(#0())), @y)] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#succ(@y)]                                                       
768.24/213.12	                                                                                                                             
768.24/213.12	                           [#add(#pos(#s(#s(@x))), @y)] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#succ(#add(#pos(#s(@x)), @y))]                                   
768.24/213.12	                                                                                                                             
768.24/213.12	                                       [#add(#0(), @y)] =  [0]                                                               
768.24/213.12	                                                        ?  [1] @y + [0]                                                      
768.24/213.12	                                                        =  [@y]                                                              
768.24/213.12	                                                                                                                             
768.24/213.12	                               [mult#2(nil(), @x, @xs)] =  [4] @x + [7] @xs + [0]                                            
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#abs(#0())]                                                      
768.24/213.12	                                                                                                                             
768.24/213.12	                         [mult#2(::(@y, @ys), @x, @xs)] =  [4] @x + [7] @xs + [0]                                            
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [+(*(@x, @y), mult(@xs, @ys))]                                    
768.24/213.12	                                                                                                                             
768.24/213.12	                                [matrixMult'(@m1, @m2)] =  [4] @m1 + [0]                                                     
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [matrixMult'#1(@m1, @m2)]                                         
768.24/213.12	                                                                                                                             
768.24/213.12	                                  [transAcc(@m, @base)] =  [0]                                                               
768.24/213.12	                                                        ?  [4] @base + [0]                                                   
768.24/213.12	                                                        =  [transAcc#1(@m, @base)]                                           
768.24/213.12	                                                                                                                             
768.24/213.12	                                       [mult(@l1, @l2)] =  [0]                                                               
768.24/213.12	                                                        ?  [4] @l2 + [0]                                                     
768.24/213.12	                                                        =  [mult#1(@l1, @l2)]                                                
768.24/213.12	                                                                                                                             
768.24/213.12	                                            [+(@x, @y)] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#add(@x, @y)]                                                    
768.24/213.12	                                                                                                                             
768.24/213.12	                             [transAcc#1(nil(), @base)] =  [4] @base + [0]                                                   
768.24/213.12	                                                        >= [1] @base + [0]                                                   
768.24/213.12	                                                        =  [@base]                                                           
768.24/213.12	                                                                                                                             
768.24/213.12	                       [transAcc#1(::(@l, @m'), @base)] =  [4] @base + [0]                                                   
768.24/213.12	                                                        ?  [3] @l + [0]                                                      
768.24/213.12	                                                        =  [attach(@l, transAcc(@m', @base))]                                
768.24/213.12	                                                                                                                             
768.24/213.12	                                            [*(@x, @y)] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#mult(@x, @y)]                                                   
768.24/213.12	                                                                                                                             
768.24/213.12	                                      [mkBase#1(nil())] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [nil()]                                                           
768.24/213.12	                                                                                                                             
768.24/213.12	                                [mkBase#1(::(@l, @m'))] =  [0]                                                               
768.24/213.12	                                                        ?  [2] @m' + [2]                                                     
768.24/213.12	                                                        =  [::(nil(), mkBase(@m'))]                                          
768.24/213.12	                                                                                                                             
768.24/213.12	                                  [attach#1(nil(), @m)] =  [4] @m + [0]                                                      
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [nil()]                                                           
768.24/213.12	                                                                                                                             
768.24/213.12	                            [attach#1(::(@x, @xs), @m)] =  [4] @m + [0]                                                      
768.24/213.12	                                                        ?  [4] @x + [7] @xs + [0]                                            
768.24/213.12	                                                        =  [attach#2(@m, @x, @xs)]                                           
768.24/213.12	                                                                                                                             
768.24/213.12	                            [matrixMult'#1(nil(), @m2)] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [nil()]                                                           
768.24/213.12	                                                                                                                             
768.24/213.12	                      [matrixMult'#1(::(@l, @ls), @m2)] =  [0]                                                               
768.24/213.12	                                                        ?  [4] @ls + [2]                                                     
768.24/213.12	                                                        =  [::(lineMult(@l, @m2), matrixMult'(@ls, @m2))]                    
768.24/213.12	                                                                                                                             
768.24/213.12	                                   [#natmult(#0(), @y)] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#0()]                                                            
768.24/213.12	                                                                                                                             
768.24/213.12	                                 [#natmult(#s(@x), @y)] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#add(#pos(@y), #natmult(@x, @y))]                                
768.24/213.12	                                                                                                                             
768.24/213.12	                                           [mkBase(@m)] =  [2] @m + [0]                                                      
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [mkBase#1(@m)]                                                    
768.24/213.12	                                                                                                                             
768.24/213.12	                                         [makeBase(@m)] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [makeBase#1(@m)]                                                  
768.24/213.12	                                                                                                                             
768.24/213.12	                                   [mult#1(nil(), @l2)] =  [4] @l2 + [0]                                                     
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#abs(#0())]                                                      
768.24/213.12	                                                                                                                             
768.24/213.12	                             [mult#1(::(@x, @xs), @l2)] =  [4] @l2 + [0]                                                     
768.24/213.12	                                                        ?  [4] @x + [7] @xs + [0]                                            
768.24/213.12	                                                        =  [mult#2(@l2, @x, @xs)]                                            
768.24/213.12	                                                                                                                             
768.24/213.12	                                [lineMult#1(nil(), @l)] =  [4] @l + [0]                                                      
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [nil()]                                                           
768.24/213.12	                                                                                                                             
768.24/213.12	                          [lineMult#1(::(@x, @xs), @l)] =  [4] @l + [0]                                                      
768.24/213.12	                                                        ?  [2]                                                               
768.24/213.12	                                                        =  [::(mult(@l, @x), lineMult(@l, @xs))]                             
768.24/213.12	                                                                                                                             
768.24/213.12	                            [#mult(#neg(@x), #neg(@y))] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#pos(#natmult(@x, @y))]                                          
768.24/213.12	                                                                                                                             
768.24/213.12	                            [#mult(#neg(@x), #pos(@y))] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#neg(#natmult(@x, @y))]                                          
768.24/213.12	                                                                                                                             
768.24/213.12	                                [#mult(#neg(@x), #0())] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#0()]                                                            
768.24/213.12	                                                                                                                             
768.24/213.12	                            [#mult(#pos(@x), #neg(@y))] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#neg(#natmult(@x, @y))]                                          
768.24/213.12	                                                                                                                             
768.24/213.12	                            [#mult(#pos(@x), #pos(@y))] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#pos(#natmult(@x, @y))]                                          
768.24/213.12	                                                                                                                             
768.24/213.12	                                [#mult(#pos(@x), #0())] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#0()]                                                            
768.24/213.12	                                                                                                                             
768.24/213.12	                                [#mult(#0(), #neg(@y))] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#0()]                                                            
768.24/213.12	                                                                                                                             
768.24/213.12	                                [#mult(#0(), #pos(@y))] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#0()]                                                            
768.24/213.12	                                                                                                                             
768.24/213.12	                                    [#mult(#0(), #0())] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#0()]                                                            
768.24/213.12	                                                                                                                             
768.24/213.12	                             [attach#2(nil(), @x, @xs)] =  [4] @x + [7] @xs + [0]                                            
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [nil()]                                                           
768.24/213.12	                                                                                                                             
768.24/213.12	                       [attach#2(::(@l, @ls), @x, @xs)] =  [4] @x + [7] @xs + [0]                                            
768.24/213.12	                                                        ?  [1] @x + [3] @xs + [1] @l + [4]                                   
768.24/213.12	                                                        =  [::(::(@x, @l), attach(@xs, @ls))]                                
768.24/213.12	                                                                                                                             
768.24/213.12	                                [#succ(#neg(#s(#0())))] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#0()]                                                            
768.24/213.12	                                                                                                                             
768.24/213.12	                              [#succ(#neg(#s(#s(@x))))] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#neg(#s(@x))]                                                    
768.24/213.12	                                                                                                                             
768.24/213.12	                                  [#succ(#pos(#s(@x)))] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#pos(#s(#s(@x)))]                                                
768.24/213.12	                                                                                                                             
768.24/213.12	                                          [#succ(#0())] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#pos(#s(#0()))]                                                  
768.24/213.12	                                                                                                                             
768.24/213.12	                                    [makeBase#1(nil())] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [nil()]                                                           
768.24/213.12	                                                                                                                             
768.24/213.12	                              [makeBase#1(::(@l, @m'))] =  [0]                                                               
768.24/213.12	                                                        ?  [2] @l + [0]                                                      
768.24/213.12	                                                        =  [mkBase(@l)]                                                      
768.24/213.12	                                                                                                                             
768.24/213.12	                                 [matrixMult(@m1, @m2)] =  [0]                                                               
768.24/213.12	                                                        ?  [4] @m1 + [0]                                                     
768.24/213.12	                                                        =  [matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))]                  
768.24/213.12	                                                                                                                             
768.24/213.12	                                       [#abs(#neg(@x))] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#pos(@x)]                                                        
768.24/213.12	                                                                                                                             
768.24/213.12	                                       [#abs(#pos(@x))] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#pos(@x)]                                                        
768.24/213.12	                                                                                                                             
768.24/213.12	                                           [#abs(#0())] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#0()]                                                            
768.24/213.12	                                                                                                                             
768.24/213.12	                                         [#abs(#s(@x))] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#pos(#s(@x))]                                                    
768.24/213.12	                                                                                                                             
768.24/213.12	                                    [lineMult(@l, @m2)] =  [0]                                                               
768.24/213.12	                                                        ?  [4] @l + [0]                                                      
768.24/213.12	                                                        =  [lineMult#1(@m2, @l)]                                             
768.24/213.12	                                                                                                                             
768.24/213.12	                                  [#pred(#neg(#s(@x)))] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#neg(#s(#s(@x)))]                                                
768.24/213.12	                                                                                                                             
768.24/213.12	                                [#pred(#pos(#s(#0())))] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#0()]                                                            
768.24/213.12	                                                                                                                             
768.24/213.12	                              [#pred(#pos(#s(#s(@x))))] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#pos(#s(@x))]                                                    
768.24/213.12	                                                                                                                             
768.24/213.12	                                          [#pred(#0())] =  [0]                                                               
768.24/213.12	                                                        >= [0]                                                               
768.24/213.12	                                                        =  [#neg(#s(#0()))]                                                  
768.24/213.12	                                                                                                                             
768.24/213.12	                          [matrixMultList^#(@acc, @mm)] =  [4] @mm + [0]                                                     
768.24/213.12	                                                        >= [4] @mm + [0]                                                     
768.24/213.12	                                                        =  [c_1(matrixMultList#1^#(@mm, @acc))]                              
768.24/213.12	                                                                                                                             
768.24/213.12	                [matrixMultList#1^#(::(@m, @ms), @acc)] =  [4] @m + [4] @ms + [8]                                            
768.24/213.12	                                                        >  [4] @m + [4] @ms + [7]                                            
768.24/213.12	                                                        =  [c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),                 
768.24/213.12	                                                                matrixMult^#(@acc, @m))]                                     
768.24/213.12	                                                                                                                             
768.24/213.12	                                  [attach^#(@line, @m)] =  [4] @line + [0]                                                   
768.24/213.12	                                                        >= [4] @line + [0]                                                   
768.24/213.12	                                                        =  [c_3(attach#1^#(@line, @m))]                                      
768.24/213.12	                                                                                                                             
768.24/213.12	                          [attach#1^#(::(@x, @xs), @m)] =  [4] @x + [4] @xs + [8]                                            
768.24/213.12	                                                        >  [4] @x + [4] @xs + [1]                                            
768.24/213.12	                                                        =  [c_4(attach#2^#(@m, @x, @xs))]                                    
768.24/213.12	                                                                                                                             
768.24/213.12	                         [matrixMult3^#(@m1, @m2, @m3)] =  [7] @m2 + [7] @m1 + [7] @m3 + [7]                                 
768.24/213.12	                                                        >= [4] @m2 + [4] @m3 + [7]                                           
768.24/213.12	                                                        =  [c_16(matrixMult^#(matrixMult(@m1, @m2), @m3),                    
768.24/213.12	                                                                 matrixMult^#(@m1, @m2))]                                    
768.24/213.12	                                                                                                                             
768.24/213.12	                               [matrixMult^#(@m1, @m2)] =  [4] @m2 + [0]                                                     
768.24/213.12	                                                        >= [4] @m2 + [0]                                                     
768.24/213.12	                                                        =  [c_17(transAcc^#(@m2, makeBase(@m2)))]                            
768.24/213.12	                                                                                                                             
768.24/213.12	                                     [transpose'^#(@m)] =  [7] @m + [7]                                                      
768.24/213.12	                                                        >  [4] @m + [3]                                                      
768.24/213.12	                                                        =  [c_18(transAcc^#(@m, makeBase(@m)))]                              
768.24/213.12	                                                                                                                             
768.24/213.12	                                [transAcc^#(@m, @base)] =  [4] @m + [0]                                                      
768.24/213.12	                                                        >= [4] @m + [0]                                                      
768.24/213.12	                                                        =  [c_7(transAcc#1^#(@m, @base))]                                    
768.24/213.12	                                                                                                                             
768.24/213.12	                     [transAcc#1^#(::(@l, @m'), @base)] =  [4] @l + [4] @m' + [8]                                            
768.24/213.12	                                                        >  [4] @l + [4] @m' + [7]                                            
768.24/213.12	                                                        =  [c_11(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))]
768.24/213.12	                                                                                                                             
768.24/213.12	                     [attach#2^#(::(@l, @ls), @x, @xs)] =  [4] @x + [4] @xs + [0]                                            
768.24/213.12	                                                        >= [4] @xs + [0]                                                     
768.24/213.12	                                                        =  [c_13(attach^#(@xs, @ls))]                                        
768.24/213.12	                                                                                                                             
768.24/213.12	            
768.24/213.12	            We return to the main proof. Consider the set of all dependency
768.24/213.12	            pairs
768.24/213.12	            
768.24/213.12	            :
768.24/213.12	              { 1: attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.24/213.12	              , 2: attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.24/213.12	              , 3: transAcc^#(@m, @base) -> c_7(transAcc#1^#(@m, @base))
768.24/213.12	              , 4: transAcc#1^#(::(@l, @m'), @base) ->
768.24/213.12	                   c_11(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.24/213.12	              , 5: attach#2^#(::(@l, @ls), @x, @xs) -> c_13(attach^#(@xs, @ls))
768.24/213.12	              , 6: matrixMultList^#(@acc, @mm) ->
768.24/213.12	                   c_1(matrixMultList#1^#(@mm, @acc))
768.24/213.12	              , 7: matrixMultList#1^#(::(@m, @ms), @acc) ->
768.24/213.12	                   c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.24/213.12	                       matrixMult^#(@acc, @m))
768.24/213.12	              , 8: matrixMult3^#(@m1, @m2, @m3) ->
768.24/213.12	                   c_16(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.24/213.12	                        matrixMult^#(@m1, @m2))
768.24/213.12	              , 9: matrixMult^#(@m1, @m2) -> c_17(transAcc^#(@m2, makeBase(@m2)))
768.24/213.12	              , 10: transpose'^#(@m) -> c_18(transAcc^#(@m, makeBase(@m))) }
768.24/213.12	            
768.24/213.12	            Processor 'matrix interpretation of dimension 1' induces the
768.24/213.13	            complexity certificate YES(?,O(n^1)) on application of dependency
768.24/213.13	            pairs {2,4,7,10}. These cover all (indirect) predecessors of
768.24/213.13	            dependency pairs {1,2,3,4,5,6,7,8,9,10}, their number of
768.24/213.13	            application is equally bounded. The dependency pairs are shifted
768.24/213.13	            into the weak component.
768.24/213.13	            
768.24/213.13	            We are left with following problem, upon which TcT provides the
768.24/213.13	            certificate YES(O(1),O(1)).
768.24/213.13	            
768.24/213.13	            Weak DPs:
768.24/213.13	              { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.24/213.13	              , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.24/213.13	                c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.24/213.13	                    matrixMult^#(@acc, @m))
768.24/213.13	              , attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.24/213.13	              , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.24/213.13	              , matrixMult3^#(@m1, @m2, @m3) ->
768.24/213.13	                c_16(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.24/213.13	                     matrixMult^#(@m1, @m2))
768.24/213.13	              , matrixMult^#(@m1, @m2) -> c_17(transAcc^#(@m2, makeBase(@m2)))
768.24/213.13	              , transpose'^#(@m) -> c_18(transAcc^#(@m, makeBase(@m)))
768.24/213.13	              , transAcc^#(@m, @base) -> c_7(transAcc#1^#(@m, @base))
768.24/213.13	              , transAcc#1^#(::(@l, @m'), @base) ->
768.24/213.13	                c_11(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.24/213.13	              , attach#2^#(::(@l, @ls), @x, @xs) -> c_13(attach^#(@xs, @ls)) }
768.24/213.13	            Weak Trs:
768.24/213.13	              { attach(@line, @m) -> attach#1(@line, @m)
768.24/213.13	              , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.24/213.13	              , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.24/213.13	              , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.24/213.13	              , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.24/213.13	              , #add(#0(), @y) -> @y
768.24/213.13	              , mult#2(nil(), @x, @xs) -> #abs(#0())
768.24/213.13	              , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.24/213.13	              , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.24/213.13	              , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.24/213.13	              , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.24/213.13	              , +(@x, @y) -> #add(@x, @y)
768.24/213.13	              , transAcc#1(nil(), @base) -> @base
768.24/213.13	              , transAcc#1(::(@l, @m'), @base) ->
768.24/213.13	                attach(@l, transAcc(@m', @base))
768.24/213.13	              , *(@x, @y) -> #mult(@x, @y)
768.24/213.13	              , mkBase#1(nil()) -> nil()
768.24/213.13	              , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.24/213.13	              , attach#1(nil(), @m) -> nil()
768.24/213.13	              , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.24/213.13	              , matrixMult'#1(nil(), @m2) -> nil()
768.24/213.13	              , matrixMult'#1(::(@l, @ls), @m2) ->
768.24/213.13	                ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.24/213.13	              , #natmult(#0(), @y) -> #0()
768.24/213.13	              , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.24/213.13	              , mkBase(@m) -> mkBase#1(@m)
768.24/213.13	              , makeBase(@m) -> makeBase#1(@m)
768.24/213.13	              , mult#1(nil(), @l2) -> #abs(#0())
768.24/213.13	              , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.24/213.13	              , lineMult#1(nil(), @l) -> nil()
768.24/213.13	              , lineMult#1(::(@x, @xs), @l) ->
768.24/213.13	                ::(mult(@l, @x), lineMult(@l, @xs))
768.24/213.13	              , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.24/213.13	              , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.24/213.13	              , #mult(#neg(@x), #0()) -> #0()
768.24/213.13	              , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.24/213.13	              , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.24/213.13	              , #mult(#pos(@x), #0()) -> #0()
768.24/213.13	              , #mult(#0(), #neg(@y)) -> #0()
768.24/213.13	              , #mult(#0(), #pos(@y)) -> #0()
768.24/213.13	              , #mult(#0(), #0()) -> #0()
768.24/213.13	              , attach#2(nil(), @x, @xs) -> nil()
768.24/213.13	              , attach#2(::(@l, @ls), @x, @xs) ->
768.24/213.13	                ::(::(@x, @l), attach(@xs, @ls))
768.24/213.13	              , #succ(#neg(#s(#0()))) -> #0()
768.24/213.13	              , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.24/213.13	              , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.24/213.13	              , #succ(#0()) -> #pos(#s(#0()))
768.24/213.13	              , makeBase#1(nil()) -> nil()
768.24/213.13	              , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.24/213.13	              , matrixMult(@m1, @m2) ->
768.24/213.13	                matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.24/213.13	              , #abs(#neg(@x)) -> #pos(@x)
768.24/213.13	              , #abs(#pos(@x)) -> #pos(@x)
768.24/213.13	              , #abs(#0()) -> #0()
768.24/213.13	              , #abs(#s(@x)) -> #pos(#s(@x))
768.24/213.13	              , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.24/213.13	              , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.24/213.13	              , #pred(#pos(#s(#0()))) -> #0()
768.24/213.13	              , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.24/213.13	              , #pred(#0()) -> #neg(#s(#0())) }
768.24/213.13	            Obligation:
768.24/213.13	              innermost runtime complexity
768.24/213.13	            Answer:
768.24/213.13	              YES(O(1),O(1))
768.24/213.13	            
768.24/213.13	            The following weak DPs constitute a sub-graph of the DG that is
768.24/213.13	            closed under successors. The DPs are removed.
768.24/213.13	            
768.24/213.13	            { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.24/213.13	            , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.24/213.13	              c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.24/213.13	                  matrixMult^#(@acc, @m))
768.24/213.13	            , attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.24/213.13	            , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.24/213.13	            , matrixMult3^#(@m1, @m2, @m3) ->
768.24/213.13	              c_16(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.24/213.13	                   matrixMult^#(@m1, @m2))
768.24/213.13	            , matrixMult^#(@m1, @m2) -> c_17(transAcc^#(@m2, makeBase(@m2)))
768.24/213.13	            , transpose'^#(@m) -> c_18(transAcc^#(@m, makeBase(@m)))
768.24/213.13	            , transAcc^#(@m, @base) -> c_7(transAcc#1^#(@m, @base))
768.24/213.13	            , transAcc#1^#(::(@l, @m'), @base) ->
768.24/213.13	              c_11(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.24/213.13	            , attach#2^#(::(@l, @ls), @x, @xs) -> c_13(attach^#(@xs, @ls)) }
768.24/213.13	            
768.24/213.13	            We are left with following problem, upon which TcT provides the
768.24/213.13	            certificate YES(O(1),O(1)).
768.24/213.13	            
768.24/213.13	            Weak Trs:
768.24/213.13	              { attach(@line, @m) -> attach#1(@line, @m)
768.24/213.13	              , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.24/213.13	              , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.24/213.13	              , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.24/213.13	              , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.24/213.13	              , #add(#0(), @y) -> @y
768.24/213.13	              , mult#2(nil(), @x, @xs) -> #abs(#0())
768.24/213.13	              , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.24/213.13	              , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.24/213.13	              , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.24/213.13	              , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.24/213.13	              , +(@x, @y) -> #add(@x, @y)
768.24/213.13	              , transAcc#1(nil(), @base) -> @base
768.24/213.13	              , transAcc#1(::(@l, @m'), @base) ->
768.24/213.13	                attach(@l, transAcc(@m', @base))
768.24/213.13	              , *(@x, @y) -> #mult(@x, @y)
768.24/213.13	              , mkBase#1(nil()) -> nil()
768.24/213.13	              , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.24/213.13	              , attach#1(nil(), @m) -> nil()
768.24/213.13	              , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.24/213.13	              , matrixMult'#1(nil(), @m2) -> nil()
768.24/213.13	              , matrixMult'#1(::(@l, @ls), @m2) ->
768.24/213.13	                ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.24/213.13	              , #natmult(#0(), @y) -> #0()
768.24/213.13	              , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.24/213.13	              , mkBase(@m) -> mkBase#1(@m)
768.24/213.13	              , makeBase(@m) -> makeBase#1(@m)
768.24/213.13	              , mult#1(nil(), @l2) -> #abs(#0())
768.24/213.13	              , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.24/213.13	              , lineMult#1(nil(), @l) -> nil()
768.24/213.13	              , lineMult#1(::(@x, @xs), @l) ->
768.24/213.13	                ::(mult(@l, @x), lineMult(@l, @xs))
768.24/213.13	              , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.24/213.13	              , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.24/213.13	              , #mult(#neg(@x), #0()) -> #0()
768.24/213.13	              , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.24/213.13	              , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.24/213.13	              , #mult(#pos(@x), #0()) -> #0()
768.24/213.13	              , #mult(#0(), #neg(@y)) -> #0()
768.24/213.13	              , #mult(#0(), #pos(@y)) -> #0()
768.24/213.13	              , #mult(#0(), #0()) -> #0()
768.24/213.13	              , attach#2(nil(), @x, @xs) -> nil()
768.24/213.13	              , attach#2(::(@l, @ls), @x, @xs) ->
768.24/213.13	                ::(::(@x, @l), attach(@xs, @ls))
768.24/213.13	              , #succ(#neg(#s(#0()))) -> #0()
768.24/213.13	              , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.24/213.13	              , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.24/213.13	              , #succ(#0()) -> #pos(#s(#0()))
768.24/213.13	              , makeBase#1(nil()) -> nil()
768.24/213.13	              , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.24/213.13	              , matrixMult(@m1, @m2) ->
768.24/213.13	                matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.24/213.13	              , #abs(#neg(@x)) -> #pos(@x)
768.24/213.13	              , #abs(#pos(@x)) -> #pos(@x)
768.24/213.13	              , #abs(#0()) -> #0()
768.24/213.13	              , #abs(#s(@x)) -> #pos(#s(@x))
768.24/213.13	              , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.24/213.13	              , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.24/213.13	              , #pred(#pos(#s(#0()))) -> #0()
768.24/213.13	              , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.24/213.13	              , #pred(#0()) -> #neg(#s(#0())) }
768.24/213.13	            Obligation:
768.24/213.13	              innermost runtime complexity
768.24/213.13	            Answer:
768.24/213.13	              YES(O(1),O(1))
768.24/213.13	            
768.24/213.13	            No rule is usable, rules are removed from the input problem.
768.24/213.13	            
768.24/213.13	            We are left with following problem, upon which TcT provides the
768.24/213.13	            certificate YES(O(1),O(1)).
768.24/213.13	            
768.24/213.13	            Rules: Empty
768.24/213.13	            Obligation:
768.24/213.13	              innermost runtime complexity
768.24/213.13	            Answer:
768.24/213.13	              YES(O(1),O(1))
768.24/213.13	            
768.24/213.13	            Empty rules are trivially bounded
768.24/213.13	         
768.24/213.13	         S) We are left with following problem, upon which TcT provides the
768.24/213.13	            certificate YES(O(1),O(n^1)).
768.24/213.13	            
768.24/213.13	            Strict DPs:
768.24/213.13	              { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.24/213.13	              , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.24/213.13	                c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.24/213.13	                    matrixMult^#(@acc, @m)) }
768.24/213.13	            Weak DPs:
768.24/213.13	              { attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.24/213.13	              , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.24/213.13	              , matrixMult3^#(@m1, @m2, @m3) ->
768.24/213.13	                c_16(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.24/213.13	                     matrixMult^#(@m1, @m2))
768.24/213.13	              , matrixMult^#(@m1, @m2) -> c_17(transAcc^#(@m2, makeBase(@m2)))
768.24/213.13	              , transpose'^#(@m) -> c_18(transAcc^#(@m, makeBase(@m)))
768.24/213.13	              , transAcc^#(@m, @base) -> c_7(transAcc#1^#(@m, @base))
768.24/213.13	              , transAcc#1^#(::(@l, @m'), @base) ->
768.24/213.13	                c_11(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.24/213.13	              , attach#2^#(::(@l, @ls), @x, @xs) -> c_13(attach^#(@xs, @ls)) }
768.24/213.13	            Weak Trs:
768.24/213.13	              { attach(@line, @m) -> attach#1(@line, @m)
768.24/213.13	              , split(@m) -> split#1(@m)
768.24/213.13	              , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.24/213.13	              , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.24/213.13	              , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.24/213.13	              , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.24/213.13	              , #add(#0(), @y) -> @y
768.24/213.13	              , mult#2(nil(), @x, @xs) -> #abs(#0())
768.24/213.13	              , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.24/213.13	              , split#1(nil()) -> tuple#2(nil(), nil())
768.24/213.13	              , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.24/213.13	              , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.24/213.13	              , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.24/213.13	              , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.24/213.13	              , +(@x, @y) -> #add(@x, @y)
768.24/213.13	              , transAcc#1(nil(), @base) -> @base
768.24/213.13	              , transAcc#1(::(@l, @m'), @base) ->
768.24/213.13	                attach(@l, transAcc(@m', @base))
768.24/213.13	              , *(@x, @y) -> #mult(@x, @y)
768.24/213.13	              , mkBase#1(nil()) -> nil()
768.24/213.13	              , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.24/213.13	              , attach#1(nil(), @m) -> nil()
768.24/213.13	              , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.24/213.13	              , matrixMult'#1(nil(), @m2) -> nil()
768.24/213.13	              , matrixMult'#1(::(@l, @ls), @m2) ->
768.24/213.13	                ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.24/213.13	              , #natmult(#0(), @y) -> #0()
768.24/213.13	              , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.24/213.13	              , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.24/213.13	              , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.24/213.13	              , mkBase(@m) -> mkBase#1(@m)
768.24/213.13	              , makeBase(@m) -> makeBase#1(@m)
768.24/213.13	              , mult#1(nil(), @l2) -> #abs(#0())
768.24/213.13	              , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.24/213.13	              , lineMult#1(nil(), @l) -> nil()
768.24/213.13	              , lineMult#1(::(@x, @xs), @l) ->
768.24/213.13	                ::(mult(@l, @x), lineMult(@l, @xs))
768.24/213.13	              , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.24/213.13	              , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.24/213.13	              , #mult(#neg(@x), #0()) -> #0()
768.24/213.13	              , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.24/213.13	              , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.24/213.13	              , #mult(#pos(@x), #0()) -> #0()
768.24/213.13	              , #mult(#0(), #neg(@y)) -> #0()
768.24/213.13	              , #mult(#0(), #pos(@y)) -> #0()
768.24/213.13	              , #mult(#0(), #0()) -> #0()
768.24/213.13	              , attach#2(nil(), @x, @xs) -> nil()
768.24/213.13	              , attach#2(::(@l, @ls), @x, @xs) ->
768.24/213.13	                ::(::(@x, @l), attach(@xs, @ls))
768.24/213.13	              , #succ(#neg(#s(#0()))) -> #0()
768.24/213.13	              , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.24/213.13	              , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.24/213.13	              , #succ(#0()) -> #pos(#s(#0()))
768.24/213.13	              , makeBase#1(nil()) -> nil()
768.24/213.13	              , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.24/213.13	              , matrixMult(@m1, @m2) ->
768.24/213.13	                matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.24/213.13	              , #abs(#neg(@x)) -> #pos(@x)
768.24/213.13	              , #abs(#pos(@x)) -> #pos(@x)
768.24/213.13	              , #abs(#0()) -> #0()
768.24/213.13	              , #abs(#s(@x)) -> #pos(#s(@x))
768.24/213.13	              , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.24/213.13	              , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.24/213.13	                tuple#2(::(@x, @ys), ::(@xs, @m'))
768.24/213.13	              , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.24/213.13	              , #pred(#pos(#s(#0()))) -> #0()
768.24/213.13	              , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.24/213.13	              , #pred(#0()) -> #neg(#s(#0())) }
768.24/213.13	            Obligation:
768.24/213.13	              innermost runtime complexity
768.24/213.13	            Answer:
768.24/213.13	              YES(O(1),O(n^1))
768.24/213.13	            
768.24/213.13	            The following weak DPs constitute a sub-graph of the DG that is
768.24/213.13	            closed under successors. The DPs are removed.
768.24/213.13	            
768.24/213.13	            { attach^#(@line, @m) -> c_3(attach#1^#(@line, @m))
768.24/213.13	            , attach#1^#(::(@x, @xs), @m) -> c_4(attach#2^#(@m, @x, @xs))
768.24/213.13	            , matrixMult3^#(@m1, @m2, @m3) ->
768.24/213.13	              c_16(matrixMult^#(matrixMult(@m1, @m2), @m3),
768.24/213.13	                   matrixMult^#(@m1, @m2))
768.24/213.13	            , matrixMult^#(@m1, @m2) -> c_17(transAcc^#(@m2, makeBase(@m2)))
768.24/213.13	            , transpose'^#(@m) -> c_18(transAcc^#(@m, makeBase(@m)))
768.24/213.13	            , transAcc^#(@m, @base) -> c_7(transAcc#1^#(@m, @base))
768.24/213.13	            , transAcc#1^#(::(@l, @m'), @base) ->
768.24/213.13	              c_11(attach^#(@l, transAcc(@m', @base)), transAcc^#(@m', @base))
768.24/213.13	            , attach#2^#(::(@l, @ls), @x, @xs) -> c_13(attach^#(@xs, @ls)) }
768.24/213.13	            
768.24/213.13	            We are left with following problem, upon which TcT provides the
768.24/213.13	            certificate YES(O(1),O(n^1)).
768.24/213.13	            
768.24/213.13	            Strict DPs:
768.24/213.13	              { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.24/213.13	              , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.24/213.13	                c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.24/213.13	                    matrixMult^#(@acc, @m)) }
768.24/213.13	            Weak Trs:
768.24/213.13	              { attach(@line, @m) -> attach#1(@line, @m)
768.24/213.13	              , split(@m) -> split#1(@m)
768.24/213.13	              , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.24/213.13	              , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.24/213.13	              , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.24/213.13	              , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.24/213.13	              , #add(#0(), @y) -> @y
768.24/213.13	              , mult#2(nil(), @x, @xs) -> #abs(#0())
768.24/213.13	              , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.24/213.13	              , split#1(nil()) -> tuple#2(nil(), nil())
768.24/213.13	              , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.24/213.13	              , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.24/213.13	              , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.24/213.13	              , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.24/213.13	              , +(@x, @y) -> #add(@x, @y)
768.24/213.13	              , transAcc#1(nil(), @base) -> @base
768.24/213.13	              , transAcc#1(::(@l, @m'), @base) ->
768.24/213.13	                attach(@l, transAcc(@m', @base))
768.24/213.13	              , *(@x, @y) -> #mult(@x, @y)
768.24/213.13	              , mkBase#1(nil()) -> nil()
768.24/213.13	              , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.24/213.13	              , attach#1(nil(), @m) -> nil()
768.24/213.13	              , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.24/213.13	              , matrixMult'#1(nil(), @m2) -> nil()
768.24/213.13	              , matrixMult'#1(::(@l, @ls), @m2) ->
768.24/213.13	                ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.24/213.13	              , #natmult(#0(), @y) -> #0()
768.24/213.13	              , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.24/213.13	              , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.24/213.13	              , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.24/213.13	              , mkBase(@m) -> mkBase#1(@m)
768.24/213.13	              , makeBase(@m) -> makeBase#1(@m)
768.24/213.13	              , mult#1(nil(), @l2) -> #abs(#0())
768.24/213.13	              , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.24/213.13	              , lineMult#1(nil(), @l) -> nil()
768.24/213.13	              , lineMult#1(::(@x, @xs), @l) ->
768.24/213.13	                ::(mult(@l, @x), lineMult(@l, @xs))
768.24/213.13	              , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.24/213.13	              , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.24/213.13	              , #mult(#neg(@x), #0()) -> #0()
768.24/213.13	              , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.24/213.13	              , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.24/213.13	              , #mult(#pos(@x), #0()) -> #0()
768.24/213.13	              , #mult(#0(), #neg(@y)) -> #0()
768.24/213.13	              , #mult(#0(), #pos(@y)) -> #0()
768.24/213.13	              , #mult(#0(), #0()) -> #0()
768.24/213.13	              , attach#2(nil(), @x, @xs) -> nil()
768.24/213.13	              , attach#2(::(@l, @ls), @x, @xs) ->
768.24/213.13	                ::(::(@x, @l), attach(@xs, @ls))
768.24/213.13	              , #succ(#neg(#s(#0()))) -> #0()
768.24/213.13	              , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.24/213.13	              , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.24/213.13	              , #succ(#0()) -> #pos(#s(#0()))
768.24/213.13	              , makeBase#1(nil()) -> nil()
768.24/213.13	              , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.24/213.13	              , matrixMult(@m1, @m2) ->
768.24/213.13	                matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.24/213.13	              , #abs(#neg(@x)) -> #pos(@x)
768.24/213.13	              , #abs(#pos(@x)) -> #pos(@x)
768.24/213.13	              , #abs(#0()) -> #0()
768.24/213.13	              , #abs(#s(@x)) -> #pos(#s(@x))
768.24/213.13	              , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.24/213.13	              , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.24/213.13	                tuple#2(::(@x, @ys), ::(@xs, @m'))
768.24/213.13	              , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.24/213.13	              , #pred(#pos(#s(#0()))) -> #0()
768.24/213.13	              , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.24/213.13	              , #pred(#0()) -> #neg(#s(#0())) }
768.24/213.13	            Obligation:
768.24/213.13	              innermost runtime complexity
768.24/213.13	            Answer:
768.24/213.13	              YES(O(1),O(n^1))
768.24/213.13	            
768.24/213.13	            Due to missing edges in the dependency-graph, the right-hand sides
768.24/213.13	            of following rules could be simplified:
768.24/213.13	            
768.24/213.13	              { matrixMultList#1^#(::(@m, @ms), @acc) ->
768.24/213.13	                c_2(matrixMultList^#(matrixMult(@acc, @m), @ms),
768.24/213.13	                    matrixMult^#(@acc, @m)) }
768.24/213.13	            
768.24/213.13	            We are left with following problem, upon which TcT provides the
768.24/213.13	            certificate YES(O(1),O(n^1)).
768.24/213.13	            
768.24/213.13	            Strict DPs:
768.24/213.13	              { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.24/213.13	              , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.24/213.13	                c_2(matrixMultList^#(matrixMult(@acc, @m), @ms)) }
768.24/213.13	            Weak Trs:
768.24/213.13	              { attach(@line, @m) -> attach#1(@line, @m)
768.24/213.13	              , split(@m) -> split#1(@m)
768.24/213.13	              , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.24/213.13	              , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.24/213.13	              , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.24/213.13	              , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.24/213.13	              , #add(#0(), @y) -> @y
768.24/213.13	              , mult#2(nil(), @x, @xs) -> #abs(#0())
768.24/213.13	              , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.24/213.13	              , split#1(nil()) -> tuple#2(nil(), nil())
768.24/213.13	              , split#1(::(@l, @ls)) -> split#2(@l, @ls)
768.24/213.13	              , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.24/213.13	              , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.24/213.13	              , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.24/213.13	              , +(@x, @y) -> #add(@x, @y)
768.24/213.13	              , transAcc#1(nil(), @base) -> @base
768.24/213.13	              , transAcc#1(::(@l, @m'), @base) ->
768.24/213.13	                attach(@l, transAcc(@m', @base))
768.24/213.13	              , *(@x, @y) -> #mult(@x, @y)
768.24/213.13	              , mkBase#1(nil()) -> nil()
768.24/213.13	              , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.24/213.13	              , attach#1(nil(), @m) -> nil()
768.24/213.13	              , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.24/213.13	              , matrixMult'#1(nil(), @m2) -> nil()
768.24/213.13	              , matrixMult'#1(::(@l, @ls), @m2) ->
768.24/213.13	                ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.24/213.13	              , #natmult(#0(), @y) -> #0()
768.24/213.13	              , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.24/213.13	              , split#2(nil(), @ls) -> tuple#2(nil(), nil())
768.24/213.13	              , split#2(::(@x, @xs), @ls) -> split#3(split(@ls), @x, @xs)
768.24/213.13	              , mkBase(@m) -> mkBase#1(@m)
768.24/213.13	              , makeBase(@m) -> makeBase#1(@m)
768.24/213.13	              , mult#1(nil(), @l2) -> #abs(#0())
768.24/213.13	              , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.24/213.13	              , lineMult#1(nil(), @l) -> nil()
768.24/213.13	              , lineMult#1(::(@x, @xs), @l) ->
768.24/213.13	                ::(mult(@l, @x), lineMult(@l, @xs))
768.24/213.13	              , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.24/213.13	              , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.24/213.13	              , #mult(#neg(@x), #0()) -> #0()
768.24/213.13	              , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.24/213.13	              , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.24/213.13	              , #mult(#pos(@x), #0()) -> #0()
768.24/213.13	              , #mult(#0(), #neg(@y)) -> #0()
768.24/213.13	              , #mult(#0(), #pos(@y)) -> #0()
768.24/213.13	              , #mult(#0(), #0()) -> #0()
768.24/213.13	              , attach#2(nil(), @x, @xs) -> nil()
768.24/213.13	              , attach#2(::(@l, @ls), @x, @xs) ->
768.24/213.13	                ::(::(@x, @l), attach(@xs, @ls))
768.24/213.13	              , #succ(#neg(#s(#0()))) -> #0()
768.24/213.13	              , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.24/213.13	              , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.24/213.13	              , #succ(#0()) -> #pos(#s(#0()))
768.24/213.13	              , makeBase#1(nil()) -> nil()
768.24/213.13	              , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.24/213.13	              , matrixMult(@m1, @m2) ->
768.24/213.13	                matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.24/213.13	              , #abs(#neg(@x)) -> #pos(@x)
768.24/213.13	              , #abs(#pos(@x)) -> #pos(@x)
768.24/213.13	              , #abs(#0()) -> #0()
768.24/213.13	              , #abs(#s(@x)) -> #pos(#s(@x))
768.24/213.13	              , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.24/213.13	              , split#3(tuple#2(@ys, @m'), @x, @xs) ->
768.24/213.13	                tuple#2(::(@x, @ys), ::(@xs, @m'))
768.24/213.13	              , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.24/213.13	              , #pred(#pos(#s(#0()))) -> #0()
768.24/213.13	              , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.24/213.13	              , #pred(#0()) -> #neg(#s(#0())) }
768.24/213.13	            Obligation:
768.24/213.13	              innermost runtime complexity
768.24/213.13	            Answer:
768.24/213.13	              YES(O(1),O(n^1))
768.24/213.13	            
768.24/213.13	            We replace rewrite rules by usable rules:
768.24/213.13	            
768.24/213.13	              Weak Usable Rules:
768.24/213.13	                { attach(@line, @m) -> attach#1(@line, @m)
768.24/213.13	                , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.24/213.13	                , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.24/213.13	                , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.24/213.13	                , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.24/213.13	                , #add(#0(), @y) -> @y
768.24/213.13	                , mult#2(nil(), @x, @xs) -> #abs(#0())
768.24/213.13	                , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.24/213.13	                , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.24/213.13	                , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.24/213.13	                , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.24/213.13	                , +(@x, @y) -> #add(@x, @y)
768.24/213.13	                , transAcc#1(nil(), @base) -> @base
768.24/213.13	                , transAcc#1(::(@l, @m'), @base) ->
768.24/213.13	                  attach(@l, transAcc(@m', @base))
768.24/213.13	                , *(@x, @y) -> #mult(@x, @y)
768.24/213.13	                , mkBase#1(nil()) -> nil()
768.24/213.13	                , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.24/213.13	                , attach#1(nil(), @m) -> nil()
768.24/213.13	                , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.24/213.13	                , matrixMult'#1(nil(), @m2) -> nil()
768.24/213.13	                , matrixMult'#1(::(@l, @ls), @m2) ->
768.24/213.13	                  ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.24/213.13	                , #natmult(#0(), @y) -> #0()
768.24/213.13	                , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.24/213.13	                , mkBase(@m) -> mkBase#1(@m)
768.24/213.13	                , makeBase(@m) -> makeBase#1(@m)
768.24/213.13	                , mult#1(nil(), @l2) -> #abs(#0())
768.24/213.13	                , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.24/213.13	                , lineMult#1(nil(), @l) -> nil()
768.24/213.13	                , lineMult#1(::(@x, @xs), @l) ->
768.24/213.13	                  ::(mult(@l, @x), lineMult(@l, @xs))
768.24/213.13	                , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.24/213.13	                , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.24/213.14	                , #mult(#neg(@x), #0()) -> #0()
768.24/213.14	                , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.24/213.14	                , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.24/213.14	                , #mult(#pos(@x), #0()) -> #0()
768.24/213.14	                , #mult(#0(), #neg(@y)) -> #0()
768.24/213.14	                , #mult(#0(), #pos(@y)) -> #0()
768.24/213.14	                , #mult(#0(), #0()) -> #0()
768.24/213.14	                , attach#2(nil(), @x, @xs) -> nil()
768.24/213.14	                , attach#2(::(@l, @ls), @x, @xs) ->
768.24/213.14	                  ::(::(@x, @l), attach(@xs, @ls))
768.24/213.14	                , #succ(#neg(#s(#0()))) -> #0()
768.24/213.14	                , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.24/213.14	                , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.24/213.14	                , #succ(#0()) -> #pos(#s(#0()))
768.24/213.14	                , makeBase#1(nil()) -> nil()
768.24/213.14	                , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.24/213.14	                , matrixMult(@m1, @m2) ->
768.24/213.14	                  matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.24/213.14	                , #abs(#neg(@x)) -> #pos(@x)
768.24/213.14	                , #abs(#pos(@x)) -> #pos(@x)
768.24/213.14	                , #abs(#0()) -> #0()
768.24/213.14	                , #abs(#s(@x)) -> #pos(#s(@x))
768.24/213.14	                , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.24/213.14	                , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.24/213.14	                , #pred(#pos(#s(#0()))) -> #0()
768.24/213.14	                , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.24/213.14	                , #pred(#0()) -> #neg(#s(#0())) }
768.24/213.14	            
768.24/213.14	            We are left with following problem, upon which TcT provides the
768.24/213.14	            certificate YES(O(1),O(n^1)).
768.24/213.14	            
768.24/213.14	            Strict DPs:
768.24/213.14	              { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.24/213.14	              , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.24/213.14	                c_2(matrixMultList^#(matrixMult(@acc, @m), @ms)) }
768.24/213.14	            Weak Trs:
768.24/213.14	              { attach(@line, @m) -> attach#1(@line, @m)
768.24/213.14	              , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.24/213.14	              , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.24/213.14	              , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.24/213.14	              , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.24/213.14	              , #add(#0(), @y) -> @y
768.24/213.14	              , mult#2(nil(), @x, @xs) -> #abs(#0())
768.24/213.14	              , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.24/213.14	              , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.24/213.14	              , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.24/213.14	              , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.24/213.14	              , +(@x, @y) -> #add(@x, @y)
768.24/213.14	              , transAcc#1(nil(), @base) -> @base
768.24/213.14	              , transAcc#1(::(@l, @m'), @base) ->
768.24/213.14	                attach(@l, transAcc(@m', @base))
768.24/213.14	              , *(@x, @y) -> #mult(@x, @y)
768.24/213.14	              , mkBase#1(nil()) -> nil()
768.24/213.14	              , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.24/213.14	              , attach#1(nil(), @m) -> nil()
768.24/213.14	              , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.24/213.14	              , matrixMult'#1(nil(), @m2) -> nil()
768.24/213.14	              , matrixMult'#1(::(@l, @ls), @m2) ->
768.24/213.14	                ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.24/213.14	              , #natmult(#0(), @y) -> #0()
768.24/213.14	              , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.24/213.14	              , mkBase(@m) -> mkBase#1(@m)
768.24/213.14	              , makeBase(@m) -> makeBase#1(@m)
768.24/213.14	              , mult#1(nil(), @l2) -> #abs(#0())
768.24/213.14	              , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.24/213.14	              , lineMult#1(nil(), @l) -> nil()
768.24/213.14	              , lineMult#1(::(@x, @xs), @l) ->
768.24/213.14	                ::(mult(@l, @x), lineMult(@l, @xs))
768.24/213.14	              , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.24/213.14	              , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.24/213.14	              , #mult(#neg(@x), #0()) -> #0()
768.24/213.14	              , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.24/213.14	              , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.24/213.14	              , #mult(#pos(@x), #0()) -> #0()
768.24/213.14	              , #mult(#0(), #neg(@y)) -> #0()
768.24/213.14	              , #mult(#0(), #pos(@y)) -> #0()
768.24/213.14	              , #mult(#0(), #0()) -> #0()
768.24/213.14	              , attach#2(nil(), @x, @xs) -> nil()
768.24/213.14	              , attach#2(::(@l, @ls), @x, @xs) ->
768.24/213.14	                ::(::(@x, @l), attach(@xs, @ls))
768.24/213.14	              , #succ(#neg(#s(#0()))) -> #0()
768.24/213.14	              , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.24/213.14	              , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.24/213.14	              , #succ(#0()) -> #pos(#s(#0()))
768.24/213.14	              , makeBase#1(nil()) -> nil()
768.24/213.14	              , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.24/213.14	              , matrixMult(@m1, @m2) ->
768.24/213.14	                matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.24/213.14	              , #abs(#neg(@x)) -> #pos(@x)
768.24/213.14	              , #abs(#pos(@x)) -> #pos(@x)
768.24/213.14	              , #abs(#0()) -> #0()
768.24/213.14	              , #abs(#s(@x)) -> #pos(#s(@x))
768.24/213.14	              , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.24/213.14	              , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.24/213.14	              , #pred(#pos(#s(#0()))) -> #0()
768.24/213.14	              , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.24/213.14	              , #pred(#0()) -> #neg(#s(#0())) }
768.24/213.14	            Obligation:
768.24/213.14	              innermost runtime complexity
768.24/213.14	            Answer:
768.24/213.14	              YES(O(1),O(n^1))
768.24/213.14	            
768.24/213.14	            We use the processor 'matrix interpretation of dimension 1' to
768.24/213.14	            orient following rules strictly.
768.24/213.14	            
768.24/213.14	            DPs:
768.24/213.14	              { 1: matrixMultList^#(@acc, @mm) ->
768.24/213.14	                   c_1(matrixMultList#1^#(@mm, @acc)) }
768.24/213.14	            Trs: { mkBase(@m) -> mkBase#1(@m) }
768.24/213.14	            
768.24/213.14	            Sub-proof:
768.24/213.14	            ----------
768.24/213.14	              The following argument positions are usable:
768.24/213.14	                Uargs(c_1) = {1}, Uargs(c_2) = {1}
768.24/213.14	              
768.24/213.14	              TcT has computed the following constructor-based matrix
768.24/213.14	              interpretation satisfying not(EDA).
768.24/213.14	              
768.24/213.14	                            [attach](x1, x2) = [3] x1 + [0]         
768.24/213.14	                                                                    
768.24/213.14	                              [#add](x1, x2) = [0]                  
768.24/213.14	                                                                    
768.24/213.14	                        [mult#2](x1, x2, x3) = [4] x2 + [7] x3 + [0]
768.24/213.14	                                                                    
768.24/213.14	                                       [nil] = [0]                  
768.24/213.14	                                                                    
768.24/213.14	                       [matrixMult'](x1, x2) = [4] x1 + [0]         
768.24/213.14	                                                                    
768.24/213.14	                          [transAcc](x1, x2) = [0]                  
768.24/213.14	                                                                    
768.24/213.14	                              [mult](x1, x2) = [0]                  
768.24/213.14	                                                                    
768.24/213.14	                                 [+](x1, x2) = [0]                  
768.24/213.14	                                                                    
768.24/213.14	                        [transAcc#1](x1, x2) = [4] x2 + [0]         
768.24/213.14	                                                                    
768.24/213.14	                                  [#neg](x1) = [0]                  
768.24/213.14	                                                                    
768.24/213.14	                                 [*](x1, x2) = [0]                  
768.24/213.14	                                                                    
768.24/213.14	                              [mkBase#1](x1) = [0]                  
768.24/213.14	                                                                    
768.24/213.14	                          [attach#1](x1, x2) = [4] x2 + [0]         
768.24/213.14	                                                                    
768.24/213.14	                     [matrixMult'#1](x1, x2) = [0]                  
768.24/213.14	                                                                    
768.24/213.14	                          [#natmult](x1, x2) = [0]                  
768.24/213.14	                                                                    
768.24/213.14	                                  [#pos](x1) = [0]                  
768.24/213.14	                                                                    
768.24/213.14	                                [mkBase](x1) = [2] x1 + [4]         
768.24/213.14	                                                                    
768.24/213.14	                              [makeBase](x1) = [0]                  
768.24/213.14	                                                                    
768.24/213.14	                            [mult#1](x1, x2) = [4] x2 + [0]         
768.24/213.14	                                                                    
768.24/213.14	                                [::](x1, x2) = [1] x1 + [1] x2 + [4]
768.24/213.14	                                                                    
768.24/213.14	                        [lineMult#1](x1, x2) = [4] x2 + [0]         
768.24/213.14	                                                                    
768.24/213.14	                             [#mult](x1, x2) = [0]                  
768.24/213.14	                                                                    
768.24/213.14	                      [attach#2](x1, x2, x3) = [4] x3 + [0]         
768.24/213.14	                                                                    
768.24/213.14	                                 [#succ](x1) = [0]                  
768.24/213.14	                                                                    
768.24/213.14	                                        [#0] = [0]                  
768.24/213.14	                                                                    
768.24/213.14	                            [makeBase#1](x1) = [0]                  
768.24/213.14	                                                                    
768.24/213.14	                        [matrixMult](x1, x2) = [0]                  
768.24/213.14	                                                                    
768.24/213.14	                                  [#abs](x1) = [0]                  
768.24/213.14	                                                                    
768.24/213.14	                          [lineMult](x1, x2) = [4]                  
768.24/213.14	                                                                    
768.24/213.14	                                 [#pred](x1) = [0]                  
768.24/213.14	                                                                    
768.24/213.14	                                    [#s](x1) = [0]                  
768.24/213.14	                                                                    
768.24/213.14	                  [matrixMultList^#](x1, x2) = [2] x2 + [4]         
768.24/213.14	                                                                    
768.24/213.14	                [matrixMultList#1^#](x1, x2) = [2] x1 + [0]         
768.24/213.14	                                                                    
768.24/213.14	                                   [c_1](x1) = [1] x1 + [1]         
768.24/213.14	                                                                    
768.24/213.14	                                   [c_2](x1) = [1] x1 + [4]         
768.24/213.14	              
768.24/213.14	              The order satisfies the following ordering constraints:
768.24/213.14	              
768.24/213.14	                                    [attach(@line, @m)] =  [3] @line + [0]                                   
768.24/213.14	                                                        ?  [4] @m + [0]                                      
768.24/213.14	                                                        =  [attach#1(@line, @m)]                             
768.24/213.14	                                                                                                             
768.24/213.14	                             [#add(#neg(#s(#0())), @y)] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#pred(@y)]                                       
768.24/213.14	                                                                                                             
768.24/213.14	                           [#add(#neg(#s(#s(@x))), @y)] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#pred(#add(#pos(#s(@x)), @y))]                   
768.24/213.14	                                                                                                             
768.24/213.14	                             [#add(#pos(#s(#0())), @y)] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#succ(@y)]                                       
768.24/213.14	                                                                                                             
768.24/213.14	                           [#add(#pos(#s(#s(@x))), @y)] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#succ(#add(#pos(#s(@x)), @y))]                   
768.24/213.14	                                                                                                             
768.24/213.14	                                       [#add(#0(), @y)] =  [0]                                               
768.24/213.14	                                                        ?  [1] @y + [0]                                      
768.24/213.14	                                                        =  [@y]                                              
768.24/213.14	                                                                                                             
768.24/213.14	                               [mult#2(nil(), @x, @xs)] =  [4] @x + [7] @xs + [0]                            
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#abs(#0())]                                      
768.24/213.14	                                                                                                             
768.24/213.14	                         [mult#2(::(@y, @ys), @x, @xs)] =  [4] @x + [7] @xs + [0]                            
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [+(*(@x, @y), mult(@xs, @ys))]                    
768.24/213.14	                                                                                                             
768.24/213.14	                                [matrixMult'(@m1, @m2)] =  [4] @m1 + [0]                                     
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [matrixMult'#1(@m1, @m2)]                         
768.24/213.14	                                                                                                             
768.24/213.14	                                  [transAcc(@m, @base)] =  [0]                                               
768.24/213.14	                                                        ?  [4] @base + [0]                                   
768.24/213.14	                                                        =  [transAcc#1(@m, @base)]                           
768.24/213.14	                                                                                                             
768.24/213.14	                                       [mult(@l1, @l2)] =  [0]                                               
768.24/213.14	                                                        ?  [4] @l2 + [0]                                     
768.24/213.14	                                                        =  [mult#1(@l1, @l2)]                                
768.24/213.14	                                                                                                             
768.24/213.14	                                            [+(@x, @y)] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#add(@x, @y)]                                    
768.24/213.14	                                                                                                             
768.24/213.14	                             [transAcc#1(nil(), @base)] =  [4] @base + [0]                                   
768.24/213.14	                                                        >= [1] @base + [0]                                   
768.24/213.14	                                                        =  [@base]                                           
768.24/213.14	                                                                                                             
768.24/213.14	                       [transAcc#1(::(@l, @m'), @base)] =  [4] @base + [0]                                   
768.24/213.14	                                                        ?  [3] @l + [0]                                      
768.24/213.14	                                                        =  [attach(@l, transAcc(@m', @base))]                
768.24/213.14	                                                                                                             
768.24/213.14	                                            [*(@x, @y)] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#mult(@x, @y)]                                   
768.24/213.14	                                                                                                             
768.24/213.14	                                      [mkBase#1(nil())] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [nil()]                                           
768.24/213.14	                                                                                                             
768.24/213.14	                                [mkBase#1(::(@l, @m'))] =  [0]                                               
768.24/213.14	                                                        ?  [2] @m' + [8]                                     
768.24/213.14	                                                        =  [::(nil(), mkBase(@m'))]                          
768.24/213.14	                                                                                                             
768.24/213.14	                                  [attach#1(nil(), @m)] =  [4] @m + [0]                                      
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [nil()]                                           
768.24/213.14	                                                                                                             
768.24/213.14	                            [attach#1(::(@x, @xs), @m)] =  [4] @m + [0]                                      
768.24/213.14	                                                        ?  [4] @xs + [0]                                     
768.24/213.14	                                                        =  [attach#2(@m, @x, @xs)]                           
768.24/213.14	                                                                                                             
768.24/213.14	                            [matrixMult'#1(nil(), @m2)] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [nil()]                                           
768.24/213.14	                                                                                                             
768.24/213.14	                      [matrixMult'#1(::(@l, @ls), @m2)] =  [0]                                               
768.24/213.14	                                                        ?  [4] @ls + [8]                                     
768.24/213.14	                                                        =  [::(lineMult(@l, @m2), matrixMult'(@ls, @m2))]    
768.24/213.14	                                                                                                             
768.24/213.14	                                   [#natmult(#0(), @y)] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#0()]                                            
768.24/213.14	                                                                                                             
768.24/213.14	                                 [#natmult(#s(@x), @y)] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#add(#pos(@y), #natmult(@x, @y))]                
768.24/213.14	                                                                                                             
768.24/213.14	                                           [mkBase(@m)] =  [2] @m + [4]                                      
768.24/213.14	                                                        >  [0]                                               
768.24/213.14	                                                        =  [mkBase#1(@m)]                                    
768.24/213.14	                                                                                                             
768.24/213.14	                                         [makeBase(@m)] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [makeBase#1(@m)]                                  
768.24/213.14	                                                                                                             
768.24/213.14	                                   [mult#1(nil(), @l2)] =  [4] @l2 + [0]                                     
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#abs(#0())]                                      
768.24/213.14	                                                                                                             
768.24/213.14	                             [mult#1(::(@x, @xs), @l2)] =  [4] @l2 + [0]                                     
768.24/213.14	                                                        ?  [4] @x + [7] @xs + [0]                            
768.24/213.14	                                                        =  [mult#2(@l2, @x, @xs)]                            
768.24/213.14	                                                                                                             
768.24/213.14	                                [lineMult#1(nil(), @l)] =  [4] @l + [0]                                      
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [nil()]                                           
768.24/213.14	                                                                                                             
768.24/213.14	                          [lineMult#1(::(@x, @xs), @l)] =  [4] @l + [0]                                      
768.24/213.14	                                                        ?  [8]                                               
768.24/213.14	                                                        =  [::(mult(@l, @x), lineMult(@l, @xs))]             
768.24/213.14	                                                                                                             
768.24/213.14	                            [#mult(#neg(@x), #neg(@y))] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#pos(#natmult(@x, @y))]                          
768.24/213.14	                                                                                                             
768.24/213.14	                            [#mult(#neg(@x), #pos(@y))] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#neg(#natmult(@x, @y))]                          
768.24/213.14	                                                                                                             
768.24/213.14	                                [#mult(#neg(@x), #0())] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#0()]                                            
768.24/213.14	                                                                                                             
768.24/213.14	                            [#mult(#pos(@x), #neg(@y))] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#neg(#natmult(@x, @y))]                          
768.24/213.14	                                                                                                             
768.24/213.14	                            [#mult(#pos(@x), #pos(@y))] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#pos(#natmult(@x, @y))]                          
768.24/213.14	                                                                                                             
768.24/213.14	                                [#mult(#pos(@x), #0())] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#0()]                                            
768.24/213.14	                                                                                                             
768.24/213.14	                                [#mult(#0(), #neg(@y))] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#0()]                                            
768.24/213.14	                                                                                                             
768.24/213.14	                                [#mult(#0(), #pos(@y))] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#0()]                                            
768.24/213.14	                                                                                                             
768.24/213.14	                                    [#mult(#0(), #0())] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#0()]                                            
768.24/213.14	                                                                                                             
768.24/213.14	                             [attach#2(nil(), @x, @xs)] =  [4] @xs + [0]                                     
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [nil()]                                           
768.24/213.14	                                                                                                             
768.24/213.14	                       [attach#2(::(@l, @ls), @x, @xs)] =  [4] @xs + [0]                                     
768.24/213.14	                                                        ?  [1] @x + [3] @xs + [1] @l + [8]                   
768.24/213.14	                                                        =  [::(::(@x, @l), attach(@xs, @ls))]                
768.24/213.14	                                                                                                             
768.24/213.14	                                [#succ(#neg(#s(#0())))] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#0()]                                            
768.24/213.14	                                                                                                             
768.24/213.14	                              [#succ(#neg(#s(#s(@x))))] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#neg(#s(@x))]                                    
768.24/213.14	                                                                                                             
768.24/213.14	                                  [#succ(#pos(#s(@x)))] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#pos(#s(#s(@x)))]                                
768.24/213.14	                                                                                                             
768.24/213.14	                                          [#succ(#0())] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#pos(#s(#0()))]                                  
768.24/213.14	                                                                                                             
768.24/213.14	                                    [makeBase#1(nil())] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [nil()]                                           
768.24/213.14	                                                                                                             
768.24/213.14	                              [makeBase#1(::(@l, @m'))] =  [0]                                               
768.24/213.14	                                                        ?  [2] @l + [4]                                      
768.24/213.14	                                                        =  [mkBase(@l)]                                      
768.24/213.14	                                                                                                             
768.24/213.14	                                 [matrixMult(@m1, @m2)] =  [0]                                               
768.24/213.14	                                                        ?  [4] @m1 + [0]                                     
768.24/213.14	                                                        =  [matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))]  
768.24/213.14	                                                                                                             
768.24/213.14	                                       [#abs(#neg(@x))] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#pos(@x)]                                        
768.24/213.14	                                                                                                             
768.24/213.14	                                       [#abs(#pos(@x))] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#pos(@x)]                                        
768.24/213.14	                                                                                                             
768.24/213.14	                                           [#abs(#0())] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#0()]                                            
768.24/213.14	                                                                                                             
768.24/213.14	                                         [#abs(#s(@x))] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#pos(#s(@x))]                                    
768.24/213.14	                                                                                                             
768.24/213.14	                                    [lineMult(@l, @m2)] =  [4]                                               
768.24/213.14	                                                        ?  [4] @l + [0]                                      
768.24/213.14	                                                        =  [lineMult#1(@m2, @l)]                             
768.24/213.14	                                                                                                             
768.24/213.14	                                  [#pred(#neg(#s(@x)))] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#neg(#s(#s(@x)))]                                
768.24/213.14	                                                                                                             
768.24/213.14	                                [#pred(#pos(#s(#0())))] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#0()]                                            
768.24/213.14	                                                                                                             
768.24/213.14	                              [#pred(#pos(#s(#s(@x))))] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#pos(#s(@x))]                                    
768.24/213.14	                                                                                                             
768.24/213.14	                                          [#pred(#0())] =  [0]                                               
768.24/213.14	                                                        >= [0]                                               
768.24/213.14	                                                        =  [#neg(#s(#0()))]                                  
768.24/213.14	                                                                                                             
768.24/213.14	                          [matrixMultList^#(@acc, @mm)] =  [2] @mm + [4]                                     
768.24/213.14	                                                        >  [2] @mm + [1]                                     
768.24/213.14	                                                        =  [c_1(matrixMultList#1^#(@mm, @acc))]              
768.24/213.14	                                                                                                             
768.24/213.14	                [matrixMultList#1^#(::(@m, @ms), @acc)] =  [2] @m + [2] @ms + [8]                            
768.24/213.14	                                                        >= [2] @ms + [8]                                     
768.24/213.14	                                                        =  [c_2(matrixMultList^#(matrixMult(@acc, @m), @ms))]
768.24/213.14	                                                                                                             
768.24/213.14	            
768.24/213.14	            We return to the main proof. Consider the set of all dependency
768.24/213.14	            pairs
768.24/213.14	            
768.24/213.14	            :
768.24/213.14	              { 1: matrixMultList^#(@acc, @mm) ->
768.24/213.14	                   c_1(matrixMultList#1^#(@mm, @acc))
768.24/213.14	              , 2: matrixMultList#1^#(::(@m, @ms), @acc) ->
768.24/213.14	                   c_2(matrixMultList^#(matrixMult(@acc, @m), @ms)) }
768.24/213.14	            
768.24/213.14	            Processor 'matrix interpretation of dimension 1' induces the
768.24/213.14	            complexity certificate YES(?,O(n^1)) on application of dependency
768.24/213.14	            pairs {1}. These cover all (indirect) predecessors of dependency
768.24/213.14	            pairs {1,2}, their number of application is equally bounded. The
768.24/213.14	            dependency pairs are shifted into the weak component.
768.24/213.14	            
768.24/213.14	            We are left with following problem, upon which TcT provides the
768.24/213.14	            certificate YES(O(1),O(1)).
768.24/213.14	            
768.24/213.14	            Weak DPs:
768.24/213.14	              { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.24/213.14	              , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.24/213.14	                c_2(matrixMultList^#(matrixMult(@acc, @m), @ms)) }
768.24/213.14	            Weak Trs:
768.24/213.14	              { attach(@line, @m) -> attach#1(@line, @m)
768.24/213.14	              , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.24/213.14	              , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.24/213.14	              , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.24/213.14	              , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.24/213.14	              , #add(#0(), @y) -> @y
768.24/213.14	              , mult#2(nil(), @x, @xs) -> #abs(#0())
768.24/213.14	              , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.24/213.14	              , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.24/213.14	              , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.24/213.14	              , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.24/213.14	              , +(@x, @y) -> #add(@x, @y)
768.24/213.14	              , transAcc#1(nil(), @base) -> @base
768.24/213.14	              , transAcc#1(::(@l, @m'), @base) ->
768.24/213.14	                attach(@l, transAcc(@m', @base))
768.24/213.14	              , *(@x, @y) -> #mult(@x, @y)
768.24/213.14	              , mkBase#1(nil()) -> nil()
768.24/213.14	              , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.24/213.14	              , attach#1(nil(), @m) -> nil()
768.24/213.14	              , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.24/213.14	              , matrixMult'#1(nil(), @m2) -> nil()
768.24/213.14	              , matrixMult'#1(::(@l, @ls), @m2) ->
768.24/213.14	                ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.24/213.14	              , #natmult(#0(), @y) -> #0()
768.24/213.14	              , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.24/213.14	              , mkBase(@m) -> mkBase#1(@m)
768.24/213.14	              , makeBase(@m) -> makeBase#1(@m)
768.24/213.14	              , mult#1(nil(), @l2) -> #abs(#0())
768.24/213.14	              , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.24/213.14	              , lineMult#1(nil(), @l) -> nil()
768.24/213.14	              , lineMult#1(::(@x, @xs), @l) ->
768.24/213.14	                ::(mult(@l, @x), lineMult(@l, @xs))
768.24/213.14	              , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.24/213.14	              , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.24/213.14	              , #mult(#neg(@x), #0()) -> #0()
768.24/213.14	              , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.24/213.14	              , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.24/213.14	              , #mult(#pos(@x), #0()) -> #0()
768.24/213.14	              , #mult(#0(), #neg(@y)) -> #0()
768.24/213.14	              , #mult(#0(), #pos(@y)) -> #0()
768.24/213.14	              , #mult(#0(), #0()) -> #0()
768.24/213.14	              , attach#2(nil(), @x, @xs) -> nil()
768.24/213.14	              , attach#2(::(@l, @ls), @x, @xs) ->
768.24/213.14	                ::(::(@x, @l), attach(@xs, @ls))
768.24/213.14	              , #succ(#neg(#s(#0()))) -> #0()
768.24/213.14	              , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.24/213.14	              , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.24/213.14	              , #succ(#0()) -> #pos(#s(#0()))
768.24/213.14	              , makeBase#1(nil()) -> nil()
768.24/213.14	              , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.24/213.14	              , matrixMult(@m1, @m2) ->
768.24/213.14	                matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.24/213.14	              , #abs(#neg(@x)) -> #pos(@x)
768.24/213.14	              , #abs(#pos(@x)) -> #pos(@x)
768.24/213.14	              , #abs(#0()) -> #0()
768.24/213.14	              , #abs(#s(@x)) -> #pos(#s(@x))
768.24/213.14	              , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.24/213.14	              , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.24/213.14	              , #pred(#pos(#s(#0()))) -> #0()
768.24/213.14	              , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.24/213.14	              , #pred(#0()) -> #neg(#s(#0())) }
768.24/213.14	            Obligation:
768.24/213.14	              innermost runtime complexity
768.24/213.14	            Answer:
768.24/213.14	              YES(O(1),O(1))
768.24/213.14	            
768.24/213.14	            The following weak DPs constitute a sub-graph of the DG that is
768.24/213.14	            closed under successors. The DPs are removed.
768.24/213.14	            
768.24/213.14	            { matrixMultList^#(@acc, @mm) -> c_1(matrixMultList#1^#(@mm, @acc))
768.24/213.14	            , matrixMultList#1^#(::(@m, @ms), @acc) ->
768.24/213.14	              c_2(matrixMultList^#(matrixMult(@acc, @m), @ms)) }
768.24/213.14	            
768.24/213.14	            We are left with following problem, upon which TcT provides the
768.24/213.14	            certificate YES(O(1),O(1)).
768.24/213.14	            
768.24/213.14	            Weak Trs:
768.24/213.14	              { attach(@line, @m) -> attach#1(@line, @m)
768.24/213.14	              , #add(#neg(#s(#0())), @y) -> #pred(@y)
768.24/213.14	              , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
768.24/213.14	              , #add(#pos(#s(#0())), @y) -> #succ(@y)
768.24/213.14	              , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
768.24/213.14	              , #add(#0(), @y) -> @y
768.24/213.14	              , mult#2(nil(), @x, @xs) -> #abs(#0())
768.24/213.14	              , mult#2(::(@y, @ys), @x, @xs) -> +(*(@x, @y), mult(@xs, @ys))
768.24/213.14	              , matrixMult'(@m1, @m2) -> matrixMult'#1(@m1, @m2)
768.24/213.14	              , transAcc(@m, @base) -> transAcc#1(@m, @base)
768.24/213.14	              , mult(@l1, @l2) -> mult#1(@l1, @l2)
768.24/213.14	              , +(@x, @y) -> #add(@x, @y)
768.24/213.14	              , transAcc#1(nil(), @base) -> @base
768.24/213.14	              , transAcc#1(::(@l, @m'), @base) ->
768.24/213.14	                attach(@l, transAcc(@m', @base))
768.24/213.14	              , *(@x, @y) -> #mult(@x, @y)
768.24/213.14	              , mkBase#1(nil()) -> nil()
768.24/213.14	              , mkBase#1(::(@l, @m')) -> ::(nil(), mkBase(@m'))
768.24/213.14	              , attach#1(nil(), @m) -> nil()
768.24/213.14	              , attach#1(::(@x, @xs), @m) -> attach#2(@m, @x, @xs)
768.24/213.14	              , matrixMult'#1(nil(), @m2) -> nil()
768.24/213.14	              , matrixMult'#1(::(@l, @ls), @m2) ->
768.24/213.14	                ::(lineMult(@l, @m2), matrixMult'(@ls, @m2))
768.24/213.14	              , #natmult(#0(), @y) -> #0()
768.24/213.14	              , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y))
768.24/213.14	              , mkBase(@m) -> mkBase#1(@m)
768.24/213.14	              , makeBase(@m) -> makeBase#1(@m)
768.24/213.14	              , mult#1(nil(), @l2) -> #abs(#0())
768.24/213.14	              , mult#1(::(@x, @xs), @l2) -> mult#2(@l2, @x, @xs)
768.24/213.14	              , lineMult#1(nil(), @l) -> nil()
768.24/213.14	              , lineMult#1(::(@x, @xs), @l) ->
768.24/213.14	                ::(mult(@l, @x), lineMult(@l, @xs))
768.24/213.14	              , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
768.24/213.14	              , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
768.24/213.14	              , #mult(#neg(@x), #0()) -> #0()
768.24/213.14	              , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
768.24/213.14	              , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
768.24/213.14	              , #mult(#pos(@x), #0()) -> #0()
768.24/213.14	              , #mult(#0(), #neg(@y)) -> #0()
768.24/213.14	              , #mult(#0(), #pos(@y)) -> #0()
768.24/213.14	              , #mult(#0(), #0()) -> #0()
768.24/213.14	              , attach#2(nil(), @x, @xs) -> nil()
768.24/213.14	              , attach#2(::(@l, @ls), @x, @xs) ->
768.24/213.14	                ::(::(@x, @l), attach(@xs, @ls))
768.24/213.14	              , #succ(#neg(#s(#0()))) -> #0()
768.24/213.14	              , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
768.24/213.14	              , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
768.24/213.14	              , #succ(#0()) -> #pos(#s(#0()))
768.24/213.14	              , makeBase#1(nil()) -> nil()
768.24/213.14	              , makeBase#1(::(@l, @m')) -> mkBase(@l)
768.24/213.14	              , matrixMult(@m1, @m2) ->
768.24/213.14	                matrixMult'(@m1, transAcc(@m2, makeBase(@m2)))
768.24/213.14	              , #abs(#neg(@x)) -> #pos(@x)
768.24/213.14	              , #abs(#pos(@x)) -> #pos(@x)
768.24/213.14	              , #abs(#0()) -> #0()
768.24/213.14	              , #abs(#s(@x)) -> #pos(#s(@x))
768.24/213.14	              , lineMult(@l, @m2) -> lineMult#1(@m2, @l)
768.24/213.14	              , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
768.24/213.14	              , #pred(#pos(#s(#0()))) -> #0()
768.24/213.14	              , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
768.24/213.14	              , #pred(#0()) -> #neg(#s(#0())) }
768.24/213.14	            Obligation:
768.24/213.14	              innermost runtime complexity
768.24/213.14	            Answer:
768.24/213.14	              YES(O(1),O(1))
768.24/213.14	            
768.24/213.14	            No rule is usable, rules are removed from the input problem.
768.24/213.14	            
768.24/213.14	            We are left with following problem, upon which TcT provides the
768.24/213.14	            certificate YES(O(1),O(1)).
768.24/213.14	            
768.24/213.14	            Rules: Empty
768.24/213.14	            Obligation:
768.24/213.14	              innermost runtime complexity
768.24/213.14	            Answer:
768.24/213.14	              YES(O(1),O(1))
768.24/213.14	            
768.24/213.14	            Empty rules are trivially bounded
768.24/213.14	         
768.24/213.14	      
768.24/213.14	   
768.24/213.14	
768.24/213.14	
768.24/213.14	Hurray, we answered YES(O(1),O(n^3))
768.24/213.14	EOF