WORST_CASE(?,O(n^2)) * Step 1: Sum. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict TRS: #ABS(#0()) -> c15() #ABS(#neg(z0)) -> c16() #ABS(#pos(z0)) -> c17() #ABS(#s(z0)) -> c18() #GREATER(z0,z1) -> c19(#CKGT(#compare(z0,z1)),#COMPARE(z0,z1)) APPEND(z0,z1) -> c20(APPEND#1(z0,z1)) APPEND#1(::(z0,z1),z2) -> c21(APPEND(z1,z2)) APPEND#1(nil(),z0) -> c22() APPENDD(z0,z1) -> c23(APPENDD#1(z0,z1)) APPENDD#1(::(z0,z1),z2) -> c24(APPENDD(z1,z2)) APPENDD#1(nil(),z0) -> c25() QUICKSORT(z0) -> c26(QUICKSORT#1(z0)) QUICKSORT#1(::(z0,z1)) -> c27(QUICKSORT#2(split(z0,z1),z0),SPLIT(z0,z1)) QUICKSORT#1(nil()) -> c28() QUICKSORT#2(tuple#2(z0,z1),z2) -> c29(APPEND(quicksort(z0),::(z2,quicksort(z1))),QUICKSORT(z0)) QUICKSORT#2(tuple#2(z0,z1),z2) -> c30(APPEND(quicksort(z0),::(z2,quicksort(z1))),QUICKSORT(z1)) QUICKSORTD(z0) -> c31(QUICKSORTD#1(z0)) QUICKSORTD#1(::(z0,z1)) -> c32(QUICKSORTD#2(splitD(z0,z1),z0),SPLITD(z0,z1)) QUICKSORTD#1(nil()) -> c33() QUICKSORTD#2(tuple#2(z0,z1),z2) -> c34(APPENDD(quicksortD(z0),::(z2,quicksortD(z1))),QUICKSORTD(z0)) QUICKSORTD#2(tuple#2(z0,z1),z2) -> c35(APPENDD(quicksortD(z0),::(z2,quicksortD(z1))),QUICKSORTD(z1)) SPLIT(z0,z1) -> c36(SPLIT#1(z1,z0)) SPLIT#1(::(z0,z1),z2) -> c37(SPLIT#2(split(z2,z1),z2,z0),SPLIT(z2,z1)) SPLIT#1(nil(),z0) -> c38() SPLIT#2(tuple#2(z0,z1),z2,z3) -> c39(SPLIT#3(#greater(z3,z2),z0,z1,z3),#GREATER(z3,z2)) SPLIT#3(#false(),z0,z1,z2) -> c40() SPLIT#3(#true(),z0,z1,z2) -> c41() SPLITD(z0,z1) -> c42(SPLITD#1(z1,z0)) SPLITD#1(::(z0,z1),z2) -> c43(SPLITD#2(splitD(z2,z1),z2,z0),SPLITD(z2,z1)) SPLITD#1(nil(),z0) -> c44() SPLITD#2(tuple#2(z0,z1),z2,z3) -> c45(SPLITD#3(#greater(z3,z2),z0,z1,z3),#GREATER(z3,z2)) SPLITD#3(#false(),z0,z1,z2) -> c46() SPLITD#3(#true(),z0,z1,z2) -> c47() TESTLIST(z0) -> c48(#ABS(#0())) TESTLIST(z0) -> c49(#ABS(#pos(#s(#s(#s(#s(#0()))))))) TESTLIST(z0) -> c50(#ABS(#pos(#s(#s(#s(#s(#s(#0())))))))) TESTLIST(z0) -> c51(#ABS(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))))) TESTLIST(z0) -> c52(#ABS(#pos(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) TESTLIST(z0) -> c53(#ABS(#pos(#s(#0())))) TESTLIST(z0) -> c54(#ABS(#pos(#s(#s(#0()))))) TESTLIST(z0) -> c55(#ABS(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) TESTLIST(z0) -> c56(#ABS(#pos(#s(#s(#s(#s(#s(#s(#0()))))))))) TESTLIST(z0) -> c57(#ABS(#pos(#s(#s(#s(#0())))))) TESTQUICKSORT(z0) -> c58(QUICKSORT(testList(#unit())),TESTLIST(#unit())) TESTQUICKSORT2(z0) -> c59(QUICKSORT(testList(#unit())),TESTLIST(#unit())) - Weak TRS: #CKGT(#EQ()) -> c() #CKGT(#GT()) -> c1() #CKGT(#LT()) -> c2() #COMPARE(#0(),#0()) -> c3() #COMPARE(#0(),#neg(z0)) -> c4() #COMPARE(#0(),#pos(z0)) -> c5() #COMPARE(#0(),#s(z0)) -> c6() #COMPARE(#neg(z0),#0()) -> c7() #COMPARE(#neg(z0),#neg(z1)) -> c8(#COMPARE(z1,z0)) #COMPARE(#neg(z0),#pos(z1)) -> c9() #COMPARE(#pos(z0),#0()) -> c10() #COMPARE(#pos(z0),#neg(z1)) -> c11() #COMPARE(#pos(z0),#pos(z1)) -> c12(#COMPARE(z0,z1)) #COMPARE(#s(z0),#0()) -> c13() #COMPARE(#s(z0),#s(z1)) -> c14(#COMPARE(z0,z1)) #abs(#0()) -> #0() #abs(#neg(z0)) -> #pos(z0) #abs(#pos(z0)) -> #pos(z0) #abs(#s(z0)) -> #pos(#s(z0)) #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(z0)) -> #GT() #compare(#0(),#pos(z0)) -> #LT() #compare(#0(),#s(z0)) -> #LT() #compare(#neg(z0),#0()) -> #LT() #compare(#neg(z0),#neg(z1)) -> #compare(z1,z0) #compare(#neg(z0),#pos(z1)) -> #LT() #compare(#pos(z0),#0()) -> #GT() #compare(#pos(z0),#neg(z1)) -> #GT() #compare(#pos(z0),#pos(z1)) -> #compare(z0,z1) #compare(#s(z0),#0()) -> #GT() #compare(#s(z0),#s(z1)) -> #compare(z0,z1) #greater(z0,z1) -> #ckgt(#compare(z0,z1)) append(z0,z1) -> append#1(z0,z1) append#1(::(z0,z1),z2) -> ::(z0,append(z1,z2)) append#1(nil(),z0) -> z0 appendD(z0,z1) -> appendD#1(z0,z1) appendD#1(::(z0,z1),z2) -> ::(z0,appendD(z1,z2)) appendD#1(nil(),z0) -> z0 quicksort(z0) -> quicksort#1(z0) quicksort#1(::(z0,z1)) -> quicksort#2(split(z0,z1),z0) quicksort#1(nil()) -> nil() quicksort#2(tuple#2(z0,z1),z2) -> append(quicksort(z0),::(z2,quicksort(z1))) quicksortD(z0) -> quicksortD#1(z0) quicksortD#1(::(z0,z1)) -> quicksortD#2(splitD(z0,z1),z0) quicksortD#1(nil()) -> nil() quicksortD#2(tuple#2(z0,z1),z2) -> appendD(quicksortD(z0),::(z2,quicksortD(z1))) split(z0,z1) -> split#1(z1,z0) split#1(::(z0,z1),z2) -> split#2(split(z2,z1),z2,z0) split#1(nil(),z0) -> tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) -> split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) splitD(z0,z1) -> splitD#1(z1,z0) splitD#1(::(z0,z1),z2) -> splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) -> tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) -> splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) testList(z0) -> ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) testQuicksort(z0) -> quicksort(testList(#unit())) testQuicksort2(z0) -> quicksort(testList(#unit())) - Signature: {#ABS/1,#CKGT/1,#COMPARE/2,#GREATER/2,#abs/1,#ckgt/1,#compare/2,#greater/2,APPEND/2,APPEND#1/2,APPENDD/2 ,APPENDD#1/2,QUICKSORT/1,QUICKSORT#1/1,QUICKSORT#2/2,QUICKSORTD/1,QUICKSORTD#1/1,QUICKSORTD#2/2,SPLIT/2 ,SPLIT#1/2,SPLIT#2/3,SPLIT#3/4,SPLITD/2,SPLITD#1/2,SPLITD#2/3,SPLITD#3/4,TESTLIST/1,TESTQUICKSORT/1 ,TESTQUICKSORT2/1,append/2,append#1/2,appendD/2,appendD#1/2,quicksort/1,quicksort#1/1,quicksort#2/2 ,quicksortD/1,quicksortD#1/1,quicksortD#2/2,split/2,split#1/2,split#2/3,split#3/4,splitD/2,splitD#1/2 ,splitD#2/3,splitD#3/4,testList/1,testQuicksort/1,testQuicksort2/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0 ,#neg/1,#pos/1,#s/1,#true/0,#unit/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/0,c16/0,c17/0,c18/0 ,c19/2,c2/0,c20/1,c21/1,c22/0,c23/1,c24/1,c25/0,c26/1,c27/2,c28/0,c29/2,c3/0,c30/2,c31/1,c32/2,c33/0,c34/2 ,c35/2,c36/1,c37/2,c38/0,c39/2,c4/0,c40/0,c41/0,c42/1,c43/2,c44/0,c45/2,c46/0,c47/0,c48/1,c49/1,c5/0,c50/1 ,c51/1,c52/1,c53/1,c54/1,c55/1,c56/1,c57/1,c58/2,c59/2,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2} - Obligation: innermost runtime complexity wrt. defined symbols {#ABS,#CKGT,#COMPARE,#GREATER,#abs,#ckgt,#compare,#greater ,APPEND,APPEND#1,APPENDD,APPENDD#1,QUICKSORT,QUICKSORT#1,QUICKSORT#2,QUICKSORTD,QUICKSORTD#1,QUICKSORTD#2 ,SPLIT,SPLIT#1,SPLIT#2,SPLIT#3,SPLITD,SPLITD#1,SPLITD#2,SPLITD#3,TESTLIST,TESTQUICKSORT,TESTQUICKSORT2 ,append,append#1,appendD,appendD#1,quicksort,quicksort#1,quicksort#2,quicksortD,quicksortD#1,quicksortD#2 ,split,split#1,split#2,split#3,splitD,splitD#1,splitD#2,splitD#3,testList,testQuicksort ,testQuicksort2} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,#unit,::,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,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52,c53,c54,c55,c56,c57,c58,c59,c6,c7,c8,c9,nil ,tuple#2} + Applied Processor: Sum {left = someStrategy, right = someStrategy} + Details: () * Step 2: DependencyPairs. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict TRS: #ABS(#0()) -> c15() #ABS(#neg(z0)) -> c16() #ABS(#pos(z0)) -> c17() #ABS(#s(z0)) -> c18() #GREATER(z0,z1) -> c19(#CKGT(#compare(z0,z1)),#COMPARE(z0,z1)) APPEND(z0,z1) -> c20(APPEND#1(z0,z1)) APPEND#1(::(z0,z1),z2) -> c21(APPEND(z1,z2)) APPEND#1(nil(),z0) -> c22() APPENDD(z0,z1) -> c23(APPENDD#1(z0,z1)) APPENDD#1(::(z0,z1),z2) -> c24(APPENDD(z1,z2)) APPENDD#1(nil(),z0) -> c25() QUICKSORT(z0) -> c26(QUICKSORT#1(z0)) QUICKSORT#1(::(z0,z1)) -> c27(QUICKSORT#2(split(z0,z1),z0),SPLIT(z0,z1)) QUICKSORT#1(nil()) -> c28() QUICKSORT#2(tuple#2(z0,z1),z2) -> c29(APPEND(quicksort(z0),::(z2,quicksort(z1))),QUICKSORT(z0)) QUICKSORT#2(tuple#2(z0,z1),z2) -> c30(APPEND(quicksort(z0),::(z2,quicksort(z1))),QUICKSORT(z1)) QUICKSORTD(z0) -> c31(QUICKSORTD#1(z0)) QUICKSORTD#1(::(z0,z1)) -> c32(QUICKSORTD#2(splitD(z0,z1),z0),SPLITD(z0,z1)) QUICKSORTD#1(nil()) -> c33() QUICKSORTD#2(tuple#2(z0,z1),z2) -> c34(APPENDD(quicksortD(z0),::(z2,quicksortD(z1))),QUICKSORTD(z0)) QUICKSORTD#2(tuple#2(z0,z1),z2) -> c35(APPENDD(quicksortD(z0),::(z2,quicksortD(z1))),QUICKSORTD(z1)) SPLIT(z0,z1) -> c36(SPLIT#1(z1,z0)) SPLIT#1(::(z0,z1),z2) -> c37(SPLIT#2(split(z2,z1),z2,z0),SPLIT(z2,z1)) SPLIT#1(nil(),z0) -> c38() SPLIT#2(tuple#2(z0,z1),z2,z3) -> c39(SPLIT#3(#greater(z3,z2),z0,z1,z3),#GREATER(z3,z2)) SPLIT#3(#false(),z0,z1,z2) -> c40() SPLIT#3(#true(),z0,z1,z2) -> c41() SPLITD(z0,z1) -> c42(SPLITD#1(z1,z0)) SPLITD#1(::(z0,z1),z2) -> c43(SPLITD#2(splitD(z2,z1),z2,z0),SPLITD(z2,z1)) SPLITD#1(nil(),z0) -> c44() SPLITD#2(tuple#2(z0,z1),z2,z3) -> c45(SPLITD#3(#greater(z3,z2),z0,z1,z3),#GREATER(z3,z2)) SPLITD#3(#false(),z0,z1,z2) -> c46() SPLITD#3(#true(),z0,z1,z2) -> c47() TESTLIST(z0) -> c48(#ABS(#0())) TESTLIST(z0) -> c49(#ABS(#pos(#s(#s(#s(#s(#0()))))))) TESTLIST(z0) -> c50(#ABS(#pos(#s(#s(#s(#s(#s(#0())))))))) TESTLIST(z0) -> c51(#ABS(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))))) TESTLIST(z0) -> c52(#ABS(#pos(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) TESTLIST(z0) -> c53(#ABS(#pos(#s(#0())))) TESTLIST(z0) -> c54(#ABS(#pos(#s(#s(#0()))))) TESTLIST(z0) -> c55(#ABS(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) TESTLIST(z0) -> c56(#ABS(#pos(#s(#s(#s(#s(#s(#s(#0()))))))))) TESTLIST(z0) -> c57(#ABS(#pos(#s(#s(#s(#0())))))) TESTQUICKSORT(z0) -> c58(QUICKSORT(testList(#unit())),TESTLIST(#unit())) TESTQUICKSORT2(z0) -> c59(QUICKSORT(testList(#unit())),TESTLIST(#unit())) - Weak TRS: #CKGT(#EQ()) -> c() #CKGT(#GT()) -> c1() #CKGT(#LT()) -> c2() #COMPARE(#0(),#0()) -> c3() #COMPARE(#0(),#neg(z0)) -> c4() #COMPARE(#0(),#pos(z0)) -> c5() #COMPARE(#0(),#s(z0)) -> c6() #COMPARE(#neg(z0),#0()) -> c7() #COMPARE(#neg(z0),#neg(z1)) -> c8(#COMPARE(z1,z0)) #COMPARE(#neg(z0),#pos(z1)) -> c9() #COMPARE(#pos(z0),#0()) -> c10() #COMPARE(#pos(z0),#neg(z1)) -> c11() #COMPARE(#pos(z0),#pos(z1)) -> c12(#COMPARE(z0,z1)) #COMPARE(#s(z0),#0()) -> c13() #COMPARE(#s(z0),#s(z1)) -> c14(#COMPARE(z0,z1)) #abs(#0()) -> #0() #abs(#neg(z0)) -> #pos(z0) #abs(#pos(z0)) -> #pos(z0) #abs(#s(z0)) -> #pos(#s(z0)) #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(z0)) -> #GT() #compare(#0(),#pos(z0)) -> #LT() #compare(#0(),#s(z0)) -> #LT() #compare(#neg(z0),#0()) -> #LT() #compare(#neg(z0),#neg(z1)) -> #compare(z1,z0) #compare(#neg(z0),#pos(z1)) -> #LT() #compare(#pos(z0),#0()) -> #GT() #compare(#pos(z0),#neg(z1)) -> #GT() #compare(#pos(z0),#pos(z1)) -> #compare(z0,z1) #compare(#s(z0),#0()) -> #GT() #compare(#s(z0),#s(z1)) -> #compare(z0,z1) #greater(z0,z1) -> #ckgt(#compare(z0,z1)) append(z0,z1) -> append#1(z0,z1) append#1(::(z0,z1),z2) -> ::(z0,append(z1,z2)) append#1(nil(),z0) -> z0 appendD(z0,z1) -> appendD#1(z0,z1) appendD#1(::(z0,z1),z2) -> ::(z0,appendD(z1,z2)) appendD#1(nil(),z0) -> z0 quicksort(z0) -> quicksort#1(z0) quicksort#1(::(z0,z1)) -> quicksort#2(split(z0,z1),z0) quicksort#1(nil()) -> nil() quicksort#2(tuple#2(z0,z1),z2) -> append(quicksort(z0),::(z2,quicksort(z1))) quicksortD(z0) -> quicksortD#1(z0) quicksortD#1(::(z0,z1)) -> quicksortD#2(splitD(z0,z1),z0) quicksortD#1(nil()) -> nil() quicksortD#2(tuple#2(z0,z1),z2) -> appendD(quicksortD(z0),::(z2,quicksortD(z1))) split(z0,z1) -> split#1(z1,z0) split#1(::(z0,z1),z2) -> split#2(split(z2,z1),z2,z0) split#1(nil(),z0) -> tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) -> split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) splitD(z0,z1) -> splitD#1(z1,z0) splitD#1(::(z0,z1),z2) -> splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) -> tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) -> splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) testList(z0) -> ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) testQuicksort(z0) -> quicksort(testList(#unit())) testQuicksort2(z0) -> quicksort(testList(#unit())) - Signature: {#ABS/1,#CKGT/1,#COMPARE/2,#GREATER/2,#abs/1,#ckgt/1,#compare/2,#greater/2,APPEND/2,APPEND#1/2,APPENDD/2 ,APPENDD#1/2,QUICKSORT/1,QUICKSORT#1/1,QUICKSORT#2/2,QUICKSORTD/1,QUICKSORTD#1/1,QUICKSORTD#2/2,SPLIT/2 ,SPLIT#1/2,SPLIT#2/3,SPLIT#3/4,SPLITD/2,SPLITD#1/2,SPLITD#2/3,SPLITD#3/4,TESTLIST/1,TESTQUICKSORT/1 ,TESTQUICKSORT2/1,append/2,append#1/2,appendD/2,appendD#1/2,quicksort/1,quicksort#1/1,quicksort#2/2 ,quicksortD/1,quicksortD#1/1,quicksortD#2/2,split/2,split#1/2,split#2/3,split#3/4,splitD/2,splitD#1/2 ,splitD#2/3,splitD#3/4,testList/1,testQuicksort/1,testQuicksort2/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0 ,#neg/1,#pos/1,#s/1,#true/0,#unit/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/0,c16/0,c17/0,c18/0 ,c19/2,c2/0,c20/1,c21/1,c22/0,c23/1,c24/1,c25/0,c26/1,c27/2,c28/0,c29/2,c3/0,c30/2,c31/1,c32/2,c33/0,c34/2 ,c35/2,c36/1,c37/2,c38/0,c39/2,c4/0,c40/0,c41/0,c42/1,c43/2,c44/0,c45/2,c46/0,c47/0,c48/1,c49/1,c5/0,c50/1 ,c51/1,c52/1,c53/1,c54/1,c55/1,c56/1,c57/1,c58/2,c59/2,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2} - Obligation: innermost runtime complexity wrt. defined symbols {#ABS,#CKGT,#COMPARE,#GREATER,#abs,#ckgt,#compare,#greater ,APPEND,APPEND#1,APPENDD,APPENDD#1,QUICKSORT,QUICKSORT#1,QUICKSORT#2,QUICKSORTD,QUICKSORTD#1,QUICKSORTD#2 ,SPLIT,SPLIT#1,SPLIT#2,SPLIT#3,SPLITD,SPLITD#1,SPLITD#2,SPLITD#3,TESTLIST,TESTQUICKSORT,TESTQUICKSORT2 ,append,append#1,appendD,appendD#1,quicksort,quicksort#1,quicksort#2,quicksortD,quicksortD#1,quicksortD#2 ,split,split#1,split#2,split#3,splitD,splitD#1,splitD#2,splitD#3,testList,testQuicksort ,testQuicksort2} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,#unit,::,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,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52,c53,c54,c55,c56,c57,c58,c59,c6,c7,c8,c9,nil ,tuple#2} + Applied Processor: DependencyPairs {dpKind_ = DT} + Details: We add the following dependency tuples: Strict DPs #ABS#(#0()) -> c_1() #ABS#(#neg(z0)) -> c_2() #ABS#(#pos(z0)) -> c_3() #ABS#(#s(z0)) -> c_4() #GREATER#(z0,z1) -> c_5(#CKGT#(#compare(z0,z1)),#compare#(z0,z1),#COMPARE#(z0,z1)) APPEND#(z0,z1) -> c_6(APPEND#1#(z0,z1)) APPEND#1#(::(z0,z1),z2) -> c_7(APPEND#(z1,z2)) APPEND#1#(nil(),z0) -> c_8() APPENDD#(z0,z1) -> c_9(APPENDD#1#(z0,z1)) APPENDD#1#(::(z0,z1),z2) -> c_10(APPENDD#(z1,z2)) APPENDD#1#(nil(),z0) -> c_11() QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)) QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0),split#(z0,z1),SPLIT#(z0,z1)) QUICKSORT#1#(nil()) -> c_14() QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(APPEND#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1) ,QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(APPEND#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1) ,QUICKSORT#(z1)) QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)) QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0),splitD#(z0,z1),SPLITD#(z0,z1)) QUICKSORTD#1#(nil()) -> c_19() QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1) ,QUICKSORTD#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1) ,QUICKSORTD#(z1)) SPLIT#(z0,z1) -> c_22(SPLIT#1#(z1,z0)) SPLIT#1#(::(z0,z1),z2) -> c_23(SPLIT#2#(split(z2,z1),z2,z0),split#(z2,z1),SPLIT#(z2,z1)) SPLIT#1#(nil(),z0) -> c_24() SPLIT#2#(tuple#2(z0,z1),z2,z3) -> c_25(SPLIT#3#(#greater(z3,z2),z0,z1,z3),#greater#(z3,z2),#GREATER#(z3,z2)) SPLIT#3#(#false(),z0,z1,z2) -> c_26() SPLIT#3#(#true(),z0,z1,z2) -> c_27() SPLITD#(z0,z1) -> c_28(SPLITD#1#(z1,z0)) SPLITD#1#(::(z0,z1),z2) -> c_29(SPLITD#2#(splitD(z2,z1),z2,z0),splitD#(z2,z1),SPLITD#(z2,z1)) SPLITD#1#(nil(),z0) -> c_30() SPLITD#2#(tuple#2(z0,z1),z2,z3) -> c_31(SPLITD#3#(#greater(z3,z2),z0,z1,z3) ,#greater#(z3,z2) ,#GREATER#(z3,z2)) SPLITD#3#(#false(),z0,z1,z2) -> c_32() SPLITD#3#(#true(),z0,z1,z2) -> c_33() TESTLIST#(z0) -> c_34(#ABS#(#0())) TESTLIST#(z0) -> c_35(#ABS#(#pos(#s(#s(#s(#s(#0()))))))) TESTLIST#(z0) -> c_36(#ABS#(#pos(#s(#s(#s(#s(#s(#0())))))))) TESTLIST#(z0) -> c_37(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))))) TESTLIST#(z0) -> c_38(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) TESTLIST#(z0) -> c_39(#ABS#(#pos(#s(#0())))) TESTLIST#(z0) -> c_40(#ABS#(#pos(#s(#s(#0()))))) TESTLIST#(z0) -> c_41(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) TESTLIST#(z0) -> c_42(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#0()))))))))) TESTLIST#(z0) -> c_43(#ABS#(#pos(#s(#s(#s(#0())))))) TESTQUICKSORT#(z0) -> c_44(QUICKSORT#(testList(#unit())),testList#(#unit()),TESTLIST#(#unit())) TESTQUICKSORT2#(z0) -> c_45(QUICKSORT#(testList(#unit())),testList#(#unit()),TESTLIST#(#unit())) Weak DPs #CKGT#(#EQ()) -> c_46() #CKGT#(#GT()) -> c_47() #CKGT#(#LT()) -> c_48() #COMPARE#(#0(),#0()) -> c_49() #COMPARE#(#0(),#neg(z0)) -> c_50() #COMPARE#(#0(),#pos(z0)) -> c_51() #COMPARE#(#0(),#s(z0)) -> c_52() #COMPARE#(#neg(z0),#0()) -> c_53() #COMPARE#(#neg(z0),#neg(z1)) -> c_54(#COMPARE#(z1,z0)) #COMPARE#(#neg(z0),#pos(z1)) -> c_55() #COMPARE#(#pos(z0),#0()) -> c_56() #COMPARE#(#pos(z0),#neg(z1)) -> c_57() #COMPARE#(#pos(z0),#pos(z1)) -> c_58(#COMPARE#(z0,z1)) #COMPARE#(#s(z0),#0()) -> c_59() #COMPARE#(#s(z0),#s(z1)) -> c_60(#COMPARE#(z0,z1)) #abs#(#0()) -> c_61() #abs#(#neg(z0)) -> c_62() #abs#(#pos(z0)) -> c_63() #abs#(#s(z0)) -> c_64() #ckgt#(#EQ()) -> c_65() #ckgt#(#GT()) -> c_66() #ckgt#(#LT()) -> c_67() #compare#(#0(),#0()) -> c_68() #compare#(#0(),#neg(z0)) -> c_69() #compare#(#0(),#pos(z0)) -> c_70() #compare#(#0(),#s(z0)) -> c_71() #compare#(#neg(z0),#0()) -> c_72() #compare#(#neg(z0),#neg(z1)) -> c_73(#compare#(z1,z0)) #compare#(#neg(z0),#pos(z1)) -> c_74() #compare#(#pos(z0),#0()) -> c_75() #compare#(#pos(z0),#neg(z1)) -> c_76() #compare#(#pos(z0),#pos(z1)) -> c_77(#compare#(z0,z1)) #compare#(#s(z0),#0()) -> c_78() #compare#(#s(z0),#s(z1)) -> c_79(#compare#(z0,z1)) #greater#(z0,z1) -> c_80(#ckgt#(#compare(z0,z1)),#compare#(z0,z1)) append#(z0,z1) -> c_81(append#1#(z0,z1)) append#1#(::(z0,z1),z2) -> c_82(append#(z1,z2)) append#1#(nil(),z0) -> c_83() appendD#(z0,z1) -> c_84(appendD#1#(z0,z1)) appendD#1#(::(z0,z1),z2) -> c_85(appendD#(z1,z2)) appendD#1#(nil(),z0) -> c_86() quicksort#(z0) -> c_87(quicksort#1#(z0)) quicksort#1#(::(z0,z1)) -> c_88(quicksort#2#(split(z0,z1),z0),split#(z0,z1)) quicksort#1#(nil()) -> c_89() quicksort#2#(tuple#2(z0,z1),z2) -> c_90(append#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1)) quicksortD#(z0) -> c_91(quicksortD#1#(z0)) quicksortD#1#(::(z0,z1)) -> c_92(quicksortD#2#(splitD(z0,z1),z0),splitD#(z0,z1)) quicksortD#1#(nil()) -> c_93() quicksortD#2#(tuple#2(z0,z1),z2) -> c_94(appendD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1)) split#(z0,z1) -> c_95(split#1#(z1,z0)) split#1#(::(z0,z1),z2) -> c_96(split#2#(split(z2,z1),z2,z0),split#(z2,z1)) split#1#(nil(),z0) -> c_97() split#2#(tuple#2(z0,z1),z2,z3) -> c_98(split#3#(#greater(z3,z2),z0,z1,z3),#greater#(z3,z2)) split#3#(#false(),z0,z1,z2) -> c_99() split#3#(#true(),z0,z1,z2) -> c_100() splitD#(z0,z1) -> c_101(splitD#1#(z1,z0)) splitD#1#(::(z0,z1),z2) -> c_102(splitD#2#(splitD(z2,z1),z2,z0),splitD#(z2,z1)) splitD#1#(nil(),z0) -> c_103() splitD#2#(tuple#2(z0,z1),z2,z3) -> c_104(splitD#3#(#greater(z3,z2),z0,z1,z3),#greater#(z3,z2)) splitD#3#(#false(),z0,z1,z2) -> c_105() splitD#3#(#true(),z0,z1,z2) -> c_106() testList#(z0) -> c_107(#abs#(#0()) ,#abs#(#pos(#s(#s(#s(#s(#0())))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#0()))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,#abs#(#pos(#s(#0()))) ,#abs#(#pos(#s(#s(#0())))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,#abs#(#pos(#s(#s(#s(#0())))))) testQuicksort#(z0) -> c_108(quicksort#(testList(#unit())),testList#(#unit())) testQuicksort2#(z0) -> c_109(quicksort#(testList(#unit())),testList#(#unit())) and mark the set of starting terms. * Step 3: PredecessorEstimation. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: #ABS#(#0()) -> c_1() #ABS#(#neg(z0)) -> c_2() #ABS#(#pos(z0)) -> c_3() #ABS#(#s(z0)) -> c_4() #GREATER#(z0,z1) -> c_5(#CKGT#(#compare(z0,z1)),#compare#(z0,z1),#COMPARE#(z0,z1)) APPEND#(z0,z1) -> c_6(APPEND#1#(z0,z1)) APPEND#1#(::(z0,z1),z2) -> c_7(APPEND#(z1,z2)) APPEND#1#(nil(),z0) -> c_8() APPENDD#(z0,z1) -> c_9(APPENDD#1#(z0,z1)) APPENDD#1#(::(z0,z1),z2) -> c_10(APPENDD#(z1,z2)) APPENDD#1#(nil(),z0) -> c_11() QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)) QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0),split#(z0,z1),SPLIT#(z0,z1)) QUICKSORT#1#(nil()) -> c_14() QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(APPEND#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1) ,QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(APPEND#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1) ,QUICKSORT#(z1)) QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)) QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0),splitD#(z0,z1),SPLITD#(z0,z1)) QUICKSORTD#1#(nil()) -> c_19() QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1) ,QUICKSORTD#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1) ,QUICKSORTD#(z1)) SPLIT#(z0,z1) -> c_22(SPLIT#1#(z1,z0)) SPLIT#1#(::(z0,z1),z2) -> c_23(SPLIT#2#(split(z2,z1),z2,z0),split#(z2,z1),SPLIT#(z2,z1)) SPLIT#1#(nil(),z0) -> c_24() SPLIT#2#(tuple#2(z0,z1),z2,z3) -> c_25(SPLIT#3#(#greater(z3,z2),z0,z1,z3),#greater#(z3,z2),#GREATER#(z3,z2)) SPLIT#3#(#false(),z0,z1,z2) -> c_26() SPLIT#3#(#true(),z0,z1,z2) -> c_27() SPLITD#(z0,z1) -> c_28(SPLITD#1#(z1,z0)) SPLITD#1#(::(z0,z1),z2) -> c_29(SPLITD#2#(splitD(z2,z1),z2,z0),splitD#(z2,z1),SPLITD#(z2,z1)) SPLITD#1#(nil(),z0) -> c_30() SPLITD#2#(tuple#2(z0,z1),z2,z3) -> c_31(SPLITD#3#(#greater(z3,z2),z0,z1,z3) ,#greater#(z3,z2) ,#GREATER#(z3,z2)) SPLITD#3#(#false(),z0,z1,z2) -> c_32() SPLITD#3#(#true(),z0,z1,z2) -> c_33() TESTLIST#(z0) -> c_34(#ABS#(#0())) TESTLIST#(z0) -> c_35(#ABS#(#pos(#s(#s(#s(#s(#0()))))))) TESTLIST#(z0) -> c_36(#ABS#(#pos(#s(#s(#s(#s(#s(#0())))))))) TESTLIST#(z0) -> c_37(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))))) TESTLIST#(z0) -> c_38(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) TESTLIST#(z0) -> c_39(#ABS#(#pos(#s(#0())))) TESTLIST#(z0) -> c_40(#ABS#(#pos(#s(#s(#0()))))) TESTLIST#(z0) -> c_41(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) TESTLIST#(z0) -> c_42(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#0()))))))))) TESTLIST#(z0) -> c_43(#ABS#(#pos(#s(#s(#s(#0())))))) TESTQUICKSORT#(z0) -> c_44(QUICKSORT#(testList(#unit())),testList#(#unit()),TESTLIST#(#unit())) TESTQUICKSORT2#(z0) -> c_45(QUICKSORT#(testList(#unit())),testList#(#unit()),TESTLIST#(#unit())) - Weak DPs: #CKGT#(#EQ()) -> c_46() #CKGT#(#GT()) -> c_47() #CKGT#(#LT()) -> c_48() #COMPARE#(#0(),#0()) -> c_49() #COMPARE#(#0(),#neg(z0)) -> c_50() #COMPARE#(#0(),#pos(z0)) -> c_51() #COMPARE#(#0(),#s(z0)) -> c_52() #COMPARE#(#neg(z0),#0()) -> c_53() #COMPARE#(#neg(z0),#neg(z1)) -> c_54(#COMPARE#(z1,z0)) #COMPARE#(#neg(z0),#pos(z1)) -> c_55() #COMPARE#(#pos(z0),#0()) -> c_56() #COMPARE#(#pos(z0),#neg(z1)) -> c_57() #COMPARE#(#pos(z0),#pos(z1)) -> c_58(#COMPARE#(z0,z1)) #COMPARE#(#s(z0),#0()) -> c_59() #COMPARE#(#s(z0),#s(z1)) -> c_60(#COMPARE#(z0,z1)) #abs#(#0()) -> c_61() #abs#(#neg(z0)) -> c_62() #abs#(#pos(z0)) -> c_63() #abs#(#s(z0)) -> c_64() #ckgt#(#EQ()) -> c_65() #ckgt#(#GT()) -> c_66() #ckgt#(#LT()) -> c_67() #compare#(#0(),#0()) -> c_68() #compare#(#0(),#neg(z0)) -> c_69() #compare#(#0(),#pos(z0)) -> c_70() #compare#(#0(),#s(z0)) -> c_71() #compare#(#neg(z0),#0()) -> c_72() #compare#(#neg(z0),#neg(z1)) -> c_73(#compare#(z1,z0)) #compare#(#neg(z0),#pos(z1)) -> c_74() #compare#(#pos(z0),#0()) -> c_75() #compare#(#pos(z0),#neg(z1)) -> c_76() #compare#(#pos(z0),#pos(z1)) -> c_77(#compare#(z0,z1)) #compare#(#s(z0),#0()) -> c_78() #compare#(#s(z0),#s(z1)) -> c_79(#compare#(z0,z1)) #greater#(z0,z1) -> c_80(#ckgt#(#compare(z0,z1)),#compare#(z0,z1)) append#(z0,z1) -> c_81(append#1#(z0,z1)) append#1#(::(z0,z1),z2) -> c_82(append#(z1,z2)) append#1#(nil(),z0) -> c_83() appendD#(z0,z1) -> c_84(appendD#1#(z0,z1)) appendD#1#(::(z0,z1),z2) -> c_85(appendD#(z1,z2)) appendD#1#(nil(),z0) -> c_86() quicksort#(z0) -> c_87(quicksort#1#(z0)) quicksort#1#(::(z0,z1)) -> c_88(quicksort#2#(split(z0,z1),z0),split#(z0,z1)) quicksort#1#(nil()) -> c_89() quicksort#2#(tuple#2(z0,z1),z2) -> c_90(append#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1)) quicksortD#(z0) -> c_91(quicksortD#1#(z0)) quicksortD#1#(::(z0,z1)) -> c_92(quicksortD#2#(splitD(z0,z1),z0),splitD#(z0,z1)) quicksortD#1#(nil()) -> c_93() quicksortD#2#(tuple#2(z0,z1),z2) -> c_94(appendD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1)) split#(z0,z1) -> c_95(split#1#(z1,z0)) split#1#(::(z0,z1),z2) -> c_96(split#2#(split(z2,z1),z2,z0),split#(z2,z1)) split#1#(nil(),z0) -> c_97() split#2#(tuple#2(z0,z1),z2,z3) -> c_98(split#3#(#greater(z3,z2),z0,z1,z3),#greater#(z3,z2)) split#3#(#false(),z0,z1,z2) -> c_99() split#3#(#true(),z0,z1,z2) -> c_100() splitD#(z0,z1) -> c_101(splitD#1#(z1,z0)) splitD#1#(::(z0,z1),z2) -> c_102(splitD#2#(splitD(z2,z1),z2,z0),splitD#(z2,z1)) splitD#1#(nil(),z0) -> c_103() splitD#2#(tuple#2(z0,z1),z2,z3) -> c_104(splitD#3#(#greater(z3,z2),z0,z1,z3),#greater#(z3,z2)) splitD#3#(#false(),z0,z1,z2) -> c_105() splitD#3#(#true(),z0,z1,z2) -> c_106() testList#(z0) -> c_107(#abs#(#0()) ,#abs#(#pos(#s(#s(#s(#s(#0())))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#0()))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,#abs#(#pos(#s(#0()))) ,#abs#(#pos(#s(#s(#0())))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,#abs#(#pos(#s(#s(#s(#0())))))) testQuicksort#(z0) -> c_108(quicksort#(testList(#unit())),testList#(#unit())) testQuicksort2#(z0) -> c_109(quicksort#(testList(#unit())),testList#(#unit())) - Weak TRS: #ABS(#0()) -> c15() #ABS(#neg(z0)) -> c16() #ABS(#pos(z0)) -> c17() #ABS(#s(z0)) -> c18() #CKGT(#EQ()) -> c() #CKGT(#GT()) -> c1() #CKGT(#LT()) -> c2() #COMPARE(#0(),#0()) -> c3() #COMPARE(#0(),#neg(z0)) -> c4() #COMPARE(#0(),#pos(z0)) -> c5() #COMPARE(#0(),#s(z0)) -> c6() #COMPARE(#neg(z0),#0()) -> c7() #COMPARE(#neg(z0),#neg(z1)) -> c8(#COMPARE(z1,z0)) #COMPARE(#neg(z0),#pos(z1)) -> c9() #COMPARE(#pos(z0),#0()) -> c10() #COMPARE(#pos(z0),#neg(z1)) -> c11() #COMPARE(#pos(z0),#pos(z1)) -> c12(#COMPARE(z0,z1)) #COMPARE(#s(z0),#0()) -> c13() #COMPARE(#s(z0),#s(z1)) -> c14(#COMPARE(z0,z1)) #GREATER(z0,z1) -> c19(#CKGT(#compare(z0,z1)),#COMPARE(z0,z1)) #abs(#0()) -> #0() #abs(#neg(z0)) -> #pos(z0) #abs(#pos(z0)) -> #pos(z0) #abs(#s(z0)) -> #pos(#s(z0)) #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(z0)) -> #GT() #compare(#0(),#pos(z0)) -> #LT() #compare(#0(),#s(z0)) -> #LT() #compare(#neg(z0),#0()) -> #LT() #compare(#neg(z0),#neg(z1)) -> #compare(z1,z0) #compare(#neg(z0),#pos(z1)) -> #LT() #compare(#pos(z0),#0()) -> #GT() #compare(#pos(z0),#neg(z1)) -> #GT() #compare(#pos(z0),#pos(z1)) -> #compare(z0,z1) #compare(#s(z0),#0()) -> #GT() #compare(#s(z0),#s(z1)) -> #compare(z0,z1) #greater(z0,z1) -> #ckgt(#compare(z0,z1)) APPEND(z0,z1) -> c20(APPEND#1(z0,z1)) APPEND#1(::(z0,z1),z2) -> c21(APPEND(z1,z2)) APPEND#1(nil(),z0) -> c22() APPENDD(z0,z1) -> c23(APPENDD#1(z0,z1)) APPENDD#1(::(z0,z1),z2) -> c24(APPENDD(z1,z2)) APPENDD#1(nil(),z0) -> c25() QUICKSORT(z0) -> c26(QUICKSORT#1(z0)) QUICKSORT#1(::(z0,z1)) -> c27(QUICKSORT#2(split(z0,z1),z0),SPLIT(z0,z1)) QUICKSORT#1(nil()) -> c28() QUICKSORT#2(tuple#2(z0,z1),z2) -> c29(APPEND(quicksort(z0),::(z2,quicksort(z1))),QUICKSORT(z0)) QUICKSORT#2(tuple#2(z0,z1),z2) -> c30(APPEND(quicksort(z0),::(z2,quicksort(z1))),QUICKSORT(z1)) QUICKSORTD(z0) -> c31(QUICKSORTD#1(z0)) QUICKSORTD#1(::(z0,z1)) -> c32(QUICKSORTD#2(splitD(z0,z1),z0),SPLITD(z0,z1)) QUICKSORTD#1(nil()) -> c33() QUICKSORTD#2(tuple#2(z0,z1),z2) -> c34(APPENDD(quicksortD(z0),::(z2,quicksortD(z1))),QUICKSORTD(z0)) QUICKSORTD#2(tuple#2(z0,z1),z2) -> c35(APPENDD(quicksortD(z0),::(z2,quicksortD(z1))),QUICKSORTD(z1)) SPLIT(z0,z1) -> c36(SPLIT#1(z1,z0)) SPLIT#1(::(z0,z1),z2) -> c37(SPLIT#2(split(z2,z1),z2,z0),SPLIT(z2,z1)) SPLIT#1(nil(),z0) -> c38() SPLIT#2(tuple#2(z0,z1),z2,z3) -> c39(SPLIT#3(#greater(z3,z2),z0,z1,z3),#GREATER(z3,z2)) SPLIT#3(#false(),z0,z1,z2) -> c40() SPLIT#3(#true(),z0,z1,z2) -> c41() SPLITD(z0,z1) -> c42(SPLITD#1(z1,z0)) SPLITD#1(::(z0,z1),z2) -> c43(SPLITD#2(splitD(z2,z1),z2,z0),SPLITD(z2,z1)) SPLITD#1(nil(),z0) -> c44() SPLITD#2(tuple#2(z0,z1),z2,z3) -> c45(SPLITD#3(#greater(z3,z2),z0,z1,z3),#GREATER(z3,z2)) SPLITD#3(#false(),z0,z1,z2) -> c46() SPLITD#3(#true(),z0,z1,z2) -> c47() TESTLIST(z0) -> c48(#ABS(#0())) TESTLIST(z0) -> c49(#ABS(#pos(#s(#s(#s(#s(#0()))))))) TESTLIST(z0) -> c50(#ABS(#pos(#s(#s(#s(#s(#s(#0())))))))) TESTLIST(z0) -> c51(#ABS(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))))) TESTLIST(z0) -> c52(#ABS(#pos(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) TESTLIST(z0) -> c53(#ABS(#pos(#s(#0())))) TESTLIST(z0) -> c54(#ABS(#pos(#s(#s(#0()))))) TESTLIST(z0) -> c55(#ABS(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) TESTLIST(z0) -> c56(#ABS(#pos(#s(#s(#s(#s(#s(#s(#0()))))))))) TESTLIST(z0) -> c57(#ABS(#pos(#s(#s(#s(#0())))))) TESTQUICKSORT(z0) -> c58(QUICKSORT(testList(#unit())),TESTLIST(#unit())) TESTQUICKSORT2(z0) -> c59(QUICKSORT(testList(#unit())),TESTLIST(#unit())) append(z0,z1) -> append#1(z0,z1) append#1(::(z0,z1),z2) -> ::(z0,append(z1,z2)) append#1(nil(),z0) -> z0 appendD(z0,z1) -> appendD#1(z0,z1) appendD#1(::(z0,z1),z2) -> ::(z0,appendD(z1,z2)) appendD#1(nil(),z0) -> z0 quicksort(z0) -> quicksort#1(z0) quicksort#1(::(z0,z1)) -> quicksort#2(split(z0,z1),z0) quicksort#1(nil()) -> nil() quicksort#2(tuple#2(z0,z1),z2) -> append(quicksort(z0),::(z2,quicksort(z1))) quicksortD(z0) -> quicksortD#1(z0) quicksortD#1(::(z0,z1)) -> quicksortD#2(splitD(z0,z1),z0) quicksortD#1(nil()) -> nil() quicksortD#2(tuple#2(z0,z1),z2) -> appendD(quicksortD(z0),::(z2,quicksortD(z1))) split(z0,z1) -> split#1(z1,z0) split#1(::(z0,z1),z2) -> split#2(split(z2,z1),z2,z0) split#1(nil(),z0) -> tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) -> split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) splitD(z0,z1) -> splitD#1(z1,z0) splitD#1(::(z0,z1),z2) -> splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) -> tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) -> splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) testList(z0) -> ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) testQuicksort(z0) -> quicksort(testList(#unit())) testQuicksort2(z0) -> quicksort(testList(#unit())) - Signature: {#ABS/1,#CKGT/1,#COMPARE/2,#GREATER/2,#abs/1,#ckgt/1,#compare/2,#greater/2,APPEND/2,APPEND#1/2,APPENDD/2 ,APPENDD#1/2,QUICKSORT/1,QUICKSORT#1/1,QUICKSORT#2/2,QUICKSORTD/1,QUICKSORTD#1/1,QUICKSORTD#2/2,SPLIT/2 ,SPLIT#1/2,SPLIT#2/3,SPLIT#3/4,SPLITD/2,SPLITD#1/2,SPLITD#2/3,SPLITD#3/4,TESTLIST/1,TESTQUICKSORT/1 ,TESTQUICKSORT2/1,append/2,append#1/2,appendD/2,appendD#1/2,quicksort/1,quicksort#1/1,quicksort#2/2 ,quicksortD/1,quicksortD#1/1,quicksortD#2/2,split/2,split#1/2,split#2/3,split#3/4,splitD/2,splitD#1/2 ,splitD#2/3,splitD#3/4,testList/1,testQuicksort/1,testQuicksort2/1,#ABS#/1,#CKGT#/1,#COMPARE#/2,#GREATER#/2 ,#abs#/1,#ckgt#/1,#compare#/2,#greater#/2,APPEND#/2,APPEND#1#/2,APPENDD#/2,APPENDD#1#/2,QUICKSORT#/1 ,QUICKSORT#1#/1,QUICKSORT#2#/2,QUICKSORTD#/1,QUICKSORTD#1#/1,QUICKSORTD#2#/2,SPLIT#/2,SPLIT#1#/2,SPLIT#2#/3 ,SPLIT#3#/4,SPLITD#/2,SPLITD#1#/2,SPLITD#2#/3,SPLITD#3#/4,TESTLIST#/1,TESTQUICKSORT#/1,TESTQUICKSORT2#/1 ,append#/2,append#1#/2,appendD#/2,appendD#1#/2,quicksort#/1,quicksort#1#/1,quicksort#2#/2,quicksortD#/1 ,quicksortD#1#/1,quicksortD#2#/2,split#/2,split#1#/2,split#2#/3,split#3#/4,splitD#/2,splitD#1#/2,splitD#2#/3 ,splitD#3#/4,testList#/1,testQuicksort#/1,testQuicksort2#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,#unit/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/0,c16/0,c17/0,c18/0,c19/2,c2/0 ,c20/1,c21/1,c22/0,c23/1,c24/1,c25/0,c26/1,c27/2,c28/0,c29/2,c3/0,c30/2,c31/1,c32/2,c33/0,c34/2,c35/2,c36/1 ,c37/2,c38/0,c39/2,c4/0,c40/0,c41/0,c42/1,c43/2,c44/0,c45/2,c46/0,c47/0,c48/1,c49/1,c5/0,c50/1,c51/1,c52/1 ,c53/1,c54/1,c55/1,c56/1,c57/1,c58/2,c59/2,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/3 ,c_6/1,c_7/1,c_8/0,c_9/1,c_10/1,c_11/0,c_12/1,c_13/3,c_14/0,c_15/4,c_16/4,c_17/1,c_18/3,c_19/0,c_20/4,c_21/4 ,c_22/1,c_23/3,c_24/0,c_25/3,c_26/0,c_27/0,c_28/1,c_29/3,c_30/0,c_31/3,c_32/0,c_33/0,c_34/1,c_35/1,c_36/1 ,c_37/1,c_38/1,c_39/1,c_40/1,c_41/1,c_42/1,c_43/1,c_44/3,c_45/3,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0 ,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0,c_58/1,c_59/0,c_60/1,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0 ,c_67/0,c_68/0,c_69/0,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/0,c_76/0,c_77/1,c_78/0,c_79/1,c_80/2,c_81/1 ,c_82/1,c_83/0,c_84/1,c_85/1,c_86/0,c_87/1,c_88/2,c_89/0,c_90/3,c_91/1,c_92/2,c_93/0,c_94/3,c_95/1,c_96/2 ,c_97/0,c_98/2,c_99/0,c_100/0,c_101/1,c_102/2,c_103/0,c_104/2,c_105/0,c_106/0,c_107/10,c_108/2,c_109/2} - Obligation: innermost runtime complexity wrt. defined symbols {#ABS#,#CKGT#,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare# ,#greater#,APPEND#,APPEND#1#,APPENDD#,APPENDD#1#,QUICKSORT#,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD# ,QUICKSORTD#1#,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2#,SPLIT#3#,SPLITD#,SPLITD#1#,SPLITD#2#,SPLITD#3# ,TESTLIST#,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1#,appendD#,appendD#1#,quicksort#,quicksort#1# ,quicksort#2#,quicksortD#,quicksortD#1#,quicksortD#2#,split#,split#1#,split#2#,split#3#,splitD#,splitD#1# ,splitD#2#,splitD#3#,testList#,testQuicksort#,testQuicksort2#} and constructors {#0,#EQ,#GT,#LT,#false,#neg ,#pos,#s,#true,#unit,::,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,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52 ,c53,c54,c55,c56,c57,c58,c59,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {1,2,3,4,5,8,11,14,19,24,26,27,30,32,33} by application of Pre({1,2,3,4,5,8,11,14,19,24,26,27,30,32,33}) = {6,9,12,17,22,25,28,31,34,35,36,37,38,39,40,41,42,43}. Here rules are labelled as follows: 1: #ABS#(#0()) -> c_1() 2: #ABS#(#neg(z0)) -> c_2() 3: #ABS#(#pos(z0)) -> c_3() 4: #ABS#(#s(z0)) -> c_4() 5: #GREATER#(z0,z1) -> c_5(#CKGT#(#compare(z0,z1)),#compare#(z0,z1),#COMPARE#(z0,z1)) 6: APPEND#(z0,z1) -> c_6(APPEND#1#(z0,z1)) 7: APPEND#1#(::(z0,z1),z2) -> c_7(APPEND#(z1,z2)) 8: APPEND#1#(nil(),z0) -> c_8() 9: APPENDD#(z0,z1) -> c_9(APPENDD#1#(z0,z1)) 10: APPENDD#1#(::(z0,z1),z2) -> c_10(APPENDD#(z1,z2)) 11: APPENDD#1#(nil(),z0) -> c_11() 12: QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)) 13: QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0),split#(z0,z1),SPLIT#(z0,z1)) 14: QUICKSORT#1#(nil()) -> c_14() 15: QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(APPEND#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1) ,QUICKSORT#(z0)) 16: QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(APPEND#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1) ,QUICKSORT#(z1)) 17: QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)) 18: QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0),splitD#(z0,z1),SPLITD#(z0,z1)) 19: QUICKSORTD#1#(nil()) -> c_19() 20: QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1) ,QUICKSORTD#(z0)) 21: QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1) ,QUICKSORTD#(z1)) 22: SPLIT#(z0,z1) -> c_22(SPLIT#1#(z1,z0)) 23: SPLIT#1#(::(z0,z1),z2) -> c_23(SPLIT#2#(split(z2,z1),z2,z0),split#(z2,z1),SPLIT#(z2,z1)) 24: SPLIT#1#(nil(),z0) -> c_24() 25: SPLIT#2#(tuple#2(z0,z1),z2,z3) -> c_25(SPLIT#3#(#greater(z3,z2),z0,z1,z3) ,#greater#(z3,z2) ,#GREATER#(z3,z2)) 26: SPLIT#3#(#false(),z0,z1,z2) -> c_26() 27: SPLIT#3#(#true(),z0,z1,z2) -> c_27() 28: SPLITD#(z0,z1) -> c_28(SPLITD#1#(z1,z0)) 29: SPLITD#1#(::(z0,z1),z2) -> c_29(SPLITD#2#(splitD(z2,z1),z2,z0),splitD#(z2,z1),SPLITD#(z2,z1)) 30: SPLITD#1#(nil(),z0) -> c_30() 31: SPLITD#2#(tuple#2(z0,z1),z2,z3) -> c_31(SPLITD#3#(#greater(z3,z2),z0,z1,z3) ,#greater#(z3,z2) ,#GREATER#(z3,z2)) 32: SPLITD#3#(#false(),z0,z1,z2) -> c_32() 33: SPLITD#3#(#true(),z0,z1,z2) -> c_33() 34: TESTLIST#(z0) -> c_34(#ABS#(#0())) 35: TESTLIST#(z0) -> c_35(#ABS#(#pos(#s(#s(#s(#s(#0()))))))) 36: TESTLIST#(z0) -> c_36(#ABS#(#pos(#s(#s(#s(#s(#s(#0())))))))) 37: TESTLIST#(z0) -> c_37(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))))) 38: TESTLIST#(z0) -> c_38(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) 39: TESTLIST#(z0) -> c_39(#ABS#(#pos(#s(#0())))) 40: TESTLIST#(z0) -> c_40(#ABS#(#pos(#s(#s(#0()))))) 41: TESTLIST#(z0) -> c_41(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) 42: TESTLIST#(z0) -> c_42(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#0()))))))))) 43: TESTLIST#(z0) -> c_43(#ABS#(#pos(#s(#s(#s(#0())))))) 44: TESTQUICKSORT#(z0) -> c_44(QUICKSORT#(testList(#unit())),testList#(#unit()),TESTLIST#(#unit())) 45: TESTQUICKSORT2#(z0) -> c_45(QUICKSORT#(testList(#unit())),testList#(#unit()),TESTLIST#(#unit())) 46: #CKGT#(#EQ()) -> c_46() 47: #CKGT#(#GT()) -> c_47() 48: #CKGT#(#LT()) -> c_48() 49: #COMPARE#(#0(),#0()) -> c_49() 50: #COMPARE#(#0(),#neg(z0)) -> c_50() 51: #COMPARE#(#0(),#pos(z0)) -> c_51() 52: #COMPARE#(#0(),#s(z0)) -> c_52() 53: #COMPARE#(#neg(z0),#0()) -> c_53() 54: #COMPARE#(#neg(z0),#neg(z1)) -> c_54(#COMPARE#(z1,z0)) 55: #COMPARE#(#neg(z0),#pos(z1)) -> c_55() 56: #COMPARE#(#pos(z0),#0()) -> c_56() 57: #COMPARE#(#pos(z0),#neg(z1)) -> c_57() 58: #COMPARE#(#pos(z0),#pos(z1)) -> c_58(#COMPARE#(z0,z1)) 59: #COMPARE#(#s(z0),#0()) -> c_59() 60: #COMPARE#(#s(z0),#s(z1)) -> c_60(#COMPARE#(z0,z1)) 61: #abs#(#0()) -> c_61() 62: #abs#(#neg(z0)) -> c_62() 63: #abs#(#pos(z0)) -> c_63() 64: #abs#(#s(z0)) -> c_64() 65: #ckgt#(#EQ()) -> c_65() 66: #ckgt#(#GT()) -> c_66() 67: #ckgt#(#LT()) -> c_67() 68: #compare#(#0(),#0()) -> c_68() 69: #compare#(#0(),#neg(z0)) -> c_69() 70: #compare#(#0(),#pos(z0)) -> c_70() 71: #compare#(#0(),#s(z0)) -> c_71() 72: #compare#(#neg(z0),#0()) -> c_72() 73: #compare#(#neg(z0),#neg(z1)) -> c_73(#compare#(z1,z0)) 74: #compare#(#neg(z0),#pos(z1)) -> c_74() 75: #compare#(#pos(z0),#0()) -> c_75() 76: #compare#(#pos(z0),#neg(z1)) -> c_76() 77: #compare#(#pos(z0),#pos(z1)) -> c_77(#compare#(z0,z1)) 78: #compare#(#s(z0),#0()) -> c_78() 79: #compare#(#s(z0),#s(z1)) -> c_79(#compare#(z0,z1)) 80: #greater#(z0,z1) -> c_80(#ckgt#(#compare(z0,z1)),#compare#(z0,z1)) 81: append#(z0,z1) -> c_81(append#1#(z0,z1)) 82: append#1#(::(z0,z1),z2) -> c_82(append#(z1,z2)) 83: append#1#(nil(),z0) -> c_83() 84: appendD#(z0,z1) -> c_84(appendD#1#(z0,z1)) 85: appendD#1#(::(z0,z1),z2) -> c_85(appendD#(z1,z2)) 86: appendD#1#(nil(),z0) -> c_86() 87: quicksort#(z0) -> c_87(quicksort#1#(z0)) 88: quicksort#1#(::(z0,z1)) -> c_88(quicksort#2#(split(z0,z1),z0),split#(z0,z1)) 89: quicksort#1#(nil()) -> c_89() 90: quicksort#2#(tuple#2(z0,z1),z2) -> c_90(append#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1)) 91: quicksortD#(z0) -> c_91(quicksortD#1#(z0)) 92: quicksortD#1#(::(z0,z1)) -> c_92(quicksortD#2#(splitD(z0,z1),z0),splitD#(z0,z1)) 93: quicksortD#1#(nil()) -> c_93() 94: quicksortD#2#(tuple#2(z0,z1),z2) -> c_94(appendD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1)) 95: split#(z0,z1) -> c_95(split#1#(z1,z0)) 96: split#1#(::(z0,z1),z2) -> c_96(split#2#(split(z2,z1),z2,z0),split#(z2,z1)) 97: split#1#(nil(),z0) -> c_97() 98: split#2#(tuple#2(z0,z1),z2,z3) -> c_98(split#3#(#greater(z3,z2),z0,z1,z3),#greater#(z3,z2)) 99: split#3#(#false(),z0,z1,z2) -> c_99() 100: split#3#(#true(),z0,z1,z2) -> c_100() 101: splitD#(z0,z1) -> c_101(splitD#1#(z1,z0)) 102: splitD#1#(::(z0,z1),z2) -> c_102(splitD#2#(splitD(z2,z1),z2,z0),splitD#(z2,z1)) 103: splitD#1#(nil(),z0) -> c_103() 104: splitD#2#(tuple#2(z0,z1),z2,z3) -> c_104(splitD#3#(#greater(z3,z2),z0,z1,z3),#greater#(z3,z2)) 105: splitD#3#(#false(),z0,z1,z2) -> c_105() 106: splitD#3#(#true(),z0,z1,z2) -> c_106() 107: testList#(z0) -> c_107(#abs#(#0()) ,#abs#(#pos(#s(#s(#s(#s(#0())))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#0()))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,#abs#(#pos(#s(#0()))) ,#abs#(#pos(#s(#s(#0())))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,#abs#(#pos(#s(#s(#s(#0())))))) 108: testQuicksort#(z0) -> c_108(quicksort#(testList(#unit())),testList#(#unit())) 109: testQuicksort2#(z0) -> c_109(quicksort#(testList(#unit())),testList#(#unit())) * Step 4: PredecessorEstimation. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: APPEND#(z0,z1) -> c_6(APPEND#1#(z0,z1)) APPEND#1#(::(z0,z1),z2) -> c_7(APPEND#(z1,z2)) APPENDD#(z0,z1) -> c_9(APPENDD#1#(z0,z1)) APPENDD#1#(::(z0,z1),z2) -> c_10(APPENDD#(z1,z2)) QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)) QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0),split#(z0,z1),SPLIT#(z0,z1)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(APPEND#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1) ,QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(APPEND#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1) ,QUICKSORT#(z1)) QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)) QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0),splitD#(z0,z1),SPLITD#(z0,z1)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1) ,QUICKSORTD#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1) ,QUICKSORTD#(z1)) SPLIT#(z0,z1) -> c_22(SPLIT#1#(z1,z0)) SPLIT#1#(::(z0,z1),z2) -> c_23(SPLIT#2#(split(z2,z1),z2,z0),split#(z2,z1),SPLIT#(z2,z1)) SPLIT#2#(tuple#2(z0,z1),z2,z3) -> c_25(SPLIT#3#(#greater(z3,z2),z0,z1,z3),#greater#(z3,z2),#GREATER#(z3,z2)) SPLITD#(z0,z1) -> c_28(SPLITD#1#(z1,z0)) SPLITD#1#(::(z0,z1),z2) -> c_29(SPLITD#2#(splitD(z2,z1),z2,z0),splitD#(z2,z1),SPLITD#(z2,z1)) SPLITD#2#(tuple#2(z0,z1),z2,z3) -> c_31(SPLITD#3#(#greater(z3,z2),z0,z1,z3) ,#greater#(z3,z2) ,#GREATER#(z3,z2)) TESTLIST#(z0) -> c_34(#ABS#(#0())) TESTLIST#(z0) -> c_35(#ABS#(#pos(#s(#s(#s(#s(#0()))))))) TESTLIST#(z0) -> c_36(#ABS#(#pos(#s(#s(#s(#s(#s(#0())))))))) TESTLIST#(z0) -> c_37(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))))) TESTLIST#(z0) -> c_38(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) TESTLIST#(z0) -> c_39(#ABS#(#pos(#s(#0())))) TESTLIST#(z0) -> c_40(#ABS#(#pos(#s(#s(#0()))))) TESTLIST#(z0) -> c_41(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) TESTLIST#(z0) -> c_42(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#0()))))))))) TESTLIST#(z0) -> c_43(#ABS#(#pos(#s(#s(#s(#0())))))) TESTQUICKSORT#(z0) -> c_44(QUICKSORT#(testList(#unit())),testList#(#unit()),TESTLIST#(#unit())) TESTQUICKSORT2#(z0) -> c_45(QUICKSORT#(testList(#unit())),testList#(#unit()),TESTLIST#(#unit())) - Weak DPs: #ABS#(#0()) -> c_1() #ABS#(#neg(z0)) -> c_2() #ABS#(#pos(z0)) -> c_3() #ABS#(#s(z0)) -> c_4() #CKGT#(#EQ()) -> c_46() #CKGT#(#GT()) -> c_47() #CKGT#(#LT()) -> c_48() #COMPARE#(#0(),#0()) -> c_49() #COMPARE#(#0(),#neg(z0)) -> c_50() #COMPARE#(#0(),#pos(z0)) -> c_51() #COMPARE#(#0(),#s(z0)) -> c_52() #COMPARE#(#neg(z0),#0()) -> c_53() #COMPARE#(#neg(z0),#neg(z1)) -> c_54(#COMPARE#(z1,z0)) #COMPARE#(#neg(z0),#pos(z1)) -> c_55() #COMPARE#(#pos(z0),#0()) -> c_56() #COMPARE#(#pos(z0),#neg(z1)) -> c_57() #COMPARE#(#pos(z0),#pos(z1)) -> c_58(#COMPARE#(z0,z1)) #COMPARE#(#s(z0),#0()) -> c_59() #COMPARE#(#s(z0),#s(z1)) -> c_60(#COMPARE#(z0,z1)) #GREATER#(z0,z1) -> c_5(#CKGT#(#compare(z0,z1)),#compare#(z0,z1),#COMPARE#(z0,z1)) #abs#(#0()) -> c_61() #abs#(#neg(z0)) -> c_62() #abs#(#pos(z0)) -> c_63() #abs#(#s(z0)) -> c_64() #ckgt#(#EQ()) -> c_65() #ckgt#(#GT()) -> c_66() #ckgt#(#LT()) -> c_67() #compare#(#0(),#0()) -> c_68() #compare#(#0(),#neg(z0)) -> c_69() #compare#(#0(),#pos(z0)) -> c_70() #compare#(#0(),#s(z0)) -> c_71() #compare#(#neg(z0),#0()) -> c_72() #compare#(#neg(z0),#neg(z1)) -> c_73(#compare#(z1,z0)) #compare#(#neg(z0),#pos(z1)) -> c_74() #compare#(#pos(z0),#0()) -> c_75() #compare#(#pos(z0),#neg(z1)) -> c_76() #compare#(#pos(z0),#pos(z1)) -> c_77(#compare#(z0,z1)) #compare#(#s(z0),#0()) -> c_78() #compare#(#s(z0),#s(z1)) -> c_79(#compare#(z0,z1)) #greater#(z0,z1) -> c_80(#ckgt#(#compare(z0,z1)),#compare#(z0,z1)) APPEND#1#(nil(),z0) -> c_8() APPENDD#1#(nil(),z0) -> c_11() QUICKSORT#1#(nil()) -> c_14() QUICKSORTD#1#(nil()) -> c_19() SPLIT#1#(nil(),z0) -> c_24() SPLIT#3#(#false(),z0,z1,z2) -> c_26() SPLIT#3#(#true(),z0,z1,z2) -> c_27() SPLITD#1#(nil(),z0) -> c_30() SPLITD#3#(#false(),z0,z1,z2) -> c_32() SPLITD#3#(#true(),z0,z1,z2) -> c_33() append#(z0,z1) -> c_81(append#1#(z0,z1)) append#1#(::(z0,z1),z2) -> c_82(append#(z1,z2)) append#1#(nil(),z0) -> c_83() appendD#(z0,z1) -> c_84(appendD#1#(z0,z1)) appendD#1#(::(z0,z1),z2) -> c_85(appendD#(z1,z2)) appendD#1#(nil(),z0) -> c_86() quicksort#(z0) -> c_87(quicksort#1#(z0)) quicksort#1#(::(z0,z1)) -> c_88(quicksort#2#(split(z0,z1),z0),split#(z0,z1)) quicksort#1#(nil()) -> c_89() quicksort#2#(tuple#2(z0,z1),z2) -> c_90(append#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1)) quicksortD#(z0) -> c_91(quicksortD#1#(z0)) quicksortD#1#(::(z0,z1)) -> c_92(quicksortD#2#(splitD(z0,z1),z0),splitD#(z0,z1)) quicksortD#1#(nil()) -> c_93() quicksortD#2#(tuple#2(z0,z1),z2) -> c_94(appendD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1)) split#(z0,z1) -> c_95(split#1#(z1,z0)) split#1#(::(z0,z1),z2) -> c_96(split#2#(split(z2,z1),z2,z0),split#(z2,z1)) split#1#(nil(),z0) -> c_97() split#2#(tuple#2(z0,z1),z2,z3) -> c_98(split#3#(#greater(z3,z2),z0,z1,z3),#greater#(z3,z2)) split#3#(#false(),z0,z1,z2) -> c_99() split#3#(#true(),z0,z1,z2) -> c_100() splitD#(z0,z1) -> c_101(splitD#1#(z1,z0)) splitD#1#(::(z0,z1),z2) -> c_102(splitD#2#(splitD(z2,z1),z2,z0),splitD#(z2,z1)) splitD#1#(nil(),z0) -> c_103() splitD#2#(tuple#2(z0,z1),z2,z3) -> c_104(splitD#3#(#greater(z3,z2),z0,z1,z3),#greater#(z3,z2)) splitD#3#(#false(),z0,z1,z2) -> c_105() splitD#3#(#true(),z0,z1,z2) -> c_106() testList#(z0) -> c_107(#abs#(#0()) ,#abs#(#pos(#s(#s(#s(#s(#0())))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#0()))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,#abs#(#pos(#s(#0()))) ,#abs#(#pos(#s(#s(#0())))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,#abs#(#pos(#s(#s(#s(#0())))))) testQuicksort#(z0) -> c_108(quicksort#(testList(#unit())),testList#(#unit())) testQuicksort2#(z0) -> c_109(quicksort#(testList(#unit())),testList#(#unit())) - Weak TRS: #ABS(#0()) -> c15() #ABS(#neg(z0)) -> c16() #ABS(#pos(z0)) -> c17() #ABS(#s(z0)) -> c18() #CKGT(#EQ()) -> c() #CKGT(#GT()) -> c1() #CKGT(#LT()) -> c2() #COMPARE(#0(),#0()) -> c3() #COMPARE(#0(),#neg(z0)) -> c4() #COMPARE(#0(),#pos(z0)) -> c5() #COMPARE(#0(),#s(z0)) -> c6() #COMPARE(#neg(z0),#0()) -> c7() #COMPARE(#neg(z0),#neg(z1)) -> c8(#COMPARE(z1,z0)) #COMPARE(#neg(z0),#pos(z1)) -> c9() #COMPARE(#pos(z0),#0()) -> c10() #COMPARE(#pos(z0),#neg(z1)) -> c11() #COMPARE(#pos(z0),#pos(z1)) -> c12(#COMPARE(z0,z1)) #COMPARE(#s(z0),#0()) -> c13() #COMPARE(#s(z0),#s(z1)) -> c14(#COMPARE(z0,z1)) #GREATER(z0,z1) -> c19(#CKGT(#compare(z0,z1)),#COMPARE(z0,z1)) #abs(#0()) -> #0() #abs(#neg(z0)) -> #pos(z0) #abs(#pos(z0)) -> #pos(z0) #abs(#s(z0)) -> #pos(#s(z0)) #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(z0)) -> #GT() #compare(#0(),#pos(z0)) -> #LT() #compare(#0(),#s(z0)) -> #LT() #compare(#neg(z0),#0()) -> #LT() #compare(#neg(z0),#neg(z1)) -> #compare(z1,z0) #compare(#neg(z0),#pos(z1)) -> #LT() #compare(#pos(z0),#0()) -> #GT() #compare(#pos(z0),#neg(z1)) -> #GT() #compare(#pos(z0),#pos(z1)) -> #compare(z0,z1) #compare(#s(z0),#0()) -> #GT() #compare(#s(z0),#s(z1)) -> #compare(z0,z1) #greater(z0,z1) -> #ckgt(#compare(z0,z1)) APPEND(z0,z1) -> c20(APPEND#1(z0,z1)) APPEND#1(::(z0,z1),z2) -> c21(APPEND(z1,z2)) APPEND#1(nil(),z0) -> c22() APPENDD(z0,z1) -> c23(APPENDD#1(z0,z1)) APPENDD#1(::(z0,z1),z2) -> c24(APPENDD(z1,z2)) APPENDD#1(nil(),z0) -> c25() QUICKSORT(z0) -> c26(QUICKSORT#1(z0)) QUICKSORT#1(::(z0,z1)) -> c27(QUICKSORT#2(split(z0,z1),z0),SPLIT(z0,z1)) QUICKSORT#1(nil()) -> c28() QUICKSORT#2(tuple#2(z0,z1),z2) -> c29(APPEND(quicksort(z0),::(z2,quicksort(z1))),QUICKSORT(z0)) QUICKSORT#2(tuple#2(z0,z1),z2) -> c30(APPEND(quicksort(z0),::(z2,quicksort(z1))),QUICKSORT(z1)) QUICKSORTD(z0) -> c31(QUICKSORTD#1(z0)) QUICKSORTD#1(::(z0,z1)) -> c32(QUICKSORTD#2(splitD(z0,z1),z0),SPLITD(z0,z1)) QUICKSORTD#1(nil()) -> c33() QUICKSORTD#2(tuple#2(z0,z1),z2) -> c34(APPENDD(quicksortD(z0),::(z2,quicksortD(z1))),QUICKSORTD(z0)) QUICKSORTD#2(tuple#2(z0,z1),z2) -> c35(APPENDD(quicksortD(z0),::(z2,quicksortD(z1))),QUICKSORTD(z1)) SPLIT(z0,z1) -> c36(SPLIT#1(z1,z0)) SPLIT#1(::(z0,z1),z2) -> c37(SPLIT#2(split(z2,z1),z2,z0),SPLIT(z2,z1)) SPLIT#1(nil(),z0) -> c38() SPLIT#2(tuple#2(z0,z1),z2,z3) -> c39(SPLIT#3(#greater(z3,z2),z0,z1,z3),#GREATER(z3,z2)) SPLIT#3(#false(),z0,z1,z2) -> c40() SPLIT#3(#true(),z0,z1,z2) -> c41() SPLITD(z0,z1) -> c42(SPLITD#1(z1,z0)) SPLITD#1(::(z0,z1),z2) -> c43(SPLITD#2(splitD(z2,z1),z2,z0),SPLITD(z2,z1)) SPLITD#1(nil(),z0) -> c44() SPLITD#2(tuple#2(z0,z1),z2,z3) -> c45(SPLITD#3(#greater(z3,z2),z0,z1,z3),#GREATER(z3,z2)) SPLITD#3(#false(),z0,z1,z2) -> c46() SPLITD#3(#true(),z0,z1,z2) -> c47() TESTLIST(z0) -> c48(#ABS(#0())) TESTLIST(z0) -> c49(#ABS(#pos(#s(#s(#s(#s(#0()))))))) TESTLIST(z0) -> c50(#ABS(#pos(#s(#s(#s(#s(#s(#0())))))))) TESTLIST(z0) -> c51(#ABS(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))))) TESTLIST(z0) -> c52(#ABS(#pos(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) TESTLIST(z0) -> c53(#ABS(#pos(#s(#0())))) TESTLIST(z0) -> c54(#ABS(#pos(#s(#s(#0()))))) TESTLIST(z0) -> c55(#ABS(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) TESTLIST(z0) -> c56(#ABS(#pos(#s(#s(#s(#s(#s(#s(#0()))))))))) TESTLIST(z0) -> c57(#ABS(#pos(#s(#s(#s(#0())))))) TESTQUICKSORT(z0) -> c58(QUICKSORT(testList(#unit())),TESTLIST(#unit())) TESTQUICKSORT2(z0) -> c59(QUICKSORT(testList(#unit())),TESTLIST(#unit())) append(z0,z1) -> append#1(z0,z1) append#1(::(z0,z1),z2) -> ::(z0,append(z1,z2)) append#1(nil(),z0) -> z0 appendD(z0,z1) -> appendD#1(z0,z1) appendD#1(::(z0,z1),z2) -> ::(z0,appendD(z1,z2)) appendD#1(nil(),z0) -> z0 quicksort(z0) -> quicksort#1(z0) quicksort#1(::(z0,z1)) -> quicksort#2(split(z0,z1),z0) quicksort#1(nil()) -> nil() quicksort#2(tuple#2(z0,z1),z2) -> append(quicksort(z0),::(z2,quicksort(z1))) quicksortD(z0) -> quicksortD#1(z0) quicksortD#1(::(z0,z1)) -> quicksortD#2(splitD(z0,z1),z0) quicksortD#1(nil()) -> nil() quicksortD#2(tuple#2(z0,z1),z2) -> appendD(quicksortD(z0),::(z2,quicksortD(z1))) split(z0,z1) -> split#1(z1,z0) split#1(::(z0,z1),z2) -> split#2(split(z2,z1),z2,z0) split#1(nil(),z0) -> tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) -> split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) splitD(z0,z1) -> splitD#1(z1,z0) splitD#1(::(z0,z1),z2) -> splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) -> tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) -> splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) testList(z0) -> ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) testQuicksort(z0) -> quicksort(testList(#unit())) testQuicksort2(z0) -> quicksort(testList(#unit())) - Signature: {#ABS/1,#CKGT/1,#COMPARE/2,#GREATER/2,#abs/1,#ckgt/1,#compare/2,#greater/2,APPEND/2,APPEND#1/2,APPENDD/2 ,APPENDD#1/2,QUICKSORT/1,QUICKSORT#1/1,QUICKSORT#2/2,QUICKSORTD/1,QUICKSORTD#1/1,QUICKSORTD#2/2,SPLIT/2 ,SPLIT#1/2,SPLIT#2/3,SPLIT#3/4,SPLITD/2,SPLITD#1/2,SPLITD#2/3,SPLITD#3/4,TESTLIST/1,TESTQUICKSORT/1 ,TESTQUICKSORT2/1,append/2,append#1/2,appendD/2,appendD#1/2,quicksort/1,quicksort#1/1,quicksort#2/2 ,quicksortD/1,quicksortD#1/1,quicksortD#2/2,split/2,split#1/2,split#2/3,split#3/4,splitD/2,splitD#1/2 ,splitD#2/3,splitD#3/4,testList/1,testQuicksort/1,testQuicksort2/1,#ABS#/1,#CKGT#/1,#COMPARE#/2,#GREATER#/2 ,#abs#/1,#ckgt#/1,#compare#/2,#greater#/2,APPEND#/2,APPEND#1#/2,APPENDD#/2,APPENDD#1#/2,QUICKSORT#/1 ,QUICKSORT#1#/1,QUICKSORT#2#/2,QUICKSORTD#/1,QUICKSORTD#1#/1,QUICKSORTD#2#/2,SPLIT#/2,SPLIT#1#/2,SPLIT#2#/3 ,SPLIT#3#/4,SPLITD#/2,SPLITD#1#/2,SPLITD#2#/3,SPLITD#3#/4,TESTLIST#/1,TESTQUICKSORT#/1,TESTQUICKSORT2#/1 ,append#/2,append#1#/2,appendD#/2,appendD#1#/2,quicksort#/1,quicksort#1#/1,quicksort#2#/2,quicksortD#/1 ,quicksortD#1#/1,quicksortD#2#/2,split#/2,split#1#/2,split#2#/3,split#3#/4,splitD#/2,splitD#1#/2,splitD#2#/3 ,splitD#3#/4,testList#/1,testQuicksort#/1,testQuicksort2#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,#unit/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/0,c16/0,c17/0,c18/0,c19/2,c2/0 ,c20/1,c21/1,c22/0,c23/1,c24/1,c25/0,c26/1,c27/2,c28/0,c29/2,c3/0,c30/2,c31/1,c32/2,c33/0,c34/2,c35/2,c36/1 ,c37/2,c38/0,c39/2,c4/0,c40/0,c41/0,c42/1,c43/2,c44/0,c45/2,c46/0,c47/0,c48/1,c49/1,c5/0,c50/1,c51/1,c52/1 ,c53/1,c54/1,c55/1,c56/1,c57/1,c58/2,c59/2,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/3 ,c_6/1,c_7/1,c_8/0,c_9/1,c_10/1,c_11/0,c_12/1,c_13/3,c_14/0,c_15/4,c_16/4,c_17/1,c_18/3,c_19/0,c_20/4,c_21/4 ,c_22/1,c_23/3,c_24/0,c_25/3,c_26/0,c_27/0,c_28/1,c_29/3,c_30/0,c_31/3,c_32/0,c_33/0,c_34/1,c_35/1,c_36/1 ,c_37/1,c_38/1,c_39/1,c_40/1,c_41/1,c_42/1,c_43/1,c_44/3,c_45/3,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0 ,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0,c_58/1,c_59/0,c_60/1,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0 ,c_67/0,c_68/0,c_69/0,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/0,c_76/0,c_77/1,c_78/0,c_79/1,c_80/2,c_81/1 ,c_82/1,c_83/0,c_84/1,c_85/1,c_86/0,c_87/1,c_88/2,c_89/0,c_90/3,c_91/1,c_92/2,c_93/0,c_94/3,c_95/1,c_96/2 ,c_97/0,c_98/2,c_99/0,c_100/0,c_101/1,c_102/2,c_103/0,c_104/2,c_105/0,c_106/0,c_107/10,c_108/2,c_109/2} - Obligation: innermost runtime complexity wrt. defined symbols {#ABS#,#CKGT#,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare# ,#greater#,APPEND#,APPEND#1#,APPENDD#,APPENDD#1#,QUICKSORT#,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD# ,QUICKSORTD#1#,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2#,SPLIT#3#,SPLITD#,SPLITD#1#,SPLITD#2#,SPLITD#3# ,TESTLIST#,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1#,appendD#,appendD#1#,quicksort#,quicksort#1# ,quicksort#2#,quicksortD#,quicksortD#1#,quicksortD#2#,split#,split#1#,split#2#,split#3#,splitD#,splitD#1# ,splitD#2#,splitD#3#,testList#,testQuicksort#,testQuicksort2#} and constructors {#0,#EQ,#GT,#LT,#false,#neg ,#pos,#s,#true,#unit,::,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,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52 ,c53,c54,c55,c56,c57,c58,c59,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {15,18,19,20,21,22,23,24,25,26,27,28} by application of Pre({15,18,19,20,21,22,23,24,25,26,27,28}) = {14,17,29,30}. Here rules are labelled as follows: 1: APPEND#(z0,z1) -> c_6(APPEND#1#(z0,z1)) 2: APPEND#1#(::(z0,z1),z2) -> c_7(APPEND#(z1,z2)) 3: APPENDD#(z0,z1) -> c_9(APPENDD#1#(z0,z1)) 4: APPENDD#1#(::(z0,z1),z2) -> c_10(APPENDD#(z1,z2)) 5: QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)) 6: QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0),split#(z0,z1),SPLIT#(z0,z1)) 7: QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(APPEND#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1) ,QUICKSORT#(z0)) 8: QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(APPEND#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1) ,QUICKSORT#(z1)) 9: QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)) 10: QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0),splitD#(z0,z1),SPLITD#(z0,z1)) 11: QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1) ,QUICKSORTD#(z0)) 12: QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1) ,QUICKSORTD#(z1)) 13: SPLIT#(z0,z1) -> c_22(SPLIT#1#(z1,z0)) 14: SPLIT#1#(::(z0,z1),z2) -> c_23(SPLIT#2#(split(z2,z1),z2,z0),split#(z2,z1),SPLIT#(z2,z1)) 15: SPLIT#2#(tuple#2(z0,z1),z2,z3) -> c_25(SPLIT#3#(#greater(z3,z2),z0,z1,z3) ,#greater#(z3,z2) ,#GREATER#(z3,z2)) 16: SPLITD#(z0,z1) -> c_28(SPLITD#1#(z1,z0)) 17: SPLITD#1#(::(z0,z1),z2) -> c_29(SPLITD#2#(splitD(z2,z1),z2,z0),splitD#(z2,z1),SPLITD#(z2,z1)) 18: SPLITD#2#(tuple#2(z0,z1),z2,z3) -> c_31(SPLITD#3#(#greater(z3,z2),z0,z1,z3) ,#greater#(z3,z2) ,#GREATER#(z3,z2)) 19: TESTLIST#(z0) -> c_34(#ABS#(#0())) 20: TESTLIST#(z0) -> c_35(#ABS#(#pos(#s(#s(#s(#s(#0()))))))) 21: TESTLIST#(z0) -> c_36(#ABS#(#pos(#s(#s(#s(#s(#s(#0())))))))) 22: TESTLIST#(z0) -> c_37(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))))) 23: TESTLIST#(z0) -> c_38(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) 24: TESTLIST#(z0) -> c_39(#ABS#(#pos(#s(#0())))) 25: TESTLIST#(z0) -> c_40(#ABS#(#pos(#s(#s(#0()))))) 26: TESTLIST#(z0) -> c_41(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) 27: TESTLIST#(z0) -> c_42(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#0()))))))))) 28: TESTLIST#(z0) -> c_43(#ABS#(#pos(#s(#s(#s(#0())))))) 29: TESTQUICKSORT#(z0) -> c_44(QUICKSORT#(testList(#unit())),testList#(#unit()),TESTLIST#(#unit())) 30: TESTQUICKSORT2#(z0) -> c_45(QUICKSORT#(testList(#unit())),testList#(#unit()),TESTLIST#(#unit())) 31: #ABS#(#0()) -> c_1() 32: #ABS#(#neg(z0)) -> c_2() 33: #ABS#(#pos(z0)) -> c_3() 34: #ABS#(#s(z0)) -> c_4() 35: #CKGT#(#EQ()) -> c_46() 36: #CKGT#(#GT()) -> c_47() 37: #CKGT#(#LT()) -> c_48() 38: #COMPARE#(#0(),#0()) -> c_49() 39: #COMPARE#(#0(),#neg(z0)) -> c_50() 40: #COMPARE#(#0(),#pos(z0)) -> c_51() 41: #COMPARE#(#0(),#s(z0)) -> c_52() 42: #COMPARE#(#neg(z0),#0()) -> c_53() 43: #COMPARE#(#neg(z0),#neg(z1)) -> c_54(#COMPARE#(z1,z0)) 44: #COMPARE#(#neg(z0),#pos(z1)) -> c_55() 45: #COMPARE#(#pos(z0),#0()) -> c_56() 46: #COMPARE#(#pos(z0),#neg(z1)) -> c_57() 47: #COMPARE#(#pos(z0),#pos(z1)) -> c_58(#COMPARE#(z0,z1)) 48: #COMPARE#(#s(z0),#0()) -> c_59() 49: #COMPARE#(#s(z0),#s(z1)) -> c_60(#COMPARE#(z0,z1)) 50: #GREATER#(z0,z1) -> c_5(#CKGT#(#compare(z0,z1)),#compare#(z0,z1),#COMPARE#(z0,z1)) 51: #abs#(#0()) -> c_61() 52: #abs#(#neg(z0)) -> c_62() 53: #abs#(#pos(z0)) -> c_63() 54: #abs#(#s(z0)) -> c_64() 55: #ckgt#(#EQ()) -> c_65() 56: #ckgt#(#GT()) -> c_66() 57: #ckgt#(#LT()) -> c_67() 58: #compare#(#0(),#0()) -> c_68() 59: #compare#(#0(),#neg(z0)) -> c_69() 60: #compare#(#0(),#pos(z0)) -> c_70() 61: #compare#(#0(),#s(z0)) -> c_71() 62: #compare#(#neg(z0),#0()) -> c_72() 63: #compare#(#neg(z0),#neg(z1)) -> c_73(#compare#(z1,z0)) 64: #compare#(#neg(z0),#pos(z1)) -> c_74() 65: #compare#(#pos(z0),#0()) -> c_75() 66: #compare#(#pos(z0),#neg(z1)) -> c_76() 67: #compare#(#pos(z0),#pos(z1)) -> c_77(#compare#(z0,z1)) 68: #compare#(#s(z0),#0()) -> c_78() 69: #compare#(#s(z0),#s(z1)) -> c_79(#compare#(z0,z1)) 70: #greater#(z0,z1) -> c_80(#ckgt#(#compare(z0,z1)),#compare#(z0,z1)) 71: APPEND#1#(nil(),z0) -> c_8() 72: APPENDD#1#(nil(),z0) -> c_11() 73: QUICKSORT#1#(nil()) -> c_14() 74: QUICKSORTD#1#(nil()) -> c_19() 75: SPLIT#1#(nil(),z0) -> c_24() 76: SPLIT#3#(#false(),z0,z1,z2) -> c_26() 77: SPLIT#3#(#true(),z0,z1,z2) -> c_27() 78: SPLITD#1#(nil(),z0) -> c_30() 79: SPLITD#3#(#false(),z0,z1,z2) -> c_32() 80: SPLITD#3#(#true(),z0,z1,z2) -> c_33() 81: append#(z0,z1) -> c_81(append#1#(z0,z1)) 82: append#1#(::(z0,z1),z2) -> c_82(append#(z1,z2)) 83: append#1#(nil(),z0) -> c_83() 84: appendD#(z0,z1) -> c_84(appendD#1#(z0,z1)) 85: appendD#1#(::(z0,z1),z2) -> c_85(appendD#(z1,z2)) 86: appendD#1#(nil(),z0) -> c_86() 87: quicksort#(z0) -> c_87(quicksort#1#(z0)) 88: quicksort#1#(::(z0,z1)) -> c_88(quicksort#2#(split(z0,z1),z0),split#(z0,z1)) 89: quicksort#1#(nil()) -> c_89() 90: quicksort#2#(tuple#2(z0,z1),z2) -> c_90(append#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1)) 91: quicksortD#(z0) -> c_91(quicksortD#1#(z0)) 92: quicksortD#1#(::(z0,z1)) -> c_92(quicksortD#2#(splitD(z0,z1),z0),splitD#(z0,z1)) 93: quicksortD#1#(nil()) -> c_93() 94: quicksortD#2#(tuple#2(z0,z1),z2) -> c_94(appendD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1)) 95: split#(z0,z1) -> c_95(split#1#(z1,z0)) 96: split#1#(::(z0,z1),z2) -> c_96(split#2#(split(z2,z1),z2,z0),split#(z2,z1)) 97: split#1#(nil(),z0) -> c_97() 98: split#2#(tuple#2(z0,z1),z2,z3) -> c_98(split#3#(#greater(z3,z2),z0,z1,z3),#greater#(z3,z2)) 99: split#3#(#false(),z0,z1,z2) -> c_99() 100: split#3#(#true(),z0,z1,z2) -> c_100() 101: splitD#(z0,z1) -> c_101(splitD#1#(z1,z0)) 102: splitD#1#(::(z0,z1),z2) -> c_102(splitD#2#(splitD(z2,z1),z2,z0),splitD#(z2,z1)) 103: splitD#1#(nil(),z0) -> c_103() 104: splitD#2#(tuple#2(z0,z1),z2,z3) -> c_104(splitD#3#(#greater(z3,z2),z0,z1,z3),#greater#(z3,z2)) 105: splitD#3#(#false(),z0,z1,z2) -> c_105() 106: splitD#3#(#true(),z0,z1,z2) -> c_106() 107: testList#(z0) -> c_107(#abs#(#0()) ,#abs#(#pos(#s(#s(#s(#s(#0())))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#0()))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,#abs#(#pos(#s(#0()))) ,#abs#(#pos(#s(#s(#0())))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,#abs#(#pos(#s(#s(#s(#0())))))) 108: testQuicksort#(z0) -> c_108(quicksort#(testList(#unit())),testList#(#unit())) 109: testQuicksort2#(z0) -> c_109(quicksort#(testList(#unit())),testList#(#unit())) * Step 5: RemoveWeakSuffixes. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: APPEND#(z0,z1) -> c_6(APPEND#1#(z0,z1)) APPEND#1#(::(z0,z1),z2) -> c_7(APPEND#(z1,z2)) APPENDD#(z0,z1) -> c_9(APPENDD#1#(z0,z1)) APPENDD#1#(::(z0,z1),z2) -> c_10(APPENDD#(z1,z2)) QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)) QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0),split#(z0,z1),SPLIT#(z0,z1)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(APPEND#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1) ,QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(APPEND#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1) ,QUICKSORT#(z1)) QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)) QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0),splitD#(z0,z1),SPLITD#(z0,z1)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1) ,QUICKSORTD#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1) ,QUICKSORTD#(z1)) SPLIT#(z0,z1) -> c_22(SPLIT#1#(z1,z0)) SPLIT#1#(::(z0,z1),z2) -> c_23(SPLIT#2#(split(z2,z1),z2,z0),split#(z2,z1),SPLIT#(z2,z1)) SPLITD#(z0,z1) -> c_28(SPLITD#1#(z1,z0)) SPLITD#1#(::(z0,z1),z2) -> c_29(SPLITD#2#(splitD(z2,z1),z2,z0),splitD#(z2,z1),SPLITD#(z2,z1)) TESTQUICKSORT#(z0) -> c_44(QUICKSORT#(testList(#unit())),testList#(#unit()),TESTLIST#(#unit())) TESTQUICKSORT2#(z0) -> c_45(QUICKSORT#(testList(#unit())),testList#(#unit()),TESTLIST#(#unit())) - Weak DPs: #ABS#(#0()) -> c_1() #ABS#(#neg(z0)) -> c_2() #ABS#(#pos(z0)) -> c_3() #ABS#(#s(z0)) -> c_4() #CKGT#(#EQ()) -> c_46() #CKGT#(#GT()) -> c_47() #CKGT#(#LT()) -> c_48() #COMPARE#(#0(),#0()) -> c_49() #COMPARE#(#0(),#neg(z0)) -> c_50() #COMPARE#(#0(),#pos(z0)) -> c_51() #COMPARE#(#0(),#s(z0)) -> c_52() #COMPARE#(#neg(z0),#0()) -> c_53() #COMPARE#(#neg(z0),#neg(z1)) -> c_54(#COMPARE#(z1,z0)) #COMPARE#(#neg(z0),#pos(z1)) -> c_55() #COMPARE#(#pos(z0),#0()) -> c_56() #COMPARE#(#pos(z0),#neg(z1)) -> c_57() #COMPARE#(#pos(z0),#pos(z1)) -> c_58(#COMPARE#(z0,z1)) #COMPARE#(#s(z0),#0()) -> c_59() #COMPARE#(#s(z0),#s(z1)) -> c_60(#COMPARE#(z0,z1)) #GREATER#(z0,z1) -> c_5(#CKGT#(#compare(z0,z1)),#compare#(z0,z1),#COMPARE#(z0,z1)) #abs#(#0()) -> c_61() #abs#(#neg(z0)) -> c_62() #abs#(#pos(z0)) -> c_63() #abs#(#s(z0)) -> c_64() #ckgt#(#EQ()) -> c_65() #ckgt#(#GT()) -> c_66() #ckgt#(#LT()) -> c_67() #compare#(#0(),#0()) -> c_68() #compare#(#0(),#neg(z0)) -> c_69() #compare#(#0(),#pos(z0)) -> c_70() #compare#(#0(),#s(z0)) -> c_71() #compare#(#neg(z0),#0()) -> c_72() #compare#(#neg(z0),#neg(z1)) -> c_73(#compare#(z1,z0)) #compare#(#neg(z0),#pos(z1)) -> c_74() #compare#(#pos(z0),#0()) -> c_75() #compare#(#pos(z0),#neg(z1)) -> c_76() #compare#(#pos(z0),#pos(z1)) -> c_77(#compare#(z0,z1)) #compare#(#s(z0),#0()) -> c_78() #compare#(#s(z0),#s(z1)) -> c_79(#compare#(z0,z1)) #greater#(z0,z1) -> c_80(#ckgt#(#compare(z0,z1)),#compare#(z0,z1)) APPEND#1#(nil(),z0) -> c_8() APPENDD#1#(nil(),z0) -> c_11() QUICKSORT#1#(nil()) -> c_14() QUICKSORTD#1#(nil()) -> c_19() SPLIT#1#(nil(),z0) -> c_24() SPLIT#2#(tuple#2(z0,z1),z2,z3) -> c_25(SPLIT#3#(#greater(z3,z2),z0,z1,z3),#greater#(z3,z2),#GREATER#(z3,z2)) SPLIT#3#(#false(),z0,z1,z2) -> c_26() SPLIT#3#(#true(),z0,z1,z2) -> c_27() SPLITD#1#(nil(),z0) -> c_30() SPLITD#2#(tuple#2(z0,z1),z2,z3) -> c_31(SPLITD#3#(#greater(z3,z2),z0,z1,z3) ,#greater#(z3,z2) ,#GREATER#(z3,z2)) SPLITD#3#(#false(),z0,z1,z2) -> c_32() SPLITD#3#(#true(),z0,z1,z2) -> c_33() TESTLIST#(z0) -> c_34(#ABS#(#0())) TESTLIST#(z0) -> c_35(#ABS#(#pos(#s(#s(#s(#s(#0()))))))) TESTLIST#(z0) -> c_36(#ABS#(#pos(#s(#s(#s(#s(#s(#0())))))))) TESTLIST#(z0) -> c_37(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))))) TESTLIST#(z0) -> c_38(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) TESTLIST#(z0) -> c_39(#ABS#(#pos(#s(#0())))) TESTLIST#(z0) -> c_40(#ABS#(#pos(#s(#s(#0()))))) TESTLIST#(z0) -> c_41(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) TESTLIST#(z0) -> c_42(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#0()))))))))) TESTLIST#(z0) -> c_43(#ABS#(#pos(#s(#s(#s(#0())))))) append#(z0,z1) -> c_81(append#1#(z0,z1)) append#1#(::(z0,z1),z2) -> c_82(append#(z1,z2)) append#1#(nil(),z0) -> c_83() appendD#(z0,z1) -> c_84(appendD#1#(z0,z1)) appendD#1#(::(z0,z1),z2) -> c_85(appendD#(z1,z2)) appendD#1#(nil(),z0) -> c_86() quicksort#(z0) -> c_87(quicksort#1#(z0)) quicksort#1#(::(z0,z1)) -> c_88(quicksort#2#(split(z0,z1),z0),split#(z0,z1)) quicksort#1#(nil()) -> c_89() quicksort#2#(tuple#2(z0,z1),z2) -> c_90(append#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1)) quicksortD#(z0) -> c_91(quicksortD#1#(z0)) quicksortD#1#(::(z0,z1)) -> c_92(quicksortD#2#(splitD(z0,z1),z0),splitD#(z0,z1)) quicksortD#1#(nil()) -> c_93() quicksortD#2#(tuple#2(z0,z1),z2) -> c_94(appendD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1)) split#(z0,z1) -> c_95(split#1#(z1,z0)) split#1#(::(z0,z1),z2) -> c_96(split#2#(split(z2,z1),z2,z0),split#(z2,z1)) split#1#(nil(),z0) -> c_97() split#2#(tuple#2(z0,z1),z2,z3) -> c_98(split#3#(#greater(z3,z2),z0,z1,z3),#greater#(z3,z2)) split#3#(#false(),z0,z1,z2) -> c_99() split#3#(#true(),z0,z1,z2) -> c_100() splitD#(z0,z1) -> c_101(splitD#1#(z1,z0)) splitD#1#(::(z0,z1),z2) -> c_102(splitD#2#(splitD(z2,z1),z2,z0),splitD#(z2,z1)) splitD#1#(nil(),z0) -> c_103() splitD#2#(tuple#2(z0,z1),z2,z3) -> c_104(splitD#3#(#greater(z3,z2),z0,z1,z3),#greater#(z3,z2)) splitD#3#(#false(),z0,z1,z2) -> c_105() splitD#3#(#true(),z0,z1,z2) -> c_106() testList#(z0) -> c_107(#abs#(#0()) ,#abs#(#pos(#s(#s(#s(#s(#0())))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#0()))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,#abs#(#pos(#s(#0()))) ,#abs#(#pos(#s(#s(#0())))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,#abs#(#pos(#s(#s(#s(#0())))))) testQuicksort#(z0) -> c_108(quicksort#(testList(#unit())),testList#(#unit())) testQuicksort2#(z0) -> c_109(quicksort#(testList(#unit())),testList#(#unit())) - Weak TRS: #ABS(#0()) -> c15() #ABS(#neg(z0)) -> c16() #ABS(#pos(z0)) -> c17() #ABS(#s(z0)) -> c18() #CKGT(#EQ()) -> c() #CKGT(#GT()) -> c1() #CKGT(#LT()) -> c2() #COMPARE(#0(),#0()) -> c3() #COMPARE(#0(),#neg(z0)) -> c4() #COMPARE(#0(),#pos(z0)) -> c5() #COMPARE(#0(),#s(z0)) -> c6() #COMPARE(#neg(z0),#0()) -> c7() #COMPARE(#neg(z0),#neg(z1)) -> c8(#COMPARE(z1,z0)) #COMPARE(#neg(z0),#pos(z1)) -> c9() #COMPARE(#pos(z0),#0()) -> c10() #COMPARE(#pos(z0),#neg(z1)) -> c11() #COMPARE(#pos(z0),#pos(z1)) -> c12(#COMPARE(z0,z1)) #COMPARE(#s(z0),#0()) -> c13() #COMPARE(#s(z0),#s(z1)) -> c14(#COMPARE(z0,z1)) #GREATER(z0,z1) -> c19(#CKGT(#compare(z0,z1)),#COMPARE(z0,z1)) #abs(#0()) -> #0() #abs(#neg(z0)) -> #pos(z0) #abs(#pos(z0)) -> #pos(z0) #abs(#s(z0)) -> #pos(#s(z0)) #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(z0)) -> #GT() #compare(#0(),#pos(z0)) -> #LT() #compare(#0(),#s(z0)) -> #LT() #compare(#neg(z0),#0()) -> #LT() #compare(#neg(z0),#neg(z1)) -> #compare(z1,z0) #compare(#neg(z0),#pos(z1)) -> #LT() #compare(#pos(z0),#0()) -> #GT() #compare(#pos(z0),#neg(z1)) -> #GT() #compare(#pos(z0),#pos(z1)) -> #compare(z0,z1) #compare(#s(z0),#0()) -> #GT() #compare(#s(z0),#s(z1)) -> #compare(z0,z1) #greater(z0,z1) -> #ckgt(#compare(z0,z1)) APPEND(z0,z1) -> c20(APPEND#1(z0,z1)) APPEND#1(::(z0,z1),z2) -> c21(APPEND(z1,z2)) APPEND#1(nil(),z0) -> c22() APPENDD(z0,z1) -> c23(APPENDD#1(z0,z1)) APPENDD#1(::(z0,z1),z2) -> c24(APPENDD(z1,z2)) APPENDD#1(nil(),z0) -> c25() QUICKSORT(z0) -> c26(QUICKSORT#1(z0)) QUICKSORT#1(::(z0,z1)) -> c27(QUICKSORT#2(split(z0,z1),z0),SPLIT(z0,z1)) QUICKSORT#1(nil()) -> c28() QUICKSORT#2(tuple#2(z0,z1),z2) -> c29(APPEND(quicksort(z0),::(z2,quicksort(z1))),QUICKSORT(z0)) QUICKSORT#2(tuple#2(z0,z1),z2) -> c30(APPEND(quicksort(z0),::(z2,quicksort(z1))),QUICKSORT(z1)) QUICKSORTD(z0) -> c31(QUICKSORTD#1(z0)) QUICKSORTD#1(::(z0,z1)) -> c32(QUICKSORTD#2(splitD(z0,z1),z0),SPLITD(z0,z1)) QUICKSORTD#1(nil()) -> c33() QUICKSORTD#2(tuple#2(z0,z1),z2) -> c34(APPENDD(quicksortD(z0),::(z2,quicksortD(z1))),QUICKSORTD(z0)) QUICKSORTD#2(tuple#2(z0,z1),z2) -> c35(APPENDD(quicksortD(z0),::(z2,quicksortD(z1))),QUICKSORTD(z1)) SPLIT(z0,z1) -> c36(SPLIT#1(z1,z0)) SPLIT#1(::(z0,z1),z2) -> c37(SPLIT#2(split(z2,z1),z2,z0),SPLIT(z2,z1)) SPLIT#1(nil(),z0) -> c38() SPLIT#2(tuple#2(z0,z1),z2,z3) -> c39(SPLIT#3(#greater(z3,z2),z0,z1,z3),#GREATER(z3,z2)) SPLIT#3(#false(),z0,z1,z2) -> c40() SPLIT#3(#true(),z0,z1,z2) -> c41() SPLITD(z0,z1) -> c42(SPLITD#1(z1,z0)) SPLITD#1(::(z0,z1),z2) -> c43(SPLITD#2(splitD(z2,z1),z2,z0),SPLITD(z2,z1)) SPLITD#1(nil(),z0) -> c44() SPLITD#2(tuple#2(z0,z1),z2,z3) -> c45(SPLITD#3(#greater(z3,z2),z0,z1,z3),#GREATER(z3,z2)) SPLITD#3(#false(),z0,z1,z2) -> c46() SPLITD#3(#true(),z0,z1,z2) -> c47() TESTLIST(z0) -> c48(#ABS(#0())) TESTLIST(z0) -> c49(#ABS(#pos(#s(#s(#s(#s(#0()))))))) TESTLIST(z0) -> c50(#ABS(#pos(#s(#s(#s(#s(#s(#0())))))))) TESTLIST(z0) -> c51(#ABS(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))))) TESTLIST(z0) -> c52(#ABS(#pos(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) TESTLIST(z0) -> c53(#ABS(#pos(#s(#0())))) TESTLIST(z0) -> c54(#ABS(#pos(#s(#s(#0()))))) TESTLIST(z0) -> c55(#ABS(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) TESTLIST(z0) -> c56(#ABS(#pos(#s(#s(#s(#s(#s(#s(#0()))))))))) TESTLIST(z0) -> c57(#ABS(#pos(#s(#s(#s(#0())))))) TESTQUICKSORT(z0) -> c58(QUICKSORT(testList(#unit())),TESTLIST(#unit())) TESTQUICKSORT2(z0) -> c59(QUICKSORT(testList(#unit())),TESTLIST(#unit())) append(z0,z1) -> append#1(z0,z1) append#1(::(z0,z1),z2) -> ::(z0,append(z1,z2)) append#1(nil(),z0) -> z0 appendD(z0,z1) -> appendD#1(z0,z1) appendD#1(::(z0,z1),z2) -> ::(z0,appendD(z1,z2)) appendD#1(nil(),z0) -> z0 quicksort(z0) -> quicksort#1(z0) quicksort#1(::(z0,z1)) -> quicksort#2(split(z0,z1),z0) quicksort#1(nil()) -> nil() quicksort#2(tuple#2(z0,z1),z2) -> append(quicksort(z0),::(z2,quicksort(z1))) quicksortD(z0) -> quicksortD#1(z0) quicksortD#1(::(z0,z1)) -> quicksortD#2(splitD(z0,z1),z0) quicksortD#1(nil()) -> nil() quicksortD#2(tuple#2(z0,z1),z2) -> appendD(quicksortD(z0),::(z2,quicksortD(z1))) split(z0,z1) -> split#1(z1,z0) split#1(::(z0,z1),z2) -> split#2(split(z2,z1),z2,z0) split#1(nil(),z0) -> tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) -> split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) splitD(z0,z1) -> splitD#1(z1,z0) splitD#1(::(z0,z1),z2) -> splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) -> tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) -> splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) testList(z0) -> ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) testQuicksort(z0) -> quicksort(testList(#unit())) testQuicksort2(z0) -> quicksort(testList(#unit())) - Signature: {#ABS/1,#CKGT/1,#COMPARE/2,#GREATER/2,#abs/1,#ckgt/1,#compare/2,#greater/2,APPEND/2,APPEND#1/2,APPENDD/2 ,APPENDD#1/2,QUICKSORT/1,QUICKSORT#1/1,QUICKSORT#2/2,QUICKSORTD/1,QUICKSORTD#1/1,QUICKSORTD#2/2,SPLIT/2 ,SPLIT#1/2,SPLIT#2/3,SPLIT#3/4,SPLITD/2,SPLITD#1/2,SPLITD#2/3,SPLITD#3/4,TESTLIST/1,TESTQUICKSORT/1 ,TESTQUICKSORT2/1,append/2,append#1/2,appendD/2,appendD#1/2,quicksort/1,quicksort#1/1,quicksort#2/2 ,quicksortD/1,quicksortD#1/1,quicksortD#2/2,split/2,split#1/2,split#2/3,split#3/4,splitD/2,splitD#1/2 ,splitD#2/3,splitD#3/4,testList/1,testQuicksort/1,testQuicksort2/1,#ABS#/1,#CKGT#/1,#COMPARE#/2,#GREATER#/2 ,#abs#/1,#ckgt#/1,#compare#/2,#greater#/2,APPEND#/2,APPEND#1#/2,APPENDD#/2,APPENDD#1#/2,QUICKSORT#/1 ,QUICKSORT#1#/1,QUICKSORT#2#/2,QUICKSORTD#/1,QUICKSORTD#1#/1,QUICKSORTD#2#/2,SPLIT#/2,SPLIT#1#/2,SPLIT#2#/3 ,SPLIT#3#/4,SPLITD#/2,SPLITD#1#/2,SPLITD#2#/3,SPLITD#3#/4,TESTLIST#/1,TESTQUICKSORT#/1,TESTQUICKSORT2#/1 ,append#/2,append#1#/2,appendD#/2,appendD#1#/2,quicksort#/1,quicksort#1#/1,quicksort#2#/2,quicksortD#/1 ,quicksortD#1#/1,quicksortD#2#/2,split#/2,split#1#/2,split#2#/3,split#3#/4,splitD#/2,splitD#1#/2,splitD#2#/3 ,splitD#3#/4,testList#/1,testQuicksort#/1,testQuicksort2#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,#unit/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/0,c16/0,c17/0,c18/0,c19/2,c2/0 ,c20/1,c21/1,c22/0,c23/1,c24/1,c25/0,c26/1,c27/2,c28/0,c29/2,c3/0,c30/2,c31/1,c32/2,c33/0,c34/2,c35/2,c36/1 ,c37/2,c38/0,c39/2,c4/0,c40/0,c41/0,c42/1,c43/2,c44/0,c45/2,c46/0,c47/0,c48/1,c49/1,c5/0,c50/1,c51/1,c52/1 ,c53/1,c54/1,c55/1,c56/1,c57/1,c58/2,c59/2,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/3 ,c_6/1,c_7/1,c_8/0,c_9/1,c_10/1,c_11/0,c_12/1,c_13/3,c_14/0,c_15/4,c_16/4,c_17/1,c_18/3,c_19/0,c_20/4,c_21/4 ,c_22/1,c_23/3,c_24/0,c_25/3,c_26/0,c_27/0,c_28/1,c_29/3,c_30/0,c_31/3,c_32/0,c_33/0,c_34/1,c_35/1,c_36/1 ,c_37/1,c_38/1,c_39/1,c_40/1,c_41/1,c_42/1,c_43/1,c_44/3,c_45/3,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0 ,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0,c_58/1,c_59/0,c_60/1,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0 ,c_67/0,c_68/0,c_69/0,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/0,c_76/0,c_77/1,c_78/0,c_79/1,c_80/2,c_81/1 ,c_82/1,c_83/0,c_84/1,c_85/1,c_86/0,c_87/1,c_88/2,c_89/0,c_90/3,c_91/1,c_92/2,c_93/0,c_94/3,c_95/1,c_96/2 ,c_97/0,c_98/2,c_99/0,c_100/0,c_101/1,c_102/2,c_103/0,c_104/2,c_105/0,c_106/0,c_107/10,c_108/2,c_109/2} - Obligation: innermost runtime complexity wrt. defined symbols {#ABS#,#CKGT#,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare# ,#greater#,APPEND#,APPEND#1#,APPENDD#,APPENDD#1#,QUICKSORT#,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD# ,QUICKSORTD#1#,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2#,SPLIT#3#,SPLITD#,SPLITD#1#,SPLITD#2#,SPLITD#3# ,TESTLIST#,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1#,appendD#,appendD#1#,quicksort#,quicksort#1# ,quicksort#2#,quicksortD#,quicksortD#1#,quicksortD#2#,split#,split#1#,split#2#,split#3#,splitD#,splitD#1# ,splitD#2#,splitD#3#,testList#,testQuicksort#,testQuicksort2#} and constructors {#0,#EQ,#GT,#LT,#false,#neg ,#pos,#s,#true,#unit,::,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,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52 ,c53,c54,c55,c56,c57,c58,c59,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:APPEND#(z0,z1) -> c_6(APPEND#1#(z0,z1)) -->_1 APPEND#1#(::(z0,z1),z2) -> c_7(APPEND#(z1,z2)):2 -->_1 APPEND#1#(nil(),z0) -> c_8():59 2:S:APPEND#1#(::(z0,z1),z2) -> c_7(APPEND#(z1,z2)) -->_1 APPEND#(z0,z1) -> c_6(APPEND#1#(z0,z1)):1 3:S:APPENDD#(z0,z1) -> c_9(APPENDD#1#(z0,z1)) -->_1 APPENDD#1#(::(z0,z1),z2) -> c_10(APPENDD#(z1,z2)):4 -->_1 APPENDD#1#(nil(),z0) -> c_11():60 4:S:APPENDD#1#(::(z0,z1),z2) -> c_10(APPENDD#(z1,z2)) -->_1 APPENDD#(z0,z1) -> c_9(APPENDD#1#(z0,z1)):3 5:S:QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)) -->_1 QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0),split#(z0,z1),SPLIT#(z0,z1)):6 -->_1 QUICKSORT#1#(nil()) -> c_14():61 6:S:QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0),split#(z0,z1),SPLIT#(z0,z1)) -->_2 split#(z0,z1) -> c_95(split#1#(z1,z0)):95 -->_3 SPLIT#(z0,z1) -> c_22(SPLIT#1#(z1,z0)):13 -->_1 QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(APPEND#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1) ,QUICKSORT#(z1)):8 -->_1 QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(APPEND#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1) ,QUICKSORT#(z0)):7 7:S:QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(APPEND#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1) ,QUICKSORT#(z0)) -->_3 quicksort#(z0) -> c_87(quicksort#1#(z0)):87 -->_2 quicksort#(z0) -> c_87(quicksort#1#(z0)):87 -->_4 QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)):5 -->_1 APPEND#(z0,z1) -> c_6(APPEND#1#(z0,z1)):1 8:S:QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(APPEND#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1) ,QUICKSORT#(z1)) -->_3 quicksort#(z0) -> c_87(quicksort#1#(z0)):87 -->_2 quicksort#(z0) -> c_87(quicksort#1#(z0)):87 -->_4 QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)):5 -->_1 APPEND#(z0,z1) -> c_6(APPEND#1#(z0,z1)):1 9:S:QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)) -->_1 QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0),splitD#(z0,z1),SPLITD#(z0,z1)):10 -->_1 QUICKSORTD#1#(nil()) -> c_19():62 10:S:QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0),splitD#(z0,z1),SPLITD#(z0,z1)) -->_2 splitD#(z0,z1) -> c_101(splitD#1#(z1,z0)):101 -->_3 SPLITD#(z0,z1) -> c_28(SPLITD#1#(z1,z0)):15 -->_1 QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1) ,QUICKSORTD#(z1)):12 -->_1 QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1) ,QUICKSORTD#(z0)):11 11:S:QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1) ,QUICKSORTD#(z0)) -->_3 quicksortD#(z0) -> c_91(quicksortD#1#(z0)):91 -->_2 quicksortD#(z0) -> c_91(quicksortD#1#(z0)):91 -->_4 QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)):9 -->_1 APPENDD#(z0,z1) -> c_9(APPENDD#1#(z0,z1)):3 12:S:QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1) ,QUICKSORTD#(z1)) -->_3 quicksortD#(z0) -> c_91(quicksortD#1#(z0)):91 -->_2 quicksortD#(z0) -> c_91(quicksortD#1#(z0)):91 -->_4 QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)):9 -->_1 APPENDD#(z0,z1) -> c_9(APPENDD#1#(z0,z1)):3 13:S:SPLIT#(z0,z1) -> c_22(SPLIT#1#(z1,z0)) -->_1 SPLIT#1#(::(z0,z1),z2) -> c_23(SPLIT#2#(split(z2,z1),z2,z0),split#(z2,z1),SPLIT#(z2,z1)):14 -->_1 SPLIT#1#(nil(),z0) -> c_24():63 14:S:SPLIT#1#(::(z0,z1),z2) -> c_23(SPLIT#2#(split(z2,z1),z2,z0),split#(z2,z1),SPLIT#(z2,z1)) -->_2 split#(z0,z1) -> c_95(split#1#(z1,z0)):95 -->_1 SPLIT#2#(tuple#2(z0,z1),z2,z3) -> c_25(SPLIT#3#(#greater(z3,z2),z0,z1,z3) ,#greater#(z3,z2) ,#GREATER#(z3,z2)):64 -->_3 SPLIT#(z0,z1) -> c_22(SPLIT#1#(z1,z0)):13 15:S:SPLITD#(z0,z1) -> c_28(SPLITD#1#(z1,z0)) -->_1 SPLITD#1#(::(z0,z1),z2) -> c_29(SPLITD#2#(splitD(z2,z1),z2,z0),splitD#(z2,z1),SPLITD#(z2,z1)):16 -->_1 SPLITD#1#(nil(),z0) -> c_30():67 16:S:SPLITD#1#(::(z0,z1),z2) -> c_29(SPLITD#2#(splitD(z2,z1),z2,z0),splitD#(z2,z1),SPLITD#(z2,z1)) -->_2 splitD#(z0,z1) -> c_101(splitD#1#(z1,z0)):101 -->_1 SPLITD#2#(tuple#2(z0,z1),z2,z3) -> c_31(SPLITD#3#(#greater(z3,z2),z0,z1,z3) ,#greater#(z3,z2) ,#GREATER#(z3,z2)):68 -->_3 SPLITD#(z0,z1) -> c_28(SPLITD#1#(z1,z0)):15 17:S:TESTQUICKSORT#(z0) -> c_44(QUICKSORT#(testList(#unit())),testList#(#unit()),TESTLIST#(#unit())) -->_2 testList#(z0) -> c_107(#abs#(#0()) ,#abs#(#pos(#s(#s(#s(#s(#0())))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#0()))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,#abs#(#pos(#s(#0()))) ,#abs#(#pos(#s(#s(#0())))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,#abs#(#pos(#s(#s(#s(#0())))))):107 -->_3 TESTLIST#(z0) -> c_43(#ABS#(#pos(#s(#s(#s(#0())))))):80 -->_3 TESTLIST#(z0) -> c_42(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#0()))))))))):79 -->_3 TESTLIST#(z0) -> c_41(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))):78 -->_3 TESTLIST#(z0) -> c_40(#ABS#(#pos(#s(#s(#0()))))):77 -->_3 TESTLIST#(z0) -> c_39(#ABS#(#pos(#s(#0())))):76 -->_3 TESTLIST#(z0) -> c_38(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#0())))))))))):75 -->_3 TESTLIST#(z0) -> c_37(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))))):74 -->_3 TESTLIST#(z0) -> c_36(#ABS#(#pos(#s(#s(#s(#s(#s(#0())))))))):73 -->_3 TESTLIST#(z0) -> c_35(#ABS#(#pos(#s(#s(#s(#s(#0()))))))):72 -->_3 TESTLIST#(z0) -> c_34(#ABS#(#0())):71 -->_1 QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)):5 18:S:TESTQUICKSORT2#(z0) -> c_45(QUICKSORT#(testList(#unit())),testList#(#unit()),TESTLIST#(#unit())) -->_2 testList#(z0) -> c_107(#abs#(#0()) ,#abs#(#pos(#s(#s(#s(#s(#0())))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#0()))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,#abs#(#pos(#s(#0()))) ,#abs#(#pos(#s(#s(#0())))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,#abs#(#pos(#s(#s(#s(#0())))))):107 -->_3 TESTLIST#(z0) -> c_43(#ABS#(#pos(#s(#s(#s(#0())))))):80 -->_3 TESTLIST#(z0) -> c_42(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#0()))))))))):79 -->_3 TESTLIST#(z0) -> c_41(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))):78 -->_3 TESTLIST#(z0) -> c_40(#ABS#(#pos(#s(#s(#0()))))):77 -->_3 TESTLIST#(z0) -> c_39(#ABS#(#pos(#s(#0())))):76 -->_3 TESTLIST#(z0) -> c_38(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#0())))))))))):75 -->_3 TESTLIST#(z0) -> c_37(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))))):74 -->_3 TESTLIST#(z0) -> c_36(#ABS#(#pos(#s(#s(#s(#s(#s(#0())))))))):73 -->_3 TESTLIST#(z0) -> c_35(#ABS#(#pos(#s(#s(#s(#s(#0()))))))):72 -->_3 TESTLIST#(z0) -> c_34(#ABS#(#0())):71 -->_1 QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)):5 19:W:#ABS#(#0()) -> c_1() 20:W:#ABS#(#neg(z0)) -> c_2() 21:W:#ABS#(#pos(z0)) -> c_3() 22:W:#ABS#(#s(z0)) -> c_4() 23:W:#CKGT#(#EQ()) -> c_46() 24:W:#CKGT#(#GT()) -> c_47() 25:W:#CKGT#(#LT()) -> c_48() 26:W:#COMPARE#(#0(),#0()) -> c_49() 27:W:#COMPARE#(#0(),#neg(z0)) -> c_50() 28:W:#COMPARE#(#0(),#pos(z0)) -> c_51() 29:W:#COMPARE#(#0(),#s(z0)) -> c_52() 30:W:#COMPARE#(#neg(z0),#0()) -> c_53() 31:W:#COMPARE#(#neg(z0),#neg(z1)) -> c_54(#COMPARE#(z1,z0)) -->_1 #COMPARE#(#s(z0),#s(z1)) -> c_60(#COMPARE#(z0,z1)):37 -->_1 #COMPARE#(#pos(z0),#pos(z1)) -> c_58(#COMPARE#(z0,z1)):35 -->_1 #COMPARE#(#s(z0),#0()) -> c_59():36 -->_1 #COMPARE#(#pos(z0),#neg(z1)) -> c_57():34 -->_1 #COMPARE#(#pos(z0),#0()) -> c_56():33 -->_1 #COMPARE#(#neg(z0),#pos(z1)) -> c_55():32 -->_1 #COMPARE#(#neg(z0),#neg(z1)) -> c_54(#COMPARE#(z1,z0)):31 -->_1 #COMPARE#(#neg(z0),#0()) -> c_53():30 -->_1 #COMPARE#(#0(),#s(z0)) -> c_52():29 -->_1 #COMPARE#(#0(),#pos(z0)) -> c_51():28 -->_1 #COMPARE#(#0(),#neg(z0)) -> c_50():27 -->_1 #COMPARE#(#0(),#0()) -> c_49():26 32:W:#COMPARE#(#neg(z0),#pos(z1)) -> c_55() 33:W:#COMPARE#(#pos(z0),#0()) -> c_56() 34:W:#COMPARE#(#pos(z0),#neg(z1)) -> c_57() 35:W:#COMPARE#(#pos(z0),#pos(z1)) -> c_58(#COMPARE#(z0,z1)) -->_1 #COMPARE#(#s(z0),#s(z1)) -> c_60(#COMPARE#(z0,z1)):37 -->_1 #COMPARE#(#s(z0),#0()) -> c_59():36 -->_1 #COMPARE#(#pos(z0),#pos(z1)) -> c_58(#COMPARE#(z0,z1)):35 -->_1 #COMPARE#(#pos(z0),#neg(z1)) -> c_57():34 -->_1 #COMPARE#(#pos(z0),#0()) -> c_56():33 -->_1 #COMPARE#(#neg(z0),#pos(z1)) -> c_55():32 -->_1 #COMPARE#(#neg(z0),#neg(z1)) -> c_54(#COMPARE#(z1,z0)):31 -->_1 #COMPARE#(#neg(z0),#0()) -> c_53():30 -->_1 #COMPARE#(#0(),#s(z0)) -> c_52():29 -->_1 #COMPARE#(#0(),#pos(z0)) -> c_51():28 -->_1 #COMPARE#(#0(),#neg(z0)) -> c_50():27 -->_1 #COMPARE#(#0(),#0()) -> c_49():26 36:W:#COMPARE#(#s(z0),#0()) -> c_59() 37:W:#COMPARE#(#s(z0),#s(z1)) -> c_60(#COMPARE#(z0,z1)) -->_1 #COMPARE#(#s(z0),#s(z1)) -> c_60(#COMPARE#(z0,z1)):37 -->_1 #COMPARE#(#s(z0),#0()) -> c_59():36 -->_1 #COMPARE#(#pos(z0),#pos(z1)) -> c_58(#COMPARE#(z0,z1)):35 -->_1 #COMPARE#(#pos(z0),#neg(z1)) -> c_57():34 -->_1 #COMPARE#(#pos(z0),#0()) -> c_56():33 -->_1 #COMPARE#(#neg(z0),#pos(z1)) -> c_55():32 -->_1 #COMPARE#(#neg(z0),#neg(z1)) -> c_54(#COMPARE#(z1,z0)):31 -->_1 #COMPARE#(#neg(z0),#0()) -> c_53():30 -->_1 #COMPARE#(#0(),#s(z0)) -> c_52():29 -->_1 #COMPARE#(#0(),#pos(z0)) -> c_51():28 -->_1 #COMPARE#(#0(),#neg(z0)) -> c_50():27 -->_1 #COMPARE#(#0(),#0()) -> c_49():26 38:W:#GREATER#(z0,z1) -> c_5(#CKGT#(#compare(z0,z1)),#compare#(z0,z1),#COMPARE#(z0,z1)) -->_2 #compare#(#s(z0),#s(z1)) -> c_79(#compare#(z0,z1)):57 -->_2 #compare#(#pos(z0),#pos(z1)) -> c_77(#compare#(z0,z1)):55 -->_2 #compare#(#neg(z0),#neg(z1)) -> c_73(#compare#(z1,z0)):51 -->_2 #compare#(#s(z0),#0()) -> c_78():56 -->_2 #compare#(#pos(z0),#neg(z1)) -> c_76():54 -->_2 #compare#(#pos(z0),#0()) -> c_75():53 -->_2 #compare#(#neg(z0),#pos(z1)) -> c_74():52 -->_2 #compare#(#neg(z0),#0()) -> c_72():50 -->_2 #compare#(#0(),#s(z0)) -> c_71():49 -->_2 #compare#(#0(),#pos(z0)) -> c_70():48 -->_2 #compare#(#0(),#neg(z0)) -> c_69():47 -->_2 #compare#(#0(),#0()) -> c_68():46 -->_3 #COMPARE#(#s(z0),#s(z1)) -> c_60(#COMPARE#(z0,z1)):37 -->_3 #COMPARE#(#s(z0),#0()) -> c_59():36 -->_3 #COMPARE#(#pos(z0),#pos(z1)) -> c_58(#COMPARE#(z0,z1)):35 -->_3 #COMPARE#(#pos(z0),#neg(z1)) -> c_57():34 -->_3 #COMPARE#(#pos(z0),#0()) -> c_56():33 -->_3 #COMPARE#(#neg(z0),#pos(z1)) -> c_55():32 -->_3 #COMPARE#(#neg(z0),#neg(z1)) -> c_54(#COMPARE#(z1,z0)):31 -->_3 #COMPARE#(#neg(z0),#0()) -> c_53():30 -->_3 #COMPARE#(#0(),#s(z0)) -> c_52():29 -->_3 #COMPARE#(#0(),#pos(z0)) -> c_51():28 -->_3 #COMPARE#(#0(),#neg(z0)) -> c_50():27 -->_3 #COMPARE#(#0(),#0()) -> c_49():26 -->_1 #CKGT#(#LT()) -> c_48():25 -->_1 #CKGT#(#GT()) -> c_47():24 -->_1 #CKGT#(#EQ()) -> c_46():23 39:W:#abs#(#0()) -> c_61() 40:W:#abs#(#neg(z0)) -> c_62() 41:W:#abs#(#pos(z0)) -> c_63() 42:W:#abs#(#s(z0)) -> c_64() 43:W:#ckgt#(#EQ()) -> c_65() 44:W:#ckgt#(#GT()) -> c_66() 45:W:#ckgt#(#LT()) -> c_67() 46:W:#compare#(#0(),#0()) -> c_68() 47:W:#compare#(#0(),#neg(z0)) -> c_69() 48:W:#compare#(#0(),#pos(z0)) -> c_70() 49:W:#compare#(#0(),#s(z0)) -> c_71() 50:W:#compare#(#neg(z0),#0()) -> c_72() 51:W:#compare#(#neg(z0),#neg(z1)) -> c_73(#compare#(z1,z0)) -->_1 #compare#(#s(z0),#s(z1)) -> c_79(#compare#(z0,z1)):57 -->_1 #compare#(#pos(z0),#pos(z1)) -> c_77(#compare#(z0,z1)):55 -->_1 #compare#(#s(z0),#0()) -> c_78():56 -->_1 #compare#(#pos(z0),#neg(z1)) -> c_76():54 -->_1 #compare#(#pos(z0),#0()) -> c_75():53 -->_1 #compare#(#neg(z0),#pos(z1)) -> c_74():52 -->_1 #compare#(#neg(z0),#neg(z1)) -> c_73(#compare#(z1,z0)):51 -->_1 #compare#(#neg(z0),#0()) -> c_72():50 -->_1 #compare#(#0(),#s(z0)) -> c_71():49 -->_1 #compare#(#0(),#pos(z0)) -> c_70():48 -->_1 #compare#(#0(),#neg(z0)) -> c_69():47 -->_1 #compare#(#0(),#0()) -> c_68():46 52:W:#compare#(#neg(z0),#pos(z1)) -> c_74() 53:W:#compare#(#pos(z0),#0()) -> c_75() 54:W:#compare#(#pos(z0),#neg(z1)) -> c_76() 55:W:#compare#(#pos(z0),#pos(z1)) -> c_77(#compare#(z0,z1)) -->_1 #compare#(#s(z0),#s(z1)) -> c_79(#compare#(z0,z1)):57 -->_1 #compare#(#s(z0),#0()) -> c_78():56 -->_1 #compare#(#pos(z0),#pos(z1)) -> c_77(#compare#(z0,z1)):55 -->_1 #compare#(#pos(z0),#neg(z1)) -> c_76():54 -->_1 #compare#(#pos(z0),#0()) -> c_75():53 -->_1 #compare#(#neg(z0),#pos(z1)) -> c_74():52 -->_1 #compare#(#neg(z0),#neg(z1)) -> c_73(#compare#(z1,z0)):51 -->_1 #compare#(#neg(z0),#0()) -> c_72():50 -->_1 #compare#(#0(),#s(z0)) -> c_71():49 -->_1 #compare#(#0(),#pos(z0)) -> c_70():48 -->_1 #compare#(#0(),#neg(z0)) -> c_69():47 -->_1 #compare#(#0(),#0()) -> c_68():46 56:W:#compare#(#s(z0),#0()) -> c_78() 57:W:#compare#(#s(z0),#s(z1)) -> c_79(#compare#(z0,z1)) -->_1 #compare#(#s(z0),#s(z1)) -> c_79(#compare#(z0,z1)):57 -->_1 #compare#(#s(z0),#0()) -> c_78():56 -->_1 #compare#(#pos(z0),#pos(z1)) -> c_77(#compare#(z0,z1)):55 -->_1 #compare#(#pos(z0),#neg(z1)) -> c_76():54 -->_1 #compare#(#pos(z0),#0()) -> c_75():53 -->_1 #compare#(#neg(z0),#pos(z1)) -> c_74():52 -->_1 #compare#(#neg(z0),#neg(z1)) -> c_73(#compare#(z1,z0)):51 -->_1 #compare#(#neg(z0),#0()) -> c_72():50 -->_1 #compare#(#0(),#s(z0)) -> c_71():49 -->_1 #compare#(#0(),#pos(z0)) -> c_70():48 -->_1 #compare#(#0(),#neg(z0)) -> c_69():47 -->_1 #compare#(#0(),#0()) -> c_68():46 58:W:#greater#(z0,z1) -> c_80(#ckgt#(#compare(z0,z1)),#compare#(z0,z1)) -->_2 #compare#(#s(z0),#s(z1)) -> c_79(#compare#(z0,z1)):57 -->_2 #compare#(#s(z0),#0()) -> c_78():56 -->_2 #compare#(#pos(z0),#pos(z1)) -> c_77(#compare#(z0,z1)):55 -->_2 #compare#(#pos(z0),#neg(z1)) -> c_76():54 -->_2 #compare#(#pos(z0),#0()) -> c_75():53 -->_2 #compare#(#neg(z0),#pos(z1)) -> c_74():52 -->_2 #compare#(#neg(z0),#neg(z1)) -> c_73(#compare#(z1,z0)):51 -->_2 #compare#(#neg(z0),#0()) -> c_72():50 -->_2 #compare#(#0(),#s(z0)) -> c_71():49 -->_2 #compare#(#0(),#pos(z0)) -> c_70():48 -->_2 #compare#(#0(),#neg(z0)) -> c_69():47 -->_2 #compare#(#0(),#0()) -> c_68():46 -->_1 #ckgt#(#LT()) -> c_67():45 -->_1 #ckgt#(#GT()) -> c_66():44 -->_1 #ckgt#(#EQ()) -> c_65():43 59:W:APPEND#1#(nil(),z0) -> c_8() 60:W:APPENDD#1#(nil(),z0) -> c_11() 61:W:QUICKSORT#1#(nil()) -> c_14() 62:W:QUICKSORTD#1#(nil()) -> c_19() 63:W:SPLIT#1#(nil(),z0) -> c_24() 64:W:SPLIT#2#(tuple#2(z0,z1),z2,z3) -> c_25(SPLIT#3#(#greater(z3,z2),z0,z1,z3) ,#greater#(z3,z2) ,#GREATER#(z3,z2)) -->_1 SPLIT#3#(#true(),z0,z1,z2) -> c_27():66 -->_1 SPLIT#3#(#false(),z0,z1,z2) -> c_26():65 -->_2 #greater#(z0,z1) -> c_80(#ckgt#(#compare(z0,z1)),#compare#(z0,z1)):58 -->_3 #GREATER#(z0,z1) -> c_5(#CKGT#(#compare(z0,z1)),#compare#(z0,z1),#COMPARE#(z0,z1)):38 65:W:SPLIT#3#(#false(),z0,z1,z2) -> c_26() 66:W:SPLIT#3#(#true(),z0,z1,z2) -> c_27() 67:W:SPLITD#1#(nil(),z0) -> c_30() 68:W:SPLITD#2#(tuple#2(z0,z1),z2,z3) -> c_31(SPLITD#3#(#greater(z3,z2),z0,z1,z3) ,#greater#(z3,z2) ,#GREATER#(z3,z2)) -->_1 SPLITD#3#(#true(),z0,z1,z2) -> c_33():70 -->_1 SPLITD#3#(#false(),z0,z1,z2) -> c_32():69 -->_2 #greater#(z0,z1) -> c_80(#ckgt#(#compare(z0,z1)),#compare#(z0,z1)):58 -->_3 #GREATER#(z0,z1) -> c_5(#CKGT#(#compare(z0,z1)),#compare#(z0,z1),#COMPARE#(z0,z1)):38 69:W:SPLITD#3#(#false(),z0,z1,z2) -> c_32() 70:W:SPLITD#3#(#true(),z0,z1,z2) -> c_33() 71:W:TESTLIST#(z0) -> c_34(#ABS#(#0())) -->_1 #ABS#(#0()) -> c_1():19 72:W:TESTLIST#(z0) -> c_35(#ABS#(#pos(#s(#s(#s(#s(#0()))))))) -->_1 #ABS#(#pos(z0)) -> c_3():21 73:W:TESTLIST#(z0) -> c_36(#ABS#(#pos(#s(#s(#s(#s(#s(#0())))))))) -->_1 #ABS#(#pos(z0)) -> c_3():21 74:W:TESTLIST#(z0) -> c_37(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))))) -->_1 #ABS#(#pos(z0)) -> c_3():21 75:W:TESTLIST#(z0) -> c_38(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) -->_1 #ABS#(#pos(z0)) -> c_3():21 76:W:TESTLIST#(z0) -> c_39(#ABS#(#pos(#s(#0())))) -->_1 #ABS#(#pos(z0)) -> c_3():21 77:W:TESTLIST#(z0) -> c_40(#ABS#(#pos(#s(#s(#0()))))) -->_1 #ABS#(#pos(z0)) -> c_3():21 78:W:TESTLIST#(z0) -> c_41(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) -->_1 #ABS#(#pos(z0)) -> c_3():21 79:W:TESTLIST#(z0) -> c_42(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#0()))))))))) -->_1 #ABS#(#pos(z0)) -> c_3():21 80:W:TESTLIST#(z0) -> c_43(#ABS#(#pos(#s(#s(#s(#0())))))) -->_1 #ABS#(#pos(z0)) -> c_3():21 81:W:append#(z0,z1) -> c_81(append#1#(z0,z1)) -->_1 append#1#(::(z0,z1),z2) -> c_82(append#(z1,z2)):82 -->_1 append#1#(nil(),z0) -> c_83():83 82:W:append#1#(::(z0,z1),z2) -> c_82(append#(z1,z2)) -->_1 append#(z0,z1) -> c_81(append#1#(z0,z1)):81 83:W:append#1#(nil(),z0) -> c_83() 84:W:appendD#(z0,z1) -> c_84(appendD#1#(z0,z1)) -->_1 appendD#1#(::(z0,z1),z2) -> c_85(appendD#(z1,z2)):85 -->_1 appendD#1#(nil(),z0) -> c_86():86 85:W:appendD#1#(::(z0,z1),z2) -> c_85(appendD#(z1,z2)) -->_1 appendD#(z0,z1) -> c_84(appendD#1#(z0,z1)):84 86:W:appendD#1#(nil(),z0) -> c_86() 87:W:quicksort#(z0) -> c_87(quicksort#1#(z0)) -->_1 quicksort#1#(::(z0,z1)) -> c_88(quicksort#2#(split(z0,z1),z0),split#(z0,z1)):88 -->_1 quicksort#1#(nil()) -> c_89():89 88:W:quicksort#1#(::(z0,z1)) -> c_88(quicksort#2#(split(z0,z1),z0),split#(z0,z1)) -->_2 split#(z0,z1) -> c_95(split#1#(z1,z0)):95 -->_1 quicksort#2#(tuple#2(z0,z1),z2) -> c_90(append#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1)):90 89:W:quicksort#1#(nil()) -> c_89() 90:W:quicksort#2#(tuple#2(z0,z1),z2) -> c_90(append#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1)) -->_3 quicksort#(z0) -> c_87(quicksort#1#(z0)):87 -->_2 quicksort#(z0) -> c_87(quicksort#1#(z0)):87 -->_1 append#(z0,z1) -> c_81(append#1#(z0,z1)):81 91:W:quicksortD#(z0) -> c_91(quicksortD#1#(z0)) -->_1 quicksortD#1#(::(z0,z1)) -> c_92(quicksortD#2#(splitD(z0,z1),z0),splitD#(z0,z1)):92 -->_1 quicksortD#1#(nil()) -> c_93():93 92:W:quicksortD#1#(::(z0,z1)) -> c_92(quicksortD#2#(splitD(z0,z1),z0),splitD#(z0,z1)) -->_2 splitD#(z0,z1) -> c_101(splitD#1#(z1,z0)):101 -->_1 quicksortD#2#(tuple#2(z0,z1),z2) -> c_94(appendD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1)):94 93:W:quicksortD#1#(nil()) -> c_93() 94:W:quicksortD#2#(tuple#2(z0,z1),z2) -> c_94(appendD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1)) -->_3 quicksortD#(z0) -> c_91(quicksortD#1#(z0)):91 -->_2 quicksortD#(z0) -> c_91(quicksortD#1#(z0)):91 -->_1 appendD#(z0,z1) -> c_84(appendD#1#(z0,z1)):84 95:W:split#(z0,z1) -> c_95(split#1#(z1,z0)) -->_1 split#1#(::(z0,z1),z2) -> c_96(split#2#(split(z2,z1),z2,z0),split#(z2,z1)):96 -->_1 split#1#(nil(),z0) -> c_97():97 96:W:split#1#(::(z0,z1),z2) -> c_96(split#2#(split(z2,z1),z2,z0),split#(z2,z1)) -->_1 split#2#(tuple#2(z0,z1),z2,z3) -> c_98(split#3#(#greater(z3,z2),z0,z1,z3),#greater#(z3,z2)):98 -->_2 split#(z0,z1) -> c_95(split#1#(z1,z0)):95 97:W:split#1#(nil(),z0) -> c_97() 98:W:split#2#(tuple#2(z0,z1),z2,z3) -> c_98(split#3#(#greater(z3,z2),z0,z1,z3),#greater#(z3,z2)) -->_1 split#3#(#true(),z0,z1,z2) -> c_100():100 -->_1 split#3#(#false(),z0,z1,z2) -> c_99():99 -->_2 #greater#(z0,z1) -> c_80(#ckgt#(#compare(z0,z1)),#compare#(z0,z1)):58 99:W:split#3#(#false(),z0,z1,z2) -> c_99() 100:W:split#3#(#true(),z0,z1,z2) -> c_100() 101:W:splitD#(z0,z1) -> c_101(splitD#1#(z1,z0)) -->_1 splitD#1#(::(z0,z1),z2) -> c_102(splitD#2#(splitD(z2,z1),z2,z0),splitD#(z2,z1)):102 -->_1 splitD#1#(nil(),z0) -> c_103():103 102:W:splitD#1#(::(z0,z1),z2) -> c_102(splitD#2#(splitD(z2,z1),z2,z0),splitD#(z2,z1)) -->_1 splitD#2#(tuple#2(z0,z1),z2,z3) -> c_104(splitD#3#(#greater(z3,z2),z0,z1,z3),#greater#(z3,z2)):104 -->_2 splitD#(z0,z1) -> c_101(splitD#1#(z1,z0)):101 103:W:splitD#1#(nil(),z0) -> c_103() 104:W:splitD#2#(tuple#2(z0,z1),z2,z3) -> c_104(splitD#3#(#greater(z3,z2),z0,z1,z3),#greater#(z3,z2)) -->_1 splitD#3#(#true(),z0,z1,z2) -> c_106():106 -->_1 splitD#3#(#false(),z0,z1,z2) -> c_105():105 -->_2 #greater#(z0,z1) -> c_80(#ckgt#(#compare(z0,z1)),#compare#(z0,z1)):58 105:W:splitD#3#(#false(),z0,z1,z2) -> c_105() 106:W:splitD#3#(#true(),z0,z1,z2) -> c_106() 107:W:testList#(z0) -> c_107(#abs#(#0()) ,#abs#(#pos(#s(#s(#s(#s(#0())))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#0()))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,#abs#(#pos(#s(#0()))) ,#abs#(#pos(#s(#s(#0())))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,#abs#(#pos(#s(#s(#s(#0())))))) -->_10 #abs#(#pos(z0)) -> c_63():41 -->_9 #abs#(#pos(z0)) -> c_63():41 -->_8 #abs#(#pos(z0)) -> c_63():41 -->_7 #abs#(#pos(z0)) -> c_63():41 -->_6 #abs#(#pos(z0)) -> c_63():41 -->_5 #abs#(#pos(z0)) -> c_63():41 -->_4 #abs#(#pos(z0)) -> c_63():41 -->_3 #abs#(#pos(z0)) -> c_63():41 -->_2 #abs#(#pos(z0)) -> c_63():41 -->_1 #abs#(#0()) -> c_61():39 108:W:testQuicksort#(z0) -> c_108(quicksort#(testList(#unit())),testList#(#unit())) -->_2 testList#(z0) -> c_107(#abs#(#0()) ,#abs#(#pos(#s(#s(#s(#s(#0())))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#0()))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,#abs#(#pos(#s(#0()))) ,#abs#(#pos(#s(#s(#0())))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,#abs#(#pos(#s(#s(#s(#0())))))):107 -->_1 quicksort#(z0) -> c_87(quicksort#1#(z0)):87 109:W:testQuicksort2#(z0) -> c_109(quicksort#(testList(#unit())),testList#(#unit())) -->_2 testList#(z0) -> c_107(#abs#(#0()) ,#abs#(#pos(#s(#s(#s(#s(#0())))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#0()))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,#abs#(#pos(#s(#0()))) ,#abs#(#pos(#s(#s(#0())))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,#abs#(#pos(#s(#s(#s(#0())))))):107 -->_1 quicksort#(z0) -> c_87(quicksort#1#(z0)):87 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 109: testQuicksort2#(z0) -> c_109(quicksort#(testList(#unit())),testList#(#unit())) 108: testQuicksort#(z0) -> c_108(quicksort#(testList(#unit())),testList#(#unit())) 42: #abs#(#s(z0)) -> c_64() 40: #abs#(#neg(z0)) -> c_62() 22: #ABS#(#s(z0)) -> c_4() 20: #ABS#(#neg(z0)) -> c_2() 71: TESTLIST#(z0) -> c_34(#ABS#(#0())) 19: #ABS#(#0()) -> c_1() 72: TESTLIST#(z0) -> c_35(#ABS#(#pos(#s(#s(#s(#s(#0()))))))) 73: TESTLIST#(z0) -> c_36(#ABS#(#pos(#s(#s(#s(#s(#s(#0())))))))) 74: TESTLIST#(z0) -> c_37(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))))) 75: TESTLIST#(z0) -> c_38(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) 76: TESTLIST#(z0) -> c_39(#ABS#(#pos(#s(#0())))) 77: TESTLIST#(z0) -> c_40(#ABS#(#pos(#s(#s(#0()))))) 78: TESTLIST#(z0) -> c_41(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) 79: TESTLIST#(z0) -> c_42(#ABS#(#pos(#s(#s(#s(#s(#s(#s(#0()))))))))) 80: TESTLIST#(z0) -> c_43(#ABS#(#pos(#s(#s(#s(#0())))))) 21: #ABS#(#pos(z0)) -> c_3() 107: testList#(z0) -> c_107(#abs#(#0()) ,#abs#(#pos(#s(#s(#s(#s(#0())))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#0()))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,#abs#(#pos(#s(#0()))) ,#abs#(#pos(#s(#s(#0())))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,#abs#(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,#abs#(#pos(#s(#s(#s(#0())))))) 39: #abs#(#0()) -> c_61() 41: #abs#(#pos(z0)) -> c_63() 62: QUICKSORTD#1#(nil()) -> c_19() 91: quicksortD#(z0) -> c_91(quicksortD#1#(z0)) 94: quicksortD#2#(tuple#2(z0,z1),z2) -> c_94(appendD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1)) 92: quicksortD#1#(::(z0,z1)) -> c_92(quicksortD#2#(splitD(z0,z1),z0),splitD#(z0,z1)) 93: quicksortD#1#(nil()) -> c_93() 84: appendD#(z0,z1) -> c_84(appendD#1#(z0,z1)) 85: appendD#1#(::(z0,z1),z2) -> c_85(appendD#(z1,z2)) 86: appendD#1#(nil(),z0) -> c_86() 67: SPLITD#1#(nil(),z0) -> c_30() 68: SPLITD#2#(tuple#2(z0,z1),z2,z3) -> c_31(SPLITD#3#(#greater(z3,z2),z0,z1,z3) ,#greater#(z3,z2) ,#GREATER#(z3,z2)) 69: SPLITD#3#(#false(),z0,z1,z2) -> c_32() 70: SPLITD#3#(#true(),z0,z1,z2) -> c_33() 101: splitD#(z0,z1) -> c_101(splitD#1#(z1,z0)) 102: splitD#1#(::(z0,z1),z2) -> c_102(splitD#2#(splitD(z2,z1),z2,z0),splitD#(z2,z1)) 103: splitD#1#(nil(),z0) -> c_103() 104: splitD#2#(tuple#2(z0,z1),z2,z3) -> c_104(splitD#3#(#greater(z3,z2),z0,z1,z3),#greater#(z3,z2)) 105: splitD#3#(#false(),z0,z1,z2) -> c_105() 106: splitD#3#(#true(),z0,z1,z2) -> c_106() 61: QUICKSORT#1#(nil()) -> c_14() 87: quicksort#(z0) -> c_87(quicksort#1#(z0)) 90: quicksort#2#(tuple#2(z0,z1),z2) -> c_90(append#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1)) 88: quicksort#1#(::(z0,z1)) -> c_88(quicksort#2#(split(z0,z1),z0),split#(z0,z1)) 89: quicksort#1#(nil()) -> c_89() 81: append#(z0,z1) -> c_81(append#1#(z0,z1)) 82: append#1#(::(z0,z1),z2) -> c_82(append#(z1,z2)) 83: append#1#(nil(),z0) -> c_83() 63: SPLIT#1#(nil(),z0) -> c_24() 64: SPLIT#2#(tuple#2(z0,z1),z2,z3) -> c_25(SPLIT#3#(#greater(z3,z2),z0,z1,z3) ,#greater#(z3,z2) ,#GREATER#(z3,z2)) 38: #GREATER#(z0,z1) -> c_5(#CKGT#(#compare(z0,z1)),#compare#(z0,z1),#COMPARE#(z0,z1)) 23: #CKGT#(#EQ()) -> c_46() 24: #CKGT#(#GT()) -> c_47() 25: #CKGT#(#LT()) -> c_48() 37: #COMPARE#(#s(z0),#s(z1)) -> c_60(#COMPARE#(z0,z1)) 35: #COMPARE#(#pos(z0),#pos(z1)) -> c_58(#COMPARE#(z0,z1)) 31: #COMPARE#(#neg(z0),#neg(z1)) -> c_54(#COMPARE#(z1,z0)) 26: #COMPARE#(#0(),#0()) -> c_49() 27: #COMPARE#(#0(),#neg(z0)) -> c_50() 28: #COMPARE#(#0(),#pos(z0)) -> c_51() 29: #COMPARE#(#0(),#s(z0)) -> c_52() 30: #COMPARE#(#neg(z0),#0()) -> c_53() 32: #COMPARE#(#neg(z0),#pos(z1)) -> c_55() 33: #COMPARE#(#pos(z0),#0()) -> c_56() 34: #COMPARE#(#pos(z0),#neg(z1)) -> c_57() 36: #COMPARE#(#s(z0),#0()) -> c_59() 65: SPLIT#3#(#false(),z0,z1,z2) -> c_26() 66: SPLIT#3#(#true(),z0,z1,z2) -> c_27() 95: split#(z0,z1) -> c_95(split#1#(z1,z0)) 96: split#1#(::(z0,z1),z2) -> c_96(split#2#(split(z2,z1),z2,z0),split#(z2,z1)) 97: split#1#(nil(),z0) -> c_97() 98: split#2#(tuple#2(z0,z1),z2,z3) -> c_98(split#3#(#greater(z3,z2),z0,z1,z3),#greater#(z3,z2)) 58: #greater#(z0,z1) -> c_80(#ckgt#(#compare(z0,z1)),#compare#(z0,z1)) 43: #ckgt#(#EQ()) -> c_65() 44: #ckgt#(#GT()) -> c_66() 45: #ckgt#(#LT()) -> c_67() 57: #compare#(#s(z0),#s(z1)) -> c_79(#compare#(z0,z1)) 55: #compare#(#pos(z0),#pos(z1)) -> c_77(#compare#(z0,z1)) 51: #compare#(#neg(z0),#neg(z1)) -> c_73(#compare#(z1,z0)) 46: #compare#(#0(),#0()) -> c_68() 47: #compare#(#0(),#neg(z0)) -> c_69() 48: #compare#(#0(),#pos(z0)) -> c_70() 49: #compare#(#0(),#s(z0)) -> c_71() 50: #compare#(#neg(z0),#0()) -> c_72() 52: #compare#(#neg(z0),#pos(z1)) -> c_74() 53: #compare#(#pos(z0),#0()) -> c_75() 54: #compare#(#pos(z0),#neg(z1)) -> c_76() 56: #compare#(#s(z0),#0()) -> c_78() 99: split#3#(#false(),z0,z1,z2) -> c_99() 100: split#3#(#true(),z0,z1,z2) -> c_100() 60: APPENDD#1#(nil(),z0) -> c_11() 59: APPEND#1#(nil(),z0) -> c_8() * Step 6: SimplifyRHS. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: APPEND#(z0,z1) -> c_6(APPEND#1#(z0,z1)) APPEND#1#(::(z0,z1),z2) -> c_7(APPEND#(z1,z2)) APPENDD#(z0,z1) -> c_9(APPENDD#1#(z0,z1)) APPENDD#1#(::(z0,z1),z2) -> c_10(APPENDD#(z1,z2)) QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)) QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0),split#(z0,z1),SPLIT#(z0,z1)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(APPEND#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1) ,QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(APPEND#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1) ,QUICKSORT#(z1)) QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)) QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0),splitD#(z0,z1),SPLITD#(z0,z1)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1) ,QUICKSORTD#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1) ,QUICKSORTD#(z1)) SPLIT#(z0,z1) -> c_22(SPLIT#1#(z1,z0)) SPLIT#1#(::(z0,z1),z2) -> c_23(SPLIT#2#(split(z2,z1),z2,z0),split#(z2,z1),SPLIT#(z2,z1)) SPLITD#(z0,z1) -> c_28(SPLITD#1#(z1,z0)) SPLITD#1#(::(z0,z1),z2) -> c_29(SPLITD#2#(splitD(z2,z1),z2,z0),splitD#(z2,z1),SPLITD#(z2,z1)) TESTQUICKSORT#(z0) -> c_44(QUICKSORT#(testList(#unit())),testList#(#unit()),TESTLIST#(#unit())) TESTQUICKSORT2#(z0) -> c_45(QUICKSORT#(testList(#unit())),testList#(#unit()),TESTLIST#(#unit())) - Weak TRS: #ABS(#0()) -> c15() #ABS(#neg(z0)) -> c16() #ABS(#pos(z0)) -> c17() #ABS(#s(z0)) -> c18() #CKGT(#EQ()) -> c() #CKGT(#GT()) -> c1() #CKGT(#LT()) -> c2() #COMPARE(#0(),#0()) -> c3() #COMPARE(#0(),#neg(z0)) -> c4() #COMPARE(#0(),#pos(z0)) -> c5() #COMPARE(#0(),#s(z0)) -> c6() #COMPARE(#neg(z0),#0()) -> c7() #COMPARE(#neg(z0),#neg(z1)) -> c8(#COMPARE(z1,z0)) #COMPARE(#neg(z0),#pos(z1)) -> c9() #COMPARE(#pos(z0),#0()) -> c10() #COMPARE(#pos(z0),#neg(z1)) -> c11() #COMPARE(#pos(z0),#pos(z1)) -> c12(#COMPARE(z0,z1)) #COMPARE(#s(z0),#0()) -> c13() #COMPARE(#s(z0),#s(z1)) -> c14(#COMPARE(z0,z1)) #GREATER(z0,z1) -> c19(#CKGT(#compare(z0,z1)),#COMPARE(z0,z1)) #abs(#0()) -> #0() #abs(#neg(z0)) -> #pos(z0) #abs(#pos(z0)) -> #pos(z0) #abs(#s(z0)) -> #pos(#s(z0)) #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(z0)) -> #GT() #compare(#0(),#pos(z0)) -> #LT() #compare(#0(),#s(z0)) -> #LT() #compare(#neg(z0),#0()) -> #LT() #compare(#neg(z0),#neg(z1)) -> #compare(z1,z0) #compare(#neg(z0),#pos(z1)) -> #LT() #compare(#pos(z0),#0()) -> #GT() #compare(#pos(z0),#neg(z1)) -> #GT() #compare(#pos(z0),#pos(z1)) -> #compare(z0,z1) #compare(#s(z0),#0()) -> #GT() #compare(#s(z0),#s(z1)) -> #compare(z0,z1) #greater(z0,z1) -> #ckgt(#compare(z0,z1)) APPEND(z0,z1) -> c20(APPEND#1(z0,z1)) APPEND#1(::(z0,z1),z2) -> c21(APPEND(z1,z2)) APPEND#1(nil(),z0) -> c22() APPENDD(z0,z1) -> c23(APPENDD#1(z0,z1)) APPENDD#1(::(z0,z1),z2) -> c24(APPENDD(z1,z2)) APPENDD#1(nil(),z0) -> c25() QUICKSORT(z0) -> c26(QUICKSORT#1(z0)) QUICKSORT#1(::(z0,z1)) -> c27(QUICKSORT#2(split(z0,z1),z0),SPLIT(z0,z1)) QUICKSORT#1(nil()) -> c28() QUICKSORT#2(tuple#2(z0,z1),z2) -> c29(APPEND(quicksort(z0),::(z2,quicksort(z1))),QUICKSORT(z0)) QUICKSORT#2(tuple#2(z0,z1),z2) -> c30(APPEND(quicksort(z0),::(z2,quicksort(z1))),QUICKSORT(z1)) QUICKSORTD(z0) -> c31(QUICKSORTD#1(z0)) QUICKSORTD#1(::(z0,z1)) -> c32(QUICKSORTD#2(splitD(z0,z1),z0),SPLITD(z0,z1)) QUICKSORTD#1(nil()) -> c33() QUICKSORTD#2(tuple#2(z0,z1),z2) -> c34(APPENDD(quicksortD(z0),::(z2,quicksortD(z1))),QUICKSORTD(z0)) QUICKSORTD#2(tuple#2(z0,z1),z2) -> c35(APPENDD(quicksortD(z0),::(z2,quicksortD(z1))),QUICKSORTD(z1)) SPLIT(z0,z1) -> c36(SPLIT#1(z1,z0)) SPLIT#1(::(z0,z1),z2) -> c37(SPLIT#2(split(z2,z1),z2,z0),SPLIT(z2,z1)) SPLIT#1(nil(),z0) -> c38() SPLIT#2(tuple#2(z0,z1),z2,z3) -> c39(SPLIT#3(#greater(z3,z2),z0,z1,z3),#GREATER(z3,z2)) SPLIT#3(#false(),z0,z1,z2) -> c40() SPLIT#3(#true(),z0,z1,z2) -> c41() SPLITD(z0,z1) -> c42(SPLITD#1(z1,z0)) SPLITD#1(::(z0,z1),z2) -> c43(SPLITD#2(splitD(z2,z1),z2,z0),SPLITD(z2,z1)) SPLITD#1(nil(),z0) -> c44() SPLITD#2(tuple#2(z0,z1),z2,z3) -> c45(SPLITD#3(#greater(z3,z2),z0,z1,z3),#GREATER(z3,z2)) SPLITD#3(#false(),z0,z1,z2) -> c46() SPLITD#3(#true(),z0,z1,z2) -> c47() TESTLIST(z0) -> c48(#ABS(#0())) TESTLIST(z0) -> c49(#ABS(#pos(#s(#s(#s(#s(#0()))))))) TESTLIST(z0) -> c50(#ABS(#pos(#s(#s(#s(#s(#s(#0())))))))) TESTLIST(z0) -> c51(#ABS(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))))) TESTLIST(z0) -> c52(#ABS(#pos(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) TESTLIST(z0) -> c53(#ABS(#pos(#s(#0())))) TESTLIST(z0) -> c54(#ABS(#pos(#s(#s(#0()))))) TESTLIST(z0) -> c55(#ABS(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) TESTLIST(z0) -> c56(#ABS(#pos(#s(#s(#s(#s(#s(#s(#0()))))))))) TESTLIST(z0) -> c57(#ABS(#pos(#s(#s(#s(#0())))))) TESTQUICKSORT(z0) -> c58(QUICKSORT(testList(#unit())),TESTLIST(#unit())) TESTQUICKSORT2(z0) -> c59(QUICKSORT(testList(#unit())),TESTLIST(#unit())) append(z0,z1) -> append#1(z0,z1) append#1(::(z0,z1),z2) -> ::(z0,append(z1,z2)) append#1(nil(),z0) -> z0 appendD(z0,z1) -> appendD#1(z0,z1) appendD#1(::(z0,z1),z2) -> ::(z0,appendD(z1,z2)) appendD#1(nil(),z0) -> z0 quicksort(z0) -> quicksort#1(z0) quicksort#1(::(z0,z1)) -> quicksort#2(split(z0,z1),z0) quicksort#1(nil()) -> nil() quicksort#2(tuple#2(z0,z1),z2) -> append(quicksort(z0),::(z2,quicksort(z1))) quicksortD(z0) -> quicksortD#1(z0) quicksortD#1(::(z0,z1)) -> quicksortD#2(splitD(z0,z1),z0) quicksortD#1(nil()) -> nil() quicksortD#2(tuple#2(z0,z1),z2) -> appendD(quicksortD(z0),::(z2,quicksortD(z1))) split(z0,z1) -> split#1(z1,z0) split#1(::(z0,z1),z2) -> split#2(split(z2,z1),z2,z0) split#1(nil(),z0) -> tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) -> split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) splitD(z0,z1) -> splitD#1(z1,z0) splitD#1(::(z0,z1),z2) -> splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) -> tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) -> splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) testList(z0) -> ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) testQuicksort(z0) -> quicksort(testList(#unit())) testQuicksort2(z0) -> quicksort(testList(#unit())) - Signature: {#ABS/1,#CKGT/1,#COMPARE/2,#GREATER/2,#abs/1,#ckgt/1,#compare/2,#greater/2,APPEND/2,APPEND#1/2,APPENDD/2 ,APPENDD#1/2,QUICKSORT/1,QUICKSORT#1/1,QUICKSORT#2/2,QUICKSORTD/1,QUICKSORTD#1/1,QUICKSORTD#2/2,SPLIT/2 ,SPLIT#1/2,SPLIT#2/3,SPLIT#3/4,SPLITD/2,SPLITD#1/2,SPLITD#2/3,SPLITD#3/4,TESTLIST/1,TESTQUICKSORT/1 ,TESTQUICKSORT2/1,append/2,append#1/2,appendD/2,appendD#1/2,quicksort/1,quicksort#1/1,quicksort#2/2 ,quicksortD/1,quicksortD#1/1,quicksortD#2/2,split/2,split#1/2,split#2/3,split#3/4,splitD/2,splitD#1/2 ,splitD#2/3,splitD#3/4,testList/1,testQuicksort/1,testQuicksort2/1,#ABS#/1,#CKGT#/1,#COMPARE#/2,#GREATER#/2 ,#abs#/1,#ckgt#/1,#compare#/2,#greater#/2,APPEND#/2,APPEND#1#/2,APPENDD#/2,APPENDD#1#/2,QUICKSORT#/1 ,QUICKSORT#1#/1,QUICKSORT#2#/2,QUICKSORTD#/1,QUICKSORTD#1#/1,QUICKSORTD#2#/2,SPLIT#/2,SPLIT#1#/2,SPLIT#2#/3 ,SPLIT#3#/4,SPLITD#/2,SPLITD#1#/2,SPLITD#2#/3,SPLITD#3#/4,TESTLIST#/1,TESTQUICKSORT#/1,TESTQUICKSORT2#/1 ,append#/2,append#1#/2,appendD#/2,appendD#1#/2,quicksort#/1,quicksort#1#/1,quicksort#2#/2,quicksortD#/1 ,quicksortD#1#/1,quicksortD#2#/2,split#/2,split#1#/2,split#2#/3,split#3#/4,splitD#/2,splitD#1#/2,splitD#2#/3 ,splitD#3#/4,testList#/1,testQuicksort#/1,testQuicksort2#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,#unit/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/0,c16/0,c17/0,c18/0,c19/2,c2/0 ,c20/1,c21/1,c22/0,c23/1,c24/1,c25/0,c26/1,c27/2,c28/0,c29/2,c3/0,c30/2,c31/1,c32/2,c33/0,c34/2,c35/2,c36/1 ,c37/2,c38/0,c39/2,c4/0,c40/0,c41/0,c42/1,c43/2,c44/0,c45/2,c46/0,c47/0,c48/1,c49/1,c5/0,c50/1,c51/1,c52/1 ,c53/1,c54/1,c55/1,c56/1,c57/1,c58/2,c59/2,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/3 ,c_6/1,c_7/1,c_8/0,c_9/1,c_10/1,c_11/0,c_12/1,c_13/3,c_14/0,c_15/4,c_16/4,c_17/1,c_18/3,c_19/0,c_20/4,c_21/4 ,c_22/1,c_23/3,c_24/0,c_25/3,c_26/0,c_27/0,c_28/1,c_29/3,c_30/0,c_31/3,c_32/0,c_33/0,c_34/1,c_35/1,c_36/1 ,c_37/1,c_38/1,c_39/1,c_40/1,c_41/1,c_42/1,c_43/1,c_44/3,c_45/3,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0 ,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0,c_58/1,c_59/0,c_60/1,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0 ,c_67/0,c_68/0,c_69/0,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/0,c_76/0,c_77/1,c_78/0,c_79/1,c_80/2,c_81/1 ,c_82/1,c_83/0,c_84/1,c_85/1,c_86/0,c_87/1,c_88/2,c_89/0,c_90/3,c_91/1,c_92/2,c_93/0,c_94/3,c_95/1,c_96/2 ,c_97/0,c_98/2,c_99/0,c_100/0,c_101/1,c_102/2,c_103/0,c_104/2,c_105/0,c_106/0,c_107/10,c_108/2,c_109/2} - Obligation: innermost runtime complexity wrt. defined symbols {#ABS#,#CKGT#,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare# ,#greater#,APPEND#,APPEND#1#,APPENDD#,APPENDD#1#,QUICKSORT#,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD# ,QUICKSORTD#1#,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2#,SPLIT#3#,SPLITD#,SPLITD#1#,SPLITD#2#,SPLITD#3# ,TESTLIST#,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1#,appendD#,appendD#1#,quicksort#,quicksort#1# ,quicksort#2#,quicksortD#,quicksortD#1#,quicksortD#2#,split#,split#1#,split#2#,split#3#,splitD#,splitD#1# ,splitD#2#,splitD#3#,testList#,testQuicksort#,testQuicksort2#} and constructors {#0,#EQ,#GT,#LT,#false,#neg ,#pos,#s,#true,#unit,::,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,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52 ,c53,c54,c55,c56,c57,c58,c59,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:APPEND#(z0,z1) -> c_6(APPEND#1#(z0,z1)) -->_1 APPEND#1#(::(z0,z1),z2) -> c_7(APPEND#(z1,z2)):2 2:S:APPEND#1#(::(z0,z1),z2) -> c_7(APPEND#(z1,z2)) -->_1 APPEND#(z0,z1) -> c_6(APPEND#1#(z0,z1)):1 3:S:APPENDD#(z0,z1) -> c_9(APPENDD#1#(z0,z1)) -->_1 APPENDD#1#(::(z0,z1),z2) -> c_10(APPENDD#(z1,z2)):4 4:S:APPENDD#1#(::(z0,z1),z2) -> c_10(APPENDD#(z1,z2)) -->_1 APPENDD#(z0,z1) -> c_9(APPENDD#1#(z0,z1)):3 5:S:QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)) -->_1 QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0),split#(z0,z1),SPLIT#(z0,z1)):6 6:S:QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0),split#(z0,z1),SPLIT#(z0,z1)) -->_3 SPLIT#(z0,z1) -> c_22(SPLIT#1#(z1,z0)):13 -->_1 QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(APPEND#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1) ,QUICKSORT#(z1)):8 -->_1 QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(APPEND#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1) ,QUICKSORT#(z0)):7 7:S:QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(APPEND#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1) ,QUICKSORT#(z0)) -->_4 QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)):5 -->_1 APPEND#(z0,z1) -> c_6(APPEND#1#(z0,z1)):1 8:S:QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(APPEND#(quicksort(z0),::(z2,quicksort(z1))) ,quicksort#(z0) ,quicksort#(z1) ,QUICKSORT#(z1)) -->_4 QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)):5 -->_1 APPEND#(z0,z1) -> c_6(APPEND#1#(z0,z1)):1 9:S:QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)) -->_1 QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0),splitD#(z0,z1),SPLITD#(z0,z1)):10 10:S:QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0),splitD#(z0,z1),SPLITD#(z0,z1)) -->_3 SPLITD#(z0,z1) -> c_28(SPLITD#1#(z1,z0)):15 -->_1 QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1) ,QUICKSORTD#(z1)):12 -->_1 QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1) ,QUICKSORTD#(z0)):11 11:S:QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1) ,QUICKSORTD#(z0)) -->_4 QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)):9 -->_1 APPENDD#(z0,z1) -> c_9(APPENDD#1#(z0,z1)):3 12:S:QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) ,quicksortD#(z0) ,quicksortD#(z1) ,QUICKSORTD#(z1)) -->_4 QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)):9 -->_1 APPENDD#(z0,z1) -> c_9(APPENDD#1#(z0,z1)):3 13:S:SPLIT#(z0,z1) -> c_22(SPLIT#1#(z1,z0)) -->_1 SPLIT#1#(::(z0,z1),z2) -> c_23(SPLIT#2#(split(z2,z1),z2,z0),split#(z2,z1),SPLIT#(z2,z1)):14 14:S:SPLIT#1#(::(z0,z1),z2) -> c_23(SPLIT#2#(split(z2,z1),z2,z0),split#(z2,z1),SPLIT#(z2,z1)) -->_3 SPLIT#(z0,z1) -> c_22(SPLIT#1#(z1,z0)):13 15:S:SPLITD#(z0,z1) -> c_28(SPLITD#1#(z1,z0)) -->_1 SPLITD#1#(::(z0,z1),z2) -> c_29(SPLITD#2#(splitD(z2,z1),z2,z0),splitD#(z2,z1),SPLITD#(z2,z1)):16 16:S:SPLITD#1#(::(z0,z1),z2) -> c_29(SPLITD#2#(splitD(z2,z1),z2,z0),splitD#(z2,z1),SPLITD#(z2,z1)) -->_3 SPLITD#(z0,z1) -> c_28(SPLITD#1#(z1,z0)):15 17:S:TESTQUICKSORT#(z0) -> c_44(QUICKSORT#(testList(#unit())),testList#(#unit()),TESTLIST#(#unit())) -->_1 QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)):5 18:S:TESTQUICKSORT2#(z0) -> c_45(QUICKSORT#(testList(#unit())),testList#(#unit()),TESTLIST#(#unit())) -->_1 QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)):5 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0),SPLIT#(z0,z1)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(APPEND#(quicksort(z0),::(z2,quicksort(z1))),QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(APPEND#(quicksort(z0),::(z2,quicksort(z1))),QUICKSORT#(z1)) QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0),SPLITD#(z0,z1)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))),QUICKSORTD#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))),QUICKSORTD#(z1)) SPLIT#1#(::(z0,z1),z2) -> c_23(SPLIT#(z2,z1)) SPLITD#1#(::(z0,z1),z2) -> c_29(SPLITD#(z2,z1)) TESTQUICKSORT#(z0) -> c_44(QUICKSORT#(testList(#unit()))) TESTQUICKSORT2#(z0) -> c_45(QUICKSORT#(testList(#unit()))) * Step 7: UsableRules. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: APPEND#(z0,z1) -> c_6(APPEND#1#(z0,z1)) APPEND#1#(::(z0,z1),z2) -> c_7(APPEND#(z1,z2)) APPENDD#(z0,z1) -> c_9(APPENDD#1#(z0,z1)) APPENDD#1#(::(z0,z1),z2) -> c_10(APPENDD#(z1,z2)) QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)) QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0),SPLIT#(z0,z1)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(APPEND#(quicksort(z0),::(z2,quicksort(z1))),QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(APPEND#(quicksort(z0),::(z2,quicksort(z1))),QUICKSORT#(z1)) QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)) QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0),SPLITD#(z0,z1)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))),QUICKSORTD#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))),QUICKSORTD#(z1)) SPLIT#(z0,z1) -> c_22(SPLIT#1#(z1,z0)) SPLIT#1#(::(z0,z1),z2) -> c_23(SPLIT#(z2,z1)) SPLITD#(z0,z1) -> c_28(SPLITD#1#(z1,z0)) SPLITD#1#(::(z0,z1),z2) -> c_29(SPLITD#(z2,z1)) TESTQUICKSORT#(z0) -> c_44(QUICKSORT#(testList(#unit()))) TESTQUICKSORT2#(z0) -> c_45(QUICKSORT#(testList(#unit()))) - Weak TRS: #ABS(#0()) -> c15() #ABS(#neg(z0)) -> c16() #ABS(#pos(z0)) -> c17() #ABS(#s(z0)) -> c18() #CKGT(#EQ()) -> c() #CKGT(#GT()) -> c1() #CKGT(#LT()) -> c2() #COMPARE(#0(),#0()) -> c3() #COMPARE(#0(),#neg(z0)) -> c4() #COMPARE(#0(),#pos(z0)) -> c5() #COMPARE(#0(),#s(z0)) -> c6() #COMPARE(#neg(z0),#0()) -> c7() #COMPARE(#neg(z0),#neg(z1)) -> c8(#COMPARE(z1,z0)) #COMPARE(#neg(z0),#pos(z1)) -> c9() #COMPARE(#pos(z0),#0()) -> c10() #COMPARE(#pos(z0),#neg(z1)) -> c11() #COMPARE(#pos(z0),#pos(z1)) -> c12(#COMPARE(z0,z1)) #COMPARE(#s(z0),#0()) -> c13() #COMPARE(#s(z0),#s(z1)) -> c14(#COMPARE(z0,z1)) #GREATER(z0,z1) -> c19(#CKGT(#compare(z0,z1)),#COMPARE(z0,z1)) #abs(#0()) -> #0() #abs(#neg(z0)) -> #pos(z0) #abs(#pos(z0)) -> #pos(z0) #abs(#s(z0)) -> #pos(#s(z0)) #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(z0)) -> #GT() #compare(#0(),#pos(z0)) -> #LT() #compare(#0(),#s(z0)) -> #LT() #compare(#neg(z0),#0()) -> #LT() #compare(#neg(z0),#neg(z1)) -> #compare(z1,z0) #compare(#neg(z0),#pos(z1)) -> #LT() #compare(#pos(z0),#0()) -> #GT() #compare(#pos(z0),#neg(z1)) -> #GT() #compare(#pos(z0),#pos(z1)) -> #compare(z0,z1) #compare(#s(z0),#0()) -> #GT() #compare(#s(z0),#s(z1)) -> #compare(z0,z1) #greater(z0,z1) -> #ckgt(#compare(z0,z1)) APPEND(z0,z1) -> c20(APPEND#1(z0,z1)) APPEND#1(::(z0,z1),z2) -> c21(APPEND(z1,z2)) APPEND#1(nil(),z0) -> c22() APPENDD(z0,z1) -> c23(APPENDD#1(z0,z1)) APPENDD#1(::(z0,z1),z2) -> c24(APPENDD(z1,z2)) APPENDD#1(nil(),z0) -> c25() QUICKSORT(z0) -> c26(QUICKSORT#1(z0)) QUICKSORT#1(::(z0,z1)) -> c27(QUICKSORT#2(split(z0,z1),z0),SPLIT(z0,z1)) QUICKSORT#1(nil()) -> c28() QUICKSORT#2(tuple#2(z0,z1),z2) -> c29(APPEND(quicksort(z0),::(z2,quicksort(z1))),QUICKSORT(z0)) QUICKSORT#2(tuple#2(z0,z1),z2) -> c30(APPEND(quicksort(z0),::(z2,quicksort(z1))),QUICKSORT(z1)) QUICKSORTD(z0) -> c31(QUICKSORTD#1(z0)) QUICKSORTD#1(::(z0,z1)) -> c32(QUICKSORTD#2(splitD(z0,z1),z0),SPLITD(z0,z1)) QUICKSORTD#1(nil()) -> c33() QUICKSORTD#2(tuple#2(z0,z1),z2) -> c34(APPENDD(quicksortD(z0),::(z2,quicksortD(z1))),QUICKSORTD(z0)) QUICKSORTD#2(tuple#2(z0,z1),z2) -> c35(APPENDD(quicksortD(z0),::(z2,quicksortD(z1))),QUICKSORTD(z1)) SPLIT(z0,z1) -> c36(SPLIT#1(z1,z0)) SPLIT#1(::(z0,z1),z2) -> c37(SPLIT#2(split(z2,z1),z2,z0),SPLIT(z2,z1)) SPLIT#1(nil(),z0) -> c38() SPLIT#2(tuple#2(z0,z1),z2,z3) -> c39(SPLIT#3(#greater(z3,z2),z0,z1,z3),#GREATER(z3,z2)) SPLIT#3(#false(),z0,z1,z2) -> c40() SPLIT#3(#true(),z0,z1,z2) -> c41() SPLITD(z0,z1) -> c42(SPLITD#1(z1,z0)) SPLITD#1(::(z0,z1),z2) -> c43(SPLITD#2(splitD(z2,z1),z2,z0),SPLITD(z2,z1)) SPLITD#1(nil(),z0) -> c44() SPLITD#2(tuple#2(z0,z1),z2,z3) -> c45(SPLITD#3(#greater(z3,z2),z0,z1,z3),#GREATER(z3,z2)) SPLITD#3(#false(),z0,z1,z2) -> c46() SPLITD#3(#true(),z0,z1,z2) -> c47() TESTLIST(z0) -> c48(#ABS(#0())) TESTLIST(z0) -> c49(#ABS(#pos(#s(#s(#s(#s(#0()))))))) TESTLIST(z0) -> c50(#ABS(#pos(#s(#s(#s(#s(#s(#0())))))))) TESTLIST(z0) -> c51(#ABS(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))))) TESTLIST(z0) -> c52(#ABS(#pos(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) TESTLIST(z0) -> c53(#ABS(#pos(#s(#0())))) TESTLIST(z0) -> c54(#ABS(#pos(#s(#s(#0()))))) TESTLIST(z0) -> c55(#ABS(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) TESTLIST(z0) -> c56(#ABS(#pos(#s(#s(#s(#s(#s(#s(#0()))))))))) TESTLIST(z0) -> c57(#ABS(#pos(#s(#s(#s(#0())))))) TESTQUICKSORT(z0) -> c58(QUICKSORT(testList(#unit())),TESTLIST(#unit())) TESTQUICKSORT2(z0) -> c59(QUICKSORT(testList(#unit())),TESTLIST(#unit())) append(z0,z1) -> append#1(z0,z1) append#1(::(z0,z1),z2) -> ::(z0,append(z1,z2)) append#1(nil(),z0) -> z0 appendD(z0,z1) -> appendD#1(z0,z1) appendD#1(::(z0,z1),z2) -> ::(z0,appendD(z1,z2)) appendD#1(nil(),z0) -> z0 quicksort(z0) -> quicksort#1(z0) quicksort#1(::(z0,z1)) -> quicksort#2(split(z0,z1),z0) quicksort#1(nil()) -> nil() quicksort#2(tuple#2(z0,z1),z2) -> append(quicksort(z0),::(z2,quicksort(z1))) quicksortD(z0) -> quicksortD#1(z0) quicksortD#1(::(z0,z1)) -> quicksortD#2(splitD(z0,z1),z0) quicksortD#1(nil()) -> nil() quicksortD#2(tuple#2(z0,z1),z2) -> appendD(quicksortD(z0),::(z2,quicksortD(z1))) split(z0,z1) -> split#1(z1,z0) split#1(::(z0,z1),z2) -> split#2(split(z2,z1),z2,z0) split#1(nil(),z0) -> tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) -> split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) splitD(z0,z1) -> splitD#1(z1,z0) splitD#1(::(z0,z1),z2) -> splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) -> tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) -> splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) testList(z0) -> ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) testQuicksort(z0) -> quicksort(testList(#unit())) testQuicksort2(z0) -> quicksort(testList(#unit())) - Signature: {#ABS/1,#CKGT/1,#COMPARE/2,#GREATER/2,#abs/1,#ckgt/1,#compare/2,#greater/2,APPEND/2,APPEND#1/2,APPENDD/2 ,APPENDD#1/2,QUICKSORT/1,QUICKSORT#1/1,QUICKSORT#2/2,QUICKSORTD/1,QUICKSORTD#1/1,QUICKSORTD#2/2,SPLIT/2 ,SPLIT#1/2,SPLIT#2/3,SPLIT#3/4,SPLITD/2,SPLITD#1/2,SPLITD#2/3,SPLITD#3/4,TESTLIST/1,TESTQUICKSORT/1 ,TESTQUICKSORT2/1,append/2,append#1/2,appendD/2,appendD#1/2,quicksort/1,quicksort#1/1,quicksort#2/2 ,quicksortD/1,quicksortD#1/1,quicksortD#2/2,split/2,split#1/2,split#2/3,split#3/4,splitD/2,splitD#1/2 ,splitD#2/3,splitD#3/4,testList/1,testQuicksort/1,testQuicksort2/1,#ABS#/1,#CKGT#/1,#COMPARE#/2,#GREATER#/2 ,#abs#/1,#ckgt#/1,#compare#/2,#greater#/2,APPEND#/2,APPEND#1#/2,APPENDD#/2,APPENDD#1#/2,QUICKSORT#/1 ,QUICKSORT#1#/1,QUICKSORT#2#/2,QUICKSORTD#/1,QUICKSORTD#1#/1,QUICKSORTD#2#/2,SPLIT#/2,SPLIT#1#/2,SPLIT#2#/3 ,SPLIT#3#/4,SPLITD#/2,SPLITD#1#/2,SPLITD#2#/3,SPLITD#3#/4,TESTLIST#/1,TESTQUICKSORT#/1,TESTQUICKSORT2#/1 ,append#/2,append#1#/2,appendD#/2,appendD#1#/2,quicksort#/1,quicksort#1#/1,quicksort#2#/2,quicksortD#/1 ,quicksortD#1#/1,quicksortD#2#/2,split#/2,split#1#/2,split#2#/3,split#3#/4,splitD#/2,splitD#1#/2,splitD#2#/3 ,splitD#3#/4,testList#/1,testQuicksort#/1,testQuicksort2#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,#unit/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/0,c16/0,c17/0,c18/0,c19/2,c2/0 ,c20/1,c21/1,c22/0,c23/1,c24/1,c25/0,c26/1,c27/2,c28/0,c29/2,c3/0,c30/2,c31/1,c32/2,c33/0,c34/2,c35/2,c36/1 ,c37/2,c38/0,c39/2,c4/0,c40/0,c41/0,c42/1,c43/2,c44/0,c45/2,c46/0,c47/0,c48/1,c49/1,c5/0,c50/1,c51/1,c52/1 ,c53/1,c54/1,c55/1,c56/1,c57/1,c58/2,c59/2,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/3 ,c_6/1,c_7/1,c_8/0,c_9/1,c_10/1,c_11/0,c_12/1,c_13/2,c_14/0,c_15/2,c_16/2,c_17/1,c_18/2,c_19/0,c_20/2,c_21/2 ,c_22/1,c_23/1,c_24/0,c_25/3,c_26/0,c_27/0,c_28/1,c_29/1,c_30/0,c_31/3,c_32/0,c_33/0,c_34/1,c_35/1,c_36/1 ,c_37/1,c_38/1,c_39/1,c_40/1,c_41/1,c_42/1,c_43/1,c_44/1,c_45/1,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0 ,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0,c_58/1,c_59/0,c_60/1,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0 ,c_67/0,c_68/0,c_69/0,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/0,c_76/0,c_77/1,c_78/0,c_79/1,c_80/2,c_81/1 ,c_82/1,c_83/0,c_84/1,c_85/1,c_86/0,c_87/1,c_88/2,c_89/0,c_90/3,c_91/1,c_92/2,c_93/0,c_94/3,c_95/1,c_96/2 ,c_97/0,c_98/2,c_99/0,c_100/0,c_101/1,c_102/2,c_103/0,c_104/2,c_105/0,c_106/0,c_107/10,c_108/2,c_109/2} - Obligation: innermost runtime complexity wrt. defined symbols {#ABS#,#CKGT#,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare# ,#greater#,APPEND#,APPEND#1#,APPENDD#,APPENDD#1#,QUICKSORT#,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD# ,QUICKSORTD#1#,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2#,SPLIT#3#,SPLITD#,SPLITD#1#,SPLITD#2#,SPLITD#3# ,TESTLIST#,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1#,appendD#,appendD#1#,quicksort#,quicksort#1# ,quicksort#2#,quicksortD#,quicksortD#1#,quicksortD#2#,split#,split#1#,split#2#,split#3#,splitD#,splitD#1# ,splitD#2#,splitD#3#,testList#,testQuicksort#,testQuicksort2#} and constructors {#0,#EQ,#GT,#LT,#false,#neg ,#pos,#s,#true,#unit,::,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,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52 ,c53,c54,c55,c56,c57,c58,c59,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: #abs(#0()) -> #0() #abs(#pos(z0)) -> #pos(z0) #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(z0)) -> #GT() #compare(#0(),#pos(z0)) -> #LT() #compare(#0(),#s(z0)) -> #LT() #compare(#neg(z0),#0()) -> #LT() #compare(#neg(z0),#neg(z1)) -> #compare(z1,z0) #compare(#neg(z0),#pos(z1)) -> #LT() #compare(#pos(z0),#0()) -> #GT() #compare(#pos(z0),#neg(z1)) -> #GT() #compare(#pos(z0),#pos(z1)) -> #compare(z0,z1) #compare(#s(z0),#0()) -> #GT() #compare(#s(z0),#s(z1)) -> #compare(z0,z1) #greater(z0,z1) -> #ckgt(#compare(z0,z1)) append(z0,z1) -> append#1(z0,z1) append#1(::(z0,z1),z2) -> ::(z0,append(z1,z2)) append#1(nil(),z0) -> z0 appendD(z0,z1) -> appendD#1(z0,z1) appendD#1(::(z0,z1),z2) -> ::(z0,appendD(z1,z2)) appendD#1(nil(),z0) -> z0 quicksort(z0) -> quicksort#1(z0) quicksort#1(::(z0,z1)) -> quicksort#2(split(z0,z1),z0) quicksort#1(nil()) -> nil() quicksort#2(tuple#2(z0,z1),z2) -> append(quicksort(z0),::(z2,quicksort(z1))) quicksortD(z0) -> quicksortD#1(z0) quicksortD#1(::(z0,z1)) -> quicksortD#2(splitD(z0,z1),z0) quicksortD#1(nil()) -> nil() quicksortD#2(tuple#2(z0,z1),z2) -> appendD(quicksortD(z0),::(z2,quicksortD(z1))) split(z0,z1) -> split#1(z1,z0) split#1(::(z0,z1),z2) -> split#2(split(z2,z1),z2,z0) split#1(nil(),z0) -> tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) -> split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) splitD(z0,z1) -> splitD#1(z1,z0) splitD#1(::(z0,z1),z2) -> splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) -> tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) -> splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) testList(z0) -> ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) APPEND#(z0,z1) -> c_6(APPEND#1#(z0,z1)) APPEND#1#(::(z0,z1),z2) -> c_7(APPEND#(z1,z2)) APPENDD#(z0,z1) -> c_9(APPENDD#1#(z0,z1)) APPENDD#1#(::(z0,z1),z2) -> c_10(APPENDD#(z1,z2)) QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)) QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0),SPLIT#(z0,z1)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(APPEND#(quicksort(z0),::(z2,quicksort(z1))),QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(APPEND#(quicksort(z0),::(z2,quicksort(z1))),QUICKSORT#(z1)) QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)) QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0),SPLITD#(z0,z1)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))),QUICKSORTD#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))),QUICKSORTD#(z1)) SPLIT#(z0,z1) -> c_22(SPLIT#1#(z1,z0)) SPLIT#1#(::(z0,z1),z2) -> c_23(SPLIT#(z2,z1)) SPLITD#(z0,z1) -> c_28(SPLITD#1#(z1,z0)) SPLITD#1#(::(z0,z1),z2) -> c_29(SPLITD#(z2,z1)) TESTQUICKSORT#(z0) -> c_44(QUICKSORT#(testList(#unit()))) TESTQUICKSORT2#(z0) -> c_45(QUICKSORT#(testList(#unit()))) * Step 8: DecomposeDG. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: APPEND#(z0,z1) -> c_6(APPEND#1#(z0,z1)) APPEND#1#(::(z0,z1),z2) -> c_7(APPEND#(z1,z2)) APPENDD#(z0,z1) -> c_9(APPENDD#1#(z0,z1)) APPENDD#1#(::(z0,z1),z2) -> c_10(APPENDD#(z1,z2)) QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)) QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0),SPLIT#(z0,z1)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(APPEND#(quicksort(z0),::(z2,quicksort(z1))),QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(APPEND#(quicksort(z0),::(z2,quicksort(z1))),QUICKSORT#(z1)) QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)) QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0),SPLITD#(z0,z1)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))),QUICKSORTD#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))),QUICKSORTD#(z1)) SPLIT#(z0,z1) -> c_22(SPLIT#1#(z1,z0)) SPLIT#1#(::(z0,z1),z2) -> c_23(SPLIT#(z2,z1)) SPLITD#(z0,z1) -> c_28(SPLITD#1#(z1,z0)) SPLITD#1#(::(z0,z1),z2) -> c_29(SPLITD#(z2,z1)) TESTQUICKSORT#(z0) -> c_44(QUICKSORT#(testList(#unit()))) TESTQUICKSORT2#(z0) -> c_45(QUICKSORT#(testList(#unit()))) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(z0)) -> #pos(z0) #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(z0)) -> #GT() #compare(#0(),#pos(z0)) -> #LT() #compare(#0(),#s(z0)) -> #LT() #compare(#neg(z0),#0()) -> #LT() #compare(#neg(z0),#neg(z1)) -> #compare(z1,z0) #compare(#neg(z0),#pos(z1)) -> #LT() #compare(#pos(z0),#0()) -> #GT() #compare(#pos(z0),#neg(z1)) -> #GT() #compare(#pos(z0),#pos(z1)) -> #compare(z0,z1) #compare(#s(z0),#0()) -> #GT() #compare(#s(z0),#s(z1)) -> #compare(z0,z1) #greater(z0,z1) -> #ckgt(#compare(z0,z1)) append(z0,z1) -> append#1(z0,z1) append#1(::(z0,z1),z2) -> ::(z0,append(z1,z2)) append#1(nil(),z0) -> z0 appendD(z0,z1) -> appendD#1(z0,z1) appendD#1(::(z0,z1),z2) -> ::(z0,appendD(z1,z2)) appendD#1(nil(),z0) -> z0 quicksort(z0) -> quicksort#1(z0) quicksort#1(::(z0,z1)) -> quicksort#2(split(z0,z1),z0) quicksort#1(nil()) -> nil() quicksort#2(tuple#2(z0,z1),z2) -> append(quicksort(z0),::(z2,quicksort(z1))) quicksortD(z0) -> quicksortD#1(z0) quicksortD#1(::(z0,z1)) -> quicksortD#2(splitD(z0,z1),z0) quicksortD#1(nil()) -> nil() quicksortD#2(tuple#2(z0,z1),z2) -> appendD(quicksortD(z0),::(z2,quicksortD(z1))) split(z0,z1) -> split#1(z1,z0) split#1(::(z0,z1),z2) -> split#2(split(z2,z1),z2,z0) split#1(nil(),z0) -> tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) -> split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) splitD(z0,z1) -> splitD#1(z1,z0) splitD#1(::(z0,z1),z2) -> splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) -> tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) -> splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) testList(z0) -> ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) - Signature: {#ABS/1,#CKGT/1,#COMPARE/2,#GREATER/2,#abs/1,#ckgt/1,#compare/2,#greater/2,APPEND/2,APPEND#1/2,APPENDD/2 ,APPENDD#1/2,QUICKSORT/1,QUICKSORT#1/1,QUICKSORT#2/2,QUICKSORTD/1,QUICKSORTD#1/1,QUICKSORTD#2/2,SPLIT/2 ,SPLIT#1/2,SPLIT#2/3,SPLIT#3/4,SPLITD/2,SPLITD#1/2,SPLITD#2/3,SPLITD#3/4,TESTLIST/1,TESTQUICKSORT/1 ,TESTQUICKSORT2/1,append/2,append#1/2,appendD/2,appendD#1/2,quicksort/1,quicksort#1/1,quicksort#2/2 ,quicksortD/1,quicksortD#1/1,quicksortD#2/2,split/2,split#1/2,split#2/3,split#3/4,splitD/2,splitD#1/2 ,splitD#2/3,splitD#3/4,testList/1,testQuicksort/1,testQuicksort2/1,#ABS#/1,#CKGT#/1,#COMPARE#/2,#GREATER#/2 ,#abs#/1,#ckgt#/1,#compare#/2,#greater#/2,APPEND#/2,APPEND#1#/2,APPENDD#/2,APPENDD#1#/2,QUICKSORT#/1 ,QUICKSORT#1#/1,QUICKSORT#2#/2,QUICKSORTD#/1,QUICKSORTD#1#/1,QUICKSORTD#2#/2,SPLIT#/2,SPLIT#1#/2,SPLIT#2#/3 ,SPLIT#3#/4,SPLITD#/2,SPLITD#1#/2,SPLITD#2#/3,SPLITD#3#/4,TESTLIST#/1,TESTQUICKSORT#/1,TESTQUICKSORT2#/1 ,append#/2,append#1#/2,appendD#/2,appendD#1#/2,quicksort#/1,quicksort#1#/1,quicksort#2#/2,quicksortD#/1 ,quicksortD#1#/1,quicksortD#2#/2,split#/2,split#1#/2,split#2#/3,split#3#/4,splitD#/2,splitD#1#/2,splitD#2#/3 ,splitD#3#/4,testList#/1,testQuicksort#/1,testQuicksort2#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,#unit/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/0,c16/0,c17/0,c18/0,c19/2,c2/0 ,c20/1,c21/1,c22/0,c23/1,c24/1,c25/0,c26/1,c27/2,c28/0,c29/2,c3/0,c30/2,c31/1,c32/2,c33/0,c34/2,c35/2,c36/1 ,c37/2,c38/0,c39/2,c4/0,c40/0,c41/0,c42/1,c43/2,c44/0,c45/2,c46/0,c47/0,c48/1,c49/1,c5/0,c50/1,c51/1,c52/1 ,c53/1,c54/1,c55/1,c56/1,c57/1,c58/2,c59/2,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/3 ,c_6/1,c_7/1,c_8/0,c_9/1,c_10/1,c_11/0,c_12/1,c_13/2,c_14/0,c_15/2,c_16/2,c_17/1,c_18/2,c_19/0,c_20/2,c_21/2 ,c_22/1,c_23/1,c_24/0,c_25/3,c_26/0,c_27/0,c_28/1,c_29/1,c_30/0,c_31/3,c_32/0,c_33/0,c_34/1,c_35/1,c_36/1 ,c_37/1,c_38/1,c_39/1,c_40/1,c_41/1,c_42/1,c_43/1,c_44/1,c_45/1,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0 ,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0,c_58/1,c_59/0,c_60/1,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0 ,c_67/0,c_68/0,c_69/0,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/0,c_76/0,c_77/1,c_78/0,c_79/1,c_80/2,c_81/1 ,c_82/1,c_83/0,c_84/1,c_85/1,c_86/0,c_87/1,c_88/2,c_89/0,c_90/3,c_91/1,c_92/2,c_93/0,c_94/3,c_95/1,c_96/2 ,c_97/0,c_98/2,c_99/0,c_100/0,c_101/1,c_102/2,c_103/0,c_104/2,c_105/0,c_106/0,c_107/10,c_108/2,c_109/2} - Obligation: innermost runtime complexity wrt. defined symbols {#ABS#,#CKGT#,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare# ,#greater#,APPEND#,APPEND#1#,APPENDD#,APPENDD#1#,QUICKSORT#,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD# ,QUICKSORTD#1#,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2#,SPLIT#3#,SPLITD#,SPLITD#1#,SPLITD#2#,SPLITD#3# ,TESTLIST#,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1#,appendD#,appendD#1#,quicksort#,quicksort#1# ,quicksort#2#,quicksortD#,quicksortD#1#,quicksortD#2#,split#,split#1#,split#2#,split#3#,splitD#,splitD#1# ,splitD#2#,splitD#3#,testList#,testQuicksort#,testQuicksort2#} and constructors {#0,#EQ,#GT,#LT,#false,#neg ,#pos,#s,#true,#unit,::,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,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52 ,c53,c54,c55,c56,c57,c58,c59,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: DecomposeDG {onSelection = all below first cut in WDG, onUpper = Nothing, onLower = Nothing} + Details: We decompose the input problem according to the dependency graph into the upper component QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)) QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0),SPLIT#(z0,z1)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(APPEND#(quicksort(z0),::(z2,quicksort(z1))),QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(APPEND#(quicksort(z0),::(z2,quicksort(z1))),QUICKSORT#(z1)) QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)) QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0),SPLITD#(z0,z1)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))),QUICKSORTD#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))),QUICKSORTD#(z1)) TESTQUICKSORT#(z0) -> c_44(QUICKSORT#(testList(#unit()))) TESTQUICKSORT2#(z0) -> c_45(QUICKSORT#(testList(#unit()))) and a lower component APPEND#(z0,z1) -> c_6(APPEND#1#(z0,z1)) APPEND#1#(::(z0,z1),z2) -> c_7(APPEND#(z1,z2)) APPENDD#(z0,z1) -> c_9(APPENDD#1#(z0,z1)) APPENDD#1#(::(z0,z1),z2) -> c_10(APPENDD#(z1,z2)) SPLIT#(z0,z1) -> c_22(SPLIT#1#(z1,z0)) SPLIT#1#(::(z0,z1),z2) -> c_23(SPLIT#(z2,z1)) SPLITD#(z0,z1) -> c_28(SPLITD#1#(z1,z0)) SPLITD#1#(::(z0,z1),z2) -> c_29(SPLITD#(z2,z1)) Further, following extension rules are added to the lower component. QUICKSORT#(z0) -> QUICKSORT#1#(z0) QUICKSORT#1#(::(z0,z1)) -> QUICKSORT#2#(split(z0,z1),z0) QUICKSORT#1#(::(z0,z1)) -> SPLIT#(z0,z1) QUICKSORT#2#(tuple#2(z0,z1),z2) -> APPEND#(quicksort(z0),::(z2,quicksort(z1))) QUICKSORT#2#(tuple#2(z0,z1),z2) -> QUICKSORT#(z0) QUICKSORT#2#(tuple#2(z0,z1),z2) -> QUICKSORT#(z1) QUICKSORTD#(z0) -> QUICKSORTD#1#(z0) QUICKSORTD#1#(::(z0,z1)) -> QUICKSORTD#2#(splitD(z0,z1),z0) QUICKSORTD#1#(::(z0,z1)) -> SPLITD#(z0,z1) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> QUICKSORTD#(z0) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> QUICKSORTD#(z1) TESTQUICKSORT#(z0) -> QUICKSORT#(testList(#unit())) TESTQUICKSORT2#(z0) -> QUICKSORT#(testList(#unit())) ** Step 8.a:1: SimplifyRHS. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)) QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0),SPLIT#(z0,z1)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(APPEND#(quicksort(z0),::(z2,quicksort(z1))),QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(APPEND#(quicksort(z0),::(z2,quicksort(z1))),QUICKSORT#(z1)) QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)) QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0),SPLITD#(z0,z1)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))),QUICKSORTD#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))),QUICKSORTD#(z1)) TESTQUICKSORT#(z0) -> c_44(QUICKSORT#(testList(#unit()))) TESTQUICKSORT2#(z0) -> c_45(QUICKSORT#(testList(#unit()))) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(z0)) -> #pos(z0) #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(z0)) -> #GT() #compare(#0(),#pos(z0)) -> #LT() #compare(#0(),#s(z0)) -> #LT() #compare(#neg(z0),#0()) -> #LT() #compare(#neg(z0),#neg(z1)) -> #compare(z1,z0) #compare(#neg(z0),#pos(z1)) -> #LT() #compare(#pos(z0),#0()) -> #GT() #compare(#pos(z0),#neg(z1)) -> #GT() #compare(#pos(z0),#pos(z1)) -> #compare(z0,z1) #compare(#s(z0),#0()) -> #GT() #compare(#s(z0),#s(z1)) -> #compare(z0,z1) #greater(z0,z1) -> #ckgt(#compare(z0,z1)) append(z0,z1) -> append#1(z0,z1) append#1(::(z0,z1),z2) -> ::(z0,append(z1,z2)) append#1(nil(),z0) -> z0 appendD(z0,z1) -> appendD#1(z0,z1) appendD#1(::(z0,z1),z2) -> ::(z0,appendD(z1,z2)) appendD#1(nil(),z0) -> z0 quicksort(z0) -> quicksort#1(z0) quicksort#1(::(z0,z1)) -> quicksort#2(split(z0,z1),z0) quicksort#1(nil()) -> nil() quicksort#2(tuple#2(z0,z1),z2) -> append(quicksort(z0),::(z2,quicksort(z1))) quicksortD(z0) -> quicksortD#1(z0) quicksortD#1(::(z0,z1)) -> quicksortD#2(splitD(z0,z1),z0) quicksortD#1(nil()) -> nil() quicksortD#2(tuple#2(z0,z1),z2) -> appendD(quicksortD(z0),::(z2,quicksortD(z1))) split(z0,z1) -> split#1(z1,z0) split#1(::(z0,z1),z2) -> split#2(split(z2,z1),z2,z0) split#1(nil(),z0) -> tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) -> split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) splitD(z0,z1) -> splitD#1(z1,z0) splitD#1(::(z0,z1),z2) -> splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) -> tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) -> splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) testList(z0) -> ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) - Signature: {#ABS/1,#CKGT/1,#COMPARE/2,#GREATER/2,#abs/1,#ckgt/1,#compare/2,#greater/2,APPEND/2,APPEND#1/2,APPENDD/2 ,APPENDD#1/2,QUICKSORT/1,QUICKSORT#1/1,QUICKSORT#2/2,QUICKSORTD/1,QUICKSORTD#1/1,QUICKSORTD#2/2,SPLIT/2 ,SPLIT#1/2,SPLIT#2/3,SPLIT#3/4,SPLITD/2,SPLITD#1/2,SPLITD#2/3,SPLITD#3/4,TESTLIST/1,TESTQUICKSORT/1 ,TESTQUICKSORT2/1,append/2,append#1/2,appendD/2,appendD#1/2,quicksort/1,quicksort#1/1,quicksort#2/2 ,quicksortD/1,quicksortD#1/1,quicksortD#2/2,split/2,split#1/2,split#2/3,split#3/4,splitD/2,splitD#1/2 ,splitD#2/3,splitD#3/4,testList/1,testQuicksort/1,testQuicksort2/1,#ABS#/1,#CKGT#/1,#COMPARE#/2,#GREATER#/2 ,#abs#/1,#ckgt#/1,#compare#/2,#greater#/2,APPEND#/2,APPEND#1#/2,APPENDD#/2,APPENDD#1#/2,QUICKSORT#/1 ,QUICKSORT#1#/1,QUICKSORT#2#/2,QUICKSORTD#/1,QUICKSORTD#1#/1,QUICKSORTD#2#/2,SPLIT#/2,SPLIT#1#/2,SPLIT#2#/3 ,SPLIT#3#/4,SPLITD#/2,SPLITD#1#/2,SPLITD#2#/3,SPLITD#3#/4,TESTLIST#/1,TESTQUICKSORT#/1,TESTQUICKSORT2#/1 ,append#/2,append#1#/2,appendD#/2,appendD#1#/2,quicksort#/1,quicksort#1#/1,quicksort#2#/2,quicksortD#/1 ,quicksortD#1#/1,quicksortD#2#/2,split#/2,split#1#/2,split#2#/3,split#3#/4,splitD#/2,splitD#1#/2,splitD#2#/3 ,splitD#3#/4,testList#/1,testQuicksort#/1,testQuicksort2#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,#unit/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/0,c16/0,c17/0,c18/0,c19/2,c2/0 ,c20/1,c21/1,c22/0,c23/1,c24/1,c25/0,c26/1,c27/2,c28/0,c29/2,c3/0,c30/2,c31/1,c32/2,c33/0,c34/2,c35/2,c36/1 ,c37/2,c38/0,c39/2,c4/0,c40/0,c41/0,c42/1,c43/2,c44/0,c45/2,c46/0,c47/0,c48/1,c49/1,c5/0,c50/1,c51/1,c52/1 ,c53/1,c54/1,c55/1,c56/1,c57/1,c58/2,c59/2,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/3 ,c_6/1,c_7/1,c_8/0,c_9/1,c_10/1,c_11/0,c_12/1,c_13/2,c_14/0,c_15/2,c_16/2,c_17/1,c_18/2,c_19/0,c_20/2,c_21/2 ,c_22/1,c_23/1,c_24/0,c_25/3,c_26/0,c_27/0,c_28/1,c_29/1,c_30/0,c_31/3,c_32/0,c_33/0,c_34/1,c_35/1,c_36/1 ,c_37/1,c_38/1,c_39/1,c_40/1,c_41/1,c_42/1,c_43/1,c_44/1,c_45/1,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0 ,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0,c_58/1,c_59/0,c_60/1,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0 ,c_67/0,c_68/0,c_69/0,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/0,c_76/0,c_77/1,c_78/0,c_79/1,c_80/2,c_81/1 ,c_82/1,c_83/0,c_84/1,c_85/1,c_86/0,c_87/1,c_88/2,c_89/0,c_90/3,c_91/1,c_92/2,c_93/0,c_94/3,c_95/1,c_96/2 ,c_97/0,c_98/2,c_99/0,c_100/0,c_101/1,c_102/2,c_103/0,c_104/2,c_105/0,c_106/0,c_107/10,c_108/2,c_109/2} - Obligation: innermost runtime complexity wrt. defined symbols {#ABS#,#CKGT#,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare# ,#greater#,APPEND#,APPEND#1#,APPENDD#,APPENDD#1#,QUICKSORT#,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD# ,QUICKSORTD#1#,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2#,SPLIT#3#,SPLITD#,SPLITD#1#,SPLITD#2#,SPLITD#3# ,TESTLIST#,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1#,appendD#,appendD#1#,quicksort#,quicksort#1# ,quicksort#2#,quicksortD#,quicksortD#1#,quicksortD#2#,split#,split#1#,split#2#,split#3#,splitD#,splitD#1# ,splitD#2#,splitD#3#,testList#,testQuicksort#,testQuicksort2#} and constructors {#0,#EQ,#GT,#LT,#false,#neg ,#pos,#s,#true,#unit,::,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,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52 ,c53,c54,c55,c56,c57,c58,c59,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)) -->_1 QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0),SPLIT#(z0,z1)):2 2:S:QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0),SPLIT#(z0,z1)) -->_1 QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(APPEND#(quicksort(z0),::(z2,quicksort(z1))) ,QUICKSORT#(z1)):4 -->_1 QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(APPEND#(quicksort(z0),::(z2,quicksort(z1))),QUICKSORT#(z0)):3 3:S:QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(APPEND#(quicksort(z0),::(z2,quicksort(z1))),QUICKSORT#(z0)) -->_2 QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)):1 4:S:QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(APPEND#(quicksort(z0),::(z2,quicksort(z1))),QUICKSORT#(z1)) -->_2 QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)):1 5:S:QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)) -->_1 QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0),SPLITD#(z0,z1)):6 6:S:QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0),SPLITD#(z0,z1)) -->_1 QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) ,QUICKSORTD#(z1)):8 -->_1 QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) ,QUICKSORTD#(z0)):7 7:S:QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))),QUICKSORTD#(z0)) -->_2 QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)):5 8:S:QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))),QUICKSORTD#(z1)) -->_2 QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)):5 9:S:TESTQUICKSORT#(z0) -> c_44(QUICKSORT#(testList(#unit()))) -->_1 QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)):1 10:S:TESTQUICKSORT2#(z0) -> c_45(QUICKSORT#(testList(#unit()))) -->_1 QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)):1 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(QUICKSORT#(z1)) QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(QUICKSORTD#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(QUICKSORTD#(z1)) ** Step 8.a:2: UsableRules. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)) QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(QUICKSORT#(z1)) QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)) QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(QUICKSORTD#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(QUICKSORTD#(z1)) TESTQUICKSORT#(z0) -> c_44(QUICKSORT#(testList(#unit()))) TESTQUICKSORT2#(z0) -> c_45(QUICKSORT#(testList(#unit()))) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(z0)) -> #pos(z0) #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(z0)) -> #GT() #compare(#0(),#pos(z0)) -> #LT() #compare(#0(),#s(z0)) -> #LT() #compare(#neg(z0),#0()) -> #LT() #compare(#neg(z0),#neg(z1)) -> #compare(z1,z0) #compare(#neg(z0),#pos(z1)) -> #LT() #compare(#pos(z0),#0()) -> #GT() #compare(#pos(z0),#neg(z1)) -> #GT() #compare(#pos(z0),#pos(z1)) -> #compare(z0,z1) #compare(#s(z0),#0()) -> #GT() #compare(#s(z0),#s(z1)) -> #compare(z0,z1) #greater(z0,z1) -> #ckgt(#compare(z0,z1)) append(z0,z1) -> append#1(z0,z1) append#1(::(z0,z1),z2) -> ::(z0,append(z1,z2)) append#1(nil(),z0) -> z0 appendD(z0,z1) -> appendD#1(z0,z1) appendD#1(::(z0,z1),z2) -> ::(z0,appendD(z1,z2)) appendD#1(nil(),z0) -> z0 quicksort(z0) -> quicksort#1(z0) quicksort#1(::(z0,z1)) -> quicksort#2(split(z0,z1),z0) quicksort#1(nil()) -> nil() quicksort#2(tuple#2(z0,z1),z2) -> append(quicksort(z0),::(z2,quicksort(z1))) quicksortD(z0) -> quicksortD#1(z0) quicksortD#1(::(z0,z1)) -> quicksortD#2(splitD(z0,z1),z0) quicksortD#1(nil()) -> nil() quicksortD#2(tuple#2(z0,z1),z2) -> appendD(quicksortD(z0),::(z2,quicksortD(z1))) split(z0,z1) -> split#1(z1,z0) split#1(::(z0,z1),z2) -> split#2(split(z2,z1),z2,z0) split#1(nil(),z0) -> tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) -> split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) splitD(z0,z1) -> splitD#1(z1,z0) splitD#1(::(z0,z1),z2) -> splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) -> tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) -> splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) testList(z0) -> ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) - Signature: {#ABS/1,#CKGT/1,#COMPARE/2,#GREATER/2,#abs/1,#ckgt/1,#compare/2,#greater/2,APPEND/2,APPEND#1/2,APPENDD/2 ,APPENDD#1/2,QUICKSORT/1,QUICKSORT#1/1,QUICKSORT#2/2,QUICKSORTD/1,QUICKSORTD#1/1,QUICKSORTD#2/2,SPLIT/2 ,SPLIT#1/2,SPLIT#2/3,SPLIT#3/4,SPLITD/2,SPLITD#1/2,SPLITD#2/3,SPLITD#3/4,TESTLIST/1,TESTQUICKSORT/1 ,TESTQUICKSORT2/1,append/2,append#1/2,appendD/2,appendD#1/2,quicksort/1,quicksort#1/1,quicksort#2/2 ,quicksortD/1,quicksortD#1/1,quicksortD#2/2,split/2,split#1/2,split#2/3,split#3/4,splitD/2,splitD#1/2 ,splitD#2/3,splitD#3/4,testList/1,testQuicksort/1,testQuicksort2/1,#ABS#/1,#CKGT#/1,#COMPARE#/2,#GREATER#/2 ,#abs#/1,#ckgt#/1,#compare#/2,#greater#/2,APPEND#/2,APPEND#1#/2,APPENDD#/2,APPENDD#1#/2,QUICKSORT#/1 ,QUICKSORT#1#/1,QUICKSORT#2#/2,QUICKSORTD#/1,QUICKSORTD#1#/1,QUICKSORTD#2#/2,SPLIT#/2,SPLIT#1#/2,SPLIT#2#/3 ,SPLIT#3#/4,SPLITD#/2,SPLITD#1#/2,SPLITD#2#/3,SPLITD#3#/4,TESTLIST#/1,TESTQUICKSORT#/1,TESTQUICKSORT2#/1 ,append#/2,append#1#/2,appendD#/2,appendD#1#/2,quicksort#/1,quicksort#1#/1,quicksort#2#/2,quicksortD#/1 ,quicksortD#1#/1,quicksortD#2#/2,split#/2,split#1#/2,split#2#/3,split#3#/4,splitD#/2,splitD#1#/2,splitD#2#/3 ,splitD#3#/4,testList#/1,testQuicksort#/1,testQuicksort2#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,#unit/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/0,c16/0,c17/0,c18/0,c19/2,c2/0 ,c20/1,c21/1,c22/0,c23/1,c24/1,c25/0,c26/1,c27/2,c28/0,c29/2,c3/0,c30/2,c31/1,c32/2,c33/0,c34/2,c35/2,c36/1 ,c37/2,c38/0,c39/2,c4/0,c40/0,c41/0,c42/1,c43/2,c44/0,c45/2,c46/0,c47/0,c48/1,c49/1,c5/0,c50/1,c51/1,c52/1 ,c53/1,c54/1,c55/1,c56/1,c57/1,c58/2,c59/2,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/3 ,c_6/1,c_7/1,c_8/0,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/0,c_15/1,c_16/1,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1 ,c_22/1,c_23/1,c_24/0,c_25/3,c_26/0,c_27/0,c_28/1,c_29/1,c_30/0,c_31/3,c_32/0,c_33/0,c_34/1,c_35/1,c_36/1 ,c_37/1,c_38/1,c_39/1,c_40/1,c_41/1,c_42/1,c_43/1,c_44/1,c_45/1,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0 ,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0,c_58/1,c_59/0,c_60/1,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0 ,c_67/0,c_68/0,c_69/0,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/0,c_76/0,c_77/1,c_78/0,c_79/1,c_80/2,c_81/1 ,c_82/1,c_83/0,c_84/1,c_85/1,c_86/0,c_87/1,c_88/2,c_89/0,c_90/3,c_91/1,c_92/2,c_93/0,c_94/3,c_95/1,c_96/2 ,c_97/0,c_98/2,c_99/0,c_100/0,c_101/1,c_102/2,c_103/0,c_104/2,c_105/0,c_106/0,c_107/10,c_108/2,c_109/2} - Obligation: innermost runtime complexity wrt. defined symbols {#ABS#,#CKGT#,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare# ,#greater#,APPEND#,APPEND#1#,APPENDD#,APPENDD#1#,QUICKSORT#,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD# ,QUICKSORTD#1#,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2#,SPLIT#3#,SPLITD#,SPLITD#1#,SPLITD#2#,SPLITD#3# ,TESTLIST#,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1#,appendD#,appendD#1#,quicksort#,quicksort#1# ,quicksort#2#,quicksortD#,quicksortD#1#,quicksortD#2#,split#,split#1#,split#2#,split#3#,splitD#,splitD#1# ,splitD#2#,splitD#3#,testList#,testQuicksort#,testQuicksort2#} and constructors {#0,#EQ,#GT,#LT,#false,#neg ,#pos,#s,#true,#unit,::,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,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52 ,c53,c54,c55,c56,c57,c58,c59,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: #abs(#0()) -> #0() #abs(#pos(z0)) -> #pos(z0) #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(z0)) -> #GT() #compare(#0(),#pos(z0)) -> #LT() #compare(#0(),#s(z0)) -> #LT() #compare(#neg(z0),#0()) -> #LT() #compare(#neg(z0),#neg(z1)) -> #compare(z1,z0) #compare(#neg(z0),#pos(z1)) -> #LT() #compare(#pos(z0),#0()) -> #GT() #compare(#pos(z0),#neg(z1)) -> #GT() #compare(#pos(z0),#pos(z1)) -> #compare(z0,z1) #compare(#s(z0),#0()) -> #GT() #compare(#s(z0),#s(z1)) -> #compare(z0,z1) #greater(z0,z1) -> #ckgt(#compare(z0,z1)) split(z0,z1) -> split#1(z1,z0) split#1(::(z0,z1),z2) -> split#2(split(z2,z1),z2,z0) split#1(nil(),z0) -> tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) -> split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) splitD(z0,z1) -> splitD#1(z1,z0) splitD#1(::(z0,z1),z2) -> splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) -> tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) -> splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) testList(z0) -> ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)) QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(QUICKSORT#(z1)) QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)) QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(QUICKSORTD#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(QUICKSORTD#(z1)) TESTQUICKSORT#(z0) -> c_44(QUICKSORT#(testList(#unit()))) TESTQUICKSORT2#(z0) -> c_45(QUICKSORT#(testList(#unit()))) ** Step 8.a:3: WeightGap. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)) QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(QUICKSORT#(z1)) QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)) QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(QUICKSORTD#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(QUICKSORTD#(z1)) TESTQUICKSORT#(z0) -> c_44(QUICKSORT#(testList(#unit()))) TESTQUICKSORT2#(z0) -> c_45(QUICKSORT#(testList(#unit()))) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(z0)) -> #pos(z0) #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(z0)) -> #GT() #compare(#0(),#pos(z0)) -> #LT() #compare(#0(),#s(z0)) -> #LT() #compare(#neg(z0),#0()) -> #LT() #compare(#neg(z0),#neg(z1)) -> #compare(z1,z0) #compare(#neg(z0),#pos(z1)) -> #LT() #compare(#pos(z0),#0()) -> #GT() #compare(#pos(z0),#neg(z1)) -> #GT() #compare(#pos(z0),#pos(z1)) -> #compare(z0,z1) #compare(#s(z0),#0()) -> #GT() #compare(#s(z0),#s(z1)) -> #compare(z0,z1) #greater(z0,z1) -> #ckgt(#compare(z0,z1)) split(z0,z1) -> split#1(z1,z0) split#1(::(z0,z1),z2) -> split#2(split(z2,z1),z2,z0) split#1(nil(),z0) -> tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) -> split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) splitD(z0,z1) -> splitD#1(z1,z0) splitD#1(::(z0,z1),z2) -> splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) -> tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) -> splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) testList(z0) -> ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) - Signature: {#ABS/1,#CKGT/1,#COMPARE/2,#GREATER/2,#abs/1,#ckgt/1,#compare/2,#greater/2,APPEND/2,APPEND#1/2,APPENDD/2 ,APPENDD#1/2,QUICKSORT/1,QUICKSORT#1/1,QUICKSORT#2/2,QUICKSORTD/1,QUICKSORTD#1/1,QUICKSORTD#2/2,SPLIT/2 ,SPLIT#1/2,SPLIT#2/3,SPLIT#3/4,SPLITD/2,SPLITD#1/2,SPLITD#2/3,SPLITD#3/4,TESTLIST/1,TESTQUICKSORT/1 ,TESTQUICKSORT2/1,append/2,append#1/2,appendD/2,appendD#1/2,quicksort/1,quicksort#1/1,quicksort#2/2 ,quicksortD/1,quicksortD#1/1,quicksortD#2/2,split/2,split#1/2,split#2/3,split#3/4,splitD/2,splitD#1/2 ,splitD#2/3,splitD#3/4,testList/1,testQuicksort/1,testQuicksort2/1,#ABS#/1,#CKGT#/1,#COMPARE#/2,#GREATER#/2 ,#abs#/1,#ckgt#/1,#compare#/2,#greater#/2,APPEND#/2,APPEND#1#/2,APPENDD#/2,APPENDD#1#/2,QUICKSORT#/1 ,QUICKSORT#1#/1,QUICKSORT#2#/2,QUICKSORTD#/1,QUICKSORTD#1#/1,QUICKSORTD#2#/2,SPLIT#/2,SPLIT#1#/2,SPLIT#2#/3 ,SPLIT#3#/4,SPLITD#/2,SPLITD#1#/2,SPLITD#2#/3,SPLITD#3#/4,TESTLIST#/1,TESTQUICKSORT#/1,TESTQUICKSORT2#/1 ,append#/2,append#1#/2,appendD#/2,appendD#1#/2,quicksort#/1,quicksort#1#/1,quicksort#2#/2,quicksortD#/1 ,quicksortD#1#/1,quicksortD#2#/2,split#/2,split#1#/2,split#2#/3,split#3#/4,splitD#/2,splitD#1#/2,splitD#2#/3 ,splitD#3#/4,testList#/1,testQuicksort#/1,testQuicksort2#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,#unit/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/0,c16/0,c17/0,c18/0,c19/2,c2/0 ,c20/1,c21/1,c22/0,c23/1,c24/1,c25/0,c26/1,c27/2,c28/0,c29/2,c3/0,c30/2,c31/1,c32/2,c33/0,c34/2,c35/2,c36/1 ,c37/2,c38/0,c39/2,c4/0,c40/0,c41/0,c42/1,c43/2,c44/0,c45/2,c46/0,c47/0,c48/1,c49/1,c5/0,c50/1,c51/1,c52/1 ,c53/1,c54/1,c55/1,c56/1,c57/1,c58/2,c59/2,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/3 ,c_6/1,c_7/1,c_8/0,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/0,c_15/1,c_16/1,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1 ,c_22/1,c_23/1,c_24/0,c_25/3,c_26/0,c_27/0,c_28/1,c_29/1,c_30/0,c_31/3,c_32/0,c_33/0,c_34/1,c_35/1,c_36/1 ,c_37/1,c_38/1,c_39/1,c_40/1,c_41/1,c_42/1,c_43/1,c_44/1,c_45/1,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0 ,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0,c_58/1,c_59/0,c_60/1,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0 ,c_67/0,c_68/0,c_69/0,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/0,c_76/0,c_77/1,c_78/0,c_79/1,c_80/2,c_81/1 ,c_82/1,c_83/0,c_84/1,c_85/1,c_86/0,c_87/1,c_88/2,c_89/0,c_90/3,c_91/1,c_92/2,c_93/0,c_94/3,c_95/1,c_96/2 ,c_97/0,c_98/2,c_99/0,c_100/0,c_101/1,c_102/2,c_103/0,c_104/2,c_105/0,c_106/0,c_107/10,c_108/2,c_109/2} - Obligation: innermost runtime complexity wrt. defined symbols {#ABS#,#CKGT#,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare# ,#greater#,APPEND#,APPEND#1#,APPENDD#,APPENDD#1#,QUICKSORT#,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD# ,QUICKSORTD#1#,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2#,SPLIT#3#,SPLITD#,SPLITD#1#,SPLITD#2#,SPLITD#3# ,TESTLIST#,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1#,appendD#,appendD#1#,quicksort#,quicksort#1# ,quicksort#2#,quicksortD#,quicksortD#1#,quicksortD#2#,split#,split#1#,split#2#,split#3#,splitD#,splitD#1# ,splitD#2#,splitD#3#,testList#,testQuicksort#,testQuicksort2#} and constructors {#0,#EQ,#GT,#LT,#false,#neg ,#pos,#s,#true,#unit,::,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,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52 ,c53,c54,c55,c56,c57,c58,c59,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny} + Details: The weightgap principle applies using the following constant growth matrix-interpretation: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(#ckgt) = {1}, uargs(::) = {1,2}, uargs(split#2) = {1}, uargs(split#3) = {1}, uargs(splitD#2) = {1}, uargs(splitD#3) = {1}, uargs(QUICKSORT#) = {1}, uargs(QUICKSORT#2#) = {1}, uargs(QUICKSORTD#2#) = {1}, uargs(c_12) = {1}, uargs(c_13) = {1}, uargs(c_15) = {1}, uargs(c_16) = {1}, uargs(c_17) = {1}, uargs(c_18) = {1}, uargs(c_20) = {1}, uargs(c_21) = {1}, uargs(c_44) = {1}, uargs(c_45) = {1} Following symbols are considered usable: all TcT has computed the following interpretation: p(#0) = [0] p(#ABS) = [0] p(#CKGT) = [0] p(#COMPARE) = [0] p(#EQ) = [0] p(#GREATER) = [0] p(#GT) = [0] p(#LT) = [0] p(#abs) = [0] p(#ckgt) = [1] x1 + [0] p(#compare) = [0] p(#false) = [0] p(#greater) = [0] p(#neg) = [1] x1 + [0] p(#pos) = [0] p(#s) = [3] p(#true) = [0] p(#unit) = [3] p(::) = [1] x1 + [1] x2 + [0] p(APPEND) = [0] p(APPEND#1) = [0] p(APPENDD) = [0] p(APPENDD#1) = [0] p(QUICKSORT) = [0] p(QUICKSORT#1) = [0] p(QUICKSORT#2) = [0] p(QUICKSORTD) = [0] p(QUICKSORTD#1) = [0] p(QUICKSORTD#2) = [0] p(SPLIT) = [0] p(SPLIT#1) = [0] p(SPLIT#2) = [0] p(SPLIT#3) = [0] p(SPLITD) = [0] p(SPLITD#1) = [0] p(SPLITD#2) = [0] p(SPLITD#3) = [0] p(TESTLIST) = [0] p(TESTQUICKSORT) = [0] p(TESTQUICKSORT2) = [0] p(append) = [0] p(append#1) = [0] p(appendD) = [0] p(appendD#1) = [0] p(c) = [0] p(c1) = [0] p(c10) = [0] p(c11) = [0] p(c12) = [1] x1 + [0] p(c13) = [0] p(c14) = [1] x1 + [0] p(c15) = [0] p(c16) = [0] p(c17) = [0] p(c18) = [0] p(c19) = [1] x1 + [1] x2 + [0] p(c2) = [0] p(c20) = [1] x1 + [0] p(c21) = [1] x1 + [0] p(c22) = [0] p(c23) = [1] x1 + [0] p(c24) = [1] x1 + [0] p(c25) = [0] p(c26) = [1] x1 + [0] p(c27) = [1] x1 + [1] x2 + [0] p(c28) = [0] p(c29) = [1] x1 + [1] x2 + [0] p(c3) = [0] p(c30) = [1] x1 + [1] x2 + [0] p(c31) = [1] x1 + [0] p(c32) = [1] x1 + [1] x2 + [0] p(c33) = [0] p(c34) = [1] x1 + [1] x2 + [0] p(c35) = [1] x1 + [1] x2 + [0] p(c36) = [1] x1 + [0] p(c37) = [1] x1 + [1] x2 + [0] p(c38) = [0] p(c39) = [1] x1 + [1] x2 + [0] p(c4) = [0] p(c40) = [0] p(c41) = [0] p(c42) = [1] x1 + [0] p(c43) = [1] x1 + [1] x2 + [0] p(c44) = [0] p(c45) = [1] x1 + [1] x2 + [0] p(c46) = [0] p(c47) = [0] p(c48) = [1] x1 + [0] p(c49) = [1] x1 + [0] p(c5) = [0] p(c50) = [1] x1 + [0] p(c51) = [1] x1 + [0] p(c52) = [1] x1 + [0] p(c53) = [1] x1 + [0] p(c54) = [1] x1 + [0] p(c55) = [1] x1 + [0] p(c56) = [1] x1 + [0] p(c57) = [1] x1 + [0] p(c58) = [1] x1 + [1] x2 + [0] p(c59) = [1] x1 + [1] x2 + [0] p(c6) = [0] p(c7) = [0] p(c8) = [1] x1 + [0] p(c9) = [0] p(nil) = [0] p(quicksort) = [0] p(quicksort#1) = [0] p(quicksort#2) = [0] p(quicksortD) = [0] p(quicksortD#1) = [0] p(quicksortD#2) = [0] p(split) = [1] x2 + [0] p(split#1) = [1] x1 + [0] p(split#2) = [1] x1 + [1] x3 + [0] p(split#3) = [1] x1 + [1] x2 + [1] x3 + [1] x4 + [0] p(splitD) = [1] x2 + [0] p(splitD#1) = [1] x1 + [0] p(splitD#2) = [1] x1 + [1] x3 + [0] p(splitD#3) = [1] x1 + [1] x2 + [1] x3 + [1] x4 + [0] p(testList) = [4] x1 + [0] p(testQuicksort) = [0] p(testQuicksort2) = [0] p(tuple#2) = [1] x1 + [1] x2 + [0] p(#ABS#) = [0] p(#CKGT#) = [0] p(#COMPARE#) = [0] p(#GREATER#) = [0] p(#abs#) = [0] p(#ckgt#) = [0] p(#compare#) = [0] p(#greater#) = [0] p(APPEND#) = [0] p(APPEND#1#) = [0] p(APPENDD#) = [0] p(APPENDD#1#) = [2] x2 + [0] p(QUICKSORT#) = [1] x1 + [2] p(QUICKSORT#1#) = [1] x1 + [3] p(QUICKSORT#2#) = [1] x1 + [0] p(QUICKSORTD#) = [1] x1 + [0] p(QUICKSORTD#1#) = [1] x1 + [0] p(QUICKSORTD#2#) = [1] x1 + [0] p(SPLIT#) = [0] p(SPLIT#1#) = [0] p(SPLIT#2#) = [0] p(SPLIT#3#) = [0] p(SPLITD#) = [0] p(SPLITD#1#) = [0] p(SPLITD#2#) = [0] p(SPLITD#3#) = [1] x1 + [0] p(TESTLIST#) = [0] p(TESTQUICKSORT#) = [1] x1 + [0] p(TESTQUICKSORT2#) = [1] p(append#) = [0] p(append#1#) = [0] p(appendD#) = [0] p(appendD#1#) = [0] p(quicksort#) = [0] p(quicksort#1#) = [0] p(quicksort#2#) = [0] p(quicksortD#) = [0] p(quicksortD#1#) = [0] p(quicksortD#2#) = [0] p(split#) = [0] p(split#1#) = [0] p(split#2#) = [0] p(split#3#) = [0] p(splitD#) = [0] p(splitD#1#) = [0] p(splitD#2#) = [0] p(splitD#3#) = [0] p(testList#) = [0] p(testQuicksort#) = [0] p(testQuicksort2#) = [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) = [1] x1 + [0] p(c_13) = [1] x1 + [0] p(c_14) = [0] p(c_15) = [1] x1 + [0] p(c_16) = [1] x1 + [0] p(c_17) = [1] x1 + [0] p(c_18) = [1] x1 + [0] p(c_19) = [0] p(c_20) = [1] x1 + [0] p(c_21) = [1] x1 + [0] p(c_22) = [0] p(c_23) = [0] p(c_24) = [0] p(c_25) = [0] p(c_26) = [0] p(c_27) = [0] p(c_28) = [0] p(c_29) = [0] p(c_30) = [0] p(c_31) = [0] p(c_32) = [0] p(c_33) = [0] p(c_34) = [0] p(c_35) = [0] p(c_36) = [0] p(c_37) = [0] p(c_38) = [0] p(c_39) = [1] p(c_40) = [2] x1 + [1] p(c_41) = [1] x1 + [0] p(c_42) = [0] p(c_43) = [1] x1 + [0] p(c_44) = [1] x1 + [0] p(c_45) = [1] x1 + [0] p(c_46) = [0] p(c_47) = [0] p(c_48) = [0] p(c_49) = [0] p(c_50) = [0] p(c_51) = [2] p(c_52) = [1] p(c_53) = [0] p(c_54) = [1] x1 + [4] p(c_55) = [4] p(c_56) = [0] p(c_57) = [0] p(c_58) = [4] x1 + [4] p(c_59) = [0] p(c_60) = [1] p(c_61) = [0] p(c_62) = [1] p(c_63) = [1] p(c_64) = [1] p(c_65) = [1] p(c_66) = [1] p(c_67) = [4] p(c_68) = [0] p(c_69) = [4] p(c_70) = [4] p(c_71) = [0] p(c_72) = [1] p(c_73) = [1] p(c_74) = [0] p(c_75) = [0] p(c_76) = [2] p(c_77) = [1] p(c_78) = [0] p(c_79) = [0] p(c_80) = [0] p(c_81) = [0] p(c_82) = [1] p(c_83) = [0] p(c_84) = [2] x1 + [0] p(c_85) = [0] p(c_86) = [2] p(c_87) = [1] x1 + [0] p(c_88) = [1] x1 + [1] x2 + [4] p(c_89) = [1] p(c_90) = [1] x2 + [4] p(c_91) = [4] x1 + [0] p(c_92) = [1] x1 + [0] p(c_93) = [1] p(c_94) = [1] x1 + [2] x2 + [1] p(c_95) = [4] x1 + [2] p(c_96) = [4] x2 + [1] p(c_97) = [4] p(c_98) = [1] x1 + [1] p(c_99) = [2] p(c_100) = [0] p(c_101) = [1] x1 + [2] p(c_102) = [4] x2 + [0] p(c_103) = [0] p(c_104) = [1] x2 + [2] p(c_105) = [2] p(c_106) = [1] p(c_107) = [1] x2 + [1] x3 + [2] x4 + [4] x6 + [1] x7 + [4] x8 + [1] x9 + [1] p(c_108) = [4] p(c_109) = [1] x1 + [1] x2 + [0] Following rules are strictly oriented: QUICKSORT#1#(::(z0,z1)) = [1] z0 + [1] z1 + [3] > [1] z1 + [0] = c_13(QUICKSORT#2#(split(z0,z1),z0)) Following rules are (at-least) weakly oriented: QUICKSORT#(z0) = [1] z0 + [2] >= [1] z0 + [3] = c_12(QUICKSORT#1#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [0] >= [1] z0 + [2] = c_15(QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [0] >= [1] z1 + [2] = c_16(QUICKSORT#(z1)) QUICKSORTD#(z0) = [1] z0 + [0] >= [1] z0 + [0] = c_17(QUICKSORTD#1#(z0)) QUICKSORTD#1#(::(z0,z1)) = [1] z0 + [1] z1 + [0] >= [1] z1 + [0] = c_18(QUICKSORTD#2#(splitD(z0,z1),z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [0] >= [1] z0 + [0] = c_20(QUICKSORTD#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [0] >= [1] z1 + [0] = c_21(QUICKSORTD#(z1)) TESTQUICKSORT#(z0) = [1] z0 + [0] >= [14] = c_44(QUICKSORT#(testList(#unit()))) TESTQUICKSORT2#(z0) = [1] >= [14] = c_45(QUICKSORT#(testList(#unit()))) #abs(#0()) = [0] >= [0] = #0() #abs(#pos(z0)) = [0] >= [0] = #pos(z0) #ckgt(#EQ()) = [0] >= [0] = #false() #ckgt(#GT()) = [0] >= [0] = #true() #ckgt(#LT()) = [0] >= [0] = #false() #compare(#0(),#0()) = [0] >= [0] = #EQ() #compare(#0(),#neg(z0)) = [0] >= [0] = #GT() #compare(#0(),#pos(z0)) = [0] >= [0] = #LT() #compare(#0(),#s(z0)) = [0] >= [0] = #LT() #compare(#neg(z0),#0()) = [0] >= [0] = #LT() #compare(#neg(z0),#neg(z1)) = [0] >= [0] = #compare(z1,z0) #compare(#neg(z0),#pos(z1)) = [0] >= [0] = #LT() #compare(#pos(z0),#0()) = [0] >= [0] = #GT() #compare(#pos(z0),#neg(z1)) = [0] >= [0] = #GT() #compare(#pos(z0),#pos(z1)) = [0] >= [0] = #compare(z0,z1) #compare(#s(z0),#0()) = [0] >= [0] = #GT() #compare(#s(z0),#s(z1)) = [0] >= [0] = #compare(z0,z1) #greater(z0,z1) = [0] >= [0] = #ckgt(#compare(z0,z1)) split(z0,z1) = [1] z1 + [0] >= [1] z1 + [0] = split#1(z1,z0) split#1(::(z0,z1),z2) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = split#2(split(z2,z1),z2,z0) split#1(nil(),z0) = [0] >= [0] = tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) = [1] z0 + [1] z1 + [1] z3 + [0] >= [1] z0 + [1] z1 + [1] z3 + [0] = split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = tuple#2(z0,::(z2,z1)) splitD(z0,z1) = [1] z1 + [0] >= [1] z1 + [0] = splitD#1(z1,z0) splitD#1(::(z0,z1),z2) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) = [0] >= [0] = tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) = [1] z0 + [1] z1 + [1] z3 + [0] >= [1] z0 + [1] z1 + [1] z3 + [0] = splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = tuple#2(z0,::(z2,z1)) testList(z0) = [4] z0 + [0] >= [0] = ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))),::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) Further, it can be verified that all rules not oriented are covered by the weightgap condition. ** Step 8.a:4: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(QUICKSORT#(z1)) QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)) QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(QUICKSORTD#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(QUICKSORTD#(z1)) TESTQUICKSORT#(z0) -> c_44(QUICKSORT#(testList(#unit()))) TESTQUICKSORT2#(z0) -> c_45(QUICKSORT#(testList(#unit()))) - Weak DPs: QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0)) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(z0)) -> #pos(z0) #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(z0)) -> #GT() #compare(#0(),#pos(z0)) -> #LT() #compare(#0(),#s(z0)) -> #LT() #compare(#neg(z0),#0()) -> #LT() #compare(#neg(z0),#neg(z1)) -> #compare(z1,z0) #compare(#neg(z0),#pos(z1)) -> #LT() #compare(#pos(z0),#0()) -> #GT() #compare(#pos(z0),#neg(z1)) -> #GT() #compare(#pos(z0),#pos(z1)) -> #compare(z0,z1) #compare(#s(z0),#0()) -> #GT() #compare(#s(z0),#s(z1)) -> #compare(z0,z1) #greater(z0,z1) -> #ckgt(#compare(z0,z1)) split(z0,z1) -> split#1(z1,z0) split#1(::(z0,z1),z2) -> split#2(split(z2,z1),z2,z0) split#1(nil(),z0) -> tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) -> split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) splitD(z0,z1) -> splitD#1(z1,z0) splitD#1(::(z0,z1),z2) -> splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) -> tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) -> splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) testList(z0) -> ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) - Signature: {#ABS/1,#CKGT/1,#COMPARE/2,#GREATER/2,#abs/1,#ckgt/1,#compare/2,#greater/2,APPEND/2,APPEND#1/2,APPENDD/2 ,APPENDD#1/2,QUICKSORT/1,QUICKSORT#1/1,QUICKSORT#2/2,QUICKSORTD/1,QUICKSORTD#1/1,QUICKSORTD#2/2,SPLIT/2 ,SPLIT#1/2,SPLIT#2/3,SPLIT#3/4,SPLITD/2,SPLITD#1/2,SPLITD#2/3,SPLITD#3/4,TESTLIST/1,TESTQUICKSORT/1 ,TESTQUICKSORT2/1,append/2,append#1/2,appendD/2,appendD#1/2,quicksort/1,quicksort#1/1,quicksort#2/2 ,quicksortD/1,quicksortD#1/1,quicksortD#2/2,split/2,split#1/2,split#2/3,split#3/4,splitD/2,splitD#1/2 ,splitD#2/3,splitD#3/4,testList/1,testQuicksort/1,testQuicksort2/1,#ABS#/1,#CKGT#/1,#COMPARE#/2,#GREATER#/2 ,#abs#/1,#ckgt#/1,#compare#/2,#greater#/2,APPEND#/2,APPEND#1#/2,APPENDD#/2,APPENDD#1#/2,QUICKSORT#/1 ,QUICKSORT#1#/1,QUICKSORT#2#/2,QUICKSORTD#/1,QUICKSORTD#1#/1,QUICKSORTD#2#/2,SPLIT#/2,SPLIT#1#/2,SPLIT#2#/3 ,SPLIT#3#/4,SPLITD#/2,SPLITD#1#/2,SPLITD#2#/3,SPLITD#3#/4,TESTLIST#/1,TESTQUICKSORT#/1,TESTQUICKSORT2#/1 ,append#/2,append#1#/2,appendD#/2,appendD#1#/2,quicksort#/1,quicksort#1#/1,quicksort#2#/2,quicksortD#/1 ,quicksortD#1#/1,quicksortD#2#/2,split#/2,split#1#/2,split#2#/3,split#3#/4,splitD#/2,splitD#1#/2,splitD#2#/3 ,splitD#3#/4,testList#/1,testQuicksort#/1,testQuicksort2#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,#unit/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/0,c16/0,c17/0,c18/0,c19/2,c2/0 ,c20/1,c21/1,c22/0,c23/1,c24/1,c25/0,c26/1,c27/2,c28/0,c29/2,c3/0,c30/2,c31/1,c32/2,c33/0,c34/2,c35/2,c36/1 ,c37/2,c38/0,c39/2,c4/0,c40/0,c41/0,c42/1,c43/2,c44/0,c45/2,c46/0,c47/0,c48/1,c49/1,c5/0,c50/1,c51/1,c52/1 ,c53/1,c54/1,c55/1,c56/1,c57/1,c58/2,c59/2,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/3 ,c_6/1,c_7/1,c_8/0,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/0,c_15/1,c_16/1,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1 ,c_22/1,c_23/1,c_24/0,c_25/3,c_26/0,c_27/0,c_28/1,c_29/1,c_30/0,c_31/3,c_32/0,c_33/0,c_34/1,c_35/1,c_36/1 ,c_37/1,c_38/1,c_39/1,c_40/1,c_41/1,c_42/1,c_43/1,c_44/1,c_45/1,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0 ,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0,c_58/1,c_59/0,c_60/1,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0 ,c_67/0,c_68/0,c_69/0,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/0,c_76/0,c_77/1,c_78/0,c_79/1,c_80/2,c_81/1 ,c_82/1,c_83/0,c_84/1,c_85/1,c_86/0,c_87/1,c_88/2,c_89/0,c_90/3,c_91/1,c_92/2,c_93/0,c_94/3,c_95/1,c_96/2 ,c_97/0,c_98/2,c_99/0,c_100/0,c_101/1,c_102/2,c_103/0,c_104/2,c_105/0,c_106/0,c_107/10,c_108/2,c_109/2} - Obligation: innermost runtime complexity wrt. defined symbols {#ABS#,#CKGT#,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare# ,#greater#,APPEND#,APPEND#1#,APPENDD#,APPENDD#1#,QUICKSORT#,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD# ,QUICKSORTD#1#,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2#,SPLIT#3#,SPLITD#,SPLITD#1#,SPLITD#2#,SPLITD#3# ,TESTLIST#,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1#,appendD#,appendD#1#,quicksort#,quicksort#1# ,quicksort#2#,quicksortD#,quicksortD#1#,quicksortD#2#,split#,split#1#,split#2#,split#3#,splitD#,splitD#1# ,splitD#2#,splitD#3#,testList#,testQuicksort#,testQuicksort2#} and constructors {#0,#EQ,#GT,#LT,#false,#neg ,#pos,#s,#true,#unit,::,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,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52 ,c53,c54,c55,c56,c57,c58,c59,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_12) = {1}, uargs(c_13) = {1}, uargs(c_15) = {1}, uargs(c_16) = {1}, uargs(c_17) = {1}, uargs(c_18) = {1}, uargs(c_20) = {1}, uargs(c_21) = {1}, uargs(c_44) = {1}, uargs(c_45) = {1} Following symbols are considered usable: {#ABS#,#CKGT#,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare#,#greater#,APPEND#,APPEND#1#,APPENDD#,APPENDD#1# ,QUICKSORT#,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD#,QUICKSORTD#1#,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2# ,SPLIT#3#,SPLITD#,SPLITD#1#,SPLITD#2#,SPLITD#3#,TESTLIST#,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1# ,appendD#,appendD#1#,quicksort#,quicksort#1#,quicksort#2#,quicksortD#,quicksortD#1#,quicksortD#2#,split# ,split#1#,split#2#,split#3#,splitD#,splitD#1#,splitD#2#,splitD#3#,testList#,testQuicksort#,testQuicksort2#} TcT has computed the following interpretation: p(#0) = [0] p(#ABS) = [0] p(#CKGT) = [0] p(#COMPARE) = [0] p(#EQ) = [0] p(#GREATER) = [0] p(#GT) = [0] p(#LT) = [0] p(#abs) = [0] p(#ckgt) = [4] x1 + [0] p(#compare) = [1] x1 + [0] p(#false) = [0] p(#greater) = [0] p(#neg) = [1] p(#pos) = [0] p(#s) = [0] p(#true) = [0] p(#unit) = [0] p(::) = [1] x2 + [1] p(APPEND) = [0] p(APPEND#1) = [0] p(APPENDD) = [0] p(APPENDD#1) = [0] p(QUICKSORT) = [0] p(QUICKSORT#1) = [0] p(QUICKSORT#2) = [0] p(QUICKSORTD) = [0] p(QUICKSORTD#1) = [0] p(QUICKSORTD#2) = [0] p(SPLIT) = [0] p(SPLIT#1) = [0] p(SPLIT#2) = [0] p(SPLIT#3) = [0] p(SPLITD) = [0] p(SPLITD#1) = [0] p(SPLITD#2) = [0] p(SPLITD#3) = [0] p(TESTLIST) = [0] p(TESTQUICKSORT) = [0] p(TESTQUICKSORT2) = [0] p(append) = [0] p(append#1) = [0] p(appendD) = [0] p(appendD#1) = [0] p(c) = [0] p(c1) = [0] p(c10) = [0] p(c11) = [0] p(c12) = [1] x1 + [0] p(c13) = [0] p(c14) = [1] x1 + [0] p(c15) = [0] p(c16) = [0] p(c17) = [0] p(c18) = [0] p(c19) = [1] x1 + [1] x2 + [0] p(c2) = [0] p(c20) = [1] x1 + [0] p(c21) = [1] x1 + [0] p(c22) = [0] p(c23) = [1] x1 + [0] p(c24) = [0] p(c25) = [0] p(c26) = [1] x1 + [0] p(c27) = [1] x1 + [1] x2 + [0] p(c28) = [0] p(c29) = [1] x1 + [1] x2 + [0] p(c3) = [0] p(c30) = [1] x1 + [1] x2 + [0] p(c31) = [1] x1 + [0] p(c32) = [1] x1 + [1] x2 + [0] p(c33) = [0] p(c34) = [1] x1 + [1] x2 + [0] p(c35) = [1] x1 + [1] x2 + [0] p(c36) = [1] x1 + [0] p(c37) = [1] x1 + [1] x2 + [0] p(c38) = [0] p(c39) = [1] x1 + [1] x2 + [0] p(c4) = [0] p(c40) = [0] p(c41) = [0] p(c42) = [1] x1 + [0] p(c43) = [1] x1 + [1] x2 + [0] p(c44) = [0] p(c45) = [1] x1 + [1] x2 + [0] p(c46) = [0] p(c47) = [0] p(c48) = [1] x1 + [0] p(c49) = [1] x1 + [0] p(c5) = [0] p(c50) = [1] x1 + [0] p(c51) = [1] x1 + [0] p(c52) = [1] x1 + [0] p(c53) = [1] x1 + [0] p(c54) = [1] x1 + [0] p(c55) = [1] x1 + [0] p(c56) = [1] x1 + [0] p(c57) = [1] x1 + [0] p(c58) = [1] x1 + [1] x2 + [0] p(c59) = [1] x1 + [1] x2 + [0] p(c6) = [0] p(c7) = [0] p(c8) = [1] x1 + [0] p(c9) = [0] p(nil) = [2] p(quicksort) = [0] p(quicksort#1) = [0] p(quicksort#2) = [0] p(quicksortD) = [0] p(quicksortD#1) = [0] p(quicksortD#2) = [0] p(split) = [0] p(split#1) = [6] x1 + [0] p(split#2) = [0] p(split#3) = [0] p(splitD) = [0] p(splitD#1) = [0] p(splitD#2) = [2] x1 + [0] p(splitD#3) = [0] p(testList) = [0] p(testQuicksort) = [0] p(testQuicksort2) = [0] p(tuple#2) = [1] x1 + [3] p(#ABS#) = [0] p(#CKGT#) = [0] p(#COMPARE#) = [0] p(#GREATER#) = [0] p(#abs#) = [0] p(#ckgt#) = [0] p(#compare#) = [0] p(#greater#) = [0] p(APPEND#) = [0] p(APPEND#1#) = [0] p(APPENDD#) = [0] p(APPENDD#1#) = [0] p(QUICKSORT#) = [0] p(QUICKSORT#1#) = [0] p(QUICKSORT#2#) = [0] p(QUICKSORTD#) = [0] p(QUICKSORTD#1#) = [0] p(QUICKSORTD#2#) = [0] p(SPLIT#) = [0] p(SPLIT#1#) = [0] p(SPLIT#2#) = [0] p(SPLIT#3#) = [0] p(SPLITD#) = [0] p(SPLITD#1#) = [0] p(SPLITD#2#) = [0] p(SPLITD#3#) = [0] p(TESTLIST#) = [0] p(TESTQUICKSORT#) = [4] p(TESTQUICKSORT2#) = [0] p(append#) = [0] p(append#1#) = [0] p(appendD#) = [0] p(appendD#1#) = [0] p(quicksort#) = [0] p(quicksort#1#) = [0] p(quicksort#2#) = [0] p(quicksortD#) = [0] p(quicksortD#1#) = [0] p(quicksortD#2#) = [0] p(split#) = [0] p(split#1#) = [0] p(split#2#) = [0] p(split#3#) = [0] p(splitD#) = [0] p(splitD#1#) = [0] p(splitD#2#) = [0] p(splitD#3#) = [0] p(testList#) = [0] p(testQuicksort#) = [0] p(testQuicksort2#) = [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) = [4] x1 + [0] p(c_13) = [2] x1 + [0] p(c_14) = [0] p(c_15) = [2] x1 + [0] p(c_16) = [4] x1 + [0] p(c_17) = [4] x1 + [0] p(c_18) = [4] x1 + [0] p(c_19) = [0] p(c_20) = [4] x1 + [0] p(c_21) = [2] x1 + [0] p(c_22) = [0] p(c_23) = [0] p(c_24) = [0] p(c_25) = [1] x2 + [0] p(c_26) = [0] p(c_27) = [0] p(c_28) = [0] p(c_29) = [0] p(c_30) = [0] p(c_31) = [0] p(c_32) = [0] p(c_33) = [0] p(c_34) = [1] x1 + [0] p(c_35) = [0] p(c_36) = [0] p(c_37) = [4] x1 + [0] p(c_38) = [4] x1 + [0] p(c_39) = [0] p(c_40) = [0] p(c_41) = [2] x1 + [2] p(c_42) = [4] x1 + [0] p(c_43) = [1] p(c_44) = [4] x1 + [0] p(c_45) = [1] x1 + [0] p(c_46) = [0] p(c_47) = [0] p(c_48) = [0] p(c_49) = [0] p(c_50) = [0] p(c_51) = [0] p(c_52) = [0] p(c_53) = [0] p(c_54) = [0] p(c_55) = [0] p(c_56) = [0] p(c_57) = [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) = [0] p(c_68) = [0] p(c_69) = [0] p(c_70) = [0] p(c_71) = [0] p(c_72) = [0] p(c_73) = [0] p(c_74) = [0] p(c_75) = [0] p(c_76) = [0] p(c_77) = [1] x1 + [0] p(c_78) = [0] p(c_79) = [0] p(c_80) = [0] p(c_81) = [0] p(c_82) = [0] p(c_83) = [0] p(c_84) = [0] p(c_85) = [2] x1 + [0] p(c_86) = [0] p(c_87) = [0] p(c_88) = [1] x2 + [0] p(c_89) = [0] p(c_90) = [2] x1 + [1] x2 + [2] x3 + [0] p(c_91) = [0] p(c_92) = [4] x1 + [0] p(c_93) = [0] p(c_94) = [2] x1 + [4] x2 + [0] p(c_95) = [1] x1 + [0] p(c_96) = [1] x1 + [0] p(c_97) = [0] p(c_98) = [1] x1 + [0] p(c_99) = [0] p(c_100) = [0] p(c_101) = [1] x1 + [0] p(c_102) = [4] x1 + [0] p(c_103) = [0] p(c_104) = [0] p(c_105) = [0] p(c_106) = [0] p(c_107) = [1] x2 + [4] x3 + [1] x5 + [4] x8 + [1] x9 + [0] p(c_108) = [4] p(c_109) = [2] x1 + [0] Following rules are strictly oriented: TESTQUICKSORT#(z0) = [4] > [0] = c_44(QUICKSORT#(testList(#unit()))) Following rules are (at-least) weakly oriented: QUICKSORT#(z0) = [0] >= [0] = c_12(QUICKSORT#1#(z0)) QUICKSORT#1#(::(z0,z1)) = [0] >= [0] = c_13(QUICKSORT#2#(split(z0,z1),z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) = [0] >= [0] = c_15(QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) = [0] >= [0] = c_16(QUICKSORT#(z1)) QUICKSORTD#(z0) = [0] >= [0] = c_17(QUICKSORTD#1#(z0)) QUICKSORTD#1#(::(z0,z1)) = [0] >= [0] = c_18(QUICKSORTD#2#(splitD(z0,z1),z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) = [0] >= [0] = c_20(QUICKSORTD#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) = [0] >= [0] = c_21(QUICKSORTD#(z1)) TESTQUICKSORT2#(z0) = [0] >= [0] = c_45(QUICKSORT#(testList(#unit()))) ** Step 8.a:5: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(QUICKSORT#(z1)) QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)) QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(QUICKSORTD#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(QUICKSORTD#(z1)) TESTQUICKSORT2#(z0) -> c_45(QUICKSORT#(testList(#unit()))) - Weak DPs: QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0)) TESTQUICKSORT#(z0) -> c_44(QUICKSORT#(testList(#unit()))) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(z0)) -> #pos(z0) #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(z0)) -> #GT() #compare(#0(),#pos(z0)) -> #LT() #compare(#0(),#s(z0)) -> #LT() #compare(#neg(z0),#0()) -> #LT() #compare(#neg(z0),#neg(z1)) -> #compare(z1,z0) #compare(#neg(z0),#pos(z1)) -> #LT() #compare(#pos(z0),#0()) -> #GT() #compare(#pos(z0),#neg(z1)) -> #GT() #compare(#pos(z0),#pos(z1)) -> #compare(z0,z1) #compare(#s(z0),#0()) -> #GT() #compare(#s(z0),#s(z1)) -> #compare(z0,z1) #greater(z0,z1) -> #ckgt(#compare(z0,z1)) split(z0,z1) -> split#1(z1,z0) split#1(::(z0,z1),z2) -> split#2(split(z2,z1),z2,z0) split#1(nil(),z0) -> tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) -> split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) splitD(z0,z1) -> splitD#1(z1,z0) splitD#1(::(z0,z1),z2) -> splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) -> tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) -> splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) testList(z0) -> ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) - Signature: {#ABS/1,#CKGT/1,#COMPARE/2,#GREATER/2,#abs/1,#ckgt/1,#compare/2,#greater/2,APPEND/2,APPEND#1/2,APPENDD/2 ,APPENDD#1/2,QUICKSORT/1,QUICKSORT#1/1,QUICKSORT#2/2,QUICKSORTD/1,QUICKSORTD#1/1,QUICKSORTD#2/2,SPLIT/2 ,SPLIT#1/2,SPLIT#2/3,SPLIT#3/4,SPLITD/2,SPLITD#1/2,SPLITD#2/3,SPLITD#3/4,TESTLIST/1,TESTQUICKSORT/1 ,TESTQUICKSORT2/1,append/2,append#1/2,appendD/2,appendD#1/2,quicksort/1,quicksort#1/1,quicksort#2/2 ,quicksortD/1,quicksortD#1/1,quicksortD#2/2,split/2,split#1/2,split#2/3,split#3/4,splitD/2,splitD#1/2 ,splitD#2/3,splitD#3/4,testList/1,testQuicksort/1,testQuicksort2/1,#ABS#/1,#CKGT#/1,#COMPARE#/2,#GREATER#/2 ,#abs#/1,#ckgt#/1,#compare#/2,#greater#/2,APPEND#/2,APPEND#1#/2,APPENDD#/2,APPENDD#1#/2,QUICKSORT#/1 ,QUICKSORT#1#/1,QUICKSORT#2#/2,QUICKSORTD#/1,QUICKSORTD#1#/1,QUICKSORTD#2#/2,SPLIT#/2,SPLIT#1#/2,SPLIT#2#/3 ,SPLIT#3#/4,SPLITD#/2,SPLITD#1#/2,SPLITD#2#/3,SPLITD#3#/4,TESTLIST#/1,TESTQUICKSORT#/1,TESTQUICKSORT2#/1 ,append#/2,append#1#/2,appendD#/2,appendD#1#/2,quicksort#/1,quicksort#1#/1,quicksort#2#/2,quicksortD#/1 ,quicksortD#1#/1,quicksortD#2#/2,split#/2,split#1#/2,split#2#/3,split#3#/4,splitD#/2,splitD#1#/2,splitD#2#/3 ,splitD#3#/4,testList#/1,testQuicksort#/1,testQuicksort2#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,#unit/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/0,c16/0,c17/0,c18/0,c19/2,c2/0 ,c20/1,c21/1,c22/0,c23/1,c24/1,c25/0,c26/1,c27/2,c28/0,c29/2,c3/0,c30/2,c31/1,c32/2,c33/0,c34/2,c35/2,c36/1 ,c37/2,c38/0,c39/2,c4/0,c40/0,c41/0,c42/1,c43/2,c44/0,c45/2,c46/0,c47/0,c48/1,c49/1,c5/0,c50/1,c51/1,c52/1 ,c53/1,c54/1,c55/1,c56/1,c57/1,c58/2,c59/2,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/3 ,c_6/1,c_7/1,c_8/0,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/0,c_15/1,c_16/1,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1 ,c_22/1,c_23/1,c_24/0,c_25/3,c_26/0,c_27/0,c_28/1,c_29/1,c_30/0,c_31/3,c_32/0,c_33/0,c_34/1,c_35/1,c_36/1 ,c_37/1,c_38/1,c_39/1,c_40/1,c_41/1,c_42/1,c_43/1,c_44/1,c_45/1,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0 ,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0,c_58/1,c_59/0,c_60/1,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0 ,c_67/0,c_68/0,c_69/0,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/0,c_76/0,c_77/1,c_78/0,c_79/1,c_80/2,c_81/1 ,c_82/1,c_83/0,c_84/1,c_85/1,c_86/0,c_87/1,c_88/2,c_89/0,c_90/3,c_91/1,c_92/2,c_93/0,c_94/3,c_95/1,c_96/2 ,c_97/0,c_98/2,c_99/0,c_100/0,c_101/1,c_102/2,c_103/0,c_104/2,c_105/0,c_106/0,c_107/10,c_108/2,c_109/2} - Obligation: innermost runtime complexity wrt. defined symbols {#ABS#,#CKGT#,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare# ,#greater#,APPEND#,APPEND#1#,APPENDD#,APPENDD#1#,QUICKSORT#,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD# ,QUICKSORTD#1#,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2#,SPLIT#3#,SPLITD#,SPLITD#1#,SPLITD#2#,SPLITD#3# ,TESTLIST#,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1#,appendD#,appendD#1#,quicksort#,quicksort#1# ,quicksort#2#,quicksortD#,quicksortD#1#,quicksortD#2#,split#,split#1#,split#2#,split#3#,splitD#,splitD#1# ,splitD#2#,splitD#3#,testList#,testQuicksort#,testQuicksort2#} and constructors {#0,#EQ,#GT,#LT,#false,#neg ,#pos,#s,#true,#unit,::,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,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52 ,c53,c54,c55,c56,c57,c58,c59,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_12) = {1}, uargs(c_13) = {1}, uargs(c_15) = {1}, uargs(c_16) = {1}, uargs(c_17) = {1}, uargs(c_18) = {1}, uargs(c_20) = {1}, uargs(c_21) = {1}, uargs(c_44) = {1}, uargs(c_45) = {1} Following symbols are considered usable: {#ABS#,#CKGT#,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare#,#greater#,APPEND#,APPEND#1#,APPENDD#,APPENDD#1# ,QUICKSORT#,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD#,QUICKSORTD#1#,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2# ,SPLIT#3#,SPLITD#,SPLITD#1#,SPLITD#2#,SPLITD#3#,TESTLIST#,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1# ,appendD#,appendD#1#,quicksort#,quicksort#1#,quicksort#2#,quicksortD#,quicksortD#1#,quicksortD#2#,split# ,split#1#,split#2#,split#3#,splitD#,splitD#1#,splitD#2#,splitD#3#,testList#,testQuicksort#,testQuicksort2#} TcT has computed the following interpretation: p(#0) = [2] p(#ABS) = [0] p(#CKGT) = [0] p(#COMPARE) = [0] p(#EQ) = [0] p(#GREATER) = [0] p(#GT) = [0] p(#LT) = [0] p(#abs) = [4] x1 + [6] p(#ckgt) = [0] p(#compare) = [3] x1 + [0] p(#false) = [0] p(#greater) = [0] p(#neg) = [1] x1 + [1] p(#pos) = [2] p(#s) = [1] p(#true) = [0] p(#unit) = [0] p(::) = [4] p(APPEND) = [0] p(APPEND#1) = [0] p(APPENDD) = [0] p(APPENDD#1) = [0] p(QUICKSORT) = [0] p(QUICKSORT#1) = [0] p(QUICKSORT#2) = [0] p(QUICKSORTD) = [0] p(QUICKSORTD#1) = [0] p(QUICKSORTD#2) = [0] p(SPLIT) = [0] p(SPLIT#1) = [0] p(SPLIT#2) = [0] p(SPLIT#3) = [0] p(SPLITD) = [0] p(SPLITD#1) = [0] p(SPLITD#2) = [0] p(SPLITD#3) = [0] p(TESTLIST) = [0] p(TESTQUICKSORT) = [0] p(TESTQUICKSORT2) = [0] p(append) = [0] p(append#1) = [0] p(appendD) = [0] p(appendD#1) = [0] p(c) = [0] p(c1) = [0] p(c10) = [0] p(c11) = [0] p(c12) = [1] x1 + [0] p(c13) = [0] p(c14) = [2] p(c15) = [1] p(c16) = [0] p(c17) = [1] p(c18) = [0] p(c19) = [1] p(c2) = [0] p(c20) = [1] p(c21) = [2] p(c22) = [2] p(c23) = [1] p(c24) = [0] p(c25) = [1] p(c26) = [0] p(c27) = [1] x1 + [1] x2 + [2] p(c28) = [0] p(c29) = [4] p(c3) = [0] p(c30) = [1] p(c31) = [0] p(c32) = [0] p(c33) = [4] p(c34) = [0] p(c35) = [1] p(c36) = [4] p(c37) = [1] p(c38) = [1] p(c39) = [0] p(c4) = [4] p(c40) = [1] p(c41) = [0] p(c42) = [2] p(c43) = [0] p(c44) = [0] p(c45) = [0] p(c46) = [1] p(c47) = [0] p(c48) = [1] p(c49) = [2] p(c5) = [0] p(c50) = [1] p(c51) = [0] p(c52) = [1] p(c53) = [2] p(c54) = [2] p(c55) = [1] p(c56) = [0] p(c57) = [4] p(c58) = [0] p(c59) = [0] p(c6) = [1] p(c7) = [0] p(c8) = [1] p(c9) = [1] p(nil) = [0] p(quicksort) = [2] x1 + [2] p(quicksort#1) = [1] p(quicksort#2) = [2] x1 + [0] p(quicksortD) = [1] p(quicksortD#1) = [2] x1 + [1] p(quicksortD#2) = [1] x1 + [4] p(split) = [0] p(split#1) = [2] x2 + [0] p(split#2) = [1] x2 + [1] x3 + [6] p(split#3) = [1] x1 + [1] x2 + [2] p(splitD) = [1] x1 + [0] p(splitD#1) = [0] p(splitD#2) = [6] x1 + [2] x2 + [6] p(splitD#3) = [1] x2 + [4] x3 + [0] p(testList) = [0] p(testQuicksort) = [0] p(testQuicksort2) = [4] p(tuple#2) = [0] p(#ABS#) = [1] p(#CKGT#) = [4] x1 + [0] p(#COMPARE#) = [1] p(#GREATER#) = [1] p(#abs#) = [2] p(#ckgt#) = [1] x1 + [1] p(#compare#) = [1] p(#greater#) = [4] x2 + [0] p(APPEND#) = [1] x1 + [1] x2 + [0] p(APPEND#1#) = [1] x1 + [1] p(APPENDD#) = [0] p(APPENDD#1#) = [4] x2 + [0] p(QUICKSORT#) = [0] p(QUICKSORT#1#) = [0] p(QUICKSORT#2#) = [0] p(QUICKSORTD#) = [0] p(QUICKSORTD#1#) = [0] p(QUICKSORTD#2#) = [0] p(SPLIT#) = [1] x2 + [1] p(SPLIT#1#) = [1] p(SPLIT#2#) = [4] x3 + [1] p(SPLIT#3#) = [4] p(SPLITD#) = [0] p(SPLITD#1#) = [1] x2 + [0] p(SPLITD#2#) = [4] x1 + [1] x2 + [4] p(SPLITD#3#) = [1] p(TESTLIST#) = [1] p(TESTQUICKSORT#) = [1] p(TESTQUICKSORT2#) = [1] x1 + [5] p(append#) = [1] x1 + [0] p(append#1#) = [1] p(appendD#) = [1] x1 + [1] x2 + [0] p(appendD#1#) = [1] x1 + [4] x2 + [4] p(quicksort#) = [1] x1 + [0] p(quicksort#1#) = [2] p(quicksort#2#) = [0] p(quicksortD#) = [2] p(quicksortD#1#) = [2] x1 + [2] p(quicksortD#2#) = [2] x2 + [0] p(split#) = [1] x1 + [0] p(split#1#) = [1] x1 + [0] p(split#2#) = [1] x2 + [0] p(split#3#) = [2] x2 + [2] x3 + [4] p(splitD#) = [1] x1 + [2] x2 + [1] p(splitD#1#) = [1] x2 + [1] p(splitD#2#) = [1] x1 + [1] p(splitD#3#) = [1] x2 + [1] x3 + [1] p(testList#) = [1] p(testQuicksort#) = [4] x1 + [0] p(testQuicksort2#) = [2] p(c_1) = [1] p(c_2) = [1] p(c_3) = [1] p(c_4) = [1] p(c_5) = [4] x2 + [0] p(c_6) = [4] p(c_7) = [1] p(c_8) = [4] p(c_9) = [1] p(c_10) = [1] x1 + [1] p(c_11) = [1] p(c_12) = [4] x1 + [0] p(c_13) = [4] x1 + [0] p(c_14) = [1] p(c_15) = [1] x1 + [0] p(c_16) = [1] x1 + [0] p(c_17) = [1] x1 + [0] p(c_18) = [1] x1 + [0] p(c_19) = [0] p(c_20) = [4] x1 + [0] p(c_21) = [4] x1 + [0] p(c_22) = [0] p(c_23) = [0] p(c_24) = [0] p(c_25) = [4] x3 + [1] p(c_26) = [0] p(c_27) = [2] p(c_28) = [1] p(c_29) = [2] x1 + [1] p(c_30) = [1] p(c_31) = [1] x2 + [4] x3 + [2] p(c_32) = [0] p(c_33) = [1] p(c_34) = [1] p(c_35) = [1] p(c_36) = [1] p(c_37) = [0] p(c_38) = [4] p(c_39) = [2] x1 + [4] p(c_40) = [2] p(c_41) = [4] p(c_42) = [0] p(c_43) = [1] p(c_44) = [4] x1 + [0] p(c_45) = [1] x1 + [3] p(c_46) = [0] p(c_47) = [0] p(c_48) = [0] p(c_49) = [1] p(c_50) = [0] p(c_51) = [0] p(c_52) = [1] p(c_53) = [0] p(c_54) = [0] p(c_55) = [2] p(c_56) = [1] p(c_57) = [2] p(c_58) = [2] x1 + [2] p(c_59) = [0] p(c_60) = [2] x1 + [0] p(c_61) = [2] p(c_62) = [2] p(c_63) = [2] p(c_64) = [0] p(c_65) = [1] p(c_66) = [2] p(c_67) = [1] p(c_68) = [0] p(c_69) = [0] p(c_70) = [1] p(c_71) = [4] p(c_72) = [2] p(c_73) = [1] x1 + [4] p(c_74) = [1] p(c_75) = [2] p(c_76) = [1] p(c_77) = [4] x1 + [1] p(c_78) = [0] p(c_79) = [1] x1 + [0] p(c_80) = [1] x2 + [0] p(c_81) = [1] x1 + [0] p(c_82) = [2] x1 + [1] p(c_83) = [1] p(c_84) = [1] x1 + [4] p(c_85) = [0] p(c_86) = [4] p(c_87) = [0] p(c_88) = [0] p(c_89) = [0] p(c_90) = [1] x1 + [1] x2 + [0] p(c_91) = [0] p(c_92) = [2] x1 + [1] x2 + [0] p(c_93) = [0] p(c_94) = [1] x2 + [0] p(c_95) = [0] p(c_96) = [2] x1 + [1] p(c_97) = [0] p(c_98) = [1] x1 + [1] x2 + [1] p(c_99) = [1] p(c_100) = [0] p(c_101) = [1] x1 + [1] p(c_102) = [1] x1 + [4] p(c_103) = [2] p(c_104) = [1] p(c_105) = [0] p(c_106) = [2] p(c_107) = [1] x3 + [1] x6 + [4] x7 + [2] x8 + [4] x10 + [1] p(c_108) = [1] p(c_109) = [2] x1 + [0] Following rules are strictly oriented: TESTQUICKSORT2#(z0) = [1] z0 + [5] > [3] = c_45(QUICKSORT#(testList(#unit()))) Following rules are (at-least) weakly oriented: QUICKSORT#(z0) = [0] >= [0] = c_12(QUICKSORT#1#(z0)) QUICKSORT#1#(::(z0,z1)) = [0] >= [0] = c_13(QUICKSORT#2#(split(z0,z1),z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) = [0] >= [0] = c_15(QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) = [0] >= [0] = c_16(QUICKSORT#(z1)) QUICKSORTD#(z0) = [0] >= [0] = c_17(QUICKSORTD#1#(z0)) QUICKSORTD#1#(::(z0,z1)) = [0] >= [0] = c_18(QUICKSORTD#2#(splitD(z0,z1),z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) = [0] >= [0] = c_20(QUICKSORTD#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) = [0] >= [0] = c_21(QUICKSORTD#(z1)) TESTQUICKSORT#(z0) = [1] >= [0] = c_44(QUICKSORT#(testList(#unit()))) ** Step 8.a:6: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(QUICKSORT#(z1)) QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)) QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(QUICKSORTD#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(QUICKSORTD#(z1)) - Weak DPs: QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0)) TESTQUICKSORT#(z0) -> c_44(QUICKSORT#(testList(#unit()))) TESTQUICKSORT2#(z0) -> c_45(QUICKSORT#(testList(#unit()))) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(z0)) -> #pos(z0) #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(z0)) -> #GT() #compare(#0(),#pos(z0)) -> #LT() #compare(#0(),#s(z0)) -> #LT() #compare(#neg(z0),#0()) -> #LT() #compare(#neg(z0),#neg(z1)) -> #compare(z1,z0) #compare(#neg(z0),#pos(z1)) -> #LT() #compare(#pos(z0),#0()) -> #GT() #compare(#pos(z0),#neg(z1)) -> #GT() #compare(#pos(z0),#pos(z1)) -> #compare(z0,z1) #compare(#s(z0),#0()) -> #GT() #compare(#s(z0),#s(z1)) -> #compare(z0,z1) #greater(z0,z1) -> #ckgt(#compare(z0,z1)) split(z0,z1) -> split#1(z1,z0) split#1(::(z0,z1),z2) -> split#2(split(z2,z1),z2,z0) split#1(nil(),z0) -> tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) -> split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) splitD(z0,z1) -> splitD#1(z1,z0) splitD#1(::(z0,z1),z2) -> splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) -> tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) -> splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) testList(z0) -> ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) - Signature: {#ABS/1,#CKGT/1,#COMPARE/2,#GREATER/2,#abs/1,#ckgt/1,#compare/2,#greater/2,APPEND/2,APPEND#1/2,APPENDD/2 ,APPENDD#1/2,QUICKSORT/1,QUICKSORT#1/1,QUICKSORT#2/2,QUICKSORTD/1,QUICKSORTD#1/1,QUICKSORTD#2/2,SPLIT/2 ,SPLIT#1/2,SPLIT#2/3,SPLIT#3/4,SPLITD/2,SPLITD#1/2,SPLITD#2/3,SPLITD#3/4,TESTLIST/1,TESTQUICKSORT/1 ,TESTQUICKSORT2/1,append/2,append#1/2,appendD/2,appendD#1/2,quicksort/1,quicksort#1/1,quicksort#2/2 ,quicksortD/1,quicksortD#1/1,quicksortD#2/2,split/2,split#1/2,split#2/3,split#3/4,splitD/2,splitD#1/2 ,splitD#2/3,splitD#3/4,testList/1,testQuicksort/1,testQuicksort2/1,#ABS#/1,#CKGT#/1,#COMPARE#/2,#GREATER#/2 ,#abs#/1,#ckgt#/1,#compare#/2,#greater#/2,APPEND#/2,APPEND#1#/2,APPENDD#/2,APPENDD#1#/2,QUICKSORT#/1 ,QUICKSORT#1#/1,QUICKSORT#2#/2,QUICKSORTD#/1,QUICKSORTD#1#/1,QUICKSORTD#2#/2,SPLIT#/2,SPLIT#1#/2,SPLIT#2#/3 ,SPLIT#3#/4,SPLITD#/2,SPLITD#1#/2,SPLITD#2#/3,SPLITD#3#/4,TESTLIST#/1,TESTQUICKSORT#/1,TESTQUICKSORT2#/1 ,append#/2,append#1#/2,appendD#/2,appendD#1#/2,quicksort#/1,quicksort#1#/1,quicksort#2#/2,quicksortD#/1 ,quicksortD#1#/1,quicksortD#2#/2,split#/2,split#1#/2,split#2#/3,split#3#/4,splitD#/2,splitD#1#/2,splitD#2#/3 ,splitD#3#/4,testList#/1,testQuicksort#/1,testQuicksort2#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,#unit/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/0,c16/0,c17/0,c18/0,c19/2,c2/0 ,c20/1,c21/1,c22/0,c23/1,c24/1,c25/0,c26/1,c27/2,c28/0,c29/2,c3/0,c30/2,c31/1,c32/2,c33/0,c34/2,c35/2,c36/1 ,c37/2,c38/0,c39/2,c4/0,c40/0,c41/0,c42/1,c43/2,c44/0,c45/2,c46/0,c47/0,c48/1,c49/1,c5/0,c50/1,c51/1,c52/1 ,c53/1,c54/1,c55/1,c56/1,c57/1,c58/2,c59/2,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/3 ,c_6/1,c_7/1,c_8/0,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/0,c_15/1,c_16/1,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1 ,c_22/1,c_23/1,c_24/0,c_25/3,c_26/0,c_27/0,c_28/1,c_29/1,c_30/0,c_31/3,c_32/0,c_33/0,c_34/1,c_35/1,c_36/1 ,c_37/1,c_38/1,c_39/1,c_40/1,c_41/1,c_42/1,c_43/1,c_44/1,c_45/1,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0 ,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0,c_58/1,c_59/0,c_60/1,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0 ,c_67/0,c_68/0,c_69/0,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/0,c_76/0,c_77/1,c_78/0,c_79/1,c_80/2,c_81/1 ,c_82/1,c_83/0,c_84/1,c_85/1,c_86/0,c_87/1,c_88/2,c_89/0,c_90/3,c_91/1,c_92/2,c_93/0,c_94/3,c_95/1,c_96/2 ,c_97/0,c_98/2,c_99/0,c_100/0,c_101/1,c_102/2,c_103/0,c_104/2,c_105/0,c_106/0,c_107/10,c_108/2,c_109/2} - Obligation: innermost runtime complexity wrt. defined symbols {#ABS#,#CKGT#,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare# ,#greater#,APPEND#,APPEND#1#,APPENDD#,APPENDD#1#,QUICKSORT#,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD# ,QUICKSORTD#1#,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2#,SPLIT#3#,SPLITD#,SPLITD#1#,SPLITD#2#,SPLITD#3# ,TESTLIST#,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1#,appendD#,appendD#1#,quicksort#,quicksort#1# ,quicksort#2#,quicksortD#,quicksortD#1#,quicksortD#2#,split#,split#1#,split#2#,split#3#,splitD#,splitD#1# ,splitD#2#,splitD#3#,testList#,testQuicksort#,testQuicksort2#} and constructors {#0,#EQ,#GT,#LT,#false,#neg ,#pos,#s,#true,#unit,::,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,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52 ,c53,c54,c55,c56,c57,c58,c59,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_12) = {1}, uargs(c_13) = {1}, uargs(c_15) = {1}, uargs(c_16) = {1}, uargs(c_17) = {1}, uargs(c_18) = {1}, uargs(c_20) = {1}, uargs(c_21) = {1}, uargs(c_44) = {1}, uargs(c_45) = {1} Following symbols are considered usable: {splitD,splitD#1,splitD#2,splitD#3,#ABS#,#CKGT#,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare#,#greater# ,APPEND#,APPEND#1#,APPENDD#,APPENDD#1#,QUICKSORT#,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD#,QUICKSORTD#1# ,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2#,SPLIT#3#,SPLITD#,SPLITD#1#,SPLITD#2#,SPLITD#3#,TESTLIST# ,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1#,appendD#,appendD#1#,quicksort#,quicksort#1#,quicksort#2# ,quicksortD#,quicksortD#1#,quicksortD#2#,split#,split#1#,split#2#,split#3#,splitD#,splitD#1#,splitD#2# ,splitD#3#,testList#,testQuicksort#,testQuicksort2#} TcT has computed the following interpretation: p(#0) = [0] p(#ABS) = [1] p(#CKGT) = [1] x1 + [4] p(#COMPARE) = [1] x1 + [1] p(#EQ) = [0] p(#GREATER) = [1] x2 + [0] p(#GT) = [6] p(#LT) = [0] p(#abs) = [2] x1 + [0] p(#ckgt) = [2] x1 + [0] p(#compare) = [6] x1 + [4] x2 + [6] p(#false) = [0] p(#greater) = [1] x1 + [1] p(#neg) = [0] p(#pos) = [1] x1 + [0] p(#s) = [0] p(#true) = [2] p(#unit) = [2] p(::) = [1] x2 + [1] p(APPEND) = [4] x1 + [1] x2 + [2] p(APPEND#1) = [1] x1 + [1] x2 + [4] p(APPENDD) = [1] x1 + [4] x2 + [2] p(APPENDD#1) = [1] x1 + [4] p(QUICKSORT) = [2] x1 + [2] p(QUICKSORT#1) = [0] p(QUICKSORT#2) = [1] x1 + [2] x2 + [0] p(QUICKSORTD) = [1] x1 + [0] p(QUICKSORTD#1) = [1] p(QUICKSORTD#2) = [1] x1 + [0] p(SPLIT) = [1] x2 + [0] p(SPLIT#1) = [2] x2 + [0] p(SPLIT#2) = [1] x1 + [1] x2 + [2] p(SPLIT#3) = [1] x1 + [1] p(SPLITD) = [1] x1 + [1] x2 + [1] p(SPLITD#1) = [1] x1 + [1] x2 + [1] p(SPLITD#2) = [2] x1 + [1] x2 + [1] x3 + [1] p(SPLITD#3) = [4] x3 + [1] p(TESTLIST) = [1] x1 + [0] p(TESTQUICKSORT) = [2] x1 + [1] p(TESTQUICKSORT2) = [1] x1 + [1] p(append) = [2] x1 + [1] x2 + [0] p(append#1) = [4] x1 + [2] x2 + [0] p(appendD) = [1] x1 + [0] p(appendD#1) = [2] x1 + [1] p(c) = [4] p(c1) = [0] p(c10) = [4] p(c11) = [0] p(c12) = [0] p(c13) = [1] p(c14) = [1] p(c15) = [0] p(c16) = [0] p(c17) = [1] p(c18) = [0] p(c19) = [0] p(c2) = [0] p(c20) = [1] p(c21) = [0] p(c22) = [0] p(c23) = [1] p(c24) = [1] p(c25) = [0] p(c26) = [0] p(c27) = [1] x1 + [0] p(c28) = [4] p(c29) = [2] p(c3) = [1] p(c30) = [1] x2 + [2] p(c31) = [1] x1 + [0] p(c32) = [1] x2 + [0] p(c33) = [2] p(c34) = [0] p(c35) = [1] x2 + [0] p(c36) = [0] p(c37) = [1] x2 + [0] p(c38) = [1] p(c39) = [2] p(c4) = [4] p(c40) = [4] p(c41) = [1] p(c42) = [0] p(c43) = [1] x2 + [1] p(c44) = [1] p(c45) = [1] x1 + [1] x2 + [2] p(c46) = [0] p(c47) = [0] p(c48) = [0] p(c49) = [2] p(c5) = [2] p(c50) = [1] x1 + [1] p(c51) = [1] p(c52) = [2] p(c53) = [1] x1 + [4] p(c54) = [1] x1 + [0] p(c55) = [1] p(c56) = [0] p(c57) = [1] x1 + [1] p(c58) = [1] x2 + [4] p(c59) = [2] p(c6) = [1] p(c7) = [1] p(c8) = [1] p(c9) = [1] p(nil) = [0] p(quicksort) = [1] x1 + [0] p(quicksort#1) = [2] p(quicksort#2) = [1] x1 + [1] x2 + [4] p(quicksortD) = [1] x1 + [1] p(quicksortD#1) = [1] p(quicksortD#2) = [1] p(split) = [0] p(split#1) = [0] p(split#2) = [0] p(split#3) = [5] x1 + [1] x2 + [1] x4 + [1] p(splitD) = [1] x2 + [0] p(splitD#1) = [1] x1 + [0] p(splitD#2) = [1] x1 + [1] p(splitD#3) = [1] x2 + [1] x3 + [1] p(testList) = [5] x1 + [2] p(testQuicksort) = [2] p(testQuicksort2) = [4] x1 + [0] p(tuple#2) = [1] x1 + [1] x2 + [0] p(#ABS#) = [4] p(#CKGT#) = [0] p(#COMPARE#) = [4] x1 + [2] x2 + [4] p(#GREATER#) = [1] x1 + [0] p(#abs#) = [1] x1 + [2] p(#ckgt#) = [1] x1 + [4] p(#compare#) = [1] p(#greater#) = [4] x1 + [1] x2 + [2] p(APPEND#) = [1] x2 + [1] p(APPEND#1#) = [0] p(APPENDD#) = [1] p(APPENDD#1#) = [4] x2 + [0] p(QUICKSORT#) = [0] p(QUICKSORT#1#) = [0] p(QUICKSORT#2#) = [0] p(QUICKSORTD#) = [1] x1 + [0] p(QUICKSORTD#1#) = [1] x1 + [0] p(QUICKSORTD#2#) = [1] x1 + [0] p(SPLIT#) = [2] x1 + [1] x2 + [4] p(SPLIT#1#) = [0] p(SPLIT#2#) = [4] x3 + [1] p(SPLIT#3#) = [4] x1 + [1] x4 + [0] p(SPLITD#) = [2] x1 + [4] x2 + [0] p(SPLITD#1#) = [0] p(SPLITD#2#) = [2] x1 + [2] x2 + [4] x3 + [0] p(SPLITD#3#) = [2] x3 + [1] x4 + [0] p(TESTLIST#) = [1] x1 + [0] p(TESTQUICKSORT#) = [0] p(TESTQUICKSORT2#) = [4] p(append#) = [1] x1 + [2] x2 + [4] p(append#1#) = [2] p(appendD#) = [4] x2 + [0] p(appendD#1#) = [2] x2 + [1] p(quicksort#) = [2] x1 + [2] p(quicksort#1#) = [2] x1 + [1] p(quicksort#2#) = [1] x2 + [1] p(quicksortD#) = [2] x1 + [4] p(quicksortD#1#) = [1] x1 + [1] p(quicksortD#2#) = [2] x1 + [4] x2 + [0] p(split#) = [1] x1 + [1] x2 + [2] p(split#1#) = [1] x1 + [1] x2 + [2] p(split#2#) = [1] x3 + [0] p(split#3#) = [2] p(splitD#) = [2] x2 + [0] p(splitD#1#) = [4] p(splitD#2#) = [1] x2 + [1] x3 + [0] p(splitD#3#) = [1] x3 + [1] p(testList#) = [1] p(testQuicksort#) = [1] x1 + [1] p(testQuicksort2#) = [1] x1 + [0] p(c_1) = [2] p(c_2) = [0] p(c_3) = [1] p(c_4) = [0] p(c_5) = [2] x2 + [1] p(c_6) = [1] x1 + [0] p(c_7) = [1] x1 + [0] p(c_8) = [0] p(c_9) = [4] p(c_10) = [0] p(c_11) = [1] p(c_12) = [4] x1 + [0] p(c_13) = [2] x1 + [0] p(c_14) = [0] p(c_15) = [4] x1 + [0] p(c_16) = [2] x1 + [0] p(c_17) = [1] x1 + [0] p(c_18) = [1] x1 + [0] p(c_19) = [4] p(c_20) = [1] x1 + [0] p(c_21) = [1] x1 + [0] p(c_22) = [2] p(c_23) = [1] x1 + [0] p(c_24) = [1] p(c_25) = [1] x1 + [1] x2 + [4] p(c_26) = [0] p(c_27) = [1] p(c_28) = [4] p(c_29) = [0] p(c_30) = [0] p(c_31) = [4] x1 + [1] x2 + [1] p(c_32) = [4] p(c_33) = [0] p(c_34) = [1] x1 + [0] p(c_35) = [1] x1 + [1] p(c_36) = [1] x1 + [1] p(c_37) = [1] x1 + [0] p(c_38) = [1] x1 + [4] p(c_39) = [1] p(c_40) = [0] p(c_41) = [1] x1 + [4] p(c_42) = [2] x1 + [1] p(c_43) = [1] p(c_44) = [4] x1 + [0] p(c_45) = [4] x1 + [0] p(c_46) = [0] p(c_47) = [1] p(c_48) = [0] p(c_49) = [1] p(c_50) = [0] p(c_51) = [4] p(c_52) = [1] p(c_53) = [1] p(c_54) = [1] x1 + [4] p(c_55) = [0] p(c_56) = [0] p(c_57) = [4] p(c_58) = [2] x1 + [1] p(c_59) = [2] p(c_60) = [0] p(c_61) = [0] p(c_62) = [1] p(c_63) = [0] p(c_64) = [0] p(c_65) = [1] p(c_66) = [1] p(c_67) = [4] p(c_68) = [1] p(c_69) = [2] p(c_70) = [0] p(c_71) = [1] p(c_72) = [0] p(c_73) = [4] p(c_74) = [0] p(c_75) = [2] p(c_76) = [0] p(c_77) = [4] x1 + [4] p(c_78) = [0] p(c_79) = [2] x1 + [0] p(c_80) = [1] x1 + [0] p(c_81) = [0] p(c_82) = [0] p(c_83) = [0] p(c_84) = [1] x1 + [0] p(c_85) = [1] p(c_86) = [0] p(c_87) = [0] p(c_88) = [1] x1 + [4] x2 + [1] p(c_89) = [0] p(c_90) = [4] x1 + [1] x2 + [0] p(c_91) = [1] x1 + [4] p(c_92) = [1] x2 + [0] p(c_93) = [1] p(c_94) = [1] p(c_95) = [0] p(c_96) = [0] p(c_97) = [0] p(c_98) = [1] p(c_99) = [1] p(c_100) = [2] p(c_101) = [0] p(c_102) = [2] x1 + [1] p(c_103) = [1] p(c_104) = [4] x1 + [0] p(c_105) = [1] p(c_106) = [0] p(c_107) = [2] x2 + [1] x3 + [1] x7 + [1] x10 + [0] p(c_108) = [1] x1 + [4] x2 + [2] p(c_109) = [2] x1 + [1] Following rules are strictly oriented: QUICKSORTD#1#(::(z0,z1)) = [1] z1 + [1] > [1] z1 + [0] = c_18(QUICKSORTD#2#(splitD(z0,z1),z0)) Following rules are (at-least) weakly oriented: QUICKSORT#(z0) = [0] >= [0] = c_12(QUICKSORT#1#(z0)) QUICKSORT#1#(::(z0,z1)) = [0] >= [0] = c_13(QUICKSORT#2#(split(z0,z1),z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) = [0] >= [0] = c_15(QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) = [0] >= [0] = c_16(QUICKSORT#(z1)) QUICKSORTD#(z0) = [1] z0 + [0] >= [1] z0 + [0] = c_17(QUICKSORTD#1#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [0] >= [1] z0 + [0] = c_20(QUICKSORTD#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [0] >= [1] z1 + [0] = c_21(QUICKSORTD#(z1)) TESTQUICKSORT#(z0) = [0] >= [0] = c_44(QUICKSORT#(testList(#unit()))) TESTQUICKSORT2#(z0) = [4] >= [0] = c_45(QUICKSORT#(testList(#unit()))) splitD(z0,z1) = [1] z1 + [0] >= [1] z1 + [0] = splitD#1(z1,z0) splitD#1(::(z0,z1),z2) = [1] z1 + [1] >= [1] z1 + [1] = splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) = [0] >= [0] = tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) = [1] z0 + [1] z1 + [1] >= [1] z0 + [1] z1 + [1] = splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) = [1] z0 + [1] z1 + [1] >= [1] z0 + [1] z1 + [1] = tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) = [1] z0 + [1] z1 + [1] >= [1] z0 + [1] z1 + [1] = tuple#2(z0,::(z2,z1)) ** Step 8.a:7: WeightGap. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(QUICKSORT#(z1)) QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(QUICKSORTD#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(QUICKSORTD#(z1)) - Weak DPs: QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0)) QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0)) TESTQUICKSORT#(z0) -> c_44(QUICKSORT#(testList(#unit()))) TESTQUICKSORT2#(z0) -> c_45(QUICKSORT#(testList(#unit()))) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(z0)) -> #pos(z0) #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(z0)) -> #GT() #compare(#0(),#pos(z0)) -> #LT() #compare(#0(),#s(z0)) -> #LT() #compare(#neg(z0),#0()) -> #LT() #compare(#neg(z0),#neg(z1)) -> #compare(z1,z0) #compare(#neg(z0),#pos(z1)) -> #LT() #compare(#pos(z0),#0()) -> #GT() #compare(#pos(z0),#neg(z1)) -> #GT() #compare(#pos(z0),#pos(z1)) -> #compare(z0,z1) #compare(#s(z0),#0()) -> #GT() #compare(#s(z0),#s(z1)) -> #compare(z0,z1) #greater(z0,z1) -> #ckgt(#compare(z0,z1)) split(z0,z1) -> split#1(z1,z0) split#1(::(z0,z1),z2) -> split#2(split(z2,z1),z2,z0) split#1(nil(),z0) -> tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) -> split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) splitD(z0,z1) -> splitD#1(z1,z0) splitD#1(::(z0,z1),z2) -> splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) -> tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) -> splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) testList(z0) -> ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) - Signature: {#ABS/1,#CKGT/1,#COMPARE/2,#GREATER/2,#abs/1,#ckgt/1,#compare/2,#greater/2,APPEND/2,APPEND#1/2,APPENDD/2 ,APPENDD#1/2,QUICKSORT/1,QUICKSORT#1/1,QUICKSORT#2/2,QUICKSORTD/1,QUICKSORTD#1/1,QUICKSORTD#2/2,SPLIT/2 ,SPLIT#1/2,SPLIT#2/3,SPLIT#3/4,SPLITD/2,SPLITD#1/2,SPLITD#2/3,SPLITD#3/4,TESTLIST/1,TESTQUICKSORT/1 ,TESTQUICKSORT2/1,append/2,append#1/2,appendD/2,appendD#1/2,quicksort/1,quicksort#1/1,quicksort#2/2 ,quicksortD/1,quicksortD#1/1,quicksortD#2/2,split/2,split#1/2,split#2/3,split#3/4,splitD/2,splitD#1/2 ,splitD#2/3,splitD#3/4,testList/1,testQuicksort/1,testQuicksort2/1,#ABS#/1,#CKGT#/1,#COMPARE#/2,#GREATER#/2 ,#abs#/1,#ckgt#/1,#compare#/2,#greater#/2,APPEND#/2,APPEND#1#/2,APPENDD#/2,APPENDD#1#/2,QUICKSORT#/1 ,QUICKSORT#1#/1,QUICKSORT#2#/2,QUICKSORTD#/1,QUICKSORTD#1#/1,QUICKSORTD#2#/2,SPLIT#/2,SPLIT#1#/2,SPLIT#2#/3 ,SPLIT#3#/4,SPLITD#/2,SPLITD#1#/2,SPLITD#2#/3,SPLITD#3#/4,TESTLIST#/1,TESTQUICKSORT#/1,TESTQUICKSORT2#/1 ,append#/2,append#1#/2,appendD#/2,appendD#1#/2,quicksort#/1,quicksort#1#/1,quicksort#2#/2,quicksortD#/1 ,quicksortD#1#/1,quicksortD#2#/2,split#/2,split#1#/2,split#2#/3,split#3#/4,splitD#/2,splitD#1#/2,splitD#2#/3 ,splitD#3#/4,testList#/1,testQuicksort#/1,testQuicksort2#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,#unit/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/0,c16/0,c17/0,c18/0,c19/2,c2/0 ,c20/1,c21/1,c22/0,c23/1,c24/1,c25/0,c26/1,c27/2,c28/0,c29/2,c3/0,c30/2,c31/1,c32/2,c33/0,c34/2,c35/2,c36/1 ,c37/2,c38/0,c39/2,c4/0,c40/0,c41/0,c42/1,c43/2,c44/0,c45/2,c46/0,c47/0,c48/1,c49/1,c5/0,c50/1,c51/1,c52/1 ,c53/1,c54/1,c55/1,c56/1,c57/1,c58/2,c59/2,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/3 ,c_6/1,c_7/1,c_8/0,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/0,c_15/1,c_16/1,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1 ,c_22/1,c_23/1,c_24/0,c_25/3,c_26/0,c_27/0,c_28/1,c_29/1,c_30/0,c_31/3,c_32/0,c_33/0,c_34/1,c_35/1,c_36/1 ,c_37/1,c_38/1,c_39/1,c_40/1,c_41/1,c_42/1,c_43/1,c_44/1,c_45/1,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0 ,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0,c_58/1,c_59/0,c_60/1,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0 ,c_67/0,c_68/0,c_69/0,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/0,c_76/0,c_77/1,c_78/0,c_79/1,c_80/2,c_81/1 ,c_82/1,c_83/0,c_84/1,c_85/1,c_86/0,c_87/1,c_88/2,c_89/0,c_90/3,c_91/1,c_92/2,c_93/0,c_94/3,c_95/1,c_96/2 ,c_97/0,c_98/2,c_99/0,c_100/0,c_101/1,c_102/2,c_103/0,c_104/2,c_105/0,c_106/0,c_107/10,c_108/2,c_109/2} - Obligation: innermost runtime complexity wrt. defined symbols {#ABS#,#CKGT#,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare# ,#greater#,APPEND#,APPEND#1#,APPENDD#,APPENDD#1#,QUICKSORT#,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD# ,QUICKSORTD#1#,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2#,SPLIT#3#,SPLITD#,SPLITD#1#,SPLITD#2#,SPLITD#3# ,TESTLIST#,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1#,appendD#,appendD#1#,quicksort#,quicksort#1# ,quicksort#2#,quicksortD#,quicksortD#1#,quicksortD#2#,split#,split#1#,split#2#,split#3#,splitD#,splitD#1# ,splitD#2#,splitD#3#,testList#,testQuicksort#,testQuicksort2#} and constructors {#0,#EQ,#GT,#LT,#false,#neg ,#pos,#s,#true,#unit,::,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,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52 ,c53,c54,c55,c56,c57,c58,c59,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny} + Details: The weightgap principle applies using the following constant growth matrix-interpretation: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(#ckgt) = {1}, uargs(::) = {1,2}, uargs(split#2) = {1}, uargs(split#3) = {1}, uargs(splitD#2) = {1}, uargs(splitD#3) = {1}, uargs(QUICKSORT#) = {1}, uargs(QUICKSORT#2#) = {1}, uargs(QUICKSORTD#2#) = {1}, uargs(c_12) = {1}, uargs(c_13) = {1}, uargs(c_15) = {1}, uargs(c_16) = {1}, uargs(c_17) = {1}, uargs(c_18) = {1}, uargs(c_20) = {1}, uargs(c_21) = {1}, uargs(c_44) = {1}, uargs(c_45) = {1} Following symbols are considered usable: all TcT has computed the following interpretation: p(#0) = [3] p(#ABS) = [0] p(#CKGT) = [0] p(#COMPARE) = [0] p(#EQ) = [0] p(#GREATER) = [0] p(#GT) = [0] p(#LT) = [0] p(#abs) = [2] x1 + [0] p(#ckgt) = [1] x1 + [0] p(#compare) = [0] p(#false) = [0] p(#greater) = [0] p(#neg) = [1] x1 + [0] p(#pos) = [0] p(#s) = [2] p(#true) = [0] p(#unit) = [0] p(::) = [1] x1 + [1] x2 + [0] p(APPEND) = [0] p(APPEND#1) = [0] p(APPENDD) = [2] x2 + [0] p(APPENDD#1) = [0] p(QUICKSORT) = [0] p(QUICKSORT#1) = [0] p(QUICKSORT#2) = [0] p(QUICKSORTD) = [0] p(QUICKSORTD#1) = [0] p(QUICKSORTD#2) = [0] p(SPLIT) = [0] p(SPLIT#1) = [0] p(SPLIT#2) = [0] p(SPLIT#3) = [0] p(SPLITD) = [0] p(SPLITD#1) = [0] p(SPLITD#2) = [0] p(SPLITD#3) = [0] p(TESTLIST) = [0] p(TESTQUICKSORT) = [0] p(TESTQUICKSORT2) = [0] p(append) = [0] p(append#1) = [0] p(appendD) = [0] p(appendD#1) = [0] p(c) = [0] p(c1) = [0] p(c10) = [0] p(c11) = [0] p(c12) = [1] x1 + [0] p(c13) = [0] p(c14) = [1] x1 + [0] p(c15) = [0] p(c16) = [0] p(c17) = [0] p(c18) = [0] p(c19) = [1] x1 + [1] x2 + [0] p(c2) = [0] p(c20) = [1] x1 + [0] p(c21) = [1] x1 + [0] p(c22) = [0] p(c23) = [1] x1 + [0] p(c24) = [1] x1 + [0] p(c25) = [0] p(c26) = [1] x1 + [0] p(c27) = [1] x1 + [1] x2 + [0] p(c28) = [0] p(c29) = [1] x1 + [1] x2 + [0] p(c3) = [0] p(c30) = [1] x1 + [1] x2 + [0] p(c31) = [1] x1 + [0] p(c32) = [1] x1 + [1] x2 + [0] p(c33) = [0] p(c34) = [1] x1 + [1] x2 + [0] p(c35) = [1] x1 + [1] x2 + [0] p(c36) = [1] x1 + [0] p(c37) = [1] x1 + [1] x2 + [0] p(c38) = [0] p(c39) = [1] x1 + [1] x2 + [0] p(c4) = [0] p(c40) = [0] p(c41) = [0] p(c42) = [1] x1 + [0] p(c43) = [1] x1 + [1] x2 + [0] p(c44) = [0] p(c45) = [1] x1 + [1] x2 + [0] p(c46) = [0] p(c47) = [0] p(c48) = [1] x1 + [0] p(c49) = [1] x1 + [0] p(c5) = [0] p(c50) = [1] x1 + [0] p(c51) = [1] x1 + [0] p(c52) = [1] x1 + [0] p(c53) = [1] x1 + [0] p(c54) = [1] x1 + [0] p(c55) = [1] x1 + [0] p(c56) = [1] x1 + [0] p(c57) = [1] x1 + [0] p(c58) = [1] x1 + [1] x2 + [0] p(c59) = [1] x1 + [1] x2 + [0] p(c6) = [0] p(c7) = [0] p(c8) = [1] x1 + [0] p(c9) = [0] p(nil) = [0] p(quicksort) = [0] p(quicksort#1) = [0] p(quicksort#2) = [0] p(quicksortD) = [0] p(quicksortD#1) = [0] p(quicksortD#2) = [0] p(split) = [1] x2 + [0] p(split#1) = [1] x1 + [0] p(split#2) = [1] x1 + [1] x3 + [0] p(split#3) = [1] x1 + [1] x2 + [1] x3 + [1] x4 + [0] p(splitD) = [1] x2 + [0] p(splitD#1) = [1] x1 + [0] p(splitD#2) = [1] x1 + [1] x3 + [0] p(splitD#3) = [1] x1 + [1] x2 + [1] x3 + [1] x4 + [0] p(testList) = [4] x1 + [7] p(testQuicksort) = [0] p(testQuicksort2) = [0] p(tuple#2) = [1] x1 + [1] x2 + [0] p(#ABS#) = [0] p(#CKGT#) = [0] p(#COMPARE#) = [0] p(#GREATER#) = [0] p(#abs#) = [0] p(#ckgt#) = [0] p(#compare#) = [0] p(#greater#) = [4] x1 + [1] x2 + [0] p(APPEND#) = [1] x1 + [1] x2 + [0] p(APPEND#1#) = [1] x1 + [4] x2 + [0] p(APPENDD#) = [1] x2 + [0] p(APPENDD#1#) = [1] x1 + [1] p(QUICKSORT#) = [1] x1 + [0] p(QUICKSORT#1#) = [1] x1 + [4] p(QUICKSORT#2#) = [1] x1 + [4] p(QUICKSORTD#) = [1] x1 + [2] p(QUICKSORTD#1#) = [1] x1 + [5] p(QUICKSORTD#2#) = [1] x1 + [2] p(SPLIT#) = [2] x2 + [0] p(SPLIT#1#) = [0] p(SPLIT#2#) = [1] x2 + [0] p(SPLIT#3#) = [0] p(SPLITD#) = [0] p(SPLITD#1#) = [0] p(SPLITD#2#) = [0] p(SPLITD#3#) = [0] p(TESTLIST#) = [0] p(TESTQUICKSORT#) = [7] p(TESTQUICKSORT2#) = [7] p(append#) = [0] p(append#1#) = [0] p(appendD#) = [0] p(appendD#1#) = [0] p(quicksort#) = [0] p(quicksort#1#) = [0] p(quicksort#2#) = [0] p(quicksortD#) = [1] x1 + [0] p(quicksortD#1#) = [0] p(quicksortD#2#) = [0] p(split#) = [0] p(split#1#) = [0] p(split#2#) = [0] p(split#3#) = [0] p(splitD#) = [0] p(splitD#1#) = [0] p(splitD#2#) = [0] p(splitD#3#) = [0] p(testList#) = [0] p(testQuicksort#) = [0] p(testQuicksort2#) = [0] p(c_1) = [0] p(c_2) = [0] p(c_3) = [0] p(c_4) = [0] p(c_5) = [0] p(c_6) = [4] p(c_7) = [2] p(c_8) = [0] p(c_9) = [0] p(c_10) = [0] p(c_11) = [0] p(c_12) = [1] x1 + [1] p(c_13) = [1] x1 + [0] p(c_14) = [0] p(c_15) = [1] x1 + [0] p(c_16) = [1] x1 + [0] p(c_17) = [1] x1 + [0] p(c_18) = [1] x1 + [2] p(c_19) = [0] p(c_20) = [1] x1 + [0] p(c_21) = [1] x1 + [2] p(c_22) = [0] p(c_23) = [1] p(c_24) = [0] p(c_25) = [1] x1 + [0] p(c_26) = [1] p(c_27) = [0] p(c_28) = [1] x1 + [0] p(c_29) = [1] x1 + [0] p(c_30) = [4] p(c_31) = [1] x3 + [1] p(c_32) = [2] p(c_33) = [1] p(c_34) = [4] x1 + [4] p(c_35) = [1] x1 + [1] p(c_36) = [0] p(c_37) = [0] p(c_38) = [2] x1 + [0] p(c_39) = [4] p(c_40) = [0] p(c_41) = [1] p(c_42) = [1] x1 + [1] p(c_43) = [4] x1 + [2] p(c_44) = [1] x1 + [0] p(c_45) = [1] x1 + [0] p(c_46) = [4] p(c_47) = [0] p(c_48) = [1] p(c_49) = [4] p(c_50) = [1] p(c_51) = [1] p(c_52) = [0] p(c_53) = [0] p(c_54) = [1] x1 + [1] p(c_55) = [1] p(c_56) = [0] p(c_57) = [0] p(c_58) = [1] p(c_59) = [1] p(c_60) = [0] p(c_61) = [1] p(c_62) = [0] p(c_63) = [0] p(c_64) = [0] p(c_65) = [0] p(c_66) = [1] p(c_67) = [2] p(c_68) = [2] p(c_69) = [4] p(c_70) = [0] p(c_71) = [0] p(c_72) = [0] p(c_73) = [2] x1 + [0] p(c_74) = [2] p(c_75) = [0] p(c_76) = [2] p(c_77) = [4] x1 + [4] p(c_78) = [0] p(c_79) = [1] x1 + [1] p(c_80) = [4] x1 + [1] x2 + [1] p(c_81) = [2] p(c_82) = [1] p(c_83) = [1] p(c_84) = [2] x1 + [0] p(c_85) = [1] x1 + [0] p(c_86) = [4] p(c_87) = [0] p(c_88) = [4] x1 + [1] x2 + [0] p(c_89) = [0] p(c_90) = [2] x2 + [2] p(c_91) = [1] p(c_92) = [1] x1 + [1] x2 + [0] p(c_93) = [0] p(c_94) = [1] x1 + [1] x3 + [0] p(c_95) = [1] p(c_96) = [1] x1 + [0] p(c_97) = [0] p(c_98) = [1] x1 + [2] x2 + [1] p(c_99) = [0] p(c_100) = [1] p(c_101) = [1] x1 + [1] p(c_102) = [4] x2 + [1] p(c_103) = [2] p(c_104) = [1] x2 + [0] p(c_105) = [1] p(c_106) = [0] p(c_107) = [4] x1 + [4] x2 + [4] x3 + [1] x4 + [1] x6 + [2] x7 + [1] x8 + [1] x9 + [2] x10 + [0] p(c_108) = [2] x1 + [2] x2 + [0] p(c_109) = [4] x1 + [1] Following rules are strictly oriented: QUICKSORT#2#(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [4] > [1] z0 + [0] = c_15(QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [4] > [1] z1 + [0] = c_16(QUICKSORT#(z1)) Following rules are (at-least) weakly oriented: QUICKSORT#(z0) = [1] z0 + [0] >= [1] z0 + [5] = c_12(QUICKSORT#1#(z0)) QUICKSORT#1#(::(z0,z1)) = [1] z0 + [1] z1 + [4] >= [1] z1 + [4] = c_13(QUICKSORT#2#(split(z0,z1),z0)) QUICKSORTD#(z0) = [1] z0 + [2] >= [1] z0 + [5] = c_17(QUICKSORTD#1#(z0)) QUICKSORTD#1#(::(z0,z1)) = [1] z0 + [1] z1 + [5] >= [1] z1 + [4] = c_18(QUICKSORTD#2#(splitD(z0,z1),z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [2] >= [1] z0 + [2] = c_20(QUICKSORTD#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [2] >= [1] z1 + [4] = c_21(QUICKSORTD#(z1)) TESTQUICKSORT#(z0) = [7] >= [7] = c_44(QUICKSORT#(testList(#unit()))) TESTQUICKSORT2#(z0) = [7] >= [7] = c_45(QUICKSORT#(testList(#unit()))) #abs(#0()) = [6] >= [3] = #0() #abs(#pos(z0)) = [0] >= [0] = #pos(z0) #ckgt(#EQ()) = [0] >= [0] = #false() #ckgt(#GT()) = [0] >= [0] = #true() #ckgt(#LT()) = [0] >= [0] = #false() #compare(#0(),#0()) = [0] >= [0] = #EQ() #compare(#0(),#neg(z0)) = [0] >= [0] = #GT() #compare(#0(),#pos(z0)) = [0] >= [0] = #LT() #compare(#0(),#s(z0)) = [0] >= [0] = #LT() #compare(#neg(z0),#0()) = [0] >= [0] = #LT() #compare(#neg(z0),#neg(z1)) = [0] >= [0] = #compare(z1,z0) #compare(#neg(z0),#pos(z1)) = [0] >= [0] = #LT() #compare(#pos(z0),#0()) = [0] >= [0] = #GT() #compare(#pos(z0),#neg(z1)) = [0] >= [0] = #GT() #compare(#pos(z0),#pos(z1)) = [0] >= [0] = #compare(z0,z1) #compare(#s(z0),#0()) = [0] >= [0] = #GT() #compare(#s(z0),#s(z1)) = [0] >= [0] = #compare(z0,z1) #greater(z0,z1) = [0] >= [0] = #ckgt(#compare(z0,z1)) split(z0,z1) = [1] z1 + [0] >= [1] z1 + [0] = split#1(z1,z0) split#1(::(z0,z1),z2) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = split#2(split(z2,z1),z2,z0) split#1(nil(),z0) = [0] >= [0] = tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) = [1] z0 + [1] z1 + [1] z3 + [0] >= [1] z0 + [1] z1 + [1] z3 + [0] = split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = tuple#2(z0,::(z2,z1)) splitD(z0,z1) = [1] z1 + [0] >= [1] z1 + [0] = splitD#1(z1,z0) splitD#1(::(z0,z1),z2) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) = [0] >= [0] = tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) = [1] z0 + [1] z1 + [1] z3 + [0] >= [1] z0 + [1] z1 + [1] z3 + [0] = splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = tuple#2(z0,::(z2,z1)) testList(z0) = [4] z0 + [7] >= [6] = ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))),::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) Further, it can be verified that all rules not oriented are covered by the weightgap condition. ** Step 8.a:8: WeightGap. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)) QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(QUICKSORTD#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(QUICKSORTD#(z1)) - Weak DPs: QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(QUICKSORT#(z1)) QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0)) TESTQUICKSORT#(z0) -> c_44(QUICKSORT#(testList(#unit()))) TESTQUICKSORT2#(z0) -> c_45(QUICKSORT#(testList(#unit()))) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(z0)) -> #pos(z0) #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(z0)) -> #GT() #compare(#0(),#pos(z0)) -> #LT() #compare(#0(),#s(z0)) -> #LT() #compare(#neg(z0),#0()) -> #LT() #compare(#neg(z0),#neg(z1)) -> #compare(z1,z0) #compare(#neg(z0),#pos(z1)) -> #LT() #compare(#pos(z0),#0()) -> #GT() #compare(#pos(z0),#neg(z1)) -> #GT() #compare(#pos(z0),#pos(z1)) -> #compare(z0,z1) #compare(#s(z0),#0()) -> #GT() #compare(#s(z0),#s(z1)) -> #compare(z0,z1) #greater(z0,z1) -> #ckgt(#compare(z0,z1)) split(z0,z1) -> split#1(z1,z0) split#1(::(z0,z1),z2) -> split#2(split(z2,z1),z2,z0) split#1(nil(),z0) -> tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) -> split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) splitD(z0,z1) -> splitD#1(z1,z0) splitD#1(::(z0,z1),z2) -> splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) -> tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) -> splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) testList(z0) -> ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) - Signature: {#ABS/1,#CKGT/1,#COMPARE/2,#GREATER/2,#abs/1,#ckgt/1,#compare/2,#greater/2,APPEND/2,APPEND#1/2,APPENDD/2 ,APPENDD#1/2,QUICKSORT/1,QUICKSORT#1/1,QUICKSORT#2/2,QUICKSORTD/1,QUICKSORTD#1/1,QUICKSORTD#2/2,SPLIT/2 ,SPLIT#1/2,SPLIT#2/3,SPLIT#3/4,SPLITD/2,SPLITD#1/2,SPLITD#2/3,SPLITD#3/4,TESTLIST/1,TESTQUICKSORT/1 ,TESTQUICKSORT2/1,append/2,append#1/2,appendD/2,appendD#1/2,quicksort/1,quicksort#1/1,quicksort#2/2 ,quicksortD/1,quicksortD#1/1,quicksortD#2/2,split/2,split#1/2,split#2/3,split#3/4,splitD/2,splitD#1/2 ,splitD#2/3,splitD#3/4,testList/1,testQuicksort/1,testQuicksort2/1,#ABS#/1,#CKGT#/1,#COMPARE#/2,#GREATER#/2 ,#abs#/1,#ckgt#/1,#compare#/2,#greater#/2,APPEND#/2,APPEND#1#/2,APPENDD#/2,APPENDD#1#/2,QUICKSORT#/1 ,QUICKSORT#1#/1,QUICKSORT#2#/2,QUICKSORTD#/1,QUICKSORTD#1#/1,QUICKSORTD#2#/2,SPLIT#/2,SPLIT#1#/2,SPLIT#2#/3 ,SPLIT#3#/4,SPLITD#/2,SPLITD#1#/2,SPLITD#2#/3,SPLITD#3#/4,TESTLIST#/1,TESTQUICKSORT#/1,TESTQUICKSORT2#/1 ,append#/2,append#1#/2,appendD#/2,appendD#1#/2,quicksort#/1,quicksort#1#/1,quicksort#2#/2,quicksortD#/1 ,quicksortD#1#/1,quicksortD#2#/2,split#/2,split#1#/2,split#2#/3,split#3#/4,splitD#/2,splitD#1#/2,splitD#2#/3 ,splitD#3#/4,testList#/1,testQuicksort#/1,testQuicksort2#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,#unit/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/0,c16/0,c17/0,c18/0,c19/2,c2/0 ,c20/1,c21/1,c22/0,c23/1,c24/1,c25/0,c26/1,c27/2,c28/0,c29/2,c3/0,c30/2,c31/1,c32/2,c33/0,c34/2,c35/2,c36/1 ,c37/2,c38/0,c39/2,c4/0,c40/0,c41/0,c42/1,c43/2,c44/0,c45/2,c46/0,c47/0,c48/1,c49/1,c5/0,c50/1,c51/1,c52/1 ,c53/1,c54/1,c55/1,c56/1,c57/1,c58/2,c59/2,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/3 ,c_6/1,c_7/1,c_8/0,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/0,c_15/1,c_16/1,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1 ,c_22/1,c_23/1,c_24/0,c_25/3,c_26/0,c_27/0,c_28/1,c_29/1,c_30/0,c_31/3,c_32/0,c_33/0,c_34/1,c_35/1,c_36/1 ,c_37/1,c_38/1,c_39/1,c_40/1,c_41/1,c_42/1,c_43/1,c_44/1,c_45/1,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0 ,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0,c_58/1,c_59/0,c_60/1,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0 ,c_67/0,c_68/0,c_69/0,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/0,c_76/0,c_77/1,c_78/0,c_79/1,c_80/2,c_81/1 ,c_82/1,c_83/0,c_84/1,c_85/1,c_86/0,c_87/1,c_88/2,c_89/0,c_90/3,c_91/1,c_92/2,c_93/0,c_94/3,c_95/1,c_96/2 ,c_97/0,c_98/2,c_99/0,c_100/0,c_101/1,c_102/2,c_103/0,c_104/2,c_105/0,c_106/0,c_107/10,c_108/2,c_109/2} - Obligation: innermost runtime complexity wrt. defined symbols {#ABS#,#CKGT#,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare# ,#greater#,APPEND#,APPEND#1#,APPENDD#,APPENDD#1#,QUICKSORT#,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD# ,QUICKSORTD#1#,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2#,SPLIT#3#,SPLITD#,SPLITD#1#,SPLITD#2#,SPLITD#3# ,TESTLIST#,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1#,appendD#,appendD#1#,quicksort#,quicksort#1# ,quicksort#2#,quicksortD#,quicksortD#1#,quicksortD#2#,split#,split#1#,split#2#,split#3#,splitD#,splitD#1# ,splitD#2#,splitD#3#,testList#,testQuicksort#,testQuicksort2#} and constructors {#0,#EQ,#GT,#LT,#false,#neg ,#pos,#s,#true,#unit,::,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,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52 ,c53,c54,c55,c56,c57,c58,c59,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny} + Details: The weightgap principle applies using the following constant growth matrix-interpretation: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(#ckgt) = {1}, uargs(::) = {1,2}, uargs(split#2) = {1}, uargs(split#3) = {1}, uargs(splitD#2) = {1}, uargs(splitD#3) = {1}, uargs(QUICKSORT#) = {1}, uargs(QUICKSORT#2#) = {1}, uargs(QUICKSORTD#2#) = {1}, uargs(c_12) = {1}, uargs(c_13) = {1}, uargs(c_15) = {1}, uargs(c_16) = {1}, uargs(c_17) = {1}, uargs(c_18) = {1}, uargs(c_20) = {1}, uargs(c_21) = {1}, uargs(c_44) = {1}, uargs(c_45) = {1} Following symbols are considered usable: all TcT has computed the following interpretation: p(#0) = [0] p(#ABS) = [0] p(#CKGT) = [0] p(#COMPARE) = [0] p(#EQ) = [0] p(#GREATER) = [0] p(#GT) = [0] p(#LT) = [0] p(#abs) = [0] p(#ckgt) = [1] x1 + [0] p(#compare) = [0] p(#false) = [0] p(#greater) = [0] p(#neg) = [1] x1 + [0] p(#pos) = [0] p(#s) = [0] p(#true) = [0] p(#unit) = [1] p(::) = [1] x1 + [1] x2 + [0] p(APPEND) = [0] p(APPEND#1) = [0] p(APPENDD) = [0] p(APPENDD#1) = [0] p(QUICKSORT) = [2] p(QUICKSORT#1) = [0] p(QUICKSORT#2) = [0] p(QUICKSORTD) = [0] p(QUICKSORTD#1) = [0] p(QUICKSORTD#2) = [0] p(SPLIT) = [0] p(SPLIT#1) = [0] p(SPLIT#2) = [0] p(SPLIT#3) = [0] p(SPLITD) = [0] p(SPLITD#1) = [0] p(SPLITD#2) = [0] p(SPLITD#3) = [0] p(TESTLIST) = [0] p(TESTQUICKSORT) = [0] p(TESTQUICKSORT2) = [0] p(append) = [0] p(append#1) = [0] p(appendD) = [0] p(appendD#1) = [0] p(c) = [0] p(c1) = [0] p(c10) = [0] p(c11) = [0] p(c12) = [1] x1 + [0] p(c13) = [0] p(c14) = [1] x1 + [0] p(c15) = [0] p(c16) = [1] p(c17) = [2] p(c18) = [1] p(c19) = [1] x1 + [1] x2 + [1] p(c2) = [0] p(c20) = [0] p(c21) = [1] x1 + [0] p(c22) = [0] p(c23) = [1] p(c24) = [2] p(c25) = [2] p(c26) = [2] p(c27) = [1] x1 + [1] x2 + [4] p(c28) = [1] p(c29) = [1] x2 + [0] p(c3) = [1] p(c30) = [1] p(c31) = [1] x1 + [0] p(c32) = [1] x1 + [0] p(c33) = [4] p(c34) = [1] p(c35) = [1] x1 + [0] p(c36) = [1] x1 + [4] p(c37) = [1] x1 + [1] x2 + [1] p(c38) = [0] p(c39) = [0] p(c4) = [0] p(c40) = [1] p(c41) = [0] p(c42) = [1] x1 + [0] p(c43) = [1] x1 + [1] x2 + [0] p(c44) = [4] p(c45) = [1] x1 + [4] p(c46) = [2] p(c47) = [2] p(c48) = [1] x1 + [0] p(c49) = [1] x1 + [0] p(c5) = [1] p(c50) = [0] p(c51) = [1] x1 + [1] p(c52) = [0] p(c53) = [0] p(c54) = [0] p(c55) = [2] p(c56) = [4] p(c57) = [2] p(c58) = [1] x1 + [2] p(c59) = [2] p(c6) = [4] p(c7) = [1] p(c8) = [1] x1 + [0] p(c9) = [1] p(nil) = [0] p(quicksort) = [4] x1 + [2] p(quicksort#1) = [0] p(quicksort#2) = [1] x1 + [1] x2 + [4] p(quicksortD) = [0] p(quicksortD#1) = [1] p(quicksortD#2) = [1] x1 + [2] x2 + [0] p(split) = [1] x2 + [0] p(split#1) = [1] x1 + [0] p(split#2) = [1] x1 + [1] x3 + [0] p(split#3) = [1] x1 + [1] x2 + [1] x3 + [1] x4 + [0] p(splitD) = [1] x2 + [0] p(splitD#1) = [1] x1 + [0] p(splitD#2) = [1] x1 + [1] x3 + [0] p(splitD#3) = [1] x1 + [1] x2 + [1] x3 + [1] x4 + [0] p(testList) = [1] x1 + [5] p(testQuicksort) = [1] x1 + [0] p(testQuicksort2) = [1] x1 + [2] p(tuple#2) = [1] x1 + [1] x2 + [0] p(#ABS#) = [1] p(#CKGT#) = [1] x1 + [1] p(#COMPARE#) = [4] x1 + [1] x2 + [0] p(#GREATER#) = [0] p(#abs#) = [2] x1 + [0] p(#ckgt#) = [1] x1 + [1] p(#compare#) = [2] x1 + [1] x2 + [2] p(#greater#) = [4] x1 + [1] x2 + [0] p(APPEND#) = [1] x2 + [0] p(APPEND#1#) = [1] p(APPENDD#) = [4] x1 + [1] x2 + [0] p(APPENDD#1#) = [1] x1 + [4] x2 + [2] p(QUICKSORT#) = [1] x1 + [0] p(QUICKSORT#1#) = [1] x1 + [5] p(QUICKSORT#2#) = [1] x1 + [0] p(QUICKSORTD#) = [1] x1 + [1] p(QUICKSORTD#1#) = [1] x1 + [0] p(QUICKSORTD#2#) = [1] x1 + [1] x2 + [0] p(SPLIT#) = [1] x2 + [1] p(SPLIT#1#) = [0] p(SPLIT#2#) = [1] x1 + [1] x3 + [1] p(SPLIT#3#) = [4] x1 + [1] x4 + [0] p(SPLITD#) = [1] p(SPLITD#1#) = [2] p(SPLITD#2#) = [2] p(SPLITD#3#) = [4] x1 + [2] x2 + [4] x4 + [0] p(TESTLIST#) = [4] x1 + [1] p(TESTQUICKSORT#) = [2] x1 + [7] p(TESTQUICKSORT2#) = [7] p(append#) = [2] x1 + [0] p(append#1#) = [2] x2 + [2] p(appendD#) = [2] p(appendD#1#) = [2] x1 + [4] x2 + [0] p(quicksort#) = [4] x1 + [2] p(quicksort#1#) = [2] x1 + [1] p(quicksort#2#) = [0] p(quicksortD#) = [1] x1 + [4] p(quicksortD#1#) = [1] x1 + [1] p(quicksortD#2#) = [2] x1 + [4] x2 + [0] p(split#) = [4] x1 + [1] x2 + [1] p(split#1#) = [1] x1 + [1] x2 + [1] p(split#2#) = [1] x1 + [1] x2 + [0] p(split#3#) = [1] x1 + [2] x3 + [1] x4 + [1] p(splitD#) = [4] x1 + [1] x2 + [0] p(splitD#1#) = [1] x1 + [1] x2 + [2] p(splitD#2#) = [4] x2 + [2] x3 + [2] p(splitD#3#) = [1] x4 + [0] p(testList#) = [1] p(testQuicksort#) = [1] x1 + [0] p(testQuicksort2#) = [2] x1 + [0] p(c_1) = [2] p(c_2) = [1] p(c_3) = [4] p(c_4) = [0] p(c_5) = [1] x1 + [2] x2 + [1] x3 + [0] p(c_6) = [0] p(c_7) = [1] x1 + [2] p(c_8) = [2] p(c_9) = [2] x1 + [1] p(c_10) = [1] x1 + [1] p(c_11) = [2] p(c_12) = [1] x1 + [2] p(c_13) = [1] x1 + [2] p(c_14) = [1] p(c_15) = [1] x1 + [0] p(c_16) = [1] x1 + [0] p(c_17) = [1] x1 + [0] p(c_18) = [1] x1 + [0] p(c_19) = [1] p(c_20) = [1] x1 + [0] p(c_21) = [1] x1 + [6] p(c_22) = [1] p(c_23) = [1] p(c_24) = [4] p(c_25) = [4] x2 + [1] x3 + [1] p(c_26) = [4] p(c_27) = [1] p(c_28) = [0] p(c_29) = [4] x1 + [0] p(c_30) = [0] p(c_31) = [1] x2 + [1] p(c_32) = [1] p(c_33) = [1] p(c_34) = [0] p(c_35) = [0] p(c_36) = [2] x1 + [0] p(c_37) = [1] p(c_38) = [1] x1 + [1] p(c_39) = [0] p(c_40) = [0] p(c_41) = [2] p(c_42) = [1] x1 + [1] p(c_43) = [0] p(c_44) = [1] x1 + [0] p(c_45) = [1] x1 + [1] p(c_46) = [0] p(c_47) = [4] p(c_48) = [1] p(c_49) = [0] p(c_50) = [0] p(c_51) = [4] p(c_52) = [1] p(c_53) = [0] p(c_54) = [1] x1 + [1] p(c_55) = [1] p(c_56) = [0] p(c_57) = [4] p(c_58) = [1] p(c_59) = [1] p(c_60) = [1] x1 + [4] p(c_61) = [0] p(c_62) = [4] p(c_63) = [1] p(c_64) = [1] p(c_65) = [1] p(c_66) = [1] p(c_67) = [2] p(c_68) = [1] p(c_69) = [1] p(c_70) = [0] p(c_71) = [1] p(c_72) = [4] p(c_73) = [4] x1 + [0] p(c_74) = [0] p(c_75) = [0] p(c_76) = [1] p(c_77) = [1] x1 + [0] p(c_78) = [1] p(c_79) = [1] p(c_80) = [4] x1 + [1] x2 + [0] p(c_81) = [4] p(c_82) = [1] x1 + [1] p(c_83) = [1] p(c_84) = [1] x1 + [0] p(c_85) = [2] p(c_86) = [0] p(c_87) = [2] p(c_88) = [1] x1 + [0] p(c_89) = [0] p(c_90) = [4] x2 + [2] x3 + [4] p(c_91) = [1] x1 + [0] p(c_92) = [1] x2 + [1] p(c_93) = [1] p(c_94) = [1] x1 + [1] x3 + [4] p(c_95) = [0] p(c_96) = [1] x1 + [4] p(c_97) = [0] p(c_98) = [1] x1 + [1] x2 + [2] p(c_99) = [1] p(c_100) = [2] p(c_101) = [1] x1 + [0] p(c_102) = [1] x2 + [0] p(c_103) = [0] p(c_104) = [1] x2 + [1] p(c_105) = [2] p(c_106) = [1] p(c_107) = [2] x1 + [1] x2 + [1] x3 + [2] x5 + [1] x7 + [1] x8 + [2] x9 + [1] x10 + [0] p(c_108) = [1] x1 + [4] x2 + [0] p(c_109) = [1] x1 + [4] x2 + [1] Following rules are strictly oriented: QUICKSORTD#(z0) = [1] z0 + [1] > [1] z0 + [0] = c_17(QUICKSORTD#1#(z0)) Following rules are (at-least) weakly oriented: QUICKSORT#(z0) = [1] z0 + [0] >= [1] z0 + [7] = c_12(QUICKSORT#1#(z0)) QUICKSORT#1#(::(z0,z1)) = [1] z0 + [1] z1 + [5] >= [1] z1 + [2] = c_13(QUICKSORT#2#(split(z0,z1),z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [0] >= [1] z0 + [0] = c_15(QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [0] >= [1] z1 + [0] = c_16(QUICKSORT#(z1)) QUICKSORTD#1#(::(z0,z1)) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = c_18(QUICKSORTD#2#(splitD(z0,z1),z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] = c_20(QUICKSORTD#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z1 + [7] = c_21(QUICKSORTD#(z1)) TESTQUICKSORT#(z0) = [2] z0 + [7] >= [6] = c_44(QUICKSORT#(testList(#unit()))) TESTQUICKSORT2#(z0) = [7] >= [7] = c_45(QUICKSORT#(testList(#unit()))) #abs(#0()) = [0] >= [0] = #0() #abs(#pos(z0)) = [0] >= [0] = #pos(z0) #ckgt(#EQ()) = [0] >= [0] = #false() #ckgt(#GT()) = [0] >= [0] = #true() #ckgt(#LT()) = [0] >= [0] = #false() #compare(#0(),#0()) = [0] >= [0] = #EQ() #compare(#0(),#neg(z0)) = [0] >= [0] = #GT() #compare(#0(),#pos(z0)) = [0] >= [0] = #LT() #compare(#0(),#s(z0)) = [0] >= [0] = #LT() #compare(#neg(z0),#0()) = [0] >= [0] = #LT() #compare(#neg(z0),#neg(z1)) = [0] >= [0] = #compare(z1,z0) #compare(#neg(z0),#pos(z1)) = [0] >= [0] = #LT() #compare(#pos(z0),#0()) = [0] >= [0] = #GT() #compare(#pos(z0),#neg(z1)) = [0] >= [0] = #GT() #compare(#pos(z0),#pos(z1)) = [0] >= [0] = #compare(z0,z1) #compare(#s(z0),#0()) = [0] >= [0] = #GT() #compare(#s(z0),#s(z1)) = [0] >= [0] = #compare(z0,z1) #greater(z0,z1) = [0] >= [0] = #ckgt(#compare(z0,z1)) split(z0,z1) = [1] z1 + [0] >= [1] z1 + [0] = split#1(z1,z0) split#1(::(z0,z1),z2) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = split#2(split(z2,z1),z2,z0) split#1(nil(),z0) = [0] >= [0] = tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) = [1] z0 + [1] z1 + [1] z3 + [0] >= [1] z0 + [1] z1 + [1] z3 + [0] = split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = tuple#2(z0,::(z2,z1)) splitD(z0,z1) = [1] z1 + [0] >= [1] z1 + [0] = splitD#1(z1,z0) splitD#1(::(z0,z1),z2) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) = [0] >= [0] = tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) = [1] z0 + [1] z1 + [1] z3 + [0] >= [1] z0 + [1] z1 + [1] z3 + [0] = splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = tuple#2(z0,::(z2,z1)) testList(z0) = [1] z0 + [5] >= [0] = ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))),::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) Further, it can be verified that all rules not oriented are covered by the weightgap condition. ** Step 8.a:9: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(QUICKSORTD#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(QUICKSORTD#(z1)) - Weak DPs: QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(QUICKSORT#(z1)) QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)) QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0)) TESTQUICKSORT#(z0) -> c_44(QUICKSORT#(testList(#unit()))) TESTQUICKSORT2#(z0) -> c_45(QUICKSORT#(testList(#unit()))) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(z0)) -> #pos(z0) #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(z0)) -> #GT() #compare(#0(),#pos(z0)) -> #LT() #compare(#0(),#s(z0)) -> #LT() #compare(#neg(z0),#0()) -> #LT() #compare(#neg(z0),#neg(z1)) -> #compare(z1,z0) #compare(#neg(z0),#pos(z1)) -> #LT() #compare(#pos(z0),#0()) -> #GT() #compare(#pos(z0),#neg(z1)) -> #GT() #compare(#pos(z0),#pos(z1)) -> #compare(z0,z1) #compare(#s(z0),#0()) -> #GT() #compare(#s(z0),#s(z1)) -> #compare(z0,z1) #greater(z0,z1) -> #ckgt(#compare(z0,z1)) split(z0,z1) -> split#1(z1,z0) split#1(::(z0,z1),z2) -> split#2(split(z2,z1),z2,z0) split#1(nil(),z0) -> tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) -> split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) splitD(z0,z1) -> splitD#1(z1,z0) splitD#1(::(z0,z1),z2) -> splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) -> tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) -> splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) testList(z0) -> ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) - Signature: {#ABS/1,#CKGT/1,#COMPARE/2,#GREATER/2,#abs/1,#ckgt/1,#compare/2,#greater/2,APPEND/2,APPEND#1/2,APPENDD/2 ,APPENDD#1/2,QUICKSORT/1,QUICKSORT#1/1,QUICKSORT#2/2,QUICKSORTD/1,QUICKSORTD#1/1,QUICKSORTD#2/2,SPLIT/2 ,SPLIT#1/2,SPLIT#2/3,SPLIT#3/4,SPLITD/2,SPLITD#1/2,SPLITD#2/3,SPLITD#3/4,TESTLIST/1,TESTQUICKSORT/1 ,TESTQUICKSORT2/1,append/2,append#1/2,appendD/2,appendD#1/2,quicksort/1,quicksort#1/1,quicksort#2/2 ,quicksortD/1,quicksortD#1/1,quicksortD#2/2,split/2,split#1/2,split#2/3,split#3/4,splitD/2,splitD#1/2 ,splitD#2/3,splitD#3/4,testList/1,testQuicksort/1,testQuicksort2/1,#ABS#/1,#CKGT#/1,#COMPARE#/2,#GREATER#/2 ,#abs#/1,#ckgt#/1,#compare#/2,#greater#/2,APPEND#/2,APPEND#1#/2,APPENDD#/2,APPENDD#1#/2,QUICKSORT#/1 ,QUICKSORT#1#/1,QUICKSORT#2#/2,QUICKSORTD#/1,QUICKSORTD#1#/1,QUICKSORTD#2#/2,SPLIT#/2,SPLIT#1#/2,SPLIT#2#/3 ,SPLIT#3#/4,SPLITD#/2,SPLITD#1#/2,SPLITD#2#/3,SPLITD#3#/4,TESTLIST#/1,TESTQUICKSORT#/1,TESTQUICKSORT2#/1 ,append#/2,append#1#/2,appendD#/2,appendD#1#/2,quicksort#/1,quicksort#1#/1,quicksort#2#/2,quicksortD#/1 ,quicksortD#1#/1,quicksortD#2#/2,split#/2,split#1#/2,split#2#/3,split#3#/4,splitD#/2,splitD#1#/2,splitD#2#/3 ,splitD#3#/4,testList#/1,testQuicksort#/1,testQuicksort2#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,#unit/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/0,c16/0,c17/0,c18/0,c19/2,c2/0 ,c20/1,c21/1,c22/0,c23/1,c24/1,c25/0,c26/1,c27/2,c28/0,c29/2,c3/0,c30/2,c31/1,c32/2,c33/0,c34/2,c35/2,c36/1 ,c37/2,c38/0,c39/2,c4/0,c40/0,c41/0,c42/1,c43/2,c44/0,c45/2,c46/0,c47/0,c48/1,c49/1,c5/0,c50/1,c51/1,c52/1 ,c53/1,c54/1,c55/1,c56/1,c57/1,c58/2,c59/2,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/3 ,c_6/1,c_7/1,c_8/0,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/0,c_15/1,c_16/1,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1 ,c_22/1,c_23/1,c_24/0,c_25/3,c_26/0,c_27/0,c_28/1,c_29/1,c_30/0,c_31/3,c_32/0,c_33/0,c_34/1,c_35/1,c_36/1 ,c_37/1,c_38/1,c_39/1,c_40/1,c_41/1,c_42/1,c_43/1,c_44/1,c_45/1,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0 ,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0,c_58/1,c_59/0,c_60/1,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0 ,c_67/0,c_68/0,c_69/0,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/0,c_76/0,c_77/1,c_78/0,c_79/1,c_80/2,c_81/1 ,c_82/1,c_83/0,c_84/1,c_85/1,c_86/0,c_87/1,c_88/2,c_89/0,c_90/3,c_91/1,c_92/2,c_93/0,c_94/3,c_95/1,c_96/2 ,c_97/0,c_98/2,c_99/0,c_100/0,c_101/1,c_102/2,c_103/0,c_104/2,c_105/0,c_106/0,c_107/10,c_108/2,c_109/2} - Obligation: innermost runtime complexity wrt. defined symbols {#ABS#,#CKGT#,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare# ,#greater#,APPEND#,APPEND#1#,APPENDD#,APPENDD#1#,QUICKSORT#,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD# ,QUICKSORTD#1#,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2#,SPLIT#3#,SPLITD#,SPLITD#1#,SPLITD#2#,SPLITD#3# ,TESTLIST#,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1#,appendD#,appendD#1#,quicksort#,quicksort#1# ,quicksort#2#,quicksortD#,quicksortD#1#,quicksortD#2#,split#,split#1#,split#2#,split#3#,splitD#,splitD#1# ,splitD#2#,splitD#3#,testList#,testQuicksort#,testQuicksort2#} and constructors {#0,#EQ,#GT,#LT,#false,#neg ,#pos,#s,#true,#unit,::,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,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52 ,c53,c54,c55,c56,c57,c58,c59,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_12) = {1}, uargs(c_13) = {1}, uargs(c_15) = {1}, uargs(c_16) = {1}, uargs(c_17) = {1}, uargs(c_18) = {1}, uargs(c_20) = {1}, uargs(c_21) = {1}, uargs(c_44) = {1}, uargs(c_45) = {1} Following symbols are considered usable: {splitD,splitD#1,splitD#2,splitD#3,#ABS#,#CKGT#,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare#,#greater# ,APPEND#,APPEND#1#,APPENDD#,APPENDD#1#,QUICKSORT#,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD#,QUICKSORTD#1# ,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2#,SPLIT#3#,SPLITD#,SPLITD#1#,SPLITD#2#,SPLITD#3#,TESTLIST# ,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1#,appendD#,appendD#1#,quicksort#,quicksort#1#,quicksort#2# ,quicksortD#,quicksortD#1#,quicksortD#2#,split#,split#1#,split#2#,split#3#,splitD#,splitD#1#,splitD#2# ,splitD#3#,testList#,testQuicksort#,testQuicksort2#} TcT has computed the following interpretation: p(#0) = [2] p(#ABS) = [1] x1 + [1] p(#CKGT) = [1] x1 + [0] p(#COMPARE) = [1] p(#EQ) = [0] p(#GREATER) = [1] p(#GT) = [0] p(#LT) = [0] p(#abs) = [0] p(#ckgt) = [7] x1 + [0] p(#compare) = [2] x1 + [2] x2 + [2] p(#false) = [0] p(#greater) = [2] x1 + [6] p(#neg) = [0] p(#pos) = [0] p(#s) = [0] p(#true) = [0] p(#unit) = [0] p(::) = [1] x1 + [1] x2 + [1] p(APPEND) = [1] x1 + [2] x2 + [2] p(APPEND#1) = [2] x1 + [4] x2 + [0] p(APPENDD) = [1] x2 + [0] p(APPENDD#1) = [1] p(QUICKSORT) = [0] p(QUICKSORT#1) = [1] p(QUICKSORT#2) = [1] x2 + [0] p(QUICKSORTD) = [1] x1 + [4] p(QUICKSORTD#1) = [1] p(QUICKSORTD#2) = [4] x1 + [1] x2 + [4] p(SPLIT) = [2] x2 + [0] p(SPLIT#1) = [4] x1 + [2] p(SPLIT#2) = [4] x2 + [0] p(SPLIT#3) = [4] x1 + [1] x3 + [2] p(SPLITD) = [1] x1 + [1] x2 + [1] p(SPLITD#1) = [4] x2 + [4] p(SPLITD#2) = [1] x1 + [1] p(SPLITD#3) = [1] x1 + [4] x2 + [4] x3 + [1] p(TESTLIST) = [1] x1 + [0] p(TESTQUICKSORT) = [1] x1 + [0] p(TESTQUICKSORT2) = [1] p(append) = [2] x2 + [0] p(append#1) = [1] p(appendD) = [0] p(appendD#1) = [1] x1 + [2] x2 + [0] p(c) = [4] p(c1) = [1] p(c10) = [1] p(c11) = [2] p(c12) = [1] p(c13) = [4] p(c14) = [1] p(c15) = [2] p(c16) = [1] p(c17) = [0] p(c18) = [0] p(c19) = [1] p(c2) = [1] p(c20) = [1] p(c21) = [1] x1 + [2] p(c22) = [4] p(c23) = [2] p(c24) = [1] p(c25) = [1] p(c26) = [1] p(c27) = [1] x1 + [0] p(c28) = [0] p(c29) = [1] x1 + [0] p(c3) = [1] p(c30) = [1] x1 + [0] p(c31) = [0] p(c32) = [2] p(c33) = [0] p(c34) = [0] p(c35) = [1] x1 + [2] p(c36) = [0] p(c37) = [1] p(c38) = [1] p(c39) = [1] p(c4) = [0] p(c40) = [0] p(c41) = [0] p(c42) = [1] p(c43) = [0] p(c44) = [1] p(c45) = [1] x2 + [1] p(c46) = [0] p(c47) = [1] p(c48) = [1] p(c49) = [0] p(c5) = [0] p(c50) = [1] x1 + [0] p(c51) = [0] p(c52) = [1] x1 + [1] p(c53) = [0] p(c54) = [1] x1 + [0] p(c55) = [1] x1 + [1] p(c56) = [4] p(c57) = [0] p(c58) = [0] p(c59) = [1] x2 + [2] p(c6) = [2] p(c7) = [1] p(c8) = [0] p(c9) = [2] p(nil) = [0] p(quicksort) = [2] p(quicksort#1) = [1] p(quicksort#2) = [1] x1 + [1] p(quicksortD) = [2] x1 + [4] p(quicksortD#1) = [0] p(quicksortD#2) = [4] x1 + [1] x2 + [1] p(split) = [0] p(split#1) = [0] p(split#2) = [4] x2 + [0] p(split#3) = [2] x1 + [1] x2 + [2] x4 + [2] p(splitD) = [1] x2 + [0] p(splitD#1) = [1] x1 + [0] p(splitD#2) = [1] x1 + [1] x3 + [1] p(splitD#3) = [1] x2 + [1] x3 + [1] x4 + [1] p(testList) = [2] p(testQuicksort) = [2] x1 + [1] p(testQuicksort2) = [0] p(tuple#2) = [1] x1 + [1] x2 + [0] p(#ABS#) = [1] x1 + [1] p(#CKGT#) = [0] p(#COMPARE#) = [4] x1 + [1] x2 + [4] p(#GREATER#) = [0] p(#abs#) = [2] p(#ckgt#) = [2] p(#compare#) = [1] p(#greater#) = [1] x2 + [0] p(APPEND#) = [4] x1 + [4] p(APPEND#1#) = [1] x2 + [2] p(APPENDD#) = [1] x1 + [0] p(APPENDD#1#) = [2] x2 + [1] p(QUICKSORT#) = [0] p(QUICKSORT#1#) = [0] p(QUICKSORT#2#) = [0] p(QUICKSORTD#) = [4] x1 + [4] p(QUICKSORTD#1#) = [4] x1 + [4] p(QUICKSORTD#2#) = [4] x1 + [4] x2 + [6] p(SPLIT#) = [0] p(SPLIT#1#) = [4] p(SPLIT#2#) = [1] x1 + [1] x2 + [1] x3 + [0] p(SPLIT#3#) = [1] p(SPLITD#) = [1] x1 + [0] p(SPLITD#1#) = [0] p(SPLITD#2#) = [1] x2 + [1] x3 + [0] p(SPLITD#3#) = [1] x2 + [1] x3 + [1] p(TESTLIST#) = [0] p(TESTQUICKSORT#) = [1] x1 + [4] p(TESTQUICKSORT2#) = [4] p(append#) = [4] p(append#1#) = [1] x1 + [2] x2 + [0] p(appendD#) = [4] x2 + [1] p(appendD#1#) = [1] x1 + [1] x2 + [1] p(quicksort#) = [1] x1 + [1] p(quicksort#1#) = [4] x1 + [1] p(quicksort#2#) = [1] x1 + [2] x2 + [2] p(quicksortD#) = [2] x1 + [0] p(quicksortD#1#) = [1] p(quicksortD#2#) = [0] p(split#) = [2] x2 + [1] p(split#1#) = [0] p(split#2#) = [1] p(split#3#) = [2] x1 + [4] x3 + [4] x4 + [0] p(splitD#) = [1] x2 + [4] p(splitD#1#) = [1] x1 + [1] x2 + [4] p(splitD#2#) = [1] p(splitD#3#) = [1] x3 + [1] x4 + [0] p(testList#) = [1] x1 + [0] p(testQuicksort#) = [1] x1 + [1] p(testQuicksort2#) = [2] x1 + [0] p(c_1) = [0] p(c_2) = [0] p(c_3) = [0] p(c_4) = [0] p(c_5) = [1] x1 + [1] x2 + [0] p(c_6) = [1] x1 + [1] p(c_7) = [4] x1 + [0] p(c_8) = [0] p(c_9) = [1] p(c_10) = [2] p(c_11) = [1] p(c_12) = [4] x1 + [0] p(c_13) = [4] x1 + [0] p(c_14) = [1] p(c_15) = [2] x1 + [0] p(c_16) = [1] x1 + [0] p(c_17) = [1] x1 + [0] p(c_18) = [1] x1 + [2] p(c_19) = [1] p(c_20) = [1] x1 + [2] p(c_21) = [1] x1 + [0] p(c_22) = [4] x1 + [0] p(c_23) = [0] p(c_24) = [1] p(c_25) = [1] x1 + [1] p(c_26) = [1] p(c_27) = [2] p(c_28) = [4] p(c_29) = [1] p(c_30) = [1] p(c_31) = [4] x1 + [1] x2 + [2] x3 + [4] p(c_32) = [4] p(c_33) = [1] p(c_34) = [1] p(c_35) = [1] x1 + [2] p(c_36) = [4] p(c_37) = [4] x1 + [0] p(c_38) = [0] p(c_39) = [0] p(c_40) = [2] x1 + [0] p(c_41) = [1] x1 + [0] p(c_42) = [4] p(c_43) = [1] p(c_44) = [1] x1 + [0] p(c_45) = [4] x1 + [3] p(c_46) = [0] p(c_47) = [2] p(c_48) = [2] p(c_49) = [0] p(c_50) = [0] p(c_51) = [1] p(c_52) = [1] p(c_53) = [1] p(c_54) = [1] p(c_55) = [0] p(c_56) = [0] p(c_57) = [0] p(c_58) = [1] x1 + [0] p(c_59) = [1] p(c_60) = [1] x1 + [0] p(c_61) = [2] p(c_62) = [1] p(c_63) = [2] p(c_64) = [0] p(c_65) = [0] p(c_66) = [2] p(c_67) = [1] p(c_68) = [0] p(c_69) = [1] p(c_70) = [1] p(c_71) = [4] p(c_72) = [4] p(c_73) = [0] p(c_74) = [0] p(c_75) = [0] p(c_76) = [4] p(c_77) = [2] p(c_78) = [1] p(c_79) = [4] p(c_80) = [2] p(c_81) = [1] x1 + [1] p(c_82) = [2] x1 + [0] p(c_83) = [0] p(c_84) = [1] x1 + [2] p(c_85) = [1] x1 + [4] p(c_86) = [0] p(c_87) = [4] p(c_88) = [2] x2 + [1] p(c_89) = [1] p(c_90) = [1] x3 + [2] p(c_91) = [1] x1 + [0] p(c_92) = [1] x2 + [2] p(c_93) = [0] p(c_94) = [1] x1 + [4] x2 + [0] p(c_95) = [1] x1 + [0] p(c_96) = [1] x2 + [1] p(c_97) = [0] p(c_98) = [1] x2 + [1] p(c_99) = [0] p(c_100) = [0] p(c_101) = [1] x1 + [0] p(c_102) = [2] p(c_103) = [1] p(c_104) = [2] x1 + [2] p(c_105) = [1] p(c_106) = [1] p(c_107) = [4] x1 + [4] x3 + [4] x4 + [4] x7 + [2] x8 + [1] x10 + [0] p(c_108) = [1] x1 + [1] p(c_109) = [1] x1 + [0] Following rules are strictly oriented: QUICKSORTD#2#(tuple#2(z0,z1),z2) = [4] z0 + [4] z1 + [4] z2 + [6] > [4] z1 + [4] = c_21(QUICKSORTD#(z1)) Following rules are (at-least) weakly oriented: QUICKSORT#(z0) = [0] >= [0] = c_12(QUICKSORT#1#(z0)) QUICKSORT#1#(::(z0,z1)) = [0] >= [0] = c_13(QUICKSORT#2#(split(z0,z1),z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) = [0] >= [0] = c_15(QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) = [0] >= [0] = c_16(QUICKSORT#(z1)) QUICKSORTD#(z0) = [4] z0 + [4] >= [4] z0 + [4] = c_17(QUICKSORTD#1#(z0)) QUICKSORTD#1#(::(z0,z1)) = [4] z0 + [4] z1 + [8] >= [4] z0 + [4] z1 + [8] = c_18(QUICKSORTD#2#(splitD(z0,z1),z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) = [4] z0 + [4] z1 + [4] z2 + [6] >= [4] z0 + [6] = c_20(QUICKSORTD#(z0)) TESTQUICKSORT#(z0) = [1] z0 + [4] >= [0] = c_44(QUICKSORT#(testList(#unit()))) TESTQUICKSORT2#(z0) = [4] >= [3] = c_45(QUICKSORT#(testList(#unit()))) splitD(z0,z1) = [1] z1 + [0] >= [1] z1 + [0] = splitD#1(z1,z0) splitD#1(::(z0,z1),z2) = [1] z0 + [1] z1 + [1] >= [1] z0 + [1] z1 + [1] = splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) = [0] >= [0] = tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) = [1] z0 + [1] z1 + [1] z3 + [1] >= [1] z0 + [1] z1 + [1] z3 + [1] = splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) = [1] z0 + [1] z1 + [1] z2 + [1] >= [1] z0 + [1] z1 + [1] z2 + [1] = tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) = [1] z0 + [1] z1 + [1] z2 + [1] >= [1] z0 + [1] z1 + [1] z2 + [1] = tuple#2(z0,::(z2,z1)) ** Step 8.a:10: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(QUICKSORTD#(z0)) - Weak DPs: QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(QUICKSORT#(z1)) QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)) QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(QUICKSORTD#(z1)) TESTQUICKSORT#(z0) -> c_44(QUICKSORT#(testList(#unit()))) TESTQUICKSORT2#(z0) -> c_45(QUICKSORT#(testList(#unit()))) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(z0)) -> #pos(z0) #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(z0)) -> #GT() #compare(#0(),#pos(z0)) -> #LT() #compare(#0(),#s(z0)) -> #LT() #compare(#neg(z0),#0()) -> #LT() #compare(#neg(z0),#neg(z1)) -> #compare(z1,z0) #compare(#neg(z0),#pos(z1)) -> #LT() #compare(#pos(z0),#0()) -> #GT() #compare(#pos(z0),#neg(z1)) -> #GT() #compare(#pos(z0),#pos(z1)) -> #compare(z0,z1) #compare(#s(z0),#0()) -> #GT() #compare(#s(z0),#s(z1)) -> #compare(z0,z1) #greater(z0,z1) -> #ckgt(#compare(z0,z1)) split(z0,z1) -> split#1(z1,z0) split#1(::(z0,z1),z2) -> split#2(split(z2,z1),z2,z0) split#1(nil(),z0) -> tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) -> split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) splitD(z0,z1) -> splitD#1(z1,z0) splitD#1(::(z0,z1),z2) -> splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) -> tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) -> splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) testList(z0) -> ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) - Signature: {#ABS/1,#CKGT/1,#COMPARE/2,#GREATER/2,#abs/1,#ckgt/1,#compare/2,#greater/2,APPEND/2,APPEND#1/2,APPENDD/2 ,APPENDD#1/2,QUICKSORT/1,QUICKSORT#1/1,QUICKSORT#2/2,QUICKSORTD/1,QUICKSORTD#1/1,QUICKSORTD#2/2,SPLIT/2 ,SPLIT#1/2,SPLIT#2/3,SPLIT#3/4,SPLITD/2,SPLITD#1/2,SPLITD#2/3,SPLITD#3/4,TESTLIST/1,TESTQUICKSORT/1 ,TESTQUICKSORT2/1,append/2,append#1/2,appendD/2,appendD#1/2,quicksort/1,quicksort#1/1,quicksort#2/2 ,quicksortD/1,quicksortD#1/1,quicksortD#2/2,split/2,split#1/2,split#2/3,split#3/4,splitD/2,splitD#1/2 ,splitD#2/3,splitD#3/4,testList/1,testQuicksort/1,testQuicksort2/1,#ABS#/1,#CKGT#/1,#COMPARE#/2,#GREATER#/2 ,#abs#/1,#ckgt#/1,#compare#/2,#greater#/2,APPEND#/2,APPEND#1#/2,APPENDD#/2,APPENDD#1#/2,QUICKSORT#/1 ,QUICKSORT#1#/1,QUICKSORT#2#/2,QUICKSORTD#/1,QUICKSORTD#1#/1,QUICKSORTD#2#/2,SPLIT#/2,SPLIT#1#/2,SPLIT#2#/3 ,SPLIT#3#/4,SPLITD#/2,SPLITD#1#/2,SPLITD#2#/3,SPLITD#3#/4,TESTLIST#/1,TESTQUICKSORT#/1,TESTQUICKSORT2#/1 ,append#/2,append#1#/2,appendD#/2,appendD#1#/2,quicksort#/1,quicksort#1#/1,quicksort#2#/2,quicksortD#/1 ,quicksortD#1#/1,quicksortD#2#/2,split#/2,split#1#/2,split#2#/3,split#3#/4,splitD#/2,splitD#1#/2,splitD#2#/3 ,splitD#3#/4,testList#/1,testQuicksort#/1,testQuicksort2#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,#unit/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/0,c16/0,c17/0,c18/0,c19/2,c2/0 ,c20/1,c21/1,c22/0,c23/1,c24/1,c25/0,c26/1,c27/2,c28/0,c29/2,c3/0,c30/2,c31/1,c32/2,c33/0,c34/2,c35/2,c36/1 ,c37/2,c38/0,c39/2,c4/0,c40/0,c41/0,c42/1,c43/2,c44/0,c45/2,c46/0,c47/0,c48/1,c49/1,c5/0,c50/1,c51/1,c52/1 ,c53/1,c54/1,c55/1,c56/1,c57/1,c58/2,c59/2,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/3 ,c_6/1,c_7/1,c_8/0,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/0,c_15/1,c_16/1,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1 ,c_22/1,c_23/1,c_24/0,c_25/3,c_26/0,c_27/0,c_28/1,c_29/1,c_30/0,c_31/3,c_32/0,c_33/0,c_34/1,c_35/1,c_36/1 ,c_37/1,c_38/1,c_39/1,c_40/1,c_41/1,c_42/1,c_43/1,c_44/1,c_45/1,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0 ,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0,c_58/1,c_59/0,c_60/1,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0 ,c_67/0,c_68/0,c_69/0,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/0,c_76/0,c_77/1,c_78/0,c_79/1,c_80/2,c_81/1 ,c_82/1,c_83/0,c_84/1,c_85/1,c_86/0,c_87/1,c_88/2,c_89/0,c_90/3,c_91/1,c_92/2,c_93/0,c_94/3,c_95/1,c_96/2 ,c_97/0,c_98/2,c_99/0,c_100/0,c_101/1,c_102/2,c_103/0,c_104/2,c_105/0,c_106/0,c_107/10,c_108/2,c_109/2} - Obligation: innermost runtime complexity wrt. defined symbols {#ABS#,#CKGT#,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare# ,#greater#,APPEND#,APPEND#1#,APPENDD#,APPENDD#1#,QUICKSORT#,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD# ,QUICKSORTD#1#,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2#,SPLIT#3#,SPLITD#,SPLITD#1#,SPLITD#2#,SPLITD#3# ,TESTLIST#,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1#,appendD#,appendD#1#,quicksort#,quicksort#1# ,quicksort#2#,quicksortD#,quicksortD#1#,quicksortD#2#,split#,split#1#,split#2#,split#3#,splitD#,splitD#1# ,splitD#2#,splitD#3#,testList#,testQuicksort#,testQuicksort2#} and constructors {#0,#EQ,#GT,#LT,#false,#neg ,#pos,#s,#true,#unit,::,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,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52 ,c53,c54,c55,c56,c57,c58,c59,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_12) = {1}, uargs(c_13) = {1}, uargs(c_15) = {1}, uargs(c_16) = {1}, uargs(c_17) = {1}, uargs(c_18) = {1}, uargs(c_20) = {1}, uargs(c_21) = {1}, uargs(c_44) = {1}, uargs(c_45) = {1} Following symbols are considered usable: {splitD,splitD#1,splitD#2,splitD#3,#ABS#,#CKGT#,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare#,#greater# ,APPEND#,APPEND#1#,APPENDD#,APPENDD#1#,QUICKSORT#,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD#,QUICKSORTD#1# ,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2#,SPLIT#3#,SPLITD#,SPLITD#1#,SPLITD#2#,SPLITD#3#,TESTLIST# ,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1#,appendD#,appendD#1#,quicksort#,quicksort#1#,quicksort#2# ,quicksortD#,quicksortD#1#,quicksortD#2#,split#,split#1#,split#2#,split#3#,splitD#,splitD#1#,splitD#2# ,splitD#3#,testList#,testQuicksort#,testQuicksort2#} TcT has computed the following interpretation: p(#0) = [1] p(#ABS) = [2] x1 + [0] p(#CKGT) = [1] x1 + [4] p(#COMPARE) = [0] p(#EQ) = [3] p(#GREATER) = [1] x1 + [0] p(#GT) = [0] p(#LT) = [0] p(#abs) = [1] x1 + [0] p(#ckgt) = [2] x1 + [3] p(#compare) = [7] x1 + [1] p(#false) = [0] p(#greater) = [3] x1 + [3] x2 + [2] p(#neg) = [0] p(#pos) = [1] x1 + [2] p(#s) = [1] x1 + [1] p(#true) = [2] p(#unit) = [1] p(::) = [1] x2 + [1] p(APPEND) = [1] x2 + [1] p(APPEND#1) = [4] x2 + [0] p(APPENDD) = [1] x1 + [1] x2 + [4] p(APPENDD#1) = [1] x2 + [1] p(QUICKSORT) = [1] x1 + [1] p(QUICKSORT#1) = [1] x1 + [4] p(QUICKSORT#2) = [1] x1 + [2] x2 + [1] p(QUICKSORTD) = [0] p(QUICKSORTD#1) = [1] p(QUICKSORTD#2) = [1] p(SPLIT) = [0] p(SPLIT#1) = [1] p(SPLIT#2) = [4] x1 + [1] x2 + [1] x3 + [1] p(SPLIT#3) = [4] x1 + [2] x2 + [1] x3 + [1] x4 + [2] p(SPLITD) = [4] x1 + [4] x2 + [0] p(SPLITD#1) = [1] x1 + [1] p(SPLITD#2) = [1] x2 + [4] p(SPLITD#3) = [1] x1 + [1] p(TESTLIST) = [1] p(TESTQUICKSORT) = [2] x1 + [1] p(TESTQUICKSORT2) = [2] x1 + [2] p(append) = [1] x1 + [1] p(append#1) = [1] x1 + [0] p(appendD) = [4] x2 + [1] p(appendD#1) = [2] p(c) = [4] p(c1) = [0] p(c10) = [1] p(c11) = [0] p(c12) = [0] p(c13) = [0] p(c14) = [1] p(c15) = [1] p(c16) = [4] p(c17) = [4] p(c18) = [0] p(c19) = [1] p(c2) = [1] p(c20) = [1] p(c21) = [0] p(c22) = [0] p(c23) = [1] p(c24) = [1] x1 + [1] p(c25) = [1] p(c26) = [1] x1 + [1] p(c27) = [1] x1 + [1] x2 + [1] p(c28) = [1] p(c29) = [1] x1 + [2] p(c3) = [1] p(c30) = [0] p(c31) = [1] x1 + [0] p(c32) = [2] p(c33) = [0] p(c34) = [1] x1 + [4] p(c35) = [1] x1 + [1] x2 + [1] p(c36) = [1] x1 + [1] p(c37) = [1] x2 + [0] p(c38) = [0] p(c39) = [1] x2 + [1] p(c4) = [0] p(c40) = [2] p(c41) = [1] p(c42) = [1] x1 + [0] p(c43) = [1] x2 + [0] p(c44) = [0] p(c45) = [1] x2 + [1] p(c46) = [1] p(c47) = [1] p(c48) = [1] x1 + [4] p(c49) = [2] p(c5) = [4] p(c50) = [1] p(c51) = [1] x1 + [1] p(c52) = [1] x1 + [2] p(c53) = [1] x1 + [2] p(c54) = [1] x1 + [4] p(c55) = [2] p(c56) = [4] p(c57) = [4] p(c58) = [1] p(c59) = [1] p(c6) = [4] p(c7) = [1] p(c8) = [1] p(c9) = [1] p(nil) = [0] p(quicksort) = [0] p(quicksort#1) = [1] p(quicksort#2) = [0] p(quicksortD) = [2] x1 + [0] p(quicksortD#1) = [1] x1 + [4] p(quicksortD#2) = [0] p(split) = [3] p(split#1) = [0] p(split#2) = [3] x1 + [0] p(split#3) = [4] x1 + [7] p(splitD) = [1] x2 + [0] p(splitD#1) = [1] x1 + [0] p(splitD#2) = [1] x1 + [1] p(splitD#3) = [1] x2 + [1] x3 + [1] p(testList) = [3] x1 + [0] p(testQuicksort) = [1] x1 + [1] p(testQuicksort2) = [2] x1 + [1] p(tuple#2) = [1] x1 + [1] x2 + [0] p(#ABS#) = [2] x1 + [0] p(#CKGT#) = [0] p(#COMPARE#) = [2] x2 + [1] p(#GREATER#) = [2] x1 + [1] x2 + [1] p(#abs#) = [0] p(#ckgt#) = [1] x1 + [1] p(#compare#) = [1] p(#greater#) = [1] x1 + [0] p(APPEND#) = [2] x1 + [0] p(APPEND#1#) = [0] p(APPENDD#) = [2] x1 + [0] p(APPENDD#1#) = [1] p(QUICKSORT#) = [2] p(QUICKSORT#1#) = [2] p(QUICKSORT#2#) = [2] p(QUICKSORTD#) = [6] x1 + [0] p(QUICKSORTD#1#) = [6] x1 + [0] p(QUICKSORTD#2#) = [6] x1 + [1] p(SPLIT#) = [1] x1 + [2] x2 + [2] p(SPLIT#1#) = [1] x1 + [1] p(SPLIT#2#) = [1] x2 + [4] p(SPLIT#3#) = [1] x1 + [0] p(SPLITD#) = [2] x1 + [1] p(SPLITD#1#) = [0] p(SPLITD#2#) = [4] x1 + [0] p(SPLITD#3#) = [4] x2 + [1] x3 + [0] p(TESTLIST#) = [1] x1 + [0] p(TESTQUICKSORT#) = [7] p(TESTQUICKSORT2#) = [5] p(append#) = [4] x1 + [1] p(append#1#) = [1] p(appendD#) = [1] x1 + [1] x2 + [1] p(appendD#1#) = [4] x1 + [0] p(quicksort#) = [2] p(quicksort#1#) = [1] x1 + [0] p(quicksort#2#) = [1] x1 + [0] p(quicksortD#) = [1] p(quicksortD#1#) = [1] x1 + [0] p(quicksortD#2#) = [1] x1 + [2] p(split#) = [4] x1 + [0] p(split#1#) = [1] x1 + [0] p(split#2#) = [2] x1 + [2] x2 + [4] x3 + [1] p(split#3#) = [1] x3 + [1] x4 + [0] p(splitD#) = [1] x1 + [1] p(splitD#1#) = [1] x2 + [1] p(splitD#2#) = [1] x3 + [0] p(splitD#3#) = [1] x2 + [1] p(testList#) = [1] x1 + [0] p(testQuicksort#) = [2] x1 + [0] p(testQuicksort2#) = [0] p(c_1) = [1] p(c_2) = [0] p(c_3) = [0] p(c_4) = [4] p(c_5) = [1] x1 + [1] x2 + [4] x3 + [2] p(c_6) = [1] x1 + [0] p(c_7) = [1] p(c_8) = [0] p(c_9) = [1] p(c_10) = [1] x1 + [0] p(c_11) = [4] p(c_12) = [1] x1 + [0] p(c_13) = [1] x1 + [0] p(c_14) = [0] p(c_15) = [1] x1 + [0] p(c_16) = [1] x1 + [0] p(c_17) = [1] x1 + [0] p(c_18) = [1] x1 + [0] p(c_19) = [1] p(c_20) = [1] x1 + [0] p(c_21) = [1] x1 + [1] p(c_22) = [4] x1 + [0] p(c_23) = [4] x1 + [0] p(c_24) = [0] p(c_25) = [4] p(c_26) = [4] p(c_27) = [1] p(c_28) = [1] p(c_29) = [1] x1 + [0] p(c_30) = [4] p(c_31) = [1] x2 + [2] x3 + [0] p(c_32) = [2] p(c_33) = [2] p(c_34) = [0] p(c_35) = [1] p(c_36) = [1] p(c_37) = [4] x1 + [0] p(c_38) = [1] x1 + [0] p(c_39) = [1] p(c_40) = [1] x1 + [1] p(c_41) = [0] p(c_42) = [2] p(c_43) = [2] x1 + [2] p(c_44) = [2] x1 + [3] p(c_45) = [2] x1 + [1] p(c_46) = [1] p(c_47) = [4] p(c_48) = [1] p(c_49) = [2] p(c_50) = [2] p(c_51) = [2] p(c_52) = [0] p(c_53) = [1] p(c_54) = [1] p(c_55) = [4] p(c_56) = [1] p(c_57) = [1] p(c_58) = [1] p(c_59) = [0] p(c_60) = [1] x1 + [0] p(c_61) = [1] p(c_62) = [1] p(c_63) = [0] p(c_64) = [0] p(c_65) = [1] p(c_66) = [0] p(c_67) = [4] p(c_68) = [0] p(c_69) = [1] p(c_70) = [0] p(c_71) = [1] p(c_72) = [0] p(c_73) = [4] x1 + [0] p(c_74) = [0] p(c_75) = [2] p(c_76) = [1] p(c_77) = [1] p(c_78) = [0] p(c_79) = [4] x1 + [1] p(c_80) = [1] x2 + [2] p(c_81) = [1] x1 + [0] p(c_82) = [1] p(c_83) = [4] p(c_84) = [1] x1 + [1] p(c_85) = [0] p(c_86) = [1] p(c_87) = [1] p(c_88) = [1] x1 + [1] p(c_89) = [1] p(c_90) = [2] x2 + [1] x3 + [0] p(c_91) = [0] p(c_92) = [1] x2 + [1] p(c_93) = [2] p(c_94) = [2] x3 + [1] p(c_95) = [1] x1 + [0] p(c_96) = [4] x1 + [1] p(c_97) = [0] p(c_98) = [1] x1 + [1] p(c_99) = [4] p(c_100) = [4] p(c_101) = [0] p(c_102) = [2] x1 + [1] x2 + [0] p(c_103) = [2] p(c_104) = [2] x2 + [0] p(c_105) = [0] p(c_106) = [2] p(c_107) = [2] x1 + [2] x5 + [4] x7 + [1] p(c_108) = [1] x1 + [1] x2 + [0] p(c_109) = [2] x1 + [1] x2 + [1] Following rules are strictly oriented: QUICKSORTD#2#(tuple#2(z0,z1),z2) = [6] z0 + [6] z1 + [1] > [6] z0 + [0] = c_20(QUICKSORTD#(z0)) Following rules are (at-least) weakly oriented: QUICKSORT#(z0) = [2] >= [2] = c_12(QUICKSORT#1#(z0)) QUICKSORT#1#(::(z0,z1)) = [2] >= [2] = c_13(QUICKSORT#2#(split(z0,z1),z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) = [2] >= [2] = c_15(QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) = [2] >= [2] = c_16(QUICKSORT#(z1)) QUICKSORTD#(z0) = [6] z0 + [0] >= [6] z0 + [0] = c_17(QUICKSORTD#1#(z0)) QUICKSORTD#1#(::(z0,z1)) = [6] z1 + [6] >= [6] z1 + [1] = c_18(QUICKSORTD#2#(splitD(z0,z1),z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) = [6] z0 + [6] z1 + [1] >= [6] z1 + [1] = c_21(QUICKSORTD#(z1)) TESTQUICKSORT#(z0) = [7] >= [7] = c_44(QUICKSORT#(testList(#unit()))) TESTQUICKSORT2#(z0) = [5] >= [5] = c_45(QUICKSORT#(testList(#unit()))) splitD(z0,z1) = [1] z1 + [0] >= [1] z1 + [0] = splitD#1(z1,z0) splitD#1(::(z0,z1),z2) = [1] z1 + [1] >= [1] z1 + [1] = splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) = [0] >= [0] = tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) = [1] z0 + [1] z1 + [1] >= [1] z0 + [1] z1 + [1] = splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) = [1] z0 + [1] z1 + [1] >= [1] z0 + [1] z1 + [1] = tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) = [1] z0 + [1] z1 + [1] >= [1] z0 + [1] z1 + [1] = tuple#2(z0,::(z2,z1)) ** Step 8.a:11: Ara. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)) - Weak DPs: QUICKSORT#1#(::(z0,z1)) -> c_13(QUICKSORT#2#(split(z0,z1),z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_15(QUICKSORT#(z0)) QUICKSORT#2#(tuple#2(z0,z1),z2) -> c_16(QUICKSORT#(z1)) QUICKSORTD#(z0) -> c_17(QUICKSORTD#1#(z0)) QUICKSORTD#1#(::(z0,z1)) -> c_18(QUICKSORTD#2#(splitD(z0,z1),z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_20(QUICKSORTD#(z0)) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> c_21(QUICKSORTD#(z1)) TESTQUICKSORT#(z0) -> c_44(QUICKSORT#(testList(#unit()))) TESTQUICKSORT2#(z0) -> c_45(QUICKSORT#(testList(#unit()))) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(z0)) -> #pos(z0) #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(z0)) -> #GT() #compare(#0(),#pos(z0)) -> #LT() #compare(#0(),#s(z0)) -> #LT() #compare(#neg(z0),#0()) -> #LT() #compare(#neg(z0),#neg(z1)) -> #compare(z1,z0) #compare(#neg(z0),#pos(z1)) -> #LT() #compare(#pos(z0),#0()) -> #GT() #compare(#pos(z0),#neg(z1)) -> #GT() #compare(#pos(z0),#pos(z1)) -> #compare(z0,z1) #compare(#s(z0),#0()) -> #GT() #compare(#s(z0),#s(z1)) -> #compare(z0,z1) #greater(z0,z1) -> #ckgt(#compare(z0,z1)) split(z0,z1) -> split#1(z1,z0) split#1(::(z0,z1),z2) -> split#2(split(z2,z1),z2,z0) split#1(nil(),z0) -> tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) -> split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) splitD(z0,z1) -> splitD#1(z1,z0) splitD#1(::(z0,z1),z2) -> splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) -> tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) -> splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) testList(z0) -> ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) - Signature: {#ABS/1,#CKGT/1,#COMPARE/2,#GREATER/2,#abs/1,#ckgt/1,#compare/2,#greater/2,APPEND/2,APPEND#1/2,APPENDD/2 ,APPENDD#1/2,QUICKSORT/1,QUICKSORT#1/1,QUICKSORT#2/2,QUICKSORTD/1,QUICKSORTD#1/1,QUICKSORTD#2/2,SPLIT/2 ,SPLIT#1/2,SPLIT#2/3,SPLIT#3/4,SPLITD/2,SPLITD#1/2,SPLITD#2/3,SPLITD#3/4,TESTLIST/1,TESTQUICKSORT/1 ,TESTQUICKSORT2/1,append/2,append#1/2,appendD/2,appendD#1/2,quicksort/1,quicksort#1/1,quicksort#2/2 ,quicksortD/1,quicksortD#1/1,quicksortD#2/2,split/2,split#1/2,split#2/3,split#3/4,splitD/2,splitD#1/2 ,splitD#2/3,splitD#3/4,testList/1,testQuicksort/1,testQuicksort2/1,#ABS#/1,#CKGT#/1,#COMPARE#/2,#GREATER#/2 ,#abs#/1,#ckgt#/1,#compare#/2,#greater#/2,APPEND#/2,APPEND#1#/2,APPENDD#/2,APPENDD#1#/2,QUICKSORT#/1 ,QUICKSORT#1#/1,QUICKSORT#2#/2,QUICKSORTD#/1,QUICKSORTD#1#/1,QUICKSORTD#2#/2,SPLIT#/2,SPLIT#1#/2,SPLIT#2#/3 ,SPLIT#3#/4,SPLITD#/2,SPLITD#1#/2,SPLITD#2#/3,SPLITD#3#/4,TESTLIST#/1,TESTQUICKSORT#/1,TESTQUICKSORT2#/1 ,append#/2,append#1#/2,appendD#/2,appendD#1#/2,quicksort#/1,quicksort#1#/1,quicksort#2#/2,quicksortD#/1 ,quicksortD#1#/1,quicksortD#2#/2,split#/2,split#1#/2,split#2#/3,split#3#/4,splitD#/2,splitD#1#/2,splitD#2#/3 ,splitD#3#/4,testList#/1,testQuicksort#/1,testQuicksort2#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,#unit/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/0,c16/0,c17/0,c18/0,c19/2,c2/0 ,c20/1,c21/1,c22/0,c23/1,c24/1,c25/0,c26/1,c27/2,c28/0,c29/2,c3/0,c30/2,c31/1,c32/2,c33/0,c34/2,c35/2,c36/1 ,c37/2,c38/0,c39/2,c4/0,c40/0,c41/0,c42/1,c43/2,c44/0,c45/2,c46/0,c47/0,c48/1,c49/1,c5/0,c50/1,c51/1,c52/1 ,c53/1,c54/1,c55/1,c56/1,c57/1,c58/2,c59/2,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/3 ,c_6/1,c_7/1,c_8/0,c_9/1,c_10/1,c_11/0,c_12/1,c_13/1,c_14/0,c_15/1,c_16/1,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1 ,c_22/1,c_23/1,c_24/0,c_25/3,c_26/0,c_27/0,c_28/1,c_29/1,c_30/0,c_31/3,c_32/0,c_33/0,c_34/1,c_35/1,c_36/1 ,c_37/1,c_38/1,c_39/1,c_40/1,c_41/1,c_42/1,c_43/1,c_44/1,c_45/1,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0 ,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0,c_58/1,c_59/0,c_60/1,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0 ,c_67/0,c_68/0,c_69/0,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/0,c_76/0,c_77/1,c_78/0,c_79/1,c_80/2,c_81/1 ,c_82/1,c_83/0,c_84/1,c_85/1,c_86/0,c_87/1,c_88/2,c_89/0,c_90/3,c_91/1,c_92/2,c_93/0,c_94/3,c_95/1,c_96/2 ,c_97/0,c_98/2,c_99/0,c_100/0,c_101/1,c_102/2,c_103/0,c_104/2,c_105/0,c_106/0,c_107/10,c_108/2,c_109/2} - Obligation: innermost runtime complexity wrt. defined symbols {#ABS#,#CKGT#,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare# ,#greater#,APPEND#,APPEND#1#,APPENDD#,APPENDD#1#,QUICKSORT#,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD# ,QUICKSORTD#1#,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2#,SPLIT#3#,SPLITD#,SPLITD#1#,SPLITD#2#,SPLITD#3# ,TESTLIST#,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1#,appendD#,appendD#1#,quicksort#,quicksort#1# ,quicksort#2#,quicksortD#,quicksortD#1#,quicksortD#2#,split#,split#1#,split#2#,split#3#,splitD#,splitD#1# ,splitD#2#,splitD#3#,testList#,testQuicksort#,testQuicksort2#} and constructors {#0,#EQ,#GT,#LT,#false,#neg ,#pos,#s,#true,#unit,::,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,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52 ,c53,c54,c55,c56,c57,c58,c59,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: Ara {minDegree = 1, maxDegree = 2, araTimeout = 8, araRuleShifting = Just 1, isBestCase = False, mkCompletelyDefined = False, verboseOutput = False} + Details: Signatures used: ---------------- F (TrsFun "#0") :: [] -(0)-> "A"(8) F (TrsFun "#0") :: [] -(0)-> "A"(0) F (TrsFun "#0") :: [] -(0)-> "A"(14) F (TrsFun "#EQ") :: [] -(0)-> "A"(1) F (TrsFun "#EQ") :: [] -(0)-> "A"(14) F (TrsFun "#GT") :: [] -(0)-> "A"(1) F (TrsFun "#GT") :: [] -(0)-> "A"(14) F (TrsFun "#LT") :: [] -(0)-> "A"(1) F (TrsFun "#LT") :: [] -(0)-> "A"(14) F (TrsFun "#abs") :: ["A"(8)] -(0)-> "A"(13) F (TrsFun "#ckgt") :: ["A"(1)] -(0)-> "A"(3) F (TrsFun "#compare") :: ["A"(0) x "A"(0)] -(0)-> "A"(3) F (TrsFun "#false") :: [] -(0)-> "A"(0) F (TrsFun "#false") :: [] -(0)-> "A"(14) F (TrsFun "#greater") :: ["A"(0) x "A"(0)] -(0)-> "A"(1) F (TrsFun "#neg") :: ["A"(0)] -(0)-> "A"(0) F (TrsFun "#pos") :: ["A"(0)] -(0)-> "A"(8) F (TrsFun "#pos") :: ["A"(0)] -(0)-> "A"(0) F (TrsFun "#pos") :: ["A"(0)] -(0)-> "A"(13) F (TrsFun "#pos") :: ["A"(0)] -(0)-> "A"(9) F (TrsFun "#pos") :: ["A"(0)] -(0)-> "A"(15) F (TrsFun "#s") :: ["A"(0)] -(0)-> "A"(0) F (TrsFun "#s") :: ["A"(0)] -(0)-> "A"(14) F (TrsFun "#s") :: ["A"(0)] -(0)-> "A"(15) F (TrsFun "#s") :: ["A"(0)] -(0)-> "A"(7) F (TrsFun "#s") :: ["A"(0)] -(0)-> "A"(13) F (TrsFun "#s") :: ["A"(0)] -(0)-> "A"(6) F (TrsFun "#s") :: ["A"(0)] -(0)-> "A"(11) F (TrsFun "#true") :: [] -(0)-> "A"(0) F (TrsFun "#true") :: [] -(0)-> "A"(14) F (TrsFun "#unit") :: [] -(0)-> "A"(14) F (TrsFun "#unit") :: [] -(0)-> "A"(12) F (TrsFun "::") :: ["A"(0) x "A"(1)] -(1)-> "A"(1) F (TrsFun "::") :: ["A"(0) x "A"(0)] -(0)-> "A"(0) F (TrsFun "nil") :: [] -(0)-> "A"(1) F (TrsFun "nil") :: [] -(0)-> "A"(0) F (TrsFun "nil") :: [] -(0)-> "A"(15) F (TrsFun "nil") :: [] -(0)-> "A"(14) F (TrsFun "split") :: ["A"(0) x "A"(1)] -(0)-> "A"(1) F (TrsFun "split#1") :: ["A"(1) x "A"(0)] -(0)-> "A"(1) F (TrsFun "split#2") :: ["A"(1) x "A"(0) x "A"(0)] -(1)-> "A"(1) F (TrsFun "split#3") :: ["A"(0) x "A"(1) x "A"(1) x "A"(0)] -(1)-> "A"(1) F (TrsFun "splitD") :: ["A"(0) x "A"(0)] -(0)-> "A"(0) F (TrsFun "splitD#1") :: ["A"(0) x "A"(0)] -(0)-> "A"(0) F (TrsFun "splitD#2") :: ["A"(0) x "A"(0) x "A"(0)] -(0)-> "A"(0) F (TrsFun "splitD#3") :: ["A"(0) x "A"(0) x "A"(0) x "A"(0)] -(0)-> "A"(0) F (TrsFun "testList") :: ["A"(2)] -(14)-> "A"(1) F (TrsFun "tuple#2") :: ["A"(1) x "A"(1)] -(0)-> "A"(1) F (TrsFun "tuple#2") :: ["A"(0) x "A"(0)] -(0)-> "A"(0) F (TrsFun "tuple#2") :: ["A"(9) x "A"(9)] -(0)-> "A"(9) F (TrsFun "tuple#2") :: ["A"(5) x "A"(5)] -(0)-> "A"(5) F (DpFun "QUICKSORT") :: ["A"(1)] -(1)-> "A"(4) F (DpFun "QUICKSORT#1") :: ["A"(1)] -(0)-> "A"(12) F (DpFun "QUICKSORT#2") :: ["A"(1) x "A"(0)] -(1)-> "A"(13) F (DpFun "QUICKSORTD") :: ["A"(0)] -(4)-> "A"(2) F (DpFun "QUICKSORTD#1") :: ["A"(0)] -(4)-> "A"(12) F (DpFun "QUICKSORTD#2") :: ["A"(0) x "A"(0)] -(4)-> "A"(14) F (DpFun "TESTQUICKSORT") :: ["A"(0)] -(15)-> "A"(3) F (DpFun "TESTQUICKSORT2") :: ["A"(0)] -(15)-> "A"(5) F (ComFun 12) :: ["A"(0)] -(0)-> "A"(14) F (ComFun 13) :: ["A"(0)] -(0)-> "A"(13) F (ComFun 15) :: ["A"(0)] -(0)-> "A"(15) F (ComFun 16) :: ["A"(0)] -(0)-> "A"(15) F (ComFun 17) :: ["A"(3)] -(0)-> "A"(3) F (ComFun 18) :: ["A"(0)] -(0)-> "A"(14) F (ComFun 20) :: ["A"(0)] -(0)-> "A"(15) F (ComFun 21) :: ["A"(0)] -(0)-> "A"(14) F (ComFun 44) :: ["A"(0)] -(0)-> "A"(7) F (ComFun 45) :: ["A"(0)] -(0)-> "A"(15) Cost-free Signatures used: -------------------------- Base Constructor Signatures used: --------------------------------- "F (ComFun 12)_A" :: ["A"(0)] -(0)-> "A"(1) "F (ComFun 13)_A" :: ["A"(0)] -(0)-> "A"(1) "F (ComFun 15)_A" :: ["A"(0)] -(0)-> "A"(1) "F (ComFun 16)_A" :: ["A"(0)] -(0)-> "A"(1) "F (ComFun 17)_A" :: ["A"(1)] -(0)-> "A"(1) "F (ComFun 18)_A" :: ["A"(0)] -(0)-> "A"(1) "F (ComFun 20)_A" :: ["A"(0)] -(0)-> "A"(1) "F (ComFun 21)_A" :: ["A"(0)] -(0)-> "A"(1) "F (ComFun 44)_A" :: ["A"(0)] -(0)-> "A"(1) "F (ComFun 45)_A" :: ["A"(0)] -(0)-> "A"(1) "F (TrsFun \"#0\")_A" :: [] -(0)-> "A"(1) "F (TrsFun \"#EQ\")_A" :: [] -(0)-> "A"(1) "F (TrsFun \"#GT\")_A" :: [] -(0)-> "A"(1) "F (TrsFun \"#LT\")_A" :: [] -(0)-> "A"(1) "F (TrsFun \"#false\")_A" :: [] -(0)-> "A"(1) "F (TrsFun \"#neg\")_A" :: ["A"(1)] -(1)-> "A"(1) "F (TrsFun \"#pos\")_A" :: ["A"(0)] -(0)-> "A"(1) "F (TrsFun \"#s\")_A" :: ["A"(0)] -(0)-> "A"(1) "F (TrsFun \"#true\")_A" :: [] -(0)-> "A"(1) "F (TrsFun \"#unit\")_A" :: [] -(0)-> "A"(1) "F (TrsFun \"::\")_A" :: ["A"(0) x "A"(1)] -(1)-> "A"(1) "F (TrsFun \"nil\")_A" :: [] -(0)-> "A"(1) "F (TrsFun \"tuple#2\")_A" :: ["A"(1) x "A"(1)] -(0)-> "A"(1) Following Still Strict Rules were Typed as: ------------------------------------------- 1. Strict: QUICKSORT#(z0) -> c_12(QUICKSORT#1#(z0)) 2. Weak: ** Step 8.b:1: WeightGap. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: APPEND#(z0,z1) -> c_6(APPEND#1#(z0,z1)) APPEND#1#(::(z0,z1),z2) -> c_7(APPEND#(z1,z2)) APPENDD#(z0,z1) -> c_9(APPENDD#1#(z0,z1)) APPENDD#1#(::(z0,z1),z2) -> c_10(APPENDD#(z1,z2)) SPLIT#(z0,z1) -> c_22(SPLIT#1#(z1,z0)) SPLIT#1#(::(z0,z1),z2) -> c_23(SPLIT#(z2,z1)) SPLITD#(z0,z1) -> c_28(SPLITD#1#(z1,z0)) SPLITD#1#(::(z0,z1),z2) -> c_29(SPLITD#(z2,z1)) - Weak DPs: QUICKSORT#(z0) -> QUICKSORT#1#(z0) QUICKSORT#1#(::(z0,z1)) -> QUICKSORT#2#(split(z0,z1),z0) QUICKSORT#1#(::(z0,z1)) -> SPLIT#(z0,z1) QUICKSORT#2#(tuple#2(z0,z1),z2) -> APPEND#(quicksort(z0),::(z2,quicksort(z1))) QUICKSORT#2#(tuple#2(z0,z1),z2) -> QUICKSORT#(z0) QUICKSORT#2#(tuple#2(z0,z1),z2) -> QUICKSORT#(z1) QUICKSORTD#(z0) -> QUICKSORTD#1#(z0) QUICKSORTD#1#(::(z0,z1)) -> QUICKSORTD#2#(splitD(z0,z1),z0) QUICKSORTD#1#(::(z0,z1)) -> SPLITD#(z0,z1) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> QUICKSORTD#(z0) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> QUICKSORTD#(z1) TESTQUICKSORT#(z0) -> QUICKSORT#(testList(#unit())) TESTQUICKSORT2#(z0) -> QUICKSORT#(testList(#unit())) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(z0)) -> #pos(z0) #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(z0)) -> #GT() #compare(#0(),#pos(z0)) -> #LT() #compare(#0(),#s(z0)) -> #LT() #compare(#neg(z0),#0()) -> #LT() #compare(#neg(z0),#neg(z1)) -> #compare(z1,z0) #compare(#neg(z0),#pos(z1)) -> #LT() #compare(#pos(z0),#0()) -> #GT() #compare(#pos(z0),#neg(z1)) -> #GT() #compare(#pos(z0),#pos(z1)) -> #compare(z0,z1) #compare(#s(z0),#0()) -> #GT() #compare(#s(z0),#s(z1)) -> #compare(z0,z1) #greater(z0,z1) -> #ckgt(#compare(z0,z1)) append(z0,z1) -> append#1(z0,z1) append#1(::(z0,z1),z2) -> ::(z0,append(z1,z2)) append#1(nil(),z0) -> z0 appendD(z0,z1) -> appendD#1(z0,z1) appendD#1(::(z0,z1),z2) -> ::(z0,appendD(z1,z2)) appendD#1(nil(),z0) -> z0 quicksort(z0) -> quicksort#1(z0) quicksort#1(::(z0,z1)) -> quicksort#2(split(z0,z1),z0) quicksort#1(nil()) -> nil() quicksort#2(tuple#2(z0,z1),z2) -> append(quicksort(z0),::(z2,quicksort(z1))) quicksortD(z0) -> quicksortD#1(z0) quicksortD#1(::(z0,z1)) -> quicksortD#2(splitD(z0,z1),z0) quicksortD#1(nil()) -> nil() quicksortD#2(tuple#2(z0,z1),z2) -> appendD(quicksortD(z0),::(z2,quicksortD(z1))) split(z0,z1) -> split#1(z1,z0) split#1(::(z0,z1),z2) -> split#2(split(z2,z1),z2,z0) split#1(nil(),z0) -> tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) -> split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) splitD(z0,z1) -> splitD#1(z1,z0) splitD#1(::(z0,z1),z2) -> splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) -> tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) -> splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) testList(z0) -> ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) - Signature: {#ABS/1,#CKGT/1,#COMPARE/2,#GREATER/2,#abs/1,#ckgt/1,#compare/2,#greater/2,APPEND/2,APPEND#1/2,APPENDD/2 ,APPENDD#1/2,QUICKSORT/1,QUICKSORT#1/1,QUICKSORT#2/2,QUICKSORTD/1,QUICKSORTD#1/1,QUICKSORTD#2/2,SPLIT/2 ,SPLIT#1/2,SPLIT#2/3,SPLIT#3/4,SPLITD/2,SPLITD#1/2,SPLITD#2/3,SPLITD#3/4,TESTLIST/1,TESTQUICKSORT/1 ,TESTQUICKSORT2/1,append/2,append#1/2,appendD/2,appendD#1/2,quicksort/1,quicksort#1/1,quicksort#2/2 ,quicksortD/1,quicksortD#1/1,quicksortD#2/2,split/2,split#1/2,split#2/3,split#3/4,splitD/2,splitD#1/2 ,splitD#2/3,splitD#3/4,testList/1,testQuicksort/1,testQuicksort2/1,#ABS#/1,#CKGT#/1,#COMPARE#/2,#GREATER#/2 ,#abs#/1,#ckgt#/1,#compare#/2,#greater#/2,APPEND#/2,APPEND#1#/2,APPENDD#/2,APPENDD#1#/2,QUICKSORT#/1 ,QUICKSORT#1#/1,QUICKSORT#2#/2,QUICKSORTD#/1,QUICKSORTD#1#/1,QUICKSORTD#2#/2,SPLIT#/2,SPLIT#1#/2,SPLIT#2#/3 ,SPLIT#3#/4,SPLITD#/2,SPLITD#1#/2,SPLITD#2#/3,SPLITD#3#/4,TESTLIST#/1,TESTQUICKSORT#/1,TESTQUICKSORT2#/1 ,append#/2,append#1#/2,appendD#/2,appendD#1#/2,quicksort#/1,quicksort#1#/1,quicksort#2#/2,quicksortD#/1 ,quicksortD#1#/1,quicksortD#2#/2,split#/2,split#1#/2,split#2#/3,split#3#/4,splitD#/2,splitD#1#/2,splitD#2#/3 ,splitD#3#/4,testList#/1,testQuicksort#/1,testQuicksort2#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,#unit/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/0,c16/0,c17/0,c18/0,c19/2,c2/0 ,c20/1,c21/1,c22/0,c23/1,c24/1,c25/0,c26/1,c27/2,c28/0,c29/2,c3/0,c30/2,c31/1,c32/2,c33/0,c34/2,c35/2,c36/1 ,c37/2,c38/0,c39/2,c4/0,c40/0,c41/0,c42/1,c43/2,c44/0,c45/2,c46/0,c47/0,c48/1,c49/1,c5/0,c50/1,c51/1,c52/1 ,c53/1,c54/1,c55/1,c56/1,c57/1,c58/2,c59/2,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/3 ,c_6/1,c_7/1,c_8/0,c_9/1,c_10/1,c_11/0,c_12/1,c_13/2,c_14/0,c_15/2,c_16/2,c_17/1,c_18/2,c_19/0,c_20/2,c_21/2 ,c_22/1,c_23/1,c_24/0,c_25/3,c_26/0,c_27/0,c_28/1,c_29/1,c_30/0,c_31/3,c_32/0,c_33/0,c_34/1,c_35/1,c_36/1 ,c_37/1,c_38/1,c_39/1,c_40/1,c_41/1,c_42/1,c_43/1,c_44/1,c_45/1,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0 ,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0,c_58/1,c_59/0,c_60/1,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0 ,c_67/0,c_68/0,c_69/0,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/0,c_76/0,c_77/1,c_78/0,c_79/1,c_80/2,c_81/1 ,c_82/1,c_83/0,c_84/1,c_85/1,c_86/0,c_87/1,c_88/2,c_89/0,c_90/3,c_91/1,c_92/2,c_93/0,c_94/3,c_95/1,c_96/2 ,c_97/0,c_98/2,c_99/0,c_100/0,c_101/1,c_102/2,c_103/0,c_104/2,c_105/0,c_106/0,c_107/10,c_108/2,c_109/2} - Obligation: innermost runtime complexity wrt. defined symbols {#ABS#,#CKGT#,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare# ,#greater#,APPEND#,APPEND#1#,APPENDD#,APPENDD#1#,QUICKSORT#,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD# ,QUICKSORTD#1#,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2#,SPLIT#3#,SPLITD#,SPLITD#1#,SPLITD#2#,SPLITD#3# ,TESTLIST#,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1#,appendD#,appendD#1#,quicksort#,quicksort#1# ,quicksort#2#,quicksortD#,quicksortD#1#,quicksortD#2#,split#,split#1#,split#2#,split#3#,splitD#,splitD#1# ,splitD#2#,splitD#3#,testList#,testQuicksort#,testQuicksort2#} and constructors {#0,#EQ,#GT,#LT,#false,#neg ,#pos,#s,#true,#unit,::,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,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52 ,c53,c54,c55,c56,c57,c58,c59,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny} + Details: The weightgap principle applies using the following constant growth matrix-interpretation: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(#ckgt) = {1}, uargs(::) = {1,2}, uargs(append) = {1,2}, uargs(appendD) = {1,2}, uargs(quicksort#2) = {1}, uargs(quicksortD#2) = {1}, uargs(split#2) = {1}, uargs(split#3) = {1}, uargs(splitD#2) = {1}, uargs(splitD#3) = {1}, uargs(APPEND#) = {1,2}, uargs(APPENDD#) = {1,2}, uargs(QUICKSORT#) = {1}, uargs(QUICKSORT#2#) = {1}, uargs(QUICKSORTD#2#) = {1}, uargs(c_6) = {1}, uargs(c_7) = {1}, uargs(c_9) = {1}, uargs(c_10) = {1}, uargs(c_22) = {1}, uargs(c_23) = {1}, uargs(c_28) = {1}, uargs(c_29) = {1} Following symbols are considered usable: all TcT has computed the following interpretation: p(#0) = [0] p(#ABS) = [0] p(#CKGT) = [0] p(#COMPARE) = [0] p(#EQ) = [0] p(#GREATER) = [0] p(#GT) = [0] p(#LT) = [0] p(#abs) = [0] p(#ckgt) = [1] x1 + [0] p(#compare) = [0] p(#false) = [0] p(#greater) = [0] p(#neg) = [1] x1 + [0] p(#pos) = [0] p(#s) = [0] p(#true) = [0] p(#unit) = [1] p(::) = [1] x1 + [1] x2 + [0] p(APPEND) = [0] p(APPEND#1) = [0] p(APPENDD) = [0] p(APPENDD#1) = [0] p(QUICKSORT) = [0] p(QUICKSORT#1) = [0] p(QUICKSORT#2) = [0] p(QUICKSORTD) = [0] p(QUICKSORTD#1) = [0] p(QUICKSORTD#2) = [0] p(SPLIT) = [0] p(SPLIT#1) = [0] p(SPLIT#2) = [0] p(SPLIT#3) = [0] p(SPLITD) = [0] p(SPLITD#1) = [0] p(SPLITD#2) = [0] p(SPLITD#3) = [0] p(TESTLIST) = [0] p(TESTQUICKSORT) = [0] p(TESTQUICKSORT2) = [0] p(append) = [1] x1 + [1] x2 + [0] p(append#1) = [1] x1 + [1] x2 + [0] p(appendD) = [1] x1 + [1] x2 + [0] p(appendD#1) = [1] x1 + [1] x2 + [0] p(c) = [0] p(c1) = [0] p(c10) = [0] p(c11) = [0] p(c12) = [1] x1 + [0] p(c13) = [0] p(c14) = [1] x1 + [0] p(c15) = [0] p(c16) = [0] p(c17) = [0] p(c18) = [0] p(c19) = [1] x1 + [1] x2 + [0] p(c2) = [0] p(c20) = [1] x1 + [0] p(c21) = [1] x1 + [0] p(c22) = [0] p(c23) = [1] x1 + [0] p(c24) = [1] x1 + [0] p(c25) = [0] p(c26) = [1] x1 + [0] p(c27) = [1] x1 + [1] x2 + [0] p(c28) = [0] p(c29) = [1] x1 + [1] x2 + [0] p(c3) = [0] p(c30) = [1] x1 + [1] x2 + [0] p(c31) = [1] x1 + [0] p(c32) = [1] x1 + [1] x2 + [0] p(c33) = [0] p(c34) = [1] x1 + [1] x2 + [0] p(c35) = [1] x1 + [1] x2 + [0] p(c36) = [1] x1 + [0] p(c37) = [1] x1 + [1] x2 + [0] p(c38) = [0] p(c39) = [1] x1 + [1] x2 + [0] p(c4) = [0] p(c40) = [0] p(c41) = [0] p(c42) = [1] x1 + [0] p(c43) = [1] x1 + [1] x2 + [0] p(c44) = [0] p(c45) = [1] x1 + [1] x2 + [0] p(c46) = [0] p(c47) = [0] p(c48) = [1] x1 + [0] p(c49) = [1] x1 + [0] p(c5) = [0] p(c50) = [1] x1 + [0] p(c51) = [1] x1 + [0] p(c52) = [1] x1 + [0] p(c53) = [1] x1 + [0] p(c54) = [1] x1 + [0] p(c55) = [1] x1 + [0] p(c56) = [1] x1 + [0] p(c57) = [1] x1 + [0] p(c58) = [1] x1 + [1] x2 + [0] p(c59) = [1] x1 + [1] x2 + [0] p(c6) = [0] p(c7) = [0] p(c8) = [1] x1 + [0] p(c9) = [0] p(nil) = [0] p(quicksort) = [1] x1 + [0] p(quicksort#1) = [1] x1 + [0] p(quicksort#2) = [1] x1 + [1] x2 + [0] p(quicksortD) = [1] x1 + [0] p(quicksortD#1) = [1] x1 + [0] p(quicksortD#2) = [1] x1 + [1] x2 + [0] p(split) = [1] x2 + [0] p(split#1) = [1] x1 + [0] p(split#2) = [1] x1 + [1] x3 + [0] p(split#3) = [1] x1 + [1] x2 + [1] x3 + [1] x4 + [0] p(splitD) = [1] x2 + [0] p(splitD#1) = [1] x1 + [0] p(splitD#2) = [1] x1 + [1] x3 + [0] p(splitD#3) = [1] x1 + [1] x2 + [1] x3 + [1] x4 + [0] p(testList) = [1] p(testQuicksort) = [0] p(testQuicksort2) = [1] p(tuple#2) = [1] x1 + [1] x2 + [0] p(#ABS#) = [2] x1 + [1] p(#CKGT#) = [1] p(#COMPARE#) = [1] x1 + [1] x2 + [1] p(#GREATER#) = [1] x1 + [1] x2 + [2] p(#abs#) = [1] x1 + [1] p(#ckgt#) = [2] x1 + [0] p(#compare#) = [4] x2 + [1] p(#greater#) = [1] x1 + [1] x2 + [1] p(APPEND#) = [1] x1 + [1] x2 + [0] p(APPEND#1#) = [1] x1 + [1] x2 + [0] p(APPENDD#) = [1] x1 + [1] x2 + [0] p(APPENDD#1#) = [1] x1 + [1] x2 + [2] p(QUICKSORT#) = [1] x1 + [0] p(QUICKSORT#1#) = [1] x1 + [0] p(QUICKSORT#2#) = [1] x1 + [1] x2 + [0] p(QUICKSORTD#) = [1] x1 + [0] p(QUICKSORTD#1#) = [1] x1 + [0] p(QUICKSORTD#2#) = [1] x1 + [1] x2 + [0] p(SPLIT#) = [1] x1 + [1] x2 + [0] p(SPLIT#1#) = [1] x1 + [1] x2 + [5] p(SPLIT#2#) = [4] x2 + [4] x3 + [1] p(SPLIT#3#) = [2] x2 + [1] x3 + [0] p(SPLITD#) = [1] x1 + [0] p(SPLITD#1#) = [1] x2 + [3] p(SPLITD#2#) = [4] x2 + [1] x3 + [0] p(SPLITD#3#) = [1] x1 + [2] x2 + [0] p(TESTLIST#) = [1] x1 + [0] p(TESTQUICKSORT#) = [1] x1 + [1] p(TESTQUICKSORT2#) = [2] x1 + [4] p(append#) = [1] x1 + [0] p(append#1#) = [0] p(appendD#) = [1] p(appendD#1#) = [1] x1 + [1] x2 + [1] p(quicksort#) = [1] p(quicksort#1#) = [1] x1 + [1] p(quicksort#2#) = [1] x2 + [0] p(quicksortD#) = [1] p(quicksortD#1#) = [0] p(quicksortD#2#) = [4] x1 + [1] x2 + [1] p(split#) = [1] x1 + [1] x2 + [0] p(split#1#) = [1] x2 + [1] p(split#2#) = [1] x1 + [4] x2 + [1] x3 + [0] p(split#3#) = [2] x3 + [0] p(splitD#) = [4] x2 + [0] p(splitD#1#) = [1] x1 + [2] x2 + [1] p(splitD#2#) = [4] x1 + [1] x2 + [1] p(splitD#3#) = [1] p(testList#) = [1] x1 + [2] p(testQuicksort#) = [4] p(testQuicksort2#) = [0] p(c_1) = [2] p(c_2) = [1] p(c_3) = [0] p(c_4) = [4] p(c_5) = [4] x1 + [1] x2 + [0] p(c_6) = [1] x1 + [4] p(c_7) = [1] x1 + [1] p(c_8) = [0] p(c_9) = [1] x1 + [1] p(c_10) = [1] x1 + [1] p(c_11) = [0] p(c_12) = [0] p(c_13) = [0] p(c_14) = [1] p(c_15) = [1] x1 + [1] x2 + [0] p(c_16) = [2] x1 + [4] x2 + [0] p(c_17) = [0] p(c_18) = [4] x2 + [0] p(c_19) = [1] p(c_20) = [1] x1 + [2] p(c_21) = [2] x2 + [0] p(c_22) = [1] x1 + [3] p(c_23) = [1] x1 + [0] p(c_24) = [0] p(c_25) = [1] x2 + [0] p(c_26) = [1] p(c_27) = [0] p(c_28) = [1] x1 + [1] p(c_29) = [1] x1 + [0] p(c_30) = [0] p(c_31) = [1] x1 + [4] x2 + [0] p(c_32) = [2] p(c_33) = [0] p(c_34) = [1] p(c_35) = [2] x1 + [0] p(c_36) = [4] x1 + [4] p(c_37) = [1] x1 + [1] p(c_38) = [4] p(c_39) = [1] x1 + [0] p(c_40) = [1] x1 + [2] p(c_41) = [2] x1 + [2] p(c_42) = [0] p(c_43) = [4] x1 + [0] p(c_44) = [0] p(c_45) = [1] p(c_46) = [0] p(c_47) = [0] p(c_48) = [1] p(c_49) = [0] p(c_50) = [1] p(c_51) = [0] p(c_52) = [1] p(c_53) = [1] p(c_54) = [0] p(c_55) = [0] p(c_56) = [2] p(c_57) = [1] p(c_58) = [1] x1 + [0] p(c_59) = [1] p(c_60) = [2] x1 + [1] p(c_61) = [0] p(c_62) = [2] p(c_63) = [0] p(c_64) = [4] p(c_65) = [0] p(c_66) = [4] p(c_67) = [0] p(c_68) = [0] p(c_69) = [0] p(c_70) = [1] p(c_71) = [0] p(c_72) = [2] p(c_73) = [0] p(c_74) = [1] p(c_75) = [0] p(c_76) = [1] p(c_77) = [2] p(c_78) = [0] p(c_79) = [1] x1 + [0] p(c_80) = [2] x1 + [0] p(c_81) = [0] p(c_82) = [1] p(c_83) = [1] p(c_84) = [1] p(c_85) = [4] x1 + [0] p(c_86) = [1] p(c_87) = [2] p(c_88) = [1] p(c_89) = [2] p(c_90) = [1] x3 + [1] p(c_91) = [2] p(c_92) = [4] x1 + [0] p(c_93) = [0] p(c_94) = [1] x2 + [2] x3 + [1] p(c_95) = [4] x1 + [4] p(c_96) = [4] x1 + [1] x2 + [0] p(c_97) = [0] p(c_98) = [4] x1 + [2] p(c_99) = [2] p(c_100) = [1] p(c_101) = [0] p(c_102) = [2] x1 + [1] x2 + [1] p(c_103) = [1] p(c_104) = [2] x2 + [1] p(c_105) = [0] p(c_106) = [0] p(c_107) = [1] x2 + [4] x3 + [1] x4 + [2] x5 + [1] x6 + [1] x9 + [2] x10 + [1] p(c_108) = [1] x1 + [1] x2 + [2] p(c_109) = [1] x1 + [1] Following rules are strictly oriented: APPENDD#1#(::(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [2] > [1] z1 + [1] z2 + [1] = c_10(APPENDD#(z1,z2)) SPLIT#1#(::(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [5] > [1] z1 + [1] z2 + [0] = c_23(SPLIT#(z2,z1)) SPLITD#1#(::(z0,z1),z2) = [1] z2 + [3] > [1] z2 + [0] = c_29(SPLITD#(z2,z1)) Following rules are (at-least) weakly oriented: APPEND#(z0,z1) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [4] = c_6(APPEND#1#(z0,z1)) APPEND#1#(::(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z1 + [1] z2 + [1] = c_7(APPEND#(z1,z2)) APPENDD#(z0,z1) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [3] = c_9(APPENDD#1#(z0,z1)) QUICKSORT#(z0) = [1] z0 + [0] >= [1] z0 + [0] = QUICKSORT#1#(z0) QUICKSORT#1#(::(z0,z1)) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = QUICKSORT#2#(split(z0,z1),z0) QUICKSORT#1#(::(z0,z1)) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = SPLIT#(z0,z1) QUICKSORT#2#(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = APPEND#(quicksort(z0),::(z2,quicksort(z1))) QUICKSORT#2#(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [0] = QUICKSORT#(z0) QUICKSORT#2#(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z1 + [0] = QUICKSORT#(z1) QUICKSORTD#(z0) = [1] z0 + [0] >= [1] z0 + [0] = QUICKSORTD#1#(z0) QUICKSORTD#1#(::(z0,z1)) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = QUICKSORTD#2#(splitD(z0,z1),z0) QUICKSORTD#1#(::(z0,z1)) = [1] z0 + [1] z1 + [0] >= [1] z0 + [0] = SPLITD#(z0,z1) QUICKSORTD#2#(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) QUICKSORTD#2#(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [0] = QUICKSORTD#(z0) QUICKSORTD#2#(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z1 + [0] = QUICKSORTD#(z1) SPLIT#(z0,z1) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [8] = c_22(SPLIT#1#(z1,z0)) SPLITD#(z0,z1) = [1] z0 + [0] >= [1] z0 + [4] = c_28(SPLITD#1#(z1,z0)) TESTQUICKSORT#(z0) = [1] z0 + [1] >= [1] = QUICKSORT#(testList(#unit())) TESTQUICKSORT2#(z0) = [2] z0 + [4] >= [1] = QUICKSORT#(testList(#unit())) #abs(#0()) = [0] >= [0] = #0() #abs(#pos(z0)) = [0] >= [0] = #pos(z0) #ckgt(#EQ()) = [0] >= [0] = #false() #ckgt(#GT()) = [0] >= [0] = #true() #ckgt(#LT()) = [0] >= [0] = #false() #compare(#0(),#0()) = [0] >= [0] = #EQ() #compare(#0(),#neg(z0)) = [0] >= [0] = #GT() #compare(#0(),#pos(z0)) = [0] >= [0] = #LT() #compare(#0(),#s(z0)) = [0] >= [0] = #LT() #compare(#neg(z0),#0()) = [0] >= [0] = #LT() #compare(#neg(z0),#neg(z1)) = [0] >= [0] = #compare(z1,z0) #compare(#neg(z0),#pos(z1)) = [0] >= [0] = #LT() #compare(#pos(z0),#0()) = [0] >= [0] = #GT() #compare(#pos(z0),#neg(z1)) = [0] >= [0] = #GT() #compare(#pos(z0),#pos(z1)) = [0] >= [0] = #compare(z0,z1) #compare(#s(z0),#0()) = [0] >= [0] = #GT() #compare(#s(z0),#s(z1)) = [0] >= [0] = #compare(z0,z1) #greater(z0,z1) = [0] >= [0] = #ckgt(#compare(z0,z1)) append(z0,z1) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = append#1(z0,z1) append#1(::(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = ::(z0,append(z1,z2)) append#1(nil(),z0) = [1] z0 + [0] >= [1] z0 + [0] = z0 appendD(z0,z1) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = appendD#1(z0,z1) appendD#1(::(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = ::(z0,appendD(z1,z2)) appendD#1(nil(),z0) = [1] z0 + [0] >= [1] z0 + [0] = z0 quicksort(z0) = [1] z0 + [0] >= [1] z0 + [0] = quicksort#1(z0) quicksort#1(::(z0,z1)) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = quicksort#2(split(z0,z1),z0) quicksort#1(nil()) = [0] >= [0] = nil() quicksort#2(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = append(quicksort(z0),::(z2,quicksort(z1))) quicksortD(z0) = [1] z0 + [0] >= [1] z0 + [0] = quicksortD#1(z0) quicksortD#1(::(z0,z1)) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = quicksortD#2(splitD(z0,z1),z0) quicksortD#1(nil()) = [0] >= [0] = nil() quicksortD#2(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = appendD(quicksortD(z0),::(z2,quicksortD(z1))) split(z0,z1) = [1] z1 + [0] >= [1] z1 + [0] = split#1(z1,z0) split#1(::(z0,z1),z2) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = split#2(split(z2,z1),z2,z0) split#1(nil(),z0) = [0] >= [0] = tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) = [1] z0 + [1] z1 + [1] z3 + [0] >= [1] z0 + [1] z1 + [1] z3 + [0] = split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = tuple#2(z0,::(z2,z1)) splitD(z0,z1) = [1] z1 + [0] >= [1] z1 + [0] = splitD#1(z1,z0) splitD#1(::(z0,z1),z2) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) = [0] >= [0] = tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) = [1] z0 + [1] z1 + [1] z3 + [0] >= [1] z0 + [1] z1 + [1] z3 + [0] = splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = tuple#2(z0,::(z2,z1)) testList(z0) = [1] >= [0] = ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))),::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) Further, it can be verified that all rules not oriented are covered by the weightgap condition. ** Step 8.b:2: WeightGap. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: APPEND#(z0,z1) -> c_6(APPEND#1#(z0,z1)) APPEND#1#(::(z0,z1),z2) -> c_7(APPEND#(z1,z2)) APPENDD#(z0,z1) -> c_9(APPENDD#1#(z0,z1)) SPLIT#(z0,z1) -> c_22(SPLIT#1#(z1,z0)) SPLITD#(z0,z1) -> c_28(SPLITD#1#(z1,z0)) - Weak DPs: APPENDD#1#(::(z0,z1),z2) -> c_10(APPENDD#(z1,z2)) QUICKSORT#(z0) -> QUICKSORT#1#(z0) QUICKSORT#1#(::(z0,z1)) -> QUICKSORT#2#(split(z0,z1),z0) QUICKSORT#1#(::(z0,z1)) -> SPLIT#(z0,z1) QUICKSORT#2#(tuple#2(z0,z1),z2) -> APPEND#(quicksort(z0),::(z2,quicksort(z1))) QUICKSORT#2#(tuple#2(z0,z1),z2) -> QUICKSORT#(z0) QUICKSORT#2#(tuple#2(z0,z1),z2) -> QUICKSORT#(z1) QUICKSORTD#(z0) -> QUICKSORTD#1#(z0) QUICKSORTD#1#(::(z0,z1)) -> QUICKSORTD#2#(splitD(z0,z1),z0) QUICKSORTD#1#(::(z0,z1)) -> SPLITD#(z0,z1) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> QUICKSORTD#(z0) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> QUICKSORTD#(z1) SPLIT#1#(::(z0,z1),z2) -> c_23(SPLIT#(z2,z1)) SPLITD#1#(::(z0,z1),z2) -> c_29(SPLITD#(z2,z1)) TESTQUICKSORT#(z0) -> QUICKSORT#(testList(#unit())) TESTQUICKSORT2#(z0) -> QUICKSORT#(testList(#unit())) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(z0)) -> #pos(z0) #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(z0)) -> #GT() #compare(#0(),#pos(z0)) -> #LT() #compare(#0(),#s(z0)) -> #LT() #compare(#neg(z0),#0()) -> #LT() #compare(#neg(z0),#neg(z1)) -> #compare(z1,z0) #compare(#neg(z0),#pos(z1)) -> #LT() #compare(#pos(z0),#0()) -> #GT() #compare(#pos(z0),#neg(z1)) -> #GT() #compare(#pos(z0),#pos(z1)) -> #compare(z0,z1) #compare(#s(z0),#0()) -> #GT() #compare(#s(z0),#s(z1)) -> #compare(z0,z1) #greater(z0,z1) -> #ckgt(#compare(z0,z1)) append(z0,z1) -> append#1(z0,z1) append#1(::(z0,z1),z2) -> ::(z0,append(z1,z2)) append#1(nil(),z0) -> z0 appendD(z0,z1) -> appendD#1(z0,z1) appendD#1(::(z0,z1),z2) -> ::(z0,appendD(z1,z2)) appendD#1(nil(),z0) -> z0 quicksort(z0) -> quicksort#1(z0) quicksort#1(::(z0,z1)) -> quicksort#2(split(z0,z1),z0) quicksort#1(nil()) -> nil() quicksort#2(tuple#2(z0,z1),z2) -> append(quicksort(z0),::(z2,quicksort(z1))) quicksortD(z0) -> quicksortD#1(z0) quicksortD#1(::(z0,z1)) -> quicksortD#2(splitD(z0,z1),z0) quicksortD#1(nil()) -> nil() quicksortD#2(tuple#2(z0,z1),z2) -> appendD(quicksortD(z0),::(z2,quicksortD(z1))) split(z0,z1) -> split#1(z1,z0) split#1(::(z0,z1),z2) -> split#2(split(z2,z1),z2,z0) split#1(nil(),z0) -> tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) -> split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) splitD(z0,z1) -> splitD#1(z1,z0) splitD#1(::(z0,z1),z2) -> splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) -> tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) -> splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) testList(z0) -> ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) - Signature: {#ABS/1,#CKGT/1,#COMPARE/2,#GREATER/2,#abs/1,#ckgt/1,#compare/2,#greater/2,APPEND/2,APPEND#1/2,APPENDD/2 ,APPENDD#1/2,QUICKSORT/1,QUICKSORT#1/1,QUICKSORT#2/2,QUICKSORTD/1,QUICKSORTD#1/1,QUICKSORTD#2/2,SPLIT/2 ,SPLIT#1/2,SPLIT#2/3,SPLIT#3/4,SPLITD/2,SPLITD#1/2,SPLITD#2/3,SPLITD#3/4,TESTLIST/1,TESTQUICKSORT/1 ,TESTQUICKSORT2/1,append/2,append#1/2,appendD/2,appendD#1/2,quicksort/1,quicksort#1/1,quicksort#2/2 ,quicksortD/1,quicksortD#1/1,quicksortD#2/2,split/2,split#1/2,split#2/3,split#3/4,splitD/2,splitD#1/2 ,splitD#2/3,splitD#3/4,testList/1,testQuicksort/1,testQuicksort2/1,#ABS#/1,#CKGT#/1,#COMPARE#/2,#GREATER#/2 ,#abs#/1,#ckgt#/1,#compare#/2,#greater#/2,APPEND#/2,APPEND#1#/2,APPENDD#/2,APPENDD#1#/2,QUICKSORT#/1 ,QUICKSORT#1#/1,QUICKSORT#2#/2,QUICKSORTD#/1,QUICKSORTD#1#/1,QUICKSORTD#2#/2,SPLIT#/2,SPLIT#1#/2,SPLIT#2#/3 ,SPLIT#3#/4,SPLITD#/2,SPLITD#1#/2,SPLITD#2#/3,SPLITD#3#/4,TESTLIST#/1,TESTQUICKSORT#/1,TESTQUICKSORT2#/1 ,append#/2,append#1#/2,appendD#/2,appendD#1#/2,quicksort#/1,quicksort#1#/1,quicksort#2#/2,quicksortD#/1 ,quicksortD#1#/1,quicksortD#2#/2,split#/2,split#1#/2,split#2#/3,split#3#/4,splitD#/2,splitD#1#/2,splitD#2#/3 ,splitD#3#/4,testList#/1,testQuicksort#/1,testQuicksort2#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,#unit/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/0,c16/0,c17/0,c18/0,c19/2,c2/0 ,c20/1,c21/1,c22/0,c23/1,c24/1,c25/0,c26/1,c27/2,c28/0,c29/2,c3/0,c30/2,c31/1,c32/2,c33/0,c34/2,c35/2,c36/1 ,c37/2,c38/0,c39/2,c4/0,c40/0,c41/0,c42/1,c43/2,c44/0,c45/2,c46/0,c47/0,c48/1,c49/1,c5/0,c50/1,c51/1,c52/1 ,c53/1,c54/1,c55/1,c56/1,c57/1,c58/2,c59/2,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/3 ,c_6/1,c_7/1,c_8/0,c_9/1,c_10/1,c_11/0,c_12/1,c_13/2,c_14/0,c_15/2,c_16/2,c_17/1,c_18/2,c_19/0,c_20/2,c_21/2 ,c_22/1,c_23/1,c_24/0,c_25/3,c_26/0,c_27/0,c_28/1,c_29/1,c_30/0,c_31/3,c_32/0,c_33/0,c_34/1,c_35/1,c_36/1 ,c_37/1,c_38/1,c_39/1,c_40/1,c_41/1,c_42/1,c_43/1,c_44/1,c_45/1,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0 ,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0,c_58/1,c_59/0,c_60/1,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0 ,c_67/0,c_68/0,c_69/0,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/0,c_76/0,c_77/1,c_78/0,c_79/1,c_80/2,c_81/1 ,c_82/1,c_83/0,c_84/1,c_85/1,c_86/0,c_87/1,c_88/2,c_89/0,c_90/3,c_91/1,c_92/2,c_93/0,c_94/3,c_95/1,c_96/2 ,c_97/0,c_98/2,c_99/0,c_100/0,c_101/1,c_102/2,c_103/0,c_104/2,c_105/0,c_106/0,c_107/10,c_108/2,c_109/2} - Obligation: innermost runtime complexity wrt. defined symbols {#ABS#,#CKGT#,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare# ,#greater#,APPEND#,APPEND#1#,APPENDD#,APPENDD#1#,QUICKSORT#,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD# ,QUICKSORTD#1#,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2#,SPLIT#3#,SPLITD#,SPLITD#1#,SPLITD#2#,SPLITD#3# ,TESTLIST#,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1#,appendD#,appendD#1#,quicksort#,quicksort#1# ,quicksort#2#,quicksortD#,quicksortD#1#,quicksortD#2#,split#,split#1#,split#2#,split#3#,splitD#,splitD#1# ,splitD#2#,splitD#3#,testList#,testQuicksort#,testQuicksort2#} and constructors {#0,#EQ,#GT,#LT,#false,#neg ,#pos,#s,#true,#unit,::,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,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52 ,c53,c54,c55,c56,c57,c58,c59,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny} + Details: The weightgap principle applies using the following constant growth matrix-interpretation: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(#ckgt) = {1}, uargs(::) = {1,2}, uargs(append) = {1,2}, uargs(appendD) = {1,2}, uargs(quicksort#2) = {1}, uargs(quicksortD#2) = {1}, uargs(split#2) = {1}, uargs(split#3) = {1}, uargs(splitD#2) = {1}, uargs(splitD#3) = {1}, uargs(APPEND#) = {1,2}, uargs(APPENDD#) = {1,2}, uargs(QUICKSORT#) = {1}, uargs(QUICKSORT#2#) = {1}, uargs(QUICKSORTD#2#) = {1}, uargs(c_6) = {1}, uargs(c_7) = {1}, uargs(c_9) = {1}, uargs(c_10) = {1}, uargs(c_22) = {1}, uargs(c_23) = {1}, uargs(c_28) = {1}, uargs(c_29) = {1} Following symbols are considered usable: all TcT has computed the following interpretation: p(#0) = [0] p(#ABS) = [0] p(#CKGT) = [0] p(#COMPARE) = [0] p(#EQ) = [0] p(#GREATER) = [0] p(#GT) = [0] p(#LT) = [0] p(#abs) = [0] p(#ckgt) = [1] x1 + [0] p(#compare) = [0] p(#false) = [0] p(#greater) = [0] p(#neg) = [0] p(#pos) = [0] p(#s) = [0] p(#true) = [0] p(#unit) = [1] p(::) = [1] x1 + [1] x2 + [0] p(APPEND) = [0] p(APPEND#1) = [0] p(APPENDD) = [0] p(APPENDD#1) = [0] p(QUICKSORT) = [0] p(QUICKSORT#1) = [0] p(QUICKSORT#2) = [0] p(QUICKSORTD) = [0] p(QUICKSORTD#1) = [0] p(QUICKSORTD#2) = [1] x2 + [0] p(SPLIT) = [2] x1 + [0] p(SPLIT#1) = [1] x1 + [0] p(SPLIT#2) = [4] p(SPLIT#3) = [1] x1 + [1] x2 + [4] x3 + [1] x4 + [4] p(SPLITD) = [1] x2 + [1] p(SPLITD#1) = [1] x1 + [1] x2 + [1] p(SPLITD#2) = [1] x1 + [1] x2 + [1] p(SPLITD#3) = [1] x2 + [2] x3 + [1] x4 + [2] p(TESTLIST) = [1] x1 + [4] p(TESTQUICKSORT) = [2] x1 + [0] p(TESTQUICKSORT2) = [1] x1 + [1] p(append) = [1] x1 + [1] x2 + [0] p(append#1) = [1] x1 + [1] x2 + [0] p(appendD) = [1] x1 + [1] x2 + [0] p(appendD#1) = [1] x1 + [1] x2 + [0] p(c) = [1] p(c1) = [0] p(c10) = [1] p(c11) = [1] p(c12) = [1] p(c13) = [2] p(c14) = [1] x1 + [4] p(c15) = [0] p(c16) = [1] p(c17) = [1] p(c18) = [0] p(c19) = [1] x1 + [2] p(c2) = [4] p(c20) = [1] x1 + [4] p(c21) = [1] x1 + [0] p(c22) = [0] p(c23) = [1] p(c24) = [1] x1 + [0] p(c25) = [2] p(c26) = [0] p(c27) = [1] x2 + [0] p(c28) = [0] p(c29) = [1] x1 + [1] p(c3) = [0] p(c30) = [1] p(c31) = [1] x1 + [1] p(c32) = [1] x2 + [1] p(c33) = [1] p(c34) = [1] x2 + [1] p(c35) = [1] x1 + [1] x2 + [0] p(c36) = [1] x1 + [0] p(c37) = [1] p(c38) = [2] p(c39) = [1] p(c4) = [0] p(c40) = [2] p(c41) = [0] p(c42) = [1] x1 + [0] p(c43) = [1] x2 + [0] p(c44) = [1] p(c45) = [1] x2 + [0] p(c46) = [0] p(c47) = [2] p(c48) = [1] x1 + [0] p(c49) = [1] x1 + [4] p(c5) = [0] p(c50) = [0] p(c51) = [1] x1 + [1] p(c52) = [1] p(c53) = [1] x1 + [4] p(c54) = [1] p(c55) = [1] x1 + [0] p(c56) = [1] x1 + [1] p(c57) = [1] p(c58) = [1] x2 + [0] p(c59) = [1] p(c6) = [0] p(c7) = [1] p(c8) = [1] x1 + [1] p(c9) = [0] p(nil) = [0] p(quicksort) = [1] x1 + [0] p(quicksort#1) = [1] x1 + [0] p(quicksort#2) = [1] x1 + [1] x2 + [0] p(quicksortD) = [1] x1 + [0] p(quicksortD#1) = [1] x1 + [0] p(quicksortD#2) = [1] x1 + [1] x2 + [0] p(split) = [1] x2 + [0] p(split#1) = [1] x1 + [0] p(split#2) = [1] x1 + [1] x3 + [0] p(split#3) = [1] x1 + [1] x2 + [1] x3 + [1] x4 + [0] p(splitD) = [1] x2 + [0] p(splitD#1) = [1] x1 + [0] p(splitD#2) = [1] x1 + [1] x3 + [0] p(splitD#3) = [1] x1 + [1] x2 + [1] x3 + [1] x4 + [0] p(testList) = [2] x1 + [4] p(testQuicksort) = [4] p(testQuicksort2) = [1] p(tuple#2) = [1] x1 + [1] x2 + [0] p(#ABS#) = [2] p(#CKGT#) = [1] x1 + [0] p(#COMPARE#) = [1] x1 + [4] x2 + [2] p(#GREATER#) = [1] x1 + [0] p(#abs#) = [0] p(#ckgt#) = [4] p(#compare#) = [2] x1 + [1] x2 + [2] p(#greater#) = [1] x1 + [1] x2 + [4] p(APPEND#) = [1] x1 + [1] x2 + [0] p(APPEND#1#) = [1] x1 + [1] x2 + [6] p(APPENDD#) = [1] x1 + [1] x2 + [0] p(APPENDD#1#) = [1] x1 + [1] x2 + [0] p(QUICKSORT#) = [1] x1 + [0] p(QUICKSORT#1#) = [1] x1 + [0] p(QUICKSORT#2#) = [1] x1 + [1] x2 + [0] p(QUICKSORTD#) = [1] x1 + [0] p(QUICKSORTD#1#) = [1] x1 + [0] p(QUICKSORTD#2#) = [1] x1 + [1] x2 + [0] p(SPLIT#) = [0] p(SPLIT#1#) = [0] p(SPLIT#2#) = [1] x1 + [2] x2 + [1] x3 + [1] p(SPLIT#3#) = [1] x1 + [4] x2 + [1] x3 + [1] x4 + [1] p(SPLITD#) = [0] p(SPLITD#1#) = [0] p(SPLITD#2#) = [1] x1 + [4] x3 + [0] p(SPLITD#3#) = [1] x1 + [4] x2 + [1] x3 + [1] x4 + [1] p(TESTLIST#) = [1] x1 + [1] p(TESTQUICKSORT#) = [6] p(TESTQUICKSORT2#) = [1] x1 + [7] p(append#) = [0] p(append#1#) = [1] x1 + [1] p(appendD#) = [1] x1 + [1] x2 + [0] p(appendD#1#) = [0] p(quicksort#) = [1] p(quicksort#1#) = [1] x1 + [1] p(quicksort#2#) = [1] x1 + [1] p(quicksortD#) = [4] x1 + [4] p(quicksortD#1#) = [1] x1 + [0] p(quicksortD#2#) = [1] x1 + [2] p(split#) = [4] x2 + [1] p(split#1#) = [2] p(split#2#) = [2] x2 + [1] x3 + [4] p(split#3#) = [1] x1 + [1] x2 + [1] x3 + [1] x4 + [2] p(splitD#) = [2] x1 + [0] p(splitD#1#) = [2] x1 + [4] x2 + [1] p(splitD#2#) = [1] x2 + [4] x3 + [2] p(splitD#3#) = [1] x1 + [1] x3 + [1] p(testList#) = [1] x1 + [4] p(testQuicksort#) = [1] x1 + [0] p(testQuicksort2#) = [4] x1 + [4] p(c_1) = [2] p(c_2) = [1] p(c_3) = [0] p(c_4) = [2] p(c_5) = [1] x1 + [1] x2 + [1] p(c_6) = [1] x1 + [0] p(c_7) = [1] x1 + [0] p(c_8) = [1] p(c_9) = [1] x1 + [7] p(c_10) = [1] x1 + [0] p(c_11) = [0] p(c_12) = [0] p(c_13) = [1] x2 + [0] p(c_14) = [4] p(c_15) = [4] x2 + [0] p(c_16) = [1] x2 + [2] p(c_17) = [1] p(c_18) = [1] x1 + [4] x2 + [0] p(c_19) = [1] p(c_20) = [1] p(c_21) = [4] x1 + [4] p(c_22) = [1] x1 + [3] p(c_23) = [1] x1 + [0] p(c_24) = [4] p(c_25) = [1] x1 + [1] x2 + [1] x3 + [1] p(c_26) = [2] p(c_27) = [0] p(c_28) = [1] x1 + [5] p(c_29) = [1] x1 + [0] p(c_30) = [4] p(c_31) = [1] x2 + [1] x3 + [1] p(c_32) = [0] p(c_33) = [1] p(c_34) = [1] p(c_35) = [1] x1 + [0] p(c_36) = [1] x1 + [4] p(c_37) = [1] x1 + [2] p(c_38) = [1] x1 + [4] p(c_39) = [1] x1 + [0] p(c_40) = [2] p(c_41) = [1] p(c_42) = [4] x1 + [1] p(c_43) = [1] p(c_44) = [2] p(c_45) = [1] p(c_46) = [0] p(c_47) = [1] p(c_48) = [1] p(c_49) = [0] p(c_50) = [0] p(c_51) = [0] p(c_52) = [1] p(c_53) = [0] p(c_54) = [1] p(c_55) = [1] p(c_56) = [0] p(c_57) = [1] p(c_58) = [1] p(c_59) = [2] p(c_60) = [1] x1 + [1] p(c_61) = [1] p(c_62) = [0] p(c_63) = [0] p(c_64) = [0] p(c_65) = [0] p(c_66) = [0] p(c_67) = [0] p(c_68) = [0] p(c_69) = [0] p(c_70) = [1] p(c_71) = [0] p(c_72) = [0] p(c_73) = [0] p(c_74) = [1] p(c_75) = [4] p(c_76) = [0] p(c_77) = [1] p(c_78) = [1] p(c_79) = [1] x1 + [1] p(c_80) = [2] x2 + [2] p(c_81) = [1] x1 + [0] p(c_82) = [4] x1 + [1] p(c_83) = [0] p(c_84) = [2] x1 + [1] p(c_85) = [1] x1 + [1] p(c_86) = [4] p(c_87) = [1] x1 + [4] p(c_88) = [2] x1 + [1] x2 + [1] p(c_89) = [0] p(c_90) = [1] x1 + [4] p(c_91) = [1] x1 + [1] p(c_92) = [1] x1 + [2] p(c_93) = [0] p(c_94) = [2] x2 + [4] x3 + [0] p(c_95) = [2] p(c_96) = [1] x2 + [0] p(c_97) = [0] p(c_98) = [4] x2 + [2] p(c_99) = [2] p(c_100) = [1] p(c_101) = [2] x1 + [4] p(c_102) = [2] x2 + [0] p(c_103) = [0] p(c_104) = [1] x2 + [0] p(c_105) = [1] p(c_106) = [1] p(c_107) = [4] x2 + [1] x4 + [2] x5 + [1] x10 + [0] p(c_108) = [0] p(c_109) = [1] x1 + [4] Following rules are strictly oriented: APPEND#1#(::(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [6] > [1] z1 + [1] z2 + [0] = c_7(APPEND#(z1,z2)) Following rules are (at-least) weakly oriented: APPEND#(z0,z1) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [6] = c_6(APPEND#1#(z0,z1)) APPENDD#(z0,z1) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [7] = c_9(APPENDD#1#(z0,z1)) APPENDD#1#(::(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z1 + [1] z2 + [0] = c_10(APPENDD#(z1,z2)) QUICKSORT#(z0) = [1] z0 + [0] >= [1] z0 + [0] = QUICKSORT#1#(z0) QUICKSORT#1#(::(z0,z1)) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = QUICKSORT#2#(split(z0,z1),z0) QUICKSORT#1#(::(z0,z1)) = [1] z0 + [1] z1 + [0] >= [0] = SPLIT#(z0,z1) QUICKSORT#2#(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = APPEND#(quicksort(z0),::(z2,quicksort(z1))) QUICKSORT#2#(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [0] = QUICKSORT#(z0) QUICKSORT#2#(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z1 + [0] = QUICKSORT#(z1) QUICKSORTD#(z0) = [1] z0 + [0] >= [1] z0 + [0] = QUICKSORTD#1#(z0) QUICKSORTD#1#(::(z0,z1)) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = QUICKSORTD#2#(splitD(z0,z1),z0) QUICKSORTD#1#(::(z0,z1)) = [1] z0 + [1] z1 + [0] >= [0] = SPLITD#(z0,z1) QUICKSORTD#2#(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) QUICKSORTD#2#(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [0] = QUICKSORTD#(z0) QUICKSORTD#2#(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z1 + [0] = QUICKSORTD#(z1) SPLIT#(z0,z1) = [0] >= [3] = c_22(SPLIT#1#(z1,z0)) SPLIT#1#(::(z0,z1),z2) = [0] >= [0] = c_23(SPLIT#(z2,z1)) SPLITD#(z0,z1) = [0] >= [5] = c_28(SPLITD#1#(z1,z0)) SPLITD#1#(::(z0,z1),z2) = [0] >= [0] = c_29(SPLITD#(z2,z1)) TESTQUICKSORT#(z0) = [6] >= [6] = QUICKSORT#(testList(#unit())) TESTQUICKSORT2#(z0) = [1] z0 + [7] >= [6] = QUICKSORT#(testList(#unit())) #abs(#0()) = [0] >= [0] = #0() #abs(#pos(z0)) = [0] >= [0] = #pos(z0) #ckgt(#EQ()) = [0] >= [0] = #false() #ckgt(#GT()) = [0] >= [0] = #true() #ckgt(#LT()) = [0] >= [0] = #false() #compare(#0(),#0()) = [0] >= [0] = #EQ() #compare(#0(),#neg(z0)) = [0] >= [0] = #GT() #compare(#0(),#pos(z0)) = [0] >= [0] = #LT() #compare(#0(),#s(z0)) = [0] >= [0] = #LT() #compare(#neg(z0),#0()) = [0] >= [0] = #LT() #compare(#neg(z0),#neg(z1)) = [0] >= [0] = #compare(z1,z0) #compare(#neg(z0),#pos(z1)) = [0] >= [0] = #LT() #compare(#pos(z0),#0()) = [0] >= [0] = #GT() #compare(#pos(z0),#neg(z1)) = [0] >= [0] = #GT() #compare(#pos(z0),#pos(z1)) = [0] >= [0] = #compare(z0,z1) #compare(#s(z0),#0()) = [0] >= [0] = #GT() #compare(#s(z0),#s(z1)) = [0] >= [0] = #compare(z0,z1) #greater(z0,z1) = [0] >= [0] = #ckgt(#compare(z0,z1)) append(z0,z1) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = append#1(z0,z1) append#1(::(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = ::(z0,append(z1,z2)) append#1(nil(),z0) = [1] z0 + [0] >= [1] z0 + [0] = z0 appendD(z0,z1) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = appendD#1(z0,z1) appendD#1(::(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = ::(z0,appendD(z1,z2)) appendD#1(nil(),z0) = [1] z0 + [0] >= [1] z0 + [0] = z0 quicksort(z0) = [1] z0 + [0] >= [1] z0 + [0] = quicksort#1(z0) quicksort#1(::(z0,z1)) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = quicksort#2(split(z0,z1),z0) quicksort#1(nil()) = [0] >= [0] = nil() quicksort#2(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = append(quicksort(z0),::(z2,quicksort(z1))) quicksortD(z0) = [1] z0 + [0] >= [1] z0 + [0] = quicksortD#1(z0) quicksortD#1(::(z0,z1)) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = quicksortD#2(splitD(z0,z1),z0) quicksortD#1(nil()) = [0] >= [0] = nil() quicksortD#2(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = appendD(quicksortD(z0),::(z2,quicksortD(z1))) split(z0,z1) = [1] z1 + [0] >= [1] z1 + [0] = split#1(z1,z0) split#1(::(z0,z1),z2) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = split#2(split(z2,z1),z2,z0) split#1(nil(),z0) = [0] >= [0] = tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) = [1] z0 + [1] z1 + [1] z3 + [0] >= [1] z0 + [1] z1 + [1] z3 + [0] = split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = tuple#2(z0,::(z2,z1)) splitD(z0,z1) = [1] z1 + [0] >= [1] z1 + [0] = splitD#1(z1,z0) splitD#1(::(z0,z1),z2) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) = [0] >= [0] = tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) = [1] z0 + [1] z1 + [1] z3 + [0] >= [1] z0 + [1] z1 + [1] z3 + [0] = splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) = [1] z0 + [1] z1 + [1] z2 + [0] >= [1] z0 + [1] z1 + [1] z2 + [0] = tuple#2(z0,::(z2,z1)) testList(z0) = [2] z0 + [4] >= [0] = ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))),::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) Further, it can be verified that all rules not oriented are covered by the weightgap condition. ** Step 8.b:3: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: APPEND#(z0,z1) -> c_6(APPEND#1#(z0,z1)) APPENDD#(z0,z1) -> c_9(APPENDD#1#(z0,z1)) SPLIT#(z0,z1) -> c_22(SPLIT#1#(z1,z0)) SPLITD#(z0,z1) -> c_28(SPLITD#1#(z1,z0)) - Weak DPs: APPEND#1#(::(z0,z1),z2) -> c_7(APPEND#(z1,z2)) APPENDD#1#(::(z0,z1),z2) -> c_10(APPENDD#(z1,z2)) QUICKSORT#(z0) -> QUICKSORT#1#(z0) QUICKSORT#1#(::(z0,z1)) -> QUICKSORT#2#(split(z0,z1),z0) QUICKSORT#1#(::(z0,z1)) -> SPLIT#(z0,z1) QUICKSORT#2#(tuple#2(z0,z1),z2) -> APPEND#(quicksort(z0),::(z2,quicksort(z1))) QUICKSORT#2#(tuple#2(z0,z1),z2) -> QUICKSORT#(z0) QUICKSORT#2#(tuple#2(z0,z1),z2) -> QUICKSORT#(z1) QUICKSORTD#(z0) -> QUICKSORTD#1#(z0) QUICKSORTD#1#(::(z0,z1)) -> QUICKSORTD#2#(splitD(z0,z1),z0) QUICKSORTD#1#(::(z0,z1)) -> SPLITD#(z0,z1) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> QUICKSORTD#(z0) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> QUICKSORTD#(z1) SPLIT#1#(::(z0,z1),z2) -> c_23(SPLIT#(z2,z1)) SPLITD#1#(::(z0,z1),z2) -> c_29(SPLITD#(z2,z1)) TESTQUICKSORT#(z0) -> QUICKSORT#(testList(#unit())) TESTQUICKSORT2#(z0) -> QUICKSORT#(testList(#unit())) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(z0)) -> #pos(z0) #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(z0)) -> #GT() #compare(#0(),#pos(z0)) -> #LT() #compare(#0(),#s(z0)) -> #LT() #compare(#neg(z0),#0()) -> #LT() #compare(#neg(z0),#neg(z1)) -> #compare(z1,z0) #compare(#neg(z0),#pos(z1)) -> #LT() #compare(#pos(z0),#0()) -> #GT() #compare(#pos(z0),#neg(z1)) -> #GT() #compare(#pos(z0),#pos(z1)) -> #compare(z0,z1) #compare(#s(z0),#0()) -> #GT() #compare(#s(z0),#s(z1)) -> #compare(z0,z1) #greater(z0,z1) -> #ckgt(#compare(z0,z1)) append(z0,z1) -> append#1(z0,z1) append#1(::(z0,z1),z2) -> ::(z0,append(z1,z2)) append#1(nil(),z0) -> z0 appendD(z0,z1) -> appendD#1(z0,z1) appendD#1(::(z0,z1),z2) -> ::(z0,appendD(z1,z2)) appendD#1(nil(),z0) -> z0 quicksort(z0) -> quicksort#1(z0) quicksort#1(::(z0,z1)) -> quicksort#2(split(z0,z1),z0) quicksort#1(nil()) -> nil() quicksort#2(tuple#2(z0,z1),z2) -> append(quicksort(z0),::(z2,quicksort(z1))) quicksortD(z0) -> quicksortD#1(z0) quicksortD#1(::(z0,z1)) -> quicksortD#2(splitD(z0,z1),z0) quicksortD#1(nil()) -> nil() quicksortD#2(tuple#2(z0,z1),z2) -> appendD(quicksortD(z0),::(z2,quicksortD(z1))) split(z0,z1) -> split#1(z1,z0) split#1(::(z0,z1),z2) -> split#2(split(z2,z1),z2,z0) split#1(nil(),z0) -> tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) -> split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) splitD(z0,z1) -> splitD#1(z1,z0) splitD#1(::(z0,z1),z2) -> splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) -> tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) -> splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) testList(z0) -> ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) - Signature: {#ABS/1,#CKGT/1,#COMPARE/2,#GREATER/2,#abs/1,#ckgt/1,#compare/2,#greater/2,APPEND/2,APPEND#1/2,APPENDD/2 ,APPENDD#1/2,QUICKSORT/1,QUICKSORT#1/1,QUICKSORT#2/2,QUICKSORTD/1,QUICKSORTD#1/1,QUICKSORTD#2/2,SPLIT/2 ,SPLIT#1/2,SPLIT#2/3,SPLIT#3/4,SPLITD/2,SPLITD#1/2,SPLITD#2/3,SPLITD#3/4,TESTLIST/1,TESTQUICKSORT/1 ,TESTQUICKSORT2/1,append/2,append#1/2,appendD/2,appendD#1/2,quicksort/1,quicksort#1/1,quicksort#2/2 ,quicksortD/1,quicksortD#1/1,quicksortD#2/2,split/2,split#1/2,split#2/3,split#3/4,splitD/2,splitD#1/2 ,splitD#2/3,splitD#3/4,testList/1,testQuicksort/1,testQuicksort2/1,#ABS#/1,#CKGT#/1,#COMPARE#/2,#GREATER#/2 ,#abs#/1,#ckgt#/1,#compare#/2,#greater#/2,APPEND#/2,APPEND#1#/2,APPENDD#/2,APPENDD#1#/2,QUICKSORT#/1 ,QUICKSORT#1#/1,QUICKSORT#2#/2,QUICKSORTD#/1,QUICKSORTD#1#/1,QUICKSORTD#2#/2,SPLIT#/2,SPLIT#1#/2,SPLIT#2#/3 ,SPLIT#3#/4,SPLITD#/2,SPLITD#1#/2,SPLITD#2#/3,SPLITD#3#/4,TESTLIST#/1,TESTQUICKSORT#/1,TESTQUICKSORT2#/1 ,append#/2,append#1#/2,appendD#/2,appendD#1#/2,quicksort#/1,quicksort#1#/1,quicksort#2#/2,quicksortD#/1 ,quicksortD#1#/1,quicksortD#2#/2,split#/2,split#1#/2,split#2#/3,split#3#/4,splitD#/2,splitD#1#/2,splitD#2#/3 ,splitD#3#/4,testList#/1,testQuicksort#/1,testQuicksort2#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,#unit/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/0,c16/0,c17/0,c18/0,c19/2,c2/0 ,c20/1,c21/1,c22/0,c23/1,c24/1,c25/0,c26/1,c27/2,c28/0,c29/2,c3/0,c30/2,c31/1,c32/2,c33/0,c34/2,c35/2,c36/1 ,c37/2,c38/0,c39/2,c4/0,c40/0,c41/0,c42/1,c43/2,c44/0,c45/2,c46/0,c47/0,c48/1,c49/1,c5/0,c50/1,c51/1,c52/1 ,c53/1,c54/1,c55/1,c56/1,c57/1,c58/2,c59/2,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/3 ,c_6/1,c_7/1,c_8/0,c_9/1,c_10/1,c_11/0,c_12/1,c_13/2,c_14/0,c_15/2,c_16/2,c_17/1,c_18/2,c_19/0,c_20/2,c_21/2 ,c_22/1,c_23/1,c_24/0,c_25/3,c_26/0,c_27/0,c_28/1,c_29/1,c_30/0,c_31/3,c_32/0,c_33/0,c_34/1,c_35/1,c_36/1 ,c_37/1,c_38/1,c_39/1,c_40/1,c_41/1,c_42/1,c_43/1,c_44/1,c_45/1,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0 ,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0,c_58/1,c_59/0,c_60/1,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0 ,c_67/0,c_68/0,c_69/0,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/0,c_76/0,c_77/1,c_78/0,c_79/1,c_80/2,c_81/1 ,c_82/1,c_83/0,c_84/1,c_85/1,c_86/0,c_87/1,c_88/2,c_89/0,c_90/3,c_91/1,c_92/2,c_93/0,c_94/3,c_95/1,c_96/2 ,c_97/0,c_98/2,c_99/0,c_100/0,c_101/1,c_102/2,c_103/0,c_104/2,c_105/0,c_106/0,c_107/10,c_108/2,c_109/2} - Obligation: innermost runtime complexity wrt. defined symbols {#ABS#,#CKGT#,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare# ,#greater#,APPEND#,APPEND#1#,APPENDD#,APPENDD#1#,QUICKSORT#,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD# ,QUICKSORTD#1#,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2#,SPLIT#3#,SPLITD#,SPLITD#1#,SPLITD#2#,SPLITD#3# ,TESTLIST#,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1#,appendD#,appendD#1#,quicksort#,quicksort#1# ,quicksort#2#,quicksortD#,quicksortD#1#,quicksortD#2#,split#,split#1#,split#2#,split#3#,splitD#,splitD#1# ,splitD#2#,splitD#3#,testList#,testQuicksort#,testQuicksort2#} and constructors {#0,#EQ,#GT,#LT,#false,#neg ,#pos,#s,#true,#unit,::,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,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52 ,c53,c54,c55,c56,c57,c58,c59,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_6) = {1}, uargs(c_7) = {1}, uargs(c_9) = {1}, uargs(c_10) = {1}, uargs(c_22) = {1}, uargs(c_23) = {1}, uargs(c_28) = {1}, uargs(c_29) = {1} Following symbols are considered usable: {appendD,appendD#1,quicksortD,quicksortD#1,quicksortD#2,splitD,splitD#1,splitD#2,splitD#3,#ABS#,#CKGT# ,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare#,#greater#,APPEND#,APPEND#1#,APPENDD#,APPENDD#1#,QUICKSORT# ,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD#,QUICKSORTD#1#,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2#,SPLIT#3#,SPLITD# ,SPLITD#1#,SPLITD#2#,SPLITD#3#,TESTLIST#,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1#,appendD# ,appendD#1#,quicksort#,quicksort#1#,quicksort#2#,quicksortD#,quicksortD#1#,quicksortD#2#,split#,split#1# ,split#2#,split#3#,splitD#,splitD#1#,splitD#2#,splitD#3#,testList#,testQuicksort#,testQuicksort2#} TcT has computed the following interpretation: p(#0) = [0] p(#ABS) = [0] p(#CKGT) = [1] x1 + [0] p(#COMPARE) = [1] x1 + [4] x2 + [1] p(#EQ) = [0] p(#GREATER) = [2] x1 + [1] x2 + [1] p(#GT) = [1] p(#LT) = [0] p(#abs) = [2] x1 + [0] p(#ckgt) = [2] p(#compare) = [0] p(#false) = [0] p(#greater) = [1] x2 + [0] p(#neg) = [2] p(#pos) = [4] p(#s) = [6] p(#true) = [0] p(#unit) = [2] p(::) = [1] x2 + [1] p(APPEND) = [1] x1 + [1] x2 + [2] p(APPEND#1) = [1] x1 + [2] x2 + [0] p(APPENDD) = [1] x1 + [2] p(APPENDD#1) = [4] x2 + [4] p(QUICKSORT) = [1] x1 + [1] p(QUICKSORT#1) = [0] p(QUICKSORT#2) = [1] x2 + [1] p(QUICKSORTD) = [1] p(QUICKSORTD#1) = [0] p(QUICKSORTD#2) = [0] p(SPLIT) = [4] x1 + [4] x2 + [0] p(SPLIT#1) = [4] x1 + [1] p(SPLIT#2) = [1] x2 + [4] x3 + [2] p(SPLIT#3) = [2] x4 + [0] p(SPLITD) = [2] x1 + [1] p(SPLITD#1) = [1] x2 + [1] p(SPLITD#2) = [1] x1 + [0] p(SPLITD#3) = [1] p(TESTLIST) = [1] x1 + [0] p(TESTQUICKSORT) = [1] x1 + [1] p(TESTQUICKSORT2) = [0] p(append) = [1] x1 + [7] p(append#1) = [0] p(appendD) = [1] x1 + [1] x2 + [0] p(appendD#1) = [1] x1 + [1] x2 + [0] p(c) = [1] p(c1) = [2] p(c10) = [1] p(c11) = [2] p(c12) = [1] x1 + [0] p(c13) = [0] p(c14) = [1] p(c15) = [1] p(c16) = [4] p(c17) = [2] p(c18) = [0] p(c19) = [2] p(c2) = [0] p(c20) = [1] p(c21) = [0] p(c22) = [1] p(c23) = [1] x1 + [2] p(c24) = [4] p(c25) = [1] p(c26) = [1] p(c27) = [1] x2 + [0] p(c28) = [1] p(c29) = [4] p(c3) = [1] p(c30) = [1] x1 + [2] p(c31) = [0] p(c32) = [0] p(c33) = [0] p(c34) = [0] p(c35) = [1] p(c36) = [1] x1 + [0] p(c37) = [1] x1 + [4] p(c38) = [0] p(c39) = [1] x1 + [0] p(c4) = [4] p(c40) = [0] p(c41) = [1] p(c42) = [0] p(c43) = [2] p(c44) = [0] p(c45) = [1] x2 + [0] p(c46) = [0] p(c47) = [0] p(c48) = [1] p(c49) = [1] x1 + [0] p(c5) = [1] p(c50) = [4] p(c51) = [1] x1 + [0] p(c52) = [0] p(c53) = [1] p(c54) = [1] p(c55) = [0] p(c56) = [0] p(c57) = [1] x1 + [2] p(c58) = [1] x2 + [1] p(c59) = [1] x2 + [2] p(c6) = [4] p(c7) = [1] p(c8) = [0] p(c9) = [0] p(nil) = [0] p(quicksort) = [1] p(quicksort#1) = [2] p(quicksort#2) = [1] x1 + [0] p(quicksortD) = [1] x1 + [0] p(quicksortD#1) = [1] x1 + [0] p(quicksortD#2) = [1] x1 + [1] p(split) = [3] x1 + [6] x2 + [0] p(split#1) = [0] p(split#2) = [2] x1 + [0] p(split#3) = [6] x4 + [1] p(splitD) = [1] x2 + [0] p(splitD#1) = [1] x1 + [0] p(splitD#2) = [1] x1 + [1] p(splitD#3) = [1] x2 + [1] x3 + [1] p(testList) = [4] x1 + [3] p(testQuicksort) = [1] p(testQuicksort2) = [1] x1 + [2] p(tuple#2) = [1] x1 + [1] x2 + [0] p(#ABS#) = [2] x1 + [1] p(#CKGT#) = [1] p(#COMPARE#) = [1] p(#GREATER#) = [0] p(#abs#) = [1] p(#ckgt#) = [1] x1 + [1] p(#compare#) = [1] x1 + [1] p(#greater#) = [1] x2 + [0] p(APPEND#) = [0] p(APPEND#1#) = [0] p(APPENDD#) = [4] x1 + [2] p(APPENDD#1#) = [4] x1 + [0] p(QUICKSORT#) = [0] p(QUICKSORT#1#) = [0] p(QUICKSORT#2#) = [0] p(QUICKSORTD#) = [5] x1 + [2] p(QUICKSORTD#1#) = [5] x1 + [2] p(QUICKSORTD#2#) = [5] x1 + [2] p(SPLIT#) = [0] p(SPLIT#1#) = [0] p(SPLIT#2#) = [1] x1 + [4] x2 + [0] p(SPLIT#3#) = [1] x2 + [1] p(SPLITD#) = [0] p(SPLITD#1#) = [0] p(SPLITD#2#) = [1] x1 + [4] x2 + [0] p(SPLITD#3#) = [2] x1 + [1] x2 + [0] p(TESTLIST#) = [2] x1 + [0] p(TESTQUICKSORT#) = [4] x1 + [0] p(TESTQUICKSORT2#) = [4] x1 + [4] p(append#) = [4] x2 + [2] p(append#1#) = [1] x2 + [1] p(appendD#) = [4] x1 + [4] p(appendD#1#) = [2] x2 + [1] p(quicksort#) = [4] x1 + [1] p(quicksort#1#) = [0] p(quicksort#2#) = [1] p(quicksortD#) = [0] p(quicksortD#1#) = [2] p(quicksortD#2#) = [1] x2 + [0] p(split#) = [1] x1 + [1] x2 + [1] p(split#1#) = [1] x1 + [0] p(split#2#) = [0] p(split#3#) = [1] x2 + [2] x3 + [1] x4 + [0] p(splitD#) = [1] p(splitD#1#) = [1] x1 + [1] p(splitD#2#) = [1] x3 + [0] p(splitD#3#) = [1] x1 + [0] p(testList#) = [4] p(testQuicksort#) = [4] p(testQuicksort2#) = [1] x1 + [2] p(c_1) = [1] p(c_2) = [1] p(c_3) = [1] p(c_4) = [2] p(c_5) = [1] x1 + [1] x2 + [2] p(c_6) = [1] x1 + [0] p(c_7) = [1] x1 + [0] p(c_8) = [2] p(c_9) = [1] x1 + [0] p(c_10) = [1] x1 + [1] p(c_11) = [2] p(c_12) = [2] x1 + [0] p(c_13) = [1] x1 + [4] x2 + [4] p(c_14) = [1] p(c_15) = [0] p(c_16) = [1] p(c_17) = [0] p(c_18) = [2] p(c_19) = [0] p(c_20) = [0] p(c_21) = [4] x1 + [2] x2 + [1] p(c_22) = [4] x1 + [0] p(c_23) = [2] x1 + [0] p(c_24) = [1] p(c_25) = [4] x2 + [2] x3 + [0] p(c_26) = [1] p(c_27) = [4] p(c_28) = [4] x1 + [0] p(c_29) = [1] x1 + [0] p(c_30) = [0] p(c_31) = [0] p(c_32) = [1] p(c_33) = [1] p(c_34) = [1] p(c_35) = [0] p(c_36) = [0] p(c_37) = [2] x1 + [4] p(c_38) = [1] x1 + [4] p(c_39) = [4] x1 + [1] p(c_40) = [4] p(c_41) = [1] x1 + [1] p(c_42) = [1] p(c_43) = [1] x1 + [4] p(c_44) = [1] x1 + [0] p(c_45) = [4] x1 + [1] p(c_46) = [0] p(c_47) = [0] p(c_48) = [1] p(c_49) = [1] p(c_50) = [0] p(c_51) = [2] p(c_52) = [1] p(c_53) = [1] p(c_54) = [2] x1 + [2] p(c_55) = [1] p(c_56) = [1] p(c_57) = [0] p(c_58) = [1] x1 + [1] p(c_59) = [1] p(c_60) = [0] p(c_61) = [0] p(c_62) = [4] p(c_63) = [2] p(c_64) = [0] p(c_65) = [4] p(c_66) = [0] p(c_67) = [2] p(c_68) = [0] p(c_69) = [0] p(c_70) = [4] p(c_71) = [0] p(c_72) = [1] p(c_73) = [0] p(c_74) = [0] p(c_75) = [4] p(c_76) = [1] p(c_77) = [2] p(c_78) = [2] p(c_79) = [1] x1 + [1] p(c_80) = [1] x1 + [1] x2 + [1] p(c_81) = [2] p(c_82) = [2] p(c_83) = [0] p(c_84) = [1] p(c_85) = [0] p(c_86) = [2] p(c_87) = [4] x1 + [4] p(c_88) = [2] p(c_89) = [1] p(c_90) = [0] p(c_91) = [0] p(c_92) = [2] x2 + [0] p(c_93) = [1] p(c_94) = [0] p(c_95) = [4] p(c_96) = [1] x1 + [1] p(c_97) = [4] p(c_98) = [1] x1 + [1] x2 + [0] p(c_99) = [1] p(c_100) = [1] p(c_101) = [0] p(c_102) = [2] x2 + [2] p(c_103) = [0] p(c_104) = [1] x2 + [4] p(c_105) = [4] p(c_106) = [0] p(c_107) = [1] x2 + [1] p(c_108) = [1] x1 + [4] x2 + [1] p(c_109) = [2] x1 + [1] x2 + [2] Following rules are strictly oriented: APPENDD#(z0,z1) = [4] z0 + [2] > [4] z0 + [0] = c_9(APPENDD#1#(z0,z1)) Following rules are (at-least) weakly oriented: APPEND#(z0,z1) = [0] >= [0] = c_6(APPEND#1#(z0,z1)) APPEND#1#(::(z0,z1),z2) = [0] >= [0] = c_7(APPEND#(z1,z2)) APPENDD#1#(::(z0,z1),z2) = [4] z1 + [4] >= [4] z1 + [3] = c_10(APPENDD#(z1,z2)) QUICKSORT#(z0) = [0] >= [0] = QUICKSORT#1#(z0) QUICKSORT#1#(::(z0,z1)) = [0] >= [0] = QUICKSORT#2#(split(z0,z1),z0) QUICKSORT#1#(::(z0,z1)) = [0] >= [0] = SPLIT#(z0,z1) QUICKSORT#2#(tuple#2(z0,z1),z2) = [0] >= [0] = APPEND#(quicksort(z0),::(z2,quicksort(z1))) QUICKSORT#2#(tuple#2(z0,z1),z2) = [0] >= [0] = QUICKSORT#(z0) QUICKSORT#2#(tuple#2(z0,z1),z2) = [0] >= [0] = QUICKSORT#(z1) QUICKSORTD#(z0) = [5] z0 + [2] >= [5] z0 + [2] = QUICKSORTD#1#(z0) QUICKSORTD#1#(::(z0,z1)) = [5] z1 + [7] >= [5] z1 + [2] = QUICKSORTD#2#(splitD(z0,z1),z0) QUICKSORTD#1#(::(z0,z1)) = [5] z1 + [7] >= [0] = SPLITD#(z0,z1) QUICKSORTD#2#(tuple#2(z0,z1),z2) = [5] z0 + [5] z1 + [2] >= [4] z0 + [2] = APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) QUICKSORTD#2#(tuple#2(z0,z1),z2) = [5] z0 + [5] z1 + [2] >= [5] z0 + [2] = QUICKSORTD#(z0) QUICKSORTD#2#(tuple#2(z0,z1),z2) = [5] z0 + [5] z1 + [2] >= [5] z1 + [2] = QUICKSORTD#(z1) SPLIT#(z0,z1) = [0] >= [0] = c_22(SPLIT#1#(z1,z0)) SPLIT#1#(::(z0,z1),z2) = [0] >= [0] = c_23(SPLIT#(z2,z1)) SPLITD#(z0,z1) = [0] >= [0] = c_28(SPLITD#1#(z1,z0)) SPLITD#1#(::(z0,z1),z2) = [0] >= [0] = c_29(SPLITD#(z2,z1)) TESTQUICKSORT#(z0) = [4] z0 + [0] >= [0] = QUICKSORT#(testList(#unit())) TESTQUICKSORT2#(z0) = [4] z0 + [4] >= [0] = QUICKSORT#(testList(#unit())) appendD(z0,z1) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = appendD#1(z0,z1) appendD#1(::(z0,z1),z2) = [1] z1 + [1] z2 + [1] >= [1] z1 + [1] z2 + [1] = ::(z0,appendD(z1,z2)) appendD#1(nil(),z0) = [1] z0 + [0] >= [1] z0 + [0] = z0 quicksortD(z0) = [1] z0 + [0] >= [1] z0 + [0] = quicksortD#1(z0) quicksortD#1(::(z0,z1)) = [1] z1 + [1] >= [1] z1 + [1] = quicksortD#2(splitD(z0,z1),z0) quicksortD#1(nil()) = [0] >= [0] = nil() quicksortD#2(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [1] >= [1] z0 + [1] z1 + [1] = appendD(quicksortD(z0),::(z2,quicksortD(z1))) splitD(z0,z1) = [1] z1 + [0] >= [1] z1 + [0] = splitD#1(z1,z0) splitD#1(::(z0,z1),z2) = [1] z1 + [1] >= [1] z1 + [1] = splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) = [0] >= [0] = tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) = [1] z0 + [1] z1 + [1] >= [1] z0 + [1] z1 + [1] = splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) = [1] z0 + [1] z1 + [1] >= [1] z0 + [1] z1 + [1] = tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) = [1] z0 + [1] z1 + [1] >= [1] z0 + [1] z1 + [1] = tuple#2(z0,::(z2,z1)) ** Step 8.b:4: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: APPEND#(z0,z1) -> c_6(APPEND#1#(z0,z1)) SPLIT#(z0,z1) -> c_22(SPLIT#1#(z1,z0)) SPLITD#(z0,z1) -> c_28(SPLITD#1#(z1,z0)) - Weak DPs: APPEND#1#(::(z0,z1),z2) -> c_7(APPEND#(z1,z2)) APPENDD#(z0,z1) -> c_9(APPENDD#1#(z0,z1)) APPENDD#1#(::(z0,z1),z2) -> c_10(APPENDD#(z1,z2)) QUICKSORT#(z0) -> QUICKSORT#1#(z0) QUICKSORT#1#(::(z0,z1)) -> QUICKSORT#2#(split(z0,z1),z0) QUICKSORT#1#(::(z0,z1)) -> SPLIT#(z0,z1) QUICKSORT#2#(tuple#2(z0,z1),z2) -> APPEND#(quicksort(z0),::(z2,quicksort(z1))) QUICKSORT#2#(tuple#2(z0,z1),z2) -> QUICKSORT#(z0) QUICKSORT#2#(tuple#2(z0,z1),z2) -> QUICKSORT#(z1) QUICKSORTD#(z0) -> QUICKSORTD#1#(z0) QUICKSORTD#1#(::(z0,z1)) -> QUICKSORTD#2#(splitD(z0,z1),z0) QUICKSORTD#1#(::(z0,z1)) -> SPLITD#(z0,z1) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> QUICKSORTD#(z0) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> QUICKSORTD#(z1) SPLIT#1#(::(z0,z1),z2) -> c_23(SPLIT#(z2,z1)) SPLITD#1#(::(z0,z1),z2) -> c_29(SPLITD#(z2,z1)) TESTQUICKSORT#(z0) -> QUICKSORT#(testList(#unit())) TESTQUICKSORT2#(z0) -> QUICKSORT#(testList(#unit())) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(z0)) -> #pos(z0) #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(z0)) -> #GT() #compare(#0(),#pos(z0)) -> #LT() #compare(#0(),#s(z0)) -> #LT() #compare(#neg(z0),#0()) -> #LT() #compare(#neg(z0),#neg(z1)) -> #compare(z1,z0) #compare(#neg(z0),#pos(z1)) -> #LT() #compare(#pos(z0),#0()) -> #GT() #compare(#pos(z0),#neg(z1)) -> #GT() #compare(#pos(z0),#pos(z1)) -> #compare(z0,z1) #compare(#s(z0),#0()) -> #GT() #compare(#s(z0),#s(z1)) -> #compare(z0,z1) #greater(z0,z1) -> #ckgt(#compare(z0,z1)) append(z0,z1) -> append#1(z0,z1) append#1(::(z0,z1),z2) -> ::(z0,append(z1,z2)) append#1(nil(),z0) -> z0 appendD(z0,z1) -> appendD#1(z0,z1) appendD#1(::(z0,z1),z2) -> ::(z0,appendD(z1,z2)) appendD#1(nil(),z0) -> z0 quicksort(z0) -> quicksort#1(z0) quicksort#1(::(z0,z1)) -> quicksort#2(split(z0,z1),z0) quicksort#1(nil()) -> nil() quicksort#2(tuple#2(z0,z1),z2) -> append(quicksort(z0),::(z2,quicksort(z1))) quicksortD(z0) -> quicksortD#1(z0) quicksortD#1(::(z0,z1)) -> quicksortD#2(splitD(z0,z1),z0) quicksortD#1(nil()) -> nil() quicksortD#2(tuple#2(z0,z1),z2) -> appendD(quicksortD(z0),::(z2,quicksortD(z1))) split(z0,z1) -> split#1(z1,z0) split#1(::(z0,z1),z2) -> split#2(split(z2,z1),z2,z0) split#1(nil(),z0) -> tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) -> split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) splitD(z0,z1) -> splitD#1(z1,z0) splitD#1(::(z0,z1),z2) -> splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) -> tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) -> splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) testList(z0) -> ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) - Signature: {#ABS/1,#CKGT/1,#COMPARE/2,#GREATER/2,#abs/1,#ckgt/1,#compare/2,#greater/2,APPEND/2,APPEND#1/2,APPENDD/2 ,APPENDD#1/2,QUICKSORT/1,QUICKSORT#1/1,QUICKSORT#2/2,QUICKSORTD/1,QUICKSORTD#1/1,QUICKSORTD#2/2,SPLIT/2 ,SPLIT#1/2,SPLIT#2/3,SPLIT#3/4,SPLITD/2,SPLITD#1/2,SPLITD#2/3,SPLITD#3/4,TESTLIST/1,TESTQUICKSORT/1 ,TESTQUICKSORT2/1,append/2,append#1/2,appendD/2,appendD#1/2,quicksort/1,quicksort#1/1,quicksort#2/2 ,quicksortD/1,quicksortD#1/1,quicksortD#2/2,split/2,split#1/2,split#2/3,split#3/4,splitD/2,splitD#1/2 ,splitD#2/3,splitD#3/4,testList/1,testQuicksort/1,testQuicksort2/1,#ABS#/1,#CKGT#/1,#COMPARE#/2,#GREATER#/2 ,#abs#/1,#ckgt#/1,#compare#/2,#greater#/2,APPEND#/2,APPEND#1#/2,APPENDD#/2,APPENDD#1#/2,QUICKSORT#/1 ,QUICKSORT#1#/1,QUICKSORT#2#/2,QUICKSORTD#/1,QUICKSORTD#1#/1,QUICKSORTD#2#/2,SPLIT#/2,SPLIT#1#/2,SPLIT#2#/3 ,SPLIT#3#/4,SPLITD#/2,SPLITD#1#/2,SPLITD#2#/3,SPLITD#3#/4,TESTLIST#/1,TESTQUICKSORT#/1,TESTQUICKSORT2#/1 ,append#/2,append#1#/2,appendD#/2,appendD#1#/2,quicksort#/1,quicksort#1#/1,quicksort#2#/2,quicksortD#/1 ,quicksortD#1#/1,quicksortD#2#/2,split#/2,split#1#/2,split#2#/3,split#3#/4,splitD#/2,splitD#1#/2,splitD#2#/3 ,splitD#3#/4,testList#/1,testQuicksort#/1,testQuicksort2#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,#unit/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/0,c16/0,c17/0,c18/0,c19/2,c2/0 ,c20/1,c21/1,c22/0,c23/1,c24/1,c25/0,c26/1,c27/2,c28/0,c29/2,c3/0,c30/2,c31/1,c32/2,c33/0,c34/2,c35/2,c36/1 ,c37/2,c38/0,c39/2,c4/0,c40/0,c41/0,c42/1,c43/2,c44/0,c45/2,c46/0,c47/0,c48/1,c49/1,c5/0,c50/1,c51/1,c52/1 ,c53/1,c54/1,c55/1,c56/1,c57/1,c58/2,c59/2,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/3 ,c_6/1,c_7/1,c_8/0,c_9/1,c_10/1,c_11/0,c_12/1,c_13/2,c_14/0,c_15/2,c_16/2,c_17/1,c_18/2,c_19/0,c_20/2,c_21/2 ,c_22/1,c_23/1,c_24/0,c_25/3,c_26/0,c_27/0,c_28/1,c_29/1,c_30/0,c_31/3,c_32/0,c_33/0,c_34/1,c_35/1,c_36/1 ,c_37/1,c_38/1,c_39/1,c_40/1,c_41/1,c_42/1,c_43/1,c_44/1,c_45/1,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0 ,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0,c_58/1,c_59/0,c_60/1,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0 ,c_67/0,c_68/0,c_69/0,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/0,c_76/0,c_77/1,c_78/0,c_79/1,c_80/2,c_81/1 ,c_82/1,c_83/0,c_84/1,c_85/1,c_86/0,c_87/1,c_88/2,c_89/0,c_90/3,c_91/1,c_92/2,c_93/0,c_94/3,c_95/1,c_96/2 ,c_97/0,c_98/2,c_99/0,c_100/0,c_101/1,c_102/2,c_103/0,c_104/2,c_105/0,c_106/0,c_107/10,c_108/2,c_109/2} - Obligation: innermost runtime complexity wrt. defined symbols {#ABS#,#CKGT#,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare# ,#greater#,APPEND#,APPEND#1#,APPENDD#,APPENDD#1#,QUICKSORT#,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD# ,QUICKSORTD#1#,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2#,SPLIT#3#,SPLITD#,SPLITD#1#,SPLITD#2#,SPLITD#3# ,TESTLIST#,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1#,appendD#,appendD#1#,quicksort#,quicksort#1# ,quicksort#2#,quicksortD#,quicksortD#1#,quicksortD#2#,split#,split#1#,split#2#,split#3#,splitD#,splitD#1# ,splitD#2#,splitD#3#,testList#,testQuicksort#,testQuicksort2#} and constructors {#0,#EQ,#GT,#LT,#false,#neg ,#pos,#s,#true,#unit,::,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,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52 ,c53,c54,c55,c56,c57,c58,c59,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_6) = {1}, uargs(c_7) = {1}, uargs(c_9) = {1}, uargs(c_10) = {1}, uargs(c_22) = {1}, uargs(c_23) = {1}, uargs(c_28) = {1}, uargs(c_29) = {1} Following symbols are considered usable: {splitD,splitD#1,splitD#2,splitD#3,#ABS#,#CKGT#,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare#,#greater# ,APPEND#,APPEND#1#,APPENDD#,APPENDD#1#,QUICKSORT#,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD#,QUICKSORTD#1# ,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2#,SPLIT#3#,SPLITD#,SPLITD#1#,SPLITD#2#,SPLITD#3#,TESTLIST# ,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1#,appendD#,appendD#1#,quicksort#,quicksort#1#,quicksort#2# ,quicksortD#,quicksortD#1#,quicksortD#2#,split#,split#1#,split#2#,split#3#,splitD#,splitD#1#,splitD#2# ,splitD#3#,testList#,testQuicksort#,testQuicksort2#} TcT has computed the following interpretation: p(#0) = [0] p(#ABS) = [2] x1 + [1] p(#CKGT) = [0] p(#COMPARE) = [1] p(#EQ) = [0] p(#GREATER) = [1] p(#GT) = [4] p(#LT) = [0] p(#abs) = [2] x1 + [4] p(#ckgt) = [0] p(#compare) = [0] p(#false) = [0] p(#greater) = [2] x1 + [1] x2 + [2] p(#neg) = [4] p(#pos) = [1] p(#s) = [0] p(#true) = [0] p(#unit) = [0] p(::) = [1] x2 + [1] p(APPEND) = [1] x2 + [4] p(APPEND#1) = [1] x1 + [0] p(APPENDD) = [1] x1 + [1] p(APPENDD#1) = [2] x1 + [4] x2 + [1] p(QUICKSORT) = [1] x1 + [2] p(QUICKSORT#1) = [1] p(QUICKSORT#2) = [1] x1 + [1] p(QUICKSORTD) = [4] x1 + [1] p(QUICKSORTD#1) = [2] x1 + [1] p(QUICKSORTD#2) = [0] p(SPLIT) = [4] x1 + [1] p(SPLIT#1) = [1] x1 + [1] p(SPLIT#2) = [1] x2 + [1] x3 + [2] p(SPLIT#3) = [1] x1 + [4] x4 + [1] p(SPLITD) = [1] x2 + [0] p(SPLITD#1) = [0] p(SPLITD#2) = [4] x1 + [4] x2 + [4] p(SPLITD#3) = [1] x2 + [2] x4 + [0] p(TESTLIST) = [1] x1 + [1] p(TESTQUICKSORT) = [1] x1 + [4] p(TESTQUICKSORT2) = [4] x1 + [1] p(append) = [2] x2 + [1] p(append#1) = [1] x1 + [0] p(appendD) = [1] x1 + [1] p(appendD#1) = [3] x1 + [1] p(c) = [0] p(c1) = [4] p(c10) = [0] p(c11) = [1] p(c12) = [0] p(c13) = [0] p(c14) = [0] p(c15) = [0] p(c16) = [0] p(c17) = [1] p(c18) = [1] p(c19) = [1] x1 + [4] p(c2) = [0] p(c20) = [1] p(c21) = [4] p(c22) = [1] p(c23) = [1] x1 + [0] p(c24) = [1] x1 + [1] p(c25) = [0] p(c26) = [1] p(c27) = [1] x2 + [0] p(c28) = [4] p(c29) = [1] x1 + [0] p(c3) = [0] p(c30) = [1] x2 + [0] p(c31) = [1] x1 + [1] p(c32) = [1] x1 + [1] x2 + [1] p(c33) = [1] p(c34) = [1] x1 + [1] p(c35) = [4] p(c36) = [1] p(c37) = [4] p(c38) = [0] p(c39) = [1] x1 + [0] p(c4) = [0] p(c40) = [0] p(c41) = [0] p(c42) = [1] p(c43) = [1] x1 + [0] p(c44) = [1] p(c45) = [0] p(c46) = [1] p(c47) = [1] p(c48) = [1] p(c49) = [1] p(c5) = [4] p(c50) = [1] p(c51) = [0] p(c52) = [1] x1 + [1] p(c53) = [1] p(c54) = [1] x1 + [1] p(c55) = [0] p(c56) = [4] p(c57) = [1] p(c58) = [0] p(c59) = [1] p(c6) = [0] p(c7) = [0] p(c8) = [0] p(c9) = [0] p(nil) = [0] p(quicksort) = [7] x1 + [3] p(quicksort#1) = [0] p(quicksort#2) = [1] x1 + [1] x2 + [0] p(quicksortD) = [0] p(quicksortD#1) = [0] p(quicksortD#2) = [1] x2 + [0] p(split) = [1] x1 + [6] x2 + [0] p(split#1) = [1] x2 + [0] p(split#2) = [4] x2 + [1] x3 + [0] p(split#3) = [4] x1 + [4] p(splitD) = [1] x2 + [1] p(splitD#1) = [1] x1 + [1] p(splitD#2) = [1] x1 + [1] p(splitD#3) = [1] x2 + [1] x3 + [1] p(testList) = [3] p(testQuicksort) = [1] p(testQuicksort2) = [0] p(tuple#2) = [1] x1 + [1] x2 + [0] p(#ABS#) = [1] x1 + [2] p(#CKGT#) = [1] p(#COMPARE#) = [2] x1 + [1] x2 + [0] p(#GREATER#) = [2] x1 + [1] x2 + [0] p(#abs#) = [2] x1 + [0] p(#ckgt#) = [2] x1 + [0] p(#compare#) = [1] x2 + [0] p(#greater#) = [1] p(APPEND#) = [0] p(APPEND#1#) = [0] p(APPENDD#) = [0] p(APPENDD#1#) = [0] p(QUICKSORT#) = [0] p(QUICKSORT#1#) = [0] p(QUICKSORT#2#) = [0] p(QUICKSORTD#) = [1] x1 + [0] p(QUICKSORTD#1#) = [1] x1 + [0] p(QUICKSORTD#2#) = [1] x1 + [0] p(SPLIT#) = [0] p(SPLIT#1#) = [0] p(SPLIT#2#) = [2] x1 + [2] x2 + [1] x3 + [0] p(SPLIT#3#) = [4] x1 + [1] x3 + [1] x4 + [0] p(SPLITD#) = [1] x2 + [1] p(SPLITD#1#) = [1] x1 + [0] p(SPLITD#2#) = [1] x1 + [2] x2 + [0] p(SPLITD#3#) = [0] p(TESTLIST#) = [1] p(TESTQUICKSORT#) = [1] x1 + [5] p(TESTQUICKSORT2#) = [1] p(append#) = [1] p(append#1#) = [1] x1 + [1] x2 + [2] p(appendD#) = [1] x2 + [0] p(appendD#1#) = [4] x2 + [1] p(quicksort#) = [1] x1 + [1] p(quicksort#1#) = [4] x1 + [2] p(quicksort#2#) = [1] x2 + [0] p(quicksortD#) = [1] x1 + [1] p(quicksortD#1#) = [1] x1 + [0] p(quicksortD#2#) = [1] x1 + [1] p(split#) = [1] p(split#1#) = [1] x1 + [2] p(split#2#) = [1] x3 + [1] p(split#3#) = [1] x1 + [1] x3 + [4] x4 + [4] p(splitD#) = [1] x1 + [1] x2 + [1] p(splitD#1#) = [1] x2 + [0] p(splitD#2#) = [0] p(splitD#3#) = [2] x2 + [0] p(testList#) = [1] x1 + [1] p(testQuicksort#) = [0] p(testQuicksort2#) = [0] p(c_1) = [0] p(c_2) = [2] p(c_3) = [1] p(c_4) = [1] p(c_5) = [1] x1 + [0] p(c_6) = [4] x1 + [0] p(c_7) = [1] x1 + [0] p(c_8) = [1] p(c_9) = [4] x1 + [0] p(c_10) = [4] x1 + [0] p(c_11) = [1] p(c_12) = [4] p(c_13) = [1] x2 + [4] p(c_14) = [2] p(c_15) = [1] x1 + [0] p(c_16) = [4] x2 + [0] p(c_17) = [4] x1 + [1] p(c_18) = [1] x2 + [0] p(c_19) = [0] p(c_20) = [4] x2 + [0] p(c_21) = [4] x1 + [4] p(c_22) = [4] x1 + [0] p(c_23) = [1] x1 + [0] p(c_24) = [1] p(c_25) = [2] x1 + [2] p(c_26) = [1] p(c_27) = [0] p(c_28) = [1] x1 + [0] p(c_29) = [1] x1 + [0] p(c_30) = [1] p(c_31) = [1] x1 + [0] p(c_32) = [1] p(c_33) = [1] p(c_34) = [2] p(c_35) = [4] x1 + [0] p(c_36) = [2] x1 + [4] p(c_37) = [1] x1 + [1] p(c_38) = [1] x1 + [0] p(c_39) = [0] p(c_40) = [0] p(c_41) = [2] p(c_42) = [1] x1 + [1] p(c_43) = [4] x1 + [1] p(c_44) = [1] x1 + [0] p(c_45) = [4] p(c_46) = [1] p(c_47) = [0] p(c_48) = [0] p(c_49) = [1] p(c_50) = [1] p(c_51) = [0] p(c_52) = [1] p(c_53) = [4] p(c_54) = [2] p(c_55) = [2] p(c_56) = [1] p(c_57) = [1] p(c_58) = [1] x1 + [1] p(c_59) = [1] p(c_60) = [1] x1 + [0] p(c_61) = [2] p(c_62) = [0] p(c_63) = [1] p(c_64) = [0] p(c_65) = [0] p(c_66) = [0] p(c_67) = [4] p(c_68) = [1] p(c_69) = [0] p(c_70) = [1] p(c_71) = [0] p(c_72) = [0] p(c_73) = [2] x1 + [2] p(c_74) = [1] p(c_75) = [1] p(c_76) = [1] p(c_77) = [0] p(c_78) = [1] p(c_79) = [1] p(c_80) = [0] p(c_81) = [1] x1 + [1] p(c_82) = [4] x1 + [2] p(c_83) = [4] p(c_84) = [1] x1 + [0] p(c_85) = [4] x1 + [2] p(c_86) = [1] p(c_87) = [1] x1 + [1] p(c_88) = [4] p(c_89) = [0] p(c_90) = [1] x1 + [1] x3 + [2] p(c_91) = [1] p(c_92) = [2] p(c_93) = [0] p(c_94) = [1] x3 + [0] p(c_95) = [2] x1 + [4] p(c_96) = [4] x1 + [1] p(c_97) = [1] p(c_98) = [1] x2 + [1] p(c_99) = [2] p(c_100) = [4] p(c_101) = [4] p(c_102) = [1] x2 + [1] p(c_103) = [0] p(c_104) = [1] p(c_105) = [4] p(c_106) = [0] p(c_107) = [4] x3 + [1] x9 + [1] x10 + [1] p(c_108) = [1] x1 + [1] x2 + [2] p(c_109) = [1] Following rules are strictly oriented: SPLITD#(z0,z1) = [1] z1 + [1] > [1] z1 + [0] = c_28(SPLITD#1#(z1,z0)) Following rules are (at-least) weakly oriented: APPEND#(z0,z1) = [0] >= [0] = c_6(APPEND#1#(z0,z1)) APPEND#1#(::(z0,z1),z2) = [0] >= [0] = c_7(APPEND#(z1,z2)) APPENDD#(z0,z1) = [0] >= [0] = c_9(APPENDD#1#(z0,z1)) APPENDD#1#(::(z0,z1),z2) = [0] >= [0] = c_10(APPENDD#(z1,z2)) QUICKSORT#(z0) = [0] >= [0] = QUICKSORT#1#(z0) QUICKSORT#1#(::(z0,z1)) = [0] >= [0] = QUICKSORT#2#(split(z0,z1),z0) QUICKSORT#1#(::(z0,z1)) = [0] >= [0] = SPLIT#(z0,z1) QUICKSORT#2#(tuple#2(z0,z1),z2) = [0] >= [0] = APPEND#(quicksort(z0),::(z2,quicksort(z1))) QUICKSORT#2#(tuple#2(z0,z1),z2) = [0] >= [0] = QUICKSORT#(z0) QUICKSORT#2#(tuple#2(z0,z1),z2) = [0] >= [0] = QUICKSORT#(z1) QUICKSORTD#(z0) = [1] z0 + [0] >= [1] z0 + [0] = QUICKSORTD#1#(z0) QUICKSORTD#1#(::(z0,z1)) = [1] z1 + [1] >= [1] z1 + [1] = QUICKSORTD#2#(splitD(z0,z1),z0) QUICKSORTD#1#(::(z0,z1)) = [1] z1 + [1] >= [1] z1 + [1] = SPLITD#(z0,z1) QUICKSORTD#2#(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [0] >= [0] = APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) QUICKSORTD#2#(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [0] >= [1] z0 + [0] = QUICKSORTD#(z0) QUICKSORTD#2#(tuple#2(z0,z1),z2) = [1] z0 + [1] z1 + [0] >= [1] z1 + [0] = QUICKSORTD#(z1) SPLIT#(z0,z1) = [0] >= [0] = c_22(SPLIT#1#(z1,z0)) SPLIT#1#(::(z0,z1),z2) = [0] >= [0] = c_23(SPLIT#(z2,z1)) SPLITD#1#(::(z0,z1),z2) = [1] z1 + [1] >= [1] z1 + [1] = c_29(SPLITD#(z2,z1)) TESTQUICKSORT#(z0) = [1] z0 + [5] >= [0] = QUICKSORT#(testList(#unit())) TESTQUICKSORT2#(z0) = [1] >= [0] = QUICKSORT#(testList(#unit())) splitD(z0,z1) = [1] z1 + [1] >= [1] z1 + [1] = splitD#1(z1,z0) splitD#1(::(z0,z1),z2) = [1] z1 + [2] >= [1] z1 + [2] = splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) = [1] >= [0] = tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) = [1] z0 + [1] z1 + [1] >= [1] z0 + [1] z1 + [1] = splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) = [1] z0 + [1] z1 + [1] >= [1] z0 + [1] z1 + [1] = tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) = [1] z0 + [1] z1 + [1] >= [1] z0 + [1] z1 + [1] = tuple#2(z0,::(z2,z1)) ** Step 8.b:5: Ara. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: APPEND#(z0,z1) -> c_6(APPEND#1#(z0,z1)) SPLIT#(z0,z1) -> c_22(SPLIT#1#(z1,z0)) - Weak DPs: APPEND#1#(::(z0,z1),z2) -> c_7(APPEND#(z1,z2)) APPENDD#(z0,z1) -> c_9(APPENDD#1#(z0,z1)) APPENDD#1#(::(z0,z1),z2) -> c_10(APPENDD#(z1,z2)) QUICKSORT#(z0) -> QUICKSORT#1#(z0) QUICKSORT#1#(::(z0,z1)) -> QUICKSORT#2#(split(z0,z1),z0) QUICKSORT#1#(::(z0,z1)) -> SPLIT#(z0,z1) QUICKSORT#2#(tuple#2(z0,z1),z2) -> APPEND#(quicksort(z0),::(z2,quicksort(z1))) QUICKSORT#2#(tuple#2(z0,z1),z2) -> QUICKSORT#(z0) QUICKSORT#2#(tuple#2(z0,z1),z2) -> QUICKSORT#(z1) QUICKSORTD#(z0) -> QUICKSORTD#1#(z0) QUICKSORTD#1#(::(z0,z1)) -> QUICKSORTD#2#(splitD(z0,z1),z0) QUICKSORTD#1#(::(z0,z1)) -> SPLITD#(z0,z1) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> QUICKSORTD#(z0) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> QUICKSORTD#(z1) SPLIT#1#(::(z0,z1),z2) -> c_23(SPLIT#(z2,z1)) SPLITD#(z0,z1) -> c_28(SPLITD#1#(z1,z0)) SPLITD#1#(::(z0,z1),z2) -> c_29(SPLITD#(z2,z1)) TESTQUICKSORT#(z0) -> QUICKSORT#(testList(#unit())) TESTQUICKSORT2#(z0) -> QUICKSORT#(testList(#unit())) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(z0)) -> #pos(z0) #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(z0)) -> #GT() #compare(#0(),#pos(z0)) -> #LT() #compare(#0(),#s(z0)) -> #LT() #compare(#neg(z0),#0()) -> #LT() #compare(#neg(z0),#neg(z1)) -> #compare(z1,z0) #compare(#neg(z0),#pos(z1)) -> #LT() #compare(#pos(z0),#0()) -> #GT() #compare(#pos(z0),#neg(z1)) -> #GT() #compare(#pos(z0),#pos(z1)) -> #compare(z0,z1) #compare(#s(z0),#0()) -> #GT() #compare(#s(z0),#s(z1)) -> #compare(z0,z1) #greater(z0,z1) -> #ckgt(#compare(z0,z1)) append(z0,z1) -> append#1(z0,z1) append#1(::(z0,z1),z2) -> ::(z0,append(z1,z2)) append#1(nil(),z0) -> z0 appendD(z0,z1) -> appendD#1(z0,z1) appendD#1(::(z0,z1),z2) -> ::(z0,appendD(z1,z2)) appendD#1(nil(),z0) -> z0 quicksort(z0) -> quicksort#1(z0) quicksort#1(::(z0,z1)) -> quicksort#2(split(z0,z1),z0) quicksort#1(nil()) -> nil() quicksort#2(tuple#2(z0,z1),z2) -> append(quicksort(z0),::(z2,quicksort(z1))) quicksortD(z0) -> quicksortD#1(z0) quicksortD#1(::(z0,z1)) -> quicksortD#2(splitD(z0,z1),z0) quicksortD#1(nil()) -> nil() quicksortD#2(tuple#2(z0,z1),z2) -> appendD(quicksortD(z0),::(z2,quicksortD(z1))) split(z0,z1) -> split#1(z1,z0) split#1(::(z0,z1),z2) -> split#2(split(z2,z1),z2,z0) split#1(nil(),z0) -> tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) -> split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) splitD(z0,z1) -> splitD#1(z1,z0) splitD#1(::(z0,z1),z2) -> splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) -> tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) -> splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) testList(z0) -> ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) - Signature: {#ABS/1,#CKGT/1,#COMPARE/2,#GREATER/2,#abs/1,#ckgt/1,#compare/2,#greater/2,APPEND/2,APPEND#1/2,APPENDD/2 ,APPENDD#1/2,QUICKSORT/1,QUICKSORT#1/1,QUICKSORT#2/2,QUICKSORTD/1,QUICKSORTD#1/1,QUICKSORTD#2/2,SPLIT/2 ,SPLIT#1/2,SPLIT#2/3,SPLIT#3/4,SPLITD/2,SPLITD#1/2,SPLITD#2/3,SPLITD#3/4,TESTLIST/1,TESTQUICKSORT/1 ,TESTQUICKSORT2/1,append/2,append#1/2,appendD/2,appendD#1/2,quicksort/1,quicksort#1/1,quicksort#2/2 ,quicksortD/1,quicksortD#1/1,quicksortD#2/2,split/2,split#1/2,split#2/3,split#3/4,splitD/2,splitD#1/2 ,splitD#2/3,splitD#3/4,testList/1,testQuicksort/1,testQuicksort2/1,#ABS#/1,#CKGT#/1,#COMPARE#/2,#GREATER#/2 ,#abs#/1,#ckgt#/1,#compare#/2,#greater#/2,APPEND#/2,APPEND#1#/2,APPENDD#/2,APPENDD#1#/2,QUICKSORT#/1 ,QUICKSORT#1#/1,QUICKSORT#2#/2,QUICKSORTD#/1,QUICKSORTD#1#/1,QUICKSORTD#2#/2,SPLIT#/2,SPLIT#1#/2,SPLIT#2#/3 ,SPLIT#3#/4,SPLITD#/2,SPLITD#1#/2,SPLITD#2#/3,SPLITD#3#/4,TESTLIST#/1,TESTQUICKSORT#/1,TESTQUICKSORT2#/1 ,append#/2,append#1#/2,appendD#/2,appendD#1#/2,quicksort#/1,quicksort#1#/1,quicksort#2#/2,quicksortD#/1 ,quicksortD#1#/1,quicksortD#2#/2,split#/2,split#1#/2,split#2#/3,split#3#/4,splitD#/2,splitD#1#/2,splitD#2#/3 ,splitD#3#/4,testList#/1,testQuicksort#/1,testQuicksort2#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,#unit/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/0,c16/0,c17/0,c18/0,c19/2,c2/0 ,c20/1,c21/1,c22/0,c23/1,c24/1,c25/0,c26/1,c27/2,c28/0,c29/2,c3/0,c30/2,c31/1,c32/2,c33/0,c34/2,c35/2,c36/1 ,c37/2,c38/0,c39/2,c4/0,c40/0,c41/0,c42/1,c43/2,c44/0,c45/2,c46/0,c47/0,c48/1,c49/1,c5/0,c50/1,c51/1,c52/1 ,c53/1,c54/1,c55/1,c56/1,c57/1,c58/2,c59/2,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/3 ,c_6/1,c_7/1,c_8/0,c_9/1,c_10/1,c_11/0,c_12/1,c_13/2,c_14/0,c_15/2,c_16/2,c_17/1,c_18/2,c_19/0,c_20/2,c_21/2 ,c_22/1,c_23/1,c_24/0,c_25/3,c_26/0,c_27/0,c_28/1,c_29/1,c_30/0,c_31/3,c_32/0,c_33/0,c_34/1,c_35/1,c_36/1 ,c_37/1,c_38/1,c_39/1,c_40/1,c_41/1,c_42/1,c_43/1,c_44/1,c_45/1,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0 ,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0,c_58/1,c_59/0,c_60/1,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0 ,c_67/0,c_68/0,c_69/0,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/0,c_76/0,c_77/1,c_78/0,c_79/1,c_80/2,c_81/1 ,c_82/1,c_83/0,c_84/1,c_85/1,c_86/0,c_87/1,c_88/2,c_89/0,c_90/3,c_91/1,c_92/2,c_93/0,c_94/3,c_95/1,c_96/2 ,c_97/0,c_98/2,c_99/0,c_100/0,c_101/1,c_102/2,c_103/0,c_104/2,c_105/0,c_106/0,c_107/10,c_108/2,c_109/2} - Obligation: innermost runtime complexity wrt. defined symbols {#ABS#,#CKGT#,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare# ,#greater#,APPEND#,APPEND#1#,APPENDD#,APPENDD#1#,QUICKSORT#,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD# ,QUICKSORTD#1#,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2#,SPLIT#3#,SPLITD#,SPLITD#1#,SPLITD#2#,SPLITD#3# ,TESTLIST#,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1#,appendD#,appendD#1#,quicksort#,quicksort#1# ,quicksort#2#,quicksortD#,quicksortD#1#,quicksortD#2#,split#,split#1#,split#2#,split#3#,splitD#,splitD#1# ,splitD#2#,splitD#3#,testList#,testQuicksort#,testQuicksort2#} and constructors {#0,#EQ,#GT,#LT,#false,#neg ,#pos,#s,#true,#unit,::,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,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52 ,c53,c54,c55,c56,c57,c58,c59,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: Ara {minDegree = 1, maxDegree = 2, araTimeout = 8, araRuleShifting = Just 1, isBestCase = False, mkCompletelyDefined = False, verboseOutput = False} + Details: Signatures used: ---------------- F (TrsFun "#0") :: [] -(0)-> "A"(1) F (TrsFun "#0") :: [] -(0)-> "A"(0) F (TrsFun "#0") :: [] -(0)-> "A"(14) F (TrsFun "#0") :: [] -(0)-> "A"(9) F (TrsFun "#0") :: [] -(0)-> "A"(8) F (TrsFun "#0") :: [] -(0)-> "A"(12) F (TrsFun "#0") :: [] -(0)-> "A"(10) F (TrsFun "#EQ") :: [] -(0)-> "A"(0) F (TrsFun "#GT") :: [] -(0)-> "A"(0) F (TrsFun "#LT") :: [] -(0)-> "A"(0) F (TrsFun "#abs") :: ["A"(1)] -(0)-> "A"(6) F (TrsFun "#ckgt") :: ["A"(0)] -(0)-> "A"(0) F (TrsFun "#compare") :: ["A"(0) x "A"(0)] -(0)-> "A"(0) F (TrsFun "#false") :: [] -(0)-> "A"(0) F (TrsFun "#greater") :: ["A"(0) x "A"(0)] -(0)-> "A"(0) F (TrsFun "#neg") :: ["A"(0)] -(0)-> "A"(0) F (TrsFun "#pos") :: ["A"(0)] -(0)-> "A"(1) F (TrsFun "#pos") :: ["A"(0)] -(0)-> "A"(0) F (TrsFun "#pos") :: ["A"(0)] -(0)-> "A"(7) F (TrsFun "#pos") :: ["A"(0)] -(0)-> "A"(14) F (TrsFun "#pos") :: ["A"(0)] -(0)-> "A"(13) F (TrsFun "#pos") :: ["A"(0)] -(0)-> "A"(9) F (TrsFun "#pos") :: ["A"(0)] -(0)-> "A"(15) F (TrsFun "#s") :: ["A"(0)] -(0)-> "A"(0) F (TrsFun "#s") :: ["A"(0)] -(0)-> "A"(13) F (TrsFun "#s") :: ["A"(0)] -(0)-> "A"(1) F (TrsFun "#s") :: ["A"(0)] -(0)-> "A"(12) F (TrsFun "#s") :: ["A"(0)] -(0)-> "A"(15) F (TrsFun "#s") :: ["A"(0)] -(0)-> "A"(7) F (TrsFun "#s") :: ["A"(0)] -(0)-> "A"(14) F (TrsFun "#s") :: ["A"(0)] -(0)-> "A"(8) F (TrsFun "#s") :: ["A"(0)] -(0)-> "A"(6) F (TrsFun "#s") :: ["A"(0)] -(0)-> "A"(9) F (TrsFun "#s") :: ["A"(0)] -(0)-> "A"(11) F (TrsFun "#s") :: ["A"(0)] -(0)-> "A"(10) F (TrsFun "#true") :: [] -(0)-> "A"(0) F (TrsFun "#unit") :: [] -(0)-> "A"(0) F (TrsFun "::") :: ["A"(0) x "A"(1)] -(1)-> "A"(1) F (TrsFun "::") :: ["A"(0) x "A"(0)] -(0)-> "A"(0) F (TrsFun "::") :: ["A"(0) x "A"(5)] -(5)-> "A"(5) F (TrsFun "::") :: ["A"(0) x "A"(2)] -(2)-> "A"(2) F (TrsFun "append") :: ["A"(1) x "A"(1)] -(0)-> "A"(1) F (TrsFun "append#1") :: ["A"(1) x "A"(1)] -(0)-> "A"(1) F (TrsFun "appendD") :: ["A"(0) x "A"(0)] -(0)-> "A"(0) F (TrsFun "appendD#1") :: ["A"(0) x "A"(0)] -(0)-> "A"(0) F (TrsFun "nil") :: [] -(0)-> "A"(1) F (TrsFun "nil") :: [] -(0)-> "A"(0) F (TrsFun "nil") :: [] -(0)-> "A"(5) F (TrsFun "nil") :: [] -(0)-> "A"(7) F (TrsFun "nil") :: [] -(0)-> "A"(8) F (TrsFun "nil") :: [] -(0)-> "A"(15) F (TrsFun "nil") :: [] -(0)-> "A"(14) F (TrsFun "quicksort") :: ["A"(1)] -(0)-> "A"(1) F (TrsFun "quicksort#1") :: ["A"(1)] -(0)-> "A"(1) F (TrsFun "quicksort#2") :: ["A"(1) x "A"(0)] -(1)-> "A"(1) F (TrsFun "quicksortD") :: ["A"(5)] -(0)-> "A"(0) F (TrsFun "quicksortD#1") :: ["A"(5)] -(0)-> "A"(0) F (TrsFun "quicksortD#2") :: ["A"(5) x "A"(0)] -(5)-> "A"(0) F (TrsFun "split") :: ["A"(0) x "A"(1)] -(0)-> "A"(1) F (TrsFun "split#1") :: ["A"(1) x "A"(0)] -(0)-> "A"(1) F (TrsFun "split#2") :: ["A"(1) x "A"(0) x "A"(0)] -(1)-> "A"(1) F (TrsFun "split#3") :: ["A"(0) x "A"(1) x "A"(1) x "A"(0)] -(1)-> "A"(1) F (TrsFun "splitD") :: ["A"(0) x "A"(5)] -(0)-> "A"(5) F (TrsFun "splitD#1") :: ["A"(5) x "A"(0)] -(0)-> "A"(5) F (TrsFun "splitD#2") :: ["A"(5) x "A"(0) x "A"(0)] -(5)-> "A"(5) F (TrsFun "splitD#3") :: ["A"(0) x "A"(5) x "A"(5) x "A"(0)] -(5)-> "A"(5) F (TrsFun "testList") :: ["A"(0)] -(15)-> "A"(1) F (TrsFun "tuple#2") :: ["A"(1) x "A"(1)] -(0)-> "A"(1) F (TrsFun "tuple#2") :: ["A"(5) x "A"(5)] -(0)-> "A"(5) F (TrsFun "tuple#2") :: ["A"(15) x "A"(15)] -(0)-> "A"(15) F (DpFun "APPEND") :: ["A"(1) x "A"(0)] -(0)-> "A"(10) F (DpFun "APPEND#1") :: ["A"(1) x "A"(0)] -(0)-> "A"(2) F (DpFun "APPENDD") :: ["A"(0) x "A"(0)] -(14)-> "A"(2) F (DpFun "APPENDD#1") :: ["A"(0) x "A"(0)] -(14)-> "A"(6) F (DpFun "QUICKSORT") :: ["A"(1)] -(0)-> "A"(0) F (DpFun "QUICKSORT#1") :: ["A"(1)] -(0)-> "A"(0) F (DpFun "QUICKSORT#2") :: ["A"(1) x "A"(0)] -(1)-> "A"(0) F (DpFun "QUICKSORTD") :: ["A"(5)] -(15)-> "A"(2) F (DpFun "QUICKSORTD#1") :: ["A"(5)] -(14)-> "A"(2) F (DpFun "QUICKSORTD#2") :: ["A"(5) x "A"(0)] -(15)-> "A"(2) F (DpFun "SPLIT") :: ["A"(0) x "A"(1)] -(1)-> "A"(14) F (DpFun "SPLIT#1") :: ["A"(1) x "A"(0)] -(0)-> "A"(12) F (DpFun "SPLITD") :: ["A"(0) x "A"(2)] -(2)-> "A"(7) F (DpFun "SPLITD#1") :: ["A"(2) x "A"(0)] -(0)-> "A"(15) F (DpFun "TESTQUICKSORT") :: ["A"(0)] -(15)-> "A"(0) F (DpFun "TESTQUICKSORT2") :: ["A"(0)] -(15)-> "A"(0) F (ComFun 6) :: ["A"(0)] -(0)-> "A"(11) F (ComFun 7) :: ["A"(0)] -(0)-> "A"(8) F (ComFun 9) :: ["A"(0)] -(0)-> "A"(6) F (ComFun 10) :: ["A"(0)] -(0)-> "A"(15) F (ComFun 22) :: ["A"(0)] -(0)-> "A"(15) F (ComFun 23) :: ["A"(0)] -(0)-> "A"(14) F (ComFun 28) :: ["A"(0)] -(0)-> "A"(7) F (ComFun 29) :: ["A"(0)] -(0)-> "A"(15) Cost-free Signatures used: -------------------------- Base Constructor Signatures used: --------------------------------- "F (ComFun 10)_A" :: ["A"(0)] -(0)-> "A"(1) "F (ComFun 22)_A" :: ["A"(0)] -(0)-> "A"(1) "F (ComFun 23)_A" :: ["A"(0)] -(0)-> "A"(1) "F (ComFun 28)_A" :: ["A"(0)] -(0)-> "A"(1) "F (ComFun 29)_A" :: ["A"(0)] -(0)-> "A"(1) "F (ComFun 6)_A" :: ["A"(0)] -(0)-> "A"(1) "F (ComFun 7)_A" :: ["A"(0)] -(0)-> "A"(1) "F (ComFun 9)_A" :: ["A"(0)] -(0)-> "A"(1) "F (TrsFun \"#0\")_A" :: [] -(0)-> "A"(1) "F (TrsFun \"#EQ\")_A" :: [] -(0)-> "A"(1) "F (TrsFun \"#GT\")_A" :: [] -(0)-> "A"(1) "F (TrsFun \"#LT\")_A" :: [] -(0)-> "A"(1) "F (TrsFun \"#false\")_A" :: [] -(0)-> "A"(1) "F (TrsFun \"#neg\")_A" :: ["A"(1)] -(1)-> "A"(1) "F (TrsFun \"#pos\")_A" :: ["A"(0)] -(0)-> "A"(1) "F (TrsFun \"#s\")_A" :: ["A"(0)] -(0)-> "A"(1) "F (TrsFun \"#true\")_A" :: [] -(0)-> "A"(1) "F (TrsFun \"#unit\")_A" :: [] -(0)-> "A"(1) "F (TrsFun \"::\")_A" :: ["A"(0) x "A"(1)] -(1)-> "A"(1) "F (TrsFun \"nil\")_A" :: [] -(0)-> "A"(1) "F (TrsFun \"tuple#2\")_A" :: ["A"(1) x "A"(1)] -(0)-> "A"(1) Following Still Strict Rules were Typed as: ------------------------------------------- 1. Strict: SPLIT#(z0,z1) -> c_22(SPLIT#1#(z1,z0)) 2. Weak: APPEND#(z0,z1) -> c_6(APPEND#1#(z0,z1)) ** Step 8.b:6: Ara. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: APPEND#(z0,z1) -> c_6(APPEND#1#(z0,z1)) - Weak DPs: APPEND#1#(::(z0,z1),z2) -> c_7(APPEND#(z1,z2)) APPENDD#(z0,z1) -> c_9(APPENDD#1#(z0,z1)) APPENDD#1#(::(z0,z1),z2) -> c_10(APPENDD#(z1,z2)) QUICKSORT#(z0) -> QUICKSORT#1#(z0) QUICKSORT#1#(::(z0,z1)) -> QUICKSORT#2#(split(z0,z1),z0) QUICKSORT#1#(::(z0,z1)) -> SPLIT#(z0,z1) QUICKSORT#2#(tuple#2(z0,z1),z2) -> APPEND#(quicksort(z0),::(z2,quicksort(z1))) QUICKSORT#2#(tuple#2(z0,z1),z2) -> QUICKSORT#(z0) QUICKSORT#2#(tuple#2(z0,z1),z2) -> QUICKSORT#(z1) QUICKSORTD#(z0) -> QUICKSORTD#1#(z0) QUICKSORTD#1#(::(z0,z1)) -> QUICKSORTD#2#(splitD(z0,z1),z0) QUICKSORTD#1#(::(z0,z1)) -> SPLITD#(z0,z1) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> APPENDD#(quicksortD(z0),::(z2,quicksortD(z1))) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> QUICKSORTD#(z0) QUICKSORTD#2#(tuple#2(z0,z1),z2) -> QUICKSORTD#(z1) SPLIT#(z0,z1) -> c_22(SPLIT#1#(z1,z0)) SPLIT#1#(::(z0,z1),z2) -> c_23(SPLIT#(z2,z1)) SPLITD#(z0,z1) -> c_28(SPLITD#1#(z1,z0)) SPLITD#1#(::(z0,z1),z2) -> c_29(SPLITD#(z2,z1)) TESTQUICKSORT#(z0) -> QUICKSORT#(testList(#unit())) TESTQUICKSORT2#(z0) -> QUICKSORT#(testList(#unit())) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(z0)) -> #pos(z0) #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(z0)) -> #GT() #compare(#0(),#pos(z0)) -> #LT() #compare(#0(),#s(z0)) -> #LT() #compare(#neg(z0),#0()) -> #LT() #compare(#neg(z0),#neg(z1)) -> #compare(z1,z0) #compare(#neg(z0),#pos(z1)) -> #LT() #compare(#pos(z0),#0()) -> #GT() #compare(#pos(z0),#neg(z1)) -> #GT() #compare(#pos(z0),#pos(z1)) -> #compare(z0,z1) #compare(#s(z0),#0()) -> #GT() #compare(#s(z0),#s(z1)) -> #compare(z0,z1) #greater(z0,z1) -> #ckgt(#compare(z0,z1)) append(z0,z1) -> append#1(z0,z1) append#1(::(z0,z1),z2) -> ::(z0,append(z1,z2)) append#1(nil(),z0) -> z0 appendD(z0,z1) -> appendD#1(z0,z1) appendD#1(::(z0,z1),z2) -> ::(z0,appendD(z1,z2)) appendD#1(nil(),z0) -> z0 quicksort(z0) -> quicksort#1(z0) quicksort#1(::(z0,z1)) -> quicksort#2(split(z0,z1),z0) quicksort#1(nil()) -> nil() quicksort#2(tuple#2(z0,z1),z2) -> append(quicksort(z0),::(z2,quicksort(z1))) quicksortD(z0) -> quicksortD#1(z0) quicksortD#1(::(z0,z1)) -> quicksortD#2(splitD(z0,z1),z0) quicksortD#1(nil()) -> nil() quicksortD#2(tuple#2(z0,z1),z2) -> appendD(quicksortD(z0),::(z2,quicksortD(z1))) split(z0,z1) -> split#1(z1,z0) split#1(::(z0,z1),z2) -> split#2(split(z2,z1),z2,z0) split#1(nil(),z0) -> tuple#2(nil(),nil()) split#2(tuple#2(z0,z1),z2,z3) -> split#3(#greater(z3,z2),z0,z1,z3) split#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) split#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) splitD(z0,z1) -> splitD#1(z1,z0) splitD#1(::(z0,z1),z2) -> splitD#2(splitD(z2,z1),z2,z0) splitD#1(nil(),z0) -> tuple#2(nil(),nil()) splitD#2(tuple#2(z0,z1),z2,z3) -> splitD#3(#greater(z3,z2),z0,z1,z3) splitD#3(#false(),z0,z1,z2) -> tuple#2(::(z2,z0),z1) splitD#3(#true(),z0,z1,z2) -> tuple#2(z0,::(z2,z1)) testList(z0) -> ::(#abs(#0()) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#s(#0()))))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#0()))))))))) ,::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#s(#s(#0())))))))))) ,::(#abs(#pos(#s(#s(#s(#s(#s(#s(#0())))))))) ,::(#abs(#pos(#s(#s(#s(#0()))))),nil())))))))))) - Signature: {#ABS/1,#CKGT/1,#COMPARE/2,#GREATER/2,#abs/1,#ckgt/1,#compare/2,#greater/2,APPEND/2,APPEND#1/2,APPENDD/2 ,APPENDD#1/2,QUICKSORT/1,QUICKSORT#1/1,QUICKSORT#2/2,QUICKSORTD/1,QUICKSORTD#1/1,QUICKSORTD#2/2,SPLIT/2 ,SPLIT#1/2,SPLIT#2/3,SPLIT#3/4,SPLITD/2,SPLITD#1/2,SPLITD#2/3,SPLITD#3/4,TESTLIST/1,TESTQUICKSORT/1 ,TESTQUICKSORT2/1,append/2,append#1/2,appendD/2,appendD#1/2,quicksort/1,quicksort#1/1,quicksort#2/2 ,quicksortD/1,quicksortD#1/1,quicksortD#2/2,split/2,split#1/2,split#2/3,split#3/4,splitD/2,splitD#1/2 ,splitD#2/3,splitD#3/4,testList/1,testQuicksort/1,testQuicksort2/1,#ABS#/1,#CKGT#/1,#COMPARE#/2,#GREATER#/2 ,#abs#/1,#ckgt#/1,#compare#/2,#greater#/2,APPEND#/2,APPEND#1#/2,APPENDD#/2,APPENDD#1#/2,QUICKSORT#/1 ,QUICKSORT#1#/1,QUICKSORT#2#/2,QUICKSORTD#/1,QUICKSORTD#1#/1,QUICKSORTD#2#/2,SPLIT#/2,SPLIT#1#/2,SPLIT#2#/3 ,SPLIT#3#/4,SPLITD#/2,SPLITD#1#/2,SPLITD#2#/3,SPLITD#3#/4,TESTLIST#/1,TESTQUICKSORT#/1,TESTQUICKSORT2#/1 ,append#/2,append#1#/2,appendD#/2,appendD#1#/2,quicksort#/1,quicksort#1#/1,quicksort#2#/2,quicksortD#/1 ,quicksortD#1#/1,quicksortD#2#/2,split#/2,split#1#/2,split#2#/3,split#3#/4,splitD#/2,splitD#1#/2,splitD#2#/3 ,splitD#3#/4,testList#/1,testQuicksort#/1,testQuicksort2#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,#unit/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/0,c16/0,c17/0,c18/0,c19/2,c2/0 ,c20/1,c21/1,c22/0,c23/1,c24/1,c25/0,c26/1,c27/2,c28/0,c29/2,c3/0,c30/2,c31/1,c32/2,c33/0,c34/2,c35/2,c36/1 ,c37/2,c38/0,c39/2,c4/0,c40/0,c41/0,c42/1,c43/2,c44/0,c45/2,c46/0,c47/0,c48/1,c49/1,c5/0,c50/1,c51/1,c52/1 ,c53/1,c54/1,c55/1,c56/1,c57/1,c58/2,c59/2,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/3 ,c_6/1,c_7/1,c_8/0,c_9/1,c_10/1,c_11/0,c_12/1,c_13/2,c_14/0,c_15/2,c_16/2,c_17/1,c_18/2,c_19/0,c_20/2,c_21/2 ,c_22/1,c_23/1,c_24/0,c_25/3,c_26/0,c_27/0,c_28/1,c_29/1,c_30/0,c_31/3,c_32/0,c_33/0,c_34/1,c_35/1,c_36/1 ,c_37/1,c_38/1,c_39/1,c_40/1,c_41/1,c_42/1,c_43/1,c_44/1,c_45/1,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0 ,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0,c_58/1,c_59/0,c_60/1,c_61/0,c_62/0,c_63/0,c_64/0,c_65/0,c_66/0 ,c_67/0,c_68/0,c_69/0,c_70/0,c_71/0,c_72/0,c_73/1,c_74/0,c_75/0,c_76/0,c_77/1,c_78/0,c_79/1,c_80/2,c_81/1 ,c_82/1,c_83/0,c_84/1,c_85/1,c_86/0,c_87/1,c_88/2,c_89/0,c_90/3,c_91/1,c_92/2,c_93/0,c_94/3,c_95/1,c_96/2 ,c_97/0,c_98/2,c_99/0,c_100/0,c_101/1,c_102/2,c_103/0,c_104/2,c_105/0,c_106/0,c_107/10,c_108/2,c_109/2} - Obligation: innermost runtime complexity wrt. defined symbols {#ABS#,#CKGT#,#COMPARE#,#GREATER#,#abs#,#ckgt#,#compare# ,#greater#,APPEND#,APPEND#1#,APPENDD#,APPENDD#1#,QUICKSORT#,QUICKSORT#1#,QUICKSORT#2#,QUICKSORTD# ,QUICKSORTD#1#,QUICKSORTD#2#,SPLIT#,SPLIT#1#,SPLIT#2#,SPLIT#3#,SPLITD#,SPLITD#1#,SPLITD#2#,SPLITD#3# ,TESTLIST#,TESTQUICKSORT#,TESTQUICKSORT2#,append#,append#1#,appendD#,appendD#1#,quicksort#,quicksort#1# ,quicksort#2#,quicksortD#,quicksortD#1#,quicksortD#2#,split#,split#1#,split#2#,split#3#,splitD#,splitD#1# ,splitD#2#,splitD#3#,testList#,testQuicksort#,testQuicksort2#} and constructors {#0,#EQ,#GT,#LT,#false,#neg ,#pos,#s,#true,#unit,::,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,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52 ,c53,c54,c55,c56,c57,c58,c59,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: Ara {minDegree = 1, maxDegree = 2, araTimeout = 8, araRuleShifting = Just 1, isBestCase = False, mkCompletelyDefined = False, verboseOutput = False} + Details: Signatures used: ---------------- F (TrsFun "#0") :: [] -(0)-> "A"(0) F (TrsFun "#0") :: [] -(0)-> "A"(8) F (TrsFun "#0") :: [] -(0)-> "A"(13) F (TrsFun "#0") :: [] -(0)-> "A"(10) F (TrsFun "#0") :: [] -(0)-> "A"(12) F (TrsFun "#EQ") :: [] -(0)-> "A"(0) F (TrsFun "#GT") :: [] -(0)-> "A"(0) F (TrsFun "#LT") :: [] -(0)-> "A"(0) F (TrsFun "#abs") :: ["A"(0)] -(0)-> "A"(0) F (TrsFun "#ckgt") :: ["A"(0)] -(0)-> "A"(0) F (TrsFun "#compare") :: ["A"(0) x "A"(0)] -(0)-> "A"(0) F (TrsFun "#false") :: [] -(0)-> "A"(0) F (TrsFun "#greater") :: ["A"(0) x "A"(0)] -(0)-> "A"(0) F (TrsFun "#neg") :: ["A"(0)] -(0)-> "A"(0) F (TrsFun "#pos") :: ["A"(0)] -(0)-> "A"(0) F (TrsFun "#pos") :: ["A"(0)] -(0)-> "A"(8) F (TrsFun "#pos") :: ["A"(0)] -(0)-> "A"(4) F (TrsFun "#pos") :: ["A"(0)] -(0)-> "A"(6) F (TrsFun "#pos") :: ["A"(0)] -(0)-> "A"(12) F (TrsFun "#pos") :: ["A"(0)] -(0)-> "A"(2) F (TrsFun "#pos") :: ["A"(0)] -(0)-> "A"(1) F (TrsFun "#pos") :: ["A"(0)] -(0)-> "A"(9) F (TrsFun "#s") :: ["A"(0)] -(0)-> "A"(0) F (TrsFun "#s") :: ["A"(5)] -(0)-> "A"(5) F (TrsFun "#s") :: ["A"(8)] -(0)-> "A"(8) F (TrsFun "#s") :: ["A"(13)] -(0)-> "A"(13) F (TrsFun "#s") :: ["A"(4)] -(0)-> "A"(4) F (TrsFun "#s") :: ["A"(10)] -(0)-> "A"(10) F (TrsFun "#s") :: ["A"(2)] -(0)-> "A"(2) F (TrsFun "#s") :: ["A"(1)] -(0)-> "A"(1) F (TrsFun "#s") :: ["A"(12)] -(0)-> "A"(12) F (TrsFun "#true") :: [] -(0)-> "A"(0) F (TrsFun "#unit") :: [] -(0)-> "A"(0) F (TrsFun "::") :: ["A"(0) x "A"(1)] -(1)-> "A"(1) F (TrsFun "::") :: ["A"(0) x "A"(0)] -(0)-> "A"(0) F (TrsFun "::") :: ["A"(0) x "A"(5)] -(5)-> "A"(5) F (TrsFun "::") :: ["A"(0) x "A"(2)] -(2)-> "A"(2) F (TrsFun "append") :: ["A"(1) x "A"(1)] -(0)-> "A"(1) F (TrsFun "append#1") :: ["A"(1) x "A"(1)] -(0)-> "A"(1) F (TrsFun "appendD") :: ["A"(0) x "A"(0)] -(0)-> "A"(0) F (TrsFun "appendD#1") :: ["A"(0) x "A"(0)] -(0)-> "A"(0) F (TrsFun "nil") :: [] -(0)-> "A"(1) F (TrsFun "nil") :: [] -(0)-> "A"(0) F (TrsFun "nil") :: [] -(0)-> "A"(5) F (TrsFun "nil") :: [] -(0)-> "A"(11) F (TrsFun "nil") :: [] -(0)-> "A"(7) F (TrsFun "nil") :: [] -(0)-> "A"(14) F (TrsFun "nil") :: [] -(0)-> "A"(15) F (TrsFun "quicksort") :: ["A"(1)] -(0)-> "A"(1) F (TrsFun "quicksort#1") :: ["A"(1)] -(0)-> "A"(1) F (TrsFun "quicksort#2") :: ["A"(1) x "A"(0)] -(1)-> "A"(1) F (TrsFun "quicksortD") :: ["A"(5)] -(3)-> "A"(0) F (TrsFun "quicksortD#1") :: ["A"(5)] -(3)-> "A"(0) F (TrsFun "quicksortD#2") :: ["A"(5) x "A"(0)] -(6)-> "A"(0) F (TrsFun "split") :: ["A"(0) x "A"(1)] -(0)-> "A"(1) F (TrsFun "split#1") :: ["A"(1) x "A"(0)] -(0)-> "A"(1) F (TrsFun "split#2") :: ["A"(1) x "A"(0) x "A"(0)] -(1)-> "A"(1) F (TrsFun "split#3") :: ["A"(0) x "A"(1) x "A"(1) x "A"(0)] -(1)-> "A"(1) F (TrsFun "splitD") :: ["A"(0) x "A"(5)] -(0)-> "A"(5) F (TrsFun "splitD#1") :: ["A"(5) x "A"(0)] -(0)-> "A"(5) F (TrsFun "splitD#2") :: ["A"(5) x "A"(0) x "A"(0)] -(5)-> "A"(5) F (TrsFun "splitD#3") :: ["A"(0) x "A"(5) x "A"(5) x "A"(0)] -(5)-> "A"(5) F (TrsFun "testList") :: ["A"(0)] -(14)-> "A"(1) F (TrsFun "tuple#2") :: ["A"(1) x "A"(1)] -(0)-> "A"(1) F (TrsFun "tuple#2") :: ["A"(5) x "A"(5)] -(0)-> "A"(5) F (TrsFun "tuple#2") :: ["A"(14) x "A"(14)] -(0)-> "A"(14) F (TrsFun "tuple#2") :: ["A"(7) x "A"(7)] -(0)-> "A"(7) F (DpFun "APPEND") :: ["A"(1) x "A"(0)] -(1)-> "A"(8) F (DpFun "APPEND#1") :: ["A"(1) x "A"(0)] -(0)-> "A"(0) F (DpFun "APPENDD") :: ["A"(0) x "A"(0)] -(0)-> "A"(6) F (DpFun "APPENDD#1") :: ["A"(0) x "A"(0)] -(0)-> "A"(2) F (DpFun "QUICKSORT") :: ["A"(1)] -(1)-> "A"(0) F (DpFun "QUICKSORT#1") :: ["A"(1)] -(1)-> "A"(0) F (DpFun "QUICKSORT#2") :: ["A"(1) x "A"(0)] -(2)-> "A"(0) F (DpFun "QUICKSORTD") :: ["A"(5)] -(12)-> "A"(1) F (DpFun "QUICKSORTD#1") :: ["A"(5)] -(12)-> "A"(1) F (DpFun "QUICKSORTD#2") :: ["A"(5) x "A"(0)] -(12)-> "A"(1) F (DpFun "SPLIT") :: ["A"(0) x "A"(0)] -(0)-> "A"(6) F (DpFun "SPLIT#1") :: ["A"(0) x "A"(0)] -(0)-> "A"(14) F (DpFun "SPLITD") :: ["A"(0) x "A"(2)] -(6)-> "A"(1) F (DpFun "SPLITD#1") :: ["A"(2) x "A"(0)] -(4)-> "A"(14) F (DpFun "TESTQUICKSORT") :: ["A"(0)] -(15)-> "A"(0) F (DpFun "TESTQUICKSORT2") :: ["A"(0)] -(15)-> "A"(0) F (ComFun 6) :: ["A"(0)] -(0)-> "A"(13) F (ComFun 7) :: ["A"(0)] -(0)-> "A"(13) F (ComFun 9) :: ["A"(0)] -(0)-> "A"(7) F (ComFun 10) :: ["A"(0)] -(0)-> "A"(3) F (ComFun 22) :: ["A"(0)] -(0)-> "A"(7) F (ComFun 23) :: ["A"(0)] -(0)-> "A"(15) F (ComFun 28) :: ["A"(12)] -(0)-> "A"(12) F (ComFun 29) :: ["A"(0)] -(0)-> "A"(15) Cost-free Signatures used: -------------------------- Base Constructor Signatures used: --------------------------------- "F (ComFun 10)_A" :: ["A"(0)] -(0)-> "A"(1) "F (ComFun 22)_A" :: ["A"(0)] -(0)-> "A"(1) "F (ComFun 23)_A" :: ["A"(0)] -(0)-> "A"(1) "F (ComFun 28)_A" :: ["A"(1)] -(0)-> "A"(1) "F (ComFun 29)_A" :: ["A"(0)] -(0)-> "A"(1) "F (ComFun 6)_A" :: ["A"(0)] -(0)-> "A"(1) "F (ComFun 7)_A" :: ["A"(0)] -(0)-> "A"(1) "F (ComFun 9)_A" :: ["A"(0)] -(0)-> "A"(1) "F (TrsFun \"#0\")_A" :: [] -(0)-> "A"(1) "F (TrsFun \"#EQ\")_A" :: [] -(0)-> "A"(1) "F (TrsFun \"#GT\")_A" :: [] -(0)-> "A"(1) "F (TrsFun \"#LT\")_A" :: [] -(0)-> "A"(1) "F (TrsFun \"#false\")_A" :: [] -(0)-> "A"(1) "F (TrsFun \"#neg\")_A" :: ["A"(1)] -(0)-> "A"(1) "F (TrsFun \"#pos\")_A" :: ["A"(0)] -(0)-> "A"(1) "F (TrsFun \"#s\")_A" :: ["A"(1)] -(0)-> "A"(1) "F (TrsFun \"#true\")_A" :: [] -(0)-> "A"(1) "F (TrsFun \"#unit\")_A" :: [] -(0)-> "A"(1) "F (TrsFun \"::\")_A" :: ["A"(0) x "A"(1)] -(1)-> "A"(1) "F (TrsFun \"nil\")_A" :: [] -(0)-> "A"(1) "F (TrsFun \"tuple#2\")_A" :: ["A"(1) x "A"(1)] -(0)-> "A"(1) Following Still Strict Rules were Typed as: ------------------------------------------- 1. Strict: APPEND#(z0,z1) -> c_6(APPEND#1#(z0,z1)) 2. Weak: WORST_CASE(?,O(n^2))