WORST_CASE(?,O(n^2)) * Step 1: Sum. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict TRS: #LESS(z0,z1) -> c15(#CKLT(#compare(z0,z1)),#COMPARE(z0,z1)) MERGE(z0,z1) -> c16(MERGE#1(z0,z1)) MERGE#1(::(z0,z1),z2) -> c17(MERGE#2(z2,z0,z1)) MERGE#1(nil(),z0) -> c18() MERGE#2(::(z0,z1),z2,z3) -> c19(MERGE#3(#less(z2,z0),z2,z3,z0,z1),#LESS(z2,z0)) MERGE#2(nil(),z0,z1) -> c20() MERGE#3(#false(),z0,z1,z2,z3) -> c21(MERGE(::(z0,z1),z3)) MERGE#3(#true(),z0,z1,z2,z3) -> c22(MERGE(z1,::(z2,z3))) MERGESORT(z0) -> c23(MERGESORT#1(z0)) MERGESORT#1(::(z0,z1)) -> c24(MERGESORT#2(z1,z0)) MERGESORT#1(nil()) -> c25() MERGESORT#2(::(z0,z1),z2) -> c26(MERGESORT#3(msplit(::(z2,::(z0,z1)))),MSPLIT(::(z2,::(z0,z1)))) MERGESORT#2(nil(),z0) -> c27() MERGESORT#3(tuple#2(z0,z1)) -> c28(MERGE(mergesort(z0),mergesort(z1)),MERGESORT(z0)) MERGESORT#3(tuple#2(z0,z1)) -> c29(MERGE(mergesort(z0),mergesort(z1)),MERGESORT(z1)) MSPLIT(z0) -> c30(MSPLIT#1(z0)) MSPLIT#1(::(z0,z1)) -> c31(MSPLIT#2(z1,z0)) MSPLIT#1(nil()) -> c32() MSPLIT#2(::(z0,z1),z2) -> c33(MSPLIT#3(msplit(z1),z2,z0),MSPLIT(z1)) MSPLIT#2(nil(),z0) -> c34() MSPLIT#3(tuple#2(z0,z1),z2,z3) -> c35() - Weak TRS: #CKLT(#EQ()) -> c() #CKLT(#GT()) -> c1() #CKLT(#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)) #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1 ,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2 ,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT,#COMPARE,#LESS,#cklt,#compare,#less,MERGE,MERGE#1 ,MERGE#2,MERGE#3,MERGESORT,MERGESORT#1,MERGESORT#2,MERGESORT#3,MSPLIT,MSPLIT#1,MSPLIT#2,MSPLIT#3,merge ,merge#1,merge#2,merge#3,mergesort,mergesort#1,mergesort#2,mergesort#3,msplit,msplit#1,msplit#2 ,msplit#3} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5,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: #LESS(z0,z1) -> c15(#CKLT(#compare(z0,z1)),#COMPARE(z0,z1)) MERGE(z0,z1) -> c16(MERGE#1(z0,z1)) MERGE#1(::(z0,z1),z2) -> c17(MERGE#2(z2,z0,z1)) MERGE#1(nil(),z0) -> c18() MERGE#2(::(z0,z1),z2,z3) -> c19(MERGE#3(#less(z2,z0),z2,z3,z0,z1),#LESS(z2,z0)) MERGE#2(nil(),z0,z1) -> c20() MERGE#3(#false(),z0,z1,z2,z3) -> c21(MERGE(::(z0,z1),z3)) MERGE#3(#true(),z0,z1,z2,z3) -> c22(MERGE(z1,::(z2,z3))) MERGESORT(z0) -> c23(MERGESORT#1(z0)) MERGESORT#1(::(z0,z1)) -> c24(MERGESORT#2(z1,z0)) MERGESORT#1(nil()) -> c25() MERGESORT#2(::(z0,z1),z2) -> c26(MERGESORT#3(msplit(::(z2,::(z0,z1)))),MSPLIT(::(z2,::(z0,z1)))) MERGESORT#2(nil(),z0) -> c27() MERGESORT#3(tuple#2(z0,z1)) -> c28(MERGE(mergesort(z0),mergesort(z1)),MERGESORT(z0)) MERGESORT#3(tuple#2(z0,z1)) -> c29(MERGE(mergesort(z0),mergesort(z1)),MERGESORT(z1)) MSPLIT(z0) -> c30(MSPLIT#1(z0)) MSPLIT#1(::(z0,z1)) -> c31(MSPLIT#2(z1,z0)) MSPLIT#1(nil()) -> c32() MSPLIT#2(::(z0,z1),z2) -> c33(MSPLIT#3(msplit(z1),z2,z0),MSPLIT(z1)) MSPLIT#2(nil(),z0) -> c34() MSPLIT#3(tuple#2(z0,z1),z2,z3) -> c35() - Weak TRS: #CKLT(#EQ()) -> c() #CKLT(#GT()) -> c1() #CKLT(#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)) #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1 ,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2 ,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT,#COMPARE,#LESS,#cklt,#compare,#less,MERGE,MERGE#1 ,MERGE#2,MERGE#3,MERGESORT,MERGESORT#1,MERGESORT#2,MERGESORT#3,MSPLIT,MSPLIT#1,MSPLIT#2,MSPLIT#3,merge ,merge#1,merge#2,merge#3,mergesort,mergesort#1,mergesort#2,mergesort#3,msplit,msplit#1,msplit#2 ,msplit#3} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5,c6,c7,c8,c9,nil ,tuple#2} + Applied Processor: DependencyPairs {dpKind_ = WIDP} + Details: We add the following weak innermost dependency pairs: Strict DPs #LESS#(z0,z1) -> c_1(#CKLT#(#compare(z0,z1)),#COMPARE#(z0,z1)) MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) MERGE#1#(nil(),z0) -> c_4() MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1),#LESS#(z2,z0)) MERGE#2#(nil(),z0,z1) -> c_6() MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#1#(nil()) -> c_11() MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) MERGESORT#2#(nil(),z0) -> c_13() MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) MSPLIT#1#(nil()) -> c_18() MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#3#(msplit(z1),z2,z0),MSPLIT#(z1)) MSPLIT#2#(nil(),z0) -> c_20() MSPLIT#3#(tuple#2(z0,z1),z2,z3) -> c_21() Weak DPs #CKLT#(#EQ()) -> c_22() #CKLT#(#GT()) -> c_23() #CKLT#(#LT()) -> c_24() #COMPARE#(#0(),#0()) -> c_25() #COMPARE#(#0(),#neg(z0)) -> c_26() #COMPARE#(#0(),#pos(z0)) -> c_27() #COMPARE#(#0(),#s(z0)) -> c_28() #COMPARE#(#neg(z0),#0()) -> c_29() #COMPARE#(#neg(z0),#neg(z1)) -> c_30(#COMPARE#(z1,z0)) #COMPARE#(#neg(z0),#pos(z1)) -> c_31() #COMPARE#(#pos(z0),#0()) -> c_32() #COMPARE#(#pos(z0),#neg(z1)) -> c_33() #COMPARE#(#pos(z0),#pos(z1)) -> c_34(#COMPARE#(z0,z1)) #COMPARE#(#s(z0),#0()) -> c_35() #COMPARE#(#s(z0),#s(z1)) -> c_36(#COMPARE#(z0,z1)) #cklt#(#EQ()) -> c_37() #cklt#(#GT()) -> c_38() #cklt#(#LT()) -> c_39() #compare#(#0(),#0()) -> c_40() #compare#(#0(),#neg(z0)) -> c_41() #compare#(#0(),#pos(z0)) -> c_42() #compare#(#0(),#s(z0)) -> c_43() #compare#(#neg(z0),#0()) -> c_44() #compare#(#neg(z0),#neg(z1)) -> c_45(#compare#(z1,z0)) #compare#(#neg(z0),#pos(z1)) -> c_46() #compare#(#pos(z0),#0()) -> c_47() #compare#(#pos(z0),#neg(z1)) -> c_48() #compare#(#pos(z0),#pos(z1)) -> c_49(#compare#(z0,z1)) #compare#(#s(z0),#0()) -> c_50() #compare#(#s(z0),#s(z1)) -> c_51(#compare#(z0,z1)) #less#(z0,z1) -> c_52(#cklt#(#compare(z0,z1))) merge#(z0,z1) -> c_53(merge#1#(z0,z1)) merge#1#(::(z0,z1),z2) -> c_54(merge#2#(z2,z0,z1)) merge#1#(nil(),z0) -> c_55() merge#2#(::(z0,z1),z2,z3) -> c_56(merge#3#(#less(z2,z0),z2,z3,z0,z1)) merge#2#(nil(),z0,z1) -> c_57() merge#3#(#false(),z0,z1,z2,z3) -> c_58(merge#(::(z0,z1),z3)) merge#3#(#true(),z0,z1,z2,z3) -> c_59(merge#(z1,::(z2,z3))) mergesort#(z0) -> c_60(mergesort#1#(z0)) mergesort#1#(::(z0,z1)) -> c_61(mergesort#2#(z1,z0)) mergesort#1#(nil()) -> c_62() mergesort#2#(::(z0,z1),z2) -> c_63(mergesort#3#(msplit(::(z2,::(z0,z1))))) mergesort#2#(nil(),z0) -> c_64() mergesort#3#(tuple#2(z0,z1)) -> c_65(merge#(mergesort(z0),mergesort(z1))) msplit#(z0) -> c_66(msplit#1#(z0)) msplit#1#(::(z0,z1)) -> c_67(msplit#2#(z1,z0)) msplit#1#(nil()) -> c_68() msplit#2#(::(z0,z1),z2) -> c_69(msplit#3#(msplit(z1),z2,z0)) msplit#2#(nil(),z0) -> c_70() msplit#3#(tuple#2(z0,z1),z2,z3) -> c_71() and mark the set of starting terms. * Step 3: UsableRules. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: #LESS#(z0,z1) -> c_1(#CKLT#(#compare(z0,z1)),#COMPARE#(z0,z1)) MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) MERGE#1#(nil(),z0) -> c_4() MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1),#LESS#(z2,z0)) MERGE#2#(nil(),z0,z1) -> c_6() MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#1#(nil()) -> c_11() MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) MERGESORT#2#(nil(),z0) -> c_13() MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) MSPLIT#1#(nil()) -> c_18() MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#3#(msplit(z1),z2,z0),MSPLIT#(z1)) MSPLIT#2#(nil(),z0) -> c_20() MSPLIT#3#(tuple#2(z0,z1),z2,z3) -> c_21() - Strict TRS: #LESS(z0,z1) -> c15(#CKLT(#compare(z0,z1)),#COMPARE(z0,z1)) MERGE(z0,z1) -> c16(MERGE#1(z0,z1)) MERGE#1(::(z0,z1),z2) -> c17(MERGE#2(z2,z0,z1)) MERGE#1(nil(),z0) -> c18() MERGE#2(::(z0,z1),z2,z3) -> c19(MERGE#3(#less(z2,z0),z2,z3,z0,z1),#LESS(z2,z0)) MERGE#2(nil(),z0,z1) -> c20() MERGE#3(#false(),z0,z1,z2,z3) -> c21(MERGE(::(z0,z1),z3)) MERGE#3(#true(),z0,z1,z2,z3) -> c22(MERGE(z1,::(z2,z3))) MERGESORT(z0) -> c23(MERGESORT#1(z0)) MERGESORT#1(::(z0,z1)) -> c24(MERGESORT#2(z1,z0)) MERGESORT#1(nil()) -> c25() MERGESORT#2(::(z0,z1),z2) -> c26(MERGESORT#3(msplit(::(z2,::(z0,z1)))),MSPLIT(::(z2,::(z0,z1)))) MERGESORT#2(nil(),z0) -> c27() MERGESORT#3(tuple#2(z0,z1)) -> c28(MERGE(mergesort(z0),mergesort(z1)),MERGESORT(z0)) MERGESORT#3(tuple#2(z0,z1)) -> c29(MERGE(mergesort(z0),mergesort(z1)),MERGESORT(z1)) MSPLIT(z0) -> c30(MSPLIT#1(z0)) MSPLIT#1(::(z0,z1)) -> c31(MSPLIT#2(z1,z0)) MSPLIT#1(nil()) -> c32() MSPLIT#2(::(z0,z1),z2) -> c33(MSPLIT#3(msplit(z1),z2,z0),MSPLIT(z1)) MSPLIT#2(nil(),z0) -> c34() MSPLIT#3(tuple#2(z0,z1),z2,z3) -> c35() - Weak DPs: #CKLT#(#EQ()) -> c_22() #CKLT#(#GT()) -> c_23() #CKLT#(#LT()) -> c_24() #COMPARE#(#0(),#0()) -> c_25() #COMPARE#(#0(),#neg(z0)) -> c_26() #COMPARE#(#0(),#pos(z0)) -> c_27() #COMPARE#(#0(),#s(z0)) -> c_28() #COMPARE#(#neg(z0),#0()) -> c_29() #COMPARE#(#neg(z0),#neg(z1)) -> c_30(#COMPARE#(z1,z0)) #COMPARE#(#neg(z0),#pos(z1)) -> c_31() #COMPARE#(#pos(z0),#0()) -> c_32() #COMPARE#(#pos(z0),#neg(z1)) -> c_33() #COMPARE#(#pos(z0),#pos(z1)) -> c_34(#COMPARE#(z0,z1)) #COMPARE#(#s(z0),#0()) -> c_35() #COMPARE#(#s(z0),#s(z1)) -> c_36(#COMPARE#(z0,z1)) #cklt#(#EQ()) -> c_37() #cklt#(#GT()) -> c_38() #cklt#(#LT()) -> c_39() #compare#(#0(),#0()) -> c_40() #compare#(#0(),#neg(z0)) -> c_41() #compare#(#0(),#pos(z0)) -> c_42() #compare#(#0(),#s(z0)) -> c_43() #compare#(#neg(z0),#0()) -> c_44() #compare#(#neg(z0),#neg(z1)) -> c_45(#compare#(z1,z0)) #compare#(#neg(z0),#pos(z1)) -> c_46() #compare#(#pos(z0),#0()) -> c_47() #compare#(#pos(z0),#neg(z1)) -> c_48() #compare#(#pos(z0),#pos(z1)) -> c_49(#compare#(z0,z1)) #compare#(#s(z0),#0()) -> c_50() #compare#(#s(z0),#s(z1)) -> c_51(#compare#(z0,z1)) #less#(z0,z1) -> c_52(#cklt#(#compare(z0,z1))) merge#(z0,z1) -> c_53(merge#1#(z0,z1)) merge#1#(::(z0,z1),z2) -> c_54(merge#2#(z2,z0,z1)) merge#1#(nil(),z0) -> c_55() merge#2#(::(z0,z1),z2,z3) -> c_56(merge#3#(#less(z2,z0),z2,z3,z0,z1)) merge#2#(nil(),z0,z1) -> c_57() merge#3#(#false(),z0,z1,z2,z3) -> c_58(merge#(::(z0,z1),z3)) merge#3#(#true(),z0,z1,z2,z3) -> c_59(merge#(z1,::(z2,z3))) mergesort#(z0) -> c_60(mergesort#1#(z0)) mergesort#1#(::(z0,z1)) -> c_61(mergesort#2#(z1,z0)) mergesort#1#(nil()) -> c_62() mergesort#2#(::(z0,z1),z2) -> c_63(mergesort#3#(msplit(::(z2,::(z0,z1))))) mergesort#2#(nil(),z0) -> c_64() mergesort#3#(tuple#2(z0,z1)) -> c_65(merge#(mergesort(z0),mergesort(z1))) msplit#(z0) -> c_66(msplit#1#(z0)) msplit#1#(::(z0,z1)) -> c_67(msplit#2#(z1,z0)) msplit#1#(nil()) -> c_68() msplit#2#(::(z0,z1),z2) -> c_69(msplit#3#(msplit(z1),z2,z0)) msplit#2#(nil(),z0) -> c_70() msplit#3#(tuple#2(z0,z1),z2,z3) -> c_71() - Weak TRS: #CKLT(#EQ()) -> c() #CKLT(#GT()) -> c1() #CKLT(#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)) #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/2,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/2,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/2,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) #CKLT#(#EQ()) -> c_22() #CKLT#(#GT()) -> c_23() #CKLT#(#LT()) -> c_24() #COMPARE#(#0(),#0()) -> c_25() #COMPARE#(#0(),#neg(z0)) -> c_26() #COMPARE#(#0(),#pos(z0)) -> c_27() #COMPARE#(#0(),#s(z0)) -> c_28() #COMPARE#(#neg(z0),#0()) -> c_29() #COMPARE#(#neg(z0),#neg(z1)) -> c_30(#COMPARE#(z1,z0)) #COMPARE#(#neg(z0),#pos(z1)) -> c_31() #COMPARE#(#pos(z0),#0()) -> c_32() #COMPARE#(#pos(z0),#neg(z1)) -> c_33() #COMPARE#(#pos(z0),#pos(z1)) -> c_34(#COMPARE#(z0,z1)) #COMPARE#(#s(z0),#0()) -> c_35() #COMPARE#(#s(z0),#s(z1)) -> c_36(#COMPARE#(z0,z1)) #LESS#(z0,z1) -> c_1(#CKLT#(#compare(z0,z1)),#COMPARE#(z0,z1)) #cklt#(#EQ()) -> c_37() #cklt#(#GT()) -> c_38() #cklt#(#LT()) -> c_39() #compare#(#0(),#0()) -> c_40() #compare#(#0(),#neg(z0)) -> c_41() #compare#(#0(),#pos(z0)) -> c_42() #compare#(#0(),#s(z0)) -> c_43() #compare#(#neg(z0),#0()) -> c_44() #compare#(#neg(z0),#neg(z1)) -> c_45(#compare#(z1,z0)) #compare#(#neg(z0),#pos(z1)) -> c_46() #compare#(#pos(z0),#0()) -> c_47() #compare#(#pos(z0),#neg(z1)) -> c_48() #compare#(#pos(z0),#pos(z1)) -> c_49(#compare#(z0,z1)) #compare#(#s(z0),#0()) -> c_50() #compare#(#s(z0),#s(z1)) -> c_51(#compare#(z0,z1)) #less#(z0,z1) -> c_52(#cklt#(#compare(z0,z1))) MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) MERGE#1#(nil(),z0) -> c_4() MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1),#LESS#(z2,z0)) MERGE#2#(nil(),z0,z1) -> c_6() MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#1#(nil()) -> c_11() MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) MERGESORT#2#(nil(),z0) -> c_13() MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) MSPLIT#1#(nil()) -> c_18() MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#3#(msplit(z1),z2,z0),MSPLIT#(z1)) MSPLIT#2#(nil(),z0) -> c_20() MSPLIT#3#(tuple#2(z0,z1),z2,z3) -> c_21() merge#(z0,z1) -> c_53(merge#1#(z0,z1)) merge#1#(::(z0,z1),z2) -> c_54(merge#2#(z2,z0,z1)) merge#1#(nil(),z0) -> c_55() merge#2#(::(z0,z1),z2,z3) -> c_56(merge#3#(#less(z2,z0),z2,z3,z0,z1)) merge#2#(nil(),z0,z1) -> c_57() merge#3#(#false(),z0,z1,z2,z3) -> c_58(merge#(::(z0,z1),z3)) merge#3#(#true(),z0,z1,z2,z3) -> c_59(merge#(z1,::(z2,z3))) mergesort#(z0) -> c_60(mergesort#1#(z0)) mergesort#1#(::(z0,z1)) -> c_61(mergesort#2#(z1,z0)) mergesort#1#(nil()) -> c_62() mergesort#2#(::(z0,z1),z2) -> c_63(mergesort#3#(msplit(::(z2,::(z0,z1))))) mergesort#2#(nil(),z0) -> c_64() mergesort#3#(tuple#2(z0,z1)) -> c_65(merge#(mergesort(z0),mergesort(z1))) msplit#(z0) -> c_66(msplit#1#(z0)) msplit#1#(::(z0,z1)) -> c_67(msplit#2#(z1,z0)) msplit#1#(nil()) -> c_68() msplit#2#(::(z0,z1),z2) -> c_69(msplit#3#(msplit(z1),z2,z0)) msplit#2#(nil(),z0) -> c_70() msplit#3#(tuple#2(z0,z1),z2,z3) -> c_71() * Step 4: PredecessorEstimation. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: #LESS#(z0,z1) -> c_1(#CKLT#(#compare(z0,z1)),#COMPARE#(z0,z1)) MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) MERGE#1#(nil(),z0) -> c_4() MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1),#LESS#(z2,z0)) MERGE#2#(nil(),z0,z1) -> c_6() MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#1#(nil()) -> c_11() MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) MERGESORT#2#(nil(),z0) -> c_13() MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) MSPLIT#1#(nil()) -> c_18() MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#3#(msplit(z1),z2,z0),MSPLIT#(z1)) MSPLIT#2#(nil(),z0) -> c_20() MSPLIT#3#(tuple#2(z0,z1),z2,z3) -> c_21() - Weak DPs: #CKLT#(#EQ()) -> c_22() #CKLT#(#GT()) -> c_23() #CKLT#(#LT()) -> c_24() #COMPARE#(#0(),#0()) -> c_25() #COMPARE#(#0(),#neg(z0)) -> c_26() #COMPARE#(#0(),#pos(z0)) -> c_27() #COMPARE#(#0(),#s(z0)) -> c_28() #COMPARE#(#neg(z0),#0()) -> c_29() #COMPARE#(#neg(z0),#neg(z1)) -> c_30(#COMPARE#(z1,z0)) #COMPARE#(#neg(z0),#pos(z1)) -> c_31() #COMPARE#(#pos(z0),#0()) -> c_32() #COMPARE#(#pos(z0),#neg(z1)) -> c_33() #COMPARE#(#pos(z0),#pos(z1)) -> c_34(#COMPARE#(z0,z1)) #COMPARE#(#s(z0),#0()) -> c_35() #COMPARE#(#s(z0),#s(z1)) -> c_36(#COMPARE#(z0,z1)) #cklt#(#EQ()) -> c_37() #cklt#(#GT()) -> c_38() #cklt#(#LT()) -> c_39() #compare#(#0(),#0()) -> c_40() #compare#(#0(),#neg(z0)) -> c_41() #compare#(#0(),#pos(z0)) -> c_42() #compare#(#0(),#s(z0)) -> c_43() #compare#(#neg(z0),#0()) -> c_44() #compare#(#neg(z0),#neg(z1)) -> c_45(#compare#(z1,z0)) #compare#(#neg(z0),#pos(z1)) -> c_46() #compare#(#pos(z0),#0()) -> c_47() #compare#(#pos(z0),#neg(z1)) -> c_48() #compare#(#pos(z0),#pos(z1)) -> c_49(#compare#(z0,z1)) #compare#(#s(z0),#0()) -> c_50() #compare#(#s(z0),#s(z1)) -> c_51(#compare#(z0,z1)) #less#(z0,z1) -> c_52(#cklt#(#compare(z0,z1))) merge#(z0,z1) -> c_53(merge#1#(z0,z1)) merge#1#(::(z0,z1),z2) -> c_54(merge#2#(z2,z0,z1)) merge#1#(nil(),z0) -> c_55() merge#2#(::(z0,z1),z2,z3) -> c_56(merge#3#(#less(z2,z0),z2,z3,z0,z1)) merge#2#(nil(),z0,z1) -> c_57() merge#3#(#false(),z0,z1,z2,z3) -> c_58(merge#(::(z0,z1),z3)) merge#3#(#true(),z0,z1,z2,z3) -> c_59(merge#(z1,::(z2,z3))) mergesort#(z0) -> c_60(mergesort#1#(z0)) mergesort#1#(::(z0,z1)) -> c_61(mergesort#2#(z1,z0)) mergesort#1#(nil()) -> c_62() mergesort#2#(::(z0,z1),z2) -> c_63(mergesort#3#(msplit(::(z2,::(z0,z1))))) mergesort#2#(nil(),z0) -> c_64() mergesort#3#(tuple#2(z0,z1)) -> c_65(merge#(mergesort(z0),mergesort(z1))) msplit#(z0) -> c_66(msplit#1#(z0)) msplit#1#(::(z0,z1)) -> c_67(msplit#2#(z1,z0)) msplit#1#(nil()) -> c_68() msplit#2#(::(z0,z1),z2) -> c_69(msplit#3#(msplit(z1),z2,z0)) msplit#2#(nil(),z0) -> c_70() msplit#3#(tuple#2(z0,z1),z2,z3) -> c_71() - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/2,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/2,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/2,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,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,4,6,11,13,18,20,21} by application of Pre({1,4,6,11,13,18,20,21}) = {2,3,5,9,10,16,17,19}. Here rules are labelled as follows: 1: #LESS#(z0,z1) -> c_1(#CKLT#(#compare(z0,z1)),#COMPARE#(z0,z1)) 2: MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) 3: MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) 4: MERGE#1#(nil(),z0) -> c_4() 5: MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1),#LESS#(z2,z0)) 6: MERGE#2#(nil(),z0,z1) -> c_6() 7: MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) 8: MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) 9: MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) 10: MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) 11: MERGESORT#1#(nil()) -> c_11() 12: MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) 13: MERGESORT#2#(nil(),z0) -> c_13() 14: MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) 15: MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) 16: MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) 17: MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) 18: MSPLIT#1#(nil()) -> c_18() 19: MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#3#(msplit(z1),z2,z0),MSPLIT#(z1)) 20: MSPLIT#2#(nil(),z0) -> c_20() 21: MSPLIT#3#(tuple#2(z0,z1),z2,z3) -> c_21() 22: #CKLT#(#EQ()) -> c_22() 23: #CKLT#(#GT()) -> c_23() 24: #CKLT#(#LT()) -> c_24() 25: #COMPARE#(#0(),#0()) -> c_25() 26: #COMPARE#(#0(),#neg(z0)) -> c_26() 27: #COMPARE#(#0(),#pos(z0)) -> c_27() 28: #COMPARE#(#0(),#s(z0)) -> c_28() 29: #COMPARE#(#neg(z0),#0()) -> c_29() 30: #COMPARE#(#neg(z0),#neg(z1)) -> c_30(#COMPARE#(z1,z0)) 31: #COMPARE#(#neg(z0),#pos(z1)) -> c_31() 32: #COMPARE#(#pos(z0),#0()) -> c_32() 33: #COMPARE#(#pos(z0),#neg(z1)) -> c_33() 34: #COMPARE#(#pos(z0),#pos(z1)) -> c_34(#COMPARE#(z0,z1)) 35: #COMPARE#(#s(z0),#0()) -> c_35() 36: #COMPARE#(#s(z0),#s(z1)) -> c_36(#COMPARE#(z0,z1)) 37: #cklt#(#EQ()) -> c_37() 38: #cklt#(#GT()) -> c_38() 39: #cklt#(#LT()) -> c_39() 40: #compare#(#0(),#0()) -> c_40() 41: #compare#(#0(),#neg(z0)) -> c_41() 42: #compare#(#0(),#pos(z0)) -> c_42() 43: #compare#(#0(),#s(z0)) -> c_43() 44: #compare#(#neg(z0),#0()) -> c_44() 45: #compare#(#neg(z0),#neg(z1)) -> c_45(#compare#(z1,z0)) 46: #compare#(#neg(z0),#pos(z1)) -> c_46() 47: #compare#(#pos(z0),#0()) -> c_47() 48: #compare#(#pos(z0),#neg(z1)) -> c_48() 49: #compare#(#pos(z0),#pos(z1)) -> c_49(#compare#(z0,z1)) 50: #compare#(#s(z0),#0()) -> c_50() 51: #compare#(#s(z0),#s(z1)) -> c_51(#compare#(z0,z1)) 52: #less#(z0,z1) -> c_52(#cklt#(#compare(z0,z1))) 53: merge#(z0,z1) -> c_53(merge#1#(z0,z1)) 54: merge#1#(::(z0,z1),z2) -> c_54(merge#2#(z2,z0,z1)) 55: merge#1#(nil(),z0) -> c_55() 56: merge#2#(::(z0,z1),z2,z3) -> c_56(merge#3#(#less(z2,z0),z2,z3,z0,z1)) 57: merge#2#(nil(),z0,z1) -> c_57() 58: merge#3#(#false(),z0,z1,z2,z3) -> c_58(merge#(::(z0,z1),z3)) 59: merge#3#(#true(),z0,z1,z2,z3) -> c_59(merge#(z1,::(z2,z3))) 60: mergesort#(z0) -> c_60(mergesort#1#(z0)) 61: mergesort#1#(::(z0,z1)) -> c_61(mergesort#2#(z1,z0)) 62: mergesort#1#(nil()) -> c_62() 63: mergesort#2#(::(z0,z1),z2) -> c_63(mergesort#3#(msplit(::(z2,::(z0,z1))))) 64: mergesort#2#(nil(),z0) -> c_64() 65: mergesort#3#(tuple#2(z0,z1)) -> c_65(merge#(mergesort(z0),mergesort(z1))) 66: msplit#(z0) -> c_66(msplit#1#(z0)) 67: msplit#1#(::(z0,z1)) -> c_67(msplit#2#(z1,z0)) 68: msplit#1#(nil()) -> c_68() 69: msplit#2#(::(z0,z1),z2) -> c_69(msplit#3#(msplit(z1),z2,z0)) 70: msplit#2#(nil(),z0) -> c_70() 71: msplit#3#(tuple#2(z0,z1),z2,z3) -> c_71() * Step 5: RemoveWeakSuffixes. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1),#LESS#(z2,z0)) MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#3#(msplit(z1),z2,z0),MSPLIT#(z1)) - Weak DPs: #CKLT#(#EQ()) -> c_22() #CKLT#(#GT()) -> c_23() #CKLT#(#LT()) -> c_24() #COMPARE#(#0(),#0()) -> c_25() #COMPARE#(#0(),#neg(z0)) -> c_26() #COMPARE#(#0(),#pos(z0)) -> c_27() #COMPARE#(#0(),#s(z0)) -> c_28() #COMPARE#(#neg(z0),#0()) -> c_29() #COMPARE#(#neg(z0),#neg(z1)) -> c_30(#COMPARE#(z1,z0)) #COMPARE#(#neg(z0),#pos(z1)) -> c_31() #COMPARE#(#pos(z0),#0()) -> c_32() #COMPARE#(#pos(z0),#neg(z1)) -> c_33() #COMPARE#(#pos(z0),#pos(z1)) -> c_34(#COMPARE#(z0,z1)) #COMPARE#(#s(z0),#0()) -> c_35() #COMPARE#(#s(z0),#s(z1)) -> c_36(#COMPARE#(z0,z1)) #LESS#(z0,z1) -> c_1(#CKLT#(#compare(z0,z1)),#COMPARE#(z0,z1)) #cklt#(#EQ()) -> c_37() #cklt#(#GT()) -> c_38() #cklt#(#LT()) -> c_39() #compare#(#0(),#0()) -> c_40() #compare#(#0(),#neg(z0)) -> c_41() #compare#(#0(),#pos(z0)) -> c_42() #compare#(#0(),#s(z0)) -> c_43() #compare#(#neg(z0),#0()) -> c_44() #compare#(#neg(z0),#neg(z1)) -> c_45(#compare#(z1,z0)) #compare#(#neg(z0),#pos(z1)) -> c_46() #compare#(#pos(z0),#0()) -> c_47() #compare#(#pos(z0),#neg(z1)) -> c_48() #compare#(#pos(z0),#pos(z1)) -> c_49(#compare#(z0,z1)) #compare#(#s(z0),#0()) -> c_50() #compare#(#s(z0),#s(z1)) -> c_51(#compare#(z0,z1)) #less#(z0,z1) -> c_52(#cklt#(#compare(z0,z1))) MERGE#1#(nil(),z0) -> c_4() MERGE#2#(nil(),z0,z1) -> c_6() MERGESORT#1#(nil()) -> c_11() MERGESORT#2#(nil(),z0) -> c_13() MSPLIT#1#(nil()) -> c_18() MSPLIT#2#(nil(),z0) -> c_20() MSPLIT#3#(tuple#2(z0,z1),z2,z3) -> c_21() merge#(z0,z1) -> c_53(merge#1#(z0,z1)) merge#1#(::(z0,z1),z2) -> c_54(merge#2#(z2,z0,z1)) merge#1#(nil(),z0) -> c_55() merge#2#(::(z0,z1),z2,z3) -> c_56(merge#3#(#less(z2,z0),z2,z3,z0,z1)) merge#2#(nil(),z0,z1) -> c_57() merge#3#(#false(),z0,z1,z2,z3) -> c_58(merge#(::(z0,z1),z3)) merge#3#(#true(),z0,z1,z2,z3) -> c_59(merge#(z1,::(z2,z3))) mergesort#(z0) -> c_60(mergesort#1#(z0)) mergesort#1#(::(z0,z1)) -> c_61(mergesort#2#(z1,z0)) mergesort#1#(nil()) -> c_62() mergesort#2#(::(z0,z1),z2) -> c_63(mergesort#3#(msplit(::(z2,::(z0,z1))))) mergesort#2#(nil(),z0) -> c_64() mergesort#3#(tuple#2(z0,z1)) -> c_65(merge#(mergesort(z0),mergesort(z1))) msplit#(z0) -> c_66(msplit#1#(z0)) msplit#1#(::(z0,z1)) -> c_67(msplit#2#(z1,z0)) msplit#1#(nil()) -> c_68() msplit#2#(::(z0,z1),z2) -> c_69(msplit#3#(msplit(z1),z2,z0)) msplit#2#(nil(),z0) -> c_70() msplit#3#(tuple#2(z0,z1),z2,z3) -> c_71() - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/2,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/2,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/2,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) -->_1 MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)):2 -->_1 MERGE#1#(nil(),z0) -> c_4():46 2:S:MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) -->_1 MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1),#LESS#(z2,z0)):3 -->_1 MERGE#2#(nil(),z0,z1) -> c_6():47 3:S:MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1),#LESS#(z2,z0)) -->_2 #LESS#(z0,z1) -> c_1(#CKLT#(#compare(z0,z1)),#COMPARE#(z0,z1)):29 -->_1 MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))):5 -->_1 MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)):4 4:S:MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) -->_1 MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)):1 5:S:MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) -->_1 MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)):1 6:S:MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) -->_1 MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)):7 -->_1 MERGESORT#1#(nil()) -> c_11():48 7:S:MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) -->_1 MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))) ,MSPLIT#(::(z2,::(z0,z1)))):8 -->_1 MERGESORT#2#(nil(),z0) -> c_13():49 8:S:MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) -->_2 MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)):11 -->_1 MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)):10 -->_1 MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)):9 9:S:MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) -->_2 MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)):6 -->_1 MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)):1 10:S:MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) -->_2 MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)):6 -->_1 MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)):1 11:S:MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) -->_1 MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)):12 -->_1 MSPLIT#1#(nil()) -> c_18():50 12:S:MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) -->_1 MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#3#(msplit(z1),z2,z0),MSPLIT#(z1)):13 -->_1 MSPLIT#2#(nil(),z0) -> c_20():51 13:S:MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#3#(msplit(z1),z2,z0),MSPLIT#(z1)) -->_1 MSPLIT#3#(tuple#2(z0,z1),z2,z3) -> c_21():52 -->_2 MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)):11 14:W:#CKLT#(#EQ()) -> c_22() 15:W:#CKLT#(#GT()) -> c_23() 16:W:#CKLT#(#LT()) -> c_24() 17:W:#COMPARE#(#0(),#0()) -> c_25() 18:W:#COMPARE#(#0(),#neg(z0)) -> c_26() 19:W:#COMPARE#(#0(),#pos(z0)) -> c_27() 20:W:#COMPARE#(#0(),#s(z0)) -> c_28() 21:W:#COMPARE#(#neg(z0),#0()) -> c_29() 22:W:#COMPARE#(#neg(z0),#neg(z1)) -> c_30(#COMPARE#(z1,z0)) -->_1 #COMPARE#(#s(z0),#s(z1)) -> c_36(#COMPARE#(z0,z1)):28 -->_1 #COMPARE#(#pos(z0),#pos(z1)) -> c_34(#COMPARE#(z0,z1)):26 -->_1 #COMPARE#(#s(z0),#0()) -> c_35():27 -->_1 #COMPARE#(#pos(z0),#neg(z1)) -> c_33():25 -->_1 #COMPARE#(#pos(z0),#0()) -> c_32():24 -->_1 #COMPARE#(#neg(z0),#pos(z1)) -> c_31():23 -->_1 #COMPARE#(#neg(z0),#neg(z1)) -> c_30(#COMPARE#(z1,z0)):22 -->_1 #COMPARE#(#neg(z0),#0()) -> c_29():21 -->_1 #COMPARE#(#0(),#s(z0)) -> c_28():20 -->_1 #COMPARE#(#0(),#pos(z0)) -> c_27():19 -->_1 #COMPARE#(#0(),#neg(z0)) -> c_26():18 -->_1 #COMPARE#(#0(),#0()) -> c_25():17 23:W:#COMPARE#(#neg(z0),#pos(z1)) -> c_31() 24:W:#COMPARE#(#pos(z0),#0()) -> c_32() 25:W:#COMPARE#(#pos(z0),#neg(z1)) -> c_33() 26:W:#COMPARE#(#pos(z0),#pos(z1)) -> c_34(#COMPARE#(z0,z1)) -->_1 #COMPARE#(#s(z0),#s(z1)) -> c_36(#COMPARE#(z0,z1)):28 -->_1 #COMPARE#(#s(z0),#0()) -> c_35():27 -->_1 #COMPARE#(#pos(z0),#pos(z1)) -> c_34(#COMPARE#(z0,z1)):26 -->_1 #COMPARE#(#pos(z0),#neg(z1)) -> c_33():25 -->_1 #COMPARE#(#pos(z0),#0()) -> c_32():24 -->_1 #COMPARE#(#neg(z0),#pos(z1)) -> c_31():23 -->_1 #COMPARE#(#neg(z0),#neg(z1)) -> c_30(#COMPARE#(z1,z0)):22 -->_1 #COMPARE#(#neg(z0),#0()) -> c_29():21 -->_1 #COMPARE#(#0(),#s(z0)) -> c_28():20 -->_1 #COMPARE#(#0(),#pos(z0)) -> c_27():19 -->_1 #COMPARE#(#0(),#neg(z0)) -> c_26():18 -->_1 #COMPARE#(#0(),#0()) -> c_25():17 27:W:#COMPARE#(#s(z0),#0()) -> c_35() 28:W:#COMPARE#(#s(z0),#s(z1)) -> c_36(#COMPARE#(z0,z1)) -->_1 #COMPARE#(#s(z0),#s(z1)) -> c_36(#COMPARE#(z0,z1)):28 -->_1 #COMPARE#(#s(z0),#0()) -> c_35():27 -->_1 #COMPARE#(#pos(z0),#pos(z1)) -> c_34(#COMPARE#(z0,z1)):26 -->_1 #COMPARE#(#pos(z0),#neg(z1)) -> c_33():25 -->_1 #COMPARE#(#pos(z0),#0()) -> c_32():24 -->_1 #COMPARE#(#neg(z0),#pos(z1)) -> c_31():23 -->_1 #COMPARE#(#neg(z0),#neg(z1)) -> c_30(#COMPARE#(z1,z0)):22 -->_1 #COMPARE#(#neg(z0),#0()) -> c_29():21 -->_1 #COMPARE#(#0(),#s(z0)) -> c_28():20 -->_1 #COMPARE#(#0(),#pos(z0)) -> c_27():19 -->_1 #COMPARE#(#0(),#neg(z0)) -> c_26():18 -->_1 #COMPARE#(#0(),#0()) -> c_25():17 29:W:#LESS#(z0,z1) -> c_1(#CKLT#(#compare(z0,z1)),#COMPARE#(z0,z1)) -->_2 #COMPARE#(#s(z0),#s(z1)) -> c_36(#COMPARE#(z0,z1)):28 -->_2 #COMPARE#(#s(z0),#0()) -> c_35():27 -->_2 #COMPARE#(#pos(z0),#pos(z1)) -> c_34(#COMPARE#(z0,z1)):26 -->_2 #COMPARE#(#pos(z0),#neg(z1)) -> c_33():25 -->_2 #COMPARE#(#pos(z0),#0()) -> c_32():24 -->_2 #COMPARE#(#neg(z0),#pos(z1)) -> c_31():23 -->_2 #COMPARE#(#neg(z0),#neg(z1)) -> c_30(#COMPARE#(z1,z0)):22 -->_2 #COMPARE#(#neg(z0),#0()) -> c_29():21 -->_2 #COMPARE#(#0(),#s(z0)) -> c_28():20 -->_2 #COMPARE#(#0(),#pos(z0)) -> c_27():19 -->_2 #COMPARE#(#0(),#neg(z0)) -> c_26():18 -->_2 #COMPARE#(#0(),#0()) -> c_25():17 -->_1 #CKLT#(#LT()) -> c_24():16 -->_1 #CKLT#(#GT()) -> c_23():15 -->_1 #CKLT#(#EQ()) -> c_22():14 30:W:#cklt#(#EQ()) -> c_37() 31:W:#cklt#(#GT()) -> c_38() 32:W:#cklt#(#LT()) -> c_39() 33:W:#compare#(#0(),#0()) -> c_40() 34:W:#compare#(#0(),#neg(z0)) -> c_41() 35:W:#compare#(#0(),#pos(z0)) -> c_42() 36:W:#compare#(#0(),#s(z0)) -> c_43() 37:W:#compare#(#neg(z0),#0()) -> c_44() 38:W:#compare#(#neg(z0),#neg(z1)) -> c_45(#compare#(z1,z0)) -->_1 #compare#(#s(z0),#s(z1)) -> c_51(#compare#(z0,z1)):44 -->_1 #compare#(#pos(z0),#pos(z1)) -> c_49(#compare#(z0,z1)):42 -->_1 #compare#(#s(z0),#0()) -> c_50():43 -->_1 #compare#(#pos(z0),#neg(z1)) -> c_48():41 -->_1 #compare#(#pos(z0),#0()) -> c_47():40 -->_1 #compare#(#neg(z0),#pos(z1)) -> c_46():39 -->_1 #compare#(#neg(z0),#neg(z1)) -> c_45(#compare#(z1,z0)):38 -->_1 #compare#(#neg(z0),#0()) -> c_44():37 -->_1 #compare#(#0(),#s(z0)) -> c_43():36 -->_1 #compare#(#0(),#pos(z0)) -> c_42():35 -->_1 #compare#(#0(),#neg(z0)) -> c_41():34 -->_1 #compare#(#0(),#0()) -> c_40():33 39:W:#compare#(#neg(z0),#pos(z1)) -> c_46() 40:W:#compare#(#pos(z0),#0()) -> c_47() 41:W:#compare#(#pos(z0),#neg(z1)) -> c_48() 42:W:#compare#(#pos(z0),#pos(z1)) -> c_49(#compare#(z0,z1)) -->_1 #compare#(#s(z0),#s(z1)) -> c_51(#compare#(z0,z1)):44 -->_1 #compare#(#s(z0),#0()) -> c_50():43 -->_1 #compare#(#pos(z0),#pos(z1)) -> c_49(#compare#(z0,z1)):42 -->_1 #compare#(#pos(z0),#neg(z1)) -> c_48():41 -->_1 #compare#(#pos(z0),#0()) -> c_47():40 -->_1 #compare#(#neg(z0),#pos(z1)) -> c_46():39 -->_1 #compare#(#neg(z0),#neg(z1)) -> c_45(#compare#(z1,z0)):38 -->_1 #compare#(#neg(z0),#0()) -> c_44():37 -->_1 #compare#(#0(),#s(z0)) -> c_43():36 -->_1 #compare#(#0(),#pos(z0)) -> c_42():35 -->_1 #compare#(#0(),#neg(z0)) -> c_41():34 -->_1 #compare#(#0(),#0()) -> c_40():33 43:W:#compare#(#s(z0),#0()) -> c_50() 44:W:#compare#(#s(z0),#s(z1)) -> c_51(#compare#(z0,z1)) -->_1 #compare#(#s(z0),#s(z1)) -> c_51(#compare#(z0,z1)):44 -->_1 #compare#(#s(z0),#0()) -> c_50():43 -->_1 #compare#(#pos(z0),#pos(z1)) -> c_49(#compare#(z0,z1)):42 -->_1 #compare#(#pos(z0),#neg(z1)) -> c_48():41 -->_1 #compare#(#pos(z0),#0()) -> c_47():40 -->_1 #compare#(#neg(z0),#pos(z1)) -> c_46():39 -->_1 #compare#(#neg(z0),#neg(z1)) -> c_45(#compare#(z1,z0)):38 -->_1 #compare#(#neg(z0),#0()) -> c_44():37 -->_1 #compare#(#0(),#s(z0)) -> c_43():36 -->_1 #compare#(#0(),#pos(z0)) -> c_42():35 -->_1 #compare#(#0(),#neg(z0)) -> c_41():34 -->_1 #compare#(#0(),#0()) -> c_40():33 45:W:#less#(z0,z1) -> c_52(#cklt#(#compare(z0,z1))) -->_1 #cklt#(#LT()) -> c_39():32 -->_1 #cklt#(#GT()) -> c_38():31 -->_1 #cklt#(#EQ()) -> c_37():30 46:W:MERGE#1#(nil(),z0) -> c_4() 47:W:MERGE#2#(nil(),z0,z1) -> c_6() 48:W:MERGESORT#1#(nil()) -> c_11() 49:W:MERGESORT#2#(nil(),z0) -> c_13() 50:W:MSPLIT#1#(nil()) -> c_18() 51:W:MSPLIT#2#(nil(),z0) -> c_20() 52:W:MSPLIT#3#(tuple#2(z0,z1),z2,z3) -> c_21() 53:W:merge#(z0,z1) -> c_53(merge#1#(z0,z1)) -->_1 merge#1#(::(z0,z1),z2) -> c_54(merge#2#(z2,z0,z1)):54 -->_1 merge#1#(nil(),z0) -> c_55():55 54:W:merge#1#(::(z0,z1),z2) -> c_54(merge#2#(z2,z0,z1)) -->_1 merge#2#(::(z0,z1),z2,z3) -> c_56(merge#3#(#less(z2,z0),z2,z3,z0,z1)):56 -->_1 merge#2#(nil(),z0,z1) -> c_57():57 55:W:merge#1#(nil(),z0) -> c_55() 56:W:merge#2#(::(z0,z1),z2,z3) -> c_56(merge#3#(#less(z2,z0),z2,z3,z0,z1)) -->_1 merge#3#(#true(),z0,z1,z2,z3) -> c_59(merge#(z1,::(z2,z3))):59 -->_1 merge#3#(#false(),z0,z1,z2,z3) -> c_58(merge#(::(z0,z1),z3)):58 57:W:merge#2#(nil(),z0,z1) -> c_57() 58:W:merge#3#(#false(),z0,z1,z2,z3) -> c_58(merge#(::(z0,z1),z3)) -->_1 merge#(z0,z1) -> c_53(merge#1#(z0,z1)):53 59:W:merge#3#(#true(),z0,z1,z2,z3) -> c_59(merge#(z1,::(z2,z3))) -->_1 merge#(z0,z1) -> c_53(merge#1#(z0,z1)):53 60:W:mergesort#(z0) -> c_60(mergesort#1#(z0)) -->_1 mergesort#1#(::(z0,z1)) -> c_61(mergesort#2#(z1,z0)):61 -->_1 mergesort#1#(nil()) -> c_62():62 61:W:mergesort#1#(::(z0,z1)) -> c_61(mergesort#2#(z1,z0)) -->_1 mergesort#2#(::(z0,z1),z2) -> c_63(mergesort#3#(msplit(::(z2,::(z0,z1))))):63 -->_1 mergesort#2#(nil(),z0) -> c_64():64 62:W:mergesort#1#(nil()) -> c_62() 63:W:mergesort#2#(::(z0,z1),z2) -> c_63(mergesort#3#(msplit(::(z2,::(z0,z1))))) -->_1 mergesort#3#(tuple#2(z0,z1)) -> c_65(merge#(mergesort(z0),mergesort(z1))):65 64:W:mergesort#2#(nil(),z0) -> c_64() 65:W:mergesort#3#(tuple#2(z0,z1)) -> c_65(merge#(mergesort(z0),mergesort(z1))) -->_1 merge#(z0,z1) -> c_53(merge#1#(z0,z1)):53 66:W:msplit#(z0) -> c_66(msplit#1#(z0)) -->_1 msplit#1#(::(z0,z1)) -> c_67(msplit#2#(z1,z0)):67 -->_1 msplit#1#(nil()) -> c_68():68 67:W:msplit#1#(::(z0,z1)) -> c_67(msplit#2#(z1,z0)) -->_1 msplit#2#(::(z0,z1),z2) -> c_69(msplit#3#(msplit(z1),z2,z0)):69 -->_1 msplit#2#(nil(),z0) -> c_70():70 68:W:msplit#1#(nil()) -> c_68() 69:W:msplit#2#(::(z0,z1),z2) -> c_69(msplit#3#(msplit(z1),z2,z0)) -->_1 msplit#3#(tuple#2(z0,z1),z2,z3) -> c_71():71 70:W:msplit#2#(nil(),z0) -> c_70() 71:W:msplit#3#(tuple#2(z0,z1),z2,z3) -> c_71() The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 66: msplit#(z0) -> c_66(msplit#1#(z0)) 68: msplit#1#(nil()) -> c_68() 67: msplit#1#(::(z0,z1)) -> c_67(msplit#2#(z1,z0)) 70: msplit#2#(nil(),z0) -> c_70() 69: msplit#2#(::(z0,z1),z2) -> c_69(msplit#3#(msplit(z1),z2,z0)) 71: msplit#3#(tuple#2(z0,z1),z2,z3) -> c_71() 60: mergesort#(z0) -> c_60(mergesort#1#(z0)) 62: mergesort#1#(nil()) -> c_62() 61: mergesort#1#(::(z0,z1)) -> c_61(mergesort#2#(z1,z0)) 64: mergesort#2#(nil(),z0) -> c_64() 63: mergesort#2#(::(z0,z1),z2) -> c_63(mergesort#3#(msplit(::(z2,::(z0,z1))))) 65: mergesort#3#(tuple#2(z0,z1)) -> c_65(merge#(mergesort(z0),mergesort(z1))) 53: merge#(z0,z1) -> c_53(merge#1#(z0,z1)) 59: merge#3#(#true(),z0,z1,z2,z3) -> c_59(merge#(z1,::(z2,z3))) 56: merge#2#(::(z0,z1),z2,z3) -> c_56(merge#3#(#less(z2,z0),z2,z3,z0,z1)) 54: merge#1#(::(z0,z1),z2) -> c_54(merge#2#(z2,z0,z1)) 58: merge#3#(#false(),z0,z1,z2,z3) -> c_58(merge#(::(z0,z1),z3)) 55: merge#1#(nil(),z0) -> c_55() 57: merge#2#(nil(),z0,z1) -> c_57() 45: #less#(z0,z1) -> c_52(#cklt#(#compare(z0,z1))) 38: #compare#(#neg(z0),#neg(z1)) -> c_45(#compare#(z1,z0)) 44: #compare#(#s(z0),#s(z1)) -> c_51(#compare#(z0,z1)) 42: #compare#(#pos(z0),#pos(z1)) -> c_49(#compare#(z0,z1)) 39: #compare#(#neg(z0),#pos(z1)) -> c_46() 40: #compare#(#pos(z0),#0()) -> c_47() 41: #compare#(#pos(z0),#neg(z1)) -> c_48() 43: #compare#(#s(z0),#0()) -> c_50() 37: #compare#(#neg(z0),#0()) -> c_44() 36: #compare#(#0(),#s(z0)) -> c_43() 35: #compare#(#0(),#pos(z0)) -> c_42() 34: #compare#(#0(),#neg(z0)) -> c_41() 33: #compare#(#0(),#0()) -> c_40() 32: #cklt#(#LT()) -> c_39() 31: #cklt#(#GT()) -> c_38() 30: #cklt#(#EQ()) -> c_37() 48: MERGESORT#1#(nil()) -> c_11() 49: MERGESORT#2#(nil(),z0) -> c_13() 50: MSPLIT#1#(nil()) -> c_18() 51: MSPLIT#2#(nil(),z0) -> c_20() 52: MSPLIT#3#(tuple#2(z0,z1),z2,z3) -> c_21() 46: MERGE#1#(nil(),z0) -> c_4() 47: MERGE#2#(nil(),z0,z1) -> c_6() 29: #LESS#(z0,z1) -> c_1(#CKLT#(#compare(z0,z1)),#COMPARE#(z0,z1)) 14: #CKLT#(#EQ()) -> c_22() 15: #CKLT#(#GT()) -> c_23() 16: #CKLT#(#LT()) -> c_24() 28: #COMPARE#(#s(z0),#s(z1)) -> c_36(#COMPARE#(z0,z1)) 26: #COMPARE#(#pos(z0),#pos(z1)) -> c_34(#COMPARE#(z0,z1)) 22: #COMPARE#(#neg(z0),#neg(z1)) -> c_30(#COMPARE#(z1,z0)) 17: #COMPARE#(#0(),#0()) -> c_25() 18: #COMPARE#(#0(),#neg(z0)) -> c_26() 19: #COMPARE#(#0(),#pos(z0)) -> c_27() 20: #COMPARE#(#0(),#s(z0)) -> c_28() 21: #COMPARE#(#neg(z0),#0()) -> c_29() 23: #COMPARE#(#neg(z0),#pos(z1)) -> c_31() 24: #COMPARE#(#pos(z0),#0()) -> c_32() 25: #COMPARE#(#pos(z0),#neg(z1)) -> c_33() 27: #COMPARE#(#s(z0),#0()) -> c_35() * Step 6: SimplifyRHS. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1),#LESS#(z2,z0)) MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#3#(msplit(z1),z2,z0),MSPLIT#(z1)) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/2,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/2,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/2,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) -->_1 MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)):2 2:S:MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) -->_1 MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1),#LESS#(z2,z0)):3 3:S:MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1),#LESS#(z2,z0)) -->_1 MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))):5 -->_1 MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)):4 4:S:MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) -->_1 MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)):1 5:S:MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) -->_1 MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)):1 6:S:MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) -->_1 MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)):7 7:S:MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) -->_1 MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))) ,MSPLIT#(::(z2,::(z0,z1)))):8 8:S:MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) -->_2 MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)):11 -->_1 MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)):10 -->_1 MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)):9 9:S:MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) -->_2 MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)):6 -->_1 MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)):1 10:S:MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) -->_2 MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)):6 -->_1 MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)):1 11:S:MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) -->_1 MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)):12 12:S:MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) -->_1 MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#3#(msplit(z1),z2,z0),MSPLIT#(z1)):13 13:S:MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#3#(msplit(z1),z2,z0),MSPLIT#(z1)) -->_2 MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)):11 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#(z1)) * Step 7: Decompose. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#(z1)) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/2,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: Decompose {onSelection = all cycle independent sub-graph, withBound = RelativeAdd} + Details: We analyse the complexity of following sub-problems (R) and (S). Problem (S) is obtained from the input problem by shifting strict rules from (R) into the weak component. Problem (R) - Strict DPs: MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) - Weak DPs: MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#(z1)) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/2,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4 ,c5,c6,c7,c8,c9,nil,tuple#2} Problem (S) - Strict DPs: MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#(z1)) - Weak DPs: MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/2,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4 ,c5,c6,c7,c8,c9,nil,tuple#2} ** Step 7.a:1: RemoveWeakSuffixes. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) - Weak DPs: MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#(z1)) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/2,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) -->_1 MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)):2 2:S:MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) -->_1 MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)):3 3:S:MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) -->_1 MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))):5 -->_1 MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)):4 4:S:MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) -->_1 MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)):1 5:S:MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) -->_1 MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)):1 6:W:MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) -->_1 MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)):7 7:W:MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) -->_1 MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))) ,MSPLIT#(::(z2,::(z0,z1)))):8 8:W:MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) -->_2 MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)):11 -->_1 MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)):10 -->_1 MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)):9 9:W:MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) -->_1 MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)):1 -->_2 MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)):6 10:W:MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) -->_1 MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)):1 -->_2 MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)):6 11:W:MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) -->_1 MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)):12 12:W:MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) -->_1 MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#(z1)):13 13:W:MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#(z1)) -->_1 MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)):11 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 11: MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) 13: MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#(z1)) 12: MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) ** Step 7.a:2: SimplifyRHS. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) - Weak DPs: MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/2,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) -->_1 MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)):2 2:S:MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) -->_1 MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)):3 3:S:MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) -->_1 MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))):5 -->_1 MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)):4 4:S:MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) -->_1 MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)):1 5:S:MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) -->_1 MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)):1 6:W:MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) -->_1 MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)):7 7:W:MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) -->_1 MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))) ,MSPLIT#(::(z2,::(z0,z1)))):8 8:W:MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) -->_1 MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)):10 -->_1 MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)):9 9:W:MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) -->_1 MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)):1 -->_2 MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)):6 10:W:MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) -->_1 MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)):1 -->_2 MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)):6 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1))))) ** Step 7.a:3: DecomposeDG. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) - Weak DPs: MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1))))) MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/1,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: DecomposeDG {onSelection = all below first cut in WDG, onUpper = Just someStrategy, onLower = Nothing} + Details: We decompose the input problem according to the dependency graph into the upper component MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1))))) MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) and a lower component MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) Further, following extension rules are added to the lower component. MERGESORT#(z0) -> MERGESORT#1#(z0) MERGESORT#1#(::(z0,z1)) -> MERGESORT#2#(z1,z0) MERGESORT#2#(::(z0,z1),z2) -> MERGESORT#3#(msplit(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> MERGE#(mergesort(z0),mergesort(z1)) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z0) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z1) *** Step 7.a:3.a:1: PredecessorEstimationCP. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) - Weak DPs: MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1))))) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/1,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 3, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 3, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 2: MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) The strictly oriented rules are moved into the weak component. **** Step 7.a:3.a:1.a:1: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) - Weak DPs: MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1))))) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/1,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 3, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 1 non-zero interpretation-entries in the diagonal of the component-wise maxima): The following argument positions are considered usable: uargs(c_9) = {1}, uargs(c_10) = {1}, uargs(c_12) = {1}, uargs(c_14) = {1,2}, uargs(c_15) = {1,2} Following symbols are considered usable: {msplit,msplit#1,msplit#2,msplit#3,#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE#,MERGE#1# ,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2#,MSPLIT#3# ,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit#,msplit#1# ,msplit#2#,msplit#3#} TcT has computed the following interpretation: p(#0) = [0] [0] [0] p(#CKLT) = [0] [0] [0] p(#COMPARE) = [0] [0] [0] p(#EQ) = [0] [0] [0] p(#GT) = [0] [1] [1] p(#LESS) = [0] [0] [0] p(#LT) = [0] [0] [0] p(#cklt) = [1 0 0] [0] [0 1 0] x1 + [1] [1 0 1] [1] p(#compare) = [0 0 1] [1 0 0] [0] [1 0 0] x1 + [0 0 0] x2 + [0] [1 0 0] [1 1 0] [0] p(#false) = [0] [1] [0] p(#less) = [0 0 0] [0] [0 0 1] x2 + [0] [0 0 0] [0] p(#neg) = [0 0 0] [1] [0 0 1] x1 + [0] [0 0 0] [0] p(#pos) = [0 1 1] [0] [0 1 0] x1 + [0] [0 0 0] [1] p(#s) = [0] [0] [0] p(#true) = [0] [1] [0] p(::) = [0 0 1] [0 1 0] [0] [0 0 1] x1 + [0 1 1] x2 + [0] [0 0 0] [0 0 0] [1] p(MERGE) = [0] [0] [0] p(MERGE#1) = [0] [0] [0] p(MERGE#2) = [0] [0] [0] p(MERGE#3) = [0] [0] [0] p(MERGESORT) = [0] [0] [0] p(MERGESORT#1) = [0] [0] [0] p(MERGESORT#2) = [0] [0] [0] p(MERGESORT#3) = [0] [0] [0] p(MSPLIT) = [0] [0] [0] p(MSPLIT#1) = [0] [0] [0] p(MSPLIT#2) = [0] [0] [0] p(MSPLIT#3) = [0] [0] [0] p(c) = [0] [0] [0] p(c1) = [0] [0] [0] p(c10) = [0] [0] [0] p(c11) = [0] [0] [0] p(c12) = [0] [0] [0] p(c13) = [0] [0] [0] p(c14) = [0] [0] [0] p(c15) = [0] [0] [0] p(c16) = [0] [0] [0] p(c17) = [0] [0] [0] p(c18) = [0] [0] [0] p(c19) = [0] [0] [0] p(c2) = [0] [0] [0] p(c20) = [0] [0] [0] p(c21) = [0] [0] [0] p(c22) = [0] [0] [0] p(c23) = [0] [0] [0] p(c24) = [0] [0] [0] p(c25) = [0] [0] [0] p(c26) = [0] [0] [0] p(c27) = [0] [0] [0] p(c28) = [0] [0] [0] p(c29) = [0] [0] [0] p(c3) = [0] [0] [0] p(c30) = [0] [0] [0] p(c31) = [0] [0] [0] p(c32) = [0] [0] [0] p(c33) = [0] [0] [0] p(c34) = [0] [0] [0] p(c35) = [0] [0] [0] p(c4) = [0] [0] [0] p(c5) = [0] [0] [0] p(c6) = [0] [0] [0] p(c7) = [0] [0] [0] p(c8) = [0] [0] [0] p(c9) = [0] [0] [0] p(merge) = [0 0 0] [0 0 1] [0] [0 1 0] x1 + [1 1 1] x2 + [0] [0 0 0] [0 0 0] [0] p(merge#1) = [1] [0] [0] p(merge#2) = [0 1 0] [1] [0 0 0] x1 + [0] [0 0 0] [0] p(merge#3) = [0 0 0] [0] [0 0 0] x1 + [0] [0 1 0] [1] p(mergesort) = [0 1 0] [0] [1 1 0] x1 + [0] [0 1 0] [0] p(mergesort#1) = [0 0 0] [0] [0 0 0] x1 + [0] [0 1 0] [0] p(mergesort#2) = [0] [0] [0] p(mergesort#3) = [1 0 0] [0] [0 0 1] x1 + [0] [0 0 0] [0] p(msplit) = [0 1 1] [0] [1 0 0] x1 + [0] [0 0 0] [1] p(msplit#1) = [0 1 1] [0] [1 0 0] x1 + [0] [0 0 0] [1] p(msplit#2) = [0 1 1] [0 0 1] [1] [0 1 0] x1 + [0 0 1] x2 + [0] [0 0 0] [0 0 0] [1] p(msplit#3) = [1 0 1] [0 0 1] [0 0 1] [1] [1 0 0] x1 + [0 0 1] x2 + [0 0 1] x3 + [0] [0 0 0] [0 0 0] [0 0 0] [1] p(nil) = [0] [0] [0] p(tuple#2) = [0 1 1] [0 1 1] [0] [0 1 0] x1 + [0 1 0] x2 + [0] [0 0 0] [0 0 0] [1] p(#CKLT#) = [0] [0] [0] p(#COMPARE#) = [0] [0] [0] p(#LESS#) = [0] [0] [0] p(#cklt#) = [0] [0] [0] p(#compare#) = [0] [0] [0] p(#less#) = [0] [0] [0] p(MERGE#) = [0] [0] [0] p(MERGE#1#) = [0] [0] [0] p(MERGE#2#) = [0] [0] [0] p(MERGE#3#) = [0] [0] [0] p(MERGESORT#) = [0 1 0] [0] [0 0 0] x1 + [0] [0 0 1] [0] p(MERGESORT#1#) = [0 1 0] [0] [1 0 0] x1 + [1] [1 1 0] [1] p(MERGESORT#2#) = [0 1 1] [0 0 1] [0] [1 1 1] x1 + [0 0 0] x2 + [1] [0 1 1] [0 1 1] [1] p(MERGESORT#3#) = [0 1 0] [1] [0 1 0] x1 + [1] [0 0 0] [1] p(MSPLIT#) = [0] [0] [0] p(MSPLIT#1#) = [0] [0] [0] p(MSPLIT#2#) = [0] [0] [0] p(MSPLIT#3#) = [0] [0] [0] p(merge#) = [0] [0] [0] p(merge#1#) = [0] [0] [0] p(merge#2#) = [0] [0] [0] p(merge#3#) = [0] [0] [0] p(mergesort#) = [0] [0] [0] p(mergesort#1#) = [0] [0] [0] p(mergesort#2#) = [0] [0] [0] p(mergesort#3#) = [0] [0] [0] p(msplit#) = [0] [0] [0] p(msplit#1#) = [0] [0] [0] p(msplit#2#) = [0] [0] [0] p(msplit#3#) = [0] [0] [0] p(c_1) = [0] [0] [0] p(c_2) = [0] [0] [0] p(c_3) = [0] [0] [0] p(c_4) = [0] [0] [0] p(c_5) = [0] [0] [0] p(c_6) = [0] [0] [0] p(c_7) = [0] [0] [0] p(c_8) = [0] [0] [0] p(c_9) = [1 0 0] [0] [0 0 0] x1 + [0] [0 0 0] [0] p(c_10) = [1 0 0] [0] [0 0 0] x1 + [1] [0 0 0] [0] p(c_11) = [0] [0] [0] p(c_12) = [1 0 0] [0] [0 0 1] x1 + [0] [0 1 1] [0] p(c_13) = [0] [0] [0] p(c_14) = [1 0 0] [1 0 0] [1] [0 0 0] x1 + [1 0 0] x2 + [0] [0 0 0] [0 0 0] [1] p(c_15) = [1 0 0] [1 0 0] [0] [0 0 0] x1 + [1 0 0] x2 + [1] [0 0 0] [0 0 0] [0] p(c_16) = [0] [0] [0] p(c_17) = [0] [0] [0] p(c_18) = [0] [0] [0] p(c_19) = [0] [0] [0] p(c_20) = [0] [0] [0] p(c_21) = [0] [0] [0] p(c_22) = [0] [0] [0] p(c_23) = [0] [0] [0] p(c_24) = [0] [0] [0] p(c_25) = [0] [0] [0] p(c_26) = [0] [0] [0] p(c_27) = [0] [0] [0] p(c_28) = [0] [0] [0] p(c_29) = [0] [0] [0] p(c_30) = [0] [0] [0] p(c_31) = [0] [0] [0] p(c_32) = [0] [0] [0] p(c_33) = [0] [0] [0] p(c_34) = [0] [0] [0] p(c_35) = [0] [0] [0] p(c_36) = [0] [0] [0] p(c_37) = [0] [0] [0] p(c_38) = [0] [0] [0] p(c_39) = [0] [0] [0] p(c_40) = [0] [0] [0] p(c_41) = [0] [0] [0] p(c_42) = [0] [0] [0] p(c_43) = [0] [0] [0] p(c_44) = [0] [0] [0] p(c_45) = [0] [0] [0] p(c_46) = [0] [0] [0] p(c_47) = [0] [0] [0] p(c_48) = [0] [0] [0] p(c_49) = [0] [0] [0] p(c_50) = [0] [0] [0] p(c_51) = [0] [0] [0] p(c_52) = [0] [0] [0] p(c_53) = [0] [0] [0] p(c_54) = [0] [0] [0] p(c_55) = [0] [0] [0] p(c_56) = [0] [0] [0] p(c_57) = [0] [0] [0] p(c_58) = [0] [0] [0] p(c_59) = [0] [0] [0] p(c_60) = [0] [0] [0] p(c_61) = [0] [0] [0] p(c_62) = [0] [0] [0] p(c_63) = [0] [0] [0] p(c_64) = [0] [0] [0] p(c_65) = [0] [0] [0] p(c_66) = [0] [0] [0] p(c_67) = [0] [0] [0] p(c_68) = [0] [0] [0] p(c_69) = [0] [0] [0] p(c_70) = [0] [0] [0] p(c_71) = [0] [0] [0] Following rules are strictly oriented: MERGESORT#3#(tuple#2(z0,z1)) = [0 1 0] [0 1 0] [1] [0 1 0] z0 + [0 1 0] z1 + [1] [0 0 0] [0 0 0] [1] > [0 1 0] [0] [0 1 0] z1 + [1] [0 0 0] [0] = c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) Following rules are (at-least) weakly oriented: MERGESORT#(z0) = [0 1 0] [0] [0 0 0] z0 + [0] [0 0 1] [0] >= [0 1 0] [0] [0 0 0] z0 + [0] [0 0 0] [0] = c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) = [0 0 1] [0 1 1] [0] [0 0 1] z0 + [0 1 0] z1 + [1] [0 0 2] [0 2 1] [1] >= [0 0 1] [0 1 1] [0] [0 0 0] z0 + [0 0 0] z1 + [1] [0 0 0] [0 0 0] [0] = c_10(MERGESORT#2#(z1,z0)) MERGESORT#2#(::(z0,z1),z2) = [0 0 1] [0 1 1] [0 0 1] [1] [0 0 2] z0 + [0 2 1] z1 + [0 0 0] z2 + [2] [0 0 1] [0 1 1] [0 1 1] [2] >= [0 0 1] [0 1 1] [0 0 1] [1] [0 0 0] z0 + [0 0 0] z1 + [0 0 0] z2 + [1] [0 0 1] [0 1 1] [0 0 1] [2] = c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1))))) MERGESORT#3#(tuple#2(z0,z1)) = [0 1 0] [0 1 0] [1] [0 1 0] z0 + [0 1 0] z1 + [1] [0 0 0] [0 0 0] [1] >= [0 1 0] [1] [0 1 0] z0 + [0] [0 0 0] [1] = c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) msplit(z0) = [0 1 1] [0] [1 0 0] z0 + [0] [0 0 0] [1] >= [0 1 1] [0] [1 0 0] z0 + [0] [0 0 0] [1] = msplit#1(z0) msplit#1(::(z0,z1)) = [0 0 1] [0 1 1] [1] [0 0 1] z0 + [0 1 0] z1 + [0] [0 0 0] [0 0 0] [1] >= [0 0 1] [0 1 1] [1] [0 0 1] z0 + [0 1 0] z1 + [0] [0 0 0] [0 0 0] [1] = msplit#2(z1,z0) msplit#1(nil()) = [0] [0] [1] >= [0] [0] [1] = tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) = [0 0 1] [0 1 1] [0 0 1] [2] [0 0 1] z0 + [0 1 1] z1 + [0 0 1] z2 + [0] [0 0 0] [0 0 0] [0 0 0] [1] >= [0 0 1] [0 1 1] [0 0 1] [2] [0 0 1] z0 + [0 1 1] z1 + [0 0 1] z2 + [0] [0 0 0] [0 0 0] [0 0 0] [1] = msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) = [0 0 1] [1] [0 0 1] z0 + [0] [0 0 0] [1] >= [0 0 1] [1] [0 0 1] z0 + [0] [0 0 0] [1] = tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) = [0 1 1] [0 1 1] [0 0 1] [0 0 1] [2] [0 1 1] z0 + [0 1 1] z1 + [0 0 1] z2 + [0 0 1] z3 + [0] [0 0 0] [0 0 0] [0 0 0] [0 0 0] [1] >= [0 1 1] [0 1 1] [0 0 1] [0 0 1] [2] [0 1 1] z0 + [0 1 1] z1 + [0 0 1] z2 + [0 0 1] z3 + [0] [0 0 0] [0 0 0] [0 0 0] [0 0 0] [1] = tuple#2(::(z2,z0),::(z3,z1)) **** Step 7.a:3.a:1.a:2: Assumption. WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) - Weak DPs: MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1))))) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/1,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown, timeBCUB = Unknown, timeBCLB = Unknown}} + Details: () **** Step 7.a:3.a:1.b:1: PredecessorEstimationCP. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) - Weak DPs: MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1))))) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/1,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 3, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 3, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 1: MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) The strictly oriented rules are moved into the weak component. ***** Step 7.a:3.a:1.b:1.a:1: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) - Weak DPs: MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1))))) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/1,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 3, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 1 non-zero interpretation-entries in the diagonal of the component-wise maxima): The following argument positions are considered usable: uargs(c_9) = {1}, uargs(c_10) = {1}, uargs(c_12) = {1}, uargs(c_14) = {1,2}, uargs(c_15) = {1,2} Following symbols are considered usable: {msplit,msplit#1,msplit#2,msplit#3,#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE#,MERGE#1# ,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2#,MSPLIT#3# ,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit#,msplit#1# ,msplit#2#,msplit#3#} TcT has computed the following interpretation: p(#0) = [0] [0] [1] p(#CKLT) = [0] [0] [0] p(#COMPARE) = [0] [0] [0] p(#EQ) = [0] [1] [0] p(#GT) = [1] [0] [1] p(#LESS) = [0] [0] [0] p(#LT) = [0] [0] [0] p(#cklt) = [1 1 1] [1] [0 0 0] x1 + [0] [0 0 0] [0] p(#compare) = [0 1 1] [0] [1 1 1] x1 + [0] [0 0 0] [0] p(#false) = [0] [0] [0] p(#less) = [0] [0] [0] p(#neg) = [1] [1] [0] p(#pos) = [0] [0] [1] p(#s) = [0] [0] [0] p(#true) = [0] [0] [0] p(::) = [0 1 0] [0 1 0] [0] [0 1 0] x1 + [0 1 1] x2 + [0] [0 0 0] [0 0 0] [1] p(MERGE) = [0] [0] [0] p(MERGE#1) = [0] [0] [0] p(MERGE#2) = [0] [0] [0] p(MERGE#3) = [0] [0] [0] p(MERGESORT) = [0] [0] [0] p(MERGESORT#1) = [0] [0] [0] p(MERGESORT#2) = [0] [0] [0] p(MERGESORT#3) = [0] [0] [0] p(MSPLIT) = [0] [0] [0] p(MSPLIT#1) = [0] [0] [0] p(MSPLIT#2) = [0] [0] [0] p(MSPLIT#3) = [0] [0] [0] p(c) = [0] [0] [0] p(c1) = [0] [0] [0] p(c10) = [0] [0] [0] p(c11) = [0] [0] [0] p(c12) = [0] [0] [0] p(c13) = [0] [0] [0] p(c14) = [0] [0] [0] p(c15) = [0] [0] [0] p(c16) = [0] [0] [0] p(c17) = [0] [0] [0] p(c18) = [0] [0] [0] p(c19) = [0] [0] [0] p(c2) = [0] [0] [0] p(c20) = [0] [0] [0] p(c21) = [0] [0] [0] p(c22) = [0] [0] [0] p(c23) = [0] [0] [0] p(c24) = [0] [0] [0] p(c25) = [0] [0] [0] p(c26) = [0] [0] [0] p(c27) = [0] [0] [0] p(c28) = [0] [0] [0] p(c29) = [0] [0] [0] p(c3) = [0] [0] [0] p(c30) = [0] [0] [0] p(c31) = [0] [0] [0] p(c32) = [0] [0] [0] p(c33) = [0] [0] [0] p(c34) = [0] [0] [0] p(c35) = [0] [0] [0] p(c4) = [0] [0] [0] p(c5) = [0] [0] [0] p(c6) = [0] [0] [0] p(c7) = [0] [0] [0] p(c8) = [0] [0] [0] p(c9) = [0] [0] [0] p(merge) = [0 0 0] [0 0 1] [1] [0 1 0] x1 + [1 0 1] x2 + [1] [0 1 0] [1 1 0] [0] p(merge#1) = [0] [0] [0] p(merge#2) = [0 1 0] [1] [0 0 1] x1 + [0] [0 0 0] [0] p(merge#3) = [0 0 0] [1] [0 1 0] x4 + [1] [0 0 0] [0] p(mergesort) = [1 0 0] [0] [1 0 1] x1 + [1] [1 1 1] [1] p(mergesort#1) = [0] [0] [0] p(mergesort#2) = [1 0 0] [0] [0 0 1] x1 + [0] [0 0 0] [0] p(mergesort#3) = [0] [1] [1] p(msplit) = [0 1 1] [0] [1 0 0] x1 + [0] [0 0 0] [1] p(msplit#1) = [0 1 1] [0] [1 0 0] x1 + [0] [0 0 0] [1] p(msplit#2) = [0 1 1] [0 1 0] [1] [0 1 0] x1 + [0 1 0] x2 + [0] [0 0 0] [0 0 0] [1] p(msplit#3) = [1 0 1] [0 1 0] [0 1 0] [1] [1 0 0] x1 + [0 1 0] x2 + [0 1 0] x3 + [0] [0 0 0] [0 0 0] [0 0 0] [1] p(nil) = [0] [0] [0] p(tuple#2) = [0 1 1] [0 1 1] [0] [0 1 0] x1 + [0 1 0] x2 + [0] [0 0 0] [0 0 0] [1] p(#CKLT#) = [0] [0] [0] p(#COMPARE#) = [0] [0] [0] p(#LESS#) = [0] [0] [0] p(#cklt#) = [0] [0] [0] p(#compare#) = [0] [0] [0] p(#less#) = [0] [0] [0] p(MERGE#) = [0] [1] [0] p(MERGE#1#) = [0] [0] [0] p(MERGE#2#) = [0] [0] [0] p(MERGE#3#) = [0] [0] [0] p(MERGESORT#) = [0 1 0] [0] [0 0 0] x1 + [1] [0 1 0] [1] p(MERGESORT#1#) = [0 1 0] [0] [0 1 0] x1 + [1] [0 0 1] [0] p(MERGESORT#2#) = [0 1 1] [0 1 0] [0] [0 0 0] x1 + [1 0 0] x2 + [1] [0 1 1] [0 1 0] [1] p(MERGESORT#3#) = [0 1 0] [1] [0 1 0] x1 + [0] [0 0 0] [1] p(MSPLIT#) = [0] [0] [0] p(MSPLIT#1#) = [0] [0] [0] p(MSPLIT#2#) = [0] [0] [0] p(MSPLIT#3#) = [0] [0] [0] p(merge#) = [0] [0] [0] p(merge#1#) = [0] [0] [0] p(merge#2#) = [0] [0] [0] p(merge#3#) = [0] [0] [0] p(mergesort#) = [0] [0] [0] p(mergesort#1#) = [0] [0] [0] p(mergesort#2#) = [0] [0] [0] p(mergesort#3#) = [0] [0] [0] p(msplit#) = [0] [0] [0] p(msplit#1#) = [0] [0] [0] p(msplit#2#) = [0] [0] [0] p(msplit#3#) = [0] [0] [0] p(c_1) = [0] [0] [0] p(c_2) = [0] [0] [0] p(c_3) = [0] [0] [0] p(c_4) = [0] [0] [0] p(c_5) = [0] [0] [0] p(c_6) = [0] [0] [0] p(c_7) = [0] [0] [0] p(c_8) = [0] [0] [0] p(c_9) = [1 0 0] [0] [0 0 0] x1 + [0] [0 1 0] [0] p(c_10) = [1 0 0] [0] [0 0 1] x1 + [0] [0 0 0] [1] p(c_11) = [0] [0] [0] p(c_12) = [1 0 0] [0] [0 0 0] x1 + [0] [0 1 1] [1] p(c_13) = [0] [0] [0] p(c_14) = [1 0 0] [1 0 0] [0] [0 0 0] x1 + [0 0 0] x2 + [0] [0 1 0] [0 0 0] [0] p(c_15) = [1 0 0] [1 0 0] [1] [0 0 0] x1 + [0 0 0] x2 + [0] [0 0 0] [0 1 0] [0] p(c_16) = [0] [0] [0] p(c_17) = [0] [0] [0] p(c_18) = [0] [0] [0] p(c_19) = [0] [0] [0] p(c_20) = [0] [0] [0] p(c_21) = [0] [0] [0] p(c_22) = [0] [0] [0] p(c_23) = [0] [0] [0] p(c_24) = [0] [0] [0] p(c_25) = [0] [0] [0] p(c_26) = [0] [0] [0] p(c_27) = [0] [0] [0] p(c_28) = [0] [0] [0] p(c_29) = [0] [0] [0] p(c_30) = [0] [0] [0] p(c_31) = [0] [0] [0] p(c_32) = [0] [0] [0] p(c_33) = [0] [0] [0] p(c_34) = [0] [0] [0] p(c_35) = [0] [0] [0] p(c_36) = [0] [0] [0] p(c_37) = [0] [0] [0] p(c_38) = [0] [0] [0] p(c_39) = [0] [0] [0] p(c_40) = [0] [0] [0] p(c_41) = [0] [0] [0] p(c_42) = [0] [0] [0] p(c_43) = [0] [0] [0] p(c_44) = [0] [0] [0] p(c_45) = [0] [0] [0] p(c_46) = [0] [0] [0] p(c_47) = [0] [0] [0] p(c_48) = [0] [0] [0] p(c_49) = [0] [0] [0] p(c_50) = [0] [0] [0] p(c_51) = [0] [0] [0] p(c_52) = [0] [0] [0] p(c_53) = [0] [0] [0] p(c_54) = [0] [0] [0] p(c_55) = [0] [0] [0] p(c_56) = [0] [0] [0] p(c_57) = [0] [0] [0] p(c_58) = [0] [0] [0] p(c_59) = [0] [0] [0] p(c_60) = [0] [0] [0] p(c_61) = [0] [0] [0] p(c_62) = [0] [0] [0] p(c_63) = [0] [0] [0] p(c_64) = [0] [0] [0] p(c_65) = [0] [0] [0] p(c_66) = [0] [0] [0] p(c_67) = [0] [0] [0] p(c_68) = [0] [0] [0] p(c_69) = [0] [0] [0] p(c_70) = [0] [0] [0] p(c_71) = [0] [0] [0] Following rules are strictly oriented: MERGESORT#3#(tuple#2(z0,z1)) = [0 1 0] [0 1 0] [1] [0 1 0] z0 + [0 1 0] z1 + [0] [0 0 0] [0 0 0] [1] > [0 1 0] [0] [0 0 0] z0 + [0] [0 0 0] [1] = c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) Following rules are (at-least) weakly oriented: MERGESORT#(z0) = [0 1 0] [0] [0 0 0] z0 + [1] [0 1 0] [1] >= [0 1 0] [0] [0 0 0] z0 + [0] [0 1 0] [1] = c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) = [0 1 0] [0 1 1] [0] [0 1 0] z0 + [0 1 1] z1 + [1] [0 0 0] [0 0 0] [1] >= [0 1 0] [0 1 1] [0] [0 1 0] z0 + [0 1 1] z1 + [1] [0 0 0] [0 0 0] [1] = c_10(MERGESORT#2#(z1,z0)) MERGESORT#2#(::(z0,z1),z2) = [0 1 0] [0 1 1] [0 1 0] [1] [0 0 0] z0 + [0 0 0] z1 + [1 0 0] z2 + [1] [0 1 0] [0 1 1] [0 1 0] [2] >= [0 1 0] [0 1 1] [0 1 0] [1] [0 0 0] z0 + [0 0 0] z1 + [0 0 0] z2 + [0] [0 1 0] [0 1 1] [0 1 0] [2] = c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1))))) MERGESORT#3#(tuple#2(z0,z1)) = [0 1 0] [0 1 0] [1] [0 1 0] z0 + [0 1 0] z1 + [0] [0 0 0] [0 0 0] [1] >= [0 1 0] [1] [0 0 0] z1 + [0] [0 0 0] [1] = c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) msplit(z0) = [0 1 1] [0] [1 0 0] z0 + [0] [0 0 0] [1] >= [0 1 1] [0] [1 0 0] z0 + [0] [0 0 0] [1] = msplit#1(z0) msplit#1(::(z0,z1)) = [0 1 0] [0 1 1] [1] [0 1 0] z0 + [0 1 0] z1 + [0] [0 0 0] [0 0 0] [1] >= [0 1 0] [0 1 1] [1] [0 1 0] z0 + [0 1 0] z1 + [0] [0 0 0] [0 0 0] [1] = msplit#2(z1,z0) msplit#1(nil()) = [0] [0] [1] >= [0] [0] [1] = tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) = [0 1 0] [0 1 1] [0 1 0] [2] [0 1 0] z0 + [0 1 1] z1 + [0 1 0] z2 + [0] [0 0 0] [0 0 0] [0 0 0] [1] >= [0 1 0] [0 1 1] [0 1 0] [2] [0 1 0] z0 + [0 1 1] z1 + [0 1 0] z2 + [0] [0 0 0] [0 0 0] [0 0 0] [1] = msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) = [0 1 0] [1] [0 1 0] z0 + [0] [0 0 0] [1] >= [0 1 0] [1] [0 1 0] z0 + [0] [0 0 0] [1] = tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) = [0 1 1] [0 1 1] [0 1 0] [0 1 0] [2] [0 1 1] z0 + [0 1 1] z1 + [0 1 0] z2 + [0 1 0] z3 + [0] [0 0 0] [0 0 0] [0 0 0] [0 0 0] [1] >= [0 1 1] [0 1 1] [0 1 0] [0 1 0] [2] [0 1 1] z0 + [0 1 1] z1 + [0 1 0] z2 + [0 1 0] z3 + [0] [0 0 0] [0 0 0] [0 0 0] [0 0 0] [1] = tuple#2(::(z2,z0),::(z3,z1)) ***** Step 7.a:3.a:1.b:1.a:2: Assumption. WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1))))) MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/1,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown, timeBCUB = Unknown, timeBCLB = Unknown}} + Details: () ***** Step 7.a:3.a:1.b:1.b:1: RemoveWeakSuffixes. WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1))))) MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/1,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:W:MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) -->_1 MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)):2 2:W:MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) -->_1 MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1))))):3 3:W:MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1))))) -->_1 MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)):5 -->_1 MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)):4 4:W:MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) -->_2 MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)):1 5:W:MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) -->_2 MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)):1 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 1: MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) 5: MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) 3: MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1))))) 2: MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) 4: MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) ***** Step 7.a:3.a:1.b:1.b:2: EmptyProcessor. WORST_CASE(?,O(1)) + Considered Problem: - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/1,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). *** Step 7.a:3.b:1: PredecessorEstimationCP. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) - Weak DPs: MERGESORT#(z0) -> MERGESORT#1#(z0) MERGESORT#1#(::(z0,z1)) -> MERGESORT#2#(z1,z0) MERGESORT#2#(::(z0,z1),z2) -> MERGESORT#3#(msplit(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> MERGE#(mergesort(z0),mergesort(z1)) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z0) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z1) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/1,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 5: MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) The strictly oriented rules are moved into the weak component. **** Step 7.a:3.b:1.a:1: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) - Weak DPs: MERGESORT#(z0) -> MERGESORT#1#(z0) MERGESORT#1#(::(z0,z1)) -> MERGESORT#2#(z1,z0) MERGESORT#2#(::(z0,z1),z2) -> MERGESORT#3#(msplit(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> MERGE#(mergesort(z0),mergesort(z1)) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z0) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z1) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/1,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_2) = {1}, uargs(c_3) = {1}, uargs(c_5) = {1}, uargs(c_7) = {1}, uargs(c_8) = {1} Following symbols are considered usable: {merge,merge#1,merge#2,merge#3,mergesort,mergesort#1,mergesort#2,mergesort#3,msplit,msplit#1,msplit#2 ,msplit#3,#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE#,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT# ,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2#,MSPLIT#3#,merge#,merge#1#,merge#2# ,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit#,msplit#1#,msplit#2#,msplit#3#} TcT has computed the following interpretation: p(#0) = [0] p(#CKLT) = [4] x1 + [0] p(#COMPARE) = [1] x2 + [0] p(#EQ) = [0] p(#GT) = [0] p(#LESS) = [1] x2 + [1] p(#LT) = [1] p(#cklt) = [5] x1 + [0] p(#compare) = [2] x1 + [2] p(#false) = [0] p(#less) = [0] p(#neg) = [0] p(#pos) = [1] x1 + [4] p(#s) = [1] x1 + [1] p(#true) = [0] p(::) = [1] x2 + [2] p(MERGE) = [1] x1 + [1] x2 + [1] p(MERGE#1) = [1] x2 + [4] p(MERGE#2) = [1] x1 + [0] p(MERGE#3) = [2] x1 + [1] x3 + [1] x4 + [1] x5 + [1] p(MERGESORT) = [2] x1 + [1] p(MERGESORT#1) = [4] x1 + [2] p(MERGESORT#2) = [1] x1 + [1] x2 + [0] p(MERGESORT#3) = [1] p(MSPLIT) = [4] x1 + [0] p(MSPLIT#1) = [4] x1 + [1] p(MSPLIT#2) = [1] x2 + [4] p(MSPLIT#3) = [1] x3 + [4] p(c) = [0] p(c1) = [0] p(c10) = [1] p(c11) = [0] p(c12) = [0] p(c13) = [0] p(c14) = [1] p(c15) = [1] x1 + [1] p(c16) = [1] x1 + [0] p(c17) = [1] x1 + [0] p(c18) = [1] p(c19) = [4] p(c2) = [0] p(c20) = [0] p(c21) = [1] x1 + [0] p(c22) = [1] x1 + [1] p(c23) = [0] p(c24) = [1] p(c25) = [0] p(c26) = [1] p(c27) = [1] p(c28) = [0] p(c29) = [1] x2 + [0] p(c3) = [1] p(c30) = [1] x1 + [0] p(c31) = [1] x1 + [0] p(c32) = [2] p(c33) = [4] p(c34) = [0] p(c35) = [2] p(c4) = [0] p(c5) = [1] p(c6) = [0] p(c7) = [0] p(c8) = [2] p(c9) = [4] p(merge) = [1] x1 + [1] x2 + [0] p(merge#1) = [1] x1 + [1] x2 + [0] p(merge#2) = [1] x1 + [1] x3 + [2] p(merge#3) = [1] x3 + [1] x5 + [4] p(mergesort) = [1] x1 + [0] p(mergesort#1) = [1] x1 + [0] p(mergesort#2) = [1] x1 + [2] p(mergesort#3) = [1] x1 + [0] p(msplit) = [1] x1 + [0] p(msplit#1) = [1] x1 + [0] p(msplit#2) = [1] x1 + [2] p(msplit#3) = [1] x1 + [4] p(nil) = [0] p(tuple#2) = [1] x1 + [1] x2 + [0] p(#CKLT#) = [1] x1 + [1] p(#COMPARE#) = [1] x2 + [0] p(#LESS#) = [0] p(#cklt#) = [1] p(#compare#) = [1] x2 + [1] p(#less#) = [2] x1 + [0] p(MERGE#) = [2] x1 + [0] p(MERGE#1#) = [2] x1 + [0] p(MERGE#2#) = [2] x3 + [4] p(MERGE#3#) = [2] x3 + [4] p(MERGESORT#) = [2] x1 + [0] p(MERGESORT#1#) = [2] x1 + [0] p(MERGESORT#2#) = [2] x1 + [4] p(MERGESORT#3#) = [2] x1 + [0] p(MSPLIT#) = [4] p(MSPLIT#1#) = [4] x1 + [1] p(MSPLIT#2#) = [1] x1 + [1] p(MSPLIT#3#) = [1] x1 + [1] x2 + [2] p(merge#) = [1] x1 + [1] x2 + [1] p(merge#1#) = [1] x1 + [1] p(merge#2#) = [1] x1 + [1] p(merge#3#) = [1] x2 + [4] x5 + [1] p(mergesort#) = [1] x1 + [4] p(mergesort#1#) = [1] p(mergesort#2#) = [1] x1 + [4] p(mergesort#3#) = [1] x1 + [0] p(msplit#) = [4] x1 + [0] p(msplit#1#) = [1] p(msplit#2#) = [4] x1 + [1] p(msplit#3#) = [0] p(c_1) = [1] x1 + [4] p(c_2) = [1] x1 + [0] p(c_3) = [1] x1 + [0] p(c_4) = [4] p(c_5) = [1] x1 + [0] p(c_6) = [1] p(c_7) = [1] x1 + [0] p(c_8) = [1] x1 + [1] p(c_9) = [4] p(c_10) = [1] p(c_11) = [0] p(c_12) = [1] p(c_13) = [1] p(c_14) = [2] x1 + [1] p(c_15) = [1] x2 + [0] p(c_16) = [1] x1 + [1] p(c_17) = [1] x1 + [1] p(c_18) = [2] p(c_19) = [1] p(c_20) = [0] p(c_21) = [0] p(c_22) = [1] p(c_23) = [1] p(c_24) = [0] p(c_25) = [2] p(c_26) = [4] p(c_27) = [2] p(c_28) = [1] p(c_29) = [0] p(c_30) = [1] x1 + [0] p(c_31) = [0] p(c_32) = [4] p(c_33) = [2] p(c_34) = [1] p(c_35) = [1] p(c_36) = [1] p(c_37) = [0] p(c_38) = [0] p(c_39) = [1] p(c_40) = [0] p(c_41) = [1] p(c_42) = [0] p(c_43) = [0] p(c_44) = [0] p(c_45) = [2] x1 + [1] p(c_46) = [0] p(c_47) = [2] p(c_48) = [0] p(c_49) = [1] x1 + [1] p(c_50) = [1] p(c_51) = [4] x1 + [2] p(c_52) = [0] p(c_53) = [1] x1 + [1] p(c_54) = [0] p(c_55) = [0] p(c_56) = [1] x1 + [1] p(c_57) = [1] p(c_58) = [1] x1 + [1] p(c_59) = [0] p(c_60) = [1] x1 + [0] p(c_61) = [0] p(c_62) = [1] p(c_63) = [0] p(c_64) = [1] p(c_65) = [0] p(c_66) = [1] p(c_67) = [1] p(c_68) = [0] p(c_69) = [1] x1 + [0] p(c_70) = [2] p(c_71) = [1] Following rules are strictly oriented: MERGE#3#(#true(),z0,z1,z2,z3) = [2] z1 + [4] > [2] z1 + [1] = c_8(MERGE#(z1,::(z2,z3))) Following rules are (at-least) weakly oriented: MERGE#(z0,z1) = [2] z0 + [0] >= [2] z0 + [0] = c_2(MERGE#1#(z0,z1)) MERGE#1#(::(z0,z1),z2) = [2] z1 + [4] >= [2] z1 + [4] = c_3(MERGE#2#(z2,z0,z1)) MERGE#2#(::(z0,z1),z2,z3) = [2] z3 + [4] >= [2] z3 + [4] = c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) MERGE#3#(#false(),z0,z1,z2,z3) = [2] z1 + [4] >= [2] z1 + [4] = c_7(MERGE#(::(z0,z1),z3)) MERGESORT#(z0) = [2] z0 + [0] >= [2] z0 + [0] = MERGESORT#1#(z0) MERGESORT#1#(::(z0,z1)) = [2] z1 + [4] >= [2] z1 + [4] = MERGESORT#2#(z1,z0) MERGESORT#2#(::(z0,z1),z2) = [2] z1 + [8] >= [2] z1 + [8] = MERGESORT#3#(msplit(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) = [2] z0 + [2] z1 + [0] >= [2] z0 + [0] = MERGE#(mergesort(z0),mergesort(z1)) MERGESORT#3#(tuple#2(z0,z1)) = [2] z0 + [2] z1 + [0] >= [2] z0 + [0] = MERGESORT#(z0) MERGESORT#3#(tuple#2(z0,z1)) = [2] z0 + [2] z1 + [0] >= [2] z1 + [0] = MERGESORT#(z1) merge(z0,z1) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = merge#1(z0,z1) merge#1(::(z0,z1),z2) = [1] z1 + [1] z2 + [2] >= [1] z1 + [1] z2 + [2] = merge#2(z2,z0,z1) merge#1(nil(),z0) = [1] z0 + [0] >= [1] z0 + [0] = z0 merge#2(::(z0,z1),z2,z3) = [1] z1 + [1] z3 + [4] >= [1] z1 + [1] z3 + [4] = merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) = [1] z1 + [2] >= [1] z1 + [2] = ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) = [1] z1 + [1] z3 + [4] >= [1] z1 + [1] z3 + [4] = ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) = [1] z1 + [1] z3 + [4] >= [1] z1 + [1] z3 + [4] = ::(z0,merge(z1,::(z2,z3))) mergesort(z0) = [1] z0 + [0] >= [1] z0 + [0] = mergesort#1(z0) mergesort#1(::(z0,z1)) = [1] z1 + [2] >= [1] z1 + [2] = mergesort#2(z1,z0) mergesort#1(nil()) = [0] >= [0] = nil() mergesort#2(::(z0,z1),z2) = [1] z1 + [4] >= [1] z1 + [4] = mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) = [2] >= [2] = ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = merge(mergesort(z0),mergesort(z1)) msplit(z0) = [1] z0 + [0] >= [1] z0 + [0] = msplit#1(z0) msplit#1(::(z0,z1)) = [1] z1 + [2] >= [1] z1 + [2] = msplit#2(z1,z0) msplit#1(nil()) = [0] >= [0] = tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) = [1] z1 + [4] >= [1] z1 + [4] = msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) = [2] >= [2] = tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) = [1] z0 + [1] z1 + [4] >= [1] z0 + [1] z1 + [4] = tuple#2(::(z2,z0),::(z3,z1)) **** Step 7.a:3.b:1.a:2: Assumption. WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) - Weak DPs: MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) MERGESORT#(z0) -> MERGESORT#1#(z0) MERGESORT#1#(::(z0,z1)) -> MERGESORT#2#(z1,z0) MERGESORT#2#(::(z0,z1),z2) -> MERGESORT#3#(msplit(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> MERGE#(mergesort(z0),mergesort(z1)) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z0) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z1) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/1,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown, timeBCUB = Unknown, timeBCLB = Unknown}} + Details: () **** Step 7.a:3.b:1.b:1: PredecessorEstimationCP. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) - Weak DPs: MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) MERGESORT#(z0) -> MERGESORT#1#(z0) MERGESORT#1#(::(z0,z1)) -> MERGESORT#2#(z1,z0) MERGESORT#2#(::(z0,z1),z2) -> MERGESORT#3#(msplit(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> MERGE#(mergesort(z0),mergesort(z1)) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z0) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z1) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/1,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 4: MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) The strictly oriented rules are moved into the weak component. ***** Step 7.a:3.b:1.b:1.a:1: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) - Weak DPs: MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) MERGESORT#(z0) -> MERGESORT#1#(z0) MERGESORT#1#(::(z0,z1)) -> MERGESORT#2#(z1,z0) MERGESORT#2#(::(z0,z1),z2) -> MERGESORT#3#(msplit(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> MERGE#(mergesort(z0),mergesort(z1)) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z0) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z1) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/1,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_2) = {1}, uargs(c_3) = {1}, uargs(c_5) = {1}, uargs(c_7) = {1}, uargs(c_8) = {1} Following symbols are considered usable: {merge,merge#1,merge#2,merge#3,mergesort,mergesort#1,mergesort#2,mergesort#3,msplit,msplit#1,msplit#2 ,msplit#3,#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE#,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT# ,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2#,MSPLIT#3#,merge#,merge#1#,merge#2# ,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit#,msplit#1#,msplit#2#,msplit#3#} TcT has computed the following interpretation: p(#0) = [0] p(#CKLT) = [1] x1 + [1] p(#COMPARE) = [1] x1 + [2] p(#EQ) = [0] p(#GT) = [4] p(#LESS) = [1] x1 + [1] x2 + [0] p(#LT) = [0] p(#cklt) = [2] x1 + [1] p(#compare) = [7] x2 + [7] p(#false) = [0] p(#less) = [0] p(#neg) = [1] p(#pos) = [1] x1 + [0] p(#s) = [1] x1 + [1] p(#true) = [0] p(::) = [1] x1 + [1] x2 + [1] p(MERGE) = [1] x1 + [2] x2 + [0] p(MERGE#1) = [1] x1 + [0] p(MERGE#2) = [2] p(MERGE#3) = [4] x1 + [1] x3 + [1] p(MERGESORT) = [0] p(MERGESORT#1) = [1] x1 + [4] p(MERGESORT#2) = [4] x1 + [0] p(MERGESORT#3) = [4] x1 + [0] p(MSPLIT) = [1] x1 + [1] p(MSPLIT#1) = [4] x1 + [1] p(MSPLIT#2) = [1] x1 + [2] p(MSPLIT#3) = [4] x1 + [0] p(c) = [1] p(c1) = [1] p(c10) = [2] p(c11) = [0] p(c12) = [1] p(c13) = [2] p(c14) = [1] x1 + [0] p(c15) = [1] x1 + [1] x2 + [0] p(c16) = [0] p(c17) = [1] p(c18) = [1] p(c19) = [0] p(c2) = [0] p(c20) = [0] p(c21) = [0] p(c22) = [1] p(c23) = [1] x1 + [1] p(c24) = [2] p(c25) = [0] p(c26) = [0] p(c27) = [4] p(c28) = [1] x2 + [1] p(c29) = [1] x2 + [1] p(c3) = [1] p(c30) = [1] p(c31) = [1] p(c32) = [2] p(c33) = [0] p(c34) = [0] p(c35) = [4] p(c4) = [1] p(c5) = [1] p(c6) = [0] p(c7) = [1] p(c8) = [1] x1 + [1] p(c9) = [0] p(merge) = [1] x1 + [1] x2 + [0] p(merge#1) = [1] x1 + [1] x2 + [0] p(merge#2) = [1] x1 + [1] x2 + [1] x3 + [1] p(merge#3) = [1] x2 + [1] x3 + [1] x4 + [1] x5 + [2] p(mergesort) = [4] x1 + [0] p(mergesort#1) = [4] x1 + [0] p(mergesort#2) = [4] x1 + [4] x2 + [4] p(mergesort#3) = [4] x1 + [0] p(msplit) = [1] x1 + [0] p(msplit#1) = [1] x1 + [0] p(msplit#2) = [1] x1 + [1] x2 + [1] p(msplit#3) = [1] x1 + [1] x2 + [1] x3 + [2] p(nil) = [0] p(tuple#2) = [1] x1 + [1] x2 + [0] p(#CKLT#) = [1] x1 + [4] p(#COMPARE#) = [2] x1 + [0] p(#LESS#) = [1] x2 + [1] p(#cklt#) = [2] x1 + [4] p(#compare#) = [1] x2 + [1] p(#less#) = [1] p(MERGE#) = [1] x2 + [0] p(MERGE#1#) = [1] x2 + [0] p(MERGE#2#) = [1] x1 + [0] p(MERGE#3#) = [1] x4 + [1] x5 + [1] p(MERGESORT#) = [5] x1 + [2] p(MERGESORT#1#) = [5] x1 + [2] p(MERGESORT#2#) = [5] x1 + [5] x2 + [7] p(MERGESORT#3#) = [5] x1 + [2] p(MSPLIT#) = [1] p(MSPLIT#1#) = [2] x1 + [0] p(MSPLIT#2#) = [4] p(MSPLIT#3#) = [1] x2 + [1] p(merge#) = [1] x1 + [1] p(merge#1#) = [2] p(merge#2#) = [2] x2 + [4] p(merge#3#) = [1] x1 + [4] x2 + [1] x3 + [1] x5 + [1] p(mergesort#) = [4] x1 + [2] p(mergesort#1#) = [0] p(mergesort#2#) = [1] p(mergesort#3#) = [1] x1 + [0] p(msplit#) = [0] p(msplit#1#) = [4] x1 + [1] p(msplit#2#) = [4] x1 + [1] p(msplit#3#) = [1] x1 + [1] x2 + [2] p(c_1) = [1] x1 + [2] x2 + [1] p(c_2) = [1] x1 + [0] p(c_3) = [1] x1 + [0] p(c_4) = [0] p(c_5) = [1] x1 + [0] p(c_6) = [1] p(c_7) = [1] x1 + [0] p(c_8) = [1] x1 + [0] p(c_9) = [1] p(c_10) = [1] p(c_11) = [4] p(c_12) = [1] p(c_13) = [0] p(c_14) = [1] p(c_15) = [1] x2 + [2] p(c_16) = [1] x1 + [1] p(c_17) = [1] p(c_18) = [0] p(c_19) = [2] x1 + [0] p(c_20) = [0] p(c_21) = [4] p(c_22) = [4] p(c_23) = [1] p(c_24) = [4] p(c_25) = [0] p(c_26) = [1] p(c_27) = [4] p(c_28) = [1] p(c_29) = [0] p(c_30) = [1] p(c_31) = [0] p(c_32) = [1] p(c_33) = [4] p(c_34) = [0] p(c_35) = [0] p(c_36) = [0] p(c_37) = [0] p(c_38) = [1] p(c_39) = [1] p(c_40) = [1] p(c_41) = [0] p(c_42) = [0] p(c_43) = [4] p(c_44) = [1] p(c_45) = [1] x1 + [1] p(c_46) = [1] p(c_47) = [0] p(c_48) = [0] p(c_49) = [1] x1 + [0] p(c_50) = [1] p(c_51) = [1] x1 + [2] p(c_52) = [1] p(c_53) = [0] p(c_54) = [1] x1 + [1] p(c_55) = [0] p(c_56) = [1] p(c_57) = [0] p(c_58) = [4] p(c_59) = [1] p(c_60) = [0] p(c_61) = [1] x1 + [0] p(c_62) = [2] p(c_63) = [1] x1 + [0] p(c_64) = [2] p(c_65) = [0] p(c_66) = [1] x1 + [1] p(c_67) = [4] x1 + [1] p(c_68) = [2] p(c_69) = [1] x1 + [0] p(c_70) = [0] p(c_71) = [4] Following rules are strictly oriented: MERGE#3#(#false(),z0,z1,z2,z3) = [1] z2 + [1] z3 + [1] > [1] z3 + [0] = c_7(MERGE#(::(z0,z1),z3)) Following rules are (at-least) weakly oriented: MERGE#(z0,z1) = [1] z1 + [0] >= [1] z1 + [0] = c_2(MERGE#1#(z0,z1)) MERGE#1#(::(z0,z1),z2) = [1] z2 + [0] >= [1] z2 + [0] = c_3(MERGE#2#(z2,z0,z1)) MERGE#2#(::(z0,z1),z2,z3) = [1] z0 + [1] z1 + [1] >= [1] z0 + [1] z1 + [1] = c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) MERGE#3#(#true(),z0,z1,z2,z3) = [1] z2 + [1] z3 + [1] >= [1] z2 + [1] z3 + [1] = c_8(MERGE#(z1,::(z2,z3))) MERGESORT#(z0) = [5] z0 + [2] >= [5] z0 + [2] = MERGESORT#1#(z0) MERGESORT#1#(::(z0,z1)) = [5] z0 + [5] z1 + [7] >= [5] z0 + [5] z1 + [7] = MERGESORT#2#(z1,z0) MERGESORT#2#(::(z0,z1),z2) = [5] z0 + [5] z1 + [5] z2 + [12] >= [5] z0 + [5] z1 + [5] z2 + [12] = MERGESORT#3#(msplit(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) = [5] z0 + [5] z1 + [2] >= [4] z1 + [0] = MERGE#(mergesort(z0),mergesort(z1)) MERGESORT#3#(tuple#2(z0,z1)) = [5] z0 + [5] z1 + [2] >= [5] z0 + [2] = MERGESORT#(z0) MERGESORT#3#(tuple#2(z0,z1)) = [5] z0 + [5] z1 + [2] >= [5] z1 + [2] = MERGESORT#(z1) merge(z0,z1) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = merge#1(z0,z1) merge#1(::(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [1] >= [1] z0 + [1] z1 + [1] z2 + [1] = merge#2(z2,z0,z1) merge#1(nil(),z0) = [1] z0 + [0] >= [1] z0 + [0] = z0 merge#2(::(z0,z1),z2,z3) = [1] z0 + [1] z1 + [1] z2 + [1] z3 + [2] >= [1] z0 + [1] z1 + [1] z2 + [1] z3 + [2] = merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) = [1] z0 + [1] z1 + [1] >= [1] z0 + [1] z1 + [1] = ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) = [1] z0 + [1] z1 + [1] z2 + [1] z3 + [2] >= [1] z0 + [1] z1 + [1] z2 + [1] z3 + [2] = ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) = [1] z0 + [1] z1 + [1] z2 + [1] z3 + [2] >= [1] z0 + [1] z1 + [1] z2 + [1] z3 + [2] = ::(z0,merge(z1,::(z2,z3))) mergesort(z0) = [4] z0 + [0] >= [4] z0 + [0] = mergesort#1(z0) mergesort#1(::(z0,z1)) = [4] z0 + [4] z1 + [4] >= [4] z0 + [4] z1 + [4] = mergesort#2(z1,z0) mergesort#1(nil()) = [0] >= [0] = nil() mergesort#2(::(z0,z1),z2) = [4] z0 + [4] z1 + [4] z2 + [8] >= [4] z0 + [4] z1 + [4] z2 + [8] = mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) = [4] z0 + [4] >= [1] z0 + [1] = ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) = [4] z0 + [4] z1 + [0] >= [4] z0 + [4] z1 + [0] = merge(mergesort(z0),mergesort(z1)) msplit(z0) = [1] z0 + [0] >= [1] z0 + [0] = msplit#1(z0) msplit#1(::(z0,z1)) = [1] z0 + [1] z1 + [1] >= [1] z0 + [1] z1 + [1] = msplit#2(z1,z0) msplit#1(nil()) = [0] >= [0] = tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [2] >= [1] z0 + [1] z1 + [1] z2 + [2] = msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) = [1] z0 + [1] >= [1] z0 + [1] = tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) = [1] z0 + [1] z1 + [1] z2 + [1] z3 + [2] >= [1] z0 + [1] z1 + [1] z2 + [1] z3 + [2] = tuple#2(::(z2,z0),::(z3,z1)) ***** Step 7.a:3.b:1.b:1.a:2: Assumption. WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) - Weak DPs: MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) MERGESORT#(z0) -> MERGESORT#1#(z0) MERGESORT#1#(::(z0,z1)) -> MERGESORT#2#(z1,z0) MERGESORT#2#(::(z0,z1),z2) -> MERGESORT#3#(msplit(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> MERGE#(mergesort(z0),mergesort(z1)) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z0) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z1) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/1,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown, timeBCUB = Unknown, timeBCLB = Unknown}} + Details: () ***** Step 7.a:3.b:1.b:1.b:1: PredecessorEstimationCP. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) - Weak DPs: MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) MERGESORT#(z0) -> MERGESORT#1#(z0) MERGESORT#1#(::(z0,z1)) -> MERGESORT#2#(z1,z0) MERGESORT#2#(::(z0,z1),z2) -> MERGESORT#3#(msplit(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> MERGE#(mergesort(z0),mergesort(z1)) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z0) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z1) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/1,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 2: MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) Consider the set of all dependency pairs 1: MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) 2: MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) 3: MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) 4: MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) 5: MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) 6: MERGESORT#(z0) -> MERGESORT#1#(z0) 7: MERGESORT#1#(::(z0,z1)) -> MERGESORT#2#(z1,z0) 8: MERGESORT#2#(::(z0,z1),z2) -> MERGESORT#3#(msplit(::(z2,::(z0,z1)))) 9: MERGESORT#3#(tuple#2(z0,z1)) -> MERGE#(mergesort(z0),mergesort(z1)) 10: MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z0) 11: MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z1) Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1)) BEST_CASE TIME (?,?) SPACE(?,?)on application of the dependency pairs {2} These cover all (indirect) predecessors of dependency pairs {2,3,4,5} their number of applications is equally bounded. The dependency pairs are shifted into the weak component. ****** Step 7.a:3.b:1.b:1.b:1.a:1: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) - Weak DPs: MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) MERGESORT#(z0) -> MERGESORT#1#(z0) MERGESORT#1#(::(z0,z1)) -> MERGESORT#2#(z1,z0) MERGESORT#2#(::(z0,z1),z2) -> MERGESORT#3#(msplit(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> MERGE#(mergesort(z0),mergesort(z1)) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z0) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z1) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/1,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_2) = {1}, uargs(c_3) = {1}, uargs(c_5) = {1}, uargs(c_7) = {1}, uargs(c_8) = {1} Following symbols are considered usable: {merge,merge#1,merge#2,merge#3,mergesort,mergesort#1,mergesort#2,mergesort#3,msplit,msplit#1,msplit#2 ,msplit#3,#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE#,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT# ,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2#,MSPLIT#3#,merge#,merge#1#,merge#2# ,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit#,msplit#1#,msplit#2#,msplit#3#} TcT has computed the following interpretation: p(#0) = [1] p(#CKLT) = [2] x1 + [1] p(#COMPARE) = [0] p(#EQ) = [0] p(#GT) = [4] p(#LESS) = [1] x1 + [1] x2 + [0] p(#LT) = [0] p(#cklt) = [3] x1 + [2] p(#compare) = [5] x1 + [2] x2 + [0] p(#false) = [0] p(#less) = [1] x1 + [0] p(#neg) = [2] p(#pos) = [1] x1 + [0] p(#s) = [1] x1 + [0] p(#true) = [0] p(::) = [1] x2 + [2] p(MERGE) = [1] x1 + [0] p(MERGE#1) = [1] x1 + [0] p(MERGE#2) = [1] x2 + [1] x3 + [1] p(MERGE#3) = [1] x1 + [2] x4 + [0] p(MERGESORT) = [1] x1 + [1] p(MERGESORT#1) = [4] x1 + [1] p(MERGESORT#2) = [4] x1 + [1] p(MERGESORT#3) = [0] p(MSPLIT) = [1] p(MSPLIT#1) = [0] p(MSPLIT#2) = [4] x1 + [1] p(MSPLIT#3) = [0] p(c) = [1] p(c1) = [1] p(c10) = [0] p(c11) = [1] p(c12) = [2] p(c13) = [1] p(c14) = [2] p(c15) = [0] p(c16) = [2] p(c17) = [2] p(c18) = [1] p(c19) = [0] p(c2) = [4] p(c20) = [2] p(c21) = [1] x1 + [0] p(c22) = [0] p(c23) = [1] p(c24) = [1] p(c25) = [2] p(c26) = [1] x2 + [0] p(c27) = [1] p(c28) = [2] p(c29) = [0] p(c3) = [1] p(c30) = [1] p(c31) = [1] x1 + [1] p(c32) = [0] p(c33) = [0] p(c34) = [1] p(c35) = [0] p(c4) = [0] p(c5) = [4] p(c6) = [0] p(c7) = [4] p(c8) = [1] x1 + [1] p(c9) = [0] p(merge) = [1] x1 + [1] x2 + [0] p(merge#1) = [1] x1 + [1] x2 + [0] p(merge#2) = [1] x1 + [1] x3 + [2] p(merge#3) = [1] x3 + [1] x5 + [4] p(mergesort) = [1] x1 + [0] p(mergesort#1) = [1] x1 + [0] p(mergesort#2) = [1] x1 + [2] p(mergesort#3) = [1] x1 + [0] p(msplit) = [1] x1 + [0] p(msplit#1) = [1] x1 + [0] p(msplit#2) = [1] x1 + [2] p(msplit#3) = [1] x1 + [4] p(nil) = [0] p(tuple#2) = [1] x1 + [1] x2 + [0] p(#CKLT#) = [0] p(#COMPARE#) = [1] x2 + [4] p(#LESS#) = [4] x1 + [2] x2 + [0] p(#cklt#) = [2] p(#compare#) = [1] x1 + [1] x2 + [2] p(#less#) = [1] x1 + [1] x2 + [1] p(MERGE#) = [2] x1 + [1] x2 + [2] p(MERGE#1#) = [2] x1 + [1] x2 + [2] p(MERGE#2#) = [1] x1 + [2] x3 + [4] p(MERGE#3#) = [2] x3 + [1] x5 + [6] p(MERGESORT#) = [2] x1 + [2] p(MERGESORT#1#) = [2] x1 + [2] p(MERGESORT#2#) = [2] x1 + [6] p(MERGESORT#3#) = [2] x1 + [2] p(MSPLIT#) = [1] x1 + [1] p(MSPLIT#1#) = [1] x1 + [1] p(MSPLIT#2#) = [2] x2 + [1] p(MSPLIT#3#) = [1] x1 + [1] x3 + [0] p(merge#) = [1] x1 + [4] p(merge#1#) = [1] p(merge#2#) = [1] x2 + [4] x3 + [4] p(merge#3#) = [2] x1 + [1] x2 + [0] p(mergesort#) = [0] p(mergesort#1#) = [1] x1 + [4] p(mergesort#2#) = [2] x1 + [0] p(mergesort#3#) = [1] p(msplit#) = [0] p(msplit#1#) = [4] p(msplit#2#) = [1] p(msplit#3#) = [1] x2 + [0] p(c_1) = [4] p(c_2) = [1] x1 + [0] p(c_3) = [1] x1 + [0] p(c_4) = [1] p(c_5) = [1] x1 + [0] p(c_6) = [1] p(c_7) = [1] x1 + [0] p(c_8) = [1] x1 + [2] p(c_9) = [1] p(c_10) = [0] p(c_11) = [0] p(c_12) = [2] x1 + [0] p(c_13) = [1] p(c_14) = [1] p(c_15) = [4] x2 + [1] p(c_16) = [1] x1 + [2] p(c_17) = [1] x1 + [2] p(c_18) = [2] p(c_19) = [1] p(c_20) = [2] p(c_21) = [0] p(c_22) = [1] p(c_23) = [0] p(c_24) = [0] p(c_25) = [0] p(c_26) = [1] p(c_27) = [4] p(c_28) = [1] p(c_29) = [0] p(c_30) = [0] p(c_31) = [1] p(c_32) = [1] p(c_33) = [2] p(c_34) = [4] p(c_35) = [4] p(c_36) = [2] p(c_37) = [0] p(c_38) = [4] p(c_39) = [2] p(c_40) = [0] p(c_41) = [1] p(c_42) = [1] p(c_43) = [1] p(c_44) = [0] p(c_45) = [1] x1 + [4] p(c_46) = [1] p(c_47) = [0] p(c_48) = [2] p(c_49) = [1] p(c_50) = [1] p(c_51) = [0] p(c_52) = [1] p(c_53) = [2] x1 + [0] p(c_54) = [1] x1 + [2] p(c_55) = [4] p(c_56) = [1] x1 + [1] p(c_57) = [4] p(c_58) = [4] x1 + [0] p(c_59) = [1] x1 + [1] p(c_60) = [1] p(c_61) = [0] p(c_62) = [0] p(c_63) = [2] x1 + [2] p(c_64) = [1] p(c_65) = [2] p(c_66) = [1] p(c_67) = [0] p(c_68) = [1] p(c_69) = [1] x1 + [2] p(c_70) = [1] p(c_71) = [1] Following rules are strictly oriented: MERGE#1#(::(z0,z1),z2) = [2] z1 + [1] z2 + [6] > [2] z1 + [1] z2 + [4] = c_3(MERGE#2#(z2,z0,z1)) Following rules are (at-least) weakly oriented: MERGE#(z0,z1) = [2] z0 + [1] z1 + [2] >= [2] z0 + [1] z1 + [2] = c_2(MERGE#1#(z0,z1)) MERGE#2#(::(z0,z1),z2,z3) = [1] z1 + [2] z3 + [6] >= [1] z1 + [2] z3 + [6] = c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) MERGE#3#(#false(),z0,z1,z2,z3) = [2] z1 + [1] z3 + [6] >= [2] z1 + [1] z3 + [6] = c_7(MERGE#(::(z0,z1),z3)) MERGE#3#(#true(),z0,z1,z2,z3) = [2] z1 + [1] z3 + [6] >= [2] z1 + [1] z3 + [6] = c_8(MERGE#(z1,::(z2,z3))) MERGESORT#(z0) = [2] z0 + [2] >= [2] z0 + [2] = MERGESORT#1#(z0) MERGESORT#1#(::(z0,z1)) = [2] z1 + [6] >= [2] z1 + [6] = MERGESORT#2#(z1,z0) MERGESORT#2#(::(z0,z1),z2) = [2] z1 + [10] >= [2] z1 + [10] = MERGESORT#3#(msplit(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) = [2] z0 + [2] z1 + [2] >= [2] z0 + [1] z1 + [2] = MERGE#(mergesort(z0),mergesort(z1)) MERGESORT#3#(tuple#2(z0,z1)) = [2] z0 + [2] z1 + [2] >= [2] z0 + [2] = MERGESORT#(z0) MERGESORT#3#(tuple#2(z0,z1)) = [2] z0 + [2] z1 + [2] >= [2] z1 + [2] = MERGESORT#(z1) merge(z0,z1) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = merge#1(z0,z1) merge#1(::(z0,z1),z2) = [1] z1 + [1] z2 + [2] >= [1] z1 + [1] z2 + [2] = merge#2(z2,z0,z1) merge#1(nil(),z0) = [1] z0 + [0] >= [1] z0 + [0] = z0 merge#2(::(z0,z1),z2,z3) = [1] z1 + [1] z3 + [4] >= [1] z1 + [1] z3 + [4] = merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) = [1] z1 + [2] >= [1] z1 + [2] = ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) = [1] z1 + [1] z3 + [4] >= [1] z1 + [1] z3 + [4] = ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) = [1] z1 + [1] z3 + [4] >= [1] z1 + [1] z3 + [4] = ::(z0,merge(z1,::(z2,z3))) mergesort(z0) = [1] z0 + [0] >= [1] z0 + [0] = mergesort#1(z0) mergesort#1(::(z0,z1)) = [1] z1 + [2] >= [1] z1 + [2] = mergesort#2(z1,z0) mergesort#1(nil()) = [0] >= [0] = nil() mergesort#2(::(z0,z1),z2) = [1] z1 + [4] >= [1] z1 + [4] = mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) = [2] >= [2] = ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = merge(mergesort(z0),mergesort(z1)) msplit(z0) = [1] z0 + [0] >= [1] z0 + [0] = msplit#1(z0) msplit#1(::(z0,z1)) = [1] z1 + [2] >= [1] z1 + [2] = msplit#2(z1,z0) msplit#1(nil()) = [0] >= [0] = tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) = [1] z1 + [4] >= [1] z1 + [4] = msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) = [2] >= [2] = tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) = [1] z0 + [1] z1 + [4] >= [1] z0 + [1] z1 + [4] = tuple#2(::(z2,z0),::(z3,z1)) ****** Step 7.a:3.b:1.b:1.b:1.a:2: Assumption. WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) - Weak DPs: MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) MERGESORT#(z0) -> MERGESORT#1#(z0) MERGESORT#1#(::(z0,z1)) -> MERGESORT#2#(z1,z0) MERGESORT#2#(::(z0,z1),z2) -> MERGESORT#3#(msplit(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> MERGE#(mergesort(z0),mergesort(z1)) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z0) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z1) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/1,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown, timeBCUB = Unknown, timeBCLB = Unknown}} + Details: () ****** Step 7.a:3.b:1.b:1.b:1.b:1: PredecessorEstimationCP. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) - Weak DPs: MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) MERGESORT#(z0) -> MERGESORT#1#(z0) MERGESORT#1#(::(z0,z1)) -> MERGESORT#2#(z1,z0) MERGESORT#2#(::(z0,z1),z2) -> MERGESORT#3#(msplit(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> MERGE#(mergesort(z0),mergesort(z1)) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z0) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z1) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/1,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 1: MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) Consider the set of all dependency pairs 1: MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) 2: MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) 3: MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) 4: MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) 5: MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) 6: MERGESORT#(z0) -> MERGESORT#1#(z0) 7: MERGESORT#1#(::(z0,z1)) -> MERGESORT#2#(z1,z0) 8: MERGESORT#2#(::(z0,z1),z2) -> MERGESORT#3#(msplit(::(z2,::(z0,z1)))) 9: MERGESORT#3#(tuple#2(z0,z1)) -> MERGE#(mergesort(z0),mergesort(z1)) 10: MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z0) 11: MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z1) Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1)) BEST_CASE TIME (?,?) SPACE(?,?)on application of the dependency pairs {1} These cover all (indirect) predecessors of dependency pairs {1,2,3,4,5} their number of applications is equally bounded. The dependency pairs are shifted into the weak component. ******* Step 7.a:3.b:1.b:1.b:1.b:1.a:1: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) - Weak DPs: MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) MERGESORT#(z0) -> MERGESORT#1#(z0) MERGESORT#1#(::(z0,z1)) -> MERGESORT#2#(z1,z0) MERGESORT#2#(::(z0,z1),z2) -> MERGESORT#3#(msplit(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> MERGE#(mergesort(z0),mergesort(z1)) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z0) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z1) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/1,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_2) = {1}, uargs(c_3) = {1}, uargs(c_5) = {1}, uargs(c_7) = {1}, uargs(c_8) = {1} Following symbols are considered usable: {merge,merge#1,merge#2,merge#3,mergesort,mergesort#1,mergesort#2,mergesort#3,msplit,msplit#1,msplit#2 ,msplit#3,#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE#,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT# ,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2#,MSPLIT#3#,merge#,merge#1#,merge#2# ,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit#,msplit#1#,msplit#2#,msplit#3#} TcT has computed the following interpretation: p(#0) = [0] p(#CKLT) = [1] p(#COMPARE) = [2] x2 + [0] p(#EQ) = [0] p(#GT) = [0] p(#LESS) = [4] x2 + [0] p(#LT) = [0] p(#cklt) = [6] x1 + [0] p(#compare) = [1] x2 + [1] p(#false) = [0] p(#less) = [0] p(#neg) = [0] p(#pos) = [1] x1 + [0] p(#s) = [1] x1 + [0] p(#true) = [0] p(::) = [1] x1 + [1] x2 + [2] p(MERGE) = [1] x1 + [4] x2 + [1] p(MERGE#1) = [1] x1 + [4] x2 + [0] p(MERGE#2) = [4] x2 + [0] p(MERGE#3) = [1] x2 + [1] x3 + [4] x5 + [1] p(MERGESORT) = [1] x1 + [1] p(MERGESORT#1) = [1] p(MERGESORT#2) = [2] x1 + [2] p(MERGESORT#3) = [1] p(MSPLIT) = [1] x1 + [2] p(MSPLIT#1) = [1] x1 + [1] p(MSPLIT#2) = [2] x1 + [1] p(MSPLIT#3) = [1] x1 + [1] x3 + [0] p(c) = [2] p(c1) = [4] p(c10) = [0] p(c11) = [1] p(c12) = [0] p(c13) = [1] p(c14) = [0] p(c15) = [1] p(c16) = [0] p(c17) = [1] x1 + [0] p(c18) = [2] p(c19) = [1] x1 + [1] p(c2) = [0] p(c20) = [0] p(c21) = [2] p(c22) = [1] p(c23) = [1] x1 + [0] p(c24) = [1] p(c25) = [0] p(c26) = [1] p(c27) = [0] p(c28) = [1] p(c29) = [1] x2 + [1] p(c3) = [0] p(c30) = [0] p(c31) = [1] p(c32) = [1] p(c33) = [1] p(c34) = [0] p(c35) = [1] p(c4) = [0] p(c5) = [0] p(c6) = [0] p(c7) = [0] p(c8) = [1] x1 + [2] p(c9) = [0] p(merge) = [1] x1 + [1] x2 + [0] p(merge#1) = [1] x1 + [1] x2 + [0] p(merge#2) = [1] x1 + [1] x2 + [1] x3 + [2] p(merge#3) = [1] x2 + [1] x3 + [1] x4 + [1] x5 + [4] p(mergesort) = [1] x1 + [0] p(mergesort#1) = [1] x1 + [0] p(mergesort#2) = [1] x1 + [1] x2 + [2] p(mergesort#3) = [1] x1 + [0] p(msplit) = [1] x1 + [0] p(msplit#1) = [1] x1 + [0] p(msplit#2) = [1] x1 + [1] x2 + [2] p(msplit#3) = [1] x1 + [1] x2 + [1] x3 + [4] p(nil) = [0] p(tuple#2) = [1] x1 + [1] x2 + [0] p(#CKLT#) = [1] p(#COMPARE#) = [1] x1 + [0] p(#LESS#) = [0] p(#cklt#) = [0] p(#compare#) = [1] x1 + [4] x2 + [0] p(#less#) = [1] x2 + [2] p(MERGE#) = [2] x1 + [2] x2 + [3] p(MERGE#1#) = [2] x1 + [2] x2 + [2] p(MERGE#2#) = [2] x1 + [2] x2 + [2] x3 + [3] p(MERGE#3#) = [2] x2 + [2] x3 + [2] x4 + [2] x5 + [7] p(MERGESORT#) = [2] x1 + [3] p(MERGESORT#1#) = [2] x1 + [3] p(MERGESORT#2#) = [2] x1 + [2] x2 + [7] p(MERGESORT#3#) = [2] x1 + [3] p(MSPLIT#) = [4] x1 + [0] p(MSPLIT#1#) = [2] p(MSPLIT#2#) = [1] x1 + [2] x2 + [2] p(MSPLIT#3#) = [0] p(merge#) = [1] x2 + [0] p(merge#1#) = [2] x1 + [2] x2 + [1] p(merge#2#) = [1] x2 + [4] p(merge#3#) = [2] x2 + [1] x3 + [1] x4 + [1] p(mergesort#) = [1] x1 + [0] p(mergesort#1#) = [0] p(mergesort#2#) = [1] p(mergesort#3#) = [4] x1 + [1] p(msplit#) = [4] x1 + [2] p(msplit#1#) = [1] x1 + [4] p(msplit#2#) = [4] x1 + [0] p(msplit#3#) = [1] x1 + [2] x2 + [0] p(c_1) = [1] p(c_2) = [1] x1 + [0] p(c_3) = [1] x1 + [1] p(c_4) = [4] p(c_5) = [1] x1 + [0] p(c_6) = [4] p(c_7) = [1] x1 + [0] p(c_8) = [1] x1 + [0] p(c_9) = [0] p(c_10) = [0] p(c_11) = [1] p(c_12) = [0] p(c_13) = [0] p(c_14) = [1] x1 + [2] x2 + [1] p(c_15) = [1] x2 + [1] p(c_16) = [1] x1 + [0] p(c_17) = [1] p(c_18) = [4] p(c_19) = [0] p(c_20) = [0] p(c_21) = [1] p(c_22) = [1] p(c_23) = [4] p(c_24) = [0] p(c_25) = [1] p(c_26) = [4] p(c_27) = [0] p(c_28) = [2] p(c_29) = [4] p(c_30) = [2] x1 + [0] p(c_31) = [1] p(c_32) = [1] p(c_33) = [2] p(c_34) = [1] p(c_35) = [0] p(c_36) = [4] x1 + [2] p(c_37) = [2] p(c_38) = [4] p(c_39) = [0] p(c_40) = [0] p(c_41) = [1] p(c_42) = [0] p(c_43) = [0] p(c_44) = [0] p(c_45) = [1] x1 + [0] p(c_46) = [1] p(c_47) = [2] p(c_48) = [0] p(c_49) = [2] x1 + [0] p(c_50) = [0] p(c_51) = [2] p(c_52) = [1] p(c_53) = [1] x1 + [0] p(c_54) = [1] x1 + [1] p(c_55) = [0] p(c_56) = [2] x1 + [0] p(c_57) = [0] p(c_58) = [1] p(c_59) = [4] x1 + [0] p(c_60) = [1] x1 + [0] p(c_61) = [1] x1 + [4] p(c_62) = [0] p(c_63) = [2] p(c_64) = [2] p(c_65) = [1] p(c_66) = [4] x1 + [0] p(c_67) = [4] x1 + [1] p(c_68) = [0] p(c_69) = [1] x1 + [1] p(c_70) = [1] p(c_71) = [0] Following rules are strictly oriented: MERGE#(z0,z1) = [2] z0 + [2] z1 + [3] > [2] z0 + [2] z1 + [2] = c_2(MERGE#1#(z0,z1)) Following rules are (at-least) weakly oriented: MERGE#1#(::(z0,z1),z2) = [2] z0 + [2] z1 + [2] z2 + [6] >= [2] z0 + [2] z1 + [2] z2 + [4] = c_3(MERGE#2#(z2,z0,z1)) MERGE#2#(::(z0,z1),z2,z3) = [2] z0 + [2] z1 + [2] z2 + [2] z3 + [7] >= [2] z0 + [2] z1 + [2] z2 + [2] z3 + [7] = c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) MERGE#3#(#false(),z0,z1,z2,z3) = [2] z0 + [2] z1 + [2] z2 + [2] z3 + [7] >= [2] z0 + [2] z1 + [2] z3 + [7] = c_7(MERGE#(::(z0,z1),z3)) MERGE#3#(#true(),z0,z1,z2,z3) = [2] z0 + [2] z1 + [2] z2 + [2] z3 + [7] >= [2] z1 + [2] z2 + [2] z3 + [7] = c_8(MERGE#(z1,::(z2,z3))) MERGESORT#(z0) = [2] z0 + [3] >= [2] z0 + [3] = MERGESORT#1#(z0) MERGESORT#1#(::(z0,z1)) = [2] z0 + [2] z1 + [7] >= [2] z0 + [2] z1 + [7] = MERGESORT#2#(z1,z0) MERGESORT#2#(::(z0,z1),z2) = [2] z0 + [2] z1 + [2] z2 + [11] >= [2] z0 + [2] z1 + [2] z2 + [11] = MERGESORT#3#(msplit(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) = [2] z0 + [2] z1 + [3] >= [2] z0 + [2] z1 + [3] = MERGE#(mergesort(z0),mergesort(z1)) MERGESORT#3#(tuple#2(z0,z1)) = [2] z0 + [2] z1 + [3] >= [2] z0 + [3] = MERGESORT#(z0) MERGESORT#3#(tuple#2(z0,z1)) = [2] z0 + [2] z1 + [3] >= [2] z1 + [3] = MERGESORT#(z1) merge(z0,z1) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = merge#1(z0,z1) merge#1(::(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [2] >= [1] z0 + [1] z1 + [1] z2 + [2] = merge#2(z2,z0,z1) merge#1(nil(),z0) = [1] z0 + [0] >= [1] z0 + [0] = z0 merge#2(::(z0,z1),z2,z3) = [1] z0 + [1] z1 + [1] z2 + [1] z3 + [4] >= [1] z0 + [1] z1 + [1] z2 + [1] z3 + [4] = merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) = [1] z0 + [1] z1 + [2] >= [1] z0 + [1] z1 + [2] = ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) = [1] z0 + [1] z1 + [1] z2 + [1] z3 + [4] >= [1] z0 + [1] z1 + [1] z2 + [1] z3 + [4] = ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) = [1] z0 + [1] z1 + [1] z2 + [1] z3 + [4] >= [1] z0 + [1] z1 + [1] z2 + [1] z3 + [4] = ::(z0,merge(z1,::(z2,z3))) mergesort(z0) = [1] z0 + [0] >= [1] z0 + [0] = mergesort#1(z0) mergesort#1(::(z0,z1)) = [1] z0 + [1] z1 + [2] >= [1] z0 + [1] z1 + [2] = mergesort#2(z1,z0) mergesort#1(nil()) = [0] >= [0] = nil() mergesort#2(::(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [4] >= [1] z0 + [1] z1 + [1] z2 + [4] = mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) = [1] z0 + [2] >= [1] z0 + [2] = ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) = [1] z0 + [1] z1 + [0] >= [1] z0 + [1] z1 + [0] = merge(mergesort(z0),mergesort(z1)) msplit(z0) = [1] z0 + [0] >= [1] z0 + [0] = msplit#1(z0) msplit#1(::(z0,z1)) = [1] z0 + [1] z1 + [2] >= [1] z0 + [1] z1 + [2] = msplit#2(z1,z0) msplit#1(nil()) = [0] >= [0] = tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) = [1] z0 + [1] z1 + [1] z2 + [4] >= [1] z0 + [1] z1 + [1] z2 + [4] = msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) = [1] z0 + [2] >= [1] z0 + [2] = tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) = [1] z0 + [1] z1 + [1] z2 + [1] z3 + [4] >= [1] z0 + [1] z1 + [1] z2 + [1] z3 + [4] = tuple#2(::(z2,z0),::(z3,z1)) ******* Step 7.a:3.b:1.b:1.b:1.b:1.a:2: Assumption. WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) MERGESORT#(z0) -> MERGESORT#1#(z0) MERGESORT#1#(::(z0,z1)) -> MERGESORT#2#(z1,z0) MERGESORT#2#(::(z0,z1),z2) -> MERGESORT#3#(msplit(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> MERGE#(mergesort(z0),mergesort(z1)) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z0) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z1) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/1,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown, timeBCUB = Unknown, timeBCLB = Unknown}} + Details: () ******* Step 7.a:3.b:1.b:1.b:1.b:1.b:1: RemoveWeakSuffixes. WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) MERGESORT#(z0) -> MERGESORT#1#(z0) MERGESORT#1#(::(z0,z1)) -> MERGESORT#2#(z1,z0) MERGESORT#2#(::(z0,z1),z2) -> MERGESORT#3#(msplit(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> MERGE#(mergesort(z0),mergesort(z1)) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z0) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z1) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/1,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:W:MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) -->_1 MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)):2 2:W:MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) -->_1 MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)):3 3:W:MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) -->_1 MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))):5 -->_1 MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)):4 4:W:MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) -->_1 MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)):1 5:W:MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) -->_1 MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)):1 6:W:MERGESORT#(z0) -> MERGESORT#1#(z0) -->_1 MERGESORT#1#(::(z0,z1)) -> MERGESORT#2#(z1,z0):7 7:W:MERGESORT#1#(::(z0,z1)) -> MERGESORT#2#(z1,z0) -->_1 MERGESORT#2#(::(z0,z1),z2) -> MERGESORT#3#(msplit(::(z2,::(z0,z1)))):8 8:W:MERGESORT#2#(::(z0,z1),z2) -> MERGESORT#3#(msplit(::(z2,::(z0,z1)))) -->_1 MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z1):11 -->_1 MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z0):10 -->_1 MERGESORT#3#(tuple#2(z0,z1)) -> MERGE#(mergesort(z0),mergesort(z1)):9 9:W:MERGESORT#3#(tuple#2(z0,z1)) -> MERGE#(mergesort(z0),mergesort(z1)) -->_1 MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)):1 10:W:MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z0) -->_1 MERGESORT#(z0) -> MERGESORT#1#(z0):6 11:W:MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z1) -->_1 MERGESORT#(z0) -> MERGESORT#1#(z0):6 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 6: MERGESORT#(z0) -> MERGESORT#1#(z0) 11: MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z1) 8: MERGESORT#2#(::(z0,z1),z2) -> MERGESORT#3#(msplit(::(z2,::(z0,z1)))) 7: MERGESORT#1#(::(z0,z1)) -> MERGESORT#2#(z1,z0) 10: MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z0) 9: MERGESORT#3#(tuple#2(z0,z1)) -> MERGE#(mergesort(z0),mergesort(z1)) 1: MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) 5: MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) 3: MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) 2: MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) 4: MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) ******* Step 7.a:3.b:1.b:1.b:1.b:1.b:2: EmptyProcessor. WORST_CASE(?,O(1)) + Considered Problem: - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/1,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). ** Step 7.b:1: RemoveWeakSuffixes. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#(z1)) - Weak DPs: MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/2,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) -->_1 MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)):2 2:S:MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) -->_1 MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))) ,MSPLIT#(::(z2,::(z0,z1)))):3 3:S:MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) -->_2 MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)):6 -->_1 MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)):5 -->_1 MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)):4 4:S:MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) -->_1 MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)):9 -->_2 MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)):1 5:S:MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) -->_1 MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)):9 -->_2 MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)):1 6:S:MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) -->_1 MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)):7 7:S:MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) -->_1 MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#(z1)):8 8:S:MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#(z1)) -->_1 MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)):6 9:W:MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) -->_1 MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)):10 10:W:MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) -->_1 MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)):11 11:W:MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) -->_1 MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))):13 -->_1 MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)):12 12:W:MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) -->_1 MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)):9 13:W:MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) -->_1 MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)):9 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 9: MERGE#(z0,z1) -> c_2(MERGE#1#(z0,z1)) 13: MERGE#3#(#true(),z0,z1,z2,z3) -> c_8(MERGE#(z1,::(z2,z3))) 11: MERGE#2#(::(z0,z1),z2,z3) -> c_5(MERGE#3#(#less(z2,z0),z2,z3,z0,z1)) 10: MERGE#1#(::(z0,z1),z2) -> c_3(MERGE#2#(z2,z0,z1)) 12: MERGE#3#(#false(),z0,z1,z2,z3) -> c_7(MERGE#(::(z0,z1),z3)) ** Step 7.b:2: SimplifyRHS. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#(z1)) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/2,c_13/0,c_14/2,c_15/2,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) -->_1 MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)):2 2:S:MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) -->_1 MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))) ,MSPLIT#(::(z2,::(z0,z1)))):3 3:S:MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) -->_2 MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)):6 -->_1 MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)):5 -->_1 MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)):4 4:S:MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z0)) -->_2 MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)):1 5:S:MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGE#(mergesort(z0),mergesort(z1)),MERGESORT#(z1)) -->_2 MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)):1 6:S:MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) -->_1 MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)):7 7:S:MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) -->_1 MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#(z1)):8 8:S:MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#(z1)) -->_1 MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)):6 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGESORT#(z0)) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGESORT#(z1)) ** Step 7.b:3: UsableRules. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGESORT#(z0)) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGESORT#(z1)) MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#(z1)) - Weak TRS: #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #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) #less(z0,z1) -> #cklt(#compare(z0,z1)) merge(z0,z1) -> merge#1(z0,z1) merge#1(::(z0,z1),z2) -> merge#2(z2,z0,z1) merge#1(nil(),z0) -> z0 merge#2(::(z0,z1),z2,z3) -> merge#3(#less(z2,z0),z2,z3,z0,z1) merge#2(nil(),z0,z1) -> ::(z0,z1) merge#3(#false(),z0,z1,z2,z3) -> ::(z2,merge(::(z0,z1),z3)) merge#3(#true(),z0,z1,z2,z3) -> ::(z0,merge(z1,::(z2,z3))) mergesort(z0) -> mergesort#1(z0) mergesort#1(::(z0,z1)) -> mergesort#2(z1,z0) mergesort#1(nil()) -> nil() mergesort#2(::(z0,z1),z2) -> mergesort#3(msplit(::(z2,::(z0,z1)))) mergesort#2(nil(),z0) -> ::(z0,nil()) mergesort#3(tuple#2(z0,z1)) -> merge(mergesort(z0),mergesort(z1)) msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/2,c_13/0,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGESORT#(z0)) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGESORT#(z1)) MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#(z1)) ** Step 7.b:4: DecomposeDG. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGESORT#(z0)) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGESORT#(z1)) MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#(z1)) - Weak TRS: msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/2,c_13/0,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: DecomposeDG {onSelection = all below first cut in WDG, onUpper = Just someStrategy, onLower = Nothing} + Details: We decompose the input problem according to the dependency graph into the upper component MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGESORT#(z0)) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGESORT#(z1)) and a lower component MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#(z1)) Further, following extension rules are added to the lower component. MERGESORT#(z0) -> MERGESORT#1#(z0) MERGESORT#1#(::(z0,z1)) -> MERGESORT#2#(z1,z0) MERGESORT#2#(::(z0,z1),z2) -> MERGESORT#3#(msplit(::(z2,::(z0,z1)))) MERGESORT#2#(::(z0,z1),z2) -> MSPLIT#(::(z2,::(z0,z1))) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z0) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z1) *** Step 7.b:4.a:1: PredecessorEstimationCP. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGESORT#(z0)) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGESORT#(z1)) - Weak TRS: msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/2,c_13/0,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 3, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 3, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 3: MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) Consider the set of all dependency pairs 1: MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) 2: MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) 3: MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) 4: MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGESORT#(z0)) 5: MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGESORT#(z1)) Processor NaturalMI {miDimension = 3, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1)) BEST_CASE TIME (?,?) SPACE(?,?)on application of the dependency pairs {3} These cover all (indirect) predecessors of dependency pairs {1,2,3,4,5} their number of applications is equally bounded. The dependency pairs are shifted into the weak component. **** Step 7.b:4.a:1.a:1: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGESORT#(z0)) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGESORT#(z1)) - Weak TRS: msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/2,c_13/0,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 3, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 1 non-zero interpretation-entries in the diagonal of the component-wise maxima): The following argument positions are considered usable: uargs(c_9) = {1}, uargs(c_10) = {1}, uargs(c_12) = {1}, uargs(c_14) = {1}, uargs(c_15) = {1} Following symbols are considered usable: {msplit,msplit#1,msplit#2,msplit#3,#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE#,MERGE#1# ,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2#,MSPLIT#3# ,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit#,msplit#1# ,msplit#2#,msplit#3#} TcT has computed the following interpretation: p(#0) = [0] [0] [0] p(#CKLT) = [0] [0] [0] p(#COMPARE) = [0] [0] [0] p(#EQ) = [0] [0] [0] p(#GT) = [0] [0] [0] p(#LESS) = [0] [0] [0] p(#LT) = [0] [0] [0] p(#cklt) = [0] [0] [0] p(#compare) = [0] [0] [0] p(#false) = [0] [0] [0] p(#less) = [0] [0] [0] p(#neg) = [0] [0] [0] p(#pos) = [0] [0] [0] p(#s) = [0] [0] [0] p(#true) = [0] [0] [0] p(::) = [0 0 1] [0 1 0] [0] [0 0 1] x1 + [0 1 1] x2 + [0] [0 0 0] [0 0 0] [1] p(MERGE) = [0] [0] [0] p(MERGE#1) = [0] [0] [0] p(MERGE#2) = [0] [0] [0] p(MERGE#3) = [0] [0] [0] p(MERGESORT) = [0] [0] [0] p(MERGESORT#1) = [0] [0] [0] p(MERGESORT#2) = [0] [0] [0] p(MERGESORT#3) = [0] [0] [0] p(MSPLIT) = [0] [0] [0] p(MSPLIT#1) = [0] [0] [0] p(MSPLIT#2) = [0] [0] [0] p(MSPLIT#3) = [0] [0] [0] p(c) = [0] [0] [0] p(c1) = [0] [0] [0] p(c10) = [0] [0] [0] p(c11) = [0] [0] [0] p(c12) = [0] [0] [0] p(c13) = [0] [0] [0] p(c14) = [0] [0] [0] p(c15) = [0] [0] [0] p(c16) = [0] [0] [0] p(c17) = [0] [0] [0] p(c18) = [0] [0] [0] p(c19) = [0] [0] [0] p(c2) = [0] [0] [0] p(c20) = [0] [0] [0] p(c21) = [0] [0] [0] p(c22) = [0] [0] [0] p(c23) = [0] [0] [0] p(c24) = [0] [0] [0] p(c25) = [0] [0] [0] p(c26) = [0] [0] [0] p(c27) = [0] [0] [0] p(c28) = [0] [0] [0] p(c29) = [0] [0] [0] p(c3) = [0] [0] [0] p(c30) = [0] [0] [0] p(c31) = [0] [0] [0] p(c32) = [0] [0] [0] p(c33) = [0] [0] [0] p(c34) = [0] [0] [0] p(c35) = [0] [0] [0] p(c4) = [0] [0] [0] p(c5) = [0] [0] [0] p(c6) = [0] [0] [0] p(c7) = [0] [0] [0] p(c8) = [0] [0] [0] p(c9) = [0] [0] [0] p(merge) = [0] [0] [0] p(merge#1) = [0] [0] [0] p(merge#2) = [0] [0] [0] p(merge#3) = [0] [0] [0] p(mergesort) = [0] [0] [0] p(mergesort#1) = [0] [0] [0] p(mergesort#2) = [0] [0] [0] p(mergesort#3) = [0] [0] [0] p(msplit) = [0 1 1] [0] [1 0 0] x1 + [0] [0 0 0] [1] p(msplit#1) = [0 1 1] [0] [1 0 0] x1 + [0] [0 0 0] [1] p(msplit#2) = [0 1 1] [0 0 1] [1] [0 1 0] x1 + [0 0 1] x2 + [0] [0 0 0] [0 0 0] [1] p(msplit#3) = [1 0 1] [0 0 1] [0 0 1] [1] [1 0 0] x1 + [0 0 1] x2 + [0 0 1] x3 + [0] [0 0 0] [0 0 0] [0 0 0] [1] p(nil) = [0] [0] [0] p(tuple#2) = [0 1 1] [0 1 1] [0] [0 1 0] x1 + [0 1 0] x2 + [0] [0 0 0] [0 0 0] [1] p(#CKLT#) = [0] [0] [0] p(#COMPARE#) = [0] [0] [0] p(#LESS#) = [0] [0] [0] p(#cklt#) = [0] [0] [0] p(#compare#) = [0] [0] [0] p(#less#) = [0] [0] [0] p(MERGE#) = [0] [0] [0] p(MERGE#1#) = [0] [0] [0] p(MERGE#2#) = [0] [0] [0] p(MERGE#3#) = [0] [0] [0] p(MERGESORT#) = [0 1 0] [1] [1 1 0] x1 + [1] [1 0 1] [0] p(MERGESORT#1#) = [0 1 0] [1] [0 0 0] x1 + [1] [0 1 0] [1] p(MERGESORT#2#) = [0 1 1] [0 0 1] [1] [0 0 1] x1 + [1 1 1] x2 + [1] [0 1 1] [0 0 1] [1] p(MERGESORT#3#) = [0 1 0] [1] [0 1 0] x1 + [1] [0 0 1] [1] p(MSPLIT#) = [1 0 0] [0] [1 0 0] x1 + [1] [1 0 1] [0] p(MSPLIT#1#) = [0] [0] [0] p(MSPLIT#2#) = [0] [0] [0] p(MSPLIT#3#) = [0] [0] [0] p(merge#) = [0] [0] [0] p(merge#1#) = [0] [0] [0] p(merge#2#) = [0] [0] [0] p(merge#3#) = [0] [0] [0] p(mergesort#) = [0] [0] [0] p(mergesort#1#) = [0] [0] [0] p(mergesort#2#) = [0] [0] [0] p(mergesort#3#) = [0] [0] [0] p(msplit#) = [0] [0] [0] p(msplit#1#) = [0] [0] [0] p(msplit#2#) = [0] [0] [0] p(msplit#3#) = [0] [0] [0] p(c_1) = [0] [0] [0] p(c_2) = [0] [0] [0] p(c_3) = [0] [0] [0] p(c_4) = [0] [0] [0] p(c_5) = [0] [0] [0] p(c_6) = [0] [0] [0] p(c_7) = [0] [0] [0] p(c_8) = [0] [0] [0] p(c_9) = [1 0 0] [0] [0 0 0] x1 + [1] [0 0 0] [0] p(c_10) = [1 0 0] [0] [0 0 0] x1 + [0] [0 0 1] [0] p(c_11) = [0] [0] [0] p(c_12) = [1 0 0] [0] [0 0 1] x1 + [0] [1 0 0] [1] p(c_13) = [0] [0] [0] p(c_14) = [1 0 0] [0] [0 0 0] x1 + [0] [0 0 0] [1] p(c_15) = [1 0 0] [0] [1 0 0] x1 + [0] [0 0 0] [1] p(c_16) = [0] [0] [0] p(c_17) = [0] [0] [0] p(c_18) = [0] [0] [0] p(c_19) = [0] [0] [0] p(c_20) = [0] [0] [0] p(c_21) = [0] [0] [0] p(c_22) = [0] [0] [0] p(c_23) = [0] [0] [0] p(c_24) = [0] [0] [0] p(c_25) = [0] [0] [0] p(c_26) = [0] [0] [0] p(c_27) = [0] [0] [0] p(c_28) = [0] [0] [0] p(c_29) = [0] [0] [0] p(c_30) = [0] [0] [0] p(c_31) = [0] [0] [0] p(c_32) = [0] [0] [0] p(c_33) = [0] [0] [0] p(c_34) = [0] [0] [0] p(c_35) = [0] [0] [0] p(c_36) = [0] [0] [0] p(c_37) = [0] [0] [0] p(c_38) = [0] [0] [0] p(c_39) = [0] [0] [0] p(c_40) = [0] [0] [0] p(c_41) = [0] [0] [0] p(c_42) = [0] [0] [0] p(c_43) = [0] [0] [0] p(c_44) = [0] [0] [0] p(c_45) = [0] [0] [0] p(c_46) = [0] [0] [0] p(c_47) = [0] [0] [0] p(c_48) = [0] [0] [0] p(c_49) = [0] [0] [0] p(c_50) = [0] [0] [0] p(c_51) = [0] [0] [0] p(c_52) = [0] [0] [0] p(c_53) = [0] [0] [0] p(c_54) = [0] [0] [0] p(c_55) = [0] [0] [0] p(c_56) = [0] [0] [0] p(c_57) = [0] [0] [0] p(c_58) = [0] [0] [0] p(c_59) = [0] [0] [0] p(c_60) = [0] [0] [0] p(c_61) = [0] [0] [0] p(c_62) = [0] [0] [0] p(c_63) = [0] [0] [0] p(c_64) = [0] [0] [0] p(c_65) = [0] [0] [0] p(c_66) = [0] [0] [0] p(c_67) = [0] [0] [0] p(c_68) = [0] [0] [0] p(c_69) = [0] [0] [0] p(c_70) = [0] [0] [0] p(c_71) = [0] [0] [0] Following rules are strictly oriented: MERGESORT#2#(::(z0,z1),z2) = [0 0 1] [0 1 1] [0 0 1] [2] [0 0 0] z0 + [0 0 0] z1 + [1 1 1] z2 + [2] [0 0 1] [0 1 1] [0 0 1] [2] > [0 0 1] [0 1 1] [0 0 1] [1] [0 0 0] z0 + [0 0 0] z1 + [0 0 0] z2 + [2] [0 0 1] [0 1 1] [0 0 1] [2] = c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) Following rules are (at-least) weakly oriented: MERGESORT#(z0) = [0 1 0] [1] [1 1 0] z0 + [1] [1 0 1] [0] >= [0 1 0] [1] [0 0 0] z0 + [1] [0 0 0] [0] = c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) = [0 0 1] [0 1 1] [1] [0 0 0] z0 + [0 0 0] z1 + [1] [0 0 1] [0 1 1] [1] >= [0 0 1] [0 1 1] [1] [0 0 0] z0 + [0 0 0] z1 + [0] [0 0 1] [0 1 1] [1] = c_10(MERGESORT#2#(z1,z0)) MERGESORT#3#(tuple#2(z0,z1)) = [0 1 0] [0 1 0] [1] [0 1 0] z0 + [0 1 0] z1 + [1] [0 0 0] [0 0 0] [2] >= [0 1 0] [1] [0 0 0] z0 + [0] [0 0 0] [1] = c_14(MERGESORT#(z0)) MERGESORT#3#(tuple#2(z0,z1)) = [0 1 0] [0 1 0] [1] [0 1 0] z0 + [0 1 0] z1 + [1] [0 0 0] [0 0 0] [2] >= [0 1 0] [1] [0 1 0] z1 + [1] [0 0 0] [1] = c_15(MERGESORT#(z1)) msplit(z0) = [0 1 1] [0] [1 0 0] z0 + [0] [0 0 0] [1] >= [0 1 1] [0] [1 0 0] z0 + [0] [0 0 0] [1] = msplit#1(z0) msplit#1(::(z0,z1)) = [0 0 1] [0 1 1] [1] [0 0 1] z0 + [0 1 0] z1 + [0] [0 0 0] [0 0 0] [1] >= [0 0 1] [0 1 1] [1] [0 0 1] z0 + [0 1 0] z1 + [0] [0 0 0] [0 0 0] [1] = msplit#2(z1,z0) msplit#1(nil()) = [0] [0] [1] >= [0] [0] [1] = tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) = [0 0 1] [0 1 1] [0 0 1] [2] [0 0 1] z0 + [0 1 1] z1 + [0 0 1] z2 + [0] [0 0 0] [0 0 0] [0 0 0] [1] >= [0 0 1] [0 1 1] [0 0 1] [2] [0 0 1] z0 + [0 1 1] z1 + [0 0 1] z2 + [0] [0 0 0] [0 0 0] [0 0 0] [1] = msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) = [0 0 1] [1] [0 0 1] z0 + [0] [0 0 0] [1] >= [0 0 1] [1] [0 0 1] z0 + [0] [0 0 0] [1] = tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) = [0 1 1] [0 1 1] [0 0 1] [0 0 1] [2] [0 1 1] z0 + [0 1 1] z1 + [0 0 1] z2 + [0 0 1] z3 + [0] [0 0 0] [0 0 0] [0 0 0] [0 0 0] [1] >= [0 1 1] [0 1 1] [0 0 1] [0 0 1] [2] [0 1 1] z0 + [0 1 1] z1 + [0 0 1] z2 + [0 0 1] z3 + [0] [0 0 0] [0 0 0] [0 0 0] [0 0 0] [1] = tuple#2(::(z2,z0),::(z3,z1)) **** Step 7.b:4.a:1.a:2: Assumption. WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGESORT#(z0)) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGESORT#(z1)) - Weak DPs: MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) - Weak TRS: msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/2,c_13/0,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown, timeBCUB = Unknown, timeBCLB = Unknown}} + Details: () **** Step 7.b:4.a:1.b:1: RemoveWeakSuffixes. WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGESORT#(z0)) MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGESORT#(z1)) - Weak TRS: msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/2,c_13/0,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:W:MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) -->_1 MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)):2 2:W:MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) -->_1 MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))) ,MSPLIT#(::(z2,::(z0,z1)))):3 3:W:MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) -->_1 MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGESORT#(z1)):5 -->_1 MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGESORT#(z0)):4 4:W:MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGESORT#(z0)) -->_1 MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)):1 5:W:MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGESORT#(z1)) -->_1 MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)):1 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 1: MERGESORT#(z0) -> c_9(MERGESORT#1#(z0)) 5: MERGESORT#3#(tuple#2(z0,z1)) -> c_15(MERGESORT#(z1)) 3: MERGESORT#2#(::(z0,z1),z2) -> c_12(MERGESORT#3#(msplit(::(z2,::(z0,z1)))),MSPLIT#(::(z2,::(z0,z1)))) 2: MERGESORT#1#(::(z0,z1)) -> c_10(MERGESORT#2#(z1,z0)) 4: MERGESORT#3#(tuple#2(z0,z1)) -> c_14(MERGESORT#(z0)) **** Step 7.b:4.a:1.b:2: EmptyProcessor. WORST_CASE(?,O(1)) + Considered Problem: - Weak TRS: msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/2,c_13/0,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). *** Step 7.b:4.b:1: PredecessorEstimationCP. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#(z1)) - Weak DPs: MERGESORT#(z0) -> MERGESORT#1#(z0) MERGESORT#1#(::(z0,z1)) -> MERGESORT#2#(z1,z0) MERGESORT#2#(::(z0,z1),z2) -> MERGESORT#3#(msplit(::(z2,::(z0,z1)))) MERGESORT#2#(::(z0,z1),z2) -> MSPLIT#(::(z2,::(z0,z1))) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z0) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z1) - Weak TRS: msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/2,c_13/0,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 1: MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) 2: MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) Consider the set of all dependency pairs 1: MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) 2: MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) 3: MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#(z1)) 4: MERGESORT#(z0) -> MERGESORT#1#(z0) 5: MERGESORT#1#(::(z0,z1)) -> MERGESORT#2#(z1,z0) 6: MERGESORT#2#(::(z0,z1),z2) -> MERGESORT#3#(msplit(::(z2,::(z0,z1)))) 7: MERGESORT#2#(::(z0,z1),z2) -> MSPLIT#(::(z2,::(z0,z1))) 8: MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z0) 9: MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z1) Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1)) BEST_CASE TIME (?,?) SPACE(?,?)on application of the dependency pairs {1,2} These cover all (indirect) predecessors of dependency pairs {1,2,3} their number of applications is equally bounded. The dependency pairs are shifted into the weak component. **** Step 7.b:4.b:1.a:1: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#(z1)) - Weak DPs: MERGESORT#(z0) -> MERGESORT#1#(z0) MERGESORT#1#(::(z0,z1)) -> MERGESORT#2#(z1,z0) MERGESORT#2#(::(z0,z1),z2) -> MERGESORT#3#(msplit(::(z2,::(z0,z1)))) MERGESORT#2#(::(z0,z1),z2) -> MSPLIT#(::(z2,::(z0,z1))) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z0) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z1) - Weak TRS: msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/2,c_13/0,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_16) = {1}, uargs(c_17) = {1}, uargs(c_19) = {1} Following symbols are considered usable: {msplit,msplit#1,msplit#2,msplit#3,#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE#,MERGE#1# ,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2#,MSPLIT#3# ,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit#,msplit#1# ,msplit#2#,msplit#3#} TcT has computed the following interpretation: p(#0) = [2] p(#CKLT) = [8] p(#COMPARE) = [1] x1 + [8] x2 + [1] p(#EQ) = [1] p(#GT) = [1] p(#LESS) = [1] x1 + [1] x2 + [0] p(#LT) = [0] p(#cklt) = [0] p(#compare) = [2] x2 + [1] p(#false) = [2] p(#less) = [1] p(#neg) = [2] p(#pos) = [1] x1 + [0] p(#s) = [0] p(#true) = [1] p(::) = [1] x2 + [7] p(MERGE) = [2] x1 + [2] x2 + [1] p(MERGE#1) = [0] p(MERGE#2) = [1] x3 + [2] p(MERGE#3) = [1] x1 + [8] x3 + [1] x4 + [1] p(MERGESORT) = [1] x1 + [1] p(MERGESORT#1) = [1] p(MERGESORT#2) = [2] x1 + [1] x2 + [0] p(MERGESORT#3) = [4] p(MSPLIT) = [1] x1 + [0] p(MSPLIT#1) = [1] x1 + [1] p(MSPLIT#2) = [8] x1 + [1] p(MSPLIT#3) = [1] x1 + [1] x2 + [0] p(c) = [2] p(c1) = [1] p(c10) = [1] p(c11) = [2] p(c12) = [0] p(c13) = [8] p(c14) = [8] p(c15) = [1] x1 + [0] p(c16) = [0] p(c17) = [0] p(c18) = [0] p(c19) = [0] p(c2) = [0] p(c20) = [0] p(c21) = [1] x1 + [1] p(c22) = [0] p(c23) = [1] p(c24) = [1] x1 + [1] p(c25) = [2] p(c26) = [2] p(c27) = [1] p(c28) = [0] p(c29) = [1] x2 + [0] p(c3) = [1] p(c30) = [1] p(c31) = [1] x1 + [1] p(c32) = [0] p(c33) = [1] x1 + [1] p(c34) = [1] p(c35) = [2] p(c4) = [0] p(c5) = [1] p(c6) = [4] p(c7) = [0] p(c8) = [1] p(c9) = [0] p(merge) = [4] x2 + [1] p(merge#1) = [1] x1 + [1] p(merge#2) = [1] x1 + [1] x3 + [0] p(merge#3) = [1] x1 + [2] x2 + [1] x3 + [2] x4 + [1] x5 + [1] p(mergesort) = [1] p(mergesort#1) = [1] x1 + [0] p(mergesort#2) = [8] x1 + [1] x2 + [0] p(mergesort#3) = [1] x1 + [2] p(msplit) = [1] x1 + [2] p(msplit#1) = [1] x1 + [2] p(msplit#2) = [1] x1 + [9] p(msplit#3) = [1] x1 + [14] p(nil) = [0] p(tuple#2) = [1] x1 + [1] x2 + [2] p(#CKLT#) = [1] x1 + [1] p(#COMPARE#) = [1] x1 + [0] p(#LESS#) = [1] x2 + [0] p(#cklt#) = [2] p(#compare#) = [1] p(#less#) = [1] x2 + [1] p(MERGE#) = [1] x1 + [1] x2 + [1] p(MERGE#1#) = [2] x2 + [2] p(MERGE#2#) = [1] x3 + [0] p(MERGE#3#) = [1] x3 + [2] p(MERGESORT#) = [1] x1 + [2] p(MERGESORT#1#) = [1] x1 + [2] p(MERGESORT#2#) = [1] x1 + [9] p(MERGESORT#3#) = [1] x1 + [0] p(MSPLIT#) = [1] x1 + [2] p(MSPLIT#1#) = [1] x1 + [0] p(MSPLIT#2#) = [1] x1 + [0] p(MSPLIT#3#) = [4] x1 + [1] x2 + [1] x3 + [8] p(merge#) = [2] x1 + [8] x2 + [1] p(merge#1#) = [4] x1 + [1] x2 + [1] p(merge#2#) = [2] x1 + [1] x2 + [1] x3 + [0] p(merge#3#) = [2] x1 + [8] x3 + [1] x4 + [2] p(mergesort#) = [2] x1 + [1] p(mergesort#1#) = [1] x1 + [0] p(mergesort#2#) = [2] x1 + [1] p(mergesort#3#) = [0] p(msplit#) = [1] p(msplit#1#) = [0] p(msplit#2#) = [1] x1 + [1] x2 + [4] p(msplit#3#) = [4] x2 + [8] x3 + [2] p(c_1) = [2] x2 + [0] p(c_2) = [1] x1 + [0] p(c_3) = [1] x1 + [1] p(c_4) = [2] p(c_5) = [4] x1 + [2] p(c_6) = [1] p(c_7) = [8] x1 + [0] p(c_8) = [1] x1 + [1] p(c_9) = [1] x1 + [1] p(c_10) = [1] p(c_11) = [1] p(c_12) = [4] x2 + [2] p(c_13) = [0] p(c_14) = [2] p(c_15) = [0] p(c_16) = [1] x1 + [0] p(c_17) = [1] x1 + [6] p(c_18) = [2] p(c_19) = [1] x1 + [5] p(c_20) = [2] p(c_21) = [0] p(c_22) = [0] p(c_23) = [2] p(c_24) = [8] p(c_25) = [1] p(c_26) = [1] p(c_27) = [2] p(c_28) = [1] p(c_29) = [1] p(c_30) = [0] p(c_31) = [1] p(c_32) = [1] p(c_33) = [0] p(c_34) = [0] p(c_35) = [1] p(c_36) = [1] x1 + [1] p(c_37) = [1] p(c_38) = [1] p(c_39) = [0] p(c_40) = [1] p(c_41) = [0] p(c_42) = [1] p(c_43) = [1] p(c_44) = [1] p(c_45) = [2] x1 + [1] p(c_46) = [0] p(c_47) = [0] p(c_48) = [8] p(c_49) = [0] p(c_50) = [1] p(c_51) = [1] x1 + [0] p(c_52) = [1] x1 + [1] p(c_53) = [1] x1 + [1] p(c_54) = [0] p(c_55) = [0] p(c_56) = [1] x1 + [0] p(c_57) = [2] p(c_58) = [8] x1 + [1] p(c_59) = [1] p(c_60) = [0] p(c_61) = [2] x1 + [1] p(c_62) = [0] p(c_63) = [1] x1 + [2] p(c_64) = [2] p(c_65) = [1] x1 + [0] p(c_66) = [0] p(c_67) = [1] p(c_68) = [1] p(c_69) = [0] p(c_70) = [1] p(c_71) = [1] Following rules are strictly oriented: MSPLIT#(z0) = [1] z0 + [2] > [1] z0 + [0] = c_16(MSPLIT#1#(z0)) MSPLIT#1#(::(z0,z1)) = [1] z1 + [7] > [1] z1 + [6] = c_17(MSPLIT#2#(z1,z0)) Following rules are (at-least) weakly oriented: MERGESORT#(z0) = [1] z0 + [2] >= [1] z0 + [2] = MERGESORT#1#(z0) MERGESORT#1#(::(z0,z1)) = [1] z1 + [9] >= [1] z1 + [9] = MERGESORT#2#(z1,z0) MERGESORT#2#(::(z0,z1),z2) = [1] z1 + [16] >= [1] z1 + [16] = MERGESORT#3#(msplit(::(z2,::(z0,z1)))) MERGESORT#2#(::(z0,z1),z2) = [1] z1 + [16] >= [1] z1 + [16] = MSPLIT#(::(z2,::(z0,z1))) MERGESORT#3#(tuple#2(z0,z1)) = [1] z0 + [1] z1 + [2] >= [1] z0 + [2] = MERGESORT#(z0) MERGESORT#3#(tuple#2(z0,z1)) = [1] z0 + [1] z1 + [2] >= [1] z1 + [2] = MERGESORT#(z1) MSPLIT#2#(::(z0,z1),z2) = [1] z1 + [7] >= [1] z1 + [7] = c_19(MSPLIT#(z1)) msplit(z0) = [1] z0 + [2] >= [1] z0 + [2] = msplit#1(z0) msplit#1(::(z0,z1)) = [1] z1 + [9] >= [1] z1 + [9] = msplit#2(z1,z0) msplit#1(nil()) = [2] >= [2] = tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) = [1] z1 + [16] >= [1] z1 + [16] = msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) = [9] >= [9] = tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) = [1] z0 + [1] z1 + [16] >= [1] z0 + [1] z1 + [16] = tuple#2(::(z2,z0),::(z3,z1)) **** Step 7.b:4.b:1.a:2: Assumption. WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#(z1)) - Weak DPs: MERGESORT#(z0) -> MERGESORT#1#(z0) MERGESORT#1#(::(z0,z1)) -> MERGESORT#2#(z1,z0) MERGESORT#2#(::(z0,z1),z2) -> MERGESORT#3#(msplit(::(z2,::(z0,z1)))) MERGESORT#2#(::(z0,z1),z2) -> MSPLIT#(::(z2,::(z0,z1))) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z0) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z1) MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) - Weak TRS: msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/2,c_13/0,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown, timeBCUB = Unknown, timeBCLB = Unknown}} + Details: () **** Step 7.b:4.b:1.b:1: RemoveWeakSuffixes. WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: MERGESORT#(z0) -> MERGESORT#1#(z0) MERGESORT#1#(::(z0,z1)) -> MERGESORT#2#(z1,z0) MERGESORT#2#(::(z0,z1),z2) -> MERGESORT#3#(msplit(::(z2,::(z0,z1)))) MERGESORT#2#(::(z0,z1),z2) -> MSPLIT#(::(z2,::(z0,z1))) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z0) MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z1) MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#(z1)) - Weak TRS: msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/2,c_13/0,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:W:MERGESORT#(z0) -> MERGESORT#1#(z0) -->_1 MERGESORT#1#(::(z0,z1)) -> MERGESORT#2#(z1,z0):2 2:W:MERGESORT#1#(::(z0,z1)) -> MERGESORT#2#(z1,z0) -->_1 MERGESORT#2#(::(z0,z1),z2) -> MSPLIT#(::(z2,::(z0,z1))):4 -->_1 MERGESORT#2#(::(z0,z1),z2) -> MERGESORT#3#(msplit(::(z2,::(z0,z1)))):3 3:W:MERGESORT#2#(::(z0,z1),z2) -> MERGESORT#3#(msplit(::(z2,::(z0,z1)))) -->_1 MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z1):6 -->_1 MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z0):5 4:W:MERGESORT#2#(::(z0,z1),z2) -> MSPLIT#(::(z2,::(z0,z1))) -->_1 MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)):7 5:W:MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z0) -->_1 MERGESORT#(z0) -> MERGESORT#1#(z0):1 6:W:MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z1) -->_1 MERGESORT#(z0) -> MERGESORT#1#(z0):1 7:W:MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) -->_1 MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)):8 8:W:MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) -->_1 MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#(z1)):9 9:W:MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#(z1)) -->_1 MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)):7 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 1: MERGESORT#(z0) -> MERGESORT#1#(z0) 6: MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z1) 3: MERGESORT#2#(::(z0,z1),z2) -> MERGESORT#3#(msplit(::(z2,::(z0,z1)))) 2: MERGESORT#1#(::(z0,z1)) -> MERGESORT#2#(z1,z0) 5: MERGESORT#3#(tuple#2(z0,z1)) -> MERGESORT#(z0) 4: MERGESORT#2#(::(z0,z1),z2) -> MSPLIT#(::(z2,::(z0,z1))) 7: MSPLIT#(z0) -> c_16(MSPLIT#1#(z0)) 9: MSPLIT#2#(::(z0,z1),z2) -> c_19(MSPLIT#(z1)) 8: MSPLIT#1#(::(z0,z1)) -> c_17(MSPLIT#2#(z1,z0)) **** Step 7.b:4.b:1.b:2: EmptyProcessor. WORST_CASE(?,O(1)) + Considered Problem: - Weak TRS: msplit(z0) -> msplit#1(z0) msplit#1(::(z0,z1)) -> msplit#2(z1,z0) msplit#1(nil()) -> tuple#2(nil(),nil()) msplit#2(::(z0,z1),z2) -> msplit#3(msplit(z1),z2,z0) msplit#2(nil(),z0) -> tuple#2(::(z0,nil()),nil()) msplit#3(tuple#2(z0,z1),z2,z3) -> tuple#2(::(z2,z0),::(z3,z1)) - Signature: {#CKLT/1,#COMPARE/2,#LESS/2,#cklt/1,#compare/2,#less/2,MERGE/2,MERGE#1/2,MERGE#2/3,MERGE#3/5,MERGESORT/1 ,MERGESORT#1/1,MERGESORT#2/2,MERGESORT#3/1,MSPLIT/1,MSPLIT#1/1,MSPLIT#2/2,MSPLIT#3/3,merge/2,merge#1/2 ,merge#2/3,merge#3/5,mergesort/1,mergesort#1/1,mergesort#2/2,mergesort#3/1,msplit/1,msplit#1/1,msplit#2/2 ,msplit#3/3,#CKLT#/1,#COMPARE#/2,#LESS#/2,#cklt#/1,#compare#/2,#less#/2,MERGE#/2,MERGE#1#/2,MERGE#2#/3 ,MERGE#3#/5,MERGESORT#/1,MERGESORT#1#/1,MERGESORT#2#/2,MERGESORT#3#/1,MSPLIT#/1,MSPLIT#1#/1,MSPLIT#2#/2 ,MSPLIT#3#/3,merge#/2,merge#1#/2,merge#2#/3,merge#3#/5,mergesort#/1,mergesort#1#/1,mergesort#2#/2 ,mergesort#3#/1,msplit#/1,msplit#1#/1,msplit#2#/2,msplit#3#/3} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,c/0,c1/0,c10/0,c11/0,c12/1,c13/0,c14/1,c15/2,c16/1,c17/1,c18/0,c19/2,c2/0,c20/0 ,c21/1,c22/1,c23/1,c24/1,c25/0,c26/2,c27/0,c28/2,c29/2,c3/0,c30/1,c31/1,c32/0,c33/2,c34/0,c35/0,c4/0,c5/0 ,c6/0,c7/0,c8/1,c9/0,nil/0,tuple#2/2,c_1/2,c_2/1,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1,c_10/1,c_11/0 ,c_12/2,c_13/0,c_14/1,c_15/1,c_16/1,c_17/1,c_18/0,c_19/1,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0 ,c_27/0,c_28/0,c_29/0,c_30/1,c_31/0,c_32/0,c_33/0,c_34/1,c_35/0,c_36/1,c_37/0,c_38/0,c_39/0,c_40/0,c_41/0 ,c_42/0,c_43/0,c_44/0,c_45/1,c_46/0,c_47/0,c_48/0,c_49/1,c_50/0,c_51/1,c_52/1,c_53/1,c_54/1,c_55/0,c_56/1 ,c_57/0,c_58/1,c_59/1,c_60/1,c_61/1,c_62/0,c_63/1,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0,c_69/1,c_70/0,c_71/0} - Obligation: innermost runtime complexity wrt. defined symbols {#CKLT#,#COMPARE#,#LESS#,#cklt#,#compare#,#less#,MERGE# ,MERGE#1#,MERGE#2#,MERGE#3#,MERGESORT#,MERGESORT#1#,MERGESORT#2#,MERGESORT#3#,MSPLIT#,MSPLIT#1#,MSPLIT#2# ,MSPLIT#3#,merge#,merge#1#,merge#2#,merge#3#,mergesort#,mergesort#1#,mergesort#2#,mergesort#3#,msplit# ,msplit#1#,msplit#2#,msplit#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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,c4,c5 ,c6,c7,c8,c9,nil,tuple#2} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). WORST_CASE(?,O(n^2))