WORST_CASE(?,O(n^1)) * Step 1: Sum. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict TRS: *'(z0,z1) -> c24(#MULT(z0,z1)) +'(z0,z1) -> c25(#ADD(z0,z1)) COMPUTELINE(z0,z1,z2) -> c26(COMPUTELINE#1(z0,z2,z1)) COMPUTELINE#1(::(z0,z1),z2,z3) -> c27(COMPUTELINE#2(z3,z2,z0,z1)) COMPUTELINE#1(nil(),z0,z1) -> c28() COMPUTELINE#2(::(z0,z1),z2,z3,z4) -> c29(COMPUTELINE(z4,z1,lineMult(z3,z0,z2)),LINEMULT(z3,z0,z2)) COMPUTELINE#2(nil(),z0,z1,z2) -> c30() LINEMULT(z0,z1,z2) -> c31(LINEMULT#1(z1,z2,z0)) LINEMULT#1(::(z0,z1),z2,z3) -> c32(LINEMULT#2(z2,z3,z0,z1)) LINEMULT#1(nil(),z0,z1) -> c33() LINEMULT#2(::(z0,z1),z2,z3,z4) -> c34(+'(*(z3,z2),z0),*'(z3,z2)) LINEMULT#2(::(z0,z1),z2,z3,z4) -> c35(LINEMULT(z2,z4,z1)) LINEMULT#2(nil(),z0,z1,z2) -> c36(*'(z1,z0)) LINEMULT#2(nil(),z0,z1,z2) -> c37(LINEMULT(z0,z2,nil())) MATRIXMULT(z0,z1) -> c38(MATRIXMULT#1(z0,z1)) MATRIXMULT#1(::(z0,z1),z2) -> c39(COMPUTELINE(z0,z2,nil())) MATRIXMULT#1(::(z0,z1),z2) -> c40(MATRIXMULT(z1,z2)) MATRIXMULT#1(nil(),z0) -> c41() - Weak TRS: #ADD(#0(),z0) -> c() #ADD(#neg(#s(#0())),z0) -> c1(#PRED(z0)) #ADD(#neg(#s(#s(z0))),z1) -> c2(#PRED(#add(#pos(#s(z0)),z1)),#ADD(#pos(#s(z0)),z1)) #ADD(#pos(#s(#0())),z0) -> c3(#SUCC(z0)) #ADD(#pos(#s(#s(z0))),z1) -> c4(#SUCC(#add(#pos(#s(z0)),z1)),#ADD(#pos(#s(z0)),z1)) #MULT(#0(),#0()) -> c5() #MULT(#0(),#neg(z0)) -> c6() #MULT(#0(),#pos(z0)) -> c7() #MULT(#neg(z0),#0()) -> c8() #MULT(#neg(z0),#neg(z1)) -> c9(#NATMULT(z0,z1)) #MULT(#neg(z0),#pos(z1)) -> c10(#NATMULT(z0,z1)) #MULT(#pos(z0),#0()) -> c11() #MULT(#pos(z0),#neg(z1)) -> c12(#NATMULT(z0,z1)) #MULT(#pos(z0),#pos(z1)) -> c13(#NATMULT(z0,z1)) #NATMULT(#0(),z0) -> c14() #NATMULT(#s(z0),z1) -> c15(#ADD(#pos(z1),#natmult(z0,z1)),#NATMULT(z0,z1)) #PRED(#0()) -> c16() #PRED(#neg(#s(z0))) -> c17() #PRED(#pos(#s(#0()))) -> c18() #PRED(#pos(#s(#s(z0)))) -> c19() #SUCC(#0()) -> c20() #SUCC(#neg(#s(#0()))) -> c21() #SUCC(#neg(#s(#s(z0)))) -> c22() #SUCC(#pos(#s(z0))) -> c23() #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) +(z0,z1) -> #add(z0,z1) computeLine(z0,z1,z2) -> computeLine#1(z0,z2,z1) computeLine#1(::(z0,z1),z2,z3) -> computeLine#2(z3,z2,z0,z1) computeLine#1(nil(),z0,z1) -> z0 computeLine#2(::(z0,z1),z2,z3,z4) -> computeLine(z4,z1,lineMult(z3,z0,z2)) computeLine#2(nil(),z0,z1,z2) -> nil() lineMult(z0,z1,z2) -> lineMult#1(z1,z2,z0) lineMult#1(::(z0,z1),z2,z3) -> lineMult#2(z2,z3,z0,z1) lineMult#1(nil(),z0,z1) -> nil() lineMult#2(::(z0,z1),z2,z3,z4) -> ::(+(*(z3,z2),z0),lineMult(z2,z4,z1)) lineMult#2(nil(),z0,z1,z2) -> ::(*(z1,z0),lineMult(z0,z2,nil())) matrixMult(z0,z1) -> matrixMult#1(z0,z1) matrixMult#1(::(z0,z1),z2) -> ::(computeLine(z0,z2,nil()),matrixMult(z1,z2)) matrixMult#1(nil(),z0) -> nil() - Signature: {#ADD/2,#MULT/2,#NATMULT/2,#PRED/1,#SUCC/1,#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,*'/2,+/2,+'/2 ,COMPUTELINE/3,COMPUTELINE#1/3,COMPUTELINE#2/4,LINEMULT/3,LINEMULT#1/3,LINEMULT#2/4,MATRIXMULT/2 ,MATRIXMULT#1/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4 ,matrixMult/2,matrixMult#1/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,c/0,c1/1,c10/1,c11/0,c12/1,c13/1,c14/0,c15/2 ,c16/0,c17/0,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/0,c24/1,c25/1,c26/1,c27/1,c28/0,c29/2,c3/1,c30/0,c31/1 ,c32/1,c33/0,c34/2,c35/1,c36/1,c37/1,c38/1,c39/1,c4/2,c40/1,c41/0,c5/0,c6/0,c7/0,c8/0,c9/1,nil/0} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD,#MULT,#NATMULT,#PRED,#SUCC,#add,#mult,#natmult,#pred ,#succ,*,*',+,+',COMPUTELINE,COMPUTELINE#1,COMPUTELINE#2,LINEMULT,LINEMULT#1,LINEMULT#2,MATRIXMULT ,MATRIXMULT#1,computeLine,computeLine#1,computeLine#2,lineMult,lineMult#1,lineMult#2,matrixMult ,matrixMult#1} and constructors {#0,#neg,#pos,#s,::,c,c1,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c2,c20,c21 ,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c4,c40,c41,c5,c6,c7,c8,c9,nil} + Applied Processor: Sum {left = someStrategy, right = someStrategy} + Details: () * Step 2: DependencyPairs. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict TRS: *'(z0,z1) -> c24(#MULT(z0,z1)) +'(z0,z1) -> c25(#ADD(z0,z1)) COMPUTELINE(z0,z1,z2) -> c26(COMPUTELINE#1(z0,z2,z1)) COMPUTELINE#1(::(z0,z1),z2,z3) -> c27(COMPUTELINE#2(z3,z2,z0,z1)) COMPUTELINE#1(nil(),z0,z1) -> c28() COMPUTELINE#2(::(z0,z1),z2,z3,z4) -> c29(COMPUTELINE(z4,z1,lineMult(z3,z0,z2)),LINEMULT(z3,z0,z2)) COMPUTELINE#2(nil(),z0,z1,z2) -> c30() LINEMULT(z0,z1,z2) -> c31(LINEMULT#1(z1,z2,z0)) LINEMULT#1(::(z0,z1),z2,z3) -> c32(LINEMULT#2(z2,z3,z0,z1)) LINEMULT#1(nil(),z0,z1) -> c33() LINEMULT#2(::(z0,z1),z2,z3,z4) -> c34(+'(*(z3,z2),z0),*'(z3,z2)) LINEMULT#2(::(z0,z1),z2,z3,z4) -> c35(LINEMULT(z2,z4,z1)) LINEMULT#2(nil(),z0,z1,z2) -> c36(*'(z1,z0)) LINEMULT#2(nil(),z0,z1,z2) -> c37(LINEMULT(z0,z2,nil())) MATRIXMULT(z0,z1) -> c38(MATRIXMULT#1(z0,z1)) MATRIXMULT#1(::(z0,z1),z2) -> c39(COMPUTELINE(z0,z2,nil())) MATRIXMULT#1(::(z0,z1),z2) -> c40(MATRIXMULT(z1,z2)) MATRIXMULT#1(nil(),z0) -> c41() - Weak TRS: #ADD(#0(),z0) -> c() #ADD(#neg(#s(#0())),z0) -> c1(#PRED(z0)) #ADD(#neg(#s(#s(z0))),z1) -> c2(#PRED(#add(#pos(#s(z0)),z1)),#ADD(#pos(#s(z0)),z1)) #ADD(#pos(#s(#0())),z0) -> c3(#SUCC(z0)) #ADD(#pos(#s(#s(z0))),z1) -> c4(#SUCC(#add(#pos(#s(z0)),z1)),#ADD(#pos(#s(z0)),z1)) #MULT(#0(),#0()) -> c5() #MULT(#0(),#neg(z0)) -> c6() #MULT(#0(),#pos(z0)) -> c7() #MULT(#neg(z0),#0()) -> c8() #MULT(#neg(z0),#neg(z1)) -> c9(#NATMULT(z0,z1)) #MULT(#neg(z0),#pos(z1)) -> c10(#NATMULT(z0,z1)) #MULT(#pos(z0),#0()) -> c11() #MULT(#pos(z0),#neg(z1)) -> c12(#NATMULT(z0,z1)) #MULT(#pos(z0),#pos(z1)) -> c13(#NATMULT(z0,z1)) #NATMULT(#0(),z0) -> c14() #NATMULT(#s(z0),z1) -> c15(#ADD(#pos(z1),#natmult(z0,z1)),#NATMULT(z0,z1)) #PRED(#0()) -> c16() #PRED(#neg(#s(z0))) -> c17() #PRED(#pos(#s(#0()))) -> c18() #PRED(#pos(#s(#s(z0)))) -> c19() #SUCC(#0()) -> c20() #SUCC(#neg(#s(#0()))) -> c21() #SUCC(#neg(#s(#s(z0)))) -> c22() #SUCC(#pos(#s(z0))) -> c23() #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) +(z0,z1) -> #add(z0,z1) computeLine(z0,z1,z2) -> computeLine#1(z0,z2,z1) computeLine#1(::(z0,z1),z2,z3) -> computeLine#2(z3,z2,z0,z1) computeLine#1(nil(),z0,z1) -> z0 computeLine#2(::(z0,z1),z2,z3,z4) -> computeLine(z4,z1,lineMult(z3,z0,z2)) computeLine#2(nil(),z0,z1,z2) -> nil() lineMult(z0,z1,z2) -> lineMult#1(z1,z2,z0) lineMult#1(::(z0,z1),z2,z3) -> lineMult#2(z2,z3,z0,z1) lineMult#1(nil(),z0,z1) -> nil() lineMult#2(::(z0,z1),z2,z3,z4) -> ::(+(*(z3,z2),z0),lineMult(z2,z4,z1)) lineMult#2(nil(),z0,z1,z2) -> ::(*(z1,z0),lineMult(z0,z2,nil())) matrixMult(z0,z1) -> matrixMult#1(z0,z1) matrixMult#1(::(z0,z1),z2) -> ::(computeLine(z0,z2,nil()),matrixMult(z1,z2)) matrixMult#1(nil(),z0) -> nil() - Signature: {#ADD/2,#MULT/2,#NATMULT/2,#PRED/1,#SUCC/1,#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,*'/2,+/2,+'/2 ,COMPUTELINE/3,COMPUTELINE#1/3,COMPUTELINE#2/4,LINEMULT/3,LINEMULT#1/3,LINEMULT#2/4,MATRIXMULT/2 ,MATRIXMULT#1/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4 ,matrixMult/2,matrixMult#1/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,c/0,c1/1,c10/1,c11/0,c12/1,c13/1,c14/0,c15/2 ,c16/0,c17/0,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/0,c24/1,c25/1,c26/1,c27/1,c28/0,c29/2,c3/1,c30/0,c31/1 ,c32/1,c33/0,c34/2,c35/1,c36/1,c37/1,c38/1,c39/1,c4/2,c40/1,c41/0,c5/0,c6/0,c7/0,c8/0,c9/1,nil/0} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD,#MULT,#NATMULT,#PRED,#SUCC,#add,#mult,#natmult,#pred ,#succ,*,*',+,+',COMPUTELINE,COMPUTELINE#1,COMPUTELINE#2,LINEMULT,LINEMULT#1,LINEMULT#2,MATRIXMULT ,MATRIXMULT#1,computeLine,computeLine#1,computeLine#2,lineMult,lineMult#1,lineMult#2,matrixMult ,matrixMult#1} and constructors {#0,#neg,#pos,#s,::,c,c1,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c2,c20,c21 ,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c4,c40,c41,c5,c6,c7,c8,c9,nil} + Applied Processor: DependencyPairs {dpKind_ = WIDP} + Details: We add the following weak innermost dependency pairs: Strict DPs *'#(z0,z1) -> c_1(#MULT#(z0,z1)) +'#(z0,z1) -> c_2(#ADD#(z0,z1)) COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) COMPUTELINE#1#(nil(),z0,z1) -> c_5() COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)),LINEMULT#(z3,z0,z2)) COMPUTELINE#2#(nil(),z0,z1,z2) -> c_7() LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)) LINEMULT#1#(::(z0,z1),z2,z3) -> c_9(LINEMULT#2#(z2,z3,z0,z1)) LINEMULT#1#(nil(),z0,z1) -> c_10() LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_11(+'#(*(z3,z2),z0),*'#(z3,z2)) LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_12(LINEMULT#(z2,z4,z1)) LINEMULT#2#(nil(),z0,z1,z2) -> c_13(*'#(z1,z0)) LINEMULT#2#(nil(),z0,z1,z2) -> c_14(LINEMULT#(z0,z2,nil())) MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) MATRIXMULT#1#(nil(),z0) -> c_18() Weak DPs #ADD#(#0(),z0) -> c_19() #ADD#(#neg(#s(#0())),z0) -> c_20(#PRED#(z0)) #ADD#(#neg(#s(#s(z0))),z1) -> c_21(#PRED#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) #ADD#(#pos(#s(#0())),z0) -> c_22(#SUCC#(z0)) #ADD#(#pos(#s(#s(z0))),z1) -> c_23(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) #MULT#(#0(),#0()) -> c_24() #MULT#(#0(),#neg(z0)) -> c_25() #MULT#(#0(),#pos(z0)) -> c_26() #MULT#(#neg(z0),#0()) -> c_27() #MULT#(#neg(z0),#neg(z1)) -> c_28(#NATMULT#(z0,z1)) #MULT#(#neg(z0),#pos(z1)) -> c_29(#NATMULT#(z0,z1)) #MULT#(#pos(z0),#0()) -> c_30() #MULT#(#pos(z0),#neg(z1)) -> c_31(#NATMULT#(z0,z1)) #MULT#(#pos(z0),#pos(z1)) -> c_32(#NATMULT#(z0,z1)) #NATMULT#(#0(),z0) -> c_33() #NATMULT#(#s(z0),z1) -> c_34(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)) #PRED#(#0()) -> c_35() #PRED#(#neg(#s(z0))) -> c_36() #PRED#(#pos(#s(#0()))) -> c_37() #PRED#(#pos(#s(#s(z0)))) -> c_38() #SUCC#(#0()) -> c_39() #SUCC#(#neg(#s(#0()))) -> c_40() #SUCC#(#neg(#s(#s(z0)))) -> c_41() #SUCC#(#pos(#s(z0))) -> c_42() #add#(#0(),z0) -> c_43() #add#(#neg(#s(#0())),z0) -> c_44(#pred#(z0)) #add#(#neg(#s(#s(z0))),z1) -> c_45(#pred#(#add(#pos(#s(z0)),z1))) #add#(#pos(#s(#0())),z0) -> c_46(#succ#(z0)) #add#(#pos(#s(#s(z0))),z1) -> c_47(#succ#(#add(#pos(#s(z0)),z1))) #mult#(#0(),#0()) -> c_48() #mult#(#0(),#neg(z0)) -> c_49() #mult#(#0(),#pos(z0)) -> c_50() #mult#(#neg(z0),#0()) -> c_51() #mult#(#neg(z0),#neg(z1)) -> c_52(#natmult#(z0,z1)) #mult#(#neg(z0),#pos(z1)) -> c_53(#natmult#(z0,z1)) #mult#(#pos(z0),#0()) -> c_54() #mult#(#pos(z0),#neg(z1)) -> c_55(#natmult#(z0,z1)) #mult#(#pos(z0),#pos(z1)) -> c_56(#natmult#(z0,z1)) #natmult#(#0(),z0) -> c_57() #natmult#(#s(z0),z1) -> c_58(#add#(#pos(z1),#natmult(z0,z1))) #pred#(#0()) -> c_59() #pred#(#neg(#s(z0))) -> c_60() #pred#(#pos(#s(#0()))) -> c_61() #pred#(#pos(#s(#s(z0)))) -> c_62() #succ#(#0()) -> c_63() #succ#(#neg(#s(#0()))) -> c_64() #succ#(#neg(#s(#s(z0)))) -> c_65() #succ#(#pos(#s(z0))) -> c_66() *#(z0,z1) -> c_67(#mult#(z0,z1)) +#(z0,z1) -> c_68(#add#(z0,z1)) computeLine#(z0,z1,z2) -> c_69(computeLine#1#(z0,z2,z1)) computeLine#1#(::(z0,z1),z2,z3) -> c_70(computeLine#2#(z3,z2,z0,z1)) computeLine#1#(nil(),z0,z1) -> c_71() computeLine#2#(::(z0,z1),z2,z3,z4) -> c_72(computeLine#(z4,z1,lineMult(z3,z0,z2))) computeLine#2#(nil(),z0,z1,z2) -> c_73() lineMult#(z0,z1,z2) -> c_74(lineMult#1#(z1,z2,z0)) lineMult#1#(::(z0,z1),z2,z3) -> c_75(lineMult#2#(z2,z3,z0,z1)) lineMult#1#(nil(),z0,z1) -> c_76() lineMult#2#(::(z0,z1),z2,z3,z4) -> c_77(+#(*(z3,z2),z0),lineMult#(z2,z4,z1)) lineMult#2#(nil(),z0,z1,z2) -> c_78(*#(z1,z0),lineMult#(z0,z2,nil())) matrixMult#(z0,z1) -> c_79(matrixMult#1#(z0,z1)) matrixMult#1#(::(z0,z1),z2) -> c_80(computeLine#(z0,z2,nil()),matrixMult#(z1,z2)) matrixMult#1#(nil(),z0) -> c_81() and mark the set of starting terms. * Step 3: UsableRules. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: *'#(z0,z1) -> c_1(#MULT#(z0,z1)) +'#(z0,z1) -> c_2(#ADD#(z0,z1)) COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) COMPUTELINE#1#(nil(),z0,z1) -> c_5() COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)),LINEMULT#(z3,z0,z2)) COMPUTELINE#2#(nil(),z0,z1,z2) -> c_7() LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)) LINEMULT#1#(::(z0,z1),z2,z3) -> c_9(LINEMULT#2#(z2,z3,z0,z1)) LINEMULT#1#(nil(),z0,z1) -> c_10() LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_11(+'#(*(z3,z2),z0),*'#(z3,z2)) LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_12(LINEMULT#(z2,z4,z1)) LINEMULT#2#(nil(),z0,z1,z2) -> c_13(*'#(z1,z0)) LINEMULT#2#(nil(),z0,z1,z2) -> c_14(LINEMULT#(z0,z2,nil())) MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) MATRIXMULT#1#(nil(),z0) -> c_18() - Strict TRS: *'(z0,z1) -> c24(#MULT(z0,z1)) +'(z0,z1) -> c25(#ADD(z0,z1)) COMPUTELINE(z0,z1,z2) -> c26(COMPUTELINE#1(z0,z2,z1)) COMPUTELINE#1(::(z0,z1),z2,z3) -> c27(COMPUTELINE#2(z3,z2,z0,z1)) COMPUTELINE#1(nil(),z0,z1) -> c28() COMPUTELINE#2(::(z0,z1),z2,z3,z4) -> c29(COMPUTELINE(z4,z1,lineMult(z3,z0,z2)),LINEMULT(z3,z0,z2)) COMPUTELINE#2(nil(),z0,z1,z2) -> c30() LINEMULT(z0,z1,z2) -> c31(LINEMULT#1(z1,z2,z0)) LINEMULT#1(::(z0,z1),z2,z3) -> c32(LINEMULT#2(z2,z3,z0,z1)) LINEMULT#1(nil(),z0,z1) -> c33() LINEMULT#2(::(z0,z1),z2,z3,z4) -> c34(+'(*(z3,z2),z0),*'(z3,z2)) LINEMULT#2(::(z0,z1),z2,z3,z4) -> c35(LINEMULT(z2,z4,z1)) LINEMULT#2(nil(),z0,z1,z2) -> c36(*'(z1,z0)) LINEMULT#2(nil(),z0,z1,z2) -> c37(LINEMULT(z0,z2,nil())) MATRIXMULT(z0,z1) -> c38(MATRIXMULT#1(z0,z1)) MATRIXMULT#1(::(z0,z1),z2) -> c39(COMPUTELINE(z0,z2,nil())) MATRIXMULT#1(::(z0,z1),z2) -> c40(MATRIXMULT(z1,z2)) MATRIXMULT#1(nil(),z0) -> c41() - Weak DPs: #ADD#(#0(),z0) -> c_19() #ADD#(#neg(#s(#0())),z0) -> c_20(#PRED#(z0)) #ADD#(#neg(#s(#s(z0))),z1) -> c_21(#PRED#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) #ADD#(#pos(#s(#0())),z0) -> c_22(#SUCC#(z0)) #ADD#(#pos(#s(#s(z0))),z1) -> c_23(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) #MULT#(#0(),#0()) -> c_24() #MULT#(#0(),#neg(z0)) -> c_25() #MULT#(#0(),#pos(z0)) -> c_26() #MULT#(#neg(z0),#0()) -> c_27() #MULT#(#neg(z0),#neg(z1)) -> c_28(#NATMULT#(z0,z1)) #MULT#(#neg(z0),#pos(z1)) -> c_29(#NATMULT#(z0,z1)) #MULT#(#pos(z0),#0()) -> c_30() #MULT#(#pos(z0),#neg(z1)) -> c_31(#NATMULT#(z0,z1)) #MULT#(#pos(z0),#pos(z1)) -> c_32(#NATMULT#(z0,z1)) #NATMULT#(#0(),z0) -> c_33() #NATMULT#(#s(z0),z1) -> c_34(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)) #PRED#(#0()) -> c_35() #PRED#(#neg(#s(z0))) -> c_36() #PRED#(#pos(#s(#0()))) -> c_37() #PRED#(#pos(#s(#s(z0)))) -> c_38() #SUCC#(#0()) -> c_39() #SUCC#(#neg(#s(#0()))) -> c_40() #SUCC#(#neg(#s(#s(z0)))) -> c_41() #SUCC#(#pos(#s(z0))) -> c_42() #add#(#0(),z0) -> c_43() #add#(#neg(#s(#0())),z0) -> c_44(#pred#(z0)) #add#(#neg(#s(#s(z0))),z1) -> c_45(#pred#(#add(#pos(#s(z0)),z1))) #add#(#pos(#s(#0())),z0) -> c_46(#succ#(z0)) #add#(#pos(#s(#s(z0))),z1) -> c_47(#succ#(#add(#pos(#s(z0)),z1))) #mult#(#0(),#0()) -> c_48() #mult#(#0(),#neg(z0)) -> c_49() #mult#(#0(),#pos(z0)) -> c_50() #mult#(#neg(z0),#0()) -> c_51() #mult#(#neg(z0),#neg(z1)) -> c_52(#natmult#(z0,z1)) #mult#(#neg(z0),#pos(z1)) -> c_53(#natmult#(z0,z1)) #mult#(#pos(z0),#0()) -> c_54() #mult#(#pos(z0),#neg(z1)) -> c_55(#natmult#(z0,z1)) #mult#(#pos(z0),#pos(z1)) -> c_56(#natmult#(z0,z1)) #natmult#(#0(),z0) -> c_57() #natmult#(#s(z0),z1) -> c_58(#add#(#pos(z1),#natmult(z0,z1))) #pred#(#0()) -> c_59() #pred#(#neg(#s(z0))) -> c_60() #pred#(#pos(#s(#0()))) -> c_61() #pred#(#pos(#s(#s(z0)))) -> c_62() #succ#(#0()) -> c_63() #succ#(#neg(#s(#0()))) -> c_64() #succ#(#neg(#s(#s(z0)))) -> c_65() #succ#(#pos(#s(z0))) -> c_66() *#(z0,z1) -> c_67(#mult#(z0,z1)) +#(z0,z1) -> c_68(#add#(z0,z1)) computeLine#(z0,z1,z2) -> c_69(computeLine#1#(z0,z2,z1)) computeLine#1#(::(z0,z1),z2,z3) -> c_70(computeLine#2#(z3,z2,z0,z1)) computeLine#1#(nil(),z0,z1) -> c_71() computeLine#2#(::(z0,z1),z2,z3,z4) -> c_72(computeLine#(z4,z1,lineMult(z3,z0,z2))) computeLine#2#(nil(),z0,z1,z2) -> c_73() lineMult#(z0,z1,z2) -> c_74(lineMult#1#(z1,z2,z0)) lineMult#1#(::(z0,z1),z2,z3) -> c_75(lineMult#2#(z2,z3,z0,z1)) lineMult#1#(nil(),z0,z1) -> c_76() lineMult#2#(::(z0,z1),z2,z3,z4) -> c_77(+#(*(z3,z2),z0),lineMult#(z2,z4,z1)) lineMult#2#(nil(),z0,z1,z2) -> c_78(*#(z1,z0),lineMult#(z0,z2,nil())) matrixMult#(z0,z1) -> c_79(matrixMult#1#(z0,z1)) matrixMult#1#(::(z0,z1),z2) -> c_80(computeLine#(z0,z2,nil()),matrixMult#(z1,z2)) matrixMult#1#(nil(),z0) -> c_81() - Weak TRS: #ADD(#0(),z0) -> c() #ADD(#neg(#s(#0())),z0) -> c1(#PRED(z0)) #ADD(#neg(#s(#s(z0))),z1) -> c2(#PRED(#add(#pos(#s(z0)),z1)),#ADD(#pos(#s(z0)),z1)) #ADD(#pos(#s(#0())),z0) -> c3(#SUCC(z0)) #ADD(#pos(#s(#s(z0))),z1) -> c4(#SUCC(#add(#pos(#s(z0)),z1)),#ADD(#pos(#s(z0)),z1)) #MULT(#0(),#0()) -> c5() #MULT(#0(),#neg(z0)) -> c6() #MULT(#0(),#pos(z0)) -> c7() #MULT(#neg(z0),#0()) -> c8() #MULT(#neg(z0),#neg(z1)) -> c9(#NATMULT(z0,z1)) #MULT(#neg(z0),#pos(z1)) -> c10(#NATMULT(z0,z1)) #MULT(#pos(z0),#0()) -> c11() #MULT(#pos(z0),#neg(z1)) -> c12(#NATMULT(z0,z1)) #MULT(#pos(z0),#pos(z1)) -> c13(#NATMULT(z0,z1)) #NATMULT(#0(),z0) -> c14() #NATMULT(#s(z0),z1) -> c15(#ADD(#pos(z1),#natmult(z0,z1)),#NATMULT(z0,z1)) #PRED(#0()) -> c16() #PRED(#neg(#s(z0))) -> c17() #PRED(#pos(#s(#0()))) -> c18() #PRED(#pos(#s(#s(z0)))) -> c19() #SUCC(#0()) -> c20() #SUCC(#neg(#s(#0()))) -> c21() #SUCC(#neg(#s(#s(z0)))) -> c22() #SUCC(#pos(#s(z0))) -> c23() #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) +(z0,z1) -> #add(z0,z1) computeLine(z0,z1,z2) -> computeLine#1(z0,z2,z1) computeLine#1(::(z0,z1),z2,z3) -> computeLine#2(z3,z2,z0,z1) computeLine#1(nil(),z0,z1) -> z0 computeLine#2(::(z0,z1),z2,z3,z4) -> computeLine(z4,z1,lineMult(z3,z0,z2)) computeLine#2(nil(),z0,z1,z2) -> nil() lineMult(z0,z1,z2) -> lineMult#1(z1,z2,z0) lineMult#1(::(z0,z1),z2,z3) -> lineMult#2(z2,z3,z0,z1) lineMult#1(nil(),z0,z1) -> nil() lineMult#2(::(z0,z1),z2,z3,z4) -> ::(+(*(z3,z2),z0),lineMult(z2,z4,z1)) lineMult#2(nil(),z0,z1,z2) -> ::(*(z1,z0),lineMult(z0,z2,nil())) matrixMult(z0,z1) -> matrixMult#1(z0,z1) matrixMult#1(::(z0,z1),z2) -> ::(computeLine(z0,z2,nil()),matrixMult(z1,z2)) matrixMult#1(nil(),z0) -> nil() - Signature: {#ADD/2,#MULT/2,#NATMULT/2,#PRED/1,#SUCC/1,#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,*'/2,+/2,+'/2 ,COMPUTELINE/3,COMPUTELINE#1/3,COMPUTELINE#2/4,LINEMULT/3,LINEMULT#1/3,LINEMULT#2/4,MATRIXMULT/2 ,MATRIXMULT#1/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4 ,matrixMult/2,matrixMult#1/2,#ADD#/2,#MULT#/2,#NATMULT#/2,#PRED#/1,#SUCC#/1,#add#/2,#mult#/2,#natmult#/2 ,#pred#/1,#succ#/1,*#/2,*'#/2,+#/2,+'#/2,COMPUTELINE#/3,COMPUTELINE#1#/3,COMPUTELINE#2#/4,LINEMULT#/3 ,LINEMULT#1#/3,LINEMULT#2#/4,MATRIXMULT#/2,MATRIXMULT#1#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4 ,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,c/0 ,c1/1,c10/1,c11/0,c12/1,c13/1,c14/0,c15/2,c16/0,c17/0,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/0,c24/1,c25/1 ,c26/1,c27/1,c28/0,c29/2,c3/1,c30/0,c31/1,c32/1,c33/0,c34/2,c35/1,c36/1,c37/1,c38/1,c39/1,c4/2,c40/1,c41/0 ,c5/0,c6/0,c7/0,c8/0,c9/1,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/2,c_12/1 ,c_13/1,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2,c_22/1,c_23/2,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/2,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0,c_42/0 ,c_43/0,c_44/1,c_45/1,c_46/1,c_47/1,c_48/0,c_49/0,c_50/0,c_51/0,c_52/1,c_53/1,c_54/0,c_55/1,c_56/1,c_57/0 ,c_58/1,c_59/0,c_60/0,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0,c_67/1,c_68/1,c_69/1,c_70/1,c_71/0,c_72/1 ,c_73/0,c_74/1,c_75/1,c_76/0,c_77/2,c_78/2,c_79/1,c_80/2,c_81/0} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#MULT#,#NATMULT#,#PRED#,#SUCC#,#add#,#mult# ,#natmult#,#pred#,#succ#,*#,*'#,+#,+'#,COMPUTELINE#,COMPUTELINE#1#,COMPUTELINE#2#,LINEMULT#,LINEMULT#1# ,LINEMULT#2#,MATRIXMULT#,MATRIXMULT#1#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1# ,lineMult#2#,matrixMult#,matrixMult#1#} and constructors {#0,#neg,#pos,#s,::,c,c1,c10,c11,c12,c13,c14,c15 ,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c4 ,c40,c41,c5,c6,c7,c8,c9,nil} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) +(z0,z1) -> #add(z0,z1) lineMult(z0,z1,z2) -> lineMult#1(z1,z2,z0) lineMult#1(::(z0,z1),z2,z3) -> lineMult#2(z2,z3,z0,z1) lineMult#1(nil(),z0,z1) -> nil() lineMult#2(::(z0,z1),z2,z3,z4) -> ::(+(*(z3,z2),z0),lineMult(z2,z4,z1)) lineMult#2(nil(),z0,z1,z2) -> ::(*(z1,z0),lineMult(z0,z2,nil())) #ADD#(#0(),z0) -> c_19() #ADD#(#neg(#s(#0())),z0) -> c_20(#PRED#(z0)) #ADD#(#neg(#s(#s(z0))),z1) -> c_21(#PRED#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) #ADD#(#pos(#s(#0())),z0) -> c_22(#SUCC#(z0)) #ADD#(#pos(#s(#s(z0))),z1) -> c_23(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) #MULT#(#0(),#0()) -> c_24() #MULT#(#0(),#neg(z0)) -> c_25() #MULT#(#0(),#pos(z0)) -> c_26() #MULT#(#neg(z0),#0()) -> c_27() #MULT#(#neg(z0),#neg(z1)) -> c_28(#NATMULT#(z0,z1)) #MULT#(#neg(z0),#pos(z1)) -> c_29(#NATMULT#(z0,z1)) #MULT#(#pos(z0),#0()) -> c_30() #MULT#(#pos(z0),#neg(z1)) -> c_31(#NATMULT#(z0,z1)) #MULT#(#pos(z0),#pos(z1)) -> c_32(#NATMULT#(z0,z1)) #NATMULT#(#0(),z0) -> c_33() #NATMULT#(#s(z0),z1) -> c_34(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)) #PRED#(#0()) -> c_35() #PRED#(#neg(#s(z0))) -> c_36() #PRED#(#pos(#s(#0()))) -> c_37() #PRED#(#pos(#s(#s(z0)))) -> c_38() #SUCC#(#0()) -> c_39() #SUCC#(#neg(#s(#0()))) -> c_40() #SUCC#(#neg(#s(#s(z0)))) -> c_41() #SUCC#(#pos(#s(z0))) -> c_42() #add#(#0(),z0) -> c_43() #add#(#neg(#s(#0())),z0) -> c_44(#pred#(z0)) #add#(#neg(#s(#s(z0))),z1) -> c_45(#pred#(#add(#pos(#s(z0)),z1))) #add#(#pos(#s(#0())),z0) -> c_46(#succ#(z0)) #add#(#pos(#s(#s(z0))),z1) -> c_47(#succ#(#add(#pos(#s(z0)),z1))) #mult#(#0(),#0()) -> c_48() #mult#(#0(),#neg(z0)) -> c_49() #mult#(#0(),#pos(z0)) -> c_50() #mult#(#neg(z0),#0()) -> c_51() #mult#(#neg(z0),#neg(z1)) -> c_52(#natmult#(z0,z1)) #mult#(#neg(z0),#pos(z1)) -> c_53(#natmult#(z0,z1)) #mult#(#pos(z0),#0()) -> c_54() #mult#(#pos(z0),#neg(z1)) -> c_55(#natmult#(z0,z1)) #mult#(#pos(z0),#pos(z1)) -> c_56(#natmult#(z0,z1)) #natmult#(#0(),z0) -> c_57() #natmult#(#s(z0),z1) -> c_58(#add#(#pos(z1),#natmult(z0,z1))) #pred#(#0()) -> c_59() #pred#(#neg(#s(z0))) -> c_60() #pred#(#pos(#s(#0()))) -> c_61() #pred#(#pos(#s(#s(z0)))) -> c_62() #succ#(#0()) -> c_63() #succ#(#neg(#s(#0()))) -> c_64() #succ#(#neg(#s(#s(z0)))) -> c_65() #succ#(#pos(#s(z0))) -> c_66() *#(z0,z1) -> c_67(#mult#(z0,z1)) *'#(z0,z1) -> c_1(#MULT#(z0,z1)) +#(z0,z1) -> c_68(#add#(z0,z1)) +'#(z0,z1) -> c_2(#ADD#(z0,z1)) COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) COMPUTELINE#1#(nil(),z0,z1) -> c_5() COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)),LINEMULT#(z3,z0,z2)) COMPUTELINE#2#(nil(),z0,z1,z2) -> c_7() LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)) LINEMULT#1#(::(z0,z1),z2,z3) -> c_9(LINEMULT#2#(z2,z3,z0,z1)) LINEMULT#1#(nil(),z0,z1) -> c_10() LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_11(+'#(*(z3,z2),z0),*'#(z3,z2)) LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_12(LINEMULT#(z2,z4,z1)) LINEMULT#2#(nil(),z0,z1,z2) -> c_13(*'#(z1,z0)) LINEMULT#2#(nil(),z0,z1,z2) -> c_14(LINEMULT#(z0,z2,nil())) MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) MATRIXMULT#1#(nil(),z0) -> c_18() computeLine#(z0,z1,z2) -> c_69(computeLine#1#(z0,z2,z1)) computeLine#1#(::(z0,z1),z2,z3) -> c_70(computeLine#2#(z3,z2,z0,z1)) computeLine#1#(nil(),z0,z1) -> c_71() computeLine#2#(::(z0,z1),z2,z3,z4) -> c_72(computeLine#(z4,z1,lineMult(z3,z0,z2))) computeLine#2#(nil(),z0,z1,z2) -> c_73() lineMult#(z0,z1,z2) -> c_74(lineMult#1#(z1,z2,z0)) lineMult#1#(::(z0,z1),z2,z3) -> c_75(lineMult#2#(z2,z3,z0,z1)) lineMult#1#(nil(),z0,z1) -> c_76() lineMult#2#(::(z0,z1),z2,z3,z4) -> c_77(+#(*(z3,z2),z0),lineMult#(z2,z4,z1)) lineMult#2#(nil(),z0,z1,z2) -> c_78(*#(z1,z0),lineMult#(z0,z2,nil())) matrixMult#(z0,z1) -> c_79(matrixMult#1#(z0,z1)) matrixMult#1#(::(z0,z1),z2) -> c_80(computeLine#(z0,z2,nil()),matrixMult#(z1,z2)) matrixMult#1#(nil(),z0) -> c_81() * Step 4: PredecessorEstimation. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: *'#(z0,z1) -> c_1(#MULT#(z0,z1)) +'#(z0,z1) -> c_2(#ADD#(z0,z1)) COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) COMPUTELINE#1#(nil(),z0,z1) -> c_5() COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)),LINEMULT#(z3,z0,z2)) COMPUTELINE#2#(nil(),z0,z1,z2) -> c_7() LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)) LINEMULT#1#(::(z0,z1),z2,z3) -> c_9(LINEMULT#2#(z2,z3,z0,z1)) LINEMULT#1#(nil(),z0,z1) -> c_10() LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_11(+'#(*(z3,z2),z0),*'#(z3,z2)) LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_12(LINEMULT#(z2,z4,z1)) LINEMULT#2#(nil(),z0,z1,z2) -> c_13(*'#(z1,z0)) LINEMULT#2#(nil(),z0,z1,z2) -> c_14(LINEMULT#(z0,z2,nil())) MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) MATRIXMULT#1#(nil(),z0) -> c_18() - Weak DPs: #ADD#(#0(),z0) -> c_19() #ADD#(#neg(#s(#0())),z0) -> c_20(#PRED#(z0)) #ADD#(#neg(#s(#s(z0))),z1) -> c_21(#PRED#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) #ADD#(#pos(#s(#0())),z0) -> c_22(#SUCC#(z0)) #ADD#(#pos(#s(#s(z0))),z1) -> c_23(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) #MULT#(#0(),#0()) -> c_24() #MULT#(#0(),#neg(z0)) -> c_25() #MULT#(#0(),#pos(z0)) -> c_26() #MULT#(#neg(z0),#0()) -> c_27() #MULT#(#neg(z0),#neg(z1)) -> c_28(#NATMULT#(z0,z1)) #MULT#(#neg(z0),#pos(z1)) -> c_29(#NATMULT#(z0,z1)) #MULT#(#pos(z0),#0()) -> c_30() #MULT#(#pos(z0),#neg(z1)) -> c_31(#NATMULT#(z0,z1)) #MULT#(#pos(z0),#pos(z1)) -> c_32(#NATMULT#(z0,z1)) #NATMULT#(#0(),z0) -> c_33() #NATMULT#(#s(z0),z1) -> c_34(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)) #PRED#(#0()) -> c_35() #PRED#(#neg(#s(z0))) -> c_36() #PRED#(#pos(#s(#0()))) -> c_37() #PRED#(#pos(#s(#s(z0)))) -> c_38() #SUCC#(#0()) -> c_39() #SUCC#(#neg(#s(#0()))) -> c_40() #SUCC#(#neg(#s(#s(z0)))) -> c_41() #SUCC#(#pos(#s(z0))) -> c_42() #add#(#0(),z0) -> c_43() #add#(#neg(#s(#0())),z0) -> c_44(#pred#(z0)) #add#(#neg(#s(#s(z0))),z1) -> c_45(#pred#(#add(#pos(#s(z0)),z1))) #add#(#pos(#s(#0())),z0) -> c_46(#succ#(z0)) #add#(#pos(#s(#s(z0))),z1) -> c_47(#succ#(#add(#pos(#s(z0)),z1))) #mult#(#0(),#0()) -> c_48() #mult#(#0(),#neg(z0)) -> c_49() #mult#(#0(),#pos(z0)) -> c_50() #mult#(#neg(z0),#0()) -> c_51() #mult#(#neg(z0),#neg(z1)) -> c_52(#natmult#(z0,z1)) #mult#(#neg(z0),#pos(z1)) -> c_53(#natmult#(z0,z1)) #mult#(#pos(z0),#0()) -> c_54() #mult#(#pos(z0),#neg(z1)) -> c_55(#natmult#(z0,z1)) #mult#(#pos(z0),#pos(z1)) -> c_56(#natmult#(z0,z1)) #natmult#(#0(),z0) -> c_57() #natmult#(#s(z0),z1) -> c_58(#add#(#pos(z1),#natmult(z0,z1))) #pred#(#0()) -> c_59() #pred#(#neg(#s(z0))) -> c_60() #pred#(#pos(#s(#0()))) -> c_61() #pred#(#pos(#s(#s(z0)))) -> c_62() #succ#(#0()) -> c_63() #succ#(#neg(#s(#0()))) -> c_64() #succ#(#neg(#s(#s(z0)))) -> c_65() #succ#(#pos(#s(z0))) -> c_66() *#(z0,z1) -> c_67(#mult#(z0,z1)) +#(z0,z1) -> c_68(#add#(z0,z1)) computeLine#(z0,z1,z2) -> c_69(computeLine#1#(z0,z2,z1)) computeLine#1#(::(z0,z1),z2,z3) -> c_70(computeLine#2#(z3,z2,z0,z1)) computeLine#1#(nil(),z0,z1) -> c_71() computeLine#2#(::(z0,z1),z2,z3,z4) -> c_72(computeLine#(z4,z1,lineMult(z3,z0,z2))) computeLine#2#(nil(),z0,z1,z2) -> c_73() lineMult#(z0,z1,z2) -> c_74(lineMult#1#(z1,z2,z0)) lineMult#1#(::(z0,z1),z2,z3) -> c_75(lineMult#2#(z2,z3,z0,z1)) lineMult#1#(nil(),z0,z1) -> c_76() lineMult#2#(::(z0,z1),z2,z3,z4) -> c_77(+#(*(z3,z2),z0),lineMult#(z2,z4,z1)) lineMult#2#(nil(),z0,z1,z2) -> c_78(*#(z1,z0),lineMult#(z0,z2,nil())) matrixMult#(z0,z1) -> c_79(matrixMult#1#(z0,z1)) matrixMult#1#(::(z0,z1),z2) -> c_80(computeLine#(z0,z2,nil()),matrixMult#(z1,z2)) matrixMult#1#(nil(),z0) -> c_81() - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) +(z0,z1) -> #add(z0,z1) lineMult(z0,z1,z2) -> lineMult#1(z1,z2,z0) lineMult#1(::(z0,z1),z2,z3) -> lineMult#2(z2,z3,z0,z1) lineMult#1(nil(),z0,z1) -> nil() lineMult#2(::(z0,z1),z2,z3,z4) -> ::(+(*(z3,z2),z0),lineMult(z2,z4,z1)) lineMult#2(nil(),z0,z1,z2) -> ::(*(z1,z0),lineMult(z0,z2,nil())) - Signature: {#ADD/2,#MULT/2,#NATMULT/2,#PRED/1,#SUCC/1,#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,*'/2,+/2,+'/2 ,COMPUTELINE/3,COMPUTELINE#1/3,COMPUTELINE#2/4,LINEMULT/3,LINEMULT#1/3,LINEMULT#2/4,MATRIXMULT/2 ,MATRIXMULT#1/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4 ,matrixMult/2,matrixMult#1/2,#ADD#/2,#MULT#/2,#NATMULT#/2,#PRED#/1,#SUCC#/1,#add#/2,#mult#/2,#natmult#/2 ,#pred#/1,#succ#/1,*#/2,*'#/2,+#/2,+'#/2,COMPUTELINE#/3,COMPUTELINE#1#/3,COMPUTELINE#2#/4,LINEMULT#/3 ,LINEMULT#1#/3,LINEMULT#2#/4,MATRIXMULT#/2,MATRIXMULT#1#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4 ,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,c/0 ,c1/1,c10/1,c11/0,c12/1,c13/1,c14/0,c15/2,c16/0,c17/0,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/0,c24/1,c25/1 ,c26/1,c27/1,c28/0,c29/2,c3/1,c30/0,c31/1,c32/1,c33/0,c34/2,c35/1,c36/1,c37/1,c38/1,c39/1,c4/2,c40/1,c41/0 ,c5/0,c6/0,c7/0,c8/0,c9/1,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/2,c_12/1 ,c_13/1,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2,c_22/1,c_23/2,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/2,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0,c_42/0 ,c_43/0,c_44/1,c_45/1,c_46/1,c_47/1,c_48/0,c_49/0,c_50/0,c_51/0,c_52/1,c_53/1,c_54/0,c_55/1,c_56/1,c_57/0 ,c_58/1,c_59/0,c_60/0,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0,c_67/1,c_68/1,c_69/1,c_70/1,c_71/0,c_72/1 ,c_73/0,c_74/1,c_75/1,c_76/0,c_77/2,c_78/2,c_79/1,c_80/2,c_81/0} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#MULT#,#NATMULT#,#PRED#,#SUCC#,#add#,#mult# ,#natmult#,#pred#,#succ#,*#,*'#,+#,+'#,COMPUTELINE#,COMPUTELINE#1#,COMPUTELINE#2#,LINEMULT#,LINEMULT#1# ,LINEMULT#2#,MATRIXMULT#,MATRIXMULT#1#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1# ,lineMult#2#,matrixMult#,matrixMult#1#} and constructors {#0,#neg,#pos,#s,::,c,c1,c10,c11,c12,c13,c14,c15 ,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c4 ,c40,c41,c5,c6,c7,c8,c9,nil} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {1,2,5,7,10,18} by application of Pre({1,2,5,7,10,18}) = {3,4,8,11,13,15}. Here rules are labelled as follows: 1: *'#(z0,z1) -> c_1(#MULT#(z0,z1)) 2: +'#(z0,z1) -> c_2(#ADD#(z0,z1)) 3: COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) 4: COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) 5: COMPUTELINE#1#(nil(),z0,z1) -> c_5() 6: COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)),LINEMULT#(z3,z0,z2)) 7: COMPUTELINE#2#(nil(),z0,z1,z2) -> c_7() 8: LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)) 9: LINEMULT#1#(::(z0,z1),z2,z3) -> c_9(LINEMULT#2#(z2,z3,z0,z1)) 10: LINEMULT#1#(nil(),z0,z1) -> c_10() 11: LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_11(+'#(*(z3,z2),z0),*'#(z3,z2)) 12: LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_12(LINEMULT#(z2,z4,z1)) 13: LINEMULT#2#(nil(),z0,z1,z2) -> c_13(*'#(z1,z0)) 14: LINEMULT#2#(nil(),z0,z1,z2) -> c_14(LINEMULT#(z0,z2,nil())) 15: MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) 16: MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) 17: MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) 18: MATRIXMULT#1#(nil(),z0) -> c_18() 19: #ADD#(#0(),z0) -> c_19() 20: #ADD#(#neg(#s(#0())),z0) -> c_20(#PRED#(z0)) 21: #ADD#(#neg(#s(#s(z0))),z1) -> c_21(#PRED#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) 22: #ADD#(#pos(#s(#0())),z0) -> c_22(#SUCC#(z0)) 23: #ADD#(#pos(#s(#s(z0))),z1) -> c_23(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) 24: #MULT#(#0(),#0()) -> c_24() 25: #MULT#(#0(),#neg(z0)) -> c_25() 26: #MULT#(#0(),#pos(z0)) -> c_26() 27: #MULT#(#neg(z0),#0()) -> c_27() 28: #MULT#(#neg(z0),#neg(z1)) -> c_28(#NATMULT#(z0,z1)) 29: #MULT#(#neg(z0),#pos(z1)) -> c_29(#NATMULT#(z0,z1)) 30: #MULT#(#pos(z0),#0()) -> c_30() 31: #MULT#(#pos(z0),#neg(z1)) -> c_31(#NATMULT#(z0,z1)) 32: #MULT#(#pos(z0),#pos(z1)) -> c_32(#NATMULT#(z0,z1)) 33: #NATMULT#(#0(),z0) -> c_33() 34: #NATMULT#(#s(z0),z1) -> c_34(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)) 35: #PRED#(#0()) -> c_35() 36: #PRED#(#neg(#s(z0))) -> c_36() 37: #PRED#(#pos(#s(#0()))) -> c_37() 38: #PRED#(#pos(#s(#s(z0)))) -> c_38() 39: #SUCC#(#0()) -> c_39() 40: #SUCC#(#neg(#s(#0()))) -> c_40() 41: #SUCC#(#neg(#s(#s(z0)))) -> c_41() 42: #SUCC#(#pos(#s(z0))) -> c_42() 43: #add#(#0(),z0) -> c_43() 44: #add#(#neg(#s(#0())),z0) -> c_44(#pred#(z0)) 45: #add#(#neg(#s(#s(z0))),z1) -> c_45(#pred#(#add(#pos(#s(z0)),z1))) 46: #add#(#pos(#s(#0())),z0) -> c_46(#succ#(z0)) 47: #add#(#pos(#s(#s(z0))),z1) -> c_47(#succ#(#add(#pos(#s(z0)),z1))) 48: #mult#(#0(),#0()) -> c_48() 49: #mult#(#0(),#neg(z0)) -> c_49() 50: #mult#(#0(),#pos(z0)) -> c_50() 51: #mult#(#neg(z0),#0()) -> c_51() 52: #mult#(#neg(z0),#neg(z1)) -> c_52(#natmult#(z0,z1)) 53: #mult#(#neg(z0),#pos(z1)) -> c_53(#natmult#(z0,z1)) 54: #mult#(#pos(z0),#0()) -> c_54() 55: #mult#(#pos(z0),#neg(z1)) -> c_55(#natmult#(z0,z1)) 56: #mult#(#pos(z0),#pos(z1)) -> c_56(#natmult#(z0,z1)) 57: #natmult#(#0(),z0) -> c_57() 58: #natmult#(#s(z0),z1) -> c_58(#add#(#pos(z1),#natmult(z0,z1))) 59: #pred#(#0()) -> c_59() 60: #pred#(#neg(#s(z0))) -> c_60() 61: #pred#(#pos(#s(#0()))) -> c_61() 62: #pred#(#pos(#s(#s(z0)))) -> c_62() 63: #succ#(#0()) -> c_63() 64: #succ#(#neg(#s(#0()))) -> c_64() 65: #succ#(#neg(#s(#s(z0)))) -> c_65() 66: #succ#(#pos(#s(z0))) -> c_66() 67: *#(z0,z1) -> c_67(#mult#(z0,z1)) 68: +#(z0,z1) -> c_68(#add#(z0,z1)) 69: computeLine#(z0,z1,z2) -> c_69(computeLine#1#(z0,z2,z1)) 70: computeLine#1#(::(z0,z1),z2,z3) -> c_70(computeLine#2#(z3,z2,z0,z1)) 71: computeLine#1#(nil(),z0,z1) -> c_71() 72: computeLine#2#(::(z0,z1),z2,z3,z4) -> c_72(computeLine#(z4,z1,lineMult(z3,z0,z2))) 73: computeLine#2#(nil(),z0,z1,z2) -> c_73() 74: lineMult#(z0,z1,z2) -> c_74(lineMult#1#(z1,z2,z0)) 75: lineMult#1#(::(z0,z1),z2,z3) -> c_75(lineMult#2#(z2,z3,z0,z1)) 76: lineMult#1#(nil(),z0,z1) -> c_76() 77: lineMult#2#(::(z0,z1),z2,z3,z4) -> c_77(+#(*(z3,z2),z0),lineMult#(z2,z4,z1)) 78: lineMult#2#(nil(),z0,z1,z2) -> c_78(*#(z1,z0),lineMult#(z0,z2,nil())) 79: matrixMult#(z0,z1) -> c_79(matrixMult#1#(z0,z1)) 80: matrixMult#1#(::(z0,z1),z2) -> c_80(computeLine#(z0,z2,nil()),matrixMult#(z1,z2)) 81: matrixMult#1#(nil(),z0) -> c_81() * Step 5: PredecessorEstimation. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)),LINEMULT#(z3,z0,z2)) LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)) LINEMULT#1#(::(z0,z1),z2,z3) -> c_9(LINEMULT#2#(z2,z3,z0,z1)) LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_11(+'#(*(z3,z2),z0),*'#(z3,z2)) LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_12(LINEMULT#(z2,z4,z1)) LINEMULT#2#(nil(),z0,z1,z2) -> c_13(*'#(z1,z0)) LINEMULT#2#(nil(),z0,z1,z2) -> c_14(LINEMULT#(z0,z2,nil())) MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) - Weak DPs: #ADD#(#0(),z0) -> c_19() #ADD#(#neg(#s(#0())),z0) -> c_20(#PRED#(z0)) #ADD#(#neg(#s(#s(z0))),z1) -> c_21(#PRED#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) #ADD#(#pos(#s(#0())),z0) -> c_22(#SUCC#(z0)) #ADD#(#pos(#s(#s(z0))),z1) -> c_23(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) #MULT#(#0(),#0()) -> c_24() #MULT#(#0(),#neg(z0)) -> c_25() #MULT#(#0(),#pos(z0)) -> c_26() #MULT#(#neg(z0),#0()) -> c_27() #MULT#(#neg(z0),#neg(z1)) -> c_28(#NATMULT#(z0,z1)) #MULT#(#neg(z0),#pos(z1)) -> c_29(#NATMULT#(z0,z1)) #MULT#(#pos(z0),#0()) -> c_30() #MULT#(#pos(z0),#neg(z1)) -> c_31(#NATMULT#(z0,z1)) #MULT#(#pos(z0),#pos(z1)) -> c_32(#NATMULT#(z0,z1)) #NATMULT#(#0(),z0) -> c_33() #NATMULT#(#s(z0),z1) -> c_34(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)) #PRED#(#0()) -> c_35() #PRED#(#neg(#s(z0))) -> c_36() #PRED#(#pos(#s(#0()))) -> c_37() #PRED#(#pos(#s(#s(z0)))) -> c_38() #SUCC#(#0()) -> c_39() #SUCC#(#neg(#s(#0()))) -> c_40() #SUCC#(#neg(#s(#s(z0)))) -> c_41() #SUCC#(#pos(#s(z0))) -> c_42() #add#(#0(),z0) -> c_43() #add#(#neg(#s(#0())),z0) -> c_44(#pred#(z0)) #add#(#neg(#s(#s(z0))),z1) -> c_45(#pred#(#add(#pos(#s(z0)),z1))) #add#(#pos(#s(#0())),z0) -> c_46(#succ#(z0)) #add#(#pos(#s(#s(z0))),z1) -> c_47(#succ#(#add(#pos(#s(z0)),z1))) #mult#(#0(),#0()) -> c_48() #mult#(#0(),#neg(z0)) -> c_49() #mult#(#0(),#pos(z0)) -> c_50() #mult#(#neg(z0),#0()) -> c_51() #mult#(#neg(z0),#neg(z1)) -> c_52(#natmult#(z0,z1)) #mult#(#neg(z0),#pos(z1)) -> c_53(#natmult#(z0,z1)) #mult#(#pos(z0),#0()) -> c_54() #mult#(#pos(z0),#neg(z1)) -> c_55(#natmult#(z0,z1)) #mult#(#pos(z0),#pos(z1)) -> c_56(#natmult#(z0,z1)) #natmult#(#0(),z0) -> c_57() #natmult#(#s(z0),z1) -> c_58(#add#(#pos(z1),#natmult(z0,z1))) #pred#(#0()) -> c_59() #pred#(#neg(#s(z0))) -> c_60() #pred#(#pos(#s(#0()))) -> c_61() #pred#(#pos(#s(#s(z0)))) -> c_62() #succ#(#0()) -> c_63() #succ#(#neg(#s(#0()))) -> c_64() #succ#(#neg(#s(#s(z0)))) -> c_65() #succ#(#pos(#s(z0))) -> c_66() *#(z0,z1) -> c_67(#mult#(z0,z1)) *'#(z0,z1) -> c_1(#MULT#(z0,z1)) +#(z0,z1) -> c_68(#add#(z0,z1)) +'#(z0,z1) -> c_2(#ADD#(z0,z1)) COMPUTELINE#1#(nil(),z0,z1) -> c_5() COMPUTELINE#2#(nil(),z0,z1,z2) -> c_7() LINEMULT#1#(nil(),z0,z1) -> c_10() MATRIXMULT#1#(nil(),z0) -> c_18() computeLine#(z0,z1,z2) -> c_69(computeLine#1#(z0,z2,z1)) computeLine#1#(::(z0,z1),z2,z3) -> c_70(computeLine#2#(z3,z2,z0,z1)) computeLine#1#(nil(),z0,z1) -> c_71() computeLine#2#(::(z0,z1),z2,z3,z4) -> c_72(computeLine#(z4,z1,lineMult(z3,z0,z2))) computeLine#2#(nil(),z0,z1,z2) -> c_73() lineMult#(z0,z1,z2) -> c_74(lineMult#1#(z1,z2,z0)) lineMult#1#(::(z0,z1),z2,z3) -> c_75(lineMult#2#(z2,z3,z0,z1)) lineMult#1#(nil(),z0,z1) -> c_76() lineMult#2#(::(z0,z1),z2,z3,z4) -> c_77(+#(*(z3,z2),z0),lineMult#(z2,z4,z1)) lineMult#2#(nil(),z0,z1,z2) -> c_78(*#(z1,z0),lineMult#(z0,z2,nil())) matrixMult#(z0,z1) -> c_79(matrixMult#1#(z0,z1)) matrixMult#1#(::(z0,z1),z2) -> c_80(computeLine#(z0,z2,nil()),matrixMult#(z1,z2)) matrixMult#1#(nil(),z0) -> c_81() - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) +(z0,z1) -> #add(z0,z1) lineMult(z0,z1,z2) -> lineMult#1(z1,z2,z0) lineMult#1(::(z0,z1),z2,z3) -> lineMult#2(z2,z3,z0,z1) lineMult#1(nil(),z0,z1) -> nil() lineMult#2(::(z0,z1),z2,z3,z4) -> ::(+(*(z3,z2),z0),lineMult(z2,z4,z1)) lineMult#2(nil(),z0,z1,z2) -> ::(*(z1,z0),lineMult(z0,z2,nil())) - Signature: {#ADD/2,#MULT/2,#NATMULT/2,#PRED/1,#SUCC/1,#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,*'/2,+/2,+'/2 ,COMPUTELINE/3,COMPUTELINE#1/3,COMPUTELINE#2/4,LINEMULT/3,LINEMULT#1/3,LINEMULT#2/4,MATRIXMULT/2 ,MATRIXMULT#1/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4 ,matrixMult/2,matrixMult#1/2,#ADD#/2,#MULT#/2,#NATMULT#/2,#PRED#/1,#SUCC#/1,#add#/2,#mult#/2,#natmult#/2 ,#pred#/1,#succ#/1,*#/2,*'#/2,+#/2,+'#/2,COMPUTELINE#/3,COMPUTELINE#1#/3,COMPUTELINE#2#/4,LINEMULT#/3 ,LINEMULT#1#/3,LINEMULT#2#/4,MATRIXMULT#/2,MATRIXMULT#1#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4 ,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,c/0 ,c1/1,c10/1,c11/0,c12/1,c13/1,c14/0,c15/2,c16/0,c17/0,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/0,c24/1,c25/1 ,c26/1,c27/1,c28/0,c29/2,c3/1,c30/0,c31/1,c32/1,c33/0,c34/2,c35/1,c36/1,c37/1,c38/1,c39/1,c4/2,c40/1,c41/0 ,c5/0,c6/0,c7/0,c8/0,c9/1,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/2,c_12/1 ,c_13/1,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2,c_22/1,c_23/2,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/2,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0,c_42/0 ,c_43/0,c_44/1,c_45/1,c_46/1,c_47/1,c_48/0,c_49/0,c_50/0,c_51/0,c_52/1,c_53/1,c_54/0,c_55/1,c_56/1,c_57/0 ,c_58/1,c_59/0,c_60/0,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0,c_67/1,c_68/1,c_69/1,c_70/1,c_71/0,c_72/1 ,c_73/0,c_74/1,c_75/1,c_76/0,c_77/2,c_78/2,c_79/1,c_80/2,c_81/0} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#MULT#,#NATMULT#,#PRED#,#SUCC#,#add#,#mult# ,#natmult#,#pred#,#succ#,*#,*'#,+#,+'#,COMPUTELINE#,COMPUTELINE#1#,COMPUTELINE#2#,LINEMULT#,LINEMULT#1# ,LINEMULT#2#,MATRIXMULT#,MATRIXMULT#1#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1# ,lineMult#2#,matrixMult#,matrixMult#1#} and constructors {#0,#neg,#pos,#s,::,c,c1,c10,c11,c12,c13,c14,c15 ,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c4 ,c40,c41,c5,c6,c7,c8,c9,nil} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {6,8} by application of Pre({6,8}) = {5}. Here rules are labelled as follows: 1: COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) 2: COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) 3: COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)),LINEMULT#(z3,z0,z2)) 4: LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)) 5: LINEMULT#1#(::(z0,z1),z2,z3) -> c_9(LINEMULT#2#(z2,z3,z0,z1)) 6: LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_11(+'#(*(z3,z2),z0),*'#(z3,z2)) 7: LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_12(LINEMULT#(z2,z4,z1)) 8: LINEMULT#2#(nil(),z0,z1,z2) -> c_13(*'#(z1,z0)) 9: LINEMULT#2#(nil(),z0,z1,z2) -> c_14(LINEMULT#(z0,z2,nil())) 10: MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) 11: MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) 12: MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) 13: #ADD#(#0(),z0) -> c_19() 14: #ADD#(#neg(#s(#0())),z0) -> c_20(#PRED#(z0)) 15: #ADD#(#neg(#s(#s(z0))),z1) -> c_21(#PRED#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) 16: #ADD#(#pos(#s(#0())),z0) -> c_22(#SUCC#(z0)) 17: #ADD#(#pos(#s(#s(z0))),z1) -> c_23(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) 18: #MULT#(#0(),#0()) -> c_24() 19: #MULT#(#0(),#neg(z0)) -> c_25() 20: #MULT#(#0(),#pos(z0)) -> c_26() 21: #MULT#(#neg(z0),#0()) -> c_27() 22: #MULT#(#neg(z0),#neg(z1)) -> c_28(#NATMULT#(z0,z1)) 23: #MULT#(#neg(z0),#pos(z1)) -> c_29(#NATMULT#(z0,z1)) 24: #MULT#(#pos(z0),#0()) -> c_30() 25: #MULT#(#pos(z0),#neg(z1)) -> c_31(#NATMULT#(z0,z1)) 26: #MULT#(#pos(z0),#pos(z1)) -> c_32(#NATMULT#(z0,z1)) 27: #NATMULT#(#0(),z0) -> c_33() 28: #NATMULT#(#s(z0),z1) -> c_34(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)) 29: #PRED#(#0()) -> c_35() 30: #PRED#(#neg(#s(z0))) -> c_36() 31: #PRED#(#pos(#s(#0()))) -> c_37() 32: #PRED#(#pos(#s(#s(z0)))) -> c_38() 33: #SUCC#(#0()) -> c_39() 34: #SUCC#(#neg(#s(#0()))) -> c_40() 35: #SUCC#(#neg(#s(#s(z0)))) -> c_41() 36: #SUCC#(#pos(#s(z0))) -> c_42() 37: #add#(#0(),z0) -> c_43() 38: #add#(#neg(#s(#0())),z0) -> c_44(#pred#(z0)) 39: #add#(#neg(#s(#s(z0))),z1) -> c_45(#pred#(#add(#pos(#s(z0)),z1))) 40: #add#(#pos(#s(#0())),z0) -> c_46(#succ#(z0)) 41: #add#(#pos(#s(#s(z0))),z1) -> c_47(#succ#(#add(#pos(#s(z0)),z1))) 42: #mult#(#0(),#0()) -> c_48() 43: #mult#(#0(),#neg(z0)) -> c_49() 44: #mult#(#0(),#pos(z0)) -> c_50() 45: #mult#(#neg(z0),#0()) -> c_51() 46: #mult#(#neg(z0),#neg(z1)) -> c_52(#natmult#(z0,z1)) 47: #mult#(#neg(z0),#pos(z1)) -> c_53(#natmult#(z0,z1)) 48: #mult#(#pos(z0),#0()) -> c_54() 49: #mult#(#pos(z0),#neg(z1)) -> c_55(#natmult#(z0,z1)) 50: #mult#(#pos(z0),#pos(z1)) -> c_56(#natmult#(z0,z1)) 51: #natmult#(#0(),z0) -> c_57() 52: #natmult#(#s(z0),z1) -> c_58(#add#(#pos(z1),#natmult(z0,z1))) 53: #pred#(#0()) -> c_59() 54: #pred#(#neg(#s(z0))) -> c_60() 55: #pred#(#pos(#s(#0()))) -> c_61() 56: #pred#(#pos(#s(#s(z0)))) -> c_62() 57: #succ#(#0()) -> c_63() 58: #succ#(#neg(#s(#0()))) -> c_64() 59: #succ#(#neg(#s(#s(z0)))) -> c_65() 60: #succ#(#pos(#s(z0))) -> c_66() 61: *#(z0,z1) -> c_67(#mult#(z0,z1)) 62: *'#(z0,z1) -> c_1(#MULT#(z0,z1)) 63: +#(z0,z1) -> c_68(#add#(z0,z1)) 64: +'#(z0,z1) -> c_2(#ADD#(z0,z1)) 65: COMPUTELINE#1#(nil(),z0,z1) -> c_5() 66: COMPUTELINE#2#(nil(),z0,z1,z2) -> c_7() 67: LINEMULT#1#(nil(),z0,z1) -> c_10() 68: MATRIXMULT#1#(nil(),z0) -> c_18() 69: computeLine#(z0,z1,z2) -> c_69(computeLine#1#(z0,z2,z1)) 70: computeLine#1#(::(z0,z1),z2,z3) -> c_70(computeLine#2#(z3,z2,z0,z1)) 71: computeLine#1#(nil(),z0,z1) -> c_71() 72: computeLine#2#(::(z0,z1),z2,z3,z4) -> c_72(computeLine#(z4,z1,lineMult(z3,z0,z2))) 73: computeLine#2#(nil(),z0,z1,z2) -> c_73() 74: lineMult#(z0,z1,z2) -> c_74(lineMult#1#(z1,z2,z0)) 75: lineMult#1#(::(z0,z1),z2,z3) -> c_75(lineMult#2#(z2,z3,z0,z1)) 76: lineMult#1#(nil(),z0,z1) -> c_76() 77: lineMult#2#(::(z0,z1),z2,z3,z4) -> c_77(+#(*(z3,z2),z0),lineMult#(z2,z4,z1)) 78: lineMult#2#(nil(),z0,z1,z2) -> c_78(*#(z1,z0),lineMult#(z0,z2,nil())) 79: matrixMult#(z0,z1) -> c_79(matrixMult#1#(z0,z1)) 80: matrixMult#1#(::(z0,z1),z2) -> c_80(computeLine#(z0,z2,nil()),matrixMult#(z1,z2)) 81: matrixMult#1#(nil(),z0) -> c_81() * Step 6: RemoveWeakSuffixes. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)),LINEMULT#(z3,z0,z2)) LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)) LINEMULT#1#(::(z0,z1),z2,z3) -> c_9(LINEMULT#2#(z2,z3,z0,z1)) LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_12(LINEMULT#(z2,z4,z1)) LINEMULT#2#(nil(),z0,z1,z2) -> c_14(LINEMULT#(z0,z2,nil())) MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) - Weak DPs: #ADD#(#0(),z0) -> c_19() #ADD#(#neg(#s(#0())),z0) -> c_20(#PRED#(z0)) #ADD#(#neg(#s(#s(z0))),z1) -> c_21(#PRED#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) #ADD#(#pos(#s(#0())),z0) -> c_22(#SUCC#(z0)) #ADD#(#pos(#s(#s(z0))),z1) -> c_23(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) #MULT#(#0(),#0()) -> c_24() #MULT#(#0(),#neg(z0)) -> c_25() #MULT#(#0(),#pos(z0)) -> c_26() #MULT#(#neg(z0),#0()) -> c_27() #MULT#(#neg(z0),#neg(z1)) -> c_28(#NATMULT#(z0,z1)) #MULT#(#neg(z0),#pos(z1)) -> c_29(#NATMULT#(z0,z1)) #MULT#(#pos(z0),#0()) -> c_30() #MULT#(#pos(z0),#neg(z1)) -> c_31(#NATMULT#(z0,z1)) #MULT#(#pos(z0),#pos(z1)) -> c_32(#NATMULT#(z0,z1)) #NATMULT#(#0(),z0) -> c_33() #NATMULT#(#s(z0),z1) -> c_34(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)) #PRED#(#0()) -> c_35() #PRED#(#neg(#s(z0))) -> c_36() #PRED#(#pos(#s(#0()))) -> c_37() #PRED#(#pos(#s(#s(z0)))) -> c_38() #SUCC#(#0()) -> c_39() #SUCC#(#neg(#s(#0()))) -> c_40() #SUCC#(#neg(#s(#s(z0)))) -> c_41() #SUCC#(#pos(#s(z0))) -> c_42() #add#(#0(),z0) -> c_43() #add#(#neg(#s(#0())),z0) -> c_44(#pred#(z0)) #add#(#neg(#s(#s(z0))),z1) -> c_45(#pred#(#add(#pos(#s(z0)),z1))) #add#(#pos(#s(#0())),z0) -> c_46(#succ#(z0)) #add#(#pos(#s(#s(z0))),z1) -> c_47(#succ#(#add(#pos(#s(z0)),z1))) #mult#(#0(),#0()) -> c_48() #mult#(#0(),#neg(z0)) -> c_49() #mult#(#0(),#pos(z0)) -> c_50() #mult#(#neg(z0),#0()) -> c_51() #mult#(#neg(z0),#neg(z1)) -> c_52(#natmult#(z0,z1)) #mult#(#neg(z0),#pos(z1)) -> c_53(#natmult#(z0,z1)) #mult#(#pos(z0),#0()) -> c_54() #mult#(#pos(z0),#neg(z1)) -> c_55(#natmult#(z0,z1)) #mult#(#pos(z0),#pos(z1)) -> c_56(#natmult#(z0,z1)) #natmult#(#0(),z0) -> c_57() #natmult#(#s(z0),z1) -> c_58(#add#(#pos(z1),#natmult(z0,z1))) #pred#(#0()) -> c_59() #pred#(#neg(#s(z0))) -> c_60() #pred#(#pos(#s(#0()))) -> c_61() #pred#(#pos(#s(#s(z0)))) -> c_62() #succ#(#0()) -> c_63() #succ#(#neg(#s(#0()))) -> c_64() #succ#(#neg(#s(#s(z0)))) -> c_65() #succ#(#pos(#s(z0))) -> c_66() *#(z0,z1) -> c_67(#mult#(z0,z1)) *'#(z0,z1) -> c_1(#MULT#(z0,z1)) +#(z0,z1) -> c_68(#add#(z0,z1)) +'#(z0,z1) -> c_2(#ADD#(z0,z1)) COMPUTELINE#1#(nil(),z0,z1) -> c_5() COMPUTELINE#2#(nil(),z0,z1,z2) -> c_7() LINEMULT#1#(nil(),z0,z1) -> c_10() LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_11(+'#(*(z3,z2),z0),*'#(z3,z2)) LINEMULT#2#(nil(),z0,z1,z2) -> c_13(*'#(z1,z0)) MATRIXMULT#1#(nil(),z0) -> c_18() computeLine#(z0,z1,z2) -> c_69(computeLine#1#(z0,z2,z1)) computeLine#1#(::(z0,z1),z2,z3) -> c_70(computeLine#2#(z3,z2,z0,z1)) computeLine#1#(nil(),z0,z1) -> c_71() computeLine#2#(::(z0,z1),z2,z3,z4) -> c_72(computeLine#(z4,z1,lineMult(z3,z0,z2))) computeLine#2#(nil(),z0,z1,z2) -> c_73() lineMult#(z0,z1,z2) -> c_74(lineMult#1#(z1,z2,z0)) lineMult#1#(::(z0,z1),z2,z3) -> c_75(lineMult#2#(z2,z3,z0,z1)) lineMult#1#(nil(),z0,z1) -> c_76() lineMult#2#(::(z0,z1),z2,z3,z4) -> c_77(+#(*(z3,z2),z0),lineMult#(z2,z4,z1)) lineMult#2#(nil(),z0,z1,z2) -> c_78(*#(z1,z0),lineMult#(z0,z2,nil())) matrixMult#(z0,z1) -> c_79(matrixMult#1#(z0,z1)) matrixMult#1#(::(z0,z1),z2) -> c_80(computeLine#(z0,z2,nil()),matrixMult#(z1,z2)) matrixMult#1#(nil(),z0) -> c_81() - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) +(z0,z1) -> #add(z0,z1) lineMult(z0,z1,z2) -> lineMult#1(z1,z2,z0) lineMult#1(::(z0,z1),z2,z3) -> lineMult#2(z2,z3,z0,z1) lineMult#1(nil(),z0,z1) -> nil() lineMult#2(::(z0,z1),z2,z3,z4) -> ::(+(*(z3,z2),z0),lineMult(z2,z4,z1)) lineMult#2(nil(),z0,z1,z2) -> ::(*(z1,z0),lineMult(z0,z2,nil())) - Signature: {#ADD/2,#MULT/2,#NATMULT/2,#PRED/1,#SUCC/1,#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,*'/2,+/2,+'/2 ,COMPUTELINE/3,COMPUTELINE#1/3,COMPUTELINE#2/4,LINEMULT/3,LINEMULT#1/3,LINEMULT#2/4,MATRIXMULT/2 ,MATRIXMULT#1/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4 ,matrixMult/2,matrixMult#1/2,#ADD#/2,#MULT#/2,#NATMULT#/2,#PRED#/1,#SUCC#/1,#add#/2,#mult#/2,#natmult#/2 ,#pred#/1,#succ#/1,*#/2,*'#/2,+#/2,+'#/2,COMPUTELINE#/3,COMPUTELINE#1#/3,COMPUTELINE#2#/4,LINEMULT#/3 ,LINEMULT#1#/3,LINEMULT#2#/4,MATRIXMULT#/2,MATRIXMULT#1#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4 ,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,c/0 ,c1/1,c10/1,c11/0,c12/1,c13/1,c14/0,c15/2,c16/0,c17/0,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/0,c24/1,c25/1 ,c26/1,c27/1,c28/0,c29/2,c3/1,c30/0,c31/1,c32/1,c33/0,c34/2,c35/1,c36/1,c37/1,c38/1,c39/1,c4/2,c40/1,c41/0 ,c5/0,c6/0,c7/0,c8/0,c9/1,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/2,c_12/1 ,c_13/1,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2,c_22/1,c_23/2,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/2,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0,c_42/0 ,c_43/0,c_44/1,c_45/1,c_46/1,c_47/1,c_48/0,c_49/0,c_50/0,c_51/0,c_52/1,c_53/1,c_54/0,c_55/1,c_56/1,c_57/0 ,c_58/1,c_59/0,c_60/0,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0,c_67/1,c_68/1,c_69/1,c_70/1,c_71/0,c_72/1 ,c_73/0,c_74/1,c_75/1,c_76/0,c_77/2,c_78/2,c_79/1,c_80/2,c_81/0} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#MULT#,#NATMULT#,#PRED#,#SUCC#,#add#,#mult# ,#natmult#,#pred#,#succ#,*#,*'#,+#,+'#,COMPUTELINE#,COMPUTELINE#1#,COMPUTELINE#2#,LINEMULT#,LINEMULT#1# ,LINEMULT#2#,MATRIXMULT#,MATRIXMULT#1#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1# ,lineMult#2#,matrixMult#,matrixMult#1#} and constructors {#0,#neg,#pos,#s,::,c,c1,c10,c11,c12,c13,c14,c15 ,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c4 ,c40,c41,c5,c6,c7,c8,c9,nil} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) -->_1 COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)):2 -->_1 COMPUTELINE#1#(nil(),z0,z1) -> c_5():63 2:S:COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) -->_1 COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)) ,LINEMULT#(z3,z0,z2)):3 -->_1 COMPUTELINE#2#(nil(),z0,z1,z2) -> c_7():64 3:S:COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)),LINEMULT#(z3,z0,z2)) -->_2 LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)):4 -->_1 COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)):1 4:S:LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)) -->_1 LINEMULT#1#(::(z0,z1),z2,z3) -> c_9(LINEMULT#2#(z2,z3,z0,z1)):5 -->_1 LINEMULT#1#(nil(),z0,z1) -> c_10():65 5:S:LINEMULT#1#(::(z0,z1),z2,z3) -> c_9(LINEMULT#2#(z2,z3,z0,z1)) -->_1 LINEMULT#2#(nil(),z0,z1,z2) -> c_13(*'#(z1,z0)):67 -->_1 LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_11(+'#(*(z3,z2),z0),*'#(z3,z2)):66 -->_1 LINEMULT#2#(nil(),z0,z1,z2) -> c_14(LINEMULT#(z0,z2,nil())):7 -->_1 LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_12(LINEMULT#(z2,z4,z1)):6 6:S:LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_12(LINEMULT#(z2,z4,z1)) -->_1 LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)):4 7:S:LINEMULT#2#(nil(),z0,z1,z2) -> c_14(LINEMULT#(z0,z2,nil())) -->_1 LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)):4 8:S:MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) -->_1 MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)):10 -->_1 MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())):9 -->_1 MATRIXMULT#1#(nil(),z0) -> c_18():68 9:S:MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) -->_1 COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)):1 10:S:MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) -->_1 MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)):8 11:W:#ADD#(#0(),z0) -> c_19() 12:W:#ADD#(#neg(#s(#0())),z0) -> c_20(#PRED#(z0)) -->_1 #PRED#(#pos(#s(#s(z0)))) -> c_38():30 -->_1 #PRED#(#pos(#s(#0()))) -> c_37():29 -->_1 #PRED#(#neg(#s(z0))) -> c_36():28 -->_1 #PRED#(#0()) -> c_35():27 13:W:#ADD#(#neg(#s(#s(z0))),z1) -> c_21(#PRED#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) -->_2 #ADD#(#pos(#s(#s(z0))),z1) -> c_23(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)):15 -->_2 #ADD#(#pos(#s(#0())),z0) -> c_22(#SUCC#(z0)):14 -->_1 #PRED#(#pos(#s(#s(z0)))) -> c_38():30 -->_1 #PRED#(#pos(#s(#0()))) -> c_37():29 -->_1 #PRED#(#neg(#s(z0))) -> c_36():28 -->_1 #PRED#(#0()) -> c_35():27 14:W:#ADD#(#pos(#s(#0())),z0) -> c_22(#SUCC#(z0)) -->_1 #SUCC#(#pos(#s(z0))) -> c_42():34 -->_1 #SUCC#(#neg(#s(#s(z0)))) -> c_41():33 -->_1 #SUCC#(#neg(#s(#0()))) -> c_40():32 -->_1 #SUCC#(#0()) -> c_39():31 15:W:#ADD#(#pos(#s(#s(z0))),z1) -> c_23(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) -->_1 #SUCC#(#pos(#s(z0))) -> c_42():34 -->_1 #SUCC#(#neg(#s(#s(z0)))) -> c_41():33 -->_1 #SUCC#(#neg(#s(#0()))) -> c_40():32 -->_1 #SUCC#(#0()) -> c_39():31 -->_2 #ADD#(#pos(#s(#s(z0))),z1) -> c_23(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)):15 -->_2 #ADD#(#pos(#s(#0())),z0) -> c_22(#SUCC#(z0)):14 16:W:#MULT#(#0(),#0()) -> c_24() 17:W:#MULT#(#0(),#neg(z0)) -> c_25() 18:W:#MULT#(#0(),#pos(z0)) -> c_26() 19:W:#MULT#(#neg(z0),#0()) -> c_27() 20:W:#MULT#(#neg(z0),#neg(z1)) -> c_28(#NATMULT#(z0,z1)) -->_1 #NATMULT#(#s(z0),z1) -> c_34(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)):26 -->_1 #NATMULT#(#0(),z0) -> c_33():25 21:W:#MULT#(#neg(z0),#pos(z1)) -> c_29(#NATMULT#(z0,z1)) -->_1 #NATMULT#(#s(z0),z1) -> c_34(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)):26 -->_1 #NATMULT#(#0(),z0) -> c_33():25 22:W:#MULT#(#pos(z0),#0()) -> c_30() 23:W:#MULT#(#pos(z0),#neg(z1)) -> c_31(#NATMULT#(z0,z1)) -->_1 #NATMULT#(#s(z0),z1) -> c_34(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)):26 -->_1 #NATMULT#(#0(),z0) -> c_33():25 24:W:#MULT#(#pos(z0),#pos(z1)) -> c_32(#NATMULT#(z0,z1)) -->_1 #NATMULT#(#s(z0),z1) -> c_34(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)):26 -->_1 #NATMULT#(#0(),z0) -> c_33():25 25:W:#NATMULT#(#0(),z0) -> c_33() 26:W:#NATMULT#(#s(z0),z1) -> c_34(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)) -->_2 #NATMULT#(#s(z0),z1) -> c_34(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)):26 -->_2 #NATMULT#(#0(),z0) -> c_33():25 -->_1 #ADD#(#pos(#s(#s(z0))),z1) -> c_23(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)):15 -->_1 #ADD#(#pos(#s(#0())),z0) -> c_22(#SUCC#(z0)):14 27:W:#PRED#(#0()) -> c_35() 28:W:#PRED#(#neg(#s(z0))) -> c_36() 29:W:#PRED#(#pos(#s(#0()))) -> c_37() 30:W:#PRED#(#pos(#s(#s(z0)))) -> c_38() 31:W:#SUCC#(#0()) -> c_39() 32:W:#SUCC#(#neg(#s(#0()))) -> c_40() 33:W:#SUCC#(#neg(#s(#s(z0)))) -> c_41() 34:W:#SUCC#(#pos(#s(z0))) -> c_42() 35:W:#add#(#0(),z0) -> c_43() 36:W:#add#(#neg(#s(#0())),z0) -> c_44(#pred#(z0)) -->_1 #pred#(#pos(#s(#s(z0)))) -> c_62():54 -->_1 #pred#(#pos(#s(#0()))) -> c_61():53 -->_1 #pred#(#neg(#s(z0))) -> c_60():52 -->_1 #pred#(#0()) -> c_59():51 37:W:#add#(#neg(#s(#s(z0))),z1) -> c_45(#pred#(#add(#pos(#s(z0)),z1))) -->_1 #pred#(#pos(#s(#s(z0)))) -> c_62():54 -->_1 #pred#(#pos(#s(#0()))) -> c_61():53 -->_1 #pred#(#neg(#s(z0))) -> c_60():52 -->_1 #pred#(#0()) -> c_59():51 38:W:#add#(#pos(#s(#0())),z0) -> c_46(#succ#(z0)) -->_1 #succ#(#pos(#s(z0))) -> c_66():58 -->_1 #succ#(#neg(#s(#s(z0)))) -> c_65():57 -->_1 #succ#(#neg(#s(#0()))) -> c_64():56 -->_1 #succ#(#0()) -> c_63():55 39:W:#add#(#pos(#s(#s(z0))),z1) -> c_47(#succ#(#add(#pos(#s(z0)),z1))) -->_1 #succ#(#pos(#s(z0))) -> c_66():58 -->_1 #succ#(#neg(#s(#s(z0)))) -> c_65():57 -->_1 #succ#(#neg(#s(#0()))) -> c_64():56 -->_1 #succ#(#0()) -> c_63():55 40:W:#mult#(#0(),#0()) -> c_48() 41:W:#mult#(#0(),#neg(z0)) -> c_49() 42:W:#mult#(#0(),#pos(z0)) -> c_50() 43:W:#mult#(#neg(z0),#0()) -> c_51() 44:W:#mult#(#neg(z0),#neg(z1)) -> c_52(#natmult#(z0,z1)) -->_1 #natmult#(#s(z0),z1) -> c_58(#add#(#pos(z1),#natmult(z0,z1))):50 -->_1 #natmult#(#0(),z0) -> c_57():49 45:W:#mult#(#neg(z0),#pos(z1)) -> c_53(#natmult#(z0,z1)) -->_1 #natmult#(#s(z0),z1) -> c_58(#add#(#pos(z1),#natmult(z0,z1))):50 -->_1 #natmult#(#0(),z0) -> c_57():49 46:W:#mult#(#pos(z0),#0()) -> c_54() 47:W:#mult#(#pos(z0),#neg(z1)) -> c_55(#natmult#(z0,z1)) -->_1 #natmult#(#s(z0),z1) -> c_58(#add#(#pos(z1),#natmult(z0,z1))):50 -->_1 #natmult#(#0(),z0) -> c_57():49 48:W:#mult#(#pos(z0),#pos(z1)) -> c_56(#natmult#(z0,z1)) -->_1 #natmult#(#s(z0),z1) -> c_58(#add#(#pos(z1),#natmult(z0,z1))):50 -->_1 #natmult#(#0(),z0) -> c_57():49 49:W:#natmult#(#0(),z0) -> c_57() 50:W:#natmult#(#s(z0),z1) -> c_58(#add#(#pos(z1),#natmult(z0,z1))) -->_1 #add#(#pos(#s(#s(z0))),z1) -> c_47(#succ#(#add(#pos(#s(z0)),z1))):39 -->_1 #add#(#pos(#s(#0())),z0) -> c_46(#succ#(z0)):38 51:W:#pred#(#0()) -> c_59() 52:W:#pred#(#neg(#s(z0))) -> c_60() 53:W:#pred#(#pos(#s(#0()))) -> c_61() 54:W:#pred#(#pos(#s(#s(z0)))) -> c_62() 55:W:#succ#(#0()) -> c_63() 56:W:#succ#(#neg(#s(#0()))) -> c_64() 57:W:#succ#(#neg(#s(#s(z0)))) -> c_65() 58:W:#succ#(#pos(#s(z0))) -> c_66() 59:W:*#(z0,z1) -> c_67(#mult#(z0,z1)) -->_1 #mult#(#pos(z0),#pos(z1)) -> c_56(#natmult#(z0,z1)):48 -->_1 #mult#(#pos(z0),#neg(z1)) -> c_55(#natmult#(z0,z1)):47 -->_1 #mult#(#pos(z0),#0()) -> c_54():46 -->_1 #mult#(#neg(z0),#pos(z1)) -> c_53(#natmult#(z0,z1)):45 -->_1 #mult#(#neg(z0),#neg(z1)) -> c_52(#natmult#(z0,z1)):44 -->_1 #mult#(#neg(z0),#0()) -> c_51():43 -->_1 #mult#(#0(),#pos(z0)) -> c_50():42 -->_1 #mult#(#0(),#neg(z0)) -> c_49():41 -->_1 #mult#(#0(),#0()) -> c_48():40 60:W:*'#(z0,z1) -> c_1(#MULT#(z0,z1)) -->_1 #MULT#(#pos(z0),#pos(z1)) -> c_32(#NATMULT#(z0,z1)):24 -->_1 #MULT#(#pos(z0),#neg(z1)) -> c_31(#NATMULT#(z0,z1)):23 -->_1 #MULT#(#pos(z0),#0()) -> c_30():22 -->_1 #MULT#(#neg(z0),#pos(z1)) -> c_29(#NATMULT#(z0,z1)):21 -->_1 #MULT#(#neg(z0),#neg(z1)) -> c_28(#NATMULT#(z0,z1)):20 -->_1 #MULT#(#neg(z0),#0()) -> c_27():19 -->_1 #MULT#(#0(),#pos(z0)) -> c_26():18 -->_1 #MULT#(#0(),#neg(z0)) -> c_25():17 -->_1 #MULT#(#0(),#0()) -> c_24():16 61:W:+#(z0,z1) -> c_68(#add#(z0,z1)) -->_1 #add#(#pos(#s(#s(z0))),z1) -> c_47(#succ#(#add(#pos(#s(z0)),z1))):39 -->_1 #add#(#pos(#s(#0())),z0) -> c_46(#succ#(z0)):38 -->_1 #add#(#neg(#s(#s(z0))),z1) -> c_45(#pred#(#add(#pos(#s(z0)),z1))):37 -->_1 #add#(#neg(#s(#0())),z0) -> c_44(#pred#(z0)):36 -->_1 #add#(#0(),z0) -> c_43():35 62:W:+'#(z0,z1) -> c_2(#ADD#(z0,z1)) -->_1 #ADD#(#pos(#s(#s(z0))),z1) -> c_23(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)):15 -->_1 #ADD#(#pos(#s(#0())),z0) -> c_22(#SUCC#(z0)):14 -->_1 #ADD#(#neg(#s(#s(z0))),z1) -> c_21(#PRED#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)):13 -->_1 #ADD#(#neg(#s(#0())),z0) -> c_20(#PRED#(z0)):12 -->_1 #ADD#(#0(),z0) -> c_19():11 63:W:COMPUTELINE#1#(nil(),z0,z1) -> c_5() 64:W:COMPUTELINE#2#(nil(),z0,z1,z2) -> c_7() 65:W:LINEMULT#1#(nil(),z0,z1) -> c_10() 66:W:LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_11(+'#(*(z3,z2),z0),*'#(z3,z2)) -->_1 +'#(z0,z1) -> c_2(#ADD#(z0,z1)):62 -->_2 *'#(z0,z1) -> c_1(#MULT#(z0,z1)):60 67:W:LINEMULT#2#(nil(),z0,z1,z2) -> c_13(*'#(z1,z0)) -->_1 *'#(z0,z1) -> c_1(#MULT#(z0,z1)):60 68:W:MATRIXMULT#1#(nil(),z0) -> c_18() 69:W:computeLine#(z0,z1,z2) -> c_69(computeLine#1#(z0,z2,z1)) -->_1 computeLine#1#(::(z0,z1),z2,z3) -> c_70(computeLine#2#(z3,z2,z0,z1)):70 -->_1 computeLine#1#(nil(),z0,z1) -> c_71():71 70:W:computeLine#1#(::(z0,z1),z2,z3) -> c_70(computeLine#2#(z3,z2,z0,z1)) -->_1 computeLine#2#(::(z0,z1),z2,z3,z4) -> c_72(computeLine#(z4,z1,lineMult(z3,z0,z2))):72 -->_1 computeLine#2#(nil(),z0,z1,z2) -> c_73():73 71:W:computeLine#1#(nil(),z0,z1) -> c_71() 72:W:computeLine#2#(::(z0,z1),z2,z3,z4) -> c_72(computeLine#(z4,z1,lineMult(z3,z0,z2))) -->_1 computeLine#(z0,z1,z2) -> c_69(computeLine#1#(z0,z2,z1)):69 73:W:computeLine#2#(nil(),z0,z1,z2) -> c_73() 74:W:lineMult#(z0,z1,z2) -> c_74(lineMult#1#(z1,z2,z0)) -->_1 lineMult#1#(::(z0,z1),z2,z3) -> c_75(lineMult#2#(z2,z3,z0,z1)):75 -->_1 lineMult#1#(nil(),z0,z1) -> c_76():76 75:W:lineMult#1#(::(z0,z1),z2,z3) -> c_75(lineMult#2#(z2,z3,z0,z1)) -->_1 lineMult#2#(nil(),z0,z1,z2) -> c_78(*#(z1,z0),lineMult#(z0,z2,nil())):78 -->_1 lineMult#2#(::(z0,z1),z2,z3,z4) -> c_77(+#(*(z3,z2),z0),lineMult#(z2,z4,z1)):77 76:W:lineMult#1#(nil(),z0,z1) -> c_76() 77:W:lineMult#2#(::(z0,z1),z2,z3,z4) -> c_77(+#(*(z3,z2),z0),lineMult#(z2,z4,z1)) -->_2 lineMult#(z0,z1,z2) -> c_74(lineMult#1#(z1,z2,z0)):74 -->_1 +#(z0,z1) -> c_68(#add#(z0,z1)):61 78:W:lineMult#2#(nil(),z0,z1,z2) -> c_78(*#(z1,z0),lineMult#(z0,z2,nil())) -->_2 lineMult#(z0,z1,z2) -> c_74(lineMult#1#(z1,z2,z0)):74 -->_1 *#(z0,z1) -> c_67(#mult#(z0,z1)):59 79:W:matrixMult#(z0,z1) -> c_79(matrixMult#1#(z0,z1)) -->_1 matrixMult#1#(::(z0,z1),z2) -> c_80(computeLine#(z0,z2,nil()),matrixMult#(z1,z2)):80 -->_1 matrixMult#1#(nil(),z0) -> c_81():81 80:W:matrixMult#1#(::(z0,z1),z2) -> c_80(computeLine#(z0,z2,nil()),matrixMult#(z1,z2)) -->_2 matrixMult#(z0,z1) -> c_79(matrixMult#1#(z0,z1)):79 -->_1 computeLine#(z0,z1,z2) -> c_69(computeLine#1#(z0,z2,z1)):69 81:W:matrixMult#1#(nil(),z0) -> c_81() The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 79: matrixMult#(z0,z1) -> c_79(matrixMult#1#(z0,z1)) 80: matrixMult#1#(::(z0,z1),z2) -> c_80(computeLine#(z0,z2,nil()),matrixMult#(z1,z2)) 81: matrixMult#1#(nil(),z0) -> c_81() 74: lineMult#(z0,z1,z2) -> c_74(lineMult#1#(z1,z2,z0)) 78: lineMult#2#(nil(),z0,z1,z2) -> c_78(*#(z1,z0),lineMult#(z0,z2,nil())) 75: lineMult#1#(::(z0,z1),z2,z3) -> c_75(lineMult#2#(z2,z3,z0,z1)) 77: lineMult#2#(::(z0,z1),z2,z3,z4) -> c_77(+#(*(z3,z2),z0),lineMult#(z2,z4,z1)) 76: lineMult#1#(nil(),z0,z1) -> c_76() 69: computeLine#(z0,z1,z2) -> c_69(computeLine#1#(z0,z2,z1)) 72: computeLine#2#(::(z0,z1),z2,z3,z4) -> c_72(computeLine#(z4,z1,lineMult(z3,z0,z2))) 70: computeLine#1#(::(z0,z1),z2,z3) -> c_70(computeLine#2#(z3,z2,z0,z1)) 71: computeLine#1#(nil(),z0,z1) -> c_71() 73: computeLine#2#(nil(),z0,z1,z2) -> c_73() 61: +#(z0,z1) -> c_68(#add#(z0,z1)) 59: *#(z0,z1) -> c_67(#mult#(z0,z1)) 48: #mult#(#pos(z0),#pos(z1)) -> c_56(#natmult#(z0,z1)) 47: #mult#(#pos(z0),#neg(z1)) -> c_55(#natmult#(z0,z1)) 46: #mult#(#pos(z0),#0()) -> c_54() 45: #mult#(#neg(z0),#pos(z1)) -> c_53(#natmult#(z0,z1)) 44: #mult#(#neg(z0),#neg(z1)) -> c_52(#natmult#(z0,z1)) 49: #natmult#(#0(),z0) -> c_57() 50: #natmult#(#s(z0),z1) -> c_58(#add#(#pos(z1),#natmult(z0,z1))) 43: #mult#(#neg(z0),#0()) -> c_51() 42: #mult#(#0(),#pos(z0)) -> c_50() 41: #mult#(#0(),#neg(z0)) -> c_49() 40: #mult#(#0(),#0()) -> c_48() 39: #add#(#pos(#s(#s(z0))),z1) -> c_47(#succ#(#add(#pos(#s(z0)),z1))) 38: #add#(#pos(#s(#0())),z0) -> c_46(#succ#(z0)) 55: #succ#(#0()) -> c_63() 56: #succ#(#neg(#s(#0()))) -> c_64() 57: #succ#(#neg(#s(#s(z0)))) -> c_65() 58: #succ#(#pos(#s(z0))) -> c_66() 37: #add#(#neg(#s(#s(z0))),z1) -> c_45(#pred#(#add(#pos(#s(z0)),z1))) 36: #add#(#neg(#s(#0())),z0) -> c_44(#pred#(z0)) 51: #pred#(#0()) -> c_59() 52: #pred#(#neg(#s(z0))) -> c_60() 53: #pred#(#pos(#s(#0()))) -> c_61() 54: #pred#(#pos(#s(#s(z0)))) -> c_62() 35: #add#(#0(),z0) -> c_43() 68: MATRIXMULT#1#(nil(),z0) -> c_18() 63: COMPUTELINE#1#(nil(),z0,z1) -> c_5() 64: COMPUTELINE#2#(nil(),z0,z1,z2) -> c_7() 65: LINEMULT#1#(nil(),z0,z1) -> c_10() 66: LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_11(+'#(*(z3,z2),z0),*'#(z3,z2)) 62: +'#(z0,z1) -> c_2(#ADD#(z0,z1)) 11: #ADD#(#0(),z0) -> c_19() 12: #ADD#(#neg(#s(#0())),z0) -> c_20(#PRED#(z0)) 13: #ADD#(#neg(#s(#s(z0))),z1) -> c_21(#PRED#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) 27: #PRED#(#0()) -> c_35() 28: #PRED#(#neg(#s(z0))) -> c_36() 29: #PRED#(#pos(#s(#0()))) -> c_37() 30: #PRED#(#pos(#s(#s(z0)))) -> c_38() 67: LINEMULT#2#(nil(),z0,z1,z2) -> c_13(*'#(z1,z0)) 60: *'#(z0,z1) -> c_1(#MULT#(z0,z1)) 16: #MULT#(#0(),#0()) -> c_24() 17: #MULT#(#0(),#neg(z0)) -> c_25() 18: #MULT#(#0(),#pos(z0)) -> c_26() 19: #MULT#(#neg(z0),#0()) -> c_27() 20: #MULT#(#neg(z0),#neg(z1)) -> c_28(#NATMULT#(z0,z1)) 21: #MULT#(#neg(z0),#pos(z1)) -> c_29(#NATMULT#(z0,z1)) 22: #MULT#(#pos(z0),#0()) -> c_30() 23: #MULT#(#pos(z0),#neg(z1)) -> c_31(#NATMULT#(z0,z1)) 24: #MULT#(#pos(z0),#pos(z1)) -> c_32(#NATMULT#(z0,z1)) 26: #NATMULT#(#s(z0),z1) -> c_34(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)) 15: #ADD#(#pos(#s(#s(z0))),z1) -> c_23(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) 14: #ADD#(#pos(#s(#0())),z0) -> c_22(#SUCC#(z0)) 31: #SUCC#(#0()) -> c_39() 32: #SUCC#(#neg(#s(#0()))) -> c_40() 33: #SUCC#(#neg(#s(#s(z0)))) -> c_41() 34: #SUCC#(#pos(#s(z0))) -> c_42() 25: #NATMULT#(#0(),z0) -> c_33() * Step 7: Decompose. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)),LINEMULT#(z3,z0,z2)) LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)) LINEMULT#1#(::(z0,z1),z2,z3) -> c_9(LINEMULT#2#(z2,z3,z0,z1)) LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_12(LINEMULT#(z2,z4,z1)) LINEMULT#2#(nil(),z0,z1,z2) -> c_14(LINEMULT#(z0,z2,nil())) MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) +(z0,z1) -> #add(z0,z1) lineMult(z0,z1,z2) -> lineMult#1(z1,z2,z0) lineMult#1(::(z0,z1),z2,z3) -> lineMult#2(z2,z3,z0,z1) lineMult#1(nil(),z0,z1) -> nil() lineMult#2(::(z0,z1),z2,z3,z4) -> ::(+(*(z3,z2),z0),lineMult(z2,z4,z1)) lineMult#2(nil(),z0,z1,z2) -> ::(*(z1,z0),lineMult(z0,z2,nil())) - Signature: {#ADD/2,#MULT/2,#NATMULT/2,#PRED/1,#SUCC/1,#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,*'/2,+/2,+'/2 ,COMPUTELINE/3,COMPUTELINE#1/3,COMPUTELINE#2/4,LINEMULT/3,LINEMULT#1/3,LINEMULT#2/4,MATRIXMULT/2 ,MATRIXMULT#1/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4 ,matrixMult/2,matrixMult#1/2,#ADD#/2,#MULT#/2,#NATMULT#/2,#PRED#/1,#SUCC#/1,#add#/2,#mult#/2,#natmult#/2 ,#pred#/1,#succ#/1,*#/2,*'#/2,+#/2,+'#/2,COMPUTELINE#/3,COMPUTELINE#1#/3,COMPUTELINE#2#/4,LINEMULT#/3 ,LINEMULT#1#/3,LINEMULT#2#/4,MATRIXMULT#/2,MATRIXMULT#1#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4 ,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,c/0 ,c1/1,c10/1,c11/0,c12/1,c13/1,c14/0,c15/2,c16/0,c17/0,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/0,c24/1,c25/1 ,c26/1,c27/1,c28/0,c29/2,c3/1,c30/0,c31/1,c32/1,c33/0,c34/2,c35/1,c36/1,c37/1,c38/1,c39/1,c4/2,c40/1,c41/0 ,c5/0,c6/0,c7/0,c8/0,c9/1,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/2,c_12/1 ,c_13/1,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2,c_22/1,c_23/2,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/2,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0,c_42/0 ,c_43/0,c_44/1,c_45/1,c_46/1,c_47/1,c_48/0,c_49/0,c_50/0,c_51/0,c_52/1,c_53/1,c_54/0,c_55/1,c_56/1,c_57/0 ,c_58/1,c_59/0,c_60/0,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0,c_67/1,c_68/1,c_69/1,c_70/1,c_71/0,c_72/1 ,c_73/0,c_74/1,c_75/1,c_76/0,c_77/2,c_78/2,c_79/1,c_80/2,c_81/0} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#MULT#,#NATMULT#,#PRED#,#SUCC#,#add#,#mult# ,#natmult#,#pred#,#succ#,*#,*'#,+#,+'#,COMPUTELINE#,COMPUTELINE#1#,COMPUTELINE#2#,LINEMULT#,LINEMULT#1# ,LINEMULT#2#,MATRIXMULT#,MATRIXMULT#1#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1# ,lineMult#2#,matrixMult#,matrixMult#1#} and constructors {#0,#neg,#pos,#s,::,c,c1,c10,c11,c12,c13,c14,c15 ,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c4 ,c40,c41,c5,c6,c7,c8,c9,nil} + Applied Processor: Decompose {onSelection = all cycle independent sub-graph, withBound = RelativeAdd} + Details: We analyse the complexity of following sub-problems (R) and (S). Problem (S) is obtained from the input problem by shifting strict rules from (R) into the weak component. Problem (R) - Strict DPs: COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)),LINEMULT#(z3,z0,z2)) LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)) LINEMULT#1#(::(z0,z1),z2,z3) -> c_9(LINEMULT#2#(z2,z3,z0,z1)) LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_12(LINEMULT#(z2,z4,z1)) LINEMULT#2#(nil(),z0,z1,z2) -> c_14(LINEMULT#(z0,z2,nil())) - Weak DPs: MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) +(z0,z1) -> #add(z0,z1) lineMult(z0,z1,z2) -> lineMult#1(z1,z2,z0) lineMult#1(::(z0,z1),z2,z3) -> lineMult#2(z2,z3,z0,z1) lineMult#1(nil(),z0,z1) -> nil() lineMult#2(::(z0,z1),z2,z3,z4) -> ::(+(*(z3,z2),z0),lineMult(z2,z4,z1)) lineMult#2(nil(),z0,z1,z2) -> ::(*(z1,z0),lineMult(z0,z2,nil())) - Signature: {#ADD/2,#MULT/2,#NATMULT/2,#PRED/1,#SUCC/1,#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,*'/2,+/2,+'/2 ,COMPUTELINE/3,COMPUTELINE#1/3,COMPUTELINE#2/4,LINEMULT/3,LINEMULT#1/3,LINEMULT#2/4,MATRIXMULT/2 ,MATRIXMULT#1/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4 ,matrixMult/2,matrixMult#1/2,#ADD#/2,#MULT#/2,#NATMULT#/2,#PRED#/1,#SUCC#/1,#add#/2,#mult#/2,#natmult#/2 ,#pred#/1,#succ#/1,*#/2,*'#/2,+#/2,+'#/2,COMPUTELINE#/3,COMPUTELINE#1#/3,COMPUTELINE#2#/4,LINEMULT#/3 ,LINEMULT#1#/3,LINEMULT#2#/4,MATRIXMULT#/2,MATRIXMULT#1#/2,computeLine#/3,computeLine#1#/3 ,computeLine#2#/4,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1 ,#pos/1,#s/1,::/2,c/0,c1/1,c10/1,c11/0,c12/1,c13/1,c14/0,c15/2,c16/0,c17/0,c18/0,c19/0,c2/2,c20/0,c21/0 ,c22/0,c23/0,c24/1,c25/1,c26/1,c27/1,c28/0,c29/2,c3/1,c30/0,c31/1,c32/1,c33/0,c34/2,c35/1,c36/1,c37/1 ,c38/1,c39/1,c4/2,c40/1,c41/0,c5/0,c6/0,c7/0,c8/0,c9/1,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0 ,c_8/1,c_9/1,c_10/0,c_11/2,c_12/1,c_13/1,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2,c_22/1 ,c_23/2,c_24/0,c_25/0,c_26/0,c_27/0,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/2,c_35/0,c_36/0,c_37/0 ,c_38/0,c_39/0,c_40/0,c_41/0,c_42/0,c_43/0,c_44/1,c_45/1,c_46/1,c_47/1,c_48/0,c_49/0,c_50/0,c_51/0,c_52/1 ,c_53/1,c_54/0,c_55/1,c_56/1,c_57/0,c_58/1,c_59/0,c_60/0,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0,c_67/1 ,c_68/1,c_69/1,c_70/1,c_71/0,c_72/1,c_73/0,c_74/1,c_75/1,c_76/0,c_77/2,c_78/2,c_79/1,c_80/2,c_81/0} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#MULT#,#NATMULT#,#PRED#,#SUCC#,#add#,#mult# ,#natmult#,#pred#,#succ#,*#,*'#,+#,+'#,COMPUTELINE#,COMPUTELINE#1#,COMPUTELINE#2#,LINEMULT#,LINEMULT#1# ,LINEMULT#2#,MATRIXMULT#,MATRIXMULT#1#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1# ,lineMult#2#,matrixMult#,matrixMult#1#} and constructors {#0,#neg,#pos,#s,::,c,c1,c10,c11,c12,c13,c14,c15 ,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c4 ,c40,c41,c5,c6,c7,c8,c9,nil} Problem (S) - Strict DPs: MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) - Weak DPs: COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)),LINEMULT#(z3,z0,z2)) LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)) LINEMULT#1#(::(z0,z1),z2,z3) -> c_9(LINEMULT#2#(z2,z3,z0,z1)) LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_12(LINEMULT#(z2,z4,z1)) LINEMULT#2#(nil(),z0,z1,z2) -> c_14(LINEMULT#(z0,z2,nil())) - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) +(z0,z1) -> #add(z0,z1) lineMult(z0,z1,z2) -> lineMult#1(z1,z2,z0) lineMult#1(::(z0,z1),z2,z3) -> lineMult#2(z2,z3,z0,z1) lineMult#1(nil(),z0,z1) -> nil() lineMult#2(::(z0,z1),z2,z3,z4) -> ::(+(*(z3,z2),z0),lineMult(z2,z4,z1)) lineMult#2(nil(),z0,z1,z2) -> ::(*(z1,z0),lineMult(z0,z2,nil())) - Signature: {#ADD/2,#MULT/2,#NATMULT/2,#PRED/1,#SUCC/1,#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,*'/2,+/2,+'/2 ,COMPUTELINE/3,COMPUTELINE#1/3,COMPUTELINE#2/4,LINEMULT/3,LINEMULT#1/3,LINEMULT#2/4,MATRIXMULT/2 ,MATRIXMULT#1/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4 ,matrixMult/2,matrixMult#1/2,#ADD#/2,#MULT#/2,#NATMULT#/2,#PRED#/1,#SUCC#/1,#add#/2,#mult#/2,#natmult#/2 ,#pred#/1,#succ#/1,*#/2,*'#/2,+#/2,+'#/2,COMPUTELINE#/3,COMPUTELINE#1#/3,COMPUTELINE#2#/4,LINEMULT#/3 ,LINEMULT#1#/3,LINEMULT#2#/4,MATRIXMULT#/2,MATRIXMULT#1#/2,computeLine#/3,computeLine#1#/3 ,computeLine#2#/4,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1 ,#pos/1,#s/1,::/2,c/0,c1/1,c10/1,c11/0,c12/1,c13/1,c14/0,c15/2,c16/0,c17/0,c18/0,c19/0,c2/2,c20/0,c21/0 ,c22/0,c23/0,c24/1,c25/1,c26/1,c27/1,c28/0,c29/2,c3/1,c30/0,c31/1,c32/1,c33/0,c34/2,c35/1,c36/1,c37/1 ,c38/1,c39/1,c4/2,c40/1,c41/0,c5/0,c6/0,c7/0,c8/0,c9/1,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0 ,c_8/1,c_9/1,c_10/0,c_11/2,c_12/1,c_13/1,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2,c_22/1 ,c_23/2,c_24/0,c_25/0,c_26/0,c_27/0,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/2,c_35/0,c_36/0,c_37/0 ,c_38/0,c_39/0,c_40/0,c_41/0,c_42/0,c_43/0,c_44/1,c_45/1,c_46/1,c_47/1,c_48/0,c_49/0,c_50/0,c_51/0,c_52/1 ,c_53/1,c_54/0,c_55/1,c_56/1,c_57/0,c_58/1,c_59/0,c_60/0,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0,c_67/1 ,c_68/1,c_69/1,c_70/1,c_71/0,c_72/1,c_73/0,c_74/1,c_75/1,c_76/0,c_77/2,c_78/2,c_79/1,c_80/2,c_81/0} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#MULT#,#NATMULT#,#PRED#,#SUCC#,#add#,#mult# ,#natmult#,#pred#,#succ#,*#,*'#,+#,+'#,COMPUTELINE#,COMPUTELINE#1#,COMPUTELINE#2#,LINEMULT#,LINEMULT#1# ,LINEMULT#2#,MATRIXMULT#,MATRIXMULT#1#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1# ,lineMult#2#,matrixMult#,matrixMult#1#} and constructors {#0,#neg,#pos,#s,::,c,c1,c10,c11,c12,c13,c14,c15 ,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c4 ,c40,c41,c5,c6,c7,c8,c9,nil} ** Step 7.a:1: PredecessorEstimationCP. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)),LINEMULT#(z3,z0,z2)) LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)) LINEMULT#1#(::(z0,z1),z2,z3) -> c_9(LINEMULT#2#(z2,z3,z0,z1)) LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_12(LINEMULT#(z2,z4,z1)) LINEMULT#2#(nil(),z0,z1,z2) -> c_14(LINEMULT#(z0,z2,nil())) - Weak DPs: MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) +(z0,z1) -> #add(z0,z1) lineMult(z0,z1,z2) -> lineMult#1(z1,z2,z0) lineMult#1(::(z0,z1),z2,z3) -> lineMult#2(z2,z3,z0,z1) lineMult#1(nil(),z0,z1) -> nil() lineMult#2(::(z0,z1),z2,z3,z4) -> ::(+(*(z3,z2),z0),lineMult(z2,z4,z1)) lineMult#2(nil(),z0,z1,z2) -> ::(*(z1,z0),lineMult(z0,z2,nil())) - Signature: {#ADD/2,#MULT/2,#NATMULT/2,#PRED/1,#SUCC/1,#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,*'/2,+/2,+'/2 ,COMPUTELINE/3,COMPUTELINE#1/3,COMPUTELINE#2/4,LINEMULT/3,LINEMULT#1/3,LINEMULT#2/4,MATRIXMULT/2 ,MATRIXMULT#1/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4 ,matrixMult/2,matrixMult#1/2,#ADD#/2,#MULT#/2,#NATMULT#/2,#PRED#/1,#SUCC#/1,#add#/2,#mult#/2,#natmult#/2 ,#pred#/1,#succ#/1,*#/2,*'#/2,+#/2,+'#/2,COMPUTELINE#/3,COMPUTELINE#1#/3,COMPUTELINE#2#/4,LINEMULT#/3 ,LINEMULT#1#/3,LINEMULT#2#/4,MATRIXMULT#/2,MATRIXMULT#1#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4 ,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,c/0 ,c1/1,c10/1,c11/0,c12/1,c13/1,c14/0,c15/2,c16/0,c17/0,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/0,c24/1,c25/1 ,c26/1,c27/1,c28/0,c29/2,c3/1,c30/0,c31/1,c32/1,c33/0,c34/2,c35/1,c36/1,c37/1,c38/1,c39/1,c4/2,c40/1,c41/0 ,c5/0,c6/0,c7/0,c8/0,c9/1,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/2,c_12/1 ,c_13/1,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2,c_22/1,c_23/2,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/2,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0,c_42/0 ,c_43/0,c_44/1,c_45/1,c_46/1,c_47/1,c_48/0,c_49/0,c_50/0,c_51/0,c_52/1,c_53/1,c_54/0,c_55/1,c_56/1,c_57/0 ,c_58/1,c_59/0,c_60/0,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0,c_67/1,c_68/1,c_69/1,c_70/1,c_71/0,c_72/1 ,c_73/0,c_74/1,c_75/1,c_76/0,c_77/2,c_78/2,c_79/1,c_80/2,c_81/0} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#MULT#,#NATMULT#,#PRED#,#SUCC#,#add#,#mult# ,#natmult#,#pred#,#succ#,*#,*'#,+#,+'#,COMPUTELINE#,COMPUTELINE#1#,COMPUTELINE#2#,LINEMULT#,LINEMULT#1# ,LINEMULT#2#,MATRIXMULT#,MATRIXMULT#1#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1# ,lineMult#2#,matrixMult#,matrixMult#1#} and constructors {#0,#neg,#pos,#s,::,c,c1,c10,c11,c12,c13,c14,c15 ,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c4 ,c40,c41,c5,c6,c7,c8,c9,nil} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 3: COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)),LINEMULT#(z3,z0,z2)) 4: LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)) 5: LINEMULT#1#(::(z0,z1),z2,z3) -> c_9(LINEMULT#2#(z2,z3,z0,z1)) Consider the set of all dependency pairs 1: COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) 2: COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) 3: COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)),LINEMULT#(z3,z0,z2)) 4: LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)) 5: LINEMULT#1#(::(z0,z1),z2,z3) -> c_9(LINEMULT#2#(z2,z3,z0,z1)) 6: LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_12(LINEMULT#(z2,z4,z1)) 7: LINEMULT#2#(nil(),z0,z1,z2) -> c_14(LINEMULT#(z0,z2,nil())) 8: MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) 9: MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) 10: MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1)) BEST_CASE TIME (?,?) SPACE(?,?)on application of the dependency pairs {3,4,5} These cover all (indirect) predecessors of dependency pairs {3,4,5,6,7} their number of applications is equally bounded. The dependency pairs are shifted into the weak component. *** Step 7.a:1.a:1: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)),LINEMULT#(z3,z0,z2)) LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)) LINEMULT#1#(::(z0,z1),z2,z3) -> c_9(LINEMULT#2#(z2,z3,z0,z1)) LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_12(LINEMULT#(z2,z4,z1)) LINEMULT#2#(nil(),z0,z1,z2) -> c_14(LINEMULT#(z0,z2,nil())) - Weak DPs: MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) +(z0,z1) -> #add(z0,z1) lineMult(z0,z1,z2) -> lineMult#1(z1,z2,z0) lineMult#1(::(z0,z1),z2,z3) -> lineMult#2(z2,z3,z0,z1) lineMult#1(nil(),z0,z1) -> nil() lineMult#2(::(z0,z1),z2,z3,z4) -> ::(+(*(z3,z2),z0),lineMult(z2,z4,z1)) lineMult#2(nil(),z0,z1,z2) -> ::(*(z1,z0),lineMult(z0,z2,nil())) - Signature: {#ADD/2,#MULT/2,#NATMULT/2,#PRED/1,#SUCC/1,#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,*'/2,+/2,+'/2 ,COMPUTELINE/3,COMPUTELINE#1/3,COMPUTELINE#2/4,LINEMULT/3,LINEMULT#1/3,LINEMULT#2/4,MATRIXMULT/2 ,MATRIXMULT#1/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4 ,matrixMult/2,matrixMult#1/2,#ADD#/2,#MULT#/2,#NATMULT#/2,#PRED#/1,#SUCC#/1,#add#/2,#mult#/2,#natmult#/2 ,#pred#/1,#succ#/1,*#/2,*'#/2,+#/2,+'#/2,COMPUTELINE#/3,COMPUTELINE#1#/3,COMPUTELINE#2#/4,LINEMULT#/3 ,LINEMULT#1#/3,LINEMULT#2#/4,MATRIXMULT#/2,MATRIXMULT#1#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4 ,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,c/0 ,c1/1,c10/1,c11/0,c12/1,c13/1,c14/0,c15/2,c16/0,c17/0,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/0,c24/1,c25/1 ,c26/1,c27/1,c28/0,c29/2,c3/1,c30/0,c31/1,c32/1,c33/0,c34/2,c35/1,c36/1,c37/1,c38/1,c39/1,c4/2,c40/1,c41/0 ,c5/0,c6/0,c7/0,c8/0,c9/1,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/2,c_12/1 ,c_13/1,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2,c_22/1,c_23/2,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/2,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0,c_42/0 ,c_43/0,c_44/1,c_45/1,c_46/1,c_47/1,c_48/0,c_49/0,c_50/0,c_51/0,c_52/1,c_53/1,c_54/0,c_55/1,c_56/1,c_57/0 ,c_58/1,c_59/0,c_60/0,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0,c_67/1,c_68/1,c_69/1,c_70/1,c_71/0,c_72/1 ,c_73/0,c_74/1,c_75/1,c_76/0,c_77/2,c_78/2,c_79/1,c_80/2,c_81/0} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#MULT#,#NATMULT#,#PRED#,#SUCC#,#add#,#mult# ,#natmult#,#pred#,#succ#,*#,*'#,+#,+'#,COMPUTELINE#,COMPUTELINE#1#,COMPUTELINE#2#,LINEMULT#,LINEMULT#1# ,LINEMULT#2#,MATRIXMULT#,MATRIXMULT#1#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1# ,lineMult#2#,matrixMult#,matrixMult#1#} and constructors {#0,#neg,#pos,#s,::,c,c1,c10,c11,c12,c13,c14,c15 ,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c4 ,c40,c41,c5,c6,c7,c8,c9,nil} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_3) = {1}, uargs(c_4) = {1}, uargs(c_6) = {1,2}, uargs(c_8) = {1}, uargs(c_9) = {1}, uargs(c_12) = {1}, uargs(c_14) = {1}, uargs(c_15) = {1}, uargs(c_16) = {1}, uargs(c_17) = {1} Following symbols are considered usable: {#ADD#,#MULT#,#NATMULT#,#PRED#,#SUCC#,#add#,#mult#,#natmult#,#pred#,#succ#,*#,*'#,+#,+'#,COMPUTELINE# ,COMPUTELINE#1#,COMPUTELINE#2#,LINEMULT#,LINEMULT#1#,LINEMULT#2#,MATRIXMULT#,MATRIXMULT#1#,computeLine# ,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#} TcT has computed the following interpretation: p(#0) = [0] p(#ADD) = [0] p(#MULT) = [1] x2 + [0] p(#NATMULT) = [0] p(#PRED) = [1] x1 + [0] p(#SUCC) = [1] x1 + [0] p(#add) = [0] p(#mult) = [1] x1 + [1] x2 + [0] p(#natmult) = [2] x1 + [2] x2 + [5] p(#neg) = [5] p(#pos) = [1] x1 + [2] p(#pred) = [1] x1 + [4] p(#s) = [1] p(#succ) = [1] x1 + [4] p(*) = [3] x1 + [1] p(*') = [0] p(+) = [4] p(+') = [0] p(::) = [1] x1 + [1] x2 + [4] p(COMPUTELINE) = [0] p(COMPUTELINE#1) = [0] p(COMPUTELINE#2) = [0] p(LINEMULT) = [0] p(LINEMULT#1) = [0] p(LINEMULT#2) = [0] p(MATRIXMULT) = [0] p(MATRIXMULT#1) = [0] p(c) = [0] p(c1) = [1] x1 + [0] p(c10) = [1] x1 + [0] p(c11) = [0] p(c12) = [1] x1 + [0] p(c13) = [0] p(c14) = [0] p(c15) = [1] x1 + [1] x2 + [0] p(c16) = [0] p(c17) = [0] p(c18) = [0] p(c19) = [0] p(c2) = [1] x1 + [1] x2 + [0] p(c20) = [0] p(c21) = [0] p(c22) = [0] p(c23) = [0] p(c24) = [1] x1 + [0] p(c25) = [1] x1 + [0] p(c26) = [1] x1 + [0] p(c27) = [0] p(c28) = [0] p(c29) = [1] x2 + [0] p(c3) = [1] x1 + [0] p(c30) = [0] p(c31) = [1] x1 + [0] p(c32) = [1] x1 + [0] p(c33) = [0] p(c34) = [1] x1 + [1] x2 + [0] p(c35) = [1] x1 + [0] p(c36) = [1] x1 + [0] p(c37) = [0] p(c38) = [1] x1 + [0] p(c39) = [1] x1 + [0] p(c4) = [1] x1 + [1] x2 + [0] p(c40) = [0] p(c41) = [0] p(c5) = [0] p(c6) = [0] p(c7) = [0] p(c8) = [0] p(c9) = [1] x1 + [0] p(computeLine) = [0] p(computeLine#1) = [0] p(computeLine#2) = [2] p(lineMult) = [1] p(lineMult#1) = [0] p(lineMult#2) = [0] p(matrixMult) = [0] p(matrixMult#1) = [0] p(nil) = [0] p(#ADD#) = [0] p(#MULT#) = [0] p(#NATMULT#) = [0] p(#PRED#) = [0] p(#SUCC#) = [0] p(#add#) = [0] p(#mult#) = [0] p(#natmult#) = [0] p(#pred#) = [0] p(#succ#) = [0] p(*#) = [0] p(*'#) = [0] p(+#) = [0] p(+'#) = [0] p(COMPUTELINE#) = [2] x2 + [1] p(COMPUTELINE#1#) = [2] x3 + [0] p(COMPUTELINE#2#) = [2] x1 + [0] p(LINEMULT#) = [1] x2 + [2] p(LINEMULT#1#) = [1] x1 + [1] p(LINEMULT#2#) = [1] x4 + [2] p(MATRIXMULT#) = [2] x1 + [4] x2 + [3] p(MATRIXMULT#1#) = [2] x1 + [4] x2 + [0] p(computeLine#) = [0] p(computeLine#1#) = [0] p(computeLine#2#) = [0] p(lineMult#) = [0] p(lineMult#1#) = [0] p(lineMult#2#) = [0] p(matrixMult#) = [0] p(matrixMult#1#) = [0] p(c_1) = [0] p(c_2) = [0] p(c_3) = [1] x1 + [1] p(c_4) = [1] x1 + [0] p(c_5) = [0] p(c_6) = [1] x1 + [2] x2 + [0] p(c_7) = [0] p(c_8) = [1] x1 + [0] p(c_9) = [1] x1 + [2] p(c_10) = [2] p(c_11) = [4] x1 + [1] x2 + [0] p(c_12) = [1] x1 + [0] p(c_13) = [0] p(c_14) = [1] x1 + [0] p(c_15) = [1] x1 + [0] p(c_16) = [2] x1 + [0] p(c_17) = [1] x1 + [5] p(c_18) = [0] p(c_19) = [0] p(c_20) = [4] x1 + [2] p(c_21) = [2] x1 + [1] x2 + [0] p(c_22) = [0] p(c_23) = [2] x2 + [0] p(c_24) = [1] p(c_25) = [4] p(c_26) = [2] p(c_27) = [0] p(c_28) = [1] x1 + [1] p(c_29) = [1] x1 + [0] p(c_30) = [0] p(c_31) = [1] p(c_32) = [1] p(c_33) = [1] p(c_34) = [1] x1 + [1] x2 + [1] p(c_35) = [0] p(c_36) = [0] p(c_37) = [0] p(c_38) = [1] p(c_39) = [1] p(c_40) = [2] p(c_41) = [4] p(c_42) = [1] p(c_43) = [0] p(c_44) = [4] x1 + [0] p(c_45) = [1] p(c_46) = [1] x1 + [0] p(c_47) = [2] x1 + [1] p(c_48) = [1] p(c_49) = [1] p(c_50) = [4] p(c_51) = [0] p(c_52) = [1] p(c_53) = [1] x1 + [0] p(c_54) = [0] p(c_55) = [1] p(c_56) = [2] p(c_57) = [2] p(c_58) = [0] p(c_59) = [2] p(c_60) = [4] p(c_61) = [1] p(c_62) = [4] p(c_63) = [0] p(c_64) = [1] p(c_65) = [1] p(c_66) = [1] p(c_67) = [1] x1 + [0] p(c_68) = [4] p(c_69) = [1] x1 + [1] p(c_70) = [1] x1 + [0] p(c_71) = [1] p(c_72) = [4] x1 + [0] p(c_73) = [1] p(c_74) = [0] p(c_75) = [1] p(c_76) = [0] p(c_77) = [1] x2 + [1] p(c_78) = [0] p(c_79) = [1] x1 + [1] p(c_80) = [4] p(c_81) = [1] Following rules are strictly oriented: COMPUTELINE#2#(::(z0,z1),z2,z3,z4) = [2] z0 + [2] z1 + [8] > [2] z0 + [2] z1 + [5] = c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)),LINEMULT#(z3,z0,z2)) LINEMULT#(z0,z1,z2) = [1] z1 + [2] > [1] z1 + [1] = c_8(LINEMULT#1#(z1,z2,z0)) LINEMULT#1#(::(z0,z1),z2,z3) = [1] z0 + [1] z1 + [5] > [1] z1 + [4] = c_9(LINEMULT#2#(z2,z3,z0,z1)) Following rules are (at-least) weakly oriented: COMPUTELINE#(z0,z1,z2) = [2] z1 + [1] >= [2] z1 + [1] = c_3(COMPUTELINE#1#(z0,z2,z1)) COMPUTELINE#1#(::(z0,z1),z2,z3) = [2] z3 + [0] >= [2] z3 + [0] = c_4(COMPUTELINE#2#(z3,z2,z0,z1)) LINEMULT#2#(::(z0,z1),z2,z3,z4) = [1] z4 + [2] >= [1] z4 + [2] = c_12(LINEMULT#(z2,z4,z1)) LINEMULT#2#(nil(),z0,z1,z2) = [1] z2 + [2] >= [1] z2 + [2] = c_14(LINEMULT#(z0,z2,nil())) MATRIXMULT#(z0,z1) = [2] z0 + [4] z1 + [3] >= [2] z0 + [4] z1 + [0] = c_15(MATRIXMULT#1#(z0,z1)) MATRIXMULT#1#(::(z0,z1),z2) = [2] z0 + [2] z1 + [4] z2 + [8] >= [4] z2 + [2] = c_16(COMPUTELINE#(z0,z2,nil())) MATRIXMULT#1#(::(z0,z1),z2) = [2] z0 + [2] z1 + [4] z2 + [8] >= [2] z1 + [4] z2 + [8] = c_17(MATRIXMULT#(z1,z2)) *** Step 7.a:1.a:2: Assumption. WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_12(LINEMULT#(z2,z4,z1)) LINEMULT#2#(nil(),z0,z1,z2) -> c_14(LINEMULT#(z0,z2,nil())) - Weak DPs: COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)),LINEMULT#(z3,z0,z2)) LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)) LINEMULT#1#(::(z0,z1),z2,z3) -> c_9(LINEMULT#2#(z2,z3,z0,z1)) MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) +(z0,z1) -> #add(z0,z1) lineMult(z0,z1,z2) -> lineMult#1(z1,z2,z0) lineMult#1(::(z0,z1),z2,z3) -> lineMult#2(z2,z3,z0,z1) lineMult#1(nil(),z0,z1) -> nil() lineMult#2(::(z0,z1),z2,z3,z4) -> ::(+(*(z3,z2),z0),lineMult(z2,z4,z1)) lineMult#2(nil(),z0,z1,z2) -> ::(*(z1,z0),lineMult(z0,z2,nil())) - Signature: {#ADD/2,#MULT/2,#NATMULT/2,#PRED/1,#SUCC/1,#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,*'/2,+/2,+'/2 ,COMPUTELINE/3,COMPUTELINE#1/3,COMPUTELINE#2/4,LINEMULT/3,LINEMULT#1/3,LINEMULT#2/4,MATRIXMULT/2 ,MATRIXMULT#1/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4 ,matrixMult/2,matrixMult#1/2,#ADD#/2,#MULT#/2,#NATMULT#/2,#PRED#/1,#SUCC#/1,#add#/2,#mult#/2,#natmult#/2 ,#pred#/1,#succ#/1,*#/2,*'#/2,+#/2,+'#/2,COMPUTELINE#/3,COMPUTELINE#1#/3,COMPUTELINE#2#/4,LINEMULT#/3 ,LINEMULT#1#/3,LINEMULT#2#/4,MATRIXMULT#/2,MATRIXMULT#1#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4 ,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,c/0 ,c1/1,c10/1,c11/0,c12/1,c13/1,c14/0,c15/2,c16/0,c17/0,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/0,c24/1,c25/1 ,c26/1,c27/1,c28/0,c29/2,c3/1,c30/0,c31/1,c32/1,c33/0,c34/2,c35/1,c36/1,c37/1,c38/1,c39/1,c4/2,c40/1,c41/0 ,c5/0,c6/0,c7/0,c8/0,c9/1,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/2,c_12/1 ,c_13/1,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2,c_22/1,c_23/2,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/2,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0,c_42/0 ,c_43/0,c_44/1,c_45/1,c_46/1,c_47/1,c_48/0,c_49/0,c_50/0,c_51/0,c_52/1,c_53/1,c_54/0,c_55/1,c_56/1,c_57/0 ,c_58/1,c_59/0,c_60/0,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0,c_67/1,c_68/1,c_69/1,c_70/1,c_71/0,c_72/1 ,c_73/0,c_74/1,c_75/1,c_76/0,c_77/2,c_78/2,c_79/1,c_80/2,c_81/0} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#MULT#,#NATMULT#,#PRED#,#SUCC#,#add#,#mult# ,#natmult#,#pred#,#succ#,*#,*'#,+#,+'#,COMPUTELINE#,COMPUTELINE#1#,COMPUTELINE#2#,LINEMULT#,LINEMULT#1# ,LINEMULT#2#,MATRIXMULT#,MATRIXMULT#1#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1# ,lineMult#2#,matrixMult#,matrixMult#1#} and constructors {#0,#neg,#pos,#s,::,c,c1,c10,c11,c12,c13,c14,c15 ,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c4 ,c40,c41,c5,c6,c7,c8,c9,nil} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown, timeBCUB = Unknown, timeBCLB = Unknown}} + Details: () *** Step 7.a:1.b:1: RemoveWeakSuffixes. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) - Weak DPs: COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)),LINEMULT#(z3,z0,z2)) LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)) LINEMULT#1#(::(z0,z1),z2,z3) -> c_9(LINEMULT#2#(z2,z3,z0,z1)) LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_12(LINEMULT#(z2,z4,z1)) LINEMULT#2#(nil(),z0,z1,z2) -> c_14(LINEMULT#(z0,z2,nil())) MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) +(z0,z1) -> #add(z0,z1) lineMult(z0,z1,z2) -> lineMult#1(z1,z2,z0) lineMult#1(::(z0,z1),z2,z3) -> lineMult#2(z2,z3,z0,z1) lineMult#1(nil(),z0,z1) -> nil() lineMult#2(::(z0,z1),z2,z3,z4) -> ::(+(*(z3,z2),z0),lineMult(z2,z4,z1)) lineMult#2(nil(),z0,z1,z2) -> ::(*(z1,z0),lineMult(z0,z2,nil())) - Signature: {#ADD/2,#MULT/2,#NATMULT/2,#PRED/1,#SUCC/1,#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,*'/2,+/2,+'/2 ,COMPUTELINE/3,COMPUTELINE#1/3,COMPUTELINE#2/4,LINEMULT/3,LINEMULT#1/3,LINEMULT#2/4,MATRIXMULT/2 ,MATRIXMULT#1/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4 ,matrixMult/2,matrixMult#1/2,#ADD#/2,#MULT#/2,#NATMULT#/2,#PRED#/1,#SUCC#/1,#add#/2,#mult#/2,#natmult#/2 ,#pred#/1,#succ#/1,*#/2,*'#/2,+#/2,+'#/2,COMPUTELINE#/3,COMPUTELINE#1#/3,COMPUTELINE#2#/4,LINEMULT#/3 ,LINEMULT#1#/3,LINEMULT#2#/4,MATRIXMULT#/2,MATRIXMULT#1#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4 ,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,c/0 ,c1/1,c10/1,c11/0,c12/1,c13/1,c14/0,c15/2,c16/0,c17/0,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/0,c24/1,c25/1 ,c26/1,c27/1,c28/0,c29/2,c3/1,c30/0,c31/1,c32/1,c33/0,c34/2,c35/1,c36/1,c37/1,c38/1,c39/1,c4/2,c40/1,c41/0 ,c5/0,c6/0,c7/0,c8/0,c9/1,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/2,c_12/1 ,c_13/1,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2,c_22/1,c_23/2,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/2,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0,c_42/0 ,c_43/0,c_44/1,c_45/1,c_46/1,c_47/1,c_48/0,c_49/0,c_50/0,c_51/0,c_52/1,c_53/1,c_54/0,c_55/1,c_56/1,c_57/0 ,c_58/1,c_59/0,c_60/0,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0,c_67/1,c_68/1,c_69/1,c_70/1,c_71/0,c_72/1 ,c_73/0,c_74/1,c_75/1,c_76/0,c_77/2,c_78/2,c_79/1,c_80/2,c_81/0} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#MULT#,#NATMULT#,#PRED#,#SUCC#,#add#,#mult# ,#natmult#,#pred#,#succ#,*#,*'#,+#,+'#,COMPUTELINE#,COMPUTELINE#1#,COMPUTELINE#2#,LINEMULT#,LINEMULT#1# ,LINEMULT#2#,MATRIXMULT#,MATRIXMULT#1#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1# ,lineMult#2#,matrixMult#,matrixMult#1#} and constructors {#0,#neg,#pos,#s,::,c,c1,c10,c11,c12,c13,c14,c15 ,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c4 ,c40,c41,c5,c6,c7,c8,c9,nil} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) -->_1 COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)):2 2:S:COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) -->_1 COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)) ,LINEMULT#(z3,z0,z2)):3 3:W:COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)),LINEMULT#(z3,z0,z2)) -->_2 LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)):4 -->_1 COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)):1 4:W:LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)) -->_1 LINEMULT#1#(::(z0,z1),z2,z3) -> c_9(LINEMULT#2#(z2,z3,z0,z1)):5 5:W:LINEMULT#1#(::(z0,z1),z2,z3) -> c_9(LINEMULT#2#(z2,z3,z0,z1)) -->_1 LINEMULT#2#(nil(),z0,z1,z2) -> c_14(LINEMULT#(z0,z2,nil())):7 -->_1 LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_12(LINEMULT#(z2,z4,z1)):6 6:W:LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_12(LINEMULT#(z2,z4,z1)) -->_1 LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)):4 7:W:LINEMULT#2#(nil(),z0,z1,z2) -> c_14(LINEMULT#(z0,z2,nil())) -->_1 LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)):4 8:W:MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) -->_1 MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)):10 -->_1 MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())):9 9:W:MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) -->_1 COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)):1 10:W:MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) -->_1 MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)):8 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 4: LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)) 7: LINEMULT#2#(nil(),z0,z1,z2) -> c_14(LINEMULT#(z0,z2,nil())) 5: LINEMULT#1#(::(z0,z1),z2,z3) -> c_9(LINEMULT#2#(z2,z3,z0,z1)) 6: LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_12(LINEMULT#(z2,z4,z1)) *** Step 7.a:1.b:2: SimplifyRHS. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) - Weak DPs: COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)),LINEMULT#(z3,z0,z2)) MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) +(z0,z1) -> #add(z0,z1) lineMult(z0,z1,z2) -> lineMult#1(z1,z2,z0) lineMult#1(::(z0,z1),z2,z3) -> lineMult#2(z2,z3,z0,z1) lineMult#1(nil(),z0,z1) -> nil() lineMult#2(::(z0,z1),z2,z3,z4) -> ::(+(*(z3,z2),z0),lineMult(z2,z4,z1)) lineMult#2(nil(),z0,z1,z2) -> ::(*(z1,z0),lineMult(z0,z2,nil())) - Signature: {#ADD/2,#MULT/2,#NATMULT/2,#PRED/1,#SUCC/1,#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,*'/2,+/2,+'/2 ,COMPUTELINE/3,COMPUTELINE#1/3,COMPUTELINE#2/4,LINEMULT/3,LINEMULT#1/3,LINEMULT#2/4,MATRIXMULT/2 ,MATRIXMULT#1/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4 ,matrixMult/2,matrixMult#1/2,#ADD#/2,#MULT#/2,#NATMULT#/2,#PRED#/1,#SUCC#/1,#add#/2,#mult#/2,#natmult#/2 ,#pred#/1,#succ#/1,*#/2,*'#/2,+#/2,+'#/2,COMPUTELINE#/3,COMPUTELINE#1#/3,COMPUTELINE#2#/4,LINEMULT#/3 ,LINEMULT#1#/3,LINEMULT#2#/4,MATRIXMULT#/2,MATRIXMULT#1#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4 ,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,c/0 ,c1/1,c10/1,c11/0,c12/1,c13/1,c14/0,c15/2,c16/0,c17/0,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/0,c24/1,c25/1 ,c26/1,c27/1,c28/0,c29/2,c3/1,c30/0,c31/1,c32/1,c33/0,c34/2,c35/1,c36/1,c37/1,c38/1,c39/1,c4/2,c40/1,c41/0 ,c5/0,c6/0,c7/0,c8/0,c9/1,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/2,c_12/1 ,c_13/1,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2,c_22/1,c_23/2,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/2,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0,c_42/0 ,c_43/0,c_44/1,c_45/1,c_46/1,c_47/1,c_48/0,c_49/0,c_50/0,c_51/0,c_52/1,c_53/1,c_54/0,c_55/1,c_56/1,c_57/0 ,c_58/1,c_59/0,c_60/0,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0,c_67/1,c_68/1,c_69/1,c_70/1,c_71/0,c_72/1 ,c_73/0,c_74/1,c_75/1,c_76/0,c_77/2,c_78/2,c_79/1,c_80/2,c_81/0} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#MULT#,#NATMULT#,#PRED#,#SUCC#,#add#,#mult# ,#natmult#,#pred#,#succ#,*#,*'#,+#,+'#,COMPUTELINE#,COMPUTELINE#1#,COMPUTELINE#2#,LINEMULT#,LINEMULT#1# ,LINEMULT#2#,MATRIXMULT#,MATRIXMULT#1#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1# ,lineMult#2#,matrixMult#,matrixMult#1#} and constructors {#0,#neg,#pos,#s,::,c,c1,c10,c11,c12,c13,c14,c15 ,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c4 ,c40,c41,c5,c6,c7,c8,c9,nil} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) -->_1 COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)):2 2:S:COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) -->_1 COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)) ,LINEMULT#(z3,z0,z2)):3 3:W:COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)),LINEMULT#(z3,z0,z2)) -->_1 COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)):1 8:W:MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) -->_1 MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)):10 -->_1 MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())):9 9:W:MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) -->_1 COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)):1 10:W:MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) -->_1 MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)):8 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2))) *** Step 7.a:1.b:3: PredecessorEstimationCP. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) - Weak DPs: COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2))) MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) +(z0,z1) -> #add(z0,z1) lineMult(z0,z1,z2) -> lineMult#1(z1,z2,z0) lineMult#1(::(z0,z1),z2,z3) -> lineMult#2(z2,z3,z0,z1) lineMult#1(nil(),z0,z1) -> nil() lineMult#2(::(z0,z1),z2,z3,z4) -> ::(+(*(z3,z2),z0),lineMult(z2,z4,z1)) lineMult#2(nil(),z0,z1,z2) -> ::(*(z1,z0),lineMult(z0,z2,nil())) - Signature: {#ADD/2,#MULT/2,#NATMULT/2,#PRED/1,#SUCC/1,#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,*'/2,+/2,+'/2 ,COMPUTELINE/3,COMPUTELINE#1/3,COMPUTELINE#2/4,LINEMULT/3,LINEMULT#1/3,LINEMULT#2/4,MATRIXMULT/2 ,MATRIXMULT#1/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4 ,matrixMult/2,matrixMult#1/2,#ADD#/2,#MULT#/2,#NATMULT#/2,#PRED#/1,#SUCC#/1,#add#/2,#mult#/2,#natmult#/2 ,#pred#/1,#succ#/1,*#/2,*'#/2,+#/2,+'#/2,COMPUTELINE#/3,COMPUTELINE#1#/3,COMPUTELINE#2#/4,LINEMULT#/3 ,LINEMULT#1#/3,LINEMULT#2#/4,MATRIXMULT#/2,MATRIXMULT#1#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4 ,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,c/0 ,c1/1,c10/1,c11/0,c12/1,c13/1,c14/0,c15/2,c16/0,c17/0,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/0,c24/1,c25/1 ,c26/1,c27/1,c28/0,c29/2,c3/1,c30/0,c31/1,c32/1,c33/0,c34/2,c35/1,c36/1,c37/1,c38/1,c39/1,c4/2,c40/1,c41/0 ,c5/0,c6/0,c7/0,c8/0,c9/1,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/1,c_7/0,c_8/1,c_9/1,c_10/0,c_11/2,c_12/1 ,c_13/1,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2,c_22/1,c_23/2,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/2,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0,c_42/0 ,c_43/0,c_44/1,c_45/1,c_46/1,c_47/1,c_48/0,c_49/0,c_50/0,c_51/0,c_52/1,c_53/1,c_54/0,c_55/1,c_56/1,c_57/0 ,c_58/1,c_59/0,c_60/0,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0,c_67/1,c_68/1,c_69/1,c_70/1,c_71/0,c_72/1 ,c_73/0,c_74/1,c_75/1,c_76/0,c_77/2,c_78/2,c_79/1,c_80/2,c_81/0} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#MULT#,#NATMULT#,#PRED#,#SUCC#,#add#,#mult# ,#natmult#,#pred#,#succ#,*#,*'#,+#,+'#,COMPUTELINE#,COMPUTELINE#1#,COMPUTELINE#2#,LINEMULT#,LINEMULT#1# ,LINEMULT#2#,MATRIXMULT#,MATRIXMULT#1#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1# ,lineMult#2#,matrixMult#,matrixMult#1#} and constructors {#0,#neg,#pos,#s,::,c,c1,c10,c11,c12,c13,c14,c15 ,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c4 ,c40,c41,c5,c6,c7,c8,c9,nil} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 1: COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) Consider the set of all dependency pairs 1: COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) 2: COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) 3: COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2))) 4: MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) 5: MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) 6: MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1)) BEST_CASE TIME (?,?) SPACE(?,?)on application of the dependency pairs {1} These cover all (indirect) predecessors of dependency pairs {1,2,3} their number of applications is equally bounded. The dependency pairs are shifted into the weak component. **** Step 7.a:1.b:3.a:1: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) - Weak DPs: COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2))) MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) +(z0,z1) -> #add(z0,z1) lineMult(z0,z1,z2) -> lineMult#1(z1,z2,z0) lineMult#1(::(z0,z1),z2,z3) -> lineMult#2(z2,z3,z0,z1) lineMult#1(nil(),z0,z1) -> nil() lineMult#2(::(z0,z1),z2,z3,z4) -> ::(+(*(z3,z2),z0),lineMult(z2,z4,z1)) lineMult#2(nil(),z0,z1,z2) -> ::(*(z1,z0),lineMult(z0,z2,nil())) - Signature: {#ADD/2,#MULT/2,#NATMULT/2,#PRED/1,#SUCC/1,#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,*'/2,+/2,+'/2 ,COMPUTELINE/3,COMPUTELINE#1/3,COMPUTELINE#2/4,LINEMULT/3,LINEMULT#1/3,LINEMULT#2/4,MATRIXMULT/2 ,MATRIXMULT#1/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4 ,matrixMult/2,matrixMult#1/2,#ADD#/2,#MULT#/2,#NATMULT#/2,#PRED#/1,#SUCC#/1,#add#/2,#mult#/2,#natmult#/2 ,#pred#/1,#succ#/1,*#/2,*'#/2,+#/2,+'#/2,COMPUTELINE#/3,COMPUTELINE#1#/3,COMPUTELINE#2#/4,LINEMULT#/3 ,LINEMULT#1#/3,LINEMULT#2#/4,MATRIXMULT#/2,MATRIXMULT#1#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4 ,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,c/0 ,c1/1,c10/1,c11/0,c12/1,c13/1,c14/0,c15/2,c16/0,c17/0,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/0,c24/1,c25/1 ,c26/1,c27/1,c28/0,c29/2,c3/1,c30/0,c31/1,c32/1,c33/0,c34/2,c35/1,c36/1,c37/1,c38/1,c39/1,c4/2,c40/1,c41/0 ,c5/0,c6/0,c7/0,c8/0,c9/1,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/1,c_7/0,c_8/1,c_9/1,c_10/0,c_11/2,c_12/1 ,c_13/1,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2,c_22/1,c_23/2,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/2,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0,c_42/0 ,c_43/0,c_44/1,c_45/1,c_46/1,c_47/1,c_48/0,c_49/0,c_50/0,c_51/0,c_52/1,c_53/1,c_54/0,c_55/1,c_56/1,c_57/0 ,c_58/1,c_59/0,c_60/0,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0,c_67/1,c_68/1,c_69/1,c_70/1,c_71/0,c_72/1 ,c_73/0,c_74/1,c_75/1,c_76/0,c_77/2,c_78/2,c_79/1,c_80/2,c_81/0} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#MULT#,#NATMULT#,#PRED#,#SUCC#,#add#,#mult# ,#natmult#,#pred#,#succ#,*#,*'#,+#,+'#,COMPUTELINE#,COMPUTELINE#1#,COMPUTELINE#2#,LINEMULT#,LINEMULT#1# ,LINEMULT#2#,MATRIXMULT#,MATRIXMULT#1#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1# ,lineMult#2#,matrixMult#,matrixMult#1#} and constructors {#0,#neg,#pos,#s,::,c,c1,c10,c11,c12,c13,c14,c15 ,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c4 ,c40,c41,c5,c6,c7,c8,c9,nil} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_3) = {1}, uargs(c_4) = {1}, uargs(c_6) = {1}, uargs(c_15) = {1}, uargs(c_16) = {1}, uargs(c_17) = {1} Following symbols are considered usable: {#ADD#,#MULT#,#NATMULT#,#PRED#,#SUCC#,#add#,#mult#,#natmult#,#pred#,#succ#,*#,*'#,+#,+'#,COMPUTELINE# ,COMPUTELINE#1#,COMPUTELINE#2#,LINEMULT#,LINEMULT#1#,LINEMULT#2#,MATRIXMULT#,MATRIXMULT#1#,computeLine# ,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#} TcT has computed the following interpretation: p(#0) = [0] p(#ADD) = [0] p(#MULT) = [0] p(#NATMULT) = [0] p(#PRED) = [0] p(#SUCC) = [0] p(#add) = [3] x1 + [0] p(#mult) = [0] p(#natmult) = [1] p(#neg) = [0] p(#pos) = [1] x1 + [1] p(#pred) = [0] p(#s) = [4] p(#succ) = [0] p(*) = [0] p(*') = [0] p(+) = [1] p(+') = [0] p(::) = [1] x2 + [1] p(COMPUTELINE) = [0] p(COMPUTELINE#1) = [0] p(COMPUTELINE#2) = [0] p(LINEMULT) = [0] p(LINEMULT#1) = [1] x1 + [0] p(LINEMULT#2) = [0] p(MATRIXMULT) = [0] p(MATRIXMULT#1) = [0] p(c) = [0] p(c1) = [1] x1 + [0] p(c10) = [1] x1 + [0] p(c11) = [0] p(c12) = [1] x1 + [0] p(c13) = [1] x1 + [0] p(c14) = [0] p(c15) = [1] x1 + [1] x2 + [0] p(c16) = [0] p(c17) = [0] p(c18) = [0] p(c19) = [0] p(c2) = [1] x1 + [1] x2 + [0] p(c20) = [0] p(c21) = [0] p(c22) = [0] p(c23) = [0] p(c24) = [1] x1 + [0] p(c25) = [1] x1 + [0] p(c26) = [1] x1 + [0] p(c27) = [1] x1 + [0] p(c28) = [0] p(c29) = [1] x1 + [1] x2 + [0] p(c3) = [1] x1 + [0] p(c30) = [0] p(c31) = [1] x1 + [0] p(c32) = [1] x1 + [0] p(c33) = [0] p(c34) = [1] x1 + [1] x2 + [0] p(c35) = [1] x1 + [0] p(c36) = [1] x1 + [0] p(c37) = [1] x1 + [0] p(c38) = [1] x1 + [0] p(c39) = [1] x1 + [0] p(c4) = [1] x1 + [1] x2 + [0] p(c40) = [1] x1 + [0] p(c41) = [0] p(c5) = [0] p(c6) = [0] p(c7) = [0] p(c8) = [0] p(c9) = [1] x1 + [0] p(computeLine) = [0] p(computeLine#1) = [0] p(computeLine#2) = [0] p(lineMult) = [4] x1 + [0] p(lineMult#1) = [2] x3 + [0] p(lineMult#2) = [4] x1 + [1] x2 + [4] p(matrixMult) = [0] p(matrixMult#1) = [0] p(nil) = [0] p(#ADD#) = [0] p(#MULT#) = [0] p(#NATMULT#) = [0] p(#PRED#) = [0] p(#SUCC#) = [0] p(#add#) = [0] p(#mult#) = [0] p(#natmult#) = [0] p(#pred#) = [0] p(#succ#) = [0] p(*#) = [0] p(*'#) = [0] p(+#) = [0] p(+'#) = [0] p(COMPUTELINE#) = [6] x2 + [4] p(COMPUTELINE#1#) = [6] x3 + [0] p(COMPUTELINE#2#) = [6] x1 + [0] p(LINEMULT#) = [0] p(LINEMULT#1#) = [0] p(LINEMULT#2#) = [0] p(MATRIXMULT#) = [6] x2 + [5] p(MATRIXMULT#1#) = [6] x2 + [5] p(computeLine#) = [0] p(computeLine#1#) = [2] x2 + [0] p(computeLine#2#) = [4] x2 + [0] p(lineMult#) = [0] p(lineMult#1#) = [0] p(lineMult#2#) = [0] p(matrixMult#) = [0] p(matrixMult#1#) = [0] p(c_1) = [1] x1 + [0] p(c_2) = [1] p(c_3) = [1] x1 + [2] p(c_4) = [1] x1 + [0] p(c_5) = [1] p(c_6) = [1] x1 + [2] p(c_7) = [2] p(c_8) = [4] x1 + [0] p(c_9) = [1] x1 + [1] p(c_10) = [0] p(c_11) = [1] x1 + [2] x2 + [2] p(c_12) = [1] p(c_13) = [4] x1 + [1] p(c_14) = [2] x1 + [1] p(c_15) = [1] x1 + [0] p(c_16) = [1] x1 + [1] p(c_17) = [1] x1 + [0] p(c_18) = [4] p(c_19) = [1] p(c_20) = [4] x1 + [1] p(c_21) = [1] x1 + [1] x2 + [1] p(c_22) = [1] p(c_23) = [1] x1 + [2] p(c_24) = [4] p(c_25) = [0] p(c_26) = [2] p(c_27) = [1] p(c_28) = [0] p(c_29) = [2] p(c_30) = [0] p(c_31) = [1] x1 + [1] p(c_32) = [1] p(c_33) = [1] p(c_34) = [1] x2 + [1] p(c_35) = [1] p(c_36) = [1] p(c_37) = [0] p(c_38) = [1] p(c_39) = [0] p(c_40) = [1] p(c_41) = [2] p(c_42) = [1] p(c_43) = [0] p(c_44) = [1] x1 + [0] p(c_45) = [1] x1 + [1] p(c_46) = [1] p(c_47) = [1] p(c_48) = [0] p(c_49) = [0] p(c_50) = [0] p(c_51) = [1] p(c_52) = [1] p(c_53) = [1] p(c_54) = [0] p(c_55) = [4] x1 + [0] p(c_56) = [2] x1 + [0] p(c_57) = [0] p(c_58) = [2] x1 + [1] p(c_59) = [1] p(c_60) = [1] p(c_61) = [0] p(c_62) = [0] p(c_63) = [0] p(c_64) = [1] p(c_65) = [0] p(c_66) = [0] p(c_67) = [4] x1 + [1] p(c_68) = [1] x1 + [1] p(c_69) = [1] p(c_70) = [0] p(c_71) = [1] p(c_72) = [2] p(c_73) = [1] p(c_74) = [1] x1 + [2] p(c_75) = [0] p(c_76) = [4] p(c_77) = [1] x2 + [1] p(c_78) = [4] x1 + [2] x2 + [1] p(c_79) = [2] x1 + [1] p(c_80) = [1] x1 + [1] x2 + [2] p(c_81) = [0] Following rules are strictly oriented: COMPUTELINE#(z0,z1,z2) = [6] z1 + [4] > [6] z1 + [2] = c_3(COMPUTELINE#1#(z0,z2,z1)) Following rules are (at-least) weakly oriented: COMPUTELINE#1#(::(z0,z1),z2,z3) = [6] z3 + [0] >= [6] z3 + [0] = c_4(COMPUTELINE#2#(z3,z2,z0,z1)) COMPUTELINE#2#(::(z0,z1),z2,z3,z4) = [6] z1 + [6] >= [6] z1 + [6] = c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2))) MATRIXMULT#(z0,z1) = [6] z1 + [5] >= [6] z1 + [5] = c_15(MATRIXMULT#1#(z0,z1)) MATRIXMULT#1#(::(z0,z1),z2) = [6] z2 + [5] >= [6] z2 + [5] = c_16(COMPUTELINE#(z0,z2,nil())) MATRIXMULT#1#(::(z0,z1),z2) = [6] z2 + [5] >= [6] z2 + [5] = c_17(MATRIXMULT#(z1,z2)) **** Step 7.a:1.b:3.a:2: Assumption. WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) - Weak DPs: COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2))) MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) +(z0,z1) -> #add(z0,z1) lineMult(z0,z1,z2) -> lineMult#1(z1,z2,z0) lineMult#1(::(z0,z1),z2,z3) -> lineMult#2(z2,z3,z0,z1) lineMult#1(nil(),z0,z1) -> nil() lineMult#2(::(z0,z1),z2,z3,z4) -> ::(+(*(z3,z2),z0),lineMult(z2,z4,z1)) lineMult#2(nil(),z0,z1,z2) -> ::(*(z1,z0),lineMult(z0,z2,nil())) - Signature: {#ADD/2,#MULT/2,#NATMULT/2,#PRED/1,#SUCC/1,#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,*'/2,+/2,+'/2 ,COMPUTELINE/3,COMPUTELINE#1/3,COMPUTELINE#2/4,LINEMULT/3,LINEMULT#1/3,LINEMULT#2/4,MATRIXMULT/2 ,MATRIXMULT#1/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4 ,matrixMult/2,matrixMult#1/2,#ADD#/2,#MULT#/2,#NATMULT#/2,#PRED#/1,#SUCC#/1,#add#/2,#mult#/2,#natmult#/2 ,#pred#/1,#succ#/1,*#/2,*'#/2,+#/2,+'#/2,COMPUTELINE#/3,COMPUTELINE#1#/3,COMPUTELINE#2#/4,LINEMULT#/3 ,LINEMULT#1#/3,LINEMULT#2#/4,MATRIXMULT#/2,MATRIXMULT#1#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4 ,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,c/0 ,c1/1,c10/1,c11/0,c12/1,c13/1,c14/0,c15/2,c16/0,c17/0,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/0,c24/1,c25/1 ,c26/1,c27/1,c28/0,c29/2,c3/1,c30/0,c31/1,c32/1,c33/0,c34/2,c35/1,c36/1,c37/1,c38/1,c39/1,c4/2,c40/1,c41/0 ,c5/0,c6/0,c7/0,c8/0,c9/1,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/1,c_7/0,c_8/1,c_9/1,c_10/0,c_11/2,c_12/1 ,c_13/1,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2,c_22/1,c_23/2,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/2,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0,c_42/0 ,c_43/0,c_44/1,c_45/1,c_46/1,c_47/1,c_48/0,c_49/0,c_50/0,c_51/0,c_52/1,c_53/1,c_54/0,c_55/1,c_56/1,c_57/0 ,c_58/1,c_59/0,c_60/0,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0,c_67/1,c_68/1,c_69/1,c_70/1,c_71/0,c_72/1 ,c_73/0,c_74/1,c_75/1,c_76/0,c_77/2,c_78/2,c_79/1,c_80/2,c_81/0} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#MULT#,#NATMULT#,#PRED#,#SUCC#,#add#,#mult# ,#natmult#,#pred#,#succ#,*#,*'#,+#,+'#,COMPUTELINE#,COMPUTELINE#1#,COMPUTELINE#2#,LINEMULT#,LINEMULT#1# ,LINEMULT#2#,MATRIXMULT#,MATRIXMULT#1#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1# ,lineMult#2#,matrixMult#,matrixMult#1#} and constructors {#0,#neg,#pos,#s,::,c,c1,c10,c11,c12,c13,c14,c15 ,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c4 ,c40,c41,c5,c6,c7,c8,c9,nil} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown, timeBCUB = Unknown, timeBCLB = Unknown}} + Details: () **** Step 7.a:1.b:3.b:1: RemoveWeakSuffixes. WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2))) MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) +(z0,z1) -> #add(z0,z1) lineMult(z0,z1,z2) -> lineMult#1(z1,z2,z0) lineMult#1(::(z0,z1),z2,z3) -> lineMult#2(z2,z3,z0,z1) lineMult#1(nil(),z0,z1) -> nil() lineMult#2(::(z0,z1),z2,z3,z4) -> ::(+(*(z3,z2),z0),lineMult(z2,z4,z1)) lineMult#2(nil(),z0,z1,z2) -> ::(*(z1,z0),lineMult(z0,z2,nil())) - Signature: {#ADD/2,#MULT/2,#NATMULT/2,#PRED/1,#SUCC/1,#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,*'/2,+/2,+'/2 ,COMPUTELINE/3,COMPUTELINE#1/3,COMPUTELINE#2/4,LINEMULT/3,LINEMULT#1/3,LINEMULT#2/4,MATRIXMULT/2 ,MATRIXMULT#1/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4 ,matrixMult/2,matrixMult#1/2,#ADD#/2,#MULT#/2,#NATMULT#/2,#PRED#/1,#SUCC#/1,#add#/2,#mult#/2,#natmult#/2 ,#pred#/1,#succ#/1,*#/2,*'#/2,+#/2,+'#/2,COMPUTELINE#/3,COMPUTELINE#1#/3,COMPUTELINE#2#/4,LINEMULT#/3 ,LINEMULT#1#/3,LINEMULT#2#/4,MATRIXMULT#/2,MATRIXMULT#1#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4 ,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,c/0 ,c1/1,c10/1,c11/0,c12/1,c13/1,c14/0,c15/2,c16/0,c17/0,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/0,c24/1,c25/1 ,c26/1,c27/1,c28/0,c29/2,c3/1,c30/0,c31/1,c32/1,c33/0,c34/2,c35/1,c36/1,c37/1,c38/1,c39/1,c4/2,c40/1,c41/0 ,c5/0,c6/0,c7/0,c8/0,c9/1,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/1,c_7/0,c_8/1,c_9/1,c_10/0,c_11/2,c_12/1 ,c_13/1,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2,c_22/1,c_23/2,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/2,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0,c_42/0 ,c_43/0,c_44/1,c_45/1,c_46/1,c_47/1,c_48/0,c_49/0,c_50/0,c_51/0,c_52/1,c_53/1,c_54/0,c_55/1,c_56/1,c_57/0 ,c_58/1,c_59/0,c_60/0,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0,c_67/1,c_68/1,c_69/1,c_70/1,c_71/0,c_72/1 ,c_73/0,c_74/1,c_75/1,c_76/0,c_77/2,c_78/2,c_79/1,c_80/2,c_81/0} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#MULT#,#NATMULT#,#PRED#,#SUCC#,#add#,#mult# ,#natmult#,#pred#,#succ#,*#,*'#,+#,+'#,COMPUTELINE#,COMPUTELINE#1#,COMPUTELINE#2#,LINEMULT#,LINEMULT#1# ,LINEMULT#2#,MATRIXMULT#,MATRIXMULT#1#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1# ,lineMult#2#,matrixMult#,matrixMult#1#} and constructors {#0,#neg,#pos,#s,::,c,c1,c10,c11,c12,c13,c14,c15 ,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c4 ,c40,c41,c5,c6,c7,c8,c9,nil} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:W:COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) -->_1 COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)):2 2:W:COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) -->_1 COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2))):3 3:W:COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2))) -->_1 COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)):1 4:W:MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) -->_1 MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)):6 -->_1 MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())):5 5:W:MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) -->_1 COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)):1 6:W:MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) -->_1 MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)):4 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 4: MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) 6: MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) 5: MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) 1: COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) 3: COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2))) 2: COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) **** Step 7.a:1.b:3.b:2: EmptyProcessor. WORST_CASE(?,O(1)) + Considered Problem: - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) +(z0,z1) -> #add(z0,z1) lineMult(z0,z1,z2) -> lineMult#1(z1,z2,z0) lineMult#1(::(z0,z1),z2,z3) -> lineMult#2(z2,z3,z0,z1) lineMult#1(nil(),z0,z1) -> nil() lineMult#2(::(z0,z1),z2,z3,z4) -> ::(+(*(z3,z2),z0),lineMult(z2,z4,z1)) lineMult#2(nil(),z0,z1,z2) -> ::(*(z1,z0),lineMult(z0,z2,nil())) - Signature: {#ADD/2,#MULT/2,#NATMULT/2,#PRED/1,#SUCC/1,#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,*'/2,+/2,+'/2 ,COMPUTELINE/3,COMPUTELINE#1/3,COMPUTELINE#2/4,LINEMULT/3,LINEMULT#1/3,LINEMULT#2/4,MATRIXMULT/2 ,MATRIXMULT#1/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4 ,matrixMult/2,matrixMult#1/2,#ADD#/2,#MULT#/2,#NATMULT#/2,#PRED#/1,#SUCC#/1,#add#/2,#mult#/2,#natmult#/2 ,#pred#/1,#succ#/1,*#/2,*'#/2,+#/2,+'#/2,COMPUTELINE#/3,COMPUTELINE#1#/3,COMPUTELINE#2#/4,LINEMULT#/3 ,LINEMULT#1#/3,LINEMULT#2#/4,MATRIXMULT#/2,MATRIXMULT#1#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4 ,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,c/0 ,c1/1,c10/1,c11/0,c12/1,c13/1,c14/0,c15/2,c16/0,c17/0,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/0,c24/1,c25/1 ,c26/1,c27/1,c28/0,c29/2,c3/1,c30/0,c31/1,c32/1,c33/0,c34/2,c35/1,c36/1,c37/1,c38/1,c39/1,c4/2,c40/1,c41/0 ,c5/0,c6/0,c7/0,c8/0,c9/1,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/1,c_7/0,c_8/1,c_9/1,c_10/0,c_11/2,c_12/1 ,c_13/1,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2,c_22/1,c_23/2,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/2,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0,c_42/0 ,c_43/0,c_44/1,c_45/1,c_46/1,c_47/1,c_48/0,c_49/0,c_50/0,c_51/0,c_52/1,c_53/1,c_54/0,c_55/1,c_56/1,c_57/0 ,c_58/1,c_59/0,c_60/0,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0,c_67/1,c_68/1,c_69/1,c_70/1,c_71/0,c_72/1 ,c_73/0,c_74/1,c_75/1,c_76/0,c_77/2,c_78/2,c_79/1,c_80/2,c_81/0} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#MULT#,#NATMULT#,#PRED#,#SUCC#,#add#,#mult# ,#natmult#,#pred#,#succ#,*#,*'#,+#,+'#,COMPUTELINE#,COMPUTELINE#1#,COMPUTELINE#2#,LINEMULT#,LINEMULT#1# ,LINEMULT#2#,MATRIXMULT#,MATRIXMULT#1#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1# ,lineMult#2#,matrixMult#,matrixMult#1#} and constructors {#0,#neg,#pos,#s,::,c,c1,c10,c11,c12,c13,c14,c15 ,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c4 ,c40,c41,c5,c6,c7,c8,c9,nil} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). ** Step 7.b:1: PredecessorEstimation. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) - Weak DPs: COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)),LINEMULT#(z3,z0,z2)) LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)) LINEMULT#1#(::(z0,z1),z2,z3) -> c_9(LINEMULT#2#(z2,z3,z0,z1)) LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_12(LINEMULT#(z2,z4,z1)) LINEMULT#2#(nil(),z0,z1,z2) -> c_14(LINEMULT#(z0,z2,nil())) - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) +(z0,z1) -> #add(z0,z1) lineMult(z0,z1,z2) -> lineMult#1(z1,z2,z0) lineMult#1(::(z0,z1),z2,z3) -> lineMult#2(z2,z3,z0,z1) lineMult#1(nil(),z0,z1) -> nil() lineMult#2(::(z0,z1),z2,z3,z4) -> ::(+(*(z3,z2),z0),lineMult(z2,z4,z1)) lineMult#2(nil(),z0,z1,z2) -> ::(*(z1,z0),lineMult(z0,z2,nil())) - Signature: {#ADD/2,#MULT/2,#NATMULT/2,#PRED/1,#SUCC/1,#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,*'/2,+/2,+'/2 ,COMPUTELINE/3,COMPUTELINE#1/3,COMPUTELINE#2/4,LINEMULT/3,LINEMULT#1/3,LINEMULT#2/4,MATRIXMULT/2 ,MATRIXMULT#1/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4 ,matrixMult/2,matrixMult#1/2,#ADD#/2,#MULT#/2,#NATMULT#/2,#PRED#/1,#SUCC#/1,#add#/2,#mult#/2,#natmult#/2 ,#pred#/1,#succ#/1,*#/2,*'#/2,+#/2,+'#/2,COMPUTELINE#/3,COMPUTELINE#1#/3,COMPUTELINE#2#/4,LINEMULT#/3 ,LINEMULT#1#/3,LINEMULT#2#/4,MATRIXMULT#/2,MATRIXMULT#1#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4 ,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,c/0 ,c1/1,c10/1,c11/0,c12/1,c13/1,c14/0,c15/2,c16/0,c17/0,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/0,c24/1,c25/1 ,c26/1,c27/1,c28/0,c29/2,c3/1,c30/0,c31/1,c32/1,c33/0,c34/2,c35/1,c36/1,c37/1,c38/1,c39/1,c4/2,c40/1,c41/0 ,c5/0,c6/0,c7/0,c8/0,c9/1,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/2,c_12/1 ,c_13/1,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2,c_22/1,c_23/2,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/2,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0,c_42/0 ,c_43/0,c_44/1,c_45/1,c_46/1,c_47/1,c_48/0,c_49/0,c_50/0,c_51/0,c_52/1,c_53/1,c_54/0,c_55/1,c_56/1,c_57/0 ,c_58/1,c_59/0,c_60/0,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0,c_67/1,c_68/1,c_69/1,c_70/1,c_71/0,c_72/1 ,c_73/0,c_74/1,c_75/1,c_76/0,c_77/2,c_78/2,c_79/1,c_80/2,c_81/0} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#MULT#,#NATMULT#,#PRED#,#SUCC#,#add#,#mult# ,#natmult#,#pred#,#succ#,*#,*'#,+#,+'#,COMPUTELINE#,COMPUTELINE#1#,COMPUTELINE#2#,LINEMULT#,LINEMULT#1# ,LINEMULT#2#,MATRIXMULT#,MATRIXMULT#1#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1# ,lineMult#2#,matrixMult#,matrixMult#1#} and constructors {#0,#neg,#pos,#s,::,c,c1,c10,c11,c12,c13,c14,c15 ,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c4 ,c40,c41,c5,c6,c7,c8,c9,nil} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {2} by application of Pre({2}) = {1}. Here rules are labelled as follows: 1: MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) 2: MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) 3: MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) 4: COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) 5: COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) 6: COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)),LINEMULT#(z3,z0,z2)) 7: LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)) 8: LINEMULT#1#(::(z0,z1),z2,z3) -> c_9(LINEMULT#2#(z2,z3,z0,z1)) 9: LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_12(LINEMULT#(z2,z4,z1)) 10: LINEMULT#2#(nil(),z0,z1,z2) -> c_14(LINEMULT#(z0,z2,nil())) ** Step 7.b:2: RemoveWeakSuffixes. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) - Weak DPs: COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)),LINEMULT#(z3,z0,z2)) LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)) LINEMULT#1#(::(z0,z1),z2,z3) -> c_9(LINEMULT#2#(z2,z3,z0,z1)) LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_12(LINEMULT#(z2,z4,z1)) LINEMULT#2#(nil(),z0,z1,z2) -> c_14(LINEMULT#(z0,z2,nil())) MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) +(z0,z1) -> #add(z0,z1) lineMult(z0,z1,z2) -> lineMult#1(z1,z2,z0) lineMult#1(::(z0,z1),z2,z3) -> lineMult#2(z2,z3,z0,z1) lineMult#1(nil(),z0,z1) -> nil() lineMult#2(::(z0,z1),z2,z3,z4) -> ::(+(*(z3,z2),z0),lineMult(z2,z4,z1)) lineMult#2(nil(),z0,z1,z2) -> ::(*(z1,z0),lineMult(z0,z2,nil())) - Signature: {#ADD/2,#MULT/2,#NATMULT/2,#PRED/1,#SUCC/1,#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,*'/2,+/2,+'/2 ,COMPUTELINE/3,COMPUTELINE#1/3,COMPUTELINE#2/4,LINEMULT/3,LINEMULT#1/3,LINEMULT#2/4,MATRIXMULT/2 ,MATRIXMULT#1/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4 ,matrixMult/2,matrixMult#1/2,#ADD#/2,#MULT#/2,#NATMULT#/2,#PRED#/1,#SUCC#/1,#add#/2,#mult#/2,#natmult#/2 ,#pred#/1,#succ#/1,*#/2,*'#/2,+#/2,+'#/2,COMPUTELINE#/3,COMPUTELINE#1#/3,COMPUTELINE#2#/4,LINEMULT#/3 ,LINEMULT#1#/3,LINEMULT#2#/4,MATRIXMULT#/2,MATRIXMULT#1#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4 ,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,c/0 ,c1/1,c10/1,c11/0,c12/1,c13/1,c14/0,c15/2,c16/0,c17/0,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/0,c24/1,c25/1 ,c26/1,c27/1,c28/0,c29/2,c3/1,c30/0,c31/1,c32/1,c33/0,c34/2,c35/1,c36/1,c37/1,c38/1,c39/1,c4/2,c40/1,c41/0 ,c5/0,c6/0,c7/0,c8/0,c9/1,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/2,c_12/1 ,c_13/1,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2,c_22/1,c_23/2,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/2,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0,c_42/0 ,c_43/0,c_44/1,c_45/1,c_46/1,c_47/1,c_48/0,c_49/0,c_50/0,c_51/0,c_52/1,c_53/1,c_54/0,c_55/1,c_56/1,c_57/0 ,c_58/1,c_59/0,c_60/0,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0,c_67/1,c_68/1,c_69/1,c_70/1,c_71/0,c_72/1 ,c_73/0,c_74/1,c_75/1,c_76/0,c_77/2,c_78/2,c_79/1,c_80/2,c_81/0} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#MULT#,#NATMULT#,#PRED#,#SUCC#,#add#,#mult# ,#natmult#,#pred#,#succ#,*#,*'#,+#,+'#,COMPUTELINE#,COMPUTELINE#1#,COMPUTELINE#2#,LINEMULT#,LINEMULT#1# ,LINEMULT#2#,MATRIXMULT#,MATRIXMULT#1#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1# ,lineMult#2#,matrixMult#,matrixMult#1#} and constructors {#0,#neg,#pos,#s,::,c,c1,c10,c11,c12,c13,c14,c15 ,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c4 ,c40,c41,c5,c6,c7,c8,c9,nil} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) -->_1 MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())):10 -->_1 MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)):2 2:S:MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) -->_1 MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)):1 3:W:COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) -->_1 COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)):4 4:W:COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) -->_1 COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)) ,LINEMULT#(z3,z0,z2)):5 5:W:COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)),LINEMULT#(z3,z0,z2)) -->_2 LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)):6 -->_1 COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)):3 6:W:LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)) -->_1 LINEMULT#1#(::(z0,z1),z2,z3) -> c_9(LINEMULT#2#(z2,z3,z0,z1)):7 7:W:LINEMULT#1#(::(z0,z1),z2,z3) -> c_9(LINEMULT#2#(z2,z3,z0,z1)) -->_1 LINEMULT#2#(nil(),z0,z1,z2) -> c_14(LINEMULT#(z0,z2,nil())):9 -->_1 LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_12(LINEMULT#(z2,z4,z1)):8 8:W:LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_12(LINEMULT#(z2,z4,z1)) -->_1 LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)):6 9:W:LINEMULT#2#(nil(),z0,z1,z2) -> c_14(LINEMULT#(z0,z2,nil())) -->_1 LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)):6 10:W:MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) -->_1 COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)):3 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 10: MATRIXMULT#1#(::(z0,z1),z2) -> c_16(COMPUTELINE#(z0,z2,nil())) 3: COMPUTELINE#(z0,z1,z2) -> c_3(COMPUTELINE#1#(z0,z2,z1)) 5: COMPUTELINE#2#(::(z0,z1),z2,z3,z4) -> c_6(COMPUTELINE#(z4,z1,lineMult(z3,z0,z2)),LINEMULT#(z3,z0,z2)) 4: COMPUTELINE#1#(::(z0,z1),z2,z3) -> c_4(COMPUTELINE#2#(z3,z2,z0,z1)) 6: LINEMULT#(z0,z1,z2) -> c_8(LINEMULT#1#(z1,z2,z0)) 9: LINEMULT#2#(nil(),z0,z1,z2) -> c_14(LINEMULT#(z0,z2,nil())) 7: LINEMULT#1#(::(z0,z1),z2,z3) -> c_9(LINEMULT#2#(z2,z3,z0,z1)) 8: LINEMULT#2#(::(z0,z1),z2,z3,z4) -> c_12(LINEMULT#(z2,z4,z1)) ** Step 7.b:3: UsableRules. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) +(z0,z1) -> #add(z0,z1) lineMult(z0,z1,z2) -> lineMult#1(z1,z2,z0) lineMult#1(::(z0,z1),z2,z3) -> lineMult#2(z2,z3,z0,z1) lineMult#1(nil(),z0,z1) -> nil() lineMult#2(::(z0,z1),z2,z3,z4) -> ::(+(*(z3,z2),z0),lineMult(z2,z4,z1)) lineMult#2(nil(),z0,z1,z2) -> ::(*(z1,z0),lineMult(z0,z2,nil())) - Signature: {#ADD/2,#MULT/2,#NATMULT/2,#PRED/1,#SUCC/1,#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,*'/2,+/2,+'/2 ,COMPUTELINE/3,COMPUTELINE#1/3,COMPUTELINE#2/4,LINEMULT/3,LINEMULT#1/3,LINEMULT#2/4,MATRIXMULT/2 ,MATRIXMULT#1/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4 ,matrixMult/2,matrixMult#1/2,#ADD#/2,#MULT#/2,#NATMULT#/2,#PRED#/1,#SUCC#/1,#add#/2,#mult#/2,#natmult#/2 ,#pred#/1,#succ#/1,*#/2,*'#/2,+#/2,+'#/2,COMPUTELINE#/3,COMPUTELINE#1#/3,COMPUTELINE#2#/4,LINEMULT#/3 ,LINEMULT#1#/3,LINEMULT#2#/4,MATRIXMULT#/2,MATRIXMULT#1#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4 ,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,c/0 ,c1/1,c10/1,c11/0,c12/1,c13/1,c14/0,c15/2,c16/0,c17/0,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/0,c24/1,c25/1 ,c26/1,c27/1,c28/0,c29/2,c3/1,c30/0,c31/1,c32/1,c33/0,c34/2,c35/1,c36/1,c37/1,c38/1,c39/1,c4/2,c40/1,c41/0 ,c5/0,c6/0,c7/0,c8/0,c9/1,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/2,c_12/1 ,c_13/1,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2,c_22/1,c_23/2,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/2,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0,c_42/0 ,c_43/0,c_44/1,c_45/1,c_46/1,c_47/1,c_48/0,c_49/0,c_50/0,c_51/0,c_52/1,c_53/1,c_54/0,c_55/1,c_56/1,c_57/0 ,c_58/1,c_59/0,c_60/0,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0,c_67/1,c_68/1,c_69/1,c_70/1,c_71/0,c_72/1 ,c_73/0,c_74/1,c_75/1,c_76/0,c_77/2,c_78/2,c_79/1,c_80/2,c_81/0} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#MULT#,#NATMULT#,#PRED#,#SUCC#,#add#,#mult# ,#natmult#,#pred#,#succ#,*#,*'#,+#,+'#,COMPUTELINE#,COMPUTELINE#1#,COMPUTELINE#2#,LINEMULT#,LINEMULT#1# ,LINEMULT#2#,MATRIXMULT#,MATRIXMULT#1#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1# ,lineMult#2#,matrixMult#,matrixMult#1#} and constructors {#0,#neg,#pos,#s,::,c,c1,c10,c11,c12,c13,c14,c15 ,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c4 ,c40,c41,c5,c6,c7,c8,c9,nil} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) ** Step 7.b:4: PredecessorEstimationCP. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) - Signature: {#ADD/2,#MULT/2,#NATMULT/2,#PRED/1,#SUCC/1,#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,*'/2,+/2,+'/2 ,COMPUTELINE/3,COMPUTELINE#1/3,COMPUTELINE#2/4,LINEMULT/3,LINEMULT#1/3,LINEMULT#2/4,MATRIXMULT/2 ,MATRIXMULT#1/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4 ,matrixMult/2,matrixMult#1/2,#ADD#/2,#MULT#/2,#NATMULT#/2,#PRED#/1,#SUCC#/1,#add#/2,#mult#/2,#natmult#/2 ,#pred#/1,#succ#/1,*#/2,*'#/2,+#/2,+'#/2,COMPUTELINE#/3,COMPUTELINE#1#/3,COMPUTELINE#2#/4,LINEMULT#/3 ,LINEMULT#1#/3,LINEMULT#2#/4,MATRIXMULT#/2,MATRIXMULT#1#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4 ,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,c/0 ,c1/1,c10/1,c11/0,c12/1,c13/1,c14/0,c15/2,c16/0,c17/0,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/0,c24/1,c25/1 ,c26/1,c27/1,c28/0,c29/2,c3/1,c30/0,c31/1,c32/1,c33/0,c34/2,c35/1,c36/1,c37/1,c38/1,c39/1,c4/2,c40/1,c41/0 ,c5/0,c6/0,c7/0,c8/0,c9/1,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/2,c_12/1 ,c_13/1,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2,c_22/1,c_23/2,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/2,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0,c_42/0 ,c_43/0,c_44/1,c_45/1,c_46/1,c_47/1,c_48/0,c_49/0,c_50/0,c_51/0,c_52/1,c_53/1,c_54/0,c_55/1,c_56/1,c_57/0 ,c_58/1,c_59/0,c_60/0,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0,c_67/1,c_68/1,c_69/1,c_70/1,c_71/0,c_72/1 ,c_73/0,c_74/1,c_75/1,c_76/0,c_77/2,c_78/2,c_79/1,c_80/2,c_81/0} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#MULT#,#NATMULT#,#PRED#,#SUCC#,#add#,#mult# ,#natmult#,#pred#,#succ#,*#,*'#,+#,+'#,COMPUTELINE#,COMPUTELINE#1#,COMPUTELINE#2#,LINEMULT#,LINEMULT#1# ,LINEMULT#2#,MATRIXMULT#,MATRIXMULT#1#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1# ,lineMult#2#,matrixMult#,matrixMult#1#} and constructors {#0,#neg,#pos,#s,::,c,c1,c10,c11,c12,c13,c14,c15 ,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c4 ,c40,c41,c5,c6,c7,c8,c9,nil} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 2: MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) Consider the set of all dependency pairs 1: MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) 2: MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1)) BEST_CASE TIME (?,?) SPACE(?,?)on application of the dependency pairs {2} These cover all (indirect) predecessors of dependency pairs {1,2} their number of applications is equally bounded. The dependency pairs are shifted into the weak component. *** Step 7.b:4.a:1: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) - Signature: {#ADD/2,#MULT/2,#NATMULT/2,#PRED/1,#SUCC/1,#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,*'/2,+/2,+'/2 ,COMPUTELINE/3,COMPUTELINE#1/3,COMPUTELINE#2/4,LINEMULT/3,LINEMULT#1/3,LINEMULT#2/4,MATRIXMULT/2 ,MATRIXMULT#1/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4 ,matrixMult/2,matrixMult#1/2,#ADD#/2,#MULT#/2,#NATMULT#/2,#PRED#/1,#SUCC#/1,#add#/2,#mult#/2,#natmult#/2 ,#pred#/1,#succ#/1,*#/2,*'#/2,+#/2,+'#/2,COMPUTELINE#/3,COMPUTELINE#1#/3,COMPUTELINE#2#/4,LINEMULT#/3 ,LINEMULT#1#/3,LINEMULT#2#/4,MATRIXMULT#/2,MATRIXMULT#1#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4 ,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,c/0 ,c1/1,c10/1,c11/0,c12/1,c13/1,c14/0,c15/2,c16/0,c17/0,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/0,c24/1,c25/1 ,c26/1,c27/1,c28/0,c29/2,c3/1,c30/0,c31/1,c32/1,c33/0,c34/2,c35/1,c36/1,c37/1,c38/1,c39/1,c4/2,c40/1,c41/0 ,c5/0,c6/0,c7/0,c8/0,c9/1,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/2,c_12/1 ,c_13/1,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2,c_22/1,c_23/2,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/2,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0,c_42/0 ,c_43/0,c_44/1,c_45/1,c_46/1,c_47/1,c_48/0,c_49/0,c_50/0,c_51/0,c_52/1,c_53/1,c_54/0,c_55/1,c_56/1,c_57/0 ,c_58/1,c_59/0,c_60/0,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0,c_67/1,c_68/1,c_69/1,c_70/1,c_71/0,c_72/1 ,c_73/0,c_74/1,c_75/1,c_76/0,c_77/2,c_78/2,c_79/1,c_80/2,c_81/0} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#MULT#,#NATMULT#,#PRED#,#SUCC#,#add#,#mult# ,#natmult#,#pred#,#succ#,*#,*'#,+#,+'#,COMPUTELINE#,COMPUTELINE#1#,COMPUTELINE#2#,LINEMULT#,LINEMULT#1# ,LINEMULT#2#,MATRIXMULT#,MATRIXMULT#1#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1# ,lineMult#2#,matrixMult#,matrixMult#1#} and constructors {#0,#neg,#pos,#s,::,c,c1,c10,c11,c12,c13,c14,c15 ,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c4 ,c40,c41,c5,c6,c7,c8,c9,nil} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_15) = {1}, uargs(c_17) = {1} Following symbols are considered usable: {#ADD#,#MULT#,#NATMULT#,#PRED#,#SUCC#,#add#,#mult#,#natmult#,#pred#,#succ#,*#,*'#,+#,+'#,COMPUTELINE# ,COMPUTELINE#1#,COMPUTELINE#2#,LINEMULT#,LINEMULT#1#,LINEMULT#2#,MATRIXMULT#,MATRIXMULT#1#,computeLine# ,computeLine#1#,computeLine#2#,lineMult#,lineMult#1#,lineMult#2#,matrixMult#,matrixMult#1#} TcT has computed the following interpretation: p(#0) = [1] p(#ADD) = [0] p(#MULT) = [0] p(#NATMULT) = [0] p(#PRED) = [8] p(#SUCC) = [0] p(#add) = [1] x2 + [2] p(#mult) = [2] x1 + [1] x2 + [0] p(#natmult) = [2] x1 + [1] x2 + [1] p(#neg) = [1] x1 + [8] p(#pos) = [1] p(#pred) = [1] x1 + [0] p(#s) = [1] p(#succ) = [0] p(*) = [0] p(*') = [0] p(+) = [0] p(+') = [0] p(::) = [1] x2 + [1] p(COMPUTELINE) = [0] p(COMPUTELINE#1) = [0] p(COMPUTELINE#2) = [1] x4 + [0] p(LINEMULT) = [0] p(LINEMULT#1) = [0] p(LINEMULT#2) = [0] p(MATRIXMULT) = [1] x2 + [0] p(MATRIXMULT#1) = [0] p(c) = [0] p(c1) = [0] p(c10) = [0] p(c11) = [0] p(c12) = [0] p(c13) = [1] x1 + [0] p(c14) = [0] p(c15) = [1] x2 + [0] p(c16) = [0] p(c17) = [0] p(c18) = [0] p(c19) = [0] p(c2) = [1] x1 + [1] x2 + [0] p(c20) = [0] p(c21) = [0] p(c22) = [0] p(c23) = [0] p(c24) = [1] x1 + [0] p(c25) = [1] x1 + [0] p(c26) = [0] p(c27) = [0] p(c28) = [0] p(c29) = [1] x1 + [0] p(c3) = [1] x1 + [0] p(c30) = [0] p(c31) = [1] p(c32) = [1] x1 + [1] p(c33) = [8] p(c34) = [1] x2 + [1] p(c35) = [1] x1 + [2] p(c36) = [0] p(c37) = [1] x1 + [0] p(c38) = [1] x1 + [0] p(c39) = [0] p(c4) = [0] p(c40) = [0] p(c41) = [0] p(c5) = [0] p(c6) = [1] p(c7) = [2] p(c8) = [0] p(c9) = [1] x1 + [0] p(computeLine) = [0] p(computeLine#1) = [1] x1 + [4] x2 + [1] x3 + [0] p(computeLine#2) = [1] x2 + [1] x4 + [1] p(lineMult) = [1] x3 + [1] p(lineMult#1) = [2] x1 + [1] x2 + [1] x3 + [4] p(lineMult#2) = [4] x1 + [1] x2 + [1] x3 + [1] p(matrixMult) = [2] x1 + [1] p(matrixMult#1) = [1] x2 + [1] p(nil) = [0] p(#ADD#) = [0] p(#MULT#) = [0] p(#NATMULT#) = [0] p(#PRED#) = [0] p(#SUCC#) = [0] p(#add#) = [0] p(#mult#) = [0] p(#natmult#) = [0] p(#pred#) = [1] p(#succ#) = [0] p(*#) = [0] p(*'#) = [0] p(+#) = [1] x2 + [0] p(+'#) = [0] p(COMPUTELINE#) = [0] p(COMPUTELINE#1#) = [0] p(COMPUTELINE#2#) = [0] p(LINEMULT#) = [1] x1 + [0] p(LINEMULT#1#) = [0] p(LINEMULT#2#) = [0] p(MATRIXMULT#) = [8] x1 + [0] p(MATRIXMULT#1#) = [8] x1 + [0] p(computeLine#) = [0] p(computeLine#1#) = [0] p(computeLine#2#) = [0] p(lineMult#) = [0] p(lineMult#1#) = [0] p(lineMult#2#) = [0] p(matrixMult#) = [0] p(matrixMult#1#) = [0] p(c_1) = [0] p(c_2) = [0] p(c_3) = [0] p(c_4) = [0] p(c_5) = [0] p(c_6) = [0] p(c_7) = [0] p(c_8) = [0] p(c_9) = [0] p(c_10) = [0] p(c_11) = [0] p(c_12) = [0] p(c_13) = [0] p(c_14) = [0] p(c_15) = [1] x1 + [0] p(c_16) = [2] x1 + [0] p(c_17) = [1] x1 + [4] p(c_18) = [0] p(c_19) = [0] p(c_20) = [0] p(c_21) = [1] x2 + [0] p(c_22) = [2] x1 + [0] p(c_23) = [2] x1 + [1] x2 + [0] p(c_24) = [0] p(c_25) = [0] p(c_26) = [0] p(c_27) = [0] p(c_28) = [1] x1 + [0] p(c_29) = [1] x1 + [0] p(c_30) = [0] p(c_31) = [1] x1 + [0] p(c_32) = [8] x1 + [0] p(c_33) = [0] p(c_34) = [0] p(c_35) = [0] p(c_36) = [0] p(c_37) = [0] p(c_38) = [0] p(c_39) = [0] p(c_40) = [0] p(c_41) = [0] p(c_42) = [0] p(c_43) = [0] p(c_44) = [1] x1 + [0] p(c_45) = [2] x1 + [0] p(c_46) = [0] p(c_47) = [1] x1 + [0] p(c_48) = [0] p(c_49) = [0] p(c_50) = [0] p(c_51) = [0] p(c_52) = [0] p(c_53) = [1] x1 + [0] p(c_54) = [0] p(c_55) = [1] x1 + [0] p(c_56) = [1] x1 + [0] p(c_57) = [0] p(c_58) = [1] x1 + [0] p(c_59) = [0] p(c_60) = [0] p(c_61) = [0] p(c_62) = [0] p(c_63) = [0] p(c_64) = [0] p(c_65) = [0] p(c_66) = [0] p(c_67) = [2] p(c_68) = [1] x1 + [1] p(c_69) = [1] p(c_70) = [1] x1 + [0] p(c_71) = [0] p(c_72) = [4] x1 + [0] p(c_73) = [1] p(c_74) = [1] x1 + [1] p(c_75) = [1] x1 + [1] p(c_76) = [2] p(c_77) = [1] x1 + [1] x2 + [1] p(c_78) = [1] x1 + [1] x2 + [0] p(c_79) = [0] p(c_80) = [0] p(c_81) = [1] Following rules are strictly oriented: MATRIXMULT#1#(::(z0,z1),z2) = [8] z1 + [8] > [8] z1 + [4] = c_17(MATRIXMULT#(z1,z2)) Following rules are (at-least) weakly oriented: MATRIXMULT#(z0,z1) = [8] z0 + [0] >= [8] z0 + [0] = c_15(MATRIXMULT#1#(z0,z1)) *** Step 7.b:4.a:2: Assumption. WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) - Weak DPs: MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) - Signature: {#ADD/2,#MULT/2,#NATMULT/2,#PRED/1,#SUCC/1,#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,*'/2,+/2,+'/2 ,COMPUTELINE/3,COMPUTELINE#1/3,COMPUTELINE#2/4,LINEMULT/3,LINEMULT#1/3,LINEMULT#2/4,MATRIXMULT/2 ,MATRIXMULT#1/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4 ,matrixMult/2,matrixMult#1/2,#ADD#/2,#MULT#/2,#NATMULT#/2,#PRED#/1,#SUCC#/1,#add#/2,#mult#/2,#natmult#/2 ,#pred#/1,#succ#/1,*#/2,*'#/2,+#/2,+'#/2,COMPUTELINE#/3,COMPUTELINE#1#/3,COMPUTELINE#2#/4,LINEMULT#/3 ,LINEMULT#1#/3,LINEMULT#2#/4,MATRIXMULT#/2,MATRIXMULT#1#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4 ,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,c/0 ,c1/1,c10/1,c11/0,c12/1,c13/1,c14/0,c15/2,c16/0,c17/0,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/0,c24/1,c25/1 ,c26/1,c27/1,c28/0,c29/2,c3/1,c30/0,c31/1,c32/1,c33/0,c34/2,c35/1,c36/1,c37/1,c38/1,c39/1,c4/2,c40/1,c41/0 ,c5/0,c6/0,c7/0,c8/0,c9/1,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/2,c_12/1 ,c_13/1,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2,c_22/1,c_23/2,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/2,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0,c_42/0 ,c_43/0,c_44/1,c_45/1,c_46/1,c_47/1,c_48/0,c_49/0,c_50/0,c_51/0,c_52/1,c_53/1,c_54/0,c_55/1,c_56/1,c_57/0 ,c_58/1,c_59/0,c_60/0,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0,c_67/1,c_68/1,c_69/1,c_70/1,c_71/0,c_72/1 ,c_73/0,c_74/1,c_75/1,c_76/0,c_77/2,c_78/2,c_79/1,c_80/2,c_81/0} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#MULT#,#NATMULT#,#PRED#,#SUCC#,#add#,#mult# ,#natmult#,#pred#,#succ#,*#,*'#,+#,+'#,COMPUTELINE#,COMPUTELINE#1#,COMPUTELINE#2#,LINEMULT#,LINEMULT#1# ,LINEMULT#2#,MATRIXMULT#,MATRIXMULT#1#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1# ,lineMult#2#,matrixMult#,matrixMult#1#} and constructors {#0,#neg,#pos,#s,::,c,c1,c10,c11,c12,c13,c14,c15 ,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c4 ,c40,c41,c5,c6,c7,c8,c9,nil} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown, timeBCUB = Unknown, timeBCLB = Unknown}} + Details: () *** Step 7.b:4.b:1: RemoveWeakSuffixes. WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) - Signature: {#ADD/2,#MULT/2,#NATMULT/2,#PRED/1,#SUCC/1,#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,*'/2,+/2,+'/2 ,COMPUTELINE/3,COMPUTELINE#1/3,COMPUTELINE#2/4,LINEMULT/3,LINEMULT#1/3,LINEMULT#2/4,MATRIXMULT/2 ,MATRIXMULT#1/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4 ,matrixMult/2,matrixMult#1/2,#ADD#/2,#MULT#/2,#NATMULT#/2,#PRED#/1,#SUCC#/1,#add#/2,#mult#/2,#natmult#/2 ,#pred#/1,#succ#/1,*#/2,*'#/2,+#/2,+'#/2,COMPUTELINE#/3,COMPUTELINE#1#/3,COMPUTELINE#2#/4,LINEMULT#/3 ,LINEMULT#1#/3,LINEMULT#2#/4,MATRIXMULT#/2,MATRIXMULT#1#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4 ,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,c/0 ,c1/1,c10/1,c11/0,c12/1,c13/1,c14/0,c15/2,c16/0,c17/0,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/0,c24/1,c25/1 ,c26/1,c27/1,c28/0,c29/2,c3/1,c30/0,c31/1,c32/1,c33/0,c34/2,c35/1,c36/1,c37/1,c38/1,c39/1,c4/2,c40/1,c41/0 ,c5/0,c6/0,c7/0,c8/0,c9/1,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/2,c_12/1 ,c_13/1,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2,c_22/1,c_23/2,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/2,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0,c_42/0 ,c_43/0,c_44/1,c_45/1,c_46/1,c_47/1,c_48/0,c_49/0,c_50/0,c_51/0,c_52/1,c_53/1,c_54/0,c_55/1,c_56/1,c_57/0 ,c_58/1,c_59/0,c_60/0,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0,c_67/1,c_68/1,c_69/1,c_70/1,c_71/0,c_72/1 ,c_73/0,c_74/1,c_75/1,c_76/0,c_77/2,c_78/2,c_79/1,c_80/2,c_81/0} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#MULT#,#NATMULT#,#PRED#,#SUCC#,#add#,#mult# ,#natmult#,#pred#,#succ#,*#,*'#,+#,+'#,COMPUTELINE#,COMPUTELINE#1#,COMPUTELINE#2#,LINEMULT#,LINEMULT#1# ,LINEMULT#2#,MATRIXMULT#,MATRIXMULT#1#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1# ,lineMult#2#,matrixMult#,matrixMult#1#} and constructors {#0,#neg,#pos,#s,::,c,c1,c10,c11,c12,c13,c14,c15 ,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c4 ,c40,c41,c5,c6,c7,c8,c9,nil} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:W:MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) -->_1 MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)):2 2:W:MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) -->_1 MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)):1 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 1: MATRIXMULT#(z0,z1) -> c_15(MATRIXMULT#1#(z0,z1)) 2: MATRIXMULT#1#(::(z0,z1),z2) -> c_17(MATRIXMULT#(z1,z2)) *** Step 7.b:4.b:2: EmptyProcessor. WORST_CASE(?,O(1)) + Considered Problem: - Signature: {#ADD/2,#MULT/2,#NATMULT/2,#PRED/1,#SUCC/1,#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,*'/2,+/2,+'/2 ,COMPUTELINE/3,COMPUTELINE#1/3,COMPUTELINE#2/4,LINEMULT/3,LINEMULT#1/3,LINEMULT#2/4,MATRIXMULT/2 ,MATRIXMULT#1/2,computeLine/3,computeLine#1/3,computeLine#2/4,lineMult/3,lineMult#1/3,lineMult#2/4 ,matrixMult/2,matrixMult#1/2,#ADD#/2,#MULT#/2,#NATMULT#/2,#PRED#/1,#SUCC#/1,#add#/2,#mult#/2,#natmult#/2 ,#pred#/1,#succ#/1,*#/2,*'#/2,+#/2,+'#/2,COMPUTELINE#/3,COMPUTELINE#1#/3,COMPUTELINE#2#/4,LINEMULT#/3 ,LINEMULT#1#/3,LINEMULT#2#/4,MATRIXMULT#/2,MATRIXMULT#1#/2,computeLine#/3,computeLine#1#/3,computeLine#2#/4 ,lineMult#/3,lineMult#1#/3,lineMult#2#/4,matrixMult#/2,matrixMult#1#/2} / {#0/0,#neg/1,#pos/1,#s/1,::/2,c/0 ,c1/1,c10/1,c11/0,c12/1,c13/1,c14/0,c15/2,c16/0,c17/0,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/0,c24/1,c25/1 ,c26/1,c27/1,c28/0,c29/2,c3/1,c30/0,c31/1,c32/1,c33/0,c34/2,c35/1,c36/1,c37/1,c38/1,c39/1,c4/2,c40/1,c41/0 ,c5/0,c6/0,c7/0,c8/0,c9/1,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/0,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/2,c_12/1 ,c_13/1,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2,c_22/1,c_23/2,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/2,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0,c_42/0 ,c_43/0,c_44/1,c_45/1,c_46/1,c_47/1,c_48/0,c_49/0,c_50/0,c_51/0,c_52/1,c_53/1,c_54/0,c_55/1,c_56/1,c_57/0 ,c_58/1,c_59/0,c_60/0,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0,c_67/1,c_68/1,c_69/1,c_70/1,c_71/0,c_72/1 ,c_73/0,c_74/1,c_75/1,c_76/0,c_77/2,c_78/2,c_79/1,c_80/2,c_81/0} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#MULT#,#NATMULT#,#PRED#,#SUCC#,#add#,#mult# ,#natmult#,#pred#,#succ#,*#,*'#,+#,+'#,COMPUTELINE#,COMPUTELINE#1#,COMPUTELINE#2#,LINEMULT#,LINEMULT#1# ,LINEMULT#2#,MATRIXMULT#,MATRIXMULT#1#,computeLine#,computeLine#1#,computeLine#2#,lineMult#,lineMult#1# ,lineMult#2#,matrixMult#,matrixMult#1#} and constructors {#0,#neg,#pos,#s,::,c,c1,c10,c11,c12,c13,c14,c15 ,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c4 ,c40,c41,c5,c6,c7,c8,c9,nil} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). WORST_CASE(?,O(n^1))