* Step 1: Sum WORST_CASE(?,O(n^5))
+ Considered Problem:
- Strict TRS:
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
sortAll(@l) -> sortAll#1(@l)
sortAll#1(::(@x,@xs)) -> sortAll#2(@x,@xs)
sortAll#1(nil()) -> nil()
sortAll#2(tuple#2(@vals,@key),@xs) -> ::(tuple#2(quicksort(@vals),@key),sortAll(@xs))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitAndSort(@l) -> sortAll(split(@l))
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and,#ckgt,#compare,#eq,#equal,#greater,append,append#1
,insert,insert#1,insert#2,insert#3,insert#4,quicksort,quicksort#1,quicksort#2,sortAll,sortAll#1,sortAll#2
,split,split#1,splitAndSort,splitqs,splitqs#1,splitqs#2,splitqs#3} and constructors {#0,#EQ,#GT,#LT,#false
,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
Sum {left = someStrategy, right = someStrategy}
+ Details:
()
* Step 2: DependencyPairs WORST_CASE(?,O(n^5))
+ Considered Problem:
- Strict TRS:
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
sortAll(@l) -> sortAll#1(@l)
sortAll#1(::(@x,@xs)) -> sortAll#2(@x,@xs)
sortAll#1(nil()) -> nil()
sortAll#2(tuple#2(@vals,@key),@xs) -> ::(tuple#2(quicksort(@vals),@key),sortAll(@xs))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitAndSort(@l) -> sortAll(split(@l))
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and,#ckgt,#compare,#eq,#equal,#greater,append,append#1
,insert,insert#1,insert#2,insert#3,insert#4,quicksort,quicksort#1,quicksort#2,sortAll,sortAll#1,sortAll#2
,split,split#1,splitAndSort,splitqs,splitqs#1,splitqs#2,splitqs#3} and constructors {#0,#EQ,#GT,#LT,#false
,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
DependencyPairs {dpKind_ = DT}
+ Details:
We add the following dependency tuples:
Strict DPs
#equal#(@x,@y) -> c_1(#eq#(@x,@y))
#greater#(@x,@y) -> c_2(#ckgt#(#compare(@x,@y)),#compare#(@x,@y))
append#(@l,@ys) -> c_3(append#1#(@l,@ys))
append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys))
append#1#(nil(),@ys) -> c_5()
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#2#(nil(),@keyX,@valX,@x) -> c_9()
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
,#equal#(@key1,@keyX))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
insert#4#(#true(),@key1,@ls,@valX,@vals1,@x) -> c_12()
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#1#(nil()) -> c_15()
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#1#(nil()) -> c_19()
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
split#1#(nil()) -> c_23()
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#2#(splitqs(@pivot,@xs),@pivot,@x),splitqs#(@pivot,@xs))
splitqs#1#(nil(),@pivot) -> c_27()
splitqs#2#(tuple#2(@ls,@rs),@pivot,@x) -> c_28(splitqs#3#(#greater(@x,@pivot),@ls,@rs,@x)
,#greater#(@x,@pivot))
splitqs#3#(#false(),@ls,@rs,@x) -> c_29()
splitqs#3#(#true(),@ls,@rs,@x) -> c_30()
Weak DPs
#and#(#false(),#false()) -> c_31()
#and#(#false(),#true()) -> c_32()
#and#(#true(),#false()) -> c_33()
#and#(#true(),#true()) -> c_34()
#ckgt#(#EQ()) -> c_35()
#ckgt#(#GT()) -> c_36()
#ckgt#(#LT()) -> c_37()
#compare#(#0(),#0()) -> c_38()
#compare#(#0(),#neg(@y)) -> c_39()
#compare#(#0(),#pos(@y)) -> c_40()
#compare#(#0(),#s(@y)) -> c_41()
#compare#(#neg(@x),#0()) -> c_42()
#compare#(#neg(@x),#neg(@y)) -> c_43(#compare#(@y,@x))
#compare#(#neg(@x),#pos(@y)) -> c_44()
#compare#(#pos(@x),#0()) -> c_45()
#compare#(#pos(@x),#neg(@y)) -> c_46()
#compare#(#pos(@x),#pos(@y)) -> c_47(#compare#(@x,@y))
#compare#(#s(@x),#0()) -> c_48()
#compare#(#s(@x),#s(@y)) -> c_49(#compare#(@x,@y))
#eq#(#0(),#0()) -> c_50()
#eq#(#0(),#neg(@y)) -> c_51()
#eq#(#0(),#pos(@y)) -> c_52()
#eq#(#0(),#s(@y)) -> c_53()
#eq#(#neg(@x),#0()) -> c_54()
#eq#(#neg(@x),#neg(@y)) -> c_55(#eq#(@x,@y))
#eq#(#neg(@x),#pos(@y)) -> c_56()
#eq#(#pos(@x),#0()) -> c_57()
#eq#(#pos(@x),#neg(@y)) -> c_58()
#eq#(#pos(@x),#pos(@y)) -> c_59(#eq#(@x,@y))
#eq#(#s(@x),#0()) -> c_60()
#eq#(#s(@x),#s(@y)) -> c_61(#eq#(@x,@y))
#eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_62(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2))
#eq#(::(@x_1,@x_2),nil()) -> c_63()
#eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_64()
#eq#(nil(),::(@y_1,@y_2)) -> c_65()
#eq#(nil(),nil()) -> c_66()
#eq#(nil(),tuple#2(@y_1,@y_2)) -> c_67()
#eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_68()
#eq#(tuple#2(@x_1,@x_2),nil()) -> c_69()
#eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_70(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2))
and mark the set of starting terms.
* Step 3: UsableRules WORST_CASE(?,O(n^5))
+ Considered Problem:
- Strict DPs:
#equal#(@x,@y) -> c_1(#eq#(@x,@y))
#greater#(@x,@y) -> c_2(#ckgt#(#compare(@x,@y)),#compare#(@x,@y))
append#(@l,@ys) -> c_3(append#1#(@l,@ys))
append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys))
append#1#(nil(),@ys) -> c_5()
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#2#(nil(),@keyX,@valX,@x) -> c_9()
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
,#equal#(@key1,@keyX))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
insert#4#(#true(),@key1,@ls,@valX,@vals1,@x) -> c_12()
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#1#(nil()) -> c_15()
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#1#(nil()) -> c_19()
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
split#1#(nil()) -> c_23()
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#2#(splitqs(@pivot,@xs),@pivot,@x),splitqs#(@pivot,@xs))
splitqs#1#(nil(),@pivot) -> c_27()
splitqs#2#(tuple#2(@ls,@rs),@pivot,@x) -> c_28(splitqs#3#(#greater(@x,@pivot),@ls,@rs,@x)
,#greater#(@x,@pivot))
splitqs#3#(#false(),@ls,@rs,@x) -> c_29()
splitqs#3#(#true(),@ls,@rs,@x) -> c_30()
- Weak DPs:
#and#(#false(),#false()) -> c_31()
#and#(#false(),#true()) -> c_32()
#and#(#true(),#false()) -> c_33()
#and#(#true(),#true()) -> c_34()
#ckgt#(#EQ()) -> c_35()
#ckgt#(#GT()) -> c_36()
#ckgt#(#LT()) -> c_37()
#compare#(#0(),#0()) -> c_38()
#compare#(#0(),#neg(@y)) -> c_39()
#compare#(#0(),#pos(@y)) -> c_40()
#compare#(#0(),#s(@y)) -> c_41()
#compare#(#neg(@x),#0()) -> c_42()
#compare#(#neg(@x),#neg(@y)) -> c_43(#compare#(@y,@x))
#compare#(#neg(@x),#pos(@y)) -> c_44()
#compare#(#pos(@x),#0()) -> c_45()
#compare#(#pos(@x),#neg(@y)) -> c_46()
#compare#(#pos(@x),#pos(@y)) -> c_47(#compare#(@x,@y))
#compare#(#s(@x),#0()) -> c_48()
#compare#(#s(@x),#s(@y)) -> c_49(#compare#(@x,@y))
#eq#(#0(),#0()) -> c_50()
#eq#(#0(),#neg(@y)) -> c_51()
#eq#(#0(),#pos(@y)) -> c_52()
#eq#(#0(),#s(@y)) -> c_53()
#eq#(#neg(@x),#0()) -> c_54()
#eq#(#neg(@x),#neg(@y)) -> c_55(#eq#(@x,@y))
#eq#(#neg(@x),#pos(@y)) -> c_56()
#eq#(#pos(@x),#0()) -> c_57()
#eq#(#pos(@x),#neg(@y)) -> c_58()
#eq#(#pos(@x),#pos(@y)) -> c_59(#eq#(@x,@y))
#eq#(#s(@x),#0()) -> c_60()
#eq#(#s(@x),#s(@y)) -> c_61(#eq#(@x,@y))
#eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_62(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2))
#eq#(::(@x_1,@x_2),nil()) -> c_63()
#eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_64()
#eq#(nil(),::(@y_1,@y_2)) -> c_65()
#eq#(nil(),nil()) -> c_66()
#eq#(nil(),tuple#2(@y_1,@y_2)) -> c_67()
#eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_68()
#eq#(tuple#2(@x_1,@x_2),nil()) -> c_69()
#eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_70(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
sortAll(@l) -> sortAll#1(@l)
sortAll#1(::(@x,@xs)) -> sortAll#2(@x,@xs)
sortAll#1(nil()) -> nil()
sortAll#2(tuple#2(@vals,@key),@xs) -> ::(tuple#2(quicksort(@vals),@key),sortAll(@xs))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitAndSort(@l) -> sortAll(split(@l))
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/2,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/3,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/2
,c_25/1,c_26/2,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
UsableRules
+ Details:
We replace rewrite rules by usable rules:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
#and#(#false(),#false()) -> c_31()
#and#(#false(),#true()) -> c_32()
#and#(#true(),#false()) -> c_33()
#and#(#true(),#true()) -> c_34()
#ckgt#(#EQ()) -> c_35()
#ckgt#(#GT()) -> c_36()
#ckgt#(#LT()) -> c_37()
#compare#(#0(),#0()) -> c_38()
#compare#(#0(),#neg(@y)) -> c_39()
#compare#(#0(),#pos(@y)) -> c_40()
#compare#(#0(),#s(@y)) -> c_41()
#compare#(#neg(@x),#0()) -> c_42()
#compare#(#neg(@x),#neg(@y)) -> c_43(#compare#(@y,@x))
#compare#(#neg(@x),#pos(@y)) -> c_44()
#compare#(#pos(@x),#0()) -> c_45()
#compare#(#pos(@x),#neg(@y)) -> c_46()
#compare#(#pos(@x),#pos(@y)) -> c_47(#compare#(@x,@y))
#compare#(#s(@x),#0()) -> c_48()
#compare#(#s(@x),#s(@y)) -> c_49(#compare#(@x,@y))
#eq#(#0(),#0()) -> c_50()
#eq#(#0(),#neg(@y)) -> c_51()
#eq#(#0(),#pos(@y)) -> c_52()
#eq#(#0(),#s(@y)) -> c_53()
#eq#(#neg(@x),#0()) -> c_54()
#eq#(#neg(@x),#neg(@y)) -> c_55(#eq#(@x,@y))
#eq#(#neg(@x),#pos(@y)) -> c_56()
#eq#(#pos(@x),#0()) -> c_57()
#eq#(#pos(@x),#neg(@y)) -> c_58()
#eq#(#pos(@x),#pos(@y)) -> c_59(#eq#(@x,@y))
#eq#(#s(@x),#0()) -> c_60()
#eq#(#s(@x),#s(@y)) -> c_61(#eq#(@x,@y))
#eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_62(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2))
#eq#(::(@x_1,@x_2),nil()) -> c_63()
#eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_64()
#eq#(nil(),::(@y_1,@y_2)) -> c_65()
#eq#(nil(),nil()) -> c_66()
#eq#(nil(),tuple#2(@y_1,@y_2)) -> c_67()
#eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_68()
#eq#(tuple#2(@x_1,@x_2),nil()) -> c_69()
#eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_70(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2))
#equal#(@x,@y) -> c_1(#eq#(@x,@y))
#greater#(@x,@y) -> c_2(#ckgt#(#compare(@x,@y)),#compare#(@x,@y))
append#(@l,@ys) -> c_3(append#1#(@l,@ys))
append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys))
append#1#(nil(),@ys) -> c_5()
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#2#(nil(),@keyX,@valX,@x) -> c_9()
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
,#equal#(@key1,@keyX))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
insert#4#(#true(),@key1,@ls,@valX,@vals1,@x) -> c_12()
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#1#(nil()) -> c_15()
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#1#(nil()) -> c_19()
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
split#1#(nil()) -> c_23()
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#2#(splitqs(@pivot,@xs),@pivot,@x),splitqs#(@pivot,@xs))
splitqs#1#(nil(),@pivot) -> c_27()
splitqs#2#(tuple#2(@ls,@rs),@pivot,@x) -> c_28(splitqs#3#(#greater(@x,@pivot),@ls,@rs,@x)
,#greater#(@x,@pivot))
splitqs#3#(#false(),@ls,@rs,@x) -> c_29()
splitqs#3#(#true(),@ls,@rs,@x) -> c_30()
* Step 4: PredecessorEstimation WORST_CASE(?,O(n^5))
+ Considered Problem:
- Strict DPs:
#equal#(@x,@y) -> c_1(#eq#(@x,@y))
#greater#(@x,@y) -> c_2(#ckgt#(#compare(@x,@y)),#compare#(@x,@y))
append#(@l,@ys) -> c_3(append#1#(@l,@ys))
append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys))
append#1#(nil(),@ys) -> c_5()
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#2#(nil(),@keyX,@valX,@x) -> c_9()
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
,#equal#(@key1,@keyX))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
insert#4#(#true(),@key1,@ls,@valX,@vals1,@x) -> c_12()
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#1#(nil()) -> c_15()
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#1#(nil()) -> c_19()
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
split#1#(nil()) -> c_23()
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#2#(splitqs(@pivot,@xs),@pivot,@x),splitqs#(@pivot,@xs))
splitqs#1#(nil(),@pivot) -> c_27()
splitqs#2#(tuple#2(@ls,@rs),@pivot,@x) -> c_28(splitqs#3#(#greater(@x,@pivot),@ls,@rs,@x)
,#greater#(@x,@pivot))
splitqs#3#(#false(),@ls,@rs,@x) -> c_29()
splitqs#3#(#true(),@ls,@rs,@x) -> c_30()
- Weak DPs:
#and#(#false(),#false()) -> c_31()
#and#(#false(),#true()) -> c_32()
#and#(#true(),#false()) -> c_33()
#and#(#true(),#true()) -> c_34()
#ckgt#(#EQ()) -> c_35()
#ckgt#(#GT()) -> c_36()
#ckgt#(#LT()) -> c_37()
#compare#(#0(),#0()) -> c_38()
#compare#(#0(),#neg(@y)) -> c_39()
#compare#(#0(),#pos(@y)) -> c_40()
#compare#(#0(),#s(@y)) -> c_41()
#compare#(#neg(@x),#0()) -> c_42()
#compare#(#neg(@x),#neg(@y)) -> c_43(#compare#(@y,@x))
#compare#(#neg(@x),#pos(@y)) -> c_44()
#compare#(#pos(@x),#0()) -> c_45()
#compare#(#pos(@x),#neg(@y)) -> c_46()
#compare#(#pos(@x),#pos(@y)) -> c_47(#compare#(@x,@y))
#compare#(#s(@x),#0()) -> c_48()
#compare#(#s(@x),#s(@y)) -> c_49(#compare#(@x,@y))
#eq#(#0(),#0()) -> c_50()
#eq#(#0(),#neg(@y)) -> c_51()
#eq#(#0(),#pos(@y)) -> c_52()
#eq#(#0(),#s(@y)) -> c_53()
#eq#(#neg(@x),#0()) -> c_54()
#eq#(#neg(@x),#neg(@y)) -> c_55(#eq#(@x,@y))
#eq#(#neg(@x),#pos(@y)) -> c_56()
#eq#(#pos(@x),#0()) -> c_57()
#eq#(#pos(@x),#neg(@y)) -> c_58()
#eq#(#pos(@x),#pos(@y)) -> c_59(#eq#(@x,@y))
#eq#(#s(@x),#0()) -> c_60()
#eq#(#s(@x),#s(@y)) -> c_61(#eq#(@x,@y))
#eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_62(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2))
#eq#(::(@x_1,@x_2),nil()) -> c_63()
#eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_64()
#eq#(nil(),::(@y_1,@y_2)) -> c_65()
#eq#(nil(),nil()) -> c_66()
#eq#(nil(),tuple#2(@y_1,@y_2)) -> c_67()
#eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_68()
#eq#(tuple#2(@x_1,@x_2),nil()) -> c_69()
#eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_70(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/2,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/3,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/2
,c_25/1,c_26/2,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
PredecessorEstimation {onSelection = all simple predecessor estimation selector}
+ Details:
We estimate the number of application of
{1,2,5,9,12,15,19,23,27,29,30}
by application of
Pre({1,2,5,9,12,15,19,23,27,29,30}) = {3,7,10,13,17,21,25,28}.
Here rules are labelled as follows:
1: #equal#(@x,@y) -> c_1(#eq#(@x,@y))
2: #greater#(@x,@y) -> c_2(#ckgt#(#compare(@x,@y)),#compare#(@x,@y))
3: append#(@l,@ys) -> c_3(append#1#(@l,@ys))
4: append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys))
5: append#1#(nil(),@ys) -> c_5()
6: insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
7: insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
8: insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
9: insert#2#(nil(),@keyX,@valX,@x) -> c_9()
10: insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
,#equal#(@key1,@keyX))
11: insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
12: insert#4#(#true(),@key1,@ls,@valX,@vals1,@x) -> c_12()
13: quicksort#(@l) -> c_13(quicksort#1#(@l))
14: quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
15: quicksort#1#(nil()) -> c_15()
16: quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
17: sortAll#(@l) -> c_17(sortAll#1#(@l))
18: sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
19: sortAll#1#(nil()) -> c_19()
20: sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
21: split#(@l) -> c_21(split#1#(@l))
22: split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
23: split#1#(nil()) -> c_23()
24: splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
25: splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
26: splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#2#(splitqs(@pivot,@xs),@pivot,@x),splitqs#(@pivot,@xs))
27: splitqs#1#(nil(),@pivot) -> c_27()
28: splitqs#2#(tuple#2(@ls,@rs),@pivot,@x) -> c_28(splitqs#3#(#greater(@x,@pivot),@ls,@rs,@x)
,#greater#(@x,@pivot))
29: splitqs#3#(#false(),@ls,@rs,@x) -> c_29()
30: splitqs#3#(#true(),@ls,@rs,@x) -> c_30()
31: #and#(#false(),#false()) -> c_31()
32: #and#(#false(),#true()) -> c_32()
33: #and#(#true(),#false()) -> c_33()
34: #and#(#true(),#true()) -> c_34()
35: #ckgt#(#EQ()) -> c_35()
36: #ckgt#(#GT()) -> c_36()
37: #ckgt#(#LT()) -> c_37()
38: #compare#(#0(),#0()) -> c_38()
39: #compare#(#0(),#neg(@y)) -> c_39()
40: #compare#(#0(),#pos(@y)) -> c_40()
41: #compare#(#0(),#s(@y)) -> c_41()
42: #compare#(#neg(@x),#0()) -> c_42()
43: #compare#(#neg(@x),#neg(@y)) -> c_43(#compare#(@y,@x))
44: #compare#(#neg(@x),#pos(@y)) -> c_44()
45: #compare#(#pos(@x),#0()) -> c_45()
46: #compare#(#pos(@x),#neg(@y)) -> c_46()
47: #compare#(#pos(@x),#pos(@y)) -> c_47(#compare#(@x,@y))
48: #compare#(#s(@x),#0()) -> c_48()
49: #compare#(#s(@x),#s(@y)) -> c_49(#compare#(@x,@y))
50: #eq#(#0(),#0()) -> c_50()
51: #eq#(#0(),#neg(@y)) -> c_51()
52: #eq#(#0(),#pos(@y)) -> c_52()
53: #eq#(#0(),#s(@y)) -> c_53()
54: #eq#(#neg(@x),#0()) -> c_54()
55: #eq#(#neg(@x),#neg(@y)) -> c_55(#eq#(@x,@y))
56: #eq#(#neg(@x),#pos(@y)) -> c_56()
57: #eq#(#pos(@x),#0()) -> c_57()
58: #eq#(#pos(@x),#neg(@y)) -> c_58()
59: #eq#(#pos(@x),#pos(@y)) -> c_59(#eq#(@x,@y))
60: #eq#(#s(@x),#0()) -> c_60()
61: #eq#(#s(@x),#s(@y)) -> c_61(#eq#(@x,@y))
62: #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_62(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2))
63: #eq#(::(@x_1,@x_2),nil()) -> c_63()
64: #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_64()
65: #eq#(nil(),::(@y_1,@y_2)) -> c_65()
66: #eq#(nil(),nil()) -> c_66()
67: #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_67()
68: #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_68()
69: #eq#(tuple#2(@x_1,@x_2),nil()) -> c_69()
70: #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_70(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2))
* Step 5: PredecessorEstimation WORST_CASE(?,O(n^5))
+ Considered Problem:
- Strict DPs:
append#(@l,@ys) -> c_3(append#1#(@l,@ys))
append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys))
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
,#equal#(@key1,@keyX))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#2#(splitqs(@pivot,@xs),@pivot,@x),splitqs#(@pivot,@xs))
splitqs#2#(tuple#2(@ls,@rs),@pivot,@x) -> c_28(splitqs#3#(#greater(@x,@pivot),@ls,@rs,@x)
,#greater#(@x,@pivot))
- Weak DPs:
#and#(#false(),#false()) -> c_31()
#and#(#false(),#true()) -> c_32()
#and#(#true(),#false()) -> c_33()
#and#(#true(),#true()) -> c_34()
#ckgt#(#EQ()) -> c_35()
#ckgt#(#GT()) -> c_36()
#ckgt#(#LT()) -> c_37()
#compare#(#0(),#0()) -> c_38()
#compare#(#0(),#neg(@y)) -> c_39()
#compare#(#0(),#pos(@y)) -> c_40()
#compare#(#0(),#s(@y)) -> c_41()
#compare#(#neg(@x),#0()) -> c_42()
#compare#(#neg(@x),#neg(@y)) -> c_43(#compare#(@y,@x))
#compare#(#neg(@x),#pos(@y)) -> c_44()
#compare#(#pos(@x),#0()) -> c_45()
#compare#(#pos(@x),#neg(@y)) -> c_46()
#compare#(#pos(@x),#pos(@y)) -> c_47(#compare#(@x,@y))
#compare#(#s(@x),#0()) -> c_48()
#compare#(#s(@x),#s(@y)) -> c_49(#compare#(@x,@y))
#eq#(#0(),#0()) -> c_50()
#eq#(#0(),#neg(@y)) -> c_51()
#eq#(#0(),#pos(@y)) -> c_52()
#eq#(#0(),#s(@y)) -> c_53()
#eq#(#neg(@x),#0()) -> c_54()
#eq#(#neg(@x),#neg(@y)) -> c_55(#eq#(@x,@y))
#eq#(#neg(@x),#pos(@y)) -> c_56()
#eq#(#pos(@x),#0()) -> c_57()
#eq#(#pos(@x),#neg(@y)) -> c_58()
#eq#(#pos(@x),#pos(@y)) -> c_59(#eq#(@x,@y))
#eq#(#s(@x),#0()) -> c_60()
#eq#(#s(@x),#s(@y)) -> c_61(#eq#(@x,@y))
#eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_62(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2))
#eq#(::(@x_1,@x_2),nil()) -> c_63()
#eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_64()
#eq#(nil(),::(@y_1,@y_2)) -> c_65()
#eq#(nil(),nil()) -> c_66()
#eq#(nil(),tuple#2(@y_1,@y_2)) -> c_67()
#eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_68()
#eq#(tuple#2(@x_1,@x_2),nil()) -> c_69()
#eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_70(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2))
#equal#(@x,@y) -> c_1(#eq#(@x,@y))
#greater#(@x,@y) -> c_2(#ckgt#(#compare(@x,@y)),#compare#(@x,@y))
append#1#(nil(),@ys) -> c_5()
insert#2#(nil(),@keyX,@valX,@x) -> c_9()
insert#4#(#true(),@key1,@ls,@valX,@vals1,@x) -> c_12()
quicksort#1#(nil()) -> c_15()
sortAll#1#(nil()) -> c_19()
split#1#(nil()) -> c_23()
splitqs#1#(nil(),@pivot) -> c_27()
splitqs#3#(#false(),@ls,@rs,@x) -> c_29()
splitqs#3#(#true(),@ls,@rs,@x) -> c_30()
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/2,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/3,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/2
,c_25/1,c_26/2,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
PredecessorEstimation {onSelection = all simple predecessor estimation selector}
+ Details:
We estimate the number of application of
{19}
by application of
Pre({19}) = {18}.
Here rules are labelled as follows:
1: append#(@l,@ys) -> c_3(append#1#(@l,@ys))
2: append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys))
3: insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
4: insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
5: insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
6: insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
,#equal#(@key1,@keyX))
7: insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
8: quicksort#(@l) -> c_13(quicksort#1#(@l))
9: quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
10: quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
11: sortAll#(@l) -> c_17(sortAll#1#(@l))
12: sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
13: sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
14: split#(@l) -> c_21(split#1#(@l))
15: split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
16: splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
17: splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
18: splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#2#(splitqs(@pivot,@xs),@pivot,@x),splitqs#(@pivot,@xs))
19: splitqs#2#(tuple#2(@ls,@rs),@pivot,@x) -> c_28(splitqs#3#(#greater(@x,@pivot),@ls,@rs,@x)
,#greater#(@x,@pivot))
20: #and#(#false(),#false()) -> c_31()
21: #and#(#false(),#true()) -> c_32()
22: #and#(#true(),#false()) -> c_33()
23: #and#(#true(),#true()) -> c_34()
24: #ckgt#(#EQ()) -> c_35()
25: #ckgt#(#GT()) -> c_36()
26: #ckgt#(#LT()) -> c_37()
27: #compare#(#0(),#0()) -> c_38()
28: #compare#(#0(),#neg(@y)) -> c_39()
29: #compare#(#0(),#pos(@y)) -> c_40()
30: #compare#(#0(),#s(@y)) -> c_41()
31: #compare#(#neg(@x),#0()) -> c_42()
32: #compare#(#neg(@x),#neg(@y)) -> c_43(#compare#(@y,@x))
33: #compare#(#neg(@x),#pos(@y)) -> c_44()
34: #compare#(#pos(@x),#0()) -> c_45()
35: #compare#(#pos(@x),#neg(@y)) -> c_46()
36: #compare#(#pos(@x),#pos(@y)) -> c_47(#compare#(@x,@y))
37: #compare#(#s(@x),#0()) -> c_48()
38: #compare#(#s(@x),#s(@y)) -> c_49(#compare#(@x,@y))
39: #eq#(#0(),#0()) -> c_50()
40: #eq#(#0(),#neg(@y)) -> c_51()
41: #eq#(#0(),#pos(@y)) -> c_52()
42: #eq#(#0(),#s(@y)) -> c_53()
43: #eq#(#neg(@x),#0()) -> c_54()
44: #eq#(#neg(@x),#neg(@y)) -> c_55(#eq#(@x,@y))
45: #eq#(#neg(@x),#pos(@y)) -> c_56()
46: #eq#(#pos(@x),#0()) -> c_57()
47: #eq#(#pos(@x),#neg(@y)) -> c_58()
48: #eq#(#pos(@x),#pos(@y)) -> c_59(#eq#(@x,@y))
49: #eq#(#s(@x),#0()) -> c_60()
50: #eq#(#s(@x),#s(@y)) -> c_61(#eq#(@x,@y))
51: #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_62(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2))
52: #eq#(::(@x_1,@x_2),nil()) -> c_63()
53: #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_64()
54: #eq#(nil(),::(@y_1,@y_2)) -> c_65()
55: #eq#(nil(),nil()) -> c_66()
56: #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_67()
57: #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_68()
58: #eq#(tuple#2(@x_1,@x_2),nil()) -> c_69()
59: #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_70(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2))
60: #equal#(@x,@y) -> c_1(#eq#(@x,@y))
61: #greater#(@x,@y) -> c_2(#ckgt#(#compare(@x,@y)),#compare#(@x,@y))
62: append#1#(nil(),@ys) -> c_5()
63: insert#2#(nil(),@keyX,@valX,@x) -> c_9()
64: insert#4#(#true(),@key1,@ls,@valX,@vals1,@x) -> c_12()
65: quicksort#1#(nil()) -> c_15()
66: sortAll#1#(nil()) -> c_19()
67: split#1#(nil()) -> c_23()
68: splitqs#1#(nil(),@pivot) -> c_27()
69: splitqs#3#(#false(),@ls,@rs,@x) -> c_29()
70: splitqs#3#(#true(),@ls,@rs,@x) -> c_30()
* Step 6: RemoveWeakSuffixes WORST_CASE(?,O(n^5))
+ Considered Problem:
- Strict DPs:
append#(@l,@ys) -> c_3(append#1#(@l,@ys))
append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys))
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
,#equal#(@key1,@keyX))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#2#(splitqs(@pivot,@xs),@pivot,@x),splitqs#(@pivot,@xs))
- Weak DPs:
#and#(#false(),#false()) -> c_31()
#and#(#false(),#true()) -> c_32()
#and#(#true(),#false()) -> c_33()
#and#(#true(),#true()) -> c_34()
#ckgt#(#EQ()) -> c_35()
#ckgt#(#GT()) -> c_36()
#ckgt#(#LT()) -> c_37()
#compare#(#0(),#0()) -> c_38()
#compare#(#0(),#neg(@y)) -> c_39()
#compare#(#0(),#pos(@y)) -> c_40()
#compare#(#0(),#s(@y)) -> c_41()
#compare#(#neg(@x),#0()) -> c_42()
#compare#(#neg(@x),#neg(@y)) -> c_43(#compare#(@y,@x))
#compare#(#neg(@x),#pos(@y)) -> c_44()
#compare#(#pos(@x),#0()) -> c_45()
#compare#(#pos(@x),#neg(@y)) -> c_46()
#compare#(#pos(@x),#pos(@y)) -> c_47(#compare#(@x,@y))
#compare#(#s(@x),#0()) -> c_48()
#compare#(#s(@x),#s(@y)) -> c_49(#compare#(@x,@y))
#eq#(#0(),#0()) -> c_50()
#eq#(#0(),#neg(@y)) -> c_51()
#eq#(#0(),#pos(@y)) -> c_52()
#eq#(#0(),#s(@y)) -> c_53()
#eq#(#neg(@x),#0()) -> c_54()
#eq#(#neg(@x),#neg(@y)) -> c_55(#eq#(@x,@y))
#eq#(#neg(@x),#pos(@y)) -> c_56()
#eq#(#pos(@x),#0()) -> c_57()
#eq#(#pos(@x),#neg(@y)) -> c_58()
#eq#(#pos(@x),#pos(@y)) -> c_59(#eq#(@x,@y))
#eq#(#s(@x),#0()) -> c_60()
#eq#(#s(@x),#s(@y)) -> c_61(#eq#(@x,@y))
#eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_62(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2))
#eq#(::(@x_1,@x_2),nil()) -> c_63()
#eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_64()
#eq#(nil(),::(@y_1,@y_2)) -> c_65()
#eq#(nil(),nil()) -> c_66()
#eq#(nil(),tuple#2(@y_1,@y_2)) -> c_67()
#eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_68()
#eq#(tuple#2(@x_1,@x_2),nil()) -> c_69()
#eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_70(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2))
#equal#(@x,@y) -> c_1(#eq#(@x,@y))
#greater#(@x,@y) -> c_2(#ckgt#(#compare(@x,@y)),#compare#(@x,@y))
append#1#(nil(),@ys) -> c_5()
insert#2#(nil(),@keyX,@valX,@x) -> c_9()
insert#4#(#true(),@key1,@ls,@valX,@vals1,@x) -> c_12()
quicksort#1#(nil()) -> c_15()
sortAll#1#(nil()) -> c_19()
split#1#(nil()) -> c_23()
splitqs#1#(nil(),@pivot) -> c_27()
splitqs#2#(tuple#2(@ls,@rs),@pivot,@x) -> c_28(splitqs#3#(#greater(@x,@pivot),@ls,@rs,@x)
,#greater#(@x,@pivot))
splitqs#3#(#false(),@ls,@rs,@x) -> c_29()
splitqs#3#(#true(),@ls,@rs,@x) -> c_30()
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/2,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/3,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/2
,c_25/1,c_26/2,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:S:append#(@l,@ys) -> c_3(append#1#(@l,@ys))
-->_1 append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys)):2
-->_1 append#1#(nil(),@ys) -> c_5():61
2:S:append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys))
-->_1 append#(@l,@ys) -> c_3(append#1#(@l,@ys)):1
3:S:insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
-->_1 insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x)):4
4:S:insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
-->_1 insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x)):5
-->_1 insert#2#(nil(),@keyX,@valX,@x) -> c_9():62
5:S:insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
-->_1 insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
,#equal#(@key1,@keyX)):6
6:S:insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
,#equal#(@key1,@keyX))
-->_2 #equal#(@x,@y) -> c_1(#eq#(@x,@y)):59
-->_1 insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls)):7
-->_1 insert#4#(#true(),@key1,@ls,@valX,@vals1,@x) -> c_12():63
7:S:insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
-->_1 insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x)):3
8:S:quicksort#(@l) -> c_13(quicksort#1#(@l))
-->_1 quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs)):9
-->_1 quicksort#1#(nil()) -> c_15():64
9:S:quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
-->_2 splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot)):17
-->_1 quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys)):10
10:S:quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
-->_3 quicksort#(@l) -> c_13(quicksort#1#(@l)):8
-->_2 quicksort#(@l) -> c_13(quicksort#1#(@l)):8
-->_1 append#(@l,@ys) -> c_3(append#1#(@l,@ys)):1
11:S:sortAll#(@l) -> c_17(sortAll#1#(@l))
-->_1 sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs)):12
-->_1 sortAll#1#(nil()) -> c_19():65
12:S:sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
-->_1 sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs)):13
13:S:sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
-->_2 sortAll#(@l) -> c_17(sortAll#1#(@l)):11
-->_1 quicksort#(@l) -> c_13(quicksort#1#(@l)):8
14:S:split#(@l) -> c_21(split#1#(@l))
-->_1 split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs)):15
-->_1 split#1#(nil()) -> c_23():66
15:S:split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
-->_2 split#(@l) -> c_21(split#1#(@l)):14
-->_1 insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x)):3
16:S:splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
-->_2 split#(@l) -> c_21(split#1#(@l)):14
-->_1 sortAll#(@l) -> c_17(sortAll#1#(@l)):11
17:S:splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
-->_1 splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#2#(splitqs(@pivot,@xs),@pivot,@x)
,splitqs#(@pivot,@xs)):18
-->_1 splitqs#1#(nil(),@pivot) -> c_27():67
18:S:splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#2#(splitqs(@pivot,@xs),@pivot,@x),splitqs#(@pivot,@xs))
-->_1 splitqs#2#(tuple#2(@ls,@rs),@pivot,@x) -> c_28(splitqs#3#(#greater(@x,@pivot),@ls,@rs,@x)
,#greater#(@x,@pivot)):68
-->_2 splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot)):17
19:W:#and#(#false(),#false()) -> c_31()
20:W:#and#(#false(),#true()) -> c_32()
21:W:#and#(#true(),#false()) -> c_33()
22:W:#and#(#true(),#true()) -> c_34()
23:W:#ckgt#(#EQ()) -> c_35()
24:W:#ckgt#(#GT()) -> c_36()
25:W:#ckgt#(#LT()) -> c_37()
26:W:#compare#(#0(),#0()) -> c_38()
27:W:#compare#(#0(),#neg(@y)) -> c_39()
28:W:#compare#(#0(),#pos(@y)) -> c_40()
29:W:#compare#(#0(),#s(@y)) -> c_41()
30:W:#compare#(#neg(@x),#0()) -> c_42()
31:W:#compare#(#neg(@x),#neg(@y)) -> c_43(#compare#(@y,@x))
-->_1 #compare#(#s(@x),#s(@y)) -> c_49(#compare#(@x,@y)):37
-->_1 #compare#(#pos(@x),#pos(@y)) -> c_47(#compare#(@x,@y)):35
-->_1 #compare#(#s(@x),#0()) -> c_48():36
-->_1 #compare#(#pos(@x),#neg(@y)) -> c_46():34
-->_1 #compare#(#pos(@x),#0()) -> c_45():33
-->_1 #compare#(#neg(@x),#pos(@y)) -> c_44():32
-->_1 #compare#(#neg(@x),#neg(@y)) -> c_43(#compare#(@y,@x)):31
-->_1 #compare#(#neg(@x),#0()) -> c_42():30
-->_1 #compare#(#0(),#s(@y)) -> c_41():29
-->_1 #compare#(#0(),#pos(@y)) -> c_40():28
-->_1 #compare#(#0(),#neg(@y)) -> c_39():27
-->_1 #compare#(#0(),#0()) -> c_38():26
32:W:#compare#(#neg(@x),#pos(@y)) -> c_44()
33:W:#compare#(#pos(@x),#0()) -> c_45()
34:W:#compare#(#pos(@x),#neg(@y)) -> c_46()
35:W:#compare#(#pos(@x),#pos(@y)) -> c_47(#compare#(@x,@y))
-->_1 #compare#(#s(@x),#s(@y)) -> c_49(#compare#(@x,@y)):37
-->_1 #compare#(#s(@x),#0()) -> c_48():36
-->_1 #compare#(#pos(@x),#pos(@y)) -> c_47(#compare#(@x,@y)):35
-->_1 #compare#(#pos(@x),#neg(@y)) -> c_46():34
-->_1 #compare#(#pos(@x),#0()) -> c_45():33
-->_1 #compare#(#neg(@x),#pos(@y)) -> c_44():32
-->_1 #compare#(#neg(@x),#neg(@y)) -> c_43(#compare#(@y,@x)):31
-->_1 #compare#(#neg(@x),#0()) -> c_42():30
-->_1 #compare#(#0(),#s(@y)) -> c_41():29
-->_1 #compare#(#0(),#pos(@y)) -> c_40():28
-->_1 #compare#(#0(),#neg(@y)) -> c_39():27
-->_1 #compare#(#0(),#0()) -> c_38():26
36:W:#compare#(#s(@x),#0()) -> c_48()
37:W:#compare#(#s(@x),#s(@y)) -> c_49(#compare#(@x,@y))
-->_1 #compare#(#s(@x),#s(@y)) -> c_49(#compare#(@x,@y)):37
-->_1 #compare#(#s(@x),#0()) -> c_48():36
-->_1 #compare#(#pos(@x),#pos(@y)) -> c_47(#compare#(@x,@y)):35
-->_1 #compare#(#pos(@x),#neg(@y)) -> c_46():34
-->_1 #compare#(#pos(@x),#0()) -> c_45():33
-->_1 #compare#(#neg(@x),#pos(@y)) -> c_44():32
-->_1 #compare#(#neg(@x),#neg(@y)) -> c_43(#compare#(@y,@x)):31
-->_1 #compare#(#neg(@x),#0()) -> c_42():30
-->_1 #compare#(#0(),#s(@y)) -> c_41():29
-->_1 #compare#(#0(),#pos(@y)) -> c_40():28
-->_1 #compare#(#0(),#neg(@y)) -> c_39():27
-->_1 #compare#(#0(),#0()) -> c_38():26
38:W:#eq#(#0(),#0()) -> c_50()
39:W:#eq#(#0(),#neg(@y)) -> c_51()
40:W:#eq#(#0(),#pos(@y)) -> c_52()
41:W:#eq#(#0(),#s(@y)) -> c_53()
42:W:#eq#(#neg(@x),#0()) -> c_54()
43:W:#eq#(#neg(@x),#neg(@y)) -> c_55(#eq#(@x,@y))
-->_1 #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_70(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2)):58
-->_1 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_62(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2)):50
-->_1 #eq#(#s(@x),#s(@y)) -> c_61(#eq#(@x,@y)):49
-->_1 #eq#(#pos(@x),#pos(@y)) -> c_59(#eq#(@x,@y)):47
-->_1 #eq#(tuple#2(@x_1,@x_2),nil()) -> c_69():57
-->_1 #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_68():56
-->_1 #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_67():55
-->_1 #eq#(nil(),nil()) -> c_66():54
-->_1 #eq#(nil(),::(@y_1,@y_2)) -> c_65():53
-->_1 #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_64():52
-->_1 #eq#(::(@x_1,@x_2),nil()) -> c_63():51
-->_1 #eq#(#s(@x),#0()) -> c_60():48
-->_1 #eq#(#pos(@x),#neg(@y)) -> c_58():46
-->_1 #eq#(#pos(@x),#0()) -> c_57():45
-->_1 #eq#(#neg(@x),#pos(@y)) -> c_56():44
-->_1 #eq#(#neg(@x),#neg(@y)) -> c_55(#eq#(@x,@y)):43
-->_1 #eq#(#neg(@x),#0()) -> c_54():42
-->_1 #eq#(#0(),#s(@y)) -> c_53():41
-->_1 #eq#(#0(),#pos(@y)) -> c_52():40
-->_1 #eq#(#0(),#neg(@y)) -> c_51():39
-->_1 #eq#(#0(),#0()) -> c_50():38
44:W:#eq#(#neg(@x),#pos(@y)) -> c_56()
45:W:#eq#(#pos(@x),#0()) -> c_57()
46:W:#eq#(#pos(@x),#neg(@y)) -> c_58()
47:W:#eq#(#pos(@x),#pos(@y)) -> c_59(#eq#(@x,@y))
-->_1 #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_70(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2)):58
-->_1 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_62(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2)):50
-->_1 #eq#(#s(@x),#s(@y)) -> c_61(#eq#(@x,@y)):49
-->_1 #eq#(tuple#2(@x_1,@x_2),nil()) -> c_69():57
-->_1 #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_68():56
-->_1 #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_67():55
-->_1 #eq#(nil(),nil()) -> c_66():54
-->_1 #eq#(nil(),::(@y_1,@y_2)) -> c_65():53
-->_1 #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_64():52
-->_1 #eq#(::(@x_1,@x_2),nil()) -> c_63():51
-->_1 #eq#(#s(@x),#0()) -> c_60():48
-->_1 #eq#(#pos(@x),#pos(@y)) -> c_59(#eq#(@x,@y)):47
-->_1 #eq#(#pos(@x),#neg(@y)) -> c_58():46
-->_1 #eq#(#pos(@x),#0()) -> c_57():45
-->_1 #eq#(#neg(@x),#pos(@y)) -> c_56():44
-->_1 #eq#(#neg(@x),#neg(@y)) -> c_55(#eq#(@x,@y)):43
-->_1 #eq#(#neg(@x),#0()) -> c_54():42
-->_1 #eq#(#0(),#s(@y)) -> c_53():41
-->_1 #eq#(#0(),#pos(@y)) -> c_52():40
-->_1 #eq#(#0(),#neg(@y)) -> c_51():39
-->_1 #eq#(#0(),#0()) -> c_50():38
48:W:#eq#(#s(@x),#0()) -> c_60()
49:W:#eq#(#s(@x),#s(@y)) -> c_61(#eq#(@x,@y))
-->_1 #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_70(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2)):58
-->_1 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_62(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2)):50
-->_1 #eq#(tuple#2(@x_1,@x_2),nil()) -> c_69():57
-->_1 #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_68():56
-->_1 #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_67():55
-->_1 #eq#(nil(),nil()) -> c_66():54
-->_1 #eq#(nil(),::(@y_1,@y_2)) -> c_65():53
-->_1 #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_64():52
-->_1 #eq#(::(@x_1,@x_2),nil()) -> c_63():51
-->_1 #eq#(#s(@x),#s(@y)) -> c_61(#eq#(@x,@y)):49
-->_1 #eq#(#s(@x),#0()) -> c_60():48
-->_1 #eq#(#pos(@x),#pos(@y)) -> c_59(#eq#(@x,@y)):47
-->_1 #eq#(#pos(@x),#neg(@y)) -> c_58():46
-->_1 #eq#(#pos(@x),#0()) -> c_57():45
-->_1 #eq#(#neg(@x),#pos(@y)) -> c_56():44
-->_1 #eq#(#neg(@x),#neg(@y)) -> c_55(#eq#(@x,@y)):43
-->_1 #eq#(#neg(@x),#0()) -> c_54():42
-->_1 #eq#(#0(),#s(@y)) -> c_53():41
-->_1 #eq#(#0(),#pos(@y)) -> c_52():40
-->_1 #eq#(#0(),#neg(@y)) -> c_51():39
-->_1 #eq#(#0(),#0()) -> c_50():38
50:W:#eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_62(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2))
-->_3 #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_70(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2)):58
-->_2 #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_70(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2)):58
-->_3 #eq#(tuple#2(@x_1,@x_2),nil()) -> c_69():57
-->_2 #eq#(tuple#2(@x_1,@x_2),nil()) -> c_69():57
-->_3 #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_68():56
-->_2 #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_68():56
-->_3 #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_67():55
-->_2 #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_67():55
-->_3 #eq#(nil(),nil()) -> c_66():54
-->_2 #eq#(nil(),nil()) -> c_66():54
-->_3 #eq#(nil(),::(@y_1,@y_2)) -> c_65():53
-->_2 #eq#(nil(),::(@y_1,@y_2)) -> c_65():53
-->_3 #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_64():52
-->_2 #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_64():52
-->_3 #eq#(::(@x_1,@x_2),nil()) -> c_63():51
-->_2 #eq#(::(@x_1,@x_2),nil()) -> c_63():51
-->_3 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_62(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2)):50
-->_2 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_62(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2)):50
-->_3 #eq#(#s(@x),#s(@y)) -> c_61(#eq#(@x,@y)):49
-->_2 #eq#(#s(@x),#s(@y)) -> c_61(#eq#(@x,@y)):49
-->_3 #eq#(#s(@x),#0()) -> c_60():48
-->_2 #eq#(#s(@x),#0()) -> c_60():48
-->_3 #eq#(#pos(@x),#pos(@y)) -> c_59(#eq#(@x,@y)):47
-->_2 #eq#(#pos(@x),#pos(@y)) -> c_59(#eq#(@x,@y)):47
-->_3 #eq#(#pos(@x),#neg(@y)) -> c_58():46
-->_2 #eq#(#pos(@x),#neg(@y)) -> c_58():46
-->_3 #eq#(#pos(@x),#0()) -> c_57():45
-->_2 #eq#(#pos(@x),#0()) -> c_57():45
-->_3 #eq#(#neg(@x),#pos(@y)) -> c_56():44
-->_2 #eq#(#neg(@x),#pos(@y)) -> c_56():44
-->_3 #eq#(#neg(@x),#neg(@y)) -> c_55(#eq#(@x,@y)):43
-->_2 #eq#(#neg(@x),#neg(@y)) -> c_55(#eq#(@x,@y)):43
-->_3 #eq#(#neg(@x),#0()) -> c_54():42
-->_2 #eq#(#neg(@x),#0()) -> c_54():42
-->_3 #eq#(#0(),#s(@y)) -> c_53():41
-->_2 #eq#(#0(),#s(@y)) -> c_53():41
-->_3 #eq#(#0(),#pos(@y)) -> c_52():40
-->_2 #eq#(#0(),#pos(@y)) -> c_52():40
-->_3 #eq#(#0(),#neg(@y)) -> c_51():39
-->_2 #eq#(#0(),#neg(@y)) -> c_51():39
-->_3 #eq#(#0(),#0()) -> c_50():38
-->_2 #eq#(#0(),#0()) -> c_50():38
-->_1 #and#(#true(),#true()) -> c_34():22
-->_1 #and#(#true(),#false()) -> c_33():21
-->_1 #and#(#false(),#true()) -> c_32():20
-->_1 #and#(#false(),#false()) -> c_31():19
51:W:#eq#(::(@x_1,@x_2),nil()) -> c_63()
52:W:#eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_64()
53:W:#eq#(nil(),::(@y_1,@y_2)) -> c_65()
54:W:#eq#(nil(),nil()) -> c_66()
55:W:#eq#(nil(),tuple#2(@y_1,@y_2)) -> c_67()
56:W:#eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_68()
57:W:#eq#(tuple#2(@x_1,@x_2),nil()) -> c_69()
58:W:#eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_70(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2))
-->_3 #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_70(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2)):58
-->_2 #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_70(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2)):58
-->_3 #eq#(tuple#2(@x_1,@x_2),nil()) -> c_69():57
-->_2 #eq#(tuple#2(@x_1,@x_2),nil()) -> c_69():57
-->_3 #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_68():56
-->_2 #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_68():56
-->_3 #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_67():55
-->_2 #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_67():55
-->_3 #eq#(nil(),nil()) -> c_66():54
-->_2 #eq#(nil(),nil()) -> c_66():54
-->_3 #eq#(nil(),::(@y_1,@y_2)) -> c_65():53
-->_2 #eq#(nil(),::(@y_1,@y_2)) -> c_65():53
-->_3 #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_64():52
-->_2 #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_64():52
-->_3 #eq#(::(@x_1,@x_2),nil()) -> c_63():51
-->_2 #eq#(::(@x_1,@x_2),nil()) -> c_63():51
-->_3 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_62(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2)):50
-->_2 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_62(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2)):50
-->_3 #eq#(#s(@x),#s(@y)) -> c_61(#eq#(@x,@y)):49
-->_2 #eq#(#s(@x),#s(@y)) -> c_61(#eq#(@x,@y)):49
-->_3 #eq#(#s(@x),#0()) -> c_60():48
-->_2 #eq#(#s(@x),#0()) -> c_60():48
-->_3 #eq#(#pos(@x),#pos(@y)) -> c_59(#eq#(@x,@y)):47
-->_2 #eq#(#pos(@x),#pos(@y)) -> c_59(#eq#(@x,@y)):47
-->_3 #eq#(#pos(@x),#neg(@y)) -> c_58():46
-->_2 #eq#(#pos(@x),#neg(@y)) -> c_58():46
-->_3 #eq#(#pos(@x),#0()) -> c_57():45
-->_2 #eq#(#pos(@x),#0()) -> c_57():45
-->_3 #eq#(#neg(@x),#pos(@y)) -> c_56():44
-->_2 #eq#(#neg(@x),#pos(@y)) -> c_56():44
-->_3 #eq#(#neg(@x),#neg(@y)) -> c_55(#eq#(@x,@y)):43
-->_2 #eq#(#neg(@x),#neg(@y)) -> c_55(#eq#(@x,@y)):43
-->_3 #eq#(#neg(@x),#0()) -> c_54():42
-->_2 #eq#(#neg(@x),#0()) -> c_54():42
-->_3 #eq#(#0(),#s(@y)) -> c_53():41
-->_2 #eq#(#0(),#s(@y)) -> c_53():41
-->_3 #eq#(#0(),#pos(@y)) -> c_52():40
-->_2 #eq#(#0(),#pos(@y)) -> c_52():40
-->_3 #eq#(#0(),#neg(@y)) -> c_51():39
-->_2 #eq#(#0(),#neg(@y)) -> c_51():39
-->_3 #eq#(#0(),#0()) -> c_50():38
-->_2 #eq#(#0(),#0()) -> c_50():38
-->_1 #and#(#true(),#true()) -> c_34():22
-->_1 #and#(#true(),#false()) -> c_33():21
-->_1 #and#(#false(),#true()) -> c_32():20
-->_1 #and#(#false(),#false()) -> c_31():19
59:W:#equal#(@x,@y) -> c_1(#eq#(@x,@y))
-->_1 #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_70(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2)):58
-->_1 #eq#(tuple#2(@x_1,@x_2),nil()) -> c_69():57
-->_1 #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_68():56
-->_1 #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_67():55
-->_1 #eq#(nil(),nil()) -> c_66():54
-->_1 #eq#(nil(),::(@y_1,@y_2)) -> c_65():53
-->_1 #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_64():52
-->_1 #eq#(::(@x_1,@x_2),nil()) -> c_63():51
-->_1 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_62(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2)):50
-->_1 #eq#(#s(@x),#s(@y)) -> c_61(#eq#(@x,@y)):49
-->_1 #eq#(#s(@x),#0()) -> c_60():48
-->_1 #eq#(#pos(@x),#pos(@y)) -> c_59(#eq#(@x,@y)):47
-->_1 #eq#(#pos(@x),#neg(@y)) -> c_58():46
-->_1 #eq#(#pos(@x),#0()) -> c_57():45
-->_1 #eq#(#neg(@x),#pos(@y)) -> c_56():44
-->_1 #eq#(#neg(@x),#neg(@y)) -> c_55(#eq#(@x,@y)):43
-->_1 #eq#(#neg(@x),#0()) -> c_54():42
-->_1 #eq#(#0(),#s(@y)) -> c_53():41
-->_1 #eq#(#0(),#pos(@y)) -> c_52():40
-->_1 #eq#(#0(),#neg(@y)) -> c_51():39
-->_1 #eq#(#0(),#0()) -> c_50():38
60:W:#greater#(@x,@y) -> c_2(#ckgt#(#compare(@x,@y)),#compare#(@x,@y))
-->_2 #compare#(#s(@x),#s(@y)) -> c_49(#compare#(@x,@y)):37
-->_2 #compare#(#s(@x),#0()) -> c_48():36
-->_2 #compare#(#pos(@x),#pos(@y)) -> c_47(#compare#(@x,@y)):35
-->_2 #compare#(#pos(@x),#neg(@y)) -> c_46():34
-->_2 #compare#(#pos(@x),#0()) -> c_45():33
-->_2 #compare#(#neg(@x),#pos(@y)) -> c_44():32
-->_2 #compare#(#neg(@x),#neg(@y)) -> c_43(#compare#(@y,@x)):31
-->_2 #compare#(#neg(@x),#0()) -> c_42():30
-->_2 #compare#(#0(),#s(@y)) -> c_41():29
-->_2 #compare#(#0(),#pos(@y)) -> c_40():28
-->_2 #compare#(#0(),#neg(@y)) -> c_39():27
-->_2 #compare#(#0(),#0()) -> c_38():26
-->_1 #ckgt#(#LT()) -> c_37():25
-->_1 #ckgt#(#GT()) -> c_36():24
-->_1 #ckgt#(#EQ()) -> c_35():23
61:W:append#1#(nil(),@ys) -> c_5()
62:W:insert#2#(nil(),@keyX,@valX,@x) -> c_9()
63:W:insert#4#(#true(),@key1,@ls,@valX,@vals1,@x) -> c_12()
64:W:quicksort#1#(nil()) -> c_15()
65:W:sortAll#1#(nil()) -> c_19()
66:W:split#1#(nil()) -> c_23()
67:W:splitqs#1#(nil(),@pivot) -> c_27()
68:W:splitqs#2#(tuple#2(@ls,@rs),@pivot,@x) -> c_28(splitqs#3#(#greater(@x,@pivot),@ls,@rs,@x)
,#greater#(@x,@pivot))
-->_1 splitqs#3#(#true(),@ls,@rs,@x) -> c_30():70
-->_1 splitqs#3#(#false(),@ls,@rs,@x) -> c_29():69
-->_2 #greater#(@x,@y) -> c_2(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)):60
69:W:splitqs#3#(#false(),@ls,@rs,@x) -> c_29()
70:W:splitqs#3#(#true(),@ls,@rs,@x) -> c_30()
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
66: split#1#(nil()) -> c_23()
65: sortAll#1#(nil()) -> c_19()
64: quicksort#1#(nil()) -> c_15()
67: splitqs#1#(nil(),@pivot) -> c_27()
68: splitqs#2#(tuple#2(@ls,@rs),@pivot,@x) -> c_28(splitqs#3#(#greater(@x,@pivot),@ls,@rs,@x)
,#greater#(@x,@pivot))
60: #greater#(@x,@y) -> c_2(#ckgt#(#compare(@x,@y)),#compare#(@x,@y))
23: #ckgt#(#EQ()) -> c_35()
24: #ckgt#(#GT()) -> c_36()
25: #ckgt#(#LT()) -> c_37()
37: #compare#(#s(@x),#s(@y)) -> c_49(#compare#(@x,@y))
35: #compare#(#pos(@x),#pos(@y)) -> c_47(#compare#(@x,@y))
31: #compare#(#neg(@x),#neg(@y)) -> c_43(#compare#(@y,@x))
26: #compare#(#0(),#0()) -> c_38()
27: #compare#(#0(),#neg(@y)) -> c_39()
28: #compare#(#0(),#pos(@y)) -> c_40()
29: #compare#(#0(),#s(@y)) -> c_41()
30: #compare#(#neg(@x),#0()) -> c_42()
32: #compare#(#neg(@x),#pos(@y)) -> c_44()
33: #compare#(#pos(@x),#0()) -> c_45()
34: #compare#(#pos(@x),#neg(@y)) -> c_46()
36: #compare#(#s(@x),#0()) -> c_48()
69: splitqs#3#(#false(),@ls,@rs,@x) -> c_29()
70: splitqs#3#(#true(),@ls,@rs,@x) -> c_30()
62: insert#2#(nil(),@keyX,@valX,@x) -> c_9()
63: insert#4#(#true(),@key1,@ls,@valX,@vals1,@x) -> c_12()
59: #equal#(@x,@y) -> c_1(#eq#(@x,@y))
58: #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_70(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2))
50: #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_62(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
,#eq#(@x_1,@y_1)
,#eq#(@x_2,@y_2))
49: #eq#(#s(@x),#s(@y)) -> c_61(#eq#(@x,@y))
47: #eq#(#pos(@x),#pos(@y)) -> c_59(#eq#(@x,@y))
43: #eq#(#neg(@x),#neg(@y)) -> c_55(#eq#(@x,@y))
19: #and#(#false(),#false()) -> c_31()
20: #and#(#false(),#true()) -> c_32()
21: #and#(#true(),#false()) -> c_33()
22: #and#(#true(),#true()) -> c_34()
38: #eq#(#0(),#0()) -> c_50()
39: #eq#(#0(),#neg(@y)) -> c_51()
40: #eq#(#0(),#pos(@y)) -> c_52()
41: #eq#(#0(),#s(@y)) -> c_53()
42: #eq#(#neg(@x),#0()) -> c_54()
44: #eq#(#neg(@x),#pos(@y)) -> c_56()
45: #eq#(#pos(@x),#0()) -> c_57()
46: #eq#(#pos(@x),#neg(@y)) -> c_58()
48: #eq#(#s(@x),#0()) -> c_60()
51: #eq#(::(@x_1,@x_2),nil()) -> c_63()
52: #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_64()
53: #eq#(nil(),::(@y_1,@y_2)) -> c_65()
54: #eq#(nil(),nil()) -> c_66()
55: #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_67()
56: #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_68()
57: #eq#(tuple#2(@x_1,@x_2),nil()) -> c_69()
61: append#1#(nil(),@ys) -> c_5()
* Step 7: SimplifyRHS WORST_CASE(?,O(n^5))
+ Considered Problem:
- Strict DPs:
append#(@l,@ys) -> c_3(append#1#(@l,@ys))
append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys))
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
,#equal#(@key1,@keyX))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#2#(splitqs(@pivot,@xs),@pivot,@x),splitqs#(@pivot,@xs))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/2,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/3,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/2
,c_25/1,c_26/2,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
SimplifyRHS
+ Details:
Consider the dependency graph
1:S:append#(@l,@ys) -> c_3(append#1#(@l,@ys))
-->_1 append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys)):2
2:S:append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys))
-->_1 append#(@l,@ys) -> c_3(append#1#(@l,@ys)):1
3:S:insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
-->_1 insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x)):4
4:S:insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
-->_1 insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x)):5
5:S:insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
-->_1 insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
,#equal#(@key1,@keyX)):6
6:S:insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
,#equal#(@key1,@keyX))
-->_1 insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls)):7
7:S:insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
-->_1 insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x)):3
8:S:quicksort#(@l) -> c_13(quicksort#1#(@l))
-->_1 quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs)):9
9:S:quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
-->_2 splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot)):17
-->_1 quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys)):10
10:S:quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
-->_3 quicksort#(@l) -> c_13(quicksort#1#(@l)):8
-->_2 quicksort#(@l) -> c_13(quicksort#1#(@l)):8
-->_1 append#(@l,@ys) -> c_3(append#1#(@l,@ys)):1
11:S:sortAll#(@l) -> c_17(sortAll#1#(@l))
-->_1 sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs)):12
12:S:sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
-->_1 sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs)):13
13:S:sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
-->_2 sortAll#(@l) -> c_17(sortAll#1#(@l)):11
-->_1 quicksort#(@l) -> c_13(quicksort#1#(@l)):8
14:S:split#(@l) -> c_21(split#1#(@l))
-->_1 split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs)):15
15:S:split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
-->_2 split#(@l) -> c_21(split#1#(@l)):14
-->_1 insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x)):3
16:S:splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
-->_2 split#(@l) -> c_21(split#1#(@l)):14
-->_1 sortAll#(@l) -> c_17(sortAll#1#(@l)):11
17:S:splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
-->_1 splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#2#(splitqs(@pivot,@xs),@pivot,@x)
,splitqs#(@pivot,@xs)):18
18:S:splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#2#(splitqs(@pivot,@xs),@pivot,@x),splitqs#(@pivot,@xs))
-->_2 splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot)):17
Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified:
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
* Step 8: Decompose WORST_CASE(?,O(n^5))
+ Considered Problem:
- Strict DPs:
append#(@l,@ys) -> c_3(append#1#(@l,@ys))
append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys))
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/3,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/2
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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:
append#(@l,@ys) -> c_3(append#1#(@l,@ys))
append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys))
- Weak DPs:
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2
,#eq#/2,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5
,insert#4#/6,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1
,split#1#/1,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0
,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1
,c_9/0,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/3,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0
,c_24/2,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0
,c_39/0,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0
,c_54/0,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0
,c_69/0,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
Problem (S)
- Strict DPs:
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
- Weak DPs:
append#(@l,@ys) -> c_3(append#1#(@l,@ys))
append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2
,#eq#/2,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5
,insert#4#/6,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1
,split#1#/1,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0
,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1
,c_9/0,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/3,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0
,c_24/2,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0
,c_39/0,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0
,c_54/0,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0
,c_69/0,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
** Step 8.a:1: RemoveWeakSuffixes WORST_CASE(?,O(n^5))
+ Considered Problem:
- Strict DPs:
append#(@l,@ys) -> c_3(append#1#(@l,@ys))
append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys))
- Weak DPs:
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/3,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/2
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:S:append#(@l,@ys) -> c_3(append#1#(@l,@ys))
-->_1 append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys)):2
2:S:append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys))
-->_1 append#(@l,@ys) -> c_3(append#1#(@l,@ys)):1
3:W:insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
-->_1 insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x)):4
4:W:insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
-->_1 insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x)):5
5:W:insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
-->_1 insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)):6
6:W:insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
-->_1 insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls)):7
7:W:insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
-->_1 insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x)):3
8:W:quicksort#(@l) -> c_13(quicksort#1#(@l))
-->_1 quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs)):9
9:W:quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
-->_2 splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot)):17
-->_1 quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys)):10
10:W:quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
-->_1 append#(@l,@ys) -> c_3(append#1#(@l,@ys)):1
-->_3 quicksort#(@l) -> c_13(quicksort#1#(@l)):8
-->_2 quicksort#(@l) -> c_13(quicksort#1#(@l)):8
11:W:sortAll#(@l) -> c_17(sortAll#1#(@l))
-->_1 sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs)):12
12:W:sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
-->_1 sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs)):13
13:W:sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
-->_1 quicksort#(@l) -> c_13(quicksort#1#(@l)):8
-->_2 sortAll#(@l) -> c_17(sortAll#1#(@l)):11
14:W:split#(@l) -> c_21(split#1#(@l))
-->_1 split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs)):15
15:W:split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
-->_1 insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x)):3
-->_2 split#(@l) -> c_21(split#1#(@l)):14
16:W:splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
-->_1 sortAll#(@l) -> c_17(sortAll#1#(@l)):11
-->_2 split#(@l) -> c_21(split#1#(@l)):14
17:W:splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
-->_1 splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs)):18
18:W:splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
-->_1 splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot)):17
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
14: split#(@l) -> c_21(split#1#(@l))
15: split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
17: splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
18: splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
3: insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
7: insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
6: insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
5: insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
4: insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
** Step 8.a:2: SimplifyRHS WORST_CASE(?,O(n^5))
+ Considered Problem:
- Strict DPs:
append#(@l,@ys) -> c_3(append#1#(@l,@ys))
append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys))
- Weak DPs:
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/3,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/2
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
SimplifyRHS
+ Details:
Consider the dependency graph
1:S:append#(@l,@ys) -> c_3(append#1#(@l,@ys))
-->_1 append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys)):2
2:S:append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys))
-->_1 append#(@l,@ys) -> c_3(append#1#(@l,@ys)):1
8:W:quicksort#(@l) -> c_13(quicksort#1#(@l))
-->_1 quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs)):9
9:W:quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
-->_1 quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys)):10
10:W:quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
-->_1 append#(@l,@ys) -> c_3(append#1#(@l,@ys)):1
-->_3 quicksort#(@l) -> c_13(quicksort#1#(@l)):8
-->_2 quicksort#(@l) -> c_13(quicksort#1#(@l)):8
11:W:sortAll#(@l) -> c_17(sortAll#1#(@l))
-->_1 sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs)):12
12:W:sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
-->_1 sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs)):13
13:W:sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
-->_1 quicksort#(@l) -> c_13(quicksort#1#(@l)):8
-->_2 sortAll#(@l) -> c_17(sortAll#1#(@l)):11
16:W:splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
-->_1 sortAll#(@l) -> c_17(sortAll#1#(@l)):11
Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified:
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)))
** Step 8.a:3: DecomposeDG WORST_CASE(?,O(n^5))
+ Considered Problem:
- Strict DPs:
append#(@l,@ys) -> c_3(append#1#(@l,@ys))
append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys))
- Weak DPs:
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/1,c_15/0,c_16/3,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)))
and a lower component
append#(@l,@ys) -> c_3(append#1#(@l,@ys))
append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys))
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
Further, following extension rules are added to the lower component.
sortAll#(@l) -> sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
splitAndSort#(@l) -> sortAll#(split(@l))
*** Step 8.a:3.a:1: PredecessorEstimationCP WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
- Weak DPs:
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/1,c_15/0,c_16/3,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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: sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
Consider the set of all dependency pairs
1: sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
2: sortAll#(@l) -> c_17(sortAll#1#(@l))
3: sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
4: splitAndSort#(@l) -> c_24(sortAll#(split(@l)))
Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1))
SPACE(?,?)on application of the dependency pairs
{1}
These cover all (indirect) predecessors of dependency pairs
{1,2,3,4}
their number of applications is equally bounded.
The dependency pairs are shifted into the weak component.
**** Step 8.a:3.a:1.a:1: NaturalMI WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
- Weak DPs:
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/1,c_15/0,c_16/3,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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_17) = {1},
uargs(c_18) = {1},
uargs(c_20) = {2},
uargs(c_24) = {1}
Following symbols are considered usable:
{#and,#eq,#equal,insert,insert#1,insert#2,insert#3,insert#4,split,split#1,#and#,#ckgt#,#compare#,#eq#
,#equal#,#greater#,append#,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#
,quicksort#2#,sortAll#,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#}
TcT has computed the following interpretation:
p(#0) = [0]
p(#EQ) = [0]
p(#GT) = [0]
p(#LT) = [0]
p(#and) = [1] x2 + [0]
p(#ckgt) = [0]
p(#compare) = [5]
p(#eq) = [1]
p(#equal) = [1]
p(#false) = [1]
p(#greater) = [0]
p(#neg) = [1] x1 + [0]
p(#pos) = [1] x1 + [0]
p(#s) = [1]
p(#true) = [1]
p(::) = [1] x1 + [1] x2 + [3]
p(append) = [0]
p(append#1) = [0]
p(insert) = [1] x2 + [4]
p(insert#1) = [1] x2 + [4]
p(insert#2) = [1] x1 + [4]
p(insert#3) = [1] x1 + [1] x3 + [7]
p(insert#4) = [2] x1 + [1] x3 + [6]
p(nil) = [4]
p(quicksort) = [6]
p(quicksort#1) = [1] x1 + [5]
p(quicksort#2) = [0]
p(sortAll) = [0]
p(sortAll#1) = [4]
p(sortAll#2) = [0]
p(split) = [3] x1 + [0]
p(split#1) = [3] x1 + [0]
p(splitAndSort) = [0]
p(splitqs) = [4]
p(splitqs#1) = [7]
p(splitqs#2) = [3] x1 + [0]
p(splitqs#3) = [0]
p(tuple#2) = [1]
p(#and#) = [0]
p(#ckgt#) = [0]
p(#compare#) = [0]
p(#eq#) = [0]
p(#equal#) = [0]
p(#greater#) = [0]
p(append#) = [0]
p(append#1#) = [0]
p(insert#) = [0]
p(insert#1#) = [0]
p(insert#2#) = [0]
p(insert#3#) = [0]
p(insert#4#) = [0]
p(quicksort#) = [0]
p(quicksort#1#) = [0]
p(quicksort#2#) = [0]
p(sortAll#) = [2] x1 + [0]
p(sortAll#1#) = [2] x1 + [0]
p(sortAll#2#) = [2] x1 + [2] x2 + [0]
p(split#) = [0]
p(split#1#) = [0]
p(splitAndSort#) = [6] x1 + [0]
p(splitqs#) = [0]
p(splitqs#1#) = [0]
p(splitqs#2#) = [0]
p(splitqs#3#) = [0]
p(c_1) = [0]
p(c_2) = [0]
p(c_3) = [0]
p(c_4) = [0]
p(c_5) = [0]
p(c_6) = [0]
p(c_7) = [0]
p(c_8) = [0]
p(c_9) = [0]
p(c_10) = [0]
p(c_11) = [0]
p(c_12) = [0]
p(c_13) = [0]
p(c_14) = [0]
p(c_15) = [0]
p(c_16) = [0]
p(c_17) = [1] x1 + [0]
p(c_18) = [1] x1 + [6]
p(c_19) = [0]
p(c_20) = [1] x2 + [0]
p(c_21) = [0]
p(c_22) = [1] x2 + [0]
p(c_23) = [0]
p(c_24) = [1] x1 + [0]
p(c_25) = [2] x1 + [0]
p(c_26) = [4] x1 + [0]
p(c_27) = [0]
p(c_28) = [0]
p(c_29) = [0]
p(c_30) = [0]
p(c_31) = [0]
p(c_32) = [0]
p(c_33) = [0]
p(c_34) = [0]
p(c_35) = [0]
p(c_36) = [0]
p(c_37) = [0]
p(c_38) = [0]
p(c_39) = [0]
p(c_40) = [0]
p(c_41) = [0]
p(c_42) = [0]
p(c_43) = [0]
p(c_44) = [0]
p(c_45) = [0]
p(c_46) = [0]
p(c_47) = [0]
p(c_48) = [0]
p(c_49) = [2] x1 + [0]
p(c_50) = [0]
p(c_51) = [0]
p(c_52) = [0]
p(c_53) = [0]
p(c_54) = [0]
p(c_55) = [0]
p(c_56) = [0]
p(c_57) = [0]
p(c_58) = [0]
p(c_59) = [0]
p(c_60) = [0]
p(c_61) = [0]
p(c_62) = [1] x1 + [1] x2 + [0]
p(c_63) = [0]
p(c_64) = [0]
p(c_65) = [0]
p(c_66) = [0]
p(c_67) = [0]
p(c_68) = [0]
p(c_69) = [0]
p(c_70) = [1] x1 + [4] x2 + [4] x3 + [0]
Following rules are strictly oriented:
sortAll#2#(tuple#2(@vals,@key),@xs) = [2] @xs + [2]
> [2] @xs + [0]
= c_20(quicksort#(@vals),sortAll#(@xs))
Following rules are (at-least) weakly oriented:
sortAll#(@l) = [2] @l + [0]
>= [2] @l + [0]
= c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) = [2] @x + [2] @xs + [6]
>= [2] @x + [2] @xs + [6]
= c_18(sortAll#2#(@x,@xs))
splitAndSort#(@l) = [6] @l + [0]
>= [6] @l + [0]
= c_24(sortAll#(split(@l)))
#and(#false(),#false()) = [1]
>= [1]
= #false()
#and(#false(),#true()) = [1]
>= [1]
= #false()
#and(#true(),#false()) = [1]
>= [1]
= #false()
#and(#true(),#true()) = [1]
>= [1]
= #true()
#eq(#0(),#0()) = [1]
>= [1]
= #true()
#eq(#0(),#neg(@y)) = [1]
>= [1]
= #false()
#eq(#0(),#pos(@y)) = [1]
>= [1]
= #false()
#eq(#0(),#s(@y)) = [1]
>= [1]
= #false()
#eq(#neg(@x),#0()) = [1]
>= [1]
= #false()
#eq(#neg(@x),#neg(@y)) = [1]
>= [1]
= #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) = [1]
>= [1]
= #false()
#eq(#pos(@x),#0()) = [1]
>= [1]
= #false()
#eq(#pos(@x),#neg(@y)) = [1]
>= [1]
= #false()
#eq(#pos(@x),#pos(@y)) = [1]
>= [1]
= #eq(@x,@y)
#eq(#s(@x),#0()) = [1]
>= [1]
= #false()
#eq(#s(@x),#s(@y)) = [1]
>= [1]
= #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) = [1]
>= [1]
= #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) = [1]
>= [1]
= #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) = [1]
>= [1]
= #false()
#eq(nil(),::(@y_1,@y_2)) = [1]
>= [1]
= #false()
#eq(nil(),nil()) = [1]
>= [1]
= #true()
#eq(nil(),tuple#2(@y_1,@y_2)) = [1]
>= [1]
= #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) = [1]
>= [1]
= #false()
#eq(tuple#2(@x_1,@x_2),nil()) = [1]
>= [1]
= #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) = [1]
>= [1]
= #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) = [1]
>= [1]
= #eq(@x,@y)
insert(@x,@l) = [1] @l + [4]
>= [1] @l + [4]
= insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) = [1] @l + [4]
>= [1] @l + [4]
= insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) = [1] @l1 + [1] @ls + [7]
>= [1] @l1 + [1] @ls + [7]
= insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) = [8]
>= [8]
= ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) = [1] @ls + [8]
>= [1] @ls + [8]
= insert#4(#equal(@key1,@keyX),@key1,@ls,@valX,@vals1,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) = [1] @ls + [8]
>= [1] @ls + [8]
= ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) = [1] @ls + [8]
>= [1] @ls + [4]
= ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) = [3] @l + [0]
>= [3] @l + [0]
= split#1(@l)
split#1(::(@x,@xs)) = [3] @x + [3] @xs + [9]
>= [3] @xs + [4]
= insert(@x,split(@xs))
split#1(nil()) = [12]
>= [4]
= nil()
**** Step 8.a:3.a:1.a:2: Assumption WORST_CASE(?,O(1))
+ Considered Problem:
- Weak DPs:
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/1,c_15/0,c_16/3,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
+ Details:
()
**** Step 8.a:3.a:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1))
+ Considered Problem:
- Weak DPs:
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/1,c_15/0,c_16/3,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:W:sortAll#(@l) -> c_17(sortAll#1#(@l))
-->_1 sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs)):2
2:W:sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
-->_1 sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs)):3
3:W:sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
-->_2 sortAll#(@l) -> c_17(sortAll#1#(@l)):1
4:W:splitAndSort#(@l) -> c_24(sortAll#(split(@l)))
-->_1 sortAll#(@l) -> c_17(sortAll#1#(@l)):1
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
4: splitAndSort#(@l) -> c_24(sortAll#(split(@l)))
1: sortAll#(@l) -> c_17(sortAll#1#(@l))
3: sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
2: sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
**** Step 8.a:3.a:1.b:2: EmptyProcessor WORST_CASE(?,O(1))
+ Considered Problem:
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/1,c_15/0,c_16/3,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
EmptyProcessor
+ Details:
The problem is already closed. The intended complexity is O(1).
*** Step 8.a:3.b:1: DecomposeDG WORST_CASE(?,O(n^4))
+ Considered Problem:
- Strict DPs:
append#(@l,@ys) -> c_3(append#1#(@l,@ys))
append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys))
- Weak DPs:
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
sortAll#(@l) -> sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
splitAndSort#(@l) -> sortAll#(split(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/1,c_15/0,c_16/3,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
sortAll#(@l) -> sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
splitAndSort#(@l) -> sortAll#(split(@l))
and a lower component
append#(@l,@ys) -> c_3(append#1#(@l,@ys))
append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys))
Further, following extension rules are added to the lower component.
quicksort#(@l) -> quicksort#1#(@l)
quicksort#1#(::(@z,@zs)) -> quicksort#2#(splitqs(@z,@zs),@z)
quicksort#2#(tuple#2(@xs,@ys),@z) -> append#(quicksort(@xs),::(@z,quicksort(@ys)))
quicksort#2#(tuple#2(@xs,@ys),@z) -> quicksort#(@xs)
quicksort#2#(tuple#2(@xs,@ys),@z) -> quicksort#(@ys)
sortAll#(@l) -> sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
splitAndSort#(@l) -> sortAll#(split(@l))
**** Step 8.a:3.b:1.a:1: PredecessorEstimationCP WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
- Weak DPs:
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z))
sortAll#(@l) -> sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
splitAndSort#(@l) -> sortAll#(split(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/1,c_15/0,c_16/3,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}}
+ Details:
We first use the processor NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
1: quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
Consider the set of all dependency pairs
1: quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
2: quicksort#(@l) -> c_13(quicksort#1#(@l))
3: quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z))
4: sortAll#(@l) -> sortAll#1#(@l)
5: sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
6: sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
7: sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
8: splitAndSort#(@l) -> sortAll#(split(@l))
Processor NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^2))
SPACE(?,?)on application of the dependency pairs
{1}
These cover all (indirect) predecessors of dependency pairs
{1,8}
their number of applications is equally bounded.
The dependency pairs are shifted into the weak component.
***** Step 8.a:3.b:1.a:1.a:1: NaturalMI WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
- Weak DPs:
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z))
sortAll#(@l) -> sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
splitAndSort#(@l) -> sortAll#(split(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/1,c_15/0,c_16/3,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
NaturalMI {miDimension = 3, miDegree = 2, 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 2 non-zero interpretation-entries in the diagonal of the component-wise maxima):
The following argument positions are considered usable:
uargs(c_13) = {1},
uargs(c_14) = {1},
uargs(c_16) = {1,2,3}
Following symbols are considered usable:
{#and,#eq,#equal,insert,insert#1,insert#2,insert#3,insert#4,split,split#1,splitqs,splitqs#1,splitqs#2
,splitqs#3,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#,append#1#,insert#,insert#1#,insert#2#
,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#,sortAll#1#,sortAll#2#,split#,split#1#
,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#,splitqs#3#}
TcT has computed the following interpretation:
p(#0) = [0]
[0]
[0]
p(#EQ) = [0]
[0]
[0]
p(#GT) = [0]
[0]
[0]
p(#LT) = [0]
[0]
[0]
p(#and) = [0]
[0]
[1]
p(#ckgt) = [1]
[1]
[1]
p(#compare) = [0 1 0] [0]
[0 0 0] x2 + [0]
[0 0 0] [0]
p(#eq) = [0]
[0]
[1]
p(#equal) = [0 0 0] [0 0 0] [0]
[0 0 1] x1 + [1 0 1] x2 + [0]
[1 0 0] [0 0 1] [1]
p(#false) = [0]
[0]
[0]
p(#greater) = [0]
[0]
[0]
p(#neg) = [0 0 0] [0]
[0 0 1] x1 + [0]
[0 0 0] [0]
p(#pos) = [0 0 0] [0]
[0 0 1] x1 + [0]
[0 0 0] [0]
p(#s) = [0]
[0]
[0]
p(#true) = [0]
[0]
[0]
p(::) = [0 1 0] [1 0 0] [0]
[0 0 0] x1 + [0 1 1] x2 + [0]
[0 0 0] [0 0 0] [1]
p(append) = [0 1 0] [0 1 0] [0]
[0 0 0] x1 + [1 0 1] x2 + [1]
[0 0 0] [0 0 0] [0]
p(append#1) = [1]
[0]
[0]
p(insert) = [1 0 0] [1]
[0 1 1] x2 + [0]
[0 0 0] [1]
p(insert#1) = [1 0 0] [1]
[0 1 1] x2 + [0]
[0 0 0] [1]
p(insert#2) = [1 0 0] [1]
[0 1 1] x1 + [0]
[0 0 0] [1]
p(insert#3) = [0 1 0] [1 0 0] [1]
[0 0 0] x1 + [0 1 1] x3 + [1]
[0 0 0] [0 0 0] [1]
p(insert#4) = [1 0 0] [0 1 1] [1]
[0 1 1] x3 + [0 0 0] x5 + [1]
[0 0 0] [0 0 0] [1]
p(nil) = [0]
[0]
[0]
p(quicksort) = [0 0 1] [1]
[0 0 0] x1 + [1]
[0 0 0] [0]
p(quicksort#1) = [0 0 0] [0]
[0 0 1] x1 + [0]
[0 1 0] [0]
p(quicksort#2) = [0]
[1]
[0]
p(sortAll) = [0]
[0]
[0]
p(sortAll#1) = [0]
[0]
[0]
p(sortAll#2) = [0]
[0]
[0]
p(split) = [0 1 1] [1]
[0 1 0] x1 + [0]
[0 0 1] [0]
p(split#1) = [0 1 1] [1]
[0 1 0] x1 + [0]
[0 0 1] [0]
p(splitAndSort) = [0]
[0]
[0]
p(splitqs) = [0 0 0] [0 1 1] [0]
[1 1 1] x1 + [0 1 1] x2 + [1]
[0 0 0] [1 0 0] [0]
p(splitqs#1) = [0 1 1] [0 0 0] [0]
[0 1 1] x1 + [0 0 1] x2 + [1]
[0 0 0] [0 0 0] [0]
p(splitqs#2) = [1 0 0] [0 0 0] [1]
[1 0 0] x1 + [0 0 1] x2 + [1]
[0 0 0] [0 0 0] [0]
p(splitqs#3) = [0 1 1] [0 1 1] [1]
[0 1 1] x2 + [0 1 0] x3 + [1]
[0 0 0] [0 0 0] [0]
p(tuple#2) = [0 1 1] [0 1 1] [0]
[0 1 1] x1 + [0 0 0] x2 + [0]
[0 0 0] [0 0 0] [0]
p(#and#) = [0]
[0]
[0]
p(#ckgt#) = [0]
[0]
[0]
p(#compare#) = [0]
[0]
[0]
p(#eq#) = [0]
[0]
[0]
p(#equal#) = [0]
[0]
[0]
p(#greater#) = [0]
[0]
[0]
p(append#) = [0]
[0]
[1]
p(append#1#) = [0]
[0]
[0]
p(insert#) = [0]
[0]
[0]
p(insert#1#) = [0]
[0]
[0]
p(insert#2#) = [0]
[0]
[0]
p(insert#3#) = [0]
[0]
[0]
p(insert#4#) = [0]
[0]
[0]
p(quicksort#) = [0 1 1] [0]
[0 0 0] x1 + [0]
[0 0 0] [1]
p(quicksort#1#) = [0 1 1] [0]
[0 0 0] x1 + [1]
[1 0 1] [0]
p(quicksort#2#) = [1 0 0] [0 0 0] [1]
[0 0 0] x1 + [0 1 0] x2 + [0]
[0 0 0] [0 0 0] [0]
p(sortAll#) = [1 0 0] [0]
[0 0 0] x1 + [0]
[0 0 0] [1]
p(sortAll#1#) = [1 0 0] [0]
[0 0 0] x1 + [0]
[0 0 0] [1]
p(sortAll#2#) = [0 1 0] [1 0 0] [0]
[0 0 0] x1 + [0 0 0] x2 + [0]
[0 0 0] [0 0 0] [1]
p(split#) = [0]
[0]
[0]
p(split#1#) = [0]
[0]
[0]
p(splitAndSort#) = [0 1 1] [1]
[0 0 1] x1 + [0]
[1 0 0] [1]
p(splitqs#) = [0]
[0]
[0]
p(splitqs#1#) = [0]
[0]
[0]
p(splitqs#2#) = [0]
[0]
[0]
p(splitqs#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) = [0]
[0]
[0]
p(c_10) = [0]
[0]
[0]
p(c_11) = [0]
[0]
[0]
p(c_12) = [0]
[0]
[0]
p(c_13) = [1 0 0] [0]
[0 0 0] x1 + [0]
[0 1 0] [0]
p(c_14) = [1 0 0] [0]
[0 0 0] x1 + [0]
[0 1 0] [0]
p(c_15) = [0]
[0]
[0]
p(c_16) = [1 0 0] [1 0 0] [1 0 0] [0]
[0 0 0] x1 + [0 0 0] x2 + [0 0 0] x3 + [0]
[0 0 0] [0 0 0] [0 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]
Following rules are strictly oriented:
quicksort#2#(tuple#2(@xs,@ys),@z) = [0 1 1] [0 1 1] [0 0 0] [1]
[0 0 0] @xs + [0 0 0] @ys + [0 1 0] @z + [0]
[0 0 0] [0 0 0] [0 0 0] [0]
> [0 1 1] [0 1 1] [0]
[0 0 0] @xs + [0 0 0] @ys + [0]
[0 0 0] [0 0 0] [0]
= c_16(append#(quicksort(@xs),::(@z,quicksort(@ys))),quicksort#(@xs),quicksort#(@ys))
Following rules are (at-least) weakly oriented:
quicksort#(@l) = [0 1 1] [0]
[0 0 0] @l + [0]
[0 0 0] [1]
>= [0 1 1] [0]
[0 0 0] @l + [0]
[0 0 0] [1]
= c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) = [0 0 0] [0 1 1] [1]
[0 0 0] @z + [0 0 0] @zs + [1]
[0 1 0] [1 0 0] [1]
>= [0 0 0] [0 1 1] [1]
[0 0 0] @z + [0 0 0] @zs + [0]
[0 1 0] [0 0 0] [0]
= c_14(quicksort#2#(splitqs(@z,@zs),@z))
sortAll#(@l) = [1 0 0] [0]
[0 0 0] @l + [0]
[0 0 0] [1]
>= [1 0 0] [0]
[0 0 0] @l + [0]
[0 0 0] [1]
= sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) = [0 1 0] [1 0 0] [0]
[0 0 0] @x + [0 0 0] @xs + [0]
[0 0 0] [0 0 0] [1]
>= [0 1 0] [1 0 0] [0]
[0 0 0] @x + [0 0 0] @xs + [0]
[0 0 0] [0 0 0] [1]
= sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) = [0 1 1] [1 0 0] [0]
[0 0 0] @vals + [0 0 0] @xs + [0]
[0 0 0] [0 0 0] [1]
>= [0 1 1] [0]
[0 0 0] @vals + [0]
[0 0 0] [1]
= quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) = [0 1 1] [1 0 0] [0]
[0 0 0] @vals + [0 0 0] @xs + [0]
[0 0 0] [0 0 0] [1]
>= [1 0 0] [0]
[0 0 0] @xs + [0]
[0 0 0] [1]
= sortAll#(@xs)
splitAndSort#(@l) = [0 1 1] [1]
[0 0 1] @l + [0]
[1 0 0] [1]
>= [0 1 1] [1]
[0 0 0] @l + [0]
[0 0 0] [1]
= sortAll#(split(@l))
#and(#false(),#false()) = [0]
[0]
[1]
>= [0]
[0]
[0]
= #false()
#and(#false(),#true()) = [0]
[0]
[1]
>= [0]
[0]
[0]
= #false()
#and(#true(),#false()) = [0]
[0]
[1]
>= [0]
[0]
[0]
= #false()
#and(#true(),#true()) = [0]
[0]
[1]
>= [0]
[0]
[0]
= #true()
#eq(#0(),#0()) = [0]
[0]
[1]
>= [0]
[0]
[0]
= #true()
#eq(#0(),#neg(@y)) = [0]
[0]
[1]
>= [0]
[0]
[0]
= #false()
#eq(#0(),#pos(@y)) = [0]
[0]
[1]
>= [0]
[0]
[0]
= #false()
#eq(#0(),#s(@y)) = [0]
[0]
[1]
>= [0]
[0]
[0]
= #false()
#eq(#neg(@x),#0()) = [0]
[0]
[1]
>= [0]
[0]
[0]
= #false()
#eq(#neg(@x),#neg(@y)) = [0]
[0]
[1]
>= [0]
[0]
[1]
= #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) = [0]
[0]
[1]
>= [0]
[0]
[0]
= #false()
#eq(#pos(@x),#0()) = [0]
[0]
[1]
>= [0]
[0]
[0]
= #false()
#eq(#pos(@x),#neg(@y)) = [0]
[0]
[1]
>= [0]
[0]
[0]
= #false()
#eq(#pos(@x),#pos(@y)) = [0]
[0]
[1]
>= [0]
[0]
[1]
= #eq(@x,@y)
#eq(#s(@x),#0()) = [0]
[0]
[1]
>= [0]
[0]
[0]
= #false()
#eq(#s(@x),#s(@y)) = [0]
[0]
[1]
>= [0]
[0]
[1]
= #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) = [0]
[0]
[1]
>= [0]
[0]
[1]
= #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) = [0]
[0]
[1]
>= [0]
[0]
[0]
= #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) = [0]
[0]
[1]
>= [0]
[0]
[0]
= #false()
#eq(nil(),::(@y_1,@y_2)) = [0]
[0]
[1]
>= [0]
[0]
[0]
= #false()
#eq(nil(),nil()) = [0]
[0]
[1]
>= [0]
[0]
[0]
= #true()
#eq(nil(),tuple#2(@y_1,@y_2)) = [0]
[0]
[1]
>= [0]
[0]
[0]
= #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) = [0]
[0]
[1]
>= [0]
[0]
[0]
= #false()
#eq(tuple#2(@x_1,@x_2),nil()) = [0]
[0]
[1]
>= [0]
[0]
[0]
= #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) = [0]
[0]
[1]
>= [0]
[0]
[1]
= #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) = [0 0 0] [0 0 0] [0]
[0 0 1] @x + [1 0 1] @y + [0]
[1 0 0] [0 0 1] [1]
>= [0]
[0]
[1]
= #eq(@x,@y)
insert(@x,@l) = [1 0 0] [1]
[0 1 1] @l + [0]
[0 0 0] [1]
>= [1 0 0] [1]
[0 1 1] @l + [0]
[0 0 0] [1]
= insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) = [1 0 0] [1]
[0 1 1] @l + [0]
[0 0 0] [1]
>= [1 0 0] [1]
[0 1 1] @l + [0]
[0 0 0] [1]
= insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) = [0 1 0] [1 0 0] [1]
[0 0 0] @l1 + [0 1 1] @ls + [1]
[0 0 0] [0 0 0] [1]
>= [0 1 0] [1 0 0] [1]
[0 0 0] @l1 + [0 1 1] @ls + [1]
[0 0 0] [0 0 0] [1]
= insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) = [1]
[0]
[1]
>= [1]
[0]
[1]
= ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) = [1 0 0] [0 1 1] [1]
[0 1 1] @ls + [0 0 0] @vals1 + [1]
[0 0 0] [0 0 0] [1]
>= [1 0 0] [0 1 1] [1]
[0 1 1] @ls + [0 0 0] @vals1 + [1]
[0 0 0] [0 0 0] [1]
= insert#4(#equal(@key1,@keyX),@key1,@ls,@valX,@vals1,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) = [1 0 0] [0 1 1] [1]
[0 1 1] @ls + [0 0 0] @vals1 + [1]
[0 0 0] [0 0 0] [1]
>= [1 0 0] [0 1 1] [1]
[0 1 1] @ls + [0 0 0] @vals1 + [1]
[0 0 0] [0 0 0] [1]
= ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) = [1 0 0] [0 1 1] [1]
[0 1 1] @ls + [0 0 0] @vals1 + [1]
[0 0 0] [0 0 0] [1]
>= [1 0 0] [0 1 1] [1]
[0 1 1] @ls + [0 0 0] @vals1 + [0]
[0 0 0] [0 0 0] [1]
= ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) = [0 1 1] [1]
[0 1 0] @l + [0]
[0 0 1] [0]
>= [0 1 1] [1]
[0 1 0] @l + [0]
[0 0 1] [0]
= split#1(@l)
split#1(::(@x,@xs)) = [0 1 1] [2]
[0 1 1] @xs + [0]
[0 0 0] [1]
>= [0 1 1] [2]
[0 1 1] @xs + [0]
[0 0 0] [1]
= insert(@x,split(@xs))
split#1(nil()) = [1]
[0]
[0]
>= [0]
[0]
[0]
= nil()
splitqs(@pivot,@l) = [0 1 1] [0 0 0] [0]
[0 1 1] @l + [1 1 1] @pivot + [1]
[1 0 0] [0 0 0] [0]
>= [0 1 1] [0 0 0] [0]
[0 1 1] @l + [0 0 1] @pivot + [1]
[0 0 0] [0 0 0] [0]
= splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) = [0 0 0] [0 1 1] [1]
[0 0 1] @pivot + [0 1 1] @xs + [2]
[0 0 0] [0 0 0] [0]
>= [0 0 0] [0 1 1] [1]
[0 0 1] @pivot + [0 1 1] @xs + [1]
[0 0 0] [0 0 0] [0]
= splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) = [0 0 0] [0]
[0 0 1] @pivot + [1]
[0 0 0] [0]
>= [0]
[0]
[0]
= tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) = [0 1 1] [0 0 0] [0 1 1] [1]
[0 1 1] @ls + [0 0 1] @pivot + [0 1 1] @rs + [1]
[0 0 0] [0 0 0] [0 0 0] [0]
>= [0 1 1] [0 1 1] [1]
[0 1 1] @ls + [0 1 0] @rs + [1]
[0 0 0] [0 0 0] [0]
= splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) = [0 1 1] [0 1 1] [1]
[0 1 1] @ls + [0 1 0] @rs + [1]
[0 0 0] [0 0 0] [0]
>= [0 1 1] [0 1 1] [1]
[0 1 1] @ls + [0 0 0] @rs + [1]
[0 0 0] [0 0 0] [0]
= tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) = [0 1 1] [0 1 1] [1]
[0 1 1] @ls + [0 1 0] @rs + [1]
[0 0 0] [0 0 0] [0]
>= [0 1 1] [0 1 1] [1]
[0 1 1] @ls + [0 0 0] @rs + [0]
[0 0 0] [0 0 0] [0]
= tuple#2(@ls,::(@x,@rs))
***** Step 8.a:3.b:1.a:1.a:2: Assumption WORST_CASE(?,O(1))
+ Considered Problem:
- Weak DPs:
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
sortAll#(@l) -> sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
splitAndSort#(@l) -> sortAll#(split(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/1,c_15/0,c_16/3,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
+ Details:
()
***** Step 8.a:3.b:1.a:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1))
+ Considered Problem:
- Weak DPs:
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
sortAll#(@l) -> sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
splitAndSort#(@l) -> sortAll#(split(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/1,c_15/0,c_16/3,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:W:quicksort#(@l) -> c_13(quicksort#1#(@l))
-->_1 quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z)):2
2:W:quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z))
-->_1 quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys)):3
3:W:quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
-->_3 quicksort#(@l) -> c_13(quicksort#1#(@l)):1
-->_2 quicksort#(@l) -> c_13(quicksort#1#(@l)):1
4:W:sortAll#(@l) -> sortAll#1#(@l)
-->_1 sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs):5
5:W:sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
-->_1 sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs):7
-->_1 sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals):6
6:W:sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
-->_1 quicksort#(@l) -> c_13(quicksort#1#(@l)):1
7:W:sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
-->_1 sortAll#(@l) -> sortAll#1#(@l):4
8:W:splitAndSort#(@l) -> sortAll#(split(@l))
-->_1 sortAll#(@l) -> sortAll#1#(@l):4
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
8: splitAndSort#(@l) -> sortAll#(split(@l))
4: sortAll#(@l) -> sortAll#1#(@l)
7: sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
5: sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
6: sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
1: quicksort#(@l) -> c_13(quicksort#1#(@l))
3: quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
2: quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z))
***** Step 8.a:3.b:1.a:1.b:2: EmptyProcessor WORST_CASE(?,O(1))
+ Considered Problem:
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/1,c_15/0,c_16/3,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
EmptyProcessor
+ Details:
The problem is already closed. The intended complexity is O(1).
**** Step 8.a:3.b:1.b:1: MI WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
append#(@l,@ys) -> c_3(append#1#(@l,@ys))
append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys))
- Weak DPs:
quicksort#(@l) -> quicksort#1#(@l)
quicksort#1#(::(@z,@zs)) -> quicksort#2#(splitqs(@z,@zs),@z)
quicksort#2#(tuple#2(@xs,@ys),@z) -> append#(quicksort(@xs),::(@z,quicksort(@ys)))
quicksort#2#(tuple#2(@xs,@ys),@z) -> quicksort#(@xs)
quicksort#2#(tuple#2(@xs,@ys),@z) -> quicksort#(@ys)
sortAll#(@l) -> sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
splitAndSort#(@l) -> sortAll#(split(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/1,c_15/0,c_16/3,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
MI {miKind = MaximalMatrix (UpperTriangular (Multiplicity Nothing)), miDimension = 3, miUArgs = UArgs, miURules = URules, miSelector = Just any strict-rules}
+ Details:
We apply a matrix interpretation of kind MaximalMatrix (UpperTriangular (Multiplicity Nothing)):
The following argument positions are considered usable:
uargs(c_3) = {1},
uargs(c_4) = {1}
Following symbols are considered usable:
{append,append#1,insert,insert#1,insert#2,insert#3,insert#4,quicksort,quicksort#1,quicksort#2,split
,split#1,splitqs,splitqs#1,splitqs#2,splitqs#3,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#,splitqs#3#}
TcT has computed the following interpretation:
p(#0) = [0]
[0]
[0]
p(#EQ) = [0]
[0]
[0]
p(#GT) = [0]
[0]
[0]
p(#LT) = [0]
[0]
[0]
p(#and) = [0 0 1] [0 0 0] [0]
[0 0 1] x_1 + [0 0 0] x_2 + [0]
[0 0 0] [0 0 1] [1]
p(#ckgt) = [0]
[0]
[1]
p(#compare) = [0 0 0] [0]
[1 1 0] x_1 + [0]
[0 0 0] [0]
p(#eq) = [0 0 0] [0]
[0 0 0] x_1 + [0]
[0 0 1] [1]
p(#equal) = [0]
[0]
[0]
p(#false) = [0]
[0]
[0]
p(#greater) = [0]
[0]
[0]
p(#neg) = [0 0 0] [0]
[0 1 1] x_1 + [0]
[0 0 0] [0]
p(#pos) = [0]
[1]
[0]
p(#s) = [1]
[1]
[0]
p(#true) = [0]
[0]
[0]
p(::) = [0 0 0] [1 0 0] [0]
[0 0 1] x_1 + [0 1 0] x_2 + [0]
[0 0 0] [0 0 1] [1]
p(append) = [0 0 0] [1 0 0] [0]
[0 1 0] x_1 + [0 1 0] x_2 + [0]
[0 0 1] [0 0 1] [0]
p(append#1) = [0 0 0] [1 0 0] [0]
[0 1 0] x_1 + [0 1 0] x_2 + [0]
[0 0 1] [0 0 1] [0]
p(insert) = [1 0 0] [0]
[0 1 0] x_2 + [1]
[1 0 1] [0]
p(insert#1) = [1 0 0] [0]
[0 1 0] x_2 + [1]
[1 0 1] [0]
p(insert#2) = [1 0 0] [0]
[0 1 0] x_1 + [1]
[1 0 1] [0]
p(insert#3) = [0 0 0] [1 0 0] [0]
[0 0 1] x_1 + [0 1 0] x_3 + [1]
[0 0 0] [1 0 1] [1]
p(insert#4) = [1 0 0] [0 0 0] [0]
[0 1 0] x_3 + [0 0 1] x_5 + [1]
[1 0 1] [0 0 0] [1]
p(nil) = [1]
[0]
[0]
p(quicksort) = [0 0 0] [1]
[0 1 0] x_1 + [0]
[0 0 1] [0]
p(quicksort#1) = [0 0 0] [1]
[0 1 0] x_1 + [0]
[0 0 1] [0]
p(quicksort#2) = [0 0 0] [0 0 0] [1]
[1 0 0] x_1 + [0 0 1] x_2 + [0]
[0 1 0] [0 0 0] [1]
p(sortAll) = [0]
[0]
[0]
p(sortAll#1) = [0]
[0]
[0]
p(sortAll#2) = [0]
[0]
[0]
p(split) = [0 0 0] [1]
[1 0 1] x_1 + [0]
[0 0 1] [0]
p(split#1) = [0 0 0] [1]
[1 0 1] x_1 + [0]
[0 0 1] [0]
p(splitAndSort) = [0]
[0]
[0]
p(splitqs) = [0 0 0] [0 1 0] [0]
[0 0 0] x_1 + [0 0 1] x_2 + [0]
[1 1 1] [0 0 1] [0]
p(splitqs#1) = [0 1 0] [0 0 0] [0]
[0 0 1] x_1 + [0 0 0] x_2 + [0]
[0 0 1] [1 1 1] [0]
p(splitqs#2) = [1 0 0] [0 0 0] [0 0 1] [0]
[0 1 0] x_1 + [0 0 0] x_2 + [0 0 0] x_3 + [1]
[0 1 0] [0 0 1] [0 0 0] [1]
p(splitqs#3) = [0 1 0] [0 1 0] [0 0 1] [0]
[0 0 1] x_2 + [0 0 1] x_3 + [0 0 0] x_4 + [1]
[0 0 1] [0 0 1] [0 0 0] [1]
p(tuple#2) = [0 1 0] [0 1 0] [0]
[0 0 1] x_1 + [0 0 1] x_2 + [0]
[0 0 1] [0 0 0] [0]
p(#and#) = [0]
[0]
[0]
p(#ckgt#) = [0]
[0]
[0]
p(#compare#) = [0]
[0]
[0]
p(#eq#) = [0]
[0]
[0]
p(#equal#) = [0]
[0]
[0]
p(#greater#) = [0]
[0]
[0]
p(append#) = [0 0 1] [0 0 0] [0]
[0 0 0] x_1 + [0 0 0] x_2 + [0]
[0 0 1] [1 0 0] [0]
p(append#1#) = [0 0 1] [0 0 0] [0]
[0 1 1] x_1 + [0 1 1] x_2 + [1]
[0 0 0] [1 0 0] [0]
p(insert#) = [0]
[0]
[0]
p(insert#1#) = [0]
[0]
[0]
p(insert#2#) = [0]
[0]
[0]
p(insert#3#) = [0]
[0]
[0]
p(insert#4#) = [0]
[0]
[0]
p(quicksort#) = [0 0 1] [0]
[0 0 0] x_1 + [0]
[0 0 1] [0]
p(quicksort#1#) = [0 0 1] [0]
[0 0 0] x_1 + [0]
[0 0 1] [0]
p(quicksort#2#) = [0 1 0] [0]
[0 0 0] x_1 + [0]
[0 1 0] [1]
p(sortAll#) = [0 1 0] [0]
[0 0 0] x_1 + [0]
[0 1 0] [0]
p(sortAll#1#) = [0 1 0] [0]
[0 0 0] x_1 + [0]
[0 1 0] [0]
p(sortAll#2#) = [0 0 1] [0 1 0] [0]
[0 0 0] x_1 + [0 0 0] x_2 + [0]
[0 0 1] [0 1 0] [0]
p(split#) = [0]
[0]
[0]
p(split#1#) = [0]
[0]
[0]
p(splitAndSort#) = [1 0 1] [0]
[0 0 0] x_1 + [0]
[1 0 1] [0]
p(splitqs#) = [0]
[0]
[0]
p(splitqs#1#) = [0]
[0]
[0]
p(splitqs#2#) = [0]
[0]
[0]
p(splitqs#3#) = [0]
[0]
[0]
p(c_1) = [0]
[0]
[0]
p(c_2) = [0]
[0]
[0]
p(c_3) = [1 0 0] [0]
[0 0 0] x_1 + [0]
[1 0 1] [0]
p(c_4) = [1 0 0] [0]
[0 0 0] x_1 + [0]
[0 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) = [0]
[0]
[0]
p(c_10) = [0]
[0]
[0]
p(c_11) = [0]
[0]
[0]
p(c_12) = [0]
[0]
[0]
p(c_13) = [0]
[0]
[0]
p(c_14) = [0]
[0]
[0]
p(c_15) = [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]
Following rules are strictly oriented:
append#1#(::(@x,@xs),@ys) = [0 0 0] [0 0 1] [0 0 0] [1]
[0 0 1] @x + [0 1 1] @xs + [0 1 1] @ys + [2]
[0 0 0] [0 0 0] [1 0 0] [0]
> [0 0 1] [0]
[0 0 0] @xs + [0]
[0 0 0] [0]
= c_4(append#(@xs,@ys))
Following rules are (at-least) weakly oriented:
append#(@l,@ys) = [0 0 1] [0 0 0] [0]
[0 0 0] @l + [0 0 0] @ys + [0]
[0 0 1] [1 0 0] [0]
>= [0 0 1] [0 0 0] [0]
[0 0 0] @l + [0 0 0] @ys + [0]
[0 0 1] [1 0 0] [0]
= c_3(append#1#(@l,@ys))
quicksort#(@l) = [0 0 1] [0]
[0 0 0] @l + [0]
[0 0 1] [0]
>= [0 0 1] [0]
[0 0 0] @l + [0]
[0 0 1] [0]
= quicksort#1#(@l)
quicksort#1#(::(@z,@zs)) = [0 0 1] [1]
[0 0 0] @zs + [0]
[0 0 1] [1]
>= [0 0 1] [0]
[0 0 0] @zs + [0]
[0 0 1] [1]
= quicksort#2#(splitqs(@z,@zs),@z)
quicksort#2#(tuple#2(@xs,@ys),@z) = [0 0 1] [0 0 1] [0]
[0 0 0] @xs + [0 0 0] @ys + [0]
[0 0 1] [0 0 1] [1]
>= [0 0 1] [0]
[0 0 0] @xs + [0]
[0 0 1] [1]
= append#(quicksort(@xs),::(@z,quicksort(@ys)))
quicksort#2#(tuple#2(@xs,@ys),@z) = [0 0 1] [0 0 1] [0]
[0 0 0] @xs + [0 0 0] @ys + [0]
[0 0 1] [0 0 1] [1]
>= [0 0 1] [0]
[0 0 0] @xs + [0]
[0 0 1] [0]
= quicksort#(@xs)
quicksort#2#(tuple#2(@xs,@ys),@z) = [0 0 1] [0 0 1] [0]
[0 0 0] @xs + [0 0 0] @ys + [0]
[0 0 1] [0 0 1] [1]
>= [0 0 1] [0]
[0 0 0] @ys + [0]
[0 0 1] [0]
= quicksort#(@ys)
sortAll#(@l) = [0 1 0] [0]
[0 0 0] @l + [0]
[0 1 0] [0]
>= [0 1 0] [0]
[0 0 0] @l + [0]
[0 1 0] [0]
= sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) = [0 0 1] [0 1 0] [0]
[0 0 0] @x + [0 0 0] @xs + [0]
[0 0 1] [0 1 0] [0]
>= [0 0 1] [0 1 0] [0]
[0 0 0] @x + [0 0 0] @xs + [0]
[0 0 1] [0 1 0] [0]
= sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) = [0 0 1] [0 1 0] [0]
[0 0 0] @vals + [0 0 0] @xs + [0]
[0 0 1] [0 1 0] [0]
>= [0 0 1] [0]
[0 0 0] @vals + [0]
[0 0 1] [0]
= quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) = [0 0 1] [0 1 0] [0]
[0 0 0] @vals + [0 0 0] @xs + [0]
[0 0 1] [0 1 0] [0]
>= [0 1 0] [0]
[0 0 0] @xs + [0]
[0 1 0] [0]
= sortAll#(@xs)
splitAndSort#(@l) = [1 0 1] [0]
[0 0 0] @l + [0]
[1 0 1] [0]
>= [1 0 1] [0]
[0 0 0] @l + [0]
[1 0 1] [0]
= sortAll#(split(@l))
append(@l,@ys) = [0 0 0] [1 0 0] [0]
[0 1 0] @l + [0 1 0] @ys + [0]
[0 0 1] [0 0 1] [0]
>= [0 0 0] [1 0 0] [0]
[0 1 0] @l + [0 1 0] @ys + [0]
[0 0 1] [0 0 1] [0]
= append#1(@l,@ys)
append#1(::(@x,@xs),@ys) = [0 0 0] [0 0 0] [1 0 0] [0]
[0 0 1] @x + [0 1 0] @xs + [0 1 0] @ys + [0]
[0 0 0] [0 0 1] [0 0 1] [1]
>= [0 0 0] [0 0 0] [1 0 0] [0]
[0 0 1] @x + [0 1 0] @xs + [0 1 0] @ys + [0]
[0 0 0] [0 0 1] [0 0 1] [1]
= ::(@x,append(@xs,@ys))
append#1(nil(),@ys) = [1 0 0] [0]
[0 1 0] @ys + [0]
[0 0 1] [0]
>= [1 0 0] [0]
[0 1 0] @ys + [0]
[0 0 1] [0]
= @ys
insert(@x,@l) = [1 0 0] [0]
[0 1 0] @l + [1]
[1 0 1] [0]
>= [1 0 0] [0]
[0 1 0] @l + [1]
[1 0 1] [0]
= insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) = [1 0 0] [0]
[0 1 0] @l + [1]
[1 0 1] [0]
>= [1 0 0] [0]
[0 1 0] @l + [1]
[1 0 1] [0]
= insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) = [0 0 0] [1 0 0] [0]
[0 0 1] @l1 + [0 1 0] @ls + [1]
[0 0 0] [1 0 1] [1]
>= [0 0 0] [1 0 0] [0]
[0 0 1] @l1 + [0 1 0] @ls + [1]
[0 0 0] [1 0 1] [1]
= insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) = [1]
[1]
[1]
>= [1]
[1]
[1]
= ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) = [1 0 0] [0 0 0] [0]
[0 1 0] @ls + [0 0 1] @vals1 + [1]
[1 0 1] [0 0 0] [1]
>= [1 0 0] [0 0 0] [0]
[0 1 0] @ls + [0 0 1] @vals1 + [1]
[1 0 1] [0 0 0] [1]
= insert#4(#equal(@key1,@keyX),@key1,@ls,@valX,@vals1,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) = [1 0 0] [0 0 0] [0]
[0 1 0] @ls + [0 0 1] @vals1 + [1]
[1 0 1] [0 0 0] [1]
>= [1 0 0] [0 0 0] [0]
[0 1 0] @ls + [0 0 1] @vals1 + [1]
[1 0 1] [0 0 0] [1]
= ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) = [1 0 0] [0 0 0] [0]
[0 1 0] @ls + [0 0 1] @vals1 + [1]
[1 0 1] [0 0 0] [1]
>= [1 0 0] [0 0 0] [0]
[0 1 0] @ls + [0 0 1] @vals1 + [1]
[0 0 1] [0 0 0] [1]
= ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) = [0 0 0] [1]
[0 1 0] @l + [0]
[0 0 1] [0]
>= [0 0 0] [1]
[0 1 0] @l + [0]
[0 0 1] [0]
= quicksort#1(@l)
quicksort#1(::(@z,@zs)) = [0 0 0] [0 0 0] [1]
[0 0 1] @z + [0 1 0] @zs + [0]
[0 0 0] [0 0 1] [1]
>= [0 0 0] [0 0 0] [1]
[0 0 1] @z + [0 1 0] @zs + [0]
[0 0 0] [0 0 1] [1]
= quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) = [1]
[0]
[0]
>= [1]
[0]
[0]
= nil()
quicksort#2(tuple#2(@xs,@ys),@z) = [0 0 0] [0 0 0] [0 0 0] [1]
[0 1 0] @xs + [0 1 0] @ys + [0 0 1] @z + [0]
[0 0 1] [0 0 1] [0 0 0] [1]
>= [0 0 0] [0 0 0] [0 0 0] [1]
[0 1 0] @xs + [0 1 0] @ys + [0 0 1] @z + [0]
[0 0 1] [0 0 1] [0 0 0] [1]
= append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) = [0 0 0] [1]
[1 0 1] @l + [0]
[0 0 1] [0]
>= [0 0 0] [1]
[1 0 1] @l + [0]
[0 0 1] [0]
= split#1(@l)
split#1(::(@x,@xs)) = [0 0 0] [1]
[1 0 1] @xs + [1]
[0 0 1] [1]
>= [0 0 0] [1]
[1 0 1] @xs + [1]
[0 0 1] [1]
= insert(@x,split(@xs))
split#1(nil()) = [1]
[1]
[0]
>= [1]
[0]
[0]
= nil()
splitqs(@pivot,@l) = [0 1 0] [0 0 0] [0]
[0 0 1] @l + [0 0 0] @pivot + [0]
[0 0 1] [1 1 1] [0]
>= [0 1 0] [0 0 0] [0]
[0 0 1] @l + [0 0 0] @pivot + [0]
[0 0 1] [1 1 1] [0]
= splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) = [0 0 0] [0 0 1] [0 1 0] [0]
[0 0 0] @pivot + [0 0 0] @x + [0 0 1] @xs + [1]
[1 1 1] [0 0 0] [0 0 1] [1]
>= [0 0 0] [0 0 1] [0 1 0] [0]
[0 0 0] @pivot + [0 0 0] @x + [0 0 1] @xs + [1]
[0 0 1] [0 0 0] [0 0 1] [1]
= splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) = [0 0 0] [0]
[0 0 0] @pivot + [0]
[1 1 1] [0]
>= [0]
[0]
[0]
= tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) = [0 1 0] [0 0 0] [0 1 0] [0 0 1] [0]
[0 0 1] @ls + [0 0 0] @pivot + [0 0 1] @rs + [0 0 0] @x + [1]
[0 0 1] [0 0 1] [0 0 1] [0 0 0] [1]
>= [0 1 0] [0 1 0] [0 0 1] [0]
[0 0 1] @ls + [0 0 1] @rs + [0 0 0] @x + [1]
[0 0 1] [0 0 1] [0 0 0] [1]
= splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) = [0 1 0] [0 1 0] [0 0 1] [0]
[0 0 1] @ls + [0 0 1] @rs + [0 0 0] @x + [1]
[0 0 1] [0 0 1] [0 0 0] [1]
>= [0 1 0] [0 1 0] [0 0 1] [0]
[0 0 1] @ls + [0 0 1] @rs + [0 0 0] @x + [1]
[0 0 1] [0 0 0] [0 0 0] [1]
= tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) = [0 1 0] [0 1 0] [0 0 1] [0]
[0 0 1] @ls + [0 0 1] @rs + [0 0 0] @x + [1]
[0 0 1] [0 0 1] [0 0 0] [1]
>= [0 1 0] [0 1 0] [0 0 1] [0]
[0 0 1] @ls + [0 0 1] @rs + [0 0 0] @x + [1]
[0 0 1] [0 0 0] [0 0 0] [0]
= tuple#2(@ls,::(@x,@rs))
**** Step 8.a:3.b:1.b:2: MI WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
append#(@l,@ys) -> c_3(append#1#(@l,@ys))
- Weak DPs:
append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys))
quicksort#(@l) -> quicksort#1#(@l)
quicksort#1#(::(@z,@zs)) -> quicksort#2#(splitqs(@z,@zs),@z)
quicksort#2#(tuple#2(@xs,@ys),@z) -> append#(quicksort(@xs),::(@z,quicksort(@ys)))
quicksort#2#(tuple#2(@xs,@ys),@z) -> quicksort#(@xs)
quicksort#2#(tuple#2(@xs,@ys),@z) -> quicksort#(@ys)
sortAll#(@l) -> sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
splitAndSort#(@l) -> sortAll#(split(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/1,c_15/0,c_16/3,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
MI {miKind = MaximalMatrix (UpperTriangular (Multiplicity Nothing)), miDimension = 3, miUArgs = UArgs, miURules = URules, miSelector = Just any strict-rules}
+ Details:
We apply a matrix interpretation of kind MaximalMatrix (UpperTriangular (Multiplicity Nothing)):
The following argument positions are considered usable:
uargs(c_3) = {1},
uargs(c_4) = {1}
Following symbols are considered usable:
{append,append#1,insert,insert#1,insert#2,insert#3,insert#4,quicksort,quicksort#1,quicksort#2,split
,split#1,splitqs,splitqs#1,splitqs#2,splitqs#3,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#,splitqs#3#}
TcT has computed the following interpretation:
p(#0) = [0]
[0]
[0]
p(#EQ) = [0]
[0]
[1]
p(#GT) = [0]
[0]
[0]
p(#LT) = [0]
[0]
[0]
p(#and) = [0]
[0]
[1]
p(#ckgt) = [0 0 0] [0]
[0 0 0] x_1 + [1]
[0 0 1] [0]
p(#compare) = [0 0 0] [0]
[0 0 0] x_1 + [0]
[0 0 1] [0]
p(#eq) = [0]
[0]
[0]
p(#equal) = [0]
[0]
[0]
p(#false) = [0]
[0]
[0]
p(#greater) = [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 0] [1 0 0] [0]
[0 0 1] x_1 + [0 1 0] x_2 + [0]
[0 0 0] [0 0 1] [1]
p(append) = [0 0 0] [1 0 0] [0]
[0 1 0] x_1 + [0 1 0] x_2 + [0]
[0 0 1] [0 0 1] [0]
p(append#1) = [0 0 0] [1 0 0] [0]
[0 1 0] x_1 + [0 1 0] x_2 + [0]
[0 0 1] [0 0 1] [0]
p(insert) = [1 0 0] [0]
[0 1 0] x_2 + [1]
[1 0 1] [0]
p(insert#1) = [1 0 0] [0]
[0 1 0] x_2 + [1]
[1 0 1] [0]
p(insert#2) = [1 0 0] [0]
[0 1 0] x_1 + [1]
[1 0 1] [0]
p(insert#3) = [0 0 0] [1 0 0] [0]
[0 0 1] x_1 + [0 1 0] x_3 + [1]
[0 0 0] [1 0 1] [1]
p(insert#4) = [1 0 0] [0 0 0] [0]
[0 1 0] x_3 + [0 0 1] x_5 + [1]
[1 0 1] [0 0 0] [1]
p(nil) = [1]
[0]
[0]
p(quicksort) = [0 0 0] [1]
[0 1 0] x_1 + [0]
[0 0 1] [0]
p(quicksort#1) = [0 0 0] [1]
[0 1 0] x_1 + [0]
[0 0 1] [0]
p(quicksort#2) = [0 0 0] [0 0 0] [1]
[1 0 0] x_1 + [0 0 1] x_2 + [0]
[0 1 0] [0 0 0] [1]
p(sortAll) = [0]
[0]
[0]
p(sortAll#1) = [0]
[0]
[0]
p(sortAll#2) = [0]
[0]
[0]
p(split) = [0 0 0] [1]
[0 0 1] x_1 + [0]
[0 0 1] [0]
p(split#1) = [0 0 0] [1]
[0 0 1] x_1 + [0]
[0 0 1] [0]
p(splitAndSort) = [0]
[0]
[0]
p(splitqs) = [0 0 0] [0 1 0] [0]
[0 0 0] x_1 + [0 0 1] x_2 + [0]
[1 1 1] [0 0 1] [0]
p(splitqs#1) = [0 1 0] [0 0 0] [0]
[0 0 1] x_1 + [0 0 0] x_2 + [0]
[0 0 1] [1 1 1] [0]
p(splitqs#2) = [1 0 0] [0 0 1] [0]
[0 1 0] x_1 + [0 0 0] x_3 + [1]
[0 1 0] [0 0 0] [1]
p(splitqs#3) = [0 1 0] [0 1 0] [0 0 1] [0]
[0 0 1] x_2 + [0 0 1] x_3 + [0 0 0] x_4 + [1]
[0 0 1] [0 0 0] [0 0 0] [1]
p(tuple#2) = [0 1 0] [0 1 0] [0]
[0 0 1] x_1 + [0 0 1] x_2 + [0]
[0 0 1] [0 0 0] [0]
p(#and#) = [0]
[0]
[0]
p(#ckgt#) = [0]
[0]
[0]
p(#compare#) = [0]
[0]
[0]
p(#eq#) = [0]
[0]
[0]
p(#equal#) = [0]
[0]
[0]
p(#greater#) = [0]
[0]
[0]
p(append#) = [0 0 1] [1]
[1 0 0] x_1 + [0]
[0 0 0] [0]
p(append#1#) = [0 0 1] [0]
[1 1 0] x_1 + [0]
[1 0 0] [0]
p(insert#) = [0]
[0]
[0]
p(insert#1#) = [0]
[0]
[0]
p(insert#2#) = [0]
[0]
[0]
p(insert#3#) = [0]
[0]
[0]
p(insert#4#) = [0]
[0]
[0]
p(quicksort#) = [0 0 1] [0]
[0 0 0] x_1 + [1]
[0 0 0] [0]
p(quicksort#1#) = [0 0 1] [0]
[0 0 0] x_1 + [1]
[0 0 0] [0]
p(quicksort#2#) = [0 1 0] [1]
[0 0 0] x_1 + [1]
[0 0 0] [0]
p(sortAll#) = [0 1 0] [0]
[0 0 0] x_1 + [1]
[0 0 1] [0]
p(sortAll#1#) = [0 1 0] [0]
[0 0 0] x_1 + [1]
[0 0 1] [0]
p(sortAll#2#) = [0 0 1] [0 1 0] [0]
[0 0 0] x_1 + [0 0 0] x_2 + [1]
[0 0 0] [0 0 1] [1]
p(split#) = [0]
[0]
[0]
p(split#1#) = [0]
[0]
[0]
p(splitAndSort#) = [0 0 1] [1]
[1 1 0] x_1 + [1]
[1 0 1] [1]
p(splitqs#) = [0]
[0]
[0]
p(splitqs#1#) = [0]
[0]
[0]
p(splitqs#2#) = [0]
[0]
[0]
p(splitqs#3#) = [0]
[0]
[0]
p(c_1) = [0]
[0]
[0]
p(c_2) = [0]
[0]
[0]
p(c_3) = [1 0 0] [0]
[0 0 1] x_1 + [0]
[0 0 0] [0]
p(c_4) = [1 0 0] [0]
[0 1 0] x_1 + [0]
[0 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) = [0]
[0]
[0]
p(c_10) = [0]
[0]
[0]
p(c_11) = [0]
[0]
[0]
p(c_12) = [0]
[0]
[0]
p(c_13) = [0]
[0]
[0]
p(c_14) = [0]
[0]
[0]
p(c_15) = [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]
Following rules are strictly oriented:
append#(@l,@ys) = [0 0 1] [1]
[1 0 0] @l + [0]
[0 0 0] [0]
> [0 0 1] [0]
[1 0 0] @l + [0]
[0 0 0] [0]
= c_3(append#1#(@l,@ys))
Following rules are (at-least) weakly oriented:
append#1#(::(@x,@xs),@ys) = [0 0 0] [0 0 1] [1]
[0 0 1] @x + [1 1 0] @xs + [0]
[0 0 0] [1 0 0] [0]
>= [0 0 1] [1]
[1 0 0] @xs + [0]
[0 0 0] [0]
= c_4(append#(@xs,@ys))
quicksort#(@l) = [0 0 1] [0]
[0 0 0] @l + [1]
[0 0 0] [0]
>= [0 0 1] [0]
[0 0 0] @l + [1]
[0 0 0] [0]
= quicksort#1#(@l)
quicksort#1#(::(@z,@zs)) = [0 0 1] [1]
[0 0 0] @zs + [1]
[0 0 0] [0]
>= [0 0 1] [1]
[0 0 0] @zs + [1]
[0 0 0] [0]
= quicksort#2#(splitqs(@z,@zs),@z)
quicksort#2#(tuple#2(@xs,@ys),@z) = [0 0 1] [0 0 1] [1]
[0 0 0] @xs + [0 0 0] @ys + [1]
[0 0 0] [0 0 0] [0]
>= [0 0 1] [1]
[0 0 0] @xs + [1]
[0 0 0] [0]
= append#(quicksort(@xs),::(@z,quicksort(@ys)))
quicksort#2#(tuple#2(@xs,@ys),@z) = [0 0 1] [0 0 1] [1]
[0 0 0] @xs + [0 0 0] @ys + [1]
[0 0 0] [0 0 0] [0]
>= [0 0 1] [0]
[0 0 0] @xs + [1]
[0 0 0] [0]
= quicksort#(@xs)
quicksort#2#(tuple#2(@xs,@ys),@z) = [0 0 1] [0 0 1] [1]
[0 0 0] @xs + [0 0 0] @ys + [1]
[0 0 0] [0 0 0] [0]
>= [0 0 1] [0]
[0 0 0] @ys + [1]
[0 0 0] [0]
= quicksort#(@ys)
sortAll#(@l) = [0 1 0] [0]
[0 0 0] @l + [1]
[0 0 1] [0]
>= [0 1 0] [0]
[0 0 0] @l + [1]
[0 0 1] [0]
= sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) = [0 0 1] [0 1 0] [0]
[0 0 0] @x + [0 0 0] @xs + [1]
[0 0 0] [0 0 1] [1]
>= [0 0 1] [0 1 0] [0]
[0 0 0] @x + [0 0 0] @xs + [1]
[0 0 0] [0 0 1] [1]
= sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) = [0 0 1] [0 1 0] [0]
[0 0 0] @vals + [0 0 0] @xs + [1]
[0 0 0] [0 0 1] [1]
>= [0 0 1] [0]
[0 0 0] @vals + [1]
[0 0 0] [0]
= quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) = [0 0 1] [0 1 0] [0]
[0 0 0] @vals + [0 0 0] @xs + [1]
[0 0 0] [0 0 1] [1]
>= [0 1 0] [0]
[0 0 0] @xs + [1]
[0 0 1] [0]
= sortAll#(@xs)
splitAndSort#(@l) = [0 0 1] [1]
[1 1 0] @l + [1]
[1 0 1] [1]
>= [0 0 1] [0]
[0 0 0] @l + [1]
[0 0 1] [0]
= sortAll#(split(@l))
append(@l,@ys) = [0 0 0] [1 0 0] [0]
[0 1 0] @l + [0 1 0] @ys + [0]
[0 0 1] [0 0 1] [0]
>= [0 0 0] [1 0 0] [0]
[0 1 0] @l + [0 1 0] @ys + [0]
[0 0 1] [0 0 1] [0]
= append#1(@l,@ys)
append#1(::(@x,@xs),@ys) = [0 0 0] [0 0 0] [1 0 0] [0]
[0 0 1] @x + [0 1 0] @xs + [0 1 0] @ys + [0]
[0 0 0] [0 0 1] [0 0 1] [1]
>= [0 0 0] [0 0 0] [1 0 0] [0]
[0 0 1] @x + [0 1 0] @xs + [0 1 0] @ys + [0]
[0 0 0] [0 0 1] [0 0 1] [1]
= ::(@x,append(@xs,@ys))
append#1(nil(),@ys) = [1 0 0] [0]
[0 1 0] @ys + [0]
[0 0 1] [0]
>= [1 0 0] [0]
[0 1 0] @ys + [0]
[0 0 1] [0]
= @ys
insert(@x,@l) = [1 0 0] [0]
[0 1 0] @l + [1]
[1 0 1] [0]
>= [1 0 0] [0]
[0 1 0] @l + [1]
[1 0 1] [0]
= insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) = [1 0 0] [0]
[0 1 0] @l + [1]
[1 0 1] [0]
>= [1 0 0] [0]
[0 1 0] @l + [1]
[1 0 1] [0]
= insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) = [0 0 0] [1 0 0] [0]
[0 0 1] @l1 + [0 1 0] @ls + [1]
[0 0 0] [1 0 1] [1]
>= [0 0 0] [1 0 0] [0]
[0 0 1] @l1 + [0 1 0] @ls + [1]
[0 0 0] [1 0 1] [1]
= insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) = [1]
[1]
[1]
>= [1]
[1]
[1]
= ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) = [1 0 0] [0 0 0] [0]
[0 1 0] @ls + [0 0 1] @vals1 + [1]
[1 0 1] [0 0 0] [1]
>= [1 0 0] [0 0 0] [0]
[0 1 0] @ls + [0 0 1] @vals1 + [1]
[1 0 1] [0 0 0] [1]
= insert#4(#equal(@key1,@keyX),@key1,@ls,@valX,@vals1,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) = [1 0 0] [0 0 0] [0]
[0 1 0] @ls + [0 0 1] @vals1 + [1]
[1 0 1] [0 0 0] [1]
>= [1 0 0] [0 0 0] [0]
[0 1 0] @ls + [0 0 1] @vals1 + [1]
[1 0 1] [0 0 0] [1]
= ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) = [1 0 0] [0 0 0] [0]
[0 1 0] @ls + [0 0 1] @vals1 + [1]
[1 0 1] [0 0 0] [1]
>= [1 0 0] [0 0 0] [0]
[0 1 0] @ls + [0 0 1] @vals1 + [1]
[0 0 1] [0 0 0] [1]
= ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) = [0 0 0] [1]
[0 1 0] @l + [0]
[0 0 1] [0]
>= [0 0 0] [1]
[0 1 0] @l + [0]
[0 0 1] [0]
= quicksort#1(@l)
quicksort#1(::(@z,@zs)) = [0 0 0] [0 0 0] [1]
[0 0 1] @z + [0 1 0] @zs + [0]
[0 0 0] [0 0 1] [1]
>= [0 0 0] [0 0 0] [1]
[0 0 1] @z + [0 1 0] @zs + [0]
[0 0 0] [0 0 1] [1]
= quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) = [1]
[0]
[0]
>= [1]
[0]
[0]
= nil()
quicksort#2(tuple#2(@xs,@ys),@z) = [0 0 0] [0 0 0] [0 0 0] [1]
[0 1 0] @xs + [0 1 0] @ys + [0 0 1] @z + [0]
[0 0 1] [0 0 1] [0 0 0] [1]
>= [0 0 0] [0 0 0] [0 0 0] [1]
[0 1 0] @xs + [0 1 0] @ys + [0 0 1] @z + [0]
[0 0 1] [0 0 1] [0 0 0] [1]
= append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) = [0 0 0] [1]
[0 0 1] @l + [0]
[0 0 1] [0]
>= [0 0 0] [1]
[0 0 1] @l + [0]
[0 0 1] [0]
= split#1(@l)
split#1(::(@x,@xs)) = [0 0 0] [1]
[0 0 1] @xs + [1]
[0 0 1] [1]
>= [0 0 0] [1]
[0 0 1] @xs + [1]
[0 0 1] [1]
= insert(@x,split(@xs))
split#1(nil()) = [1]
[0]
[0]
>= [1]
[0]
[0]
= nil()
splitqs(@pivot,@l) = [0 1 0] [0 0 0] [0]
[0 0 1] @l + [0 0 0] @pivot + [0]
[0 0 1] [1 1 1] [0]
>= [0 1 0] [0 0 0] [0]
[0 0 1] @l + [0 0 0] @pivot + [0]
[0 0 1] [1 1 1] [0]
= splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) = [0 0 0] [0 0 1] [0 1 0] [0]
[0 0 0] @pivot + [0 0 0] @x + [0 0 1] @xs + [1]
[1 1 1] [0 0 0] [0 0 1] [1]
>= [0 0 1] [0 1 0] [0]
[0 0 0] @x + [0 0 1] @xs + [1]
[0 0 0] [0 0 1] [1]
= splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) = [0 0 0] [0]
[0 0 0] @pivot + [0]
[1 1 1] [0]
>= [0]
[0]
[0]
= tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) = [0 1 0] [0 1 0] [0 0 1] [0]
[0 0 1] @ls + [0 0 1] @rs + [0 0 0] @x + [1]
[0 0 1] [0 0 1] [0 0 0] [1]
>= [0 1 0] [0 1 0] [0 0 1] [0]
[0 0 1] @ls + [0 0 1] @rs + [0 0 0] @x + [1]
[0 0 1] [0 0 0] [0 0 0] [1]
= splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) = [0 1 0] [0 1 0] [0 0 1] [0]
[0 0 1] @ls + [0 0 1] @rs + [0 0 0] @x + [1]
[0 0 1] [0 0 0] [0 0 0] [1]
>= [0 1 0] [0 1 0] [0 0 1] [0]
[0 0 1] @ls + [0 0 1] @rs + [0 0 0] @x + [1]
[0 0 1] [0 0 0] [0 0 0] [1]
= tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) = [0 1 0] [0 1 0] [0 0 1] [0]
[0 0 1] @ls + [0 0 1] @rs + [0 0 0] @x + [1]
[0 0 1] [0 0 0] [0 0 0] [1]
>= [0 1 0] [0 1 0] [0 0 1] [0]
[0 0 1] @ls + [0 0 1] @rs + [0 0 0] @x + [1]
[0 0 1] [0 0 0] [0 0 0] [0]
= tuple#2(@ls,::(@x,@rs))
**** Step 8.a:3.b:1.b:3: EmptyProcessor WORST_CASE(?,O(1))
+ Considered Problem:
- Weak DPs:
append#(@l,@ys) -> c_3(append#1#(@l,@ys))
append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys))
quicksort#(@l) -> quicksort#1#(@l)
quicksort#1#(::(@z,@zs)) -> quicksort#2#(splitqs(@z,@zs),@z)
quicksort#2#(tuple#2(@xs,@ys),@z) -> append#(quicksort(@xs),::(@z,quicksort(@ys)))
quicksort#2#(tuple#2(@xs,@ys),@z) -> quicksort#(@xs)
quicksort#2#(tuple#2(@xs,@ys),@z) -> quicksort#(@ys)
sortAll#(@l) -> sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
splitAndSort#(@l) -> sortAll#(split(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/1,c_15/0,c_16/3,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
EmptyProcessor
+ Details:
The problem is already closed. The intended complexity is O(1).
** Step 8.b:1: RemoveWeakSuffixes WORST_CASE(?,O(n^5))
+ Considered Problem:
- Strict DPs:
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
- Weak DPs:
append#(@l,@ys) -> c_3(append#1#(@l,@ys))
append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/3,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/2
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:S:insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
-->_1 insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x)):2
2:S:insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
-->_1 insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x)):3
3:S:insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
-->_1 insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)):4
4:S:insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
-->_1 insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls)):5
5:S:insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
-->_1 insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x)):1
6:S:quicksort#(@l) -> c_13(quicksort#1#(@l))
-->_1 quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs)):7
7:S:quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
-->_2 splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot)):15
-->_1 quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys)):8
8:S:quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
-->_1 append#(@l,@ys) -> c_3(append#1#(@l,@ys)):17
-->_3 quicksort#(@l) -> c_13(quicksort#1#(@l)):6
-->_2 quicksort#(@l) -> c_13(quicksort#1#(@l)):6
9:S:sortAll#(@l) -> c_17(sortAll#1#(@l))
-->_1 sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs)):10
10:S:sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
-->_1 sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs)):11
11:S:sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
-->_2 sortAll#(@l) -> c_17(sortAll#1#(@l)):9
-->_1 quicksort#(@l) -> c_13(quicksort#1#(@l)):6
12:S:split#(@l) -> c_21(split#1#(@l))
-->_1 split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs)):13
13:S:split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
-->_2 split#(@l) -> c_21(split#1#(@l)):12
-->_1 insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x)):1
14:S:splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
-->_2 split#(@l) -> c_21(split#1#(@l)):12
-->_1 sortAll#(@l) -> c_17(sortAll#1#(@l)):9
15:S:splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
-->_1 splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs)):16
16:S:splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
-->_1 splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot)):15
17:W:append#(@l,@ys) -> c_3(append#1#(@l,@ys))
-->_1 append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys)):18
18:W:append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys))
-->_1 append#(@l,@ys) -> c_3(append#1#(@l,@ys)):17
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
17: append#(@l,@ys) -> c_3(append#1#(@l,@ys))
18: append#1#(::(@x,@xs),@ys) -> c_4(append#(@xs,@ys))
** Step 8.b:2: SimplifyRHS WORST_CASE(?,O(n^5))
+ Considered Problem:
- Strict DPs:
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/3,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/2
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
SimplifyRHS
+ Details:
Consider the dependency graph
1:S:insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
-->_1 insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x)):2
2:S:insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
-->_1 insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x)):3
3:S:insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
-->_1 insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)):4
4:S:insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
-->_1 insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls)):5
5:S:insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
-->_1 insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x)):1
6:S:quicksort#(@l) -> c_13(quicksort#1#(@l))
-->_1 quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs)):7
7:S:quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
-->_2 splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot)):15
-->_1 quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys)):8
8:S:quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(append#(quicksort(@xs),::(@z,quicksort(@ys)))
,quicksort#(@xs)
,quicksort#(@ys))
-->_3 quicksort#(@l) -> c_13(quicksort#1#(@l)):6
-->_2 quicksort#(@l) -> c_13(quicksort#1#(@l)):6
9:S:sortAll#(@l) -> c_17(sortAll#1#(@l))
-->_1 sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs)):10
10:S:sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
-->_1 sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs)):11
11:S:sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
-->_2 sortAll#(@l) -> c_17(sortAll#1#(@l)):9
-->_1 quicksort#(@l) -> c_13(quicksort#1#(@l)):6
12:S:split#(@l) -> c_21(split#1#(@l))
-->_1 split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs)):13
13:S:split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
-->_2 split#(@l) -> c_21(split#1#(@l)):12
-->_1 insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x)):1
14:S:splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
-->_2 split#(@l) -> c_21(split#1#(@l)):12
-->_1 sortAll#(@l) -> c_17(sortAll#1#(@l)):9
15:S:splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
-->_1 splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs)):16
16:S:splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
-->_1 splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot)):15
Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified:
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
** Step 8.b:3: UsableRules WORST_CASE(?,O(n^5))
+ Considered Problem:
- Strict DPs:
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
append(@l,@ys) -> append#1(@l,@ys)
append#1(::(@x,@xs),@ys) -> ::(@x,append(@xs,@ys))
append#1(nil(),@ys) -> @ys
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
quicksort(@l) -> quicksort#1(@l)
quicksort#1(::(@z,@zs)) -> quicksort#2(splitqs(@z,@zs),@z)
quicksort#1(nil()) -> nil()
quicksort#2(tuple#2(@xs,@ys),@z) -> append(quicksort(@xs),::(@z,quicksort(@ys)))
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/2
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
UsableRules
+ Details:
We replace rewrite rules by usable rules:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
** Step 8.b:4: Decompose WORST_CASE(?,O(n^5))
+ Considered Problem:
- Strict DPs:
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/2
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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:
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
- Weak DPs:
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2
,#eq#/2,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5
,insert#4#/6,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1
,split#1#/1,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0
,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1
,c_9/0,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0
,c_24/2,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0
,c_39/0,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0
,c_54/0,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0
,c_69/0,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
Problem (S)
- Strict DPs:
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
- Weak DPs:
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2
,#eq#/2,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5
,insert#4#/6,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1
,split#1#/1,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0
,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1
,c_9/0,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0
,c_24/2,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0
,c_39/0,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0
,c_54/0,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0
,c_69/0,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
*** Step 8.b:4.a:1: RemoveWeakSuffixes WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
- Weak DPs:
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/2
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:S:insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
-->_1 insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x)):2
2:S:insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
-->_1 insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x)):3
3:S:insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
-->_1 insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)):4
4:S:insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
-->_1 insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls)):5
5:S:insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
-->_1 insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x)):1
6:W:quicksort#(@l) -> c_13(quicksort#1#(@l))
-->_1 quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs)):7
7:W:quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
-->_2 splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot)):15
-->_1 quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys)):8
8:W:quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
-->_2 quicksort#(@l) -> c_13(quicksort#1#(@l)):6
-->_1 quicksort#(@l) -> c_13(quicksort#1#(@l)):6
9:W:sortAll#(@l) -> c_17(sortAll#1#(@l))
-->_1 sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs)):10
10:W:sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
-->_1 sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs)):11
11:W:sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
-->_1 quicksort#(@l) -> c_13(quicksort#1#(@l)):6
-->_2 sortAll#(@l) -> c_17(sortAll#1#(@l)):9
12:W:split#(@l) -> c_21(split#1#(@l))
-->_1 split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs)):13
13:W:split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
-->_1 insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x)):1
-->_2 split#(@l) -> c_21(split#1#(@l)):12
14:W:splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
-->_1 sortAll#(@l) -> c_17(sortAll#1#(@l)):9
-->_2 split#(@l) -> c_21(split#1#(@l)):12
15:W:splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
-->_1 splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs)):16
16:W:splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
-->_1 splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot)):15
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
9: sortAll#(@l) -> c_17(sortAll#1#(@l))
11: sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
10: sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
6: quicksort#(@l) -> c_13(quicksort#1#(@l))
8: quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
7: quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
15: splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
16: splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
*** Step 8.b:4.a:2: SimplifyRHS WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
- Weak DPs:
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/2
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
SimplifyRHS
+ Details:
Consider the dependency graph
1:S:insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
-->_1 insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x)):2
2:S:insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
-->_1 insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x)):3
3:S:insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
-->_1 insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)):4
4:S:insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
-->_1 insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls)):5
5:S:insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
-->_1 insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x)):1
12:W:split#(@l) -> c_21(split#1#(@l))
-->_1 split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs)):13
13:W:split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
-->_1 insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x)):1
-->_2 split#(@l) -> c_21(split#1#(@l)):12
14:W:splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
-->_2 split#(@l) -> c_21(split#1#(@l)):12
Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified:
splitAndSort#(@l) -> c_24(split#(@l))
*** Step 8.b:4.a:3: UsableRules WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
- Weak DPs:
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(split#(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
UsableRules
+ Details:
We replace rewrite rules by usable rules:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(split#(@l))
*** Step 8.b:4.a:4: PredecessorEstimationCP WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
- Weak DPs:
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(split#(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}}
+ Details:
We first use the processor NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
5: insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
Consider the set of all dependency pairs
1: insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
2: insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
3: insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
4: insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
5: insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
6: split#(@l) -> c_21(split#1#(@l))
7: split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
8: splitAndSort#(@l) -> c_24(split#(@l))
Processor NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^2))
SPACE(?,?)on application of the dependency pairs
{5}
These cover all (indirect) predecessors of dependency pairs
{5,8}
their number of applications is equally bounded.
The dependency pairs are shifted into the weak component.
**** Step 8.b:4.a:4.a:1: NaturalMI WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
- Weak DPs:
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(split#(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
NaturalMI {miDimension = 2, miDegree = 2, 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_6) = {1},
uargs(c_7) = {1},
uargs(c_8) = {1},
uargs(c_10) = {1},
uargs(c_11) = {1},
uargs(c_21) = {1},
uargs(c_22) = {1,2},
uargs(c_24) = {1}
Following symbols are considered usable:
{insert,insert#1,insert#2,insert#3,insert#4,split,split#1,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#
,append#,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#
,sortAll#,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#,splitqs#3#}
TcT has computed the following interpretation:
p(#0) = [0]
[0]
p(#EQ) = [0]
[0]
p(#GT) = [0]
[0]
p(#LT) = [0]
[0]
p(#and) = [0 0] x2 + [0]
[2 2] [0]
p(#ckgt) = [0]
[0]
p(#compare) = [0]
[0]
p(#eq) = [2]
[0]
p(#equal) = [0]
[0]
p(#false) = [0]
[0]
p(#greater) = [1 0] x2 + [0]
[0 0] [0]
p(#neg) = [1]
[0]
p(#pos) = [2]
[0]
p(#s) = [0]
[0]
p(#true) = [0]
[0]
p(::) = [1 1] x2 + [0]
[0 1] [1]
p(append) = [0]
[0]
p(append#1) = [0 0] x1 + [0]
[2 1] [0]
p(insert) = [1 1] x2 + [0]
[0 1] [1]
p(insert#1) = [1 1] x2 + [0]
[0 1] [1]
p(insert#2) = [1 1] x1 + [0]
[0 1] [1]
p(insert#3) = [1 2] x3 + [1]
[0 1] [2]
p(insert#4) = [1 2] x3 + [1]
[0 1] [2]
p(nil) = [0]
[0]
p(quicksort) = [0]
[0]
p(quicksort#1) = [0]
[0]
p(quicksort#2) = [0]
[0]
p(sortAll) = [0]
[0]
p(sortAll#1) = [0]
[0]
p(sortAll#2) = [0]
[0]
p(split) = [1 0] x1 + [0]
[0 1] [0]
p(split#1) = [1 0] x1 + [0]
[0 1] [0]
p(splitAndSort) = [0]
[0]
p(splitqs) = [0]
[0]
p(splitqs#1) = [0]
[0]
p(splitqs#2) = [0]
[0]
p(splitqs#3) = [0]
[0]
p(tuple#2) = [0]
[0]
p(#and#) = [0]
[0]
p(#ckgt#) = [0]
[0]
p(#compare#) = [0]
[0]
p(#eq#) = [0]
[0]
p(#equal#) = [0]
[0]
p(#greater#) = [0]
[0]
p(append#) = [0]
[0]
p(append#1#) = [0]
[0]
p(insert#) = [0 0] x1 + [0 2] x2 + [0]
[1 3] [2 0] [0]
p(insert#1#) = [0 0] x1 + [0 2] x2 + [0]
[0 1] [1 1] [2]
p(insert#2#) = [0 2] x1 + [0 0] x4 + [0]
[0 0] [2 0] [1]
p(insert#3#) = [0 0] x2 + [0 2] x3 + [1]
[0 2] [0 0] [2]
p(insert#4#) = [0 0] x2 + [0 2] x3 + [0 0] x5 + [0 0] x6 + [1]
[3 2] [2 1] [0 2] [2 3] [0]
p(quicksort#) = [0]
[0]
p(quicksort#1#) = [0]
[0]
p(quicksort#2#) = [0]
[0]
p(sortAll#) = [0]
[0]
p(sortAll#1#) = [0]
[0]
p(sortAll#2#) = [0 0] x1 + [0 0] x2 + [0]
[0 2] [0 2] [0]
p(split#) = [2 1] x1 + [2]
[0 1] [0]
p(split#1#) = [2 1] x1 + [1]
[3 1] [1]
p(splitAndSort#) = [2 1] x1 + [3]
[1 1] [2]
p(splitqs#) = [0]
[2]
p(splitqs#1#) = [0]
[2]
p(splitqs#2#) = [0]
[2]
p(splitqs#3#) = [0 0] x1 + [0 2] x2 + [0 0] x4 + [0]
[0 1] [0 1] [0 2] [0]
p(c_1) = [1]
[0]
p(c_2) = [0 2] x1 + [0 0] x2 + [0]
[0 0] [2 2] [0]
p(c_3) = [2]
[0]
p(c_4) = [0]
[1]
p(c_5) = [1]
[1]
p(c_6) = [1 0] x1 + [0]
[0 0] [0]
p(c_7) = [1 0] x1 + [0]
[0 0] [0]
p(c_8) = [1 0] x1 + [1]
[0 0] [0]
p(c_9) = [0]
[0]
p(c_10) = [1 0] x1 + [0]
[0 0] [1]
p(c_11) = [1 0] x1 + [0]
[0 1] [0]
p(c_12) = [2]
[0]
p(c_13) = [0 1] x1 + [2]
[0 0] [1]
p(c_14) = [0 1] x1 + [1 1] x2 + [2]
[0 0] [0 0] [0]
p(c_15) = [0]
[1]
p(c_16) = [1 0] x1 + [1 0] x2 + [2]
[0 1] [2 0] [2]
p(c_17) = [1 0] x1 + [0]
[0 2] [2]
p(c_18) = [1]
[0]
p(c_19) = [1]
[0]
p(c_20) = [1 0] x1 + [2 2] x2 + [1]
[1 2] [0 0] [1]
p(c_21) = [1 0] x1 + [1]
[0 0] [0]
p(c_22) = [1 0] x1 + [1 0] x2 + [0]
[0 0] [1 0] [0]
p(c_23) = [0]
[1]
p(c_24) = [1 0] x1 + [1]
[0 0] [0]
p(c_25) = [0]
[0]
p(c_26) = [0 0] x1 + [0]
[2 1] [0]
p(c_27) = [1]
[2]
p(c_28) = [0 0] x1 + [1 0] x2 + [2]
[2 0] [1 0] [0]
p(c_29) = [0]
[1]
p(c_30) = [0]
[1]
p(c_31) = [0]
[2]
p(c_32) = [2]
[2]
p(c_33) = [0]
[0]
p(c_34) = [0]
[0]
p(c_35) = [1]
[2]
p(c_36) = [2]
[0]
p(c_37) = [0]
[2]
p(c_38) = [0]
[1]
p(c_39) = [1]
[0]
p(c_40) = [1]
[0]
p(c_41) = [0]
[1]
p(c_42) = [1]
[0]
p(c_43) = [0]
[1]
p(c_44) = [0]
[0]
p(c_45) = [2]
[2]
p(c_46) = [0]
[0]
p(c_47) = [0 0] x1 + [0]
[2 1] [0]
p(c_48) = [1]
[2]
p(c_49) = [0]
[1]
p(c_50) = [2]
[2]
p(c_51) = [0]
[0]
p(c_52) = [1]
[0]
p(c_53) = [2]
[1]
p(c_54) = [2]
[0]
p(c_55) = [0]
[0]
p(c_56) = [0]
[0]
p(c_57) = [2]
[0]
p(c_58) = [0]
[1]
p(c_59) = [0]
[0]
p(c_60) = [0]
[0]
p(c_61) = [0 1] x1 + [1]
[2 2] [0]
p(c_62) = [0 0] x2 + [0 0] x3 + [0]
[1 2] [1 2] [0]
p(c_63) = [0]
[0]
p(c_64) = [0]
[2]
p(c_65) = [0]
[0]
p(c_66) = [0]
[0]
p(c_67) = [0]
[0]
p(c_68) = [0]
[0]
p(c_69) = [0]
[0]
p(c_70) = [0 0] x2 + [0 0] x3 + [2]
[1 0] [0 2] [0]
Following rules are strictly oriented:
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) = [0 0] @key1 + [0 2] @ls + [0 0] @vals1 + [0 0] @x + [1]
[3 2] [2 1] [0 2] [2 3] [0]
> [0 2] @ls + [0 0] @x + [0]
[2 0] [1 3] [0]
= c_11(insert#(@x,@ls))
Following rules are (at-least) weakly oriented:
insert#(@x,@l) = [0 2] @l + [0 0] @x + [0]
[2 0] [1 3] [0]
>= [0 2] @l + [0]
[0 0] [0]
= c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) = [0 2] @l + [0]
[1 1] [2]
>= [0 2] @l + [0]
[0 0] [0]
= c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) = [0 2] @ls + [0 0] @x + [2]
[0 0] [2 0] [1]
>= [0 2] @ls + [2]
[0 0] [0]
= c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) = [0 0] @keyX + [0 2] @ls + [1]
[0 2] [0 0] [2]
>= [0 2] @ls + [1]
[0 0] [1]
= c_10(insert#4#(#equal(@key1,@keyX),@key1,@ls,@valX,@vals1,@x))
split#(@l) = [2 1] @l + [2]
[0 1] [0]
>= [2 1] @l + [2]
[0 0] [0]
= c_21(split#1#(@l))
split#1#(::(@x,@xs)) = [2 3] @xs + [2]
[3 4] [2]
>= [2 3] @xs + [2]
[2 1] [2]
= c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) = [2 1] @l + [3]
[1 1] [2]
>= [2 1] @l + [3]
[0 0] [0]
= c_24(split#(@l))
insert(@x,@l) = [1 1] @l + [0]
[0 1] [1]
>= [1 1] @l + [0]
[0 1] [1]
= insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) = [1 1] @l + [0]
[0 1] [1]
>= [1 1] @l + [0]
[0 1] [1]
= insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) = [1 2] @ls + [1]
[0 1] [2]
>= [1 2] @ls + [1]
[0 1] [2]
= insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) = [0]
[1]
>= [0]
[1]
= ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) = [1 2] @ls + [1]
[0 1] [2]
>= [1 2] @ls + [1]
[0 1] [2]
= insert#4(#equal(@key1,@keyX),@key1,@ls,@valX,@vals1,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) = [1 2] @ls + [1]
[0 1] [2]
>= [1 2] @ls + [1]
[0 1] [2]
= ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) = [1 2] @ls + [1]
[0 1] [2]
>= [1 1] @ls + [0]
[0 1] [1]
= ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) = [1 0] @l + [0]
[0 1] [0]
>= [1 0] @l + [0]
[0 1] [0]
= split#1(@l)
split#1(::(@x,@xs)) = [1 1] @xs + [0]
[0 1] [1]
>= [1 1] @xs + [0]
[0 1] [1]
= insert(@x,split(@xs))
split#1(nil()) = [0]
[0]
>= [0]
[0]
= nil()
**** Step 8.b:4.a:4.a:2: Assumption WORST_CASE(?,O(1))
+ Considered Problem:
- Strict DPs:
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
- Weak DPs:
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(split#(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
+ Details:
()
**** Step 8.b:4.a:4.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
- Weak DPs:
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(split#(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}}
+ Details:
We first use the processor NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
4: insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
Consider the set of all dependency pairs
1: insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
2: insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
3: insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
4: insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
5: insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
6: split#(@l) -> c_21(split#1#(@l))
7: split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
8: splitAndSort#(@l) -> c_24(split#(@l))
Processor NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^2))
SPACE(?,?)on application of the dependency pairs
{4}
These cover all (indirect) predecessors of dependency pairs
{4,5,8}
their number of applications is equally bounded.
The dependency pairs are shifted into the weak component.
***** Step 8.b:4.a:4.b:1.a:1: NaturalMI WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
- Weak DPs:
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(split#(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
NaturalMI {miDimension = 2, miDegree = 2, 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_6) = {1},
uargs(c_7) = {1},
uargs(c_8) = {1},
uargs(c_10) = {1},
uargs(c_11) = {1},
uargs(c_21) = {1},
uargs(c_22) = {1,2},
uargs(c_24) = {1}
Following symbols are considered usable:
{insert,insert#1,insert#2,insert#3,insert#4,split,split#1,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#
,append#,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#
,sortAll#,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#,splitqs#3#}
TcT has computed the following interpretation:
p(#0) = [0]
[0]
p(#EQ) = [0]
[0]
p(#GT) = [1]
[0]
p(#LT) = [0]
[0]
p(#and) = [0 0] x1 + [0 0] x2 + [0]
[2 2] [2 0] [1]
p(#ckgt) = [0 0] x1 + [0]
[0 2] [1]
p(#compare) = [0]
[2]
p(#eq) = [0]
[0]
p(#equal) = [0]
[0]
p(#false) = [0]
[0]
p(#greater) = [0]
[0]
p(#neg) = [1 0] x1 + [0]
[0 0] [0]
p(#pos) = [0]
[0]
p(#s) = [1 1] x1 + [0]
[0 1] [1]
p(#true) = [1]
[1]
p(::) = [1 1] x2 + [0]
[0 1] [1]
p(append) = [0 0] x2 + [0]
[1 0] [0]
p(append#1) = [0 0] x1 + [0]
[2 2] [0]
p(insert) = [1 1] x2 + [0]
[0 1] [1]
p(insert#1) = [1 1] x2 + [0]
[0 1] [1]
p(insert#2) = [1 1] x1 + [0]
[0 1] [1]
p(insert#3) = [1 2] x3 + [1]
[0 1] [2]
p(insert#4) = [1 2] x3 + [1]
[0 1] [2]
p(nil) = [0]
[0]
p(quicksort) = [0 2] x1 + [0]
[2 2] [0]
p(quicksort#1) = [0]
[0]
p(quicksort#2) = [2]
[0]
p(sortAll) = [0 2] x1 + [2]
[1 0] [0]
p(sortAll#1) = [2]
[0]
p(sortAll#2) = [2]
[0]
p(split) = [2 0] x1 + [1]
[0 2] [0]
p(split#1) = [2 0] x1 + [1]
[0 2] [0]
p(splitAndSort) = [0]
[0]
p(splitqs) = [0]
[1]
p(splitqs#1) = [0 0] x1 + [2 0] x2 + [2]
[0 2] [2 1] [1]
p(splitqs#2) = [2 0] x1 + [0 2] x2 + [1]
[0 1] [1 1] [2]
p(splitqs#3) = [0 1] x3 + [1 1] x4 + [1]
[1 0] [1 1] [2]
p(tuple#2) = [0]
[0]
p(#and#) = [2 0] x1 + [2 2] x2 + [1]
[0 1] [2 0] [1]
p(#ckgt#) = [0 2] x1 + [1]
[0 0] [2]
p(#compare#) = [1]
[2]
p(#eq#) = [0 0] x1 + [0]
[0 2] [1]
p(#equal#) = [0 0] x2 + [0]
[0 2] [0]
p(#greater#) = [0 0] x1 + [1]
[1 0] [1]
p(append#) = [0]
[0]
p(append#1#) = [2 1] x1 + [0 1] x2 + [2]
[1 0] [0 0] [0]
p(insert#) = [0 1] x2 + [0]
[3 2] [1]
p(insert#1#) = [0 1] x2 + [0]
[0 0] [3]
p(insert#2#) = [0 1] x1 + [0 0] x2 + [0 0] x3 + [0 0] x4 + [0]
[0 2] [2 2] [3 0] [0 2] [2]
p(insert#3#) = [0 1] x3 + [0 0] x4 + [1]
[0 1] [2 0] [0]
p(insert#4#) = [0 1] x3 + [0 0] x6 + [0]
[3 2] [2 2] [2]
p(quicksort#) = [1 2] x1 + [0]
[1 0] [0]
p(quicksort#1#) = [0]
[0]
p(quicksort#2#) = [0 1] x2 + [0]
[1 0] [1]
p(sortAll#) = [0]
[2]
p(sortAll#1#) = [1]
[0]
p(sortAll#2#) = [0 2] x2 + [0]
[0 2] [0]
p(split#) = [3 3] x1 + [0]
[3 2] [1]
p(split#1#) = [3 2] x1 + [0]
[0 2] [0]
p(splitAndSort#) = [3 3] x1 + [1]
[3 3] [2]
p(splitqs#) = [0 0] x1 + [1]
[1 2] [2]
p(splitqs#1#) = [2]
[0]
p(splitqs#2#) = [1 2] x1 + [1]
[0 1] [0]
p(splitqs#3#) = [1 1] x1 + [2 1] x2 + [1]
[1 1] [2 1] [0]
p(c_1) = [1 1] x1 + [1]
[1 0] [2]
p(c_2) = [1 0] x1 + [0 0] x2 + [0]
[2 0] [2 0] [2]
p(c_3) = [0 0] x1 + [2]
[0 2] [2]
p(c_4) = [0]
[1]
p(c_5) = [1]
[0]
p(c_6) = [1 0] x1 + [0]
[0 0] [0]
p(c_7) = [1 0] x1 + [0]
[0 0] [0]
p(c_8) = [1 0] x1 + [0]
[1 1] [3]
p(c_9) = [0]
[0]
p(c_10) = [1 0] x1 + [0]
[0 0] [0]
p(c_11) = [1 0] x1 + [0]
[0 1] [1]
p(c_12) = [0]
[0]
p(c_13) = [2 0] x1 + [0]
[1 0] [0]
p(c_14) = [1 0] x1 + [0]
[1 1] [0]
p(c_15) = [1]
[0]
p(c_16) = [0 0] x1 + [1]
[0 2] [0]
p(c_17) = [1 2] x1 + [2]
[0 0] [0]
p(c_18) = [1]
[0]
p(c_19) = [0]
[0]
p(c_20) = [0]
[0]
p(c_21) = [1 0] x1 + [0]
[1 0] [1]
p(c_22) = [1 0] x1 + [1 0] x2 + [0]
[1 0] [0 0] [0]
p(c_23) = [0]
[2]
p(c_24) = [1 0] x1 + [1]
[0 1] [0]
p(c_25) = [2 2] x1 + [1]
[0 1] [1]
p(c_26) = [1 2] x1 + [0]
[0 1] [2]
p(c_27) = [1]
[0]
p(c_28) = [1 0] x1 + [0]
[1 0] [0]
p(c_29) = [2]
[0]
p(c_30) = [0]
[2]
p(c_31) = [0]
[0]
p(c_32) = [2]
[2]
p(c_33) = [2]
[2]
p(c_34) = [1]
[0]
p(c_35) = [0]
[1]
p(c_36) = [1]
[0]
p(c_37) = [0]
[0]
p(c_38) = [2]
[0]
p(c_39) = [0]
[0]
p(c_40) = [1]
[0]
p(c_41) = [1]
[0]
p(c_42) = [0]
[0]
p(c_43) = [1 0] x1 + [0]
[2 2] [0]
p(c_44) = [0]
[0]
p(c_45) = [2]
[0]
p(c_46) = [2]
[0]
p(c_47) = [2]
[0]
p(c_48) = [1]
[0]
p(c_49) = [0 2] x1 + [0]
[0 1] [0]
p(c_50) = [0]
[1]
p(c_51) = [2]
[0]
p(c_52) = [1]
[2]
p(c_53) = [0]
[0]
p(c_54) = [2]
[0]
p(c_55) = [0]
[1]
p(c_56) = [2]
[0]
p(c_57) = [0]
[1]
p(c_58) = [1]
[0]
p(c_59) = [0]
[1]
p(c_60) = [0]
[0]
p(c_61) = [0]
[0]
p(c_62) = [0 0] x1 + [0 1] x3 + [0]
[1 2] [1 2] [1]
p(c_63) = [0]
[1]
p(c_64) = [0]
[0]
p(c_65) = [1]
[2]
p(c_66) = [1]
[0]
p(c_67) = [0]
[1]
p(c_68) = [2]
[2]
p(c_69) = [0]
[0]
p(c_70) = [1 0] x3 + [0]
[0 1] [1]
Following rules are strictly oriented:
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) = [0 1] @ls + [0 0] @valX + [1]
[0 1] [2 0] [0]
> [0 1] @ls + [0]
[0 0] [0]
= c_10(insert#4#(#equal(@key1,@keyX),@key1,@ls,@valX,@vals1,@x))
Following rules are (at-least) weakly oriented:
insert#(@x,@l) = [0 1] @l + [0]
[3 2] [1]
>= [0 1] @l + [0]
[0 0] [0]
= c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) = [0 1] @l + [0]
[0 0] [3]
>= [0 1] @l + [0]
[0 0] [0]
= c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) = [0 0] @keyX + [0 1] @ls + [0 0] @valX + [0 0] @x + [1]
[2 2] [0 2] [3 0] [0 2] [4]
>= [0 1] @ls + [0 0] @valX + [1]
[0 2] [2 0] [4]
= c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) = [0 1] @ls + [0 0] @x + [0]
[3 2] [2 2] [2]
>= [0 1] @ls + [0]
[3 2] [2]
= c_11(insert#(@x,@ls))
split#(@l) = [3 3] @l + [0]
[3 2] [1]
>= [3 2] @l + [0]
[3 2] [1]
= c_21(split#1#(@l))
split#1#(::(@x,@xs)) = [3 5] @xs + [2]
[0 2] [2]
>= [3 5] @xs + [0]
[0 2] [0]
= c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) = [3 3] @l + [1]
[3 3] [2]
>= [3 3] @l + [1]
[3 2] [1]
= c_24(split#(@l))
insert(@x,@l) = [1 1] @l + [0]
[0 1] [1]
>= [1 1] @l + [0]
[0 1] [1]
= insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) = [1 1] @l + [0]
[0 1] [1]
>= [1 1] @l + [0]
[0 1] [1]
= insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) = [1 2] @ls + [1]
[0 1] [2]
>= [1 2] @ls + [1]
[0 1] [2]
= insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) = [0]
[1]
>= [0]
[1]
= ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) = [1 2] @ls + [1]
[0 1] [2]
>= [1 2] @ls + [1]
[0 1] [2]
= insert#4(#equal(@key1,@keyX),@key1,@ls,@valX,@vals1,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) = [1 2] @ls + [1]
[0 1] [2]
>= [1 2] @ls + [1]
[0 1] [2]
= ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) = [1 2] @ls + [1]
[0 1] [2]
>= [1 1] @ls + [0]
[0 1] [1]
= ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) = [2 0] @l + [1]
[0 2] [0]
>= [2 0] @l + [1]
[0 2] [0]
= split#1(@l)
split#1(::(@x,@xs)) = [2 2] @xs + [1]
[0 2] [2]
>= [2 2] @xs + [1]
[0 2] [1]
= insert(@x,split(@xs))
split#1(nil()) = [1]
[0]
>= [0]
[0]
= nil()
***** Step 8.b:4.a:4.b:1.a:2: Assumption WORST_CASE(?,O(1))
+ Considered Problem:
- Strict DPs:
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
- Weak DPs:
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(split#(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
+ Details:
()
***** Step 8.b:4.a:4.b:1.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
- Weak DPs:
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(split#(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}}
+ Details:
We first use the processor NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
1: insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
Consider the set of all dependency pairs
1: insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
2: insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
3: insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
4: insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
5: insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
6: split#(@l) -> c_21(split#1#(@l))
7: split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
8: splitAndSort#(@l) -> c_24(split#(@l))
Processor NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^2))
SPACE(?,?)on application of the dependency pairs
{1}
These cover all (indirect) predecessors of dependency pairs
{1,2,3,4,5,8}
their number of applications is equally bounded.
The dependency pairs are shifted into the weak component.
****** Step 8.b:4.a:4.b:1.b:1.a:1: NaturalMI WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
- Weak DPs:
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(split#(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
NaturalMI {miDimension = 2, miDegree = 2, 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_6) = {1},
uargs(c_7) = {1},
uargs(c_8) = {1},
uargs(c_10) = {1},
uargs(c_11) = {1},
uargs(c_21) = {1},
uargs(c_22) = {1,2},
uargs(c_24) = {1}
Following symbols are considered usable:
{insert,insert#1,insert#2,insert#3,insert#4,split,split#1,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#
,append#,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#
,sortAll#,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#,splitqs#3#}
TcT has computed the following interpretation:
p(#0) = [0]
[1]
p(#EQ) = [0]
[1]
p(#GT) = [0]
[0]
p(#LT) = [0]
[0]
p(#and) = [2]
[1]
p(#ckgt) = [1]
[0]
p(#compare) = [0 1] x2 + [1]
[0 2] [0]
p(#eq) = [0]
[0]
p(#equal) = [0]
[0]
p(#false) = [0]
[0]
p(#greater) = [0]
[2]
p(#neg) = [0]
[0]
p(#pos) = [0 2] x1 + [0]
[0 1] [1]
p(#s) = [1]
[1]
p(#true) = [0]
[0]
p(::) = [1 1] x2 + [0]
[0 1] [1]
p(append) = [1]
[1]
p(append#1) = [0 2] x1 + [0 0] x2 + [0]
[0 1] [1 2] [0]
p(insert) = [1 1] x2 + [0]
[0 1] [1]
p(insert#1) = [1 1] x2 + [0]
[0 1] [1]
p(insert#2) = [1 1] x1 + [0]
[0 1] [1]
p(insert#3) = [1 2] x3 + [1]
[0 1] [2]
p(insert#4) = [1 2] x3 + [1]
[0 1] [2]
p(nil) = [0]
[0]
p(quicksort) = [2]
[1]
p(quicksort#1) = [0]
[0]
p(quicksort#2) = [0 2] x1 + [2]
[0 1] [0]
p(sortAll) = [0 0] x1 + [0]
[0 2] [0]
p(sortAll#1) = [0]
[1]
p(sortAll#2) = [1 0] x1 + [0 0] x2 + [0]
[2 0] [0 2] [0]
p(split) = [1 0] x1 + [0]
[0 1] [0]
p(split#1) = [1 0] x1 + [0]
[0 1] [0]
p(splitAndSort) = [1]
[0]
p(splitqs) = [0 1] x1 + [2 0] x2 + [2]
[1 2] [0 0] [0]
p(splitqs#1) = [0]
[0]
p(splitqs#2) = [0 2] x2 + [0]
[0 0] [2]
p(splitqs#3) = [0 0] x1 + [0 0] x3 + [2 0] x4 + [2]
[0 1] [1 0] [0 0] [1]
p(tuple#2) = [0]
[0]
p(#and#) = [2 0] x1 + [0 1] x2 + [0]
[0 0] [1 1] [0]
p(#ckgt#) = [2]
[2]
p(#compare#) = [0 0] x2 + [1]
[1 0] [1]
p(#eq#) = [0 0] x1 + [2]
[2 2] [2]
p(#equal#) = [0 1] x1 + [0 0] x2 + [2]
[1 1] [1 0] [0]
p(#greater#) = [1]
[1]
p(append#) = [1]
[0]
p(append#1#) = [0]
[2]
p(insert#) = [0 0] x1 + [0 2] x2 + [1]
[1 0] [2 0] [0]
p(insert#1#) = [0 0] x1 + [0 2] x2 + [0 0] x3 + [0]
[0 2] [0 1] [1 2] [2]
p(insert#2#) = [0 2] x1 + [0 0] x2 + [0 0] x3 + [0 0] x4 + [0]
[0 2] [2 0] [0 2] [2 0] [0]
p(insert#3#) = [0 2] x3 + [0 0] x5 + [2]
[2 0] [0 2] [0]
p(insert#4#) = [0 2] x3 + [2]
[1 0] [0]
p(quicksort#) = [0]
[0]
p(quicksort#1#) = [0 0] x1 + [1]
[0 2] [2]
p(quicksort#2#) = [1 0] x2 + [0]
[0 0] [1]
p(sortAll#) = [0 0] x1 + [2]
[0 2] [2]
p(sortAll#1#) = [2]
[2]
p(sortAll#2#) = [0]
[0]
p(split#) = [2 1] x1 + [0]
[0 1] [0]
p(split#1#) = [2 1] x1 + [0]
[0 1] [1]
p(splitAndSort#) = [3 3] x1 + [1]
[0 1] [0]
p(splitqs#) = [0 0] x1 + [0 1] x2 + [1]
[0 1] [1 0] [0]
p(splitqs#1#) = [1 1] x2 + [1]
[1 2] [0]
p(splitqs#2#) = [0 0] x1 + [0 0] x3 + [0]
[0 2] [2 2] [2]
p(splitqs#3#) = [1 0] x1 + [1 1] x2 + [0]
[0 0] [0 1] [0]
p(c_1) = [0]
[0]
p(c_2) = [0 0] x1 + [0 0] x2 + [2]
[0 1] [0 2] [0]
p(c_3) = [0 2] x1 + [0]
[1 0] [1]
p(c_4) = [0]
[0]
p(c_5) = [2]
[0]
p(c_6) = [1 0] x1 + [0]
[0 0] [0]
p(c_7) = [1 0] x1 + [0]
[0 0] [2]
p(c_8) = [1 0] x1 + [0]
[1 0] [0]
p(c_9) = [2]
[2]
p(c_10) = [1 0] x1 + [0]
[0 2] [0]
p(c_11) = [1 0] x1 + [1]
[0 0] [0]
p(c_12) = [0]
[0]
p(c_13) = [2]
[1]
p(c_14) = [1 2] x1 + [1]
[1 0] [0]
p(c_15) = [1]
[2]
p(c_16) = [1]
[2]
p(c_17) = [0]
[1]
p(c_18) = [1]
[2]
p(c_19) = [1]
[0]
p(c_20) = [1]
[2]
p(c_21) = [1 0] x1 + [0]
[0 0] [0]
p(c_22) = [1 0] x1 + [1 0] x2 + [0]
[0 0] [0 0] [0]
p(c_23) = [0]
[0]
p(c_24) = [1 2] x1 + [1]
[0 0] [0]
p(c_25) = [0 0] x1 + [0]
[0 2] [1]
p(c_26) = [1 1] x1 + [0]
[2 1] [0]
p(c_27) = [0]
[0]
p(c_28) = [1 2] x1 + [0]
[0 1] [0]
p(c_29) = [0]
[0]
p(c_30) = [0]
[0]
p(c_31) = [1]
[0]
p(c_32) = [2]
[2]
p(c_33) = [0]
[2]
p(c_34) = [0]
[0]
p(c_35) = [0]
[0]
p(c_36) = [0]
[1]
p(c_37) = [0]
[1]
p(c_38) = [2]
[0]
p(c_39) = [2]
[0]
p(c_40) = [1]
[1]
p(c_41) = [0]
[1]
p(c_42) = [0]
[1]
p(c_43) = [0]
[0]
p(c_44) = [0]
[0]
p(c_45) = [1]
[0]
p(c_46) = [0]
[0]
p(c_47) = [0 0] x1 + [0]
[0 2] [0]
p(c_48) = [0]
[1]
p(c_49) = [0]
[0]
p(c_50) = [0]
[1]
p(c_51) = [0]
[0]
p(c_52) = [0]
[0]
p(c_53) = [2]
[0]
p(c_54) = [2]
[0]
p(c_55) = [0]
[0]
p(c_56) = [0]
[0]
p(c_57) = [0]
[1]
p(c_58) = [0]
[1]
p(c_59) = [0 0] x1 + [0]
[2 0] [1]
p(c_60) = [0]
[0]
p(c_61) = [0]
[0]
p(c_62) = [0 0] x1 + [2]
[2 1] [1]
p(c_63) = [2]
[2]
p(c_64) = [0]
[0]
p(c_65) = [0]
[0]
p(c_66) = [1]
[1]
p(c_67) = [0]
[0]
p(c_68) = [2]
[1]
p(c_69) = [0]
[1]
p(c_70) = [2]
[2]
Following rules are strictly oriented:
insert#(@x,@l) = [0 2] @l + [0 0] @x + [1]
[2 0] [1 0] [0]
> [0 2] @l + [0]
[0 0] [0]
= c_6(insert#1#(@x,@l,@x))
Following rules are (at-least) weakly oriented:
insert#1#(tuple#2(@valX,@keyX),@l,@x) = [0 2] @l + [0 0] @x + [0]
[0 1] [1 2] [2]
>= [0 2] @l + [0]
[0 0] [2]
= c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) = [0 0] @keyX + [0 2] @ls + [0 0] @valX + [0 0] @x + [2]
[2 0] [0 2] [0 2] [2 0] [2]
>= [0 2] @ls + [2]
[0 2] [2]
= c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) = [0 2] @ls + [0 0] @x + [2]
[2 0] [0 2] [0]
>= [0 2] @ls + [2]
[2 0] [0]
= c_10(insert#4#(#equal(@key1,@keyX),@key1,@ls,@valX,@vals1,@x))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) = [0 2] @ls + [2]
[1 0] [0]
>= [0 2] @ls + [2]
[0 0] [0]
= c_11(insert#(@x,@ls))
split#(@l) = [2 1] @l + [0]
[0 1] [0]
>= [2 1] @l + [0]
[0 0] [0]
= c_21(split#1#(@l))
split#1#(::(@x,@xs)) = [2 3] @xs + [1]
[0 1] [2]
>= [2 3] @xs + [1]
[0 0] [0]
= c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) = [3 3] @l + [1]
[0 1] [0]
>= [2 3] @l + [1]
[0 0] [0]
= c_24(split#(@l))
insert(@x,@l) = [1 1] @l + [0]
[0 1] [1]
>= [1 1] @l + [0]
[0 1] [1]
= insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) = [1 1] @l + [0]
[0 1] [1]
>= [1 1] @l + [0]
[0 1] [1]
= insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) = [1 2] @ls + [1]
[0 1] [2]
>= [1 2] @ls + [1]
[0 1] [2]
= insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) = [0]
[1]
>= [0]
[1]
= ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) = [1 2] @ls + [1]
[0 1] [2]
>= [1 2] @ls + [1]
[0 1] [2]
= insert#4(#equal(@key1,@keyX),@key1,@ls,@valX,@vals1,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) = [1 2] @ls + [1]
[0 1] [2]
>= [1 2] @ls + [1]
[0 1] [2]
= ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) = [1 2] @ls + [1]
[0 1] [2]
>= [1 1] @ls + [0]
[0 1] [1]
= ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) = [1 0] @l + [0]
[0 1] [0]
>= [1 0] @l + [0]
[0 1] [0]
= split#1(@l)
split#1(::(@x,@xs)) = [1 1] @xs + [0]
[0 1] [1]
>= [1 1] @xs + [0]
[0 1] [1]
= insert(@x,split(@xs))
split#1(nil()) = [0]
[0]
>= [0]
[0]
= nil()
****** Step 8.b:4.a:4.b:1.b:1.a:2: Assumption WORST_CASE(?,O(1))
+ Considered Problem:
- Strict DPs:
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
- Weak DPs:
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(split#(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
+ Details:
()
****** Step 8.b:4.a:4.b:1.b:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1))
+ Considered Problem:
- Weak DPs:
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(split#(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:W:insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
-->_1 insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x)):2
2:W:insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
-->_1 insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x)):3
3:W:insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
-->_1 insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)):4
4:W:insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
-->_1 insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls)):5
5:W:insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
-->_1 insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x)):1
6:W:split#(@l) -> c_21(split#1#(@l))
-->_1 split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs)):7
7:W:split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
-->_2 split#(@l) -> c_21(split#1#(@l)):6
-->_1 insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x)):1
8:W:splitAndSort#(@l) -> c_24(split#(@l))
-->_1 split#(@l) -> c_21(split#1#(@l)):6
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
8: splitAndSort#(@l) -> c_24(split#(@l))
6: split#(@l) -> c_21(split#1#(@l))
7: split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
1: insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
5: insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
4: insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
3: insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
2: insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
****** Step 8.b:4.a:4.b:1.b:1.b:2: EmptyProcessor WORST_CASE(?,O(1))
+ Considered Problem:
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
EmptyProcessor
+ Details:
The problem is already closed. The intended complexity is O(1).
*** Step 8.b:4.b:1: RemoveWeakSuffixes WORST_CASE(?,O(n^5))
+ Considered Problem:
- Strict DPs:
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
- Weak DPs:
insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/2
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:S:quicksort#(@l) -> c_13(quicksort#1#(@l))
-->_1 quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs)):2
2:S:quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
-->_2 splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot)):10
-->_1 quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys)):3
3:S:quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
-->_2 quicksort#(@l) -> c_13(quicksort#1#(@l)):1
-->_1 quicksort#(@l) -> c_13(quicksort#1#(@l)):1
4:S:sortAll#(@l) -> c_17(sortAll#1#(@l))
-->_1 sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs)):5
5:S:sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
-->_1 sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs)):6
6:S:sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
-->_2 sortAll#(@l) -> c_17(sortAll#1#(@l)):4
-->_1 quicksort#(@l) -> c_13(quicksort#1#(@l)):1
7:S:split#(@l) -> c_21(split#1#(@l))
-->_1 split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs)):8
8:S:split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
-->_1 insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x)):12
-->_2 split#(@l) -> c_21(split#1#(@l)):7
9:S:splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
-->_2 split#(@l) -> c_21(split#1#(@l)):7
-->_1 sortAll#(@l) -> c_17(sortAll#1#(@l)):4
10:S:splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
-->_1 splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs)):11
11:S:splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
-->_1 splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot)):10
12:W:insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
-->_1 insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x)):13
13:W:insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
-->_1 insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x)):14
14:W:insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
-->_1 insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)):15
15:W:insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
-->_1 insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls)):16
16:W:insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
-->_1 insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x)):12
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
12: insert#(@x,@l) -> c_6(insert#1#(@x,@l,@x))
16: insert#4#(#false(),@key1,@ls,@valX,@vals1,@x) -> c_11(insert#(@x,@ls))
15: insert#3#(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> c_10(insert#4#(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x))
14: insert#2#(::(@l1,@ls),@keyX,@valX,@x) -> c_8(insert#3#(@l1,@keyX,@ls,@valX,@x))
13: insert#1#(tuple#2(@valX,@keyX),@l,@x) -> c_7(insert#2#(@l,@keyX,@valX,@x))
*** Step 8.b:4.b:2: SimplifyRHS WORST_CASE(?,O(n^5))
+ Considered Problem:
- Strict DPs:
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/2,c_23/0,c_24/2
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
SimplifyRHS
+ Details:
Consider the dependency graph
1:S:quicksort#(@l) -> c_13(quicksort#1#(@l))
-->_1 quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs)):2
2:S:quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
-->_2 splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot)):10
-->_1 quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys)):3
3:S:quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
-->_2 quicksort#(@l) -> c_13(quicksort#1#(@l)):1
-->_1 quicksort#(@l) -> c_13(quicksort#1#(@l)):1
4:S:sortAll#(@l) -> c_17(sortAll#1#(@l))
-->_1 sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs)):5
5:S:sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
-->_1 sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs)):6
6:S:sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
-->_2 sortAll#(@l) -> c_17(sortAll#1#(@l)):4
-->_1 quicksort#(@l) -> c_13(quicksort#1#(@l)):1
7:S:split#(@l) -> c_21(split#1#(@l))
-->_1 split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs)):8
8:S:split#1#(::(@x,@xs)) -> c_22(insert#(@x,split(@xs)),split#(@xs))
-->_2 split#(@l) -> c_21(split#1#(@l)):7
9:S:splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
-->_2 split#(@l) -> c_21(split#1#(@l)):7
-->_1 sortAll#(@l) -> c_17(sortAll#1#(@l)):4
10:S:splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
-->_1 splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs)):11
11:S:splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
-->_1 splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot)):10
Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified:
split#1#(::(@x,@xs)) -> c_22(split#(@xs))
*** Step 8.b:4.b:3: Decompose WORST_CASE(?,O(n^5))
+ Considered Problem:
- Strict DPs:
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0,c_24/2
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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:
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
- Weak DPs:
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2
,#eq#/2,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5
,insert#4#/6,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1
,split#1#/1,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0
,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1
,c_9/0,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0
,c_24/2,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0
,c_39/0,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0
,c_54/0,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0
,c_69/0,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
Problem (S)
- Strict DPs:
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
- Weak DPs:
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2
,#eq#/2,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5
,insert#4#/6,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1
,split#1#/1,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0
,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1
,c_9/0,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0
,c_24/2,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0
,c_39/0,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0
,c_54/0,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0
,c_69/0,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
**** Step 8.b:4.b:3.a:1: RemoveWeakSuffixes WORST_CASE(?,O(n^5))
+ Considered Problem:
- Strict DPs:
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
- Weak DPs:
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0,c_24/2
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:S:quicksort#(@l) -> c_13(quicksort#1#(@l))
-->_1 quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs)):2
2:S:quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
-->_2 splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot)):10
-->_1 quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys)):3
3:S:quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
-->_2 quicksort#(@l) -> c_13(quicksort#1#(@l)):1
-->_1 quicksort#(@l) -> c_13(quicksort#1#(@l)):1
4:W:sortAll#(@l) -> c_17(sortAll#1#(@l))
-->_1 sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs)):5
5:W:sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
-->_1 sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs)):6
6:W:sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
-->_1 quicksort#(@l) -> c_13(quicksort#1#(@l)):1
-->_2 sortAll#(@l) -> c_17(sortAll#1#(@l)):4
7:W:split#(@l) -> c_21(split#1#(@l))
-->_1 split#1#(::(@x,@xs)) -> c_22(split#(@xs)):8
8:W:split#1#(::(@x,@xs)) -> c_22(split#(@xs))
-->_1 split#(@l) -> c_21(split#1#(@l)):7
9:W:splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
-->_1 sortAll#(@l) -> c_17(sortAll#1#(@l)):4
-->_2 split#(@l) -> c_21(split#1#(@l)):7
10:S:splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
-->_1 splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs)):11
11:S:splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
-->_1 splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot)):10
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
7: split#(@l) -> c_21(split#1#(@l))
8: split#1#(::(@x,@xs)) -> c_22(split#(@xs))
**** Step 8.b:4.b:3.a:2: SimplifyRHS WORST_CASE(?,O(n^5))
+ Considered Problem:
- Strict DPs:
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
- Weak DPs:
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0,c_24/2
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
SimplifyRHS
+ Details:
Consider the dependency graph
1:S:quicksort#(@l) -> c_13(quicksort#1#(@l))
-->_1 quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs)):2
2:S:quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
-->_2 splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot)):10
-->_1 quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys)):3
3:S:quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
-->_2 quicksort#(@l) -> c_13(quicksort#1#(@l)):1
-->_1 quicksort#(@l) -> c_13(quicksort#1#(@l)):1
4:W:sortAll#(@l) -> c_17(sortAll#1#(@l))
-->_1 sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs)):5
5:W:sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
-->_1 sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs)):6
6:W:sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
-->_1 quicksort#(@l) -> c_13(quicksort#1#(@l)):1
-->_2 sortAll#(@l) -> c_17(sortAll#1#(@l)):4
9:W:splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
-->_1 sortAll#(@l) -> c_17(sortAll#1#(@l)):4
10:S:splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
-->_1 splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs)):11
11:S:splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
-->_1 splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot)):10
Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified:
splitAndSort#(@l) -> c_24(sortAll#(split(@l)))
**** Step 8.b:4.b:3.a:3: DecomposeDG WORST_CASE(?,O(n^5))
+ Considered Problem:
- Strict DPs:
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
- Weak DPs:
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)))
and a lower component
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
Further, following extension rules are added to the lower component.
sortAll#(@l) -> sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
splitAndSort#(@l) -> sortAll#(split(@l))
***** Step 8.b:4.b:3.a:3.a:1: PredecessorEstimationCP WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
- Weak DPs:
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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: sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
Consider the set of all dependency pairs
1: sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
2: sortAll#(@l) -> c_17(sortAll#1#(@l))
3: sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
4: splitAndSort#(@l) -> c_24(sortAll#(split(@l)))
Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1))
SPACE(?,?)on application of the dependency pairs
{1}
These cover all (indirect) predecessors of dependency pairs
{1,2,3,4}
their number of applications is equally bounded.
The dependency pairs are shifted into the weak component.
****** Step 8.b:4.b:3.a:3.a:1.a:1: NaturalMI WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
- Weak DPs:
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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_17) = {1},
uargs(c_18) = {1},
uargs(c_20) = {2},
uargs(c_24) = {1}
Following symbols are considered usable:
{insert,insert#1,insert#2,insert#3,insert#4,split,split#1,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#
,append#,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#
,sortAll#,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#,splitqs#3#}
TcT has computed the following interpretation:
p(#0) = [0]
p(#EQ) = [0]
p(#GT) = [0]
p(#LT) = [0]
p(#and) = [1]
p(#ckgt) = [4]
p(#compare) = [2] x1 + [2] x2 + [5]
p(#eq) = [4] x2 + [0]
p(#equal) = [0]
p(#false) = [0]
p(#greater) = [2] x1 + [1] x2 + [0]
p(#neg) = [1] x1 + [0]
p(#pos) = [1] x1 + [2]
p(#s) = [0]
p(#true) = [0]
p(::) = [1] x2 + [1]
p(append) = [0]
p(append#1) = [2] x2 + [0]
p(insert) = [1] x2 + [1]
p(insert#1) = [1] x2 + [1]
p(insert#2) = [1] x1 + [1]
p(insert#3) = [1] x3 + [2]
p(insert#4) = [1] x3 + [2]
p(nil) = [0]
p(quicksort) = [0]
p(quicksort#1) = [0]
p(quicksort#2) = [0]
p(sortAll) = [0]
p(sortAll#1) = [0]
p(sortAll#2) = [0]
p(split) = [2] x1 + [0]
p(split#1) = [2] x1 + [0]
p(splitAndSort) = [0]
p(splitqs) = [1]
p(splitqs#1) = [0]
p(splitqs#2) = [0]
p(splitqs#3) = [2] x1 + [0]
p(tuple#2) = [1] x2 + [2]
p(#and#) = [0]
p(#ckgt#) = [0]
p(#compare#) = [0]
p(#eq#) = [0]
p(#equal#) = [1] x1 + [0]
p(#greater#) = [2] x1 + [1] x2 + [0]
p(append#) = [1] x2 + [4]
p(append#1#) = [1] x2 + [0]
p(insert#) = [1] x1 + [1] x2 + [0]
p(insert#1#) = [2] x1 + [2]
p(insert#2#) = [2] x1 + [1] x2 + [1] x4 + [0]
p(insert#3#) = [1] x1 + [4] x2 + [0]
p(insert#4#) = [4] x3 + [1] x5 + [2] x6 + [2]
p(quicksort#) = [0]
p(quicksort#1#) = [2]
p(quicksort#2#) = [1] x1 + [1] x2 + [0]
p(sortAll#) = [1] x1 + [0]
p(sortAll#1#) = [1] x1 + [0]
p(sortAll#2#) = [1] x2 + [1]
p(split#) = [1]
p(split#1#) = [4] x1 + [2]
p(splitAndSort#) = [4] x1 + [4]
p(splitqs#) = [2] x1 + [1] x2 + [0]
p(splitqs#1#) = [2] x1 + [2] x2 + [0]
p(splitqs#2#) = [1] x2 + [2]
p(splitqs#3#) = [1] x1 + [1] x3 + [0]
p(c_1) = [4] x1 + [1]
p(c_2) = [0]
p(c_3) = [1] x1 + [1]
p(c_4) = [1]
p(c_5) = [0]
p(c_6) = [1] x1 + [1]
p(c_7) = [1]
p(c_8) = [2] x1 + [2]
p(c_9) = [2]
p(c_10) = [4] x1 + [1]
p(c_11) = [1] x1 + [1]
p(c_12) = [0]
p(c_13) = [0]
p(c_14) = [1] x2 + [0]
p(c_15) = [1]
p(c_16) = [1] x1 + [4] x2 + [0]
p(c_17) = [1] x1 + [0]
p(c_18) = [1] x1 + [0]
p(c_19) = [0]
p(c_20) = [1] x2 + [0]
p(c_21) = [4] x1 + [0]
p(c_22) = [1] x1 + [0]
p(c_23) = [1]
p(c_24) = [2] x1 + [3]
p(c_25) = [4]
p(c_26) = [1] x1 + [1]
p(c_27) = [1]
p(c_28) = [1] x1 + [1]
p(c_29) = [1]
p(c_30) = [0]
p(c_31) = [1]
p(c_32) = [2]
p(c_33) = [1]
p(c_34) = [0]
p(c_35) = [1]
p(c_36) = [2]
p(c_37) = [1]
p(c_38) = [4]
p(c_39) = [0]
p(c_40) = [0]
p(c_41) = [0]
p(c_42) = [1]
p(c_43) = [1] x1 + [2]
p(c_44) = [0]
p(c_45) = [4]
p(c_46) = [1]
p(c_47) = [2] x1 + [1]
p(c_48) = [0]
p(c_49) = [1] x1 + [1]
p(c_50) = [0]
p(c_51) = [2]
p(c_52) = [0]
p(c_53) = [1]
p(c_54) = [4]
p(c_55) = [4] x1 + [0]
p(c_56) = [0]
p(c_57) = [0]
p(c_58) = [2]
p(c_59) = [1]
p(c_60) = [1]
p(c_61) = [4]
p(c_62) = [1]
p(c_63) = [2]
p(c_64) = [0]
p(c_65) = [1]
p(c_66) = [0]
p(c_67) = [4]
p(c_68) = [2]
p(c_69) = [1]
p(c_70) = [0]
Following rules are strictly oriented:
sortAll#2#(tuple#2(@vals,@key),@xs) = [1] @xs + [1]
> [1] @xs + [0]
= c_20(quicksort#(@vals),sortAll#(@xs))
Following rules are (at-least) weakly oriented:
sortAll#(@l) = [1] @l + [0]
>= [1] @l + [0]
= c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) = [1] @xs + [1]
>= [1] @xs + [1]
= c_18(sortAll#2#(@x,@xs))
splitAndSort#(@l) = [4] @l + [4]
>= [4] @l + [3]
= c_24(sortAll#(split(@l)))
insert(@x,@l) = [1] @l + [1]
>= [1] @l + [1]
= insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) = [1] @l + [1]
>= [1] @l + [1]
= insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) = [1] @ls + [2]
>= [1] @ls + [2]
= insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) = [1]
>= [1]
= ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) = [1] @ls + [2]
>= [1] @ls + [2]
= insert#4(#equal(@key1,@keyX),@key1,@ls,@valX,@vals1,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) = [1] @ls + [2]
>= [1] @ls + [2]
= ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) = [1] @ls + [2]
>= [1] @ls + [1]
= ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) = [2] @l + [0]
>= [2] @l + [0]
= split#1(@l)
split#1(::(@x,@xs)) = [2] @xs + [2]
>= [2] @xs + [1]
= insert(@x,split(@xs))
split#1(nil()) = [0]
>= [0]
= nil()
****** Step 8.b:4.b:3.a:3.a:1.a:2: Assumption WORST_CASE(?,O(1))
+ Considered Problem:
- Weak DPs:
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
+ Details:
()
****** Step 8.b:4.b:3.a:3.a:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1))
+ Considered Problem:
- Weak DPs:
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:W:sortAll#(@l) -> c_17(sortAll#1#(@l))
-->_1 sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs)):2
2:W:sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
-->_1 sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs)):3
3:W:sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
-->_2 sortAll#(@l) -> c_17(sortAll#1#(@l)):1
4:W:splitAndSort#(@l) -> c_24(sortAll#(split(@l)))
-->_1 sortAll#(@l) -> c_17(sortAll#1#(@l)):1
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
4: splitAndSort#(@l) -> c_24(sortAll#(split(@l)))
1: sortAll#(@l) -> c_17(sortAll#1#(@l))
3: sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
2: sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
****** Step 8.b:4.b:3.a:3.a:1.b:2: EmptyProcessor WORST_CASE(?,O(1))
+ Considered Problem:
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
EmptyProcessor
+ Details:
The problem is already closed. The intended complexity is O(1).
***** Step 8.b:4.b:3.a:3.b:1: DecomposeDG WORST_CASE(?,O(n^4))
+ Considered Problem:
- Strict DPs:
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
- Weak DPs:
sortAll#(@l) -> sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
splitAndSort#(@l) -> sortAll#(split(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
sortAll#(@l) -> sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
splitAndSort#(@l) -> sortAll#(split(@l))
and a lower component
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
Further, following extension rules are added to the lower component.
quicksort#(@l) -> quicksort#1#(@l)
quicksort#1#(::(@z,@zs)) -> quicksort#2#(splitqs(@z,@zs),@z)
quicksort#1#(::(@z,@zs)) -> splitqs#(@z,@zs)
quicksort#2#(tuple#2(@xs,@ys),@z) -> quicksort#(@xs)
quicksort#2#(tuple#2(@xs,@ys),@z) -> quicksort#(@ys)
sortAll#(@l) -> sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
splitAndSort#(@l) -> sortAll#(split(@l))
****** Step 8.b:4.b:3.a:3.b:1.a:1: PredecessorEstimationCP WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
- Weak DPs:
sortAll#(@l) -> sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
splitAndSort#(@l) -> sortAll#(split(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}}
+ Details:
We first use the processor NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
3: quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
Consider the set of all dependency pairs
1: quicksort#(@l) -> c_13(quicksort#1#(@l))
2: quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
3: quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
4: sortAll#(@l) -> sortAll#1#(@l)
5: sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
6: sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
7: sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
8: splitAndSort#(@l) -> sortAll#(split(@l))
Processor NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^2))
SPACE(?,?)on application of the dependency pairs
{3}
These cover all (indirect) predecessors of dependency pairs
{3,8}
their number of applications is equally bounded.
The dependency pairs are shifted into the weak component.
******* Step 8.b:4.b:3.a:3.b:1.a:1.a:1: NaturalMI WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
- Weak DPs:
sortAll#(@l) -> sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
splitAndSort#(@l) -> sortAll#(split(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
NaturalMI {miDimension = 3, miDegree = 2, 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 2 non-zero interpretation-entries in the diagonal of the component-wise maxima):
The following argument positions are considered usable:
uargs(c_13) = {1},
uargs(c_14) = {1},
uargs(c_16) = {1,2}
Following symbols are considered usable:
{#and,#eq,#equal,insert,insert#1,insert#2,insert#3,insert#4,split,split#1,splitqs,splitqs#1,splitqs#2
,splitqs#3,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#,append#1#,insert#,insert#1#,insert#2#
,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#,sortAll#1#,sortAll#2#,split#,split#1#
,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#,splitqs#3#}
TcT has computed the following interpretation:
p(#0) = [0]
[0]
[0]
p(#EQ) = [0]
[1]
[0]
p(#GT) = [0]
[0]
[0]
p(#LT) = [0]
[0]
[0]
p(#and) = [0]
[0]
[0]
p(#ckgt) = [0 0 1] [0]
[0 0 0] x1 + [1]
[1 1 0] [1]
p(#compare) = [0 0 0] [1]
[0 1 0] x1 + [1]
[1 0 0] [0]
p(#eq) = [0]
[0]
[0]
p(#equal) = [0 0 0] [0 1 0] [0]
[0 0 0] x1 + [0 0 0] x2 + [0]
[1 0 0] [0 1 0] [1]
p(#false) = [0]
[0]
[0]
p(#greater) = [0]
[0]
[0]
p(#neg) = [0]
[0]
[0]
p(#pos) = [0 0 0] [0]
[0 0 1] x1 + [0]
[0 0 0] [0]
p(#s) = [0 1 0] [0]
[0 0 0] x1 + [0]
[0 0 0] [0]
p(#true) = [0]
[0]
[0]
p(::) = [1 0 0] [1 0 0] [0]
[0 0 0] x1 + [0 1 1] x2 + [0]
[0 0 0] [0 0 0] [1]
p(append) = [0]
[0]
[0]
p(append#1) = [0]
[0]
[0]
p(insert) = [0 0 0] [1 0 0] [1]
[1 0 0] x1 + [0 1 1] x2 + [0]
[0 0 0] [0 0 0] [1]
p(insert#1) = [1 0 0] [0 0 0] [1]
[0 1 1] x2 + [1 0 0] x3 + [0]
[0 0 0] [0 0 0] [1]
p(insert#2) = [1 0 0] [0 0 0] [1]
[0 1 1] x1 + [1 0 0] x4 + [0]
[0 0 0] [0 0 0] [1]
p(insert#3) = [1 0 0] [1 0 0] [0 0 0] [1]
[0 0 0] x1 + [0 1 1] x3 + [1 0 0] x5 + [1]
[0 0 0] [0 0 0] [0 0 0] [1]
p(insert#4) = [1 0 0] [0 1 1] [0 0 0] [1]
[0 1 1] x3 + [0 0 0] x5 + [1 0 0] x6 + [1]
[0 0 0] [0 0 0] [0 0 0] [1]
p(nil) = [0]
[0]
[0]
p(quicksort) = [0]
[0]
[0]
p(quicksort#1) = [0]
[0]
[0]
p(quicksort#2) = [0]
[0]
[0]
p(sortAll) = [0]
[0]
[0]
p(sortAll#1) = [0]
[0]
[0]
p(sortAll#2) = [0]
[0]
[0]
p(split) = [0 1 1] [0]
[1 1 0] x1 + [1]
[0 0 1] [0]
p(split#1) = [0 1 1] [0]
[1 1 0] x1 + [1]
[0 0 1] [0]
p(splitAndSort) = [0]
[0]
[0]
p(splitqs) = [0 1 1] [0 1 0] [1]
[0 0 0] x1 + [0 1 1] x2 + [0]
[0 1 1] [0 0 0] [0]
p(splitqs#1) = [0 1 0] [0 1 0] [1]
[0 1 1] x1 + [0 0 0] x2 + [0]
[0 0 0] [0 0 0] [0]
p(splitqs#2) = [0 1 0] [1]
[0 1 0] x1 + [1]
[0 0 0] [0]
p(splitqs#3) = [0 1 1] [0 1 0] [1]
[0 1 1] x2 + [0 1 1] x3 + [1]
[0 0 0] [0 0 0] [0]
p(tuple#2) = [0 1 1] [0 0 0] [0]
[0 1 1] x1 + [0 1 1] x2 + [0]
[0 0 0] [0 0 0] [0]
p(#and#) = [0]
[0]
[0]
p(#ckgt#) = [0]
[0]
[0]
p(#compare#) = [0]
[0]
[0]
p(#eq#) = [0]
[0]
[0]
p(#equal#) = [0]
[0]
[0]
p(#greater#) = [0]
[0]
[0]
p(append#) = [0]
[0]
[0]
p(append#1#) = [0]
[0]
[0]
p(insert#) = [0]
[0]
[0]
p(insert#1#) = [0]
[0]
[0]
p(insert#2#) = [0]
[0]
[0]
p(insert#3#) = [0]
[0]
[0]
p(insert#4#) = [0]
[0]
[0]
p(quicksort#) = [0 1 1] [0]
[0 0 0] x1 + [0]
[0 0 0] [0]
p(quicksort#1#) = [0 1 1] [0]
[1 1 1] x1 + [1]
[1 1 1] [1]
p(quicksort#2#) = [0 1 0] [0 0 0] [1]
[0 1 1] x1 + [1 0 1] x2 + [1]
[0 1 0] [0 0 0] [1]
p(sortAll#) = [1 0 0] [1]
[0 0 0] x1 + [0]
[0 0 0] [0]
p(sortAll#1#) = [1 0 0] [1]
[0 0 0] x1 + [0]
[0 0 0] [0]
p(sortAll#2#) = [1 0 0] [1 0 0] [1]
[0 0 0] x1 + [0 0 0] x2 + [0]
[0 0 0] [0 0 0] [0]
p(split#) = [0]
[0]
[0]
p(split#1#) = [0]
[0]
[0]
p(splitAndSort#) = [1 1 1] [1]
[1 0 1] x1 + [0]
[0 0 0] [0]
p(splitqs#) = [0 0 0] [0 0 0] [1]
[0 0 0] x1 + [1 0 0] x2 + [0]
[1 0 0] [0 0 0] [0]
p(splitqs#1#) = [0]
[0]
[0]
p(splitqs#2#) = [0]
[0]
[0]
p(splitqs#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) = [0]
[0]
[0]
p(c_10) = [0]
[0]
[0]
p(c_11) = [0]
[0]
[0]
p(c_12) = [0]
[0]
[0]
p(c_13) = [1 0 0] [0]
[0 0 0] x1 + [0]
[0 0 0] [0]
p(c_14) = [1 0 0] [0 0 0] [0]
[1 0 0] x1 + [0 1 0] x2 + [0]
[0 0 1] [1 1 1] [0]
p(c_15) = [0]
[0]
[0]
p(c_16) = [1 0 0] [1 0 0] [0]
[1 0 0] x1 + [0 0 0] x2 + [0]
[0 0 0] [1 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]
Following rules are strictly oriented:
quicksort#2#(tuple#2(@xs,@ys),@z) = [0 1 1] [0 1 1] [0 0 0] [1]
[0 1 1] @xs + [0 1 1] @ys + [1 0 1] @z + [1]
[0 1 1] [0 1 1] [0 0 0] [1]
> [0 1 1] [0 1 1] [0]
[0 1 1] @xs + [0 0 0] @ys + [0]
[0 0 0] [0 1 1] [0]
= c_16(quicksort#(@xs),quicksort#(@ys))
Following rules are (at-least) weakly oriented:
quicksort#(@l) = [0 1 1] [0]
[0 0 0] @l + [0]
[0 0 0] [0]
>= [0 1 1] [0]
[0 0 0] @l + [0]
[0 0 0] [0]
= c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) = [0 0 0] [0 1 1] [1]
[1 0 0] @z + [1 1 1] @zs + [2]
[1 0 0] [1 1 1] [2]
>= [0 0 0] [0 1 1] [1]
[0 0 0] @z + [1 1 1] @zs + [1]
[1 0 0] [1 1 1] [2]
= c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
sortAll#(@l) = [1 0 0] [1]
[0 0 0] @l + [0]
[0 0 0] [0]
>= [1 0 0] [1]
[0 0 0] @l + [0]
[0 0 0] [0]
= sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) = [1 0 0] [1 0 0] [1]
[0 0 0] @x + [0 0 0] @xs + [0]
[0 0 0] [0 0 0] [0]
>= [1 0 0] [1 0 0] [1]
[0 0 0] @x + [0 0 0] @xs + [0]
[0 0 0] [0 0 0] [0]
= sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) = [0 1 1] [1 0 0] [1]
[0 0 0] @vals + [0 0 0] @xs + [0]
[0 0 0] [0 0 0] [0]
>= [0 1 1] [0]
[0 0 0] @vals + [0]
[0 0 0] [0]
= quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) = [0 1 1] [1 0 0] [1]
[0 0 0] @vals + [0 0 0] @xs + [0]
[0 0 0] [0 0 0] [0]
>= [1 0 0] [1]
[0 0 0] @xs + [0]
[0 0 0] [0]
= sortAll#(@xs)
splitAndSort#(@l) = [1 1 1] [1]
[1 0 1] @l + [0]
[0 0 0] [0]
>= [0 1 1] [1]
[0 0 0] @l + [0]
[0 0 0] [0]
= sortAll#(split(@l))
#and(#false(),#false()) = [0]
[0]
[0]
>= [0]
[0]
[0]
= #false()
#and(#false(),#true()) = [0]
[0]
[0]
>= [0]
[0]
[0]
= #false()
#and(#true(),#false()) = [0]
[0]
[0]
>= [0]
[0]
[0]
= #false()
#and(#true(),#true()) = [0]
[0]
[0]
>= [0]
[0]
[0]
= #true()
#eq(#0(),#0()) = [0]
[0]
[0]
>= [0]
[0]
[0]
= #true()
#eq(#0(),#neg(@y)) = [0]
[0]
[0]
>= [0]
[0]
[0]
= #false()
#eq(#0(),#pos(@y)) = [0]
[0]
[0]
>= [0]
[0]
[0]
= #false()
#eq(#0(),#s(@y)) = [0]
[0]
[0]
>= [0]
[0]
[0]
= #false()
#eq(#neg(@x),#0()) = [0]
[0]
[0]
>= [0]
[0]
[0]
= #false()
#eq(#neg(@x),#neg(@y)) = [0]
[0]
[0]
>= [0]
[0]
[0]
= #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) = [0]
[0]
[0]
>= [0]
[0]
[0]
= #false()
#eq(#pos(@x),#0()) = [0]
[0]
[0]
>= [0]
[0]
[0]
= #false()
#eq(#pos(@x),#neg(@y)) = [0]
[0]
[0]
>= [0]
[0]
[0]
= #false()
#eq(#pos(@x),#pos(@y)) = [0]
[0]
[0]
>= [0]
[0]
[0]
= #eq(@x,@y)
#eq(#s(@x),#0()) = [0]
[0]
[0]
>= [0]
[0]
[0]
= #false()
#eq(#s(@x),#s(@y)) = [0]
[0]
[0]
>= [0]
[0]
[0]
= #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) = [0]
[0]
[0]
>= [0]
[0]
[0]
= #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) = [0]
[0]
[0]
>= [0]
[0]
[0]
= #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) = [0]
[0]
[0]
>= [0]
[0]
[0]
= #false()
#eq(nil(),::(@y_1,@y_2)) = [0]
[0]
[0]
>= [0]
[0]
[0]
= #false()
#eq(nil(),nil()) = [0]
[0]
[0]
>= [0]
[0]
[0]
= #true()
#eq(nil(),tuple#2(@y_1,@y_2)) = [0]
[0]
[0]
>= [0]
[0]
[0]
= #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) = [0]
[0]
[0]
>= [0]
[0]
[0]
= #false()
#eq(tuple#2(@x_1,@x_2),nil()) = [0]
[0]
[0]
>= [0]
[0]
[0]
= #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) = [0]
[0]
[0]
>= [0]
[0]
[0]
= #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) = [0 0 0] [0 1 0] [0]
[0 0 0] @x + [0 0 0] @y + [0]
[1 0 0] [0 1 0] [1]
>= [0]
[0]
[0]
= #eq(@x,@y)
insert(@x,@l) = [1 0 0] [0 0 0] [1]
[0 1 1] @l + [1 0 0] @x + [0]
[0 0 0] [0 0 0] [1]
>= [1 0 0] [0 0 0] [1]
[0 1 1] @l + [1 0 0] @x + [0]
[0 0 0] [0 0 0] [1]
= insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) = [1 0 0] [0 0 0] [1]
[0 1 1] @l + [1 0 0] @x + [0]
[0 0 0] [0 0 0] [1]
>= [1 0 0] [0 0 0] [1]
[0 1 1] @l + [1 0 0] @x + [0]
[0 0 0] [0 0 0] [1]
= insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) = [1 0 0] [1 0 0] [0 0 0] [1]
[0 0 0] @l1 + [0 1 1] @ls + [1 0 0] @x + [1]
[0 0 0] [0 0 0] [0 0 0] [1]
>= [1 0 0] [1 0 0] [0 0 0] [1]
[0 0 0] @l1 + [0 1 1] @ls + [1 0 0] @x + [1]
[0 0 0] [0 0 0] [0 0 0] [1]
= insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) = [0 0 0] [1]
[1 0 0] @x + [0]
[0 0 0] [1]
>= [1]
[0]
[1]
= ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) = [1 0 0] [0 1 1] [0 0 0] [1]
[0 1 1] @ls + [0 0 0] @vals1 + [1 0 0] @x + [1]
[0 0 0] [0 0 0] [0 0 0] [1]
>= [1 0 0] [0 1 1] [0 0 0] [1]
[0 1 1] @ls + [0 0 0] @vals1 + [1 0 0] @x + [1]
[0 0 0] [0 0 0] [0 0 0] [1]
= insert#4(#equal(@key1,@keyX),@key1,@ls,@valX,@vals1,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) = [1 0 0] [0 1 1] [0 0 0] [1]
[0 1 1] @ls + [0 0 0] @vals1 + [1 0 0] @x + [1]
[0 0 0] [0 0 0] [0 0 0] [1]
>= [1 0 0] [0 1 1] [0 0 0] [1]
[0 1 1] @ls + [0 0 0] @vals1 + [1 0 0] @x + [1]
[0 0 0] [0 0 0] [0 0 0] [1]
= ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) = [1 0 0] [0 1 1] [0 0 0] [1]
[0 1 1] @ls + [0 0 0] @vals1 + [1 0 0] @x + [1]
[0 0 0] [0 0 0] [0 0 0] [1]
>= [1 0 0] [0 1 1] [1]
[0 1 1] @ls + [0 0 0] @vals1 + [0]
[0 0 0] [0 0 0] [1]
= ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) = [0 1 1] [0]
[1 1 0] @l + [1]
[0 0 1] [0]
>= [0 1 1] [0]
[1 1 0] @l + [1]
[0 0 1] [0]
= split#1(@l)
split#1(::(@x,@xs)) = [0 0 0] [0 1 1] [1]
[1 0 0] @x + [1 1 1] @xs + [1]
[0 0 0] [0 0 0] [1]
>= [0 0 0] [0 1 1] [1]
[1 0 0] @x + [1 1 1] @xs + [1]
[0 0 0] [0 0 0] [1]
= insert(@x,split(@xs))
split#1(nil()) = [0]
[1]
[0]
>= [0]
[0]
[0]
= nil()
splitqs(@pivot,@l) = [0 1 0] [0 1 1] [1]
[0 1 1] @l + [0 0 0] @pivot + [0]
[0 0 0] [0 1 1] [0]
>= [0 1 0] [0 1 0] [1]
[0 1 1] @l + [0 0 0] @pivot + [0]
[0 0 0] [0 0 0] [0]
= splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) = [0 1 0] [0 1 1] [1]
[0 0 0] @pivot + [0 1 1] @xs + [1]
[0 0 0] [0 0 0] [0]
>= [0 1 1] [1]
[0 1 1] @xs + [1]
[0 0 0] [0]
= splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) = [0 1 0] [1]
[0 0 0] @pivot + [0]
[0 0 0] [0]
>= [0]
[0]
[0]
= tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) = [0 1 1] [0 1 1] [1]
[0 1 1] @ls + [0 1 1] @rs + [1]
[0 0 0] [0 0 0] [0]
>= [0 1 1] [0 1 0] [1]
[0 1 1] @ls + [0 1 1] @rs + [1]
[0 0 0] [0 0 0] [0]
= splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) = [0 1 1] [0 1 0] [1]
[0 1 1] @ls + [0 1 1] @rs + [1]
[0 0 0] [0 0 0] [0]
>= [0 1 1] [0 0 0] [1]
[0 1 1] @ls + [0 1 1] @rs + [1]
[0 0 0] [0 0 0] [0]
= tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) = [0 1 1] [0 1 0] [1]
[0 1 1] @ls + [0 1 1] @rs + [1]
[0 0 0] [0 0 0] [0]
>= [0 1 1] [0 0 0] [0]
[0 1 1] @ls + [0 1 1] @rs + [1]
[0 0 0] [0 0 0] [0]
= tuple#2(@ls,::(@x,@rs))
******* Step 8.b:4.b:3.a:3.b:1.a:1.a:2: Assumption WORST_CASE(?,O(1))
+ Considered Problem:
- Strict DPs:
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
- Weak DPs:
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
sortAll#(@l) -> sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
splitAndSort#(@l) -> sortAll#(split(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
+ Details:
()
******* Step 8.b:4.b:3.a:3.b:1.a:1.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
- Weak DPs:
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
sortAll#(@l) -> sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
splitAndSort#(@l) -> sortAll#(split(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}}
+ Details:
We first use the processor NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
2: quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
Consider the set of all dependency pairs
1: quicksort#(@l) -> c_13(quicksort#1#(@l))
2: quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
3: quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
4: sortAll#(@l) -> sortAll#1#(@l)
5: sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
6: sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
7: sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
8: splitAndSort#(@l) -> sortAll#(split(@l))
Processor NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^2))
SPACE(?,?)on application of the dependency pairs
{2}
These cover all (indirect) predecessors of dependency pairs
{2,3,8}
their number of applications is equally bounded.
The dependency pairs are shifted into the weak component.
******** Step 8.b:4.b:3.a:3.b:1.a:1.b:1.a:1: NaturalMI WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
- Weak DPs:
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
sortAll#(@l) -> sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
splitAndSort#(@l) -> sortAll#(split(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
NaturalMI {miDimension = 3, miDegree = 2, 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 2 non-zero interpretation-entries in the diagonal of the component-wise maxima):
The following argument positions are considered usable:
uargs(c_13) = {1},
uargs(c_14) = {1},
uargs(c_16) = {1,2}
Following symbols are considered usable:
{insert,insert#1,insert#2,insert#3,insert#4,split,split#1,splitqs,splitqs#1,splitqs#2,splitqs#3,#and#
,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#
,quicksort#,quicksort#1#,quicksort#2#,sortAll#,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#
,splitqs#1#,splitqs#2#,splitqs#3#}
TcT has computed the following interpretation:
p(#0) = [0]
[0]
[0]
p(#EQ) = [0]
[0]
[0]
p(#GT) = [0]
[0]
[0]
p(#LT) = [0]
[0]
[0]
p(#and) = [0 0 0] [1 1 0] [0]
[0 0 0] x1 + [0 0 0] x2 + [0]
[0 1 0] [1 1 0] [0]
p(#ckgt) = [0 0 1] [0]
[0 0 1] x1 + [1]
[0 0 1] [1]
p(#compare) = [0 0 0] [0]
[0 0 0] x1 + [0]
[0 1 0] [1]
p(#eq) = [1]
[1]
[0]
p(#equal) = [0]
[0]
[0]
p(#false) = [0]
[0]
[0]
p(#greater) = [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 1 0] [1 0 0] [0]
[0 0 0] x1 + [0 1 1] x2 + [0]
[0 0 0] [0 0 0] [1]
p(append) = [0]
[0]
[0]
p(append#1) = [0]
[0]
[0]
p(insert) = [1 0 0] [1]
[0 1 1] x2 + [0]
[0 0 0] [1]
p(insert#1) = [1 0 0] [1]
[0 1 1] x2 + [0]
[0 0 0] [1]
p(insert#2) = [1 0 0] [1]
[0 1 1] x1 + [0]
[0 0 0] [1]
p(insert#3) = [0 1 0] [1 0 0] [1]
[0 0 0] x1 + [0 1 1] x3 + [1]
[0 0 0] [0 0 0] [1]
p(insert#4) = [1 0 0] [0 1 1] [1]
[0 1 1] x3 + [0 0 0] x5 + [1]
[0 0 0] [0 0 0] [1]
p(nil) = [0]
[0]
[0]
p(quicksort) = [0]
[0]
[0]
p(quicksort#1) = [0]
[0]
[0]
p(quicksort#2) = [0]
[0]
[0]
p(sortAll) = [0]
[0]
[0]
p(sortAll#1) = [0]
[0]
[0]
p(sortAll#2) = [0]
[0]
[0]
p(split) = [0 1 1] [1]
[0 1 1] x1 + [0]
[0 0 0] [1]
p(split#1) = [0 1 1] [1]
[0 1 1] x1 + [0]
[0 0 0] [1]
p(splitAndSort) = [0]
[0]
[0]
p(splitqs) = [0 0 0] [0 1 1] [0]
[0 1 0] x1 + [1 1 1] x2 + [1]
[0 1 1] [0 0 0] [0]
p(splitqs#1) = [0 1 1] [0 0 0] [0]
[0 1 0] x1 + [0 0 0] x2 + [1]
[0 0 0] [0 1 1] [0]
p(splitqs#2) = [1 0 0] [1]
[1 0 0] x1 + [1]
[0 0 0] [0]
p(splitqs#3) = [0 1 1] [0 1 1] [1]
[0 1 1] x2 + [0 0 1] x3 + [1]
[0 0 0] [0 0 0] [0]
p(tuple#2) = [0 1 1] [0 1 1] [0]
[0 1 1] x1 + [0 0 0] x2 + [0]
[0 0 0] [0 0 0] [0]
p(#and#) = [0]
[0]
[0]
p(#ckgt#) = [0]
[0]
[0]
p(#compare#) = [0]
[0]
[0]
p(#eq#) = [0]
[0]
[0]
p(#equal#) = [0]
[0]
[0]
p(#greater#) = [0]
[0]
[0]
p(append#) = [0]
[0]
[0]
p(append#1#) = [0]
[0]
[0]
p(insert#) = [0]
[0]
[0]
p(insert#1#) = [0]
[0]
[0]
p(insert#2#) = [0]
[0]
[0]
p(insert#3#) = [0]
[0]
[0]
p(insert#4#) = [0]
[0]
[0]
p(quicksort#) = [0 1 1] [0]
[0 0 0] x1 + [0]
[0 0 0] [1]
p(quicksort#1#) = [0 1 1] [0]
[0 0 0] x1 + [0]
[1 1 1] [0]
p(quicksort#2#) = [1 0 0] [0 0 0] [0]
[0 1 0] x1 + [0 0 0] x2 + [0]
[0 0 0] [1 0 0] [1]
p(sortAll#) = [1 0 0] [0]
[0 0 0] x1 + [0]
[0 1 0] [1]
p(sortAll#1#) = [1 0 0] [0]
[0 0 0] x1 + [0]
[0 1 0] [1]
p(sortAll#2#) = [0 1 0] [1 0 0] [0]
[0 0 0] x1 + [0 0 0] x2 + [0]
[0 0 0] [0 1 0] [1]
p(split#) = [0]
[0]
[0]
p(split#1#) = [0]
[0]
[0]
p(splitAndSort#) = [0 1 1] [1]
[0 0 0] x1 + [1]
[0 1 1] [1]
p(splitqs#) = [0]
[0]
[0]
p(splitqs#1#) = [0]
[0]
[0]
p(splitqs#2#) = [0]
[0]
[0]
p(splitqs#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) = [0]
[0]
[0]
p(c_10) = [0]
[0]
[0]
p(c_11) = [0]
[0]
[0]
p(c_12) = [0]
[0]
[0]
p(c_13) = [1 0 0] [0]
[0 0 0] x1 + [0]
[0 0 0] [1]
p(c_14) = [1 0 0] [0]
[0 0 0] x1 + [0]
[0 1 0] [0]
p(c_15) = [0]
[0]
[0]
p(c_16) = [1 0 0] [1 0 0] [0]
[0 0 0] x1 + [0 0 0] x2 + [0]
[0 0 0] [0 0 1] [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]
Following rules are strictly oriented:
quicksort#1#(::(@z,@zs)) = [0 0 0] [0 1 1] [1]
[0 0 0] @z + [0 0 0] @zs + [0]
[0 1 0] [1 1 1] [1]
> [0 0 0] [0 1 1] [0]
[0 0 0] @z + [0 0 0] @zs + [0]
[0 1 0] [1 1 1] [1]
= c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
Following rules are (at-least) weakly oriented:
quicksort#(@l) = [0 1 1] [0]
[0 0 0] @l + [0]
[0 0 0] [1]
>= [0 1 1] [0]
[0 0 0] @l + [0]
[0 0 0] [1]
= c_13(quicksort#1#(@l))
quicksort#2#(tuple#2(@xs,@ys),@z) = [0 1 1] [0 1 1] [0 0 0] [0]
[0 1 1] @xs + [0 0 0] @ys + [0 0 0] @z + [0]
[0 0 0] [0 0 0] [1 0 0] [1]
>= [0 1 1] [0 1 1] [0]
[0 0 0] @xs + [0 0 0] @ys + [0]
[0 0 0] [0 0 0] [1]
= c_16(quicksort#(@xs),quicksort#(@ys))
sortAll#(@l) = [1 0 0] [0]
[0 0 0] @l + [0]
[0 1 0] [1]
>= [1 0 0] [0]
[0 0 0] @l + [0]
[0 1 0] [1]
= sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) = [0 1 0] [1 0 0] [0]
[0 0 0] @x + [0 0 0] @xs + [0]
[0 0 0] [0 1 1] [1]
>= [0 1 0] [1 0 0] [0]
[0 0 0] @x + [0 0 0] @xs + [0]
[0 0 0] [0 1 0] [1]
= sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) = [0 1 1] [1 0 0] [0]
[0 0 0] @vals + [0 0 0] @xs + [0]
[0 0 0] [0 1 0] [1]
>= [0 1 1] [0]
[0 0 0] @vals + [0]
[0 0 0] [1]
= quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) = [0 1 1] [1 0 0] [0]
[0 0 0] @vals + [0 0 0] @xs + [0]
[0 0 0] [0 1 0] [1]
>= [1 0 0] [0]
[0 0 0] @xs + [0]
[0 1 0] [1]
= sortAll#(@xs)
splitAndSort#(@l) = [0 1 1] [1]
[0 0 0] @l + [1]
[0 1 1] [1]
>= [0 1 1] [1]
[0 0 0] @l + [0]
[0 1 1] [1]
= sortAll#(split(@l))
insert(@x,@l) = [1 0 0] [1]
[0 1 1] @l + [0]
[0 0 0] [1]
>= [1 0 0] [1]
[0 1 1] @l + [0]
[0 0 0] [1]
= insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) = [1 0 0] [1]
[0 1 1] @l + [0]
[0 0 0] [1]
>= [1 0 0] [1]
[0 1 1] @l + [0]
[0 0 0] [1]
= insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) = [0 1 0] [1 0 0] [1]
[0 0 0] @l1 + [0 1 1] @ls + [1]
[0 0 0] [0 0 0] [1]
>= [0 1 0] [1 0 0] [1]
[0 0 0] @l1 + [0 1 1] @ls + [1]
[0 0 0] [0 0 0] [1]
= insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) = [1]
[0]
[1]
>= [1]
[0]
[1]
= ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) = [1 0 0] [0 1 1] [1]
[0 1 1] @ls + [0 0 0] @vals1 + [1]
[0 0 0] [0 0 0] [1]
>= [1 0 0] [0 1 1] [1]
[0 1 1] @ls + [0 0 0] @vals1 + [1]
[0 0 0] [0 0 0] [1]
= insert#4(#equal(@key1,@keyX),@key1,@ls,@valX,@vals1,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) = [1 0 0] [0 1 1] [1]
[0 1 1] @ls + [0 0 0] @vals1 + [1]
[0 0 0] [0 0 0] [1]
>= [1 0 0] [0 1 1] [1]
[0 1 1] @ls + [0 0 0] @vals1 + [1]
[0 0 0] [0 0 0] [1]
= ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) = [1 0 0] [0 1 1] [1]
[0 1 1] @ls + [0 0 0] @vals1 + [1]
[0 0 0] [0 0 0] [1]
>= [1 0 0] [0 1 1] [1]
[0 1 1] @ls + [0 0 0] @vals1 + [0]
[0 0 0] [0 0 0] [1]
= ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) = [0 1 1] [1]
[0 1 1] @l + [0]
[0 0 0] [1]
>= [0 1 1] [1]
[0 1 1] @l + [0]
[0 0 0] [1]
= split#1(@l)
split#1(::(@x,@xs)) = [0 1 1] [2]
[0 1 1] @xs + [1]
[0 0 0] [1]
>= [0 1 1] [2]
[0 1 1] @xs + [1]
[0 0 0] [1]
= insert(@x,split(@xs))
split#1(nil()) = [1]
[0]
[1]
>= [0]
[0]
[0]
= nil()
splitqs(@pivot,@l) = [0 1 1] [0 0 0] [0]
[1 1 1] @l + [0 1 0] @pivot + [1]
[0 0 0] [0 1 1] [0]
>= [0 1 1] [0 0 0] [0]
[0 1 0] @l + [0 0 0] @pivot + [1]
[0 0 0] [0 1 1] [0]
= splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) = [0 0 0] [0 1 1] [1]
[0 0 0] @pivot + [0 1 1] @xs + [1]
[0 1 1] [0 0 0] [0]
>= [0 1 1] [1]
[0 1 1] @xs + [1]
[0 0 0] [0]
= splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) = [0 0 0] [0]
[0 0 0] @pivot + [1]
[0 1 1] [0]
>= [0]
[0]
[0]
= tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) = [0 1 1] [0 1 1] [1]
[0 1 1] @ls + [0 1 1] @rs + [1]
[0 0 0] [0 0 0] [0]
>= [0 1 1] [0 1 1] [1]
[0 1 1] @ls + [0 0 1] @rs + [1]
[0 0 0] [0 0 0] [0]
= splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) = [0 1 1] [0 1 1] [1]
[0 1 1] @ls + [0 0 1] @rs + [1]
[0 0 0] [0 0 0] [0]
>= [0 1 1] [0 1 1] [1]
[0 1 1] @ls + [0 0 0] @rs + [1]
[0 0 0] [0 0 0] [0]
= tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) = [0 1 1] [0 1 1] [1]
[0 1 1] @ls + [0 0 1] @rs + [1]
[0 0 0] [0 0 0] [0]
>= [0 1 1] [0 1 1] [1]
[0 1 1] @ls + [0 0 0] @rs + [0]
[0 0 0] [0 0 0] [0]
= tuple#2(@ls,::(@x,@rs))
******** Step 8.b:4.b:3.a:3.b:1.a:1.b:1.a:2: Assumption WORST_CASE(?,O(1))
+ Considered Problem:
- Strict DPs:
quicksort#(@l) -> c_13(quicksort#1#(@l))
- Weak DPs:
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
sortAll#(@l) -> sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
splitAndSort#(@l) -> sortAll#(split(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
+ Details:
()
******** Step 8.b:4.b:3.a:3.b:1.a:1.b:1.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
quicksort#(@l) -> c_13(quicksort#1#(@l))
- Weak DPs:
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
sortAll#(@l) -> sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
splitAndSort#(@l) -> sortAll#(split(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}}
+ Details:
We first use the processor NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
1: quicksort#(@l) -> c_13(quicksort#1#(@l))
Consider the set of all dependency pairs
1: quicksort#(@l) -> c_13(quicksort#1#(@l))
2: quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
3: quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
4: sortAll#(@l) -> sortAll#1#(@l)
5: sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
6: sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
7: sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
8: splitAndSort#(@l) -> sortAll#(split(@l))
Processor NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^2))
SPACE(?,?)on application of the dependency pairs
{1}
These cover all (indirect) predecessors of dependency pairs
{1,2,3,8}
their number of applications is equally bounded.
The dependency pairs are shifted into the weak component.
********* Step 8.b:4.b:3.a:3.b:1.a:1.b:1.b:1.a:1: NaturalMI WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
quicksort#(@l) -> c_13(quicksort#1#(@l))
- Weak DPs:
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
sortAll#(@l) -> sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
splitAndSort#(@l) -> sortAll#(split(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
NaturalMI {miDimension = 2, miDegree = 2, 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_13) = {1},
uargs(c_14) = {1},
uargs(c_16) = {1,2}
Following symbols are considered usable:
{#ckgt,#greater,insert,insert#1,insert#2,insert#3,insert#4,split,split#1,splitqs,splitqs#1,splitqs#2
,splitqs#3,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#,append#1#,insert#,insert#1#,insert#2#
,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#,sortAll#1#,sortAll#2#,split#,split#1#
,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#,splitqs#3#}
TcT has computed the following interpretation:
p(#0) = [2]
[1]
p(#EQ) = [0]
[0]
p(#GT) = [0]
[0]
p(#LT) = [0]
[0]
p(#and) = [0 1] x1 + [1 1] x2 + [3]
[0 0] [0 0] [1]
p(#ckgt) = [0]
[2]
p(#compare) = [0 0] x1 + [0]
[2 0] [0]
p(#eq) = [0 3] x1 + [0]
[0 0] [0]
p(#equal) = [0]
[0]
p(#false) = [0]
[1]
p(#greater) = [2 0] x1 + [0]
[0 1] [2]
p(#neg) = [1]
[1]
p(#pos) = [0 1] x1 + [1]
[0 0] [0]
p(#s) = [1 1] x1 + [0]
[0 0] [0]
p(#true) = [0]
[2]
p(::) = [0 1] x1 + [1 0] x2 + [0]
[0 0] [0 1] [1]
p(append) = [0 0] x1 + [2 2] x2 + [0]
[0 1] [2 1] [0]
p(append#1) = [2]
[0]
p(insert) = [1 0] x2 + [1]
[0 1] [2]
p(insert#1) = [1 0] x2 + [1]
[0 1] [2]
p(insert#2) = [1 0] x1 + [1]
[0 1] [2]
p(insert#3) = [0 1] x1 + [1 0] x3 + [1]
[0 0] [0 1] [3]
p(insert#4) = [1 0] x3 + [0 1] x5 + [1]
[0 1] [0 0] [3]
p(nil) = [0]
[0]
p(quicksort) = [2 0] x1 + [0]
[0 0] [1]
p(quicksort#1) = [0]
[2]
p(quicksort#2) = [0 0] x2 + [0]
[0 1] [0]
p(sortAll) = [0 0] x1 + [0]
[2 1] [2]
p(sortAll#1) = [0]
[0]
p(sortAll#2) = [2 2] x1 + [2]
[0 0] [0]
p(split) = [0 1] x1 + [0]
[0 2] [0]
p(split#1) = [0 1] x1 + [0]
[0 2] [0]
p(splitAndSort) = [0]
[1]
p(splitqs) = [0 2] x2 + [1]
[2 2] [3]
p(splitqs#1) = [0 2] x1 + [1]
[2 2] [3]
p(splitqs#2) = [1 0] x1 + [0 0] x3 + [2]
[1 0] [0 2] [3]
p(splitqs#3) = [0 0] x1 + [0 2] x2 + [0 2] x3 + [3]
[0 2] [0 2] [0 1] [0]
p(tuple#2) = [0 2] x1 + [0 2] x2 + [1]
[0 1] [0 0] [0]
p(#and#) = [0 1] x1 + [1]
[0 1] [0]
p(#ckgt#) = [1 2] x1 + [2]
[1 1] [2]
p(#compare#) = [1 0] x2 + [0]
[0 0] [0]
p(#eq#) = [0 0] x2 + [0]
[0 1] [0]
p(#equal#) = [0 0] x1 + [0]
[1 0] [1]
p(#greater#) = [0 2] x1 + [0 2] x2 + [1]
[2 0] [0 1] [2]
p(append#) = [0 0] x1 + [0 0] x2 + [0]
[0 2] [0 1] [2]
p(append#1#) = [1]
[1]
p(insert#) = [0 0] x1 + [1 2] x2 + [0]
[2 0] [0 2] [0]
p(insert#1#) = [1 1] x1 + [1 0] x3 + [0]
[0 0] [2 2] [1]
p(insert#2#) = [2 0] x1 + [2 1] x2 + [1]
[1 0] [1 2] [2]
p(insert#3#) = [1 0] x2 + [0 0] x3 + [0 0] x4 + [2 2] x5 + [0]
[2 0] [0 2] [0 2] [0 0] [0]
p(insert#4#) = [0 0] x2 + [0 1] x3 + [0]
[1 0] [2 1] [0]
p(quicksort#) = [0 2] x1 + [1]
[0 3] [0]
p(quicksort#1#) = [0 2] x1 + [0]
[0 3] [0]
p(quicksort#2#) = [1 0] x1 + [0 0] x2 + [1]
[1 1] [2 2] [2]
p(sortAll#) = [2 0] x1 + [1]
[3 0] [0]
p(sortAll#1#) = [2 0] x1 + [1]
[3 0] [0]
p(sortAll#2#) = [0 2] x1 + [2 0] x2 + [1]
[0 3] [3 0] [0]
p(split#) = [0]
[1]
p(split#1#) = [1]
[0]
p(splitAndSort#) = [2 2] x1 + [1]
[2 3] [0]
p(splitqs#) = [0 1] x2 + [2]
[0 2] [0]
p(splitqs#1#) = [0 2] x1 + [0]
[1 2] [0]
p(splitqs#2#) = [2 0] x2 + [0]
[2 0] [0]
p(splitqs#3#) = [0]
[2]
p(c_1) = [0 0] x1 + [2]
[2 2] [1]
p(c_2) = [2 0] x1 + [0 2] x2 + [0]
[0 0] [0 0] [0]
p(c_3) = [1 0] x1 + [0]
[2 1] [0]
p(c_4) = [0]
[1]
p(c_5) = [2]
[0]
p(c_6) = [0]
[0]
p(c_7) = [1]
[0]
p(c_8) = [2]
[0]
p(c_9) = [0]
[0]
p(c_10) = [1 2] x1 + [1]
[2 0] [2]
p(c_11) = [1]
[0]
p(c_12) = [0]
[0]
p(c_13) = [1 0] x1 + [0]
[0 1] [0]
p(c_14) = [1 0] x1 + [0 0] x2 + [0]
[0 0] [1 1] [0]
p(c_15) = [2]
[1]
p(c_16) = [1 0] x1 + [1 0] x2 + [0]
[0 1] [0 0] [0]
p(c_17) = [0]
[2]
p(c_18) = [1 0] x1 + [0]
[1 0] [1]
p(c_19) = [2]
[0]
p(c_20) = [1]
[0]
p(c_21) = [1 1] x1 + [0]
[0 2] [0]
p(c_22) = [2]
[2]
p(c_23) = [0]
[1]
p(c_24) = [2]
[0]
p(c_25) = [0]
[0]
p(c_26) = [1 2] x1 + [0]
[1 0] [0]
p(c_27) = [0]
[0]
p(c_28) = [0 0] x1 + [0 0] x2 + [1]
[0 1] [2 0] [2]
p(c_29) = [2]
[0]
p(c_30) = [1]
[1]
p(c_31) = [0]
[1]
p(c_32) = [0]
[0]
p(c_33) = [2]
[2]
p(c_34) = [0]
[0]
p(c_35) = [0]
[0]
p(c_36) = [0]
[2]
p(c_37) = [0]
[0]
p(c_38) = [0]
[0]
p(c_39) = [1]
[2]
p(c_40) = [2]
[2]
p(c_41) = [0]
[0]
p(c_42) = [0]
[2]
p(c_43) = [0 0] x1 + [0]
[0 1] [0]
p(c_44) = [0]
[1]
p(c_45) = [1]
[0]
p(c_46) = [0]
[0]
p(c_47) = [0 0] x1 + [0]
[0 1] [1]
p(c_48) = [2]
[0]
p(c_49) = [0 0] x1 + [0]
[1 0] [1]
p(c_50) = [2]
[0]
p(c_51) = [0]
[0]
p(c_52) = [0]
[0]
p(c_53) = [1]
[0]
p(c_54) = [1]
[0]
p(c_55) = [0]
[0]
p(c_56) = [0]
[0]
p(c_57) = [0]
[0]
p(c_58) = [1]
[0]
p(c_59) = [2 0] x1 + [0]
[0 2] [1]
p(c_60) = [1]
[0]
p(c_61) = [0 2] x1 + [0]
[2 0] [0]
p(c_62) = [1 1] x1 + [2]
[1 0] [2]
p(c_63) = [1]
[0]
p(c_64) = [1]
[2]
p(c_65) = [1]
[0]
p(c_66) = [0]
[0]
p(c_67) = [0]
[0]
p(c_68) = [0]
[0]
p(c_69) = [2]
[2]
p(c_70) = [0 0] x1 + [1]
[1 0] [0]
Following rules are strictly oriented:
quicksort#(@l) = [0 2] @l + [1]
[0 3] [0]
> [0 2] @l + [0]
[0 3] [0]
= c_13(quicksort#1#(@l))
Following rules are (at-least) weakly oriented:
quicksort#1#(::(@z,@zs)) = [0 2] @zs + [2]
[0 3] [3]
>= [0 2] @zs + [2]
[0 3] [2]
= c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) = [0 2] @xs + [0 2] @ys + [0 0] @z + [2]
[0 3] [0 2] [2 2] [3]
>= [0 2] @xs + [0 2] @ys + [2]
[0 3] [0 0] [0]
= c_16(quicksort#(@xs),quicksort#(@ys))
sortAll#(@l) = [2 0] @l + [1]
[3 0] [0]
>= [2 0] @l + [1]
[3 0] [0]
= sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) = [0 2] @x + [2 0] @xs + [1]
[0 3] [3 0] [0]
>= [0 2] @x + [2 0] @xs + [1]
[0 3] [3 0] [0]
= sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) = [0 2] @vals + [2 0] @xs + [1]
[0 3] [3 0] [0]
>= [0 2] @vals + [1]
[0 3] [0]
= quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) = [0 2] @vals + [2 0] @xs + [1]
[0 3] [3 0] [0]
>= [2 0] @xs + [1]
[3 0] [0]
= sortAll#(@xs)
splitAndSort#(@l) = [2 2] @l + [1]
[2 3] [0]
>= [0 2] @l + [1]
[0 3] [0]
= sortAll#(split(@l))
#ckgt(#EQ()) = [0]
[2]
>= [0]
[1]
= #false()
#ckgt(#GT()) = [0]
[2]
>= [0]
[2]
= #true()
#ckgt(#LT()) = [0]
[2]
>= [0]
[1]
= #false()
#greater(@x,@y) = [2 0] @x + [0]
[0 1] [2]
>= [0]
[2]
= #ckgt(#compare(@x,@y))
insert(@x,@l) = [1 0] @l + [1]
[0 1] [2]
>= [1 0] @l + [1]
[0 1] [2]
= insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) = [1 0] @l + [1]
[0 1] [2]
>= [1 0] @l + [1]
[0 1] [2]
= insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) = [0 1] @l1 + [1 0] @ls + [1]
[0 0] [0 1] [3]
>= [0 1] @l1 + [1 0] @ls + [1]
[0 0] [0 1] [3]
= insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) = [1]
[2]
>= [1]
[1]
= ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) = [1 0] @ls + [0 1] @vals1 + [1]
[0 1] [0 0] [3]
>= [1 0] @ls + [0 1] @vals1 + [1]
[0 1] [0 0] [3]
= insert#4(#equal(@key1,@keyX),@key1,@ls,@valX,@vals1,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) = [1 0] @ls + [0 1] @vals1 + [1]
[0 1] [0 0] [3]
>= [1 0] @ls + [0 1] @vals1 + [1]
[0 1] [0 0] [3]
= ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) = [1 0] @ls + [0 1] @vals1 + [1]
[0 1] [0 0] [3]
>= [1 0] @ls + [0 1] @vals1 + [1]
[0 1] [0 0] [1]
= ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) = [0 1] @l + [0]
[0 2] [0]
>= [0 1] @l + [0]
[0 2] [0]
= split#1(@l)
split#1(::(@x,@xs)) = [0 1] @xs + [1]
[0 2] [2]
>= [0 1] @xs + [1]
[0 2] [2]
= insert(@x,split(@xs))
split#1(nil()) = [0]
[0]
>= [0]
[0]
= nil()
splitqs(@pivot,@l) = [0 2] @l + [1]
[2 2] [3]
>= [0 2] @l + [1]
[2 2] [3]
= splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) = [0 0] @x + [0 2] @xs + [3]
[0 2] [2 2] [5]
>= [0 0] @x + [0 2] @xs + [3]
[0 2] [0 2] [4]
= splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) = [1]
[3]
>= [1]
[0]
= tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) = [0 2] @ls + [0 2] @rs + [0 0] @x + [3]
[0 2] [0 2] [0 2] [4]
>= [0 2] @ls + [0 2] @rs + [0 0] @x + [3]
[0 2] [0 1] [0 2] [4]
= splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) = [0 2] @ls + [0 2] @rs + [3]
[0 2] [0 1] [2]
>= [0 2] @ls + [0 2] @rs + [3]
[0 1] [0 0] [1]
= tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) = [0 2] @ls + [0 2] @rs + [3]
[0 2] [0 1] [4]
>= [0 2] @ls + [0 2] @rs + [3]
[0 1] [0 0] [0]
= tuple#2(@ls,::(@x,@rs))
********* Step 8.b:4.b:3.a:3.b:1.a:1.b:1.b:1.a:2: Assumption WORST_CASE(?,O(1))
+ Considered Problem:
- Weak DPs:
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
sortAll#(@l) -> sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
splitAndSort#(@l) -> sortAll#(split(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
+ Details:
()
********* Step 8.b:4.b:3.a:3.b:1.a:1.b:1.b:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1))
+ Considered Problem:
- Weak DPs:
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
sortAll#(@l) -> sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
splitAndSort#(@l) -> sortAll#(split(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:W:quicksort#(@l) -> c_13(quicksort#1#(@l))
-->_1 quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs)):2
2:W:quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
-->_1 quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys)):3
3:W:quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
-->_2 quicksort#(@l) -> c_13(quicksort#1#(@l)):1
-->_1 quicksort#(@l) -> c_13(quicksort#1#(@l)):1
4:W:sortAll#(@l) -> sortAll#1#(@l)
-->_1 sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs):5
5:W:sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
-->_1 sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs):7
-->_1 sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals):6
6:W:sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
-->_1 quicksort#(@l) -> c_13(quicksort#1#(@l)):1
7:W:sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
-->_1 sortAll#(@l) -> sortAll#1#(@l):4
8:W:splitAndSort#(@l) -> sortAll#(split(@l))
-->_1 sortAll#(@l) -> sortAll#1#(@l):4
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
8: splitAndSort#(@l) -> sortAll#(split(@l))
4: sortAll#(@l) -> sortAll#1#(@l)
7: sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
5: sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
6: sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
1: quicksort#(@l) -> c_13(quicksort#1#(@l))
3: quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
2: quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
********* Step 8.b:4.b:3.a:3.b:1.a:1.b:1.b:1.b:2: EmptyProcessor WORST_CASE(?,O(1))
+ Considered Problem:
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
EmptyProcessor
+ Details:
The problem is already closed. The intended complexity is O(1).
****** Step 8.b:4.b:3.a:3.b:1.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
- Weak DPs:
quicksort#(@l) -> quicksort#1#(@l)
quicksort#1#(::(@z,@zs)) -> quicksort#2#(splitqs(@z,@zs),@z)
quicksort#1#(::(@z,@zs)) -> splitqs#(@z,@zs)
quicksort#2#(tuple#2(@xs,@ys),@z) -> quicksort#(@xs)
quicksort#2#(tuple#2(@xs,@ys),@z) -> quicksort#(@ys)
sortAll#(@l) -> sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
splitAndSort#(@l) -> sortAll#(split(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}}
+ Details:
We first use the processor NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
1: splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
Consider the set of all dependency pairs
1: splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
2: splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
3: quicksort#(@l) -> quicksort#1#(@l)
4: quicksort#1#(::(@z,@zs)) -> quicksort#2#(splitqs(@z,@zs),@z)
5: quicksort#1#(::(@z,@zs)) -> splitqs#(@z,@zs)
6: quicksort#2#(tuple#2(@xs,@ys),@z) -> quicksort#(@xs)
7: quicksort#2#(tuple#2(@xs,@ys),@z) -> quicksort#(@ys)
8: sortAll#(@l) -> sortAll#1#(@l)
9: sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
10: sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
11: sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
12: splitAndSort#(@l) -> sortAll#(split(@l))
Processor NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^2))
SPACE(?,?)on application of the dependency pairs
{1}
These cover all (indirect) predecessors of dependency pairs
{1,2,12}
their number of applications is equally bounded.
The dependency pairs are shifted into the weak component.
******* Step 8.b:4.b:3.a:3.b:1.b:1.a:1: NaturalMI WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
- Weak DPs:
quicksort#(@l) -> quicksort#1#(@l)
quicksort#1#(::(@z,@zs)) -> quicksort#2#(splitqs(@z,@zs),@z)
quicksort#1#(::(@z,@zs)) -> splitqs#(@z,@zs)
quicksort#2#(tuple#2(@xs,@ys),@z) -> quicksort#(@xs)
quicksort#2#(tuple#2(@xs,@ys),@z) -> quicksort#(@ys)
sortAll#(@l) -> sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
splitAndSort#(@l) -> sortAll#(split(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
NaturalMI {miDimension = 3, miDegree = 2, 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 2 non-zero interpretation-entries in the diagonal of the component-wise maxima):
The following argument positions are considered usable:
uargs(c_25) = {1},
uargs(c_26) = {1}
Following symbols are considered usable:
{insert,insert#1,insert#2,insert#3,insert#4,split,split#1,splitqs,splitqs#1,splitqs#2,splitqs#3,#and#
,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#
,quicksort#,quicksort#1#,quicksort#2#,sortAll#,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#
,splitqs#1#,splitqs#2#,splitqs#3#}
TcT has computed the following interpretation:
p(#0) = [0]
[1]
[1]
p(#EQ) = [0]
[0]
[0]
p(#GT) = [0]
[0]
[0]
p(#LT) = [0]
[1]
[0]
p(#and) = [0]
[0]
[1]
p(#ckgt) = [0 1 0] [0]
[0 0 0] x1 + [1]
[0 0 1] [1]
p(#compare) = [0 0 1] [1 0 0] [0]
[0 0 0] x1 + [0 0 0] x2 + [1]
[0 1 0] [0 0 0] [0]
p(#eq) = [0]
[0]
[0]
p(#equal) = [0]
[0]
[0]
p(#false) = [0]
[0]
[0]
p(#greater) = [0]
[0]
[0]
p(#neg) = [0 0 1] [1]
[0 0 0] x1 + [0]
[0 0 0] [1]
p(#pos) = [0 1 0] [0]
[0 0 0] x1 + [0]
[0 0 0] [0]
p(#s) = [0]
[0]
[0]
p(#true) = [0]
[0]
[0]
p(::) = [0 1 0] [1 0 0] [0]
[0 0 0] x1 + [0 1 1] x2 + [0]
[0 0 0] [0 0 0] [1]
p(append) = [0]
[0]
[0]
p(append#1) = [0]
[0]
[0]
p(insert) = [1 0 0] [1]
[0 1 1] x2 + [0]
[0 0 0] [1]
p(insert#1) = [1 0 0] [1]
[0 1 1] x2 + [0]
[0 0 0] [1]
p(insert#2) = [1 0 0] [1]
[0 1 1] x1 + [0]
[0 0 0] [1]
p(insert#3) = [0 1 0] [1 0 0] [1]
[0 0 0] x1 + [0 1 1] x3 + [1]
[0 0 0] [0 0 0] [1]
p(insert#4) = [1 0 0] [0 1 1] [1]
[0 1 1] x3 + [0 0 0] x5 + [1]
[0 0 0] [0 0 0] [1]
p(nil) = [0]
[0]
[0]
p(quicksort) = [0]
[0]
[0]
p(quicksort#1) = [0]
[0]
[0]
p(quicksort#2) = [0]
[0]
[0]
p(sortAll) = [0]
[0]
[0]
p(sortAll#1) = [0]
[0]
[0]
p(sortAll#2) = [0]
[0]
[0]
p(split) = [0 1 1] [0]
[0 1 1] x1 + [0]
[0 0 0] [1]
p(split#1) = [0 1 1] [0]
[0 1 1] x1 + [0]
[0 0 0] [1]
p(splitAndSort) = [0]
[0]
[0]
p(splitqs) = [0 0 0] [0 1 1] [0]
[1 0 1] x1 + [0 1 0] x2 + [1]
[0 0 0] [0 0 0] [1]
p(splitqs#1) = [0 1 1] [0]
[0 1 0] x1 + [1]
[0 0 0] [1]
p(splitqs#2) = [1 0 1] [0]
[1 0 0] x1 + [1]
[0 0 1] [0]
p(splitqs#3) = [0 1 1] [0 1 1] [1]
[0 1 1] x2 + [0 0 0] x3 + [1]
[0 0 0] [0 0 0] [1]
p(tuple#2) = [0 1 1] [0 1 1] [0]
[0 1 1] x1 + [0 0 0] x2 + [0]
[0 0 0] [0 0 0] [1]
p(#and#) = [0]
[0]
[0]
p(#ckgt#) = [0]
[0]
[0]
p(#compare#) = [0]
[0]
[0]
p(#eq#) = [0]
[0]
[0]
p(#equal#) = [0]
[0]
[0]
p(#greater#) = [0]
[0]
[0]
p(append#) = [0]
[0]
[0]
p(append#1#) = [0]
[0]
[0]
p(insert#) = [0]
[0]
[0]
p(insert#1#) = [0]
[0]
[0]
p(insert#2#) = [0]
[0]
[0]
p(insert#3#) = [0]
[0]
[0]
p(insert#4#) = [0]
[0]
[0]
p(quicksort#) = [0 1 0] [1]
[0 0 0] x1 + [0]
[0 0 0] [0]
p(quicksort#1#) = [0 1 0] [1]
[0 0 0] x1 + [0]
[0 0 0] [0]
p(quicksort#2#) = [1 0 0] [1]
[0 0 0] x1 + [0]
[0 0 0] [0]
p(sortAll#) = [1 0 0] [1]
[0 0 0] x1 + [0]
[0 0 0] [0]
p(sortAll#1#) = [1 0 0] [1]
[0 0 0] x1 + [0]
[0 0 0] [0]
p(sortAll#2#) = [0 1 0] [1 0 0] [1]
[0 0 0] x1 + [0 0 0] x2 + [0]
[0 0 0] [0 0 0] [0]
p(split#) = [0]
[0]
[0]
p(split#1#) = [0]
[0]
[0]
p(splitAndSort#) = [0 1 1] [1]
[0 1 1] x1 + [0]
[0 0 0] [0]
p(splitqs#) = [0 1 1] [1]
[0 0 0] x2 + [0]
[0 0 0] [0]
p(splitqs#1#) = [0 1 1] [0 0 0] [0]
[1 0 0] x1 + [0 0 1] x2 + [0]
[0 1 0] [1 1 0] [0]
p(splitqs#2#) = [0]
[0]
[0]
p(splitqs#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) = [0]
[0]
[0]
p(c_10) = [0]
[0]
[0]
p(c_11) = [0]
[0]
[0]
p(c_12) = [0]
[0]
[0]
p(c_13) = [0]
[0]
[0]
p(c_14) = [0]
[0]
[0]
p(c_15) = [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) = [1 0 0] [0]
[0 0 0] x1 + [0]
[0 0 0] [0]
p(c_26) = [1 0 0] [0]
[0 0 0] x1 + [0]
[0 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]
Following rules are strictly oriented:
splitqs#(@pivot,@l) = [0 1 1] [1]
[0 0 0] @l + [0]
[0 0 0] [0]
> [0 1 1] [0]
[0 0 0] @l + [0]
[0 0 0] [0]
= c_25(splitqs#1#(@l,@pivot))
Following rules are (at-least) weakly oriented:
quicksort#(@l) = [0 1 0] [1]
[0 0 0] @l + [0]
[0 0 0] [0]
>= [0 1 0] [1]
[0 0 0] @l + [0]
[0 0 0] [0]
= quicksort#1#(@l)
quicksort#1#(::(@z,@zs)) = [0 1 1] [1]
[0 0 0] @zs + [0]
[0 0 0] [0]
>= [0 1 1] [1]
[0 0 0] @zs + [0]
[0 0 0] [0]
= quicksort#2#(splitqs(@z,@zs),@z)
quicksort#1#(::(@z,@zs)) = [0 1 1] [1]
[0 0 0] @zs + [0]
[0 0 0] [0]
>= [0 1 1] [1]
[0 0 0] @zs + [0]
[0 0 0] [0]
= splitqs#(@z,@zs)
quicksort#2#(tuple#2(@xs,@ys),@z) = [0 1 1] [0 1 1] [1]
[0 0 0] @xs + [0 0 0] @ys + [0]
[0 0 0] [0 0 0] [0]
>= [0 1 0] [1]
[0 0 0] @xs + [0]
[0 0 0] [0]
= quicksort#(@xs)
quicksort#2#(tuple#2(@xs,@ys),@z) = [0 1 1] [0 1 1] [1]
[0 0 0] @xs + [0 0 0] @ys + [0]
[0 0 0] [0 0 0] [0]
>= [0 1 0] [1]
[0 0 0] @ys + [0]
[0 0 0] [0]
= quicksort#(@ys)
sortAll#(@l) = [1 0 0] [1]
[0 0 0] @l + [0]
[0 0 0] [0]
>= [1 0 0] [1]
[0 0 0] @l + [0]
[0 0 0] [0]
= sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) = [0 1 0] [1 0 0] [1]
[0 0 0] @x + [0 0 0] @xs + [0]
[0 0 0] [0 0 0] [0]
>= [0 1 0] [1 0 0] [1]
[0 0 0] @x + [0 0 0] @xs + [0]
[0 0 0] [0 0 0] [0]
= sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) = [0 1 1] [1 0 0] [1]
[0 0 0] @vals + [0 0 0] @xs + [0]
[0 0 0] [0 0 0] [0]
>= [0 1 0] [1]
[0 0 0] @vals + [0]
[0 0 0] [0]
= quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) = [0 1 1] [1 0 0] [1]
[0 0 0] @vals + [0 0 0] @xs + [0]
[0 0 0] [0 0 0] [0]
>= [1 0 0] [1]
[0 0 0] @xs + [0]
[0 0 0] [0]
= sortAll#(@xs)
splitAndSort#(@l) = [0 1 1] [1]
[0 1 1] @l + [0]
[0 0 0] [0]
>= [0 1 1] [1]
[0 0 0] @l + [0]
[0 0 0] [0]
= sortAll#(split(@l))
splitqs#1#(::(@x,@xs),@pivot) = [0 0 0] [0 0 0] [0 1 1] [1]
[0 0 1] @pivot + [0 1 0] @x + [1 0 0] @xs + [0]
[1 1 0] [0 0 0] [0 1 1] [0]
>= [0 1 1] [1]
[0 0 0] @xs + [0]
[0 0 0] [0]
= c_26(splitqs#(@pivot,@xs))
insert(@x,@l) = [1 0 0] [1]
[0 1 1] @l + [0]
[0 0 0] [1]
>= [1 0 0] [1]
[0 1 1] @l + [0]
[0 0 0] [1]
= insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) = [1 0 0] [1]
[0 1 1] @l + [0]
[0 0 0] [1]
>= [1 0 0] [1]
[0 1 1] @l + [0]
[0 0 0] [1]
= insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) = [0 1 0] [1 0 0] [1]
[0 0 0] @l1 + [0 1 1] @ls + [1]
[0 0 0] [0 0 0] [1]
>= [0 1 0] [1 0 0] [1]
[0 0 0] @l1 + [0 1 1] @ls + [1]
[0 0 0] [0 0 0] [1]
= insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) = [1]
[0]
[1]
>= [1]
[0]
[1]
= ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) = [1 0 0] [0 1 1] [1]
[0 1 1] @ls + [0 0 0] @vals1 + [1]
[0 0 0] [0 0 0] [1]
>= [1 0 0] [0 1 1] [1]
[0 1 1] @ls + [0 0 0] @vals1 + [1]
[0 0 0] [0 0 0] [1]
= insert#4(#equal(@key1,@keyX),@key1,@ls,@valX,@vals1,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) = [1 0 0] [0 1 1] [1]
[0 1 1] @ls + [0 0 0] @vals1 + [1]
[0 0 0] [0 0 0] [1]
>= [1 0 0] [0 1 1] [1]
[0 1 1] @ls + [0 0 0] @vals1 + [1]
[0 0 0] [0 0 0] [1]
= ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) = [1 0 0] [0 1 1] [1]
[0 1 1] @ls + [0 0 0] @vals1 + [1]
[0 0 0] [0 0 0] [1]
>= [1 0 0] [0 1 1] [1]
[0 1 1] @ls + [0 0 0] @vals1 + [0]
[0 0 0] [0 0 0] [1]
= ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) = [0 1 1] [0]
[0 1 1] @l + [0]
[0 0 0] [1]
>= [0 1 1] [0]
[0 1 1] @l + [0]
[0 0 0] [1]
= split#1(@l)
split#1(::(@x,@xs)) = [0 1 1] [1]
[0 1 1] @xs + [1]
[0 0 0] [1]
>= [0 1 1] [1]
[0 1 1] @xs + [1]
[0 0 0] [1]
= insert(@x,split(@xs))
split#1(nil()) = [0]
[0]
[1]
>= [0]
[0]
[0]
= nil()
splitqs(@pivot,@l) = [0 1 1] [0 0 0] [0]
[0 1 0] @l + [1 0 1] @pivot + [1]
[0 0 0] [0 0 0] [1]
>= [0 1 1] [0]
[0 1 0] @l + [1]
[0 0 0] [1]
= splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) = [0 1 1] [1]
[0 1 1] @xs + [1]
[0 0 0] [1]
>= [0 1 1] [1]
[0 1 1] @xs + [1]
[0 0 0] [1]
= splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) = [0]
[1]
[1]
>= [0]
[0]
[1]
= tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) = [0 1 1] [0 1 1] [1]
[0 1 1] @ls + [0 1 1] @rs + [1]
[0 0 0] [0 0 0] [1]
>= [0 1 1] [0 1 1] [1]
[0 1 1] @ls + [0 0 0] @rs + [1]
[0 0 0] [0 0 0] [1]
= splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) = [0 1 1] [0 1 1] [1]
[0 1 1] @ls + [0 0 0] @rs + [1]
[0 0 0] [0 0 0] [1]
>= [0 1 1] [0 1 1] [1]
[0 1 1] @ls + [0 0 0] @rs + [1]
[0 0 0] [0 0 0] [1]
= tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) = [0 1 1] [0 1 1] [1]
[0 1 1] @ls + [0 0 0] @rs + [1]
[0 0 0] [0 0 0] [1]
>= [0 1 1] [0 1 1] [1]
[0 1 1] @ls + [0 0 0] @rs + [0]
[0 0 0] [0 0 0] [1]
= tuple#2(@ls,::(@x,@rs))
******* Step 8.b:4.b:3.a:3.b:1.b:1.a:2: Assumption WORST_CASE(?,O(1))
+ Considered Problem:
- Strict DPs:
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
- Weak DPs:
quicksort#(@l) -> quicksort#1#(@l)
quicksort#1#(::(@z,@zs)) -> quicksort#2#(splitqs(@z,@zs),@z)
quicksort#1#(::(@z,@zs)) -> splitqs#(@z,@zs)
quicksort#2#(tuple#2(@xs,@ys),@z) -> quicksort#(@xs)
quicksort#2#(tuple#2(@xs,@ys),@z) -> quicksort#(@ys)
sortAll#(@l) -> sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
splitAndSort#(@l) -> sortAll#(split(@l))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
+ Details:
()
******* Step 8.b:4.b:3.a:3.b:1.b:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1))
+ Considered Problem:
- Weak DPs:
quicksort#(@l) -> quicksort#1#(@l)
quicksort#1#(::(@z,@zs)) -> quicksort#2#(splitqs(@z,@zs),@z)
quicksort#1#(::(@z,@zs)) -> splitqs#(@z,@zs)
quicksort#2#(tuple#2(@xs,@ys),@z) -> quicksort#(@xs)
quicksort#2#(tuple#2(@xs,@ys),@z) -> quicksort#(@ys)
sortAll#(@l) -> sortAll#1#(@l)
sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
splitAndSort#(@l) -> sortAll#(split(@l))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:W:quicksort#(@l) -> quicksort#1#(@l)
-->_1 quicksort#1#(::(@z,@zs)) -> splitqs#(@z,@zs):3
-->_1 quicksort#1#(::(@z,@zs)) -> quicksort#2#(splitqs(@z,@zs),@z):2
2:W:quicksort#1#(::(@z,@zs)) -> quicksort#2#(splitqs(@z,@zs),@z)
-->_1 quicksort#2#(tuple#2(@xs,@ys),@z) -> quicksort#(@ys):5
-->_1 quicksort#2#(tuple#2(@xs,@ys),@z) -> quicksort#(@xs):4
3:W:quicksort#1#(::(@z,@zs)) -> splitqs#(@z,@zs)
-->_1 splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot)):11
4:W:quicksort#2#(tuple#2(@xs,@ys),@z) -> quicksort#(@xs)
-->_1 quicksort#(@l) -> quicksort#1#(@l):1
5:W:quicksort#2#(tuple#2(@xs,@ys),@z) -> quicksort#(@ys)
-->_1 quicksort#(@l) -> quicksort#1#(@l):1
6:W:sortAll#(@l) -> sortAll#1#(@l)
-->_1 sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs):7
7:W:sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
-->_1 sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs):9
-->_1 sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals):8
8:W:sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
-->_1 quicksort#(@l) -> quicksort#1#(@l):1
9:W:sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
-->_1 sortAll#(@l) -> sortAll#1#(@l):6
10:W:splitAndSort#(@l) -> sortAll#(split(@l))
-->_1 sortAll#(@l) -> sortAll#1#(@l):6
11:W:splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
-->_1 splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs)):12
12:W:splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
-->_1 splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot)):11
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
10: splitAndSort#(@l) -> sortAll#(split(@l))
6: sortAll#(@l) -> sortAll#1#(@l)
9: sortAll#2#(tuple#2(@vals,@key),@xs) -> sortAll#(@xs)
7: sortAll#1#(::(@x,@xs)) -> sortAll#2#(@x,@xs)
8: sortAll#2#(tuple#2(@vals,@key),@xs) -> quicksort#(@vals)
1: quicksort#(@l) -> quicksort#1#(@l)
5: quicksort#2#(tuple#2(@xs,@ys),@z) -> quicksort#(@ys)
2: quicksort#1#(::(@z,@zs)) -> quicksort#2#(splitqs(@z,@zs),@z)
4: quicksort#2#(tuple#2(@xs,@ys),@z) -> quicksort#(@xs)
3: quicksort#1#(::(@z,@zs)) -> splitqs#(@z,@zs)
11: splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
12: splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
******* Step 8.b:4.b:3.a:3.b:1.b:1.b:2: EmptyProcessor WORST_CASE(?,O(1))
+ Considered Problem:
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
EmptyProcessor
+ Details:
The problem is already closed. The intended complexity is O(1).
**** Step 8.b:4.b:3.b:1: RemoveWeakSuffixes WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
- Weak DPs:
quicksort#(@l) -> c_13(quicksort#1#(@l))
quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0,c_24/2
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:S:sortAll#(@l) -> c_17(sortAll#1#(@l))
-->_1 sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs)):2
2:S:sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
-->_1 sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs)):3
3:S:sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
-->_1 quicksort#(@l) -> c_13(quicksort#1#(@l)):7
-->_2 sortAll#(@l) -> c_17(sortAll#1#(@l)):1
4:S:split#(@l) -> c_21(split#1#(@l))
-->_1 split#1#(::(@x,@xs)) -> c_22(split#(@xs)):5
5:S:split#1#(::(@x,@xs)) -> c_22(split#(@xs))
-->_1 split#(@l) -> c_21(split#1#(@l)):4
6:S:splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
-->_2 split#(@l) -> c_21(split#1#(@l)):4
-->_1 sortAll#(@l) -> c_17(sortAll#1#(@l)):1
7:W:quicksort#(@l) -> c_13(quicksort#1#(@l))
-->_1 quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs)):8
8:W:quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
-->_2 splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot)):10
-->_1 quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys)):9
9:W:quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
-->_2 quicksort#(@l) -> c_13(quicksort#1#(@l)):7
-->_1 quicksort#(@l) -> c_13(quicksort#1#(@l)):7
10:W:splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
-->_1 splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs)):11
11:W:splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
-->_1 splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot)):10
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
7: quicksort#(@l) -> c_13(quicksort#1#(@l))
9: quicksort#2#(tuple#2(@xs,@ys),@z) -> c_16(quicksort#(@xs),quicksort#(@ys))
8: quicksort#1#(::(@z,@zs)) -> c_14(quicksort#2#(splitqs(@z,@zs),@z),splitqs#(@z,@zs))
10: splitqs#(@pivot,@l) -> c_25(splitqs#1#(@l,@pivot))
11: splitqs#1#(::(@x,@xs),@pivot) -> c_26(splitqs#(@pivot,@xs))
**** Step 8.b:4.b:3.b:2: SimplifyRHS WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/2,c_21/1,c_22/1,c_23/0,c_24/2
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
SimplifyRHS
+ Details:
Consider the dependency graph
1:S:sortAll#(@l) -> c_17(sortAll#1#(@l))
-->_1 sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs)):2
2:S:sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
-->_1 sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs)):3
3:S:sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(quicksort#(@vals),sortAll#(@xs))
-->_2 sortAll#(@l) -> c_17(sortAll#1#(@l)):1
4:S:split#(@l) -> c_21(split#1#(@l))
-->_1 split#1#(::(@x,@xs)) -> c_22(split#(@xs)):5
5:S:split#1#(::(@x,@xs)) -> c_22(split#(@xs))
-->_1 split#(@l) -> c_21(split#1#(@l)):4
6:S:splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
-->_2 split#(@l) -> c_21(split#1#(@l)):4
-->_1 sortAll#(@l) -> c_17(sortAll#1#(@l)):1
Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified:
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(sortAll#(@xs))
**** Step 8.b:4.b:3.b:3: UsableRules WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#ckgt(#EQ()) -> #false()
#ckgt(#GT()) -> #true()
#ckgt(#LT()) -> #false()
#compare(#0(),#0()) -> #EQ()
#compare(#0(),#neg(@y)) -> #GT()
#compare(#0(),#pos(@y)) -> #LT()
#compare(#0(),#s(@y)) -> #LT()
#compare(#neg(@x),#0()) -> #LT()
#compare(#neg(@x),#neg(@y)) -> #compare(@y,@x)
#compare(#neg(@x),#pos(@y)) -> #LT()
#compare(#pos(@x),#0()) -> #GT()
#compare(#pos(@x),#neg(@y)) -> #GT()
#compare(#pos(@x),#pos(@y)) -> #compare(@x,@y)
#compare(#s(@x),#0()) -> #GT()
#compare(#s(@x),#s(@y)) -> #compare(@x,@y)
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
#greater(@x,@y) -> #ckgt(#compare(@x,@y))
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
splitqs(@pivot,@l) -> splitqs#1(@l,@pivot)
splitqs#1(::(@x,@xs),@pivot) -> splitqs#2(splitqs(@pivot,@xs),@pivot,@x)
splitqs#1(nil(),@pivot) -> tuple#2(nil(),nil())
splitqs#2(tuple#2(@ls,@rs),@pivot,@x) -> splitqs#3(#greater(@x,@pivot),@ls,@rs,@x)
splitqs#3(#false(),@ls,@rs,@x) -> tuple#2(::(@x,@ls),@rs)
splitqs#3(#true(),@ls,@rs,@x) -> tuple#2(@ls,::(@x,@rs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1,c_22/1,c_23/0,c_24/2
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
UsableRules
+ Details:
We replace rewrite rules by usable rules:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
**** Step 8.b:4.b:3.b:4: Decompose WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(sortAll#(@xs))
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1,c_22/1,c_23/0,c_24/2
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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:
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(sortAll#(@xs))
- Weak DPs:
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2
,#eq#/2,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5
,insert#4#/6,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1
,split#1#/1,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0
,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1
,c_9/0,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1,c_22/1,c_23/0
,c_24/2,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0
,c_39/0,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0
,c_54/0,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0
,c_69/0,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
Problem (S)
- Strict DPs:
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
- Weak DPs:
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(sortAll#(@xs))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2
,#eq#/2,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5
,insert#4#/6,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1
,split#1#/1,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0
,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1
,c_9/0,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1,c_22/1,c_23/0
,c_24/2,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0
,c_39/0,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0
,c_54/0,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0
,c_69/0,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
***** Step 8.b:4.b:3.b:4.a:1: RemoveWeakSuffixes WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(sortAll#(@xs))
- Weak DPs:
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1,c_22/1,c_23/0,c_24/2
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:S:sortAll#(@l) -> c_17(sortAll#1#(@l))
-->_1 sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs)):2
2:S:sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
-->_1 sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(sortAll#(@xs)):3
3:S:sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(sortAll#(@xs))
-->_1 sortAll#(@l) -> c_17(sortAll#1#(@l)):1
4:W:split#(@l) -> c_21(split#1#(@l))
-->_1 split#1#(::(@x,@xs)) -> c_22(split#(@xs)):5
5:W:split#1#(::(@x,@xs)) -> c_22(split#(@xs))
-->_1 split#(@l) -> c_21(split#1#(@l)):4
6:W:splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
-->_1 sortAll#(@l) -> c_17(sortAll#1#(@l)):1
-->_2 split#(@l) -> c_21(split#1#(@l)):4
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
4: split#(@l) -> c_21(split#1#(@l))
5: split#1#(::(@x,@xs)) -> c_22(split#(@xs))
***** Step 8.b:4.b:3.b:4.a:2: SimplifyRHS WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(sortAll#(@xs))
- Weak DPs:
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1,c_22/1,c_23/0,c_24/2
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
SimplifyRHS
+ Details:
Consider the dependency graph
1:S:sortAll#(@l) -> c_17(sortAll#1#(@l))
-->_1 sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs)):2
2:S:sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
-->_1 sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(sortAll#(@xs)):3
3:S:sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(sortAll#(@xs))
-->_1 sortAll#(@l) -> c_17(sortAll#1#(@l)):1
6:W:splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
-->_1 sortAll#(@l) -> c_17(sortAll#1#(@l)):1
Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified:
splitAndSort#(@l) -> c_24(sortAll#(split(@l)))
***** Step 8.b:4.b:3.b:4.a:3: PredecessorEstimationCP WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(sortAll#(@xs))
- Weak DPs:
splitAndSort#(@l) -> c_24(sortAll#(split(@l)))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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: sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
Consider the set of all dependency pairs
1: sortAll#(@l) -> c_17(sortAll#1#(@l))
2: sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
3: sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(sortAll#(@xs))
4: splitAndSort#(@l) -> c_24(sortAll#(split(@l)))
Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1))
SPACE(?,?)on application of the dependency pairs
{2}
These cover all (indirect) predecessors of dependency pairs
{1,2,3,4}
their number of applications is equally bounded.
The dependency pairs are shifted into the weak component.
****** Step 8.b:4.b:3.b:4.a:3.a:1: NaturalMI WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(sortAll#(@xs))
- Weak DPs:
splitAndSort#(@l) -> c_24(sortAll#(split(@l)))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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_17) = {1},
uargs(c_18) = {1},
uargs(c_20) = {1},
uargs(c_24) = {1}
Following symbols are considered usable:
{insert,insert#1,insert#2,insert#3,insert#4,split,split#1,#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#
,append#,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#
,sortAll#,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#,splitqs#3#}
TcT has computed the following interpretation:
p(#0) = [0]
p(#EQ) = [0]
p(#GT) = [1]
p(#LT) = [2]
p(#and) = [4]
p(#ckgt) = [4] x1 + [0]
p(#compare) = [4]
p(#eq) = [1] x2 + [0]
p(#equal) = [0]
p(#false) = [0]
p(#greater) = [1] x1 + [1]
p(#neg) = [1] x1 + [0]
p(#pos) = [0]
p(#s) = [1]
p(#true) = [0]
p(::) = [1] x2 + [1]
p(append) = [1] x2 + [4]
p(append#1) = [2] x1 + [2]
p(insert) = [1] x2 + [4]
p(insert#1) = [1] x2 + [4]
p(insert#2) = [1] x1 + [4]
p(insert#3) = [1] x3 + [5]
p(insert#4) = [1] x3 + [5]
p(nil) = [3]
p(quicksort) = [4]
p(quicksort#1) = [1] x1 + [0]
p(quicksort#2) = [1] x1 + [4] x2 + [4]
p(sortAll) = [1] x1 + [4]
p(sortAll#1) = [1] x1 + [1]
p(sortAll#2) = [1]
p(split) = [4] x1 + [0]
p(split#1) = [4] x1 + [0]
p(splitAndSort) = [1]
p(splitqs) = [4] x2 + [1]
p(splitqs#1) = [0]
p(splitqs#2) = [1] x3 + [0]
p(splitqs#3) = [4] x1 + [1] x3 + [1] x4 + [1]
p(tuple#2) = [0]
p(#and#) = [4] x2 + [2]
p(#ckgt#) = [4]
p(#compare#) = [0]
p(#eq#) = [1] x1 + [0]
p(#equal#) = [4] x2 + [0]
p(#greater#) = [0]
p(append#) = [4] x1 + [1]
p(append#1#) = [4] x2 + [0]
p(insert#) = [1] x1 + [0]
p(insert#1#) = [0]
p(insert#2#) = [2] x1 + [1] x3 + [1] x4 + [2]
p(insert#3#) = [1] x1 + [4] x2 + [2] x3 + [1] x4 + [2] x5 + [0]
p(insert#4#) = [2] x3 + [1] x6 + [0]
p(quicksort#) = [2] x1 + [1]
p(quicksort#1#) = [2] x1 + [1]
p(quicksort#2#) = [1] x2 + [0]
p(sortAll#) = [1] x1 + [0]
p(sortAll#1#) = [1] x1 + [0]
p(sortAll#2#) = [1] x2 + [0]
p(split#) = [0]
p(split#1#) = [1] x1 + [2]
p(splitAndSort#) = [6] x1 + [0]
p(splitqs#) = [0]
p(splitqs#1#) = [0]
p(splitqs#2#) = [4]
p(splitqs#3#) = [1] x1 + [1] x2 + [0]
p(c_1) = [4]
p(c_2) = [4] x1 + [1]
p(c_3) = [2] x1 + [0]
p(c_4) = [2]
p(c_5) = [1]
p(c_6) = [1] x1 + [1]
p(c_7) = [0]
p(c_8) = [1] x1 + [2]
p(c_9) = [4]
p(c_10) = [1] x1 + [1]
p(c_11) = [0]
p(c_12) = [4]
p(c_13) = [4] x1 + [0]
p(c_14) = [2] x1 + [0]
p(c_15) = [4]
p(c_16) = [1]
p(c_17) = [1] x1 + [0]
p(c_18) = [1] x1 + [0]
p(c_19) = [2]
p(c_20) = [1] x1 + [0]
p(c_21) = [0]
p(c_22) = [1] x1 + [1]
p(c_23) = [0]
p(c_24) = [1] x1 + [0]
p(c_25) = [2] x1 + [0]
p(c_26) = [0]
p(c_27) = [2]
p(c_28) = [2] x1 + [2] x2 + [4]
p(c_29) = [2]
p(c_30) = [0]
p(c_31) = [4]
p(c_32) = [0]
p(c_33) = [4]
p(c_34) = [1]
p(c_35) = [1]
p(c_36) = [0]
p(c_37) = [0]
p(c_38) = [0]
p(c_39) = [4]
p(c_40) = [0]
p(c_41) = [2]
p(c_42) = [0]
p(c_43) = [0]
p(c_44) = [1]
p(c_45) = [0]
p(c_46) = [0]
p(c_47) = [1]
p(c_48) = [0]
p(c_49) = [4]
p(c_50) = [1]
p(c_51) = [0]
p(c_52) = [0]
p(c_53) = [0]
p(c_54) = [0]
p(c_55) = [0]
p(c_56) = [1]
p(c_57) = [0]
p(c_58) = [0]
p(c_59) = [0]
p(c_60) = [0]
p(c_61) = [2] x1 + [1]
p(c_62) = [4] x2 + [0]
p(c_63) = [2]
p(c_64) = [2]
p(c_65) = [1]
p(c_66) = [0]
p(c_67) = [1]
p(c_68) = [1]
p(c_69) = [1]
p(c_70) = [1]
Following rules are strictly oriented:
sortAll#1#(::(@x,@xs)) = [1] @xs + [1]
> [1] @xs + [0]
= c_18(sortAll#2#(@x,@xs))
Following rules are (at-least) weakly oriented:
sortAll#(@l) = [1] @l + [0]
>= [1] @l + [0]
= c_17(sortAll#1#(@l))
sortAll#2#(tuple#2(@vals,@key),@xs) = [1] @xs + [0]
>= [1] @xs + [0]
= c_20(sortAll#(@xs))
splitAndSort#(@l) = [6] @l + [0]
>= [4] @l + [0]
= c_24(sortAll#(split(@l)))
insert(@x,@l) = [1] @l + [4]
>= [1] @l + [4]
= insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) = [1] @l + [4]
>= [1] @l + [4]
= insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) = [1] @ls + [5]
>= [1] @ls + [5]
= insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) = [7]
>= [4]
= ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) = [1] @ls + [5]
>= [1] @ls + [5]
= insert#4(#equal(@key1,@keyX),@key1,@ls,@valX,@vals1,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) = [1] @ls + [5]
>= [1] @ls + [5]
= ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) = [1] @ls + [5]
>= [1] @ls + [1]
= ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) = [4] @l + [0]
>= [4] @l + [0]
= split#1(@l)
split#1(::(@x,@xs)) = [4] @xs + [4]
>= [4] @xs + [4]
= insert(@x,split(@xs))
split#1(nil()) = [12]
>= [3]
= nil()
****** Step 8.b:4.b:3.b:4.a:3.a:2: Assumption WORST_CASE(?,O(1))
+ Considered Problem:
- Strict DPs:
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(sortAll#(@xs))
- Weak DPs:
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
+ Details:
()
****** Step 8.b:4.b:3.b:4.a:3.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1))
+ Considered Problem:
- Weak DPs:
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(sortAll#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:W:sortAll#(@l) -> c_17(sortAll#1#(@l))
-->_1 sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs)):2
2:W:sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
-->_1 sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(sortAll#(@xs)):3
3:W:sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(sortAll#(@xs))
-->_1 sortAll#(@l) -> c_17(sortAll#1#(@l)):1
4:W:splitAndSort#(@l) -> c_24(sortAll#(split(@l)))
-->_1 sortAll#(@l) -> c_17(sortAll#1#(@l)):1
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
4: splitAndSort#(@l) -> c_24(sortAll#(split(@l)))
1: sortAll#(@l) -> c_17(sortAll#1#(@l))
3: sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(sortAll#(@xs))
2: sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
****** Step 8.b:4.b:3.b:4.a:3.b:2: EmptyProcessor WORST_CASE(?,O(1))
+ Considered Problem:
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
EmptyProcessor
+ Details:
The problem is already closed. The intended complexity is O(1).
***** Step 8.b:4.b:3.b:4.b:1: RemoveWeakSuffixes WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
- Weak DPs:
sortAll#(@l) -> c_17(sortAll#1#(@l))
sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(sortAll#(@xs))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1,c_22/1,c_23/0,c_24/2
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:S:split#(@l) -> c_21(split#1#(@l))
-->_1 split#1#(::(@x,@xs)) -> c_22(split#(@xs)):2
2:S:split#1#(::(@x,@xs)) -> c_22(split#(@xs))
-->_1 split#(@l) -> c_21(split#1#(@l)):1
3:S:splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
-->_1 sortAll#(@l) -> c_17(sortAll#1#(@l)):4
-->_2 split#(@l) -> c_21(split#1#(@l)):1
4:W:sortAll#(@l) -> c_17(sortAll#1#(@l))
-->_1 sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs)):5
5:W:sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
-->_1 sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(sortAll#(@xs)):6
6:W:sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(sortAll#(@xs))
-->_1 sortAll#(@l) -> c_17(sortAll#1#(@l)):4
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
4: sortAll#(@l) -> c_17(sortAll#1#(@l))
6: sortAll#2#(tuple#2(@vals,@key),@xs) -> c_20(sortAll#(@xs))
5: sortAll#1#(::(@x,@xs)) -> c_18(sortAll#2#(@x,@xs))
***** Step 8.b:4.b:3.b:4.b:2: SimplifyRHS WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(split#(@xs))
splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1,c_22/1,c_23/0,c_24/2
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
SimplifyRHS
+ Details:
Consider the dependency graph
1:S:split#(@l) -> c_21(split#1#(@l))
-->_1 split#1#(::(@x,@xs)) -> c_22(split#(@xs)):2
2:S:split#1#(::(@x,@xs)) -> c_22(split#(@xs))
-->_1 split#(@l) -> c_21(split#1#(@l)):1
3:S:splitAndSort#(@l) -> c_24(sortAll#(split(@l)),split#(@l))
-->_2 split#(@l) -> c_21(split#1#(@l)):1
Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified:
splitAndSort#(@l) -> c_24(split#(@l))
***** Step 8.b:4.b:3.b:4.b:3: UsableRules WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(split#(@xs))
splitAndSort#(@l) -> c_24(split#(@l))
- Weak TRS:
#and(#false(),#false()) -> #false()
#and(#false(),#true()) -> #false()
#and(#true(),#false()) -> #false()
#and(#true(),#true()) -> #true()
#eq(#0(),#0()) -> #true()
#eq(#0(),#neg(@y)) -> #false()
#eq(#0(),#pos(@y)) -> #false()
#eq(#0(),#s(@y)) -> #false()
#eq(#neg(@x),#0()) -> #false()
#eq(#neg(@x),#neg(@y)) -> #eq(@x,@y)
#eq(#neg(@x),#pos(@y)) -> #false()
#eq(#pos(@x),#0()) -> #false()
#eq(#pos(@x),#neg(@y)) -> #false()
#eq(#pos(@x),#pos(@y)) -> #eq(@x,@y)
#eq(#s(@x),#0()) -> #false()
#eq(#s(@x),#s(@y)) -> #eq(@x,@y)
#eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#eq(::(@x_1,@x_2),nil()) -> #false()
#eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false()
#eq(nil(),::(@y_1,@y_2)) -> #false()
#eq(nil(),nil()) -> #true()
#eq(nil(),tuple#2(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false()
#eq(tuple#2(@x_1,@x_2),nil()) -> #false()
#eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2))
#equal(@x,@y) -> #eq(@x,@y)
insert(@x,@l) -> insert#1(@x,@l,@x)
insert#1(tuple#2(@valX,@keyX),@l,@x) -> insert#2(@l,@keyX,@valX,@x)
insert#2(::(@l1,@ls),@keyX,@valX,@x) -> insert#3(@l1,@keyX,@ls,@valX,@x)
insert#2(nil(),@keyX,@valX,@x) -> ::(tuple#2(::(@valX,nil()),@keyX),nil())
insert#3(tuple#2(@vals1,@key1),@keyX,@ls,@valX,@x) -> insert#4(#equal(@key1,@keyX)
,@key1
,@ls
,@valX
,@vals1
,@x)
insert#4(#false(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(@vals1,@key1),insert(@x,@ls))
insert#4(#true(),@key1,@ls,@valX,@vals1,@x) -> ::(tuple#2(::(@valX,@vals1),@key1),@ls)
split(@l) -> split#1(@l)
split#1(::(@x,@xs)) -> insert(@x,split(@xs))
split#1(nil()) -> nil()
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
UsableRules
+ Details:
We replace rewrite rules by usable rules:
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(split#(@xs))
splitAndSort#(@l) -> c_24(split#(@l))
***** Step 8.b:4.b:3.b:4.b:4: Decompose WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(split#(@xs))
splitAndSort#(@l) -> c_24(split#(@l))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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:
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(split#(@xs))
- Weak DPs:
splitAndSort#(@l) -> c_24(split#(@l))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2
,#eq#/2,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5
,insert#4#/6,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1
,split#1#/1,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0
,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1
,c_9/0,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1,c_22/1,c_23/0
,c_24/1,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0
,c_39/0,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0
,c_54/0,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0
,c_69/0,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
Problem (S)
- Strict DPs:
splitAndSort#(@l) -> c_24(split#(@l))
- Weak DPs:
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(split#(@xs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2
,#eq#/2,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5
,insert#4#/6,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1
,split#1#/1,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0
,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1
,c_9/0,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1,c_22/1,c_23/0
,c_24/1,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0
,c_39/0,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0
,c_54/0,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0
,c_69/0,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
****** Step 8.b:4.b:3.b:4.b:4.a:1: PredecessorEstimationCP WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(split#(@xs))
- Weak DPs:
splitAndSort#(@l) -> c_24(split#(@l))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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: split#(@l) -> c_21(split#1#(@l))
2: split#1#(::(@x,@xs)) -> c_22(split#(@xs))
Consider the set of all dependency pairs
1: split#(@l) -> c_21(split#1#(@l))
2: split#1#(::(@x,@xs)) -> c_22(split#(@xs))
3: splitAndSort#(@l) -> c_24(split#(@l))
Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1))
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 8.b:4.b:3.b:4.b:4.a:1.a:1: NaturalMI WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(split#(@xs))
- Weak DPs:
splitAndSort#(@l) -> c_24(split#(@l))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,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_21) = {1},
uargs(c_22) = {1},
uargs(c_24) = {1}
Following symbols are considered usable:
{#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#,append#1#,insert#,insert#1#,insert#2#,insert#3#
,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#
,splitqs#,splitqs#1#,splitqs#2#,splitqs#3#}
TcT has computed the following interpretation:
p(#0) = [0]
p(#EQ) = [0]
p(#GT) = [0]
p(#LT) = [0]
p(#and) = [0]
p(#ckgt) = [0]
p(#compare) = [0]
p(#eq) = [0]
p(#equal) = [0]
p(#false) = [0]
p(#greater) = [0]
p(#neg) = [1] x1 + [0]
p(#pos) = [1] x1 + [0]
p(#s) = [0]
p(#true) = [0]
p(::) = [1] x2 + [5]
p(append) = [0]
p(append#1) = [0]
p(insert) = [0]
p(insert#1) = [1] x3 + [0]
p(insert#2) = [1] x1 + [0]
p(insert#3) = [0]
p(insert#4) = [0]
p(nil) = [0]
p(quicksort) = [4]
p(quicksort#1) = [1] x1 + [2]
p(quicksort#2) = [4] x1 + [1] x2 + [1]
p(sortAll) = [2]
p(sortAll#1) = [1] x1 + [1]
p(sortAll#2) = [1] x1 + [1] x2 + [0]
p(split) = [2] x1 + [1]
p(split#1) = [0]
p(splitAndSort) = [1] x1 + [1]
p(splitqs) = [1]
p(splitqs#1) = [1] x1 + [1]
p(splitqs#2) = [1] x1 + [1] x2 + [1] x3 + [1]
p(splitqs#3) = [1] x1 + [2] x2 + [1] x3 + [2] x4 + [0]
p(tuple#2) = [1] x1 + [1] x2 + [0]
p(#and#) = [1] x1 + [1] x2 + [2]
p(#ckgt#) = [1]
p(#compare#) = [0]
p(#eq#) = [0]
p(#equal#) = [0]
p(#greater#) = [0]
p(append#) = [0]
p(append#1#) = [0]
p(insert#) = [0]
p(insert#1#) = [0]
p(insert#2#) = [0]
p(insert#3#) = [0]
p(insert#4#) = [0]
p(quicksort#) = [0]
p(quicksort#1#) = [0]
p(quicksort#2#) = [1] x1 + [0]
p(sortAll#) = [0]
p(sortAll#1#) = [0]
p(sortAll#2#) = [1] x1 + [0]
p(split#) = [4] x1 + [3]
p(split#1#) = [4] x1 + [0]
p(splitAndSort#) = [4] x1 + [3]
p(splitqs#) = [0]
p(splitqs#1#) = [0]
p(splitqs#2#) = [0]
p(splitqs#3#) = [0]
p(c_1) = [0]
p(c_2) = [0]
p(c_3) = [0]
p(c_4) = [0]
p(c_5) = [0]
p(c_6) = [0]
p(c_7) = [0]
p(c_8) = [0]
p(c_9) = [0]
p(c_10) = [0]
p(c_11) = [0]
p(c_12) = [0]
p(c_13) = [0]
p(c_14) = [0]
p(c_15) = [0]
p(c_16) = [0]
p(c_17) = [0]
p(c_18) = [0]
p(c_19) = [0]
p(c_20) = [0]
p(c_21) = [1] x1 + [1]
p(c_22) = [1] x1 + [15]
p(c_23) = [0]
p(c_24) = [1] x1 + [0]
p(c_25) = [2] x1 + [0]
p(c_26) = [0]
p(c_27) = [0]
p(c_28) = [2] x2 + [0]
p(c_29) = [0]
p(c_30) = [0]
p(c_31) = [0]
p(c_32) = [0]
p(c_33) = [0]
p(c_34) = [0]
p(c_35) = [0]
p(c_36) = [0]
p(c_37) = [0]
p(c_38) = [0]
p(c_39) = [0]
p(c_40) = [0]
p(c_41) = [0]
p(c_42) = [0]
p(c_43) = [0]
p(c_44) = [0]
p(c_45) = [0]
p(c_46) = [0]
p(c_47) = [1] x1 + [0]
p(c_48) = [0]
p(c_49) = [0]
p(c_50) = [0]
p(c_51) = [0]
p(c_52) = [0]
p(c_53) = [0]
p(c_54) = [0]
p(c_55) = [0]
p(c_56) = [0]
p(c_57) = [0]
p(c_58) = [0]
p(c_59) = [1] x1 + [0]
p(c_60) = [8]
p(c_61) = [4]
p(c_62) = [2] x1 + [2] x2 + [4] x3 + [0]
p(c_63) = [1]
p(c_64) = [2]
p(c_65) = [1]
p(c_66) = [1]
p(c_67) = [4]
p(c_68) = [0]
p(c_69) = [8]
p(c_70) = [2] x2 + [4] x3 + [0]
Following rules are strictly oriented:
split#(@l) = [4] @l + [3]
> [4] @l + [1]
= c_21(split#1#(@l))
split#1#(::(@x,@xs)) = [4] @xs + [20]
> [4] @xs + [18]
= c_22(split#(@xs))
Following rules are (at-least) weakly oriented:
splitAndSort#(@l) = [4] @l + [3]
>= [4] @l + [3]
= c_24(split#(@l))
******* Step 8.b:4.b:3.b:4.b:4.a:1.a:2: Assumption WORST_CASE(?,O(1))
+ Considered Problem:
- Weak DPs:
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(split#(@xs))
splitAndSort#(@l) -> c_24(split#(@l))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
+ Details:
()
******* Step 8.b:4.b:3.b:4.b:4.a:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1))
+ Considered Problem:
- Weak DPs:
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(split#(@xs))
splitAndSort#(@l) -> c_24(split#(@l))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:W:split#(@l) -> c_21(split#1#(@l))
-->_1 split#1#(::(@x,@xs)) -> c_22(split#(@xs)):2
2:W:split#1#(::(@x,@xs)) -> c_22(split#(@xs))
-->_1 split#(@l) -> c_21(split#1#(@l)):1
3:W:splitAndSort#(@l) -> c_24(split#(@l))
-->_1 split#(@l) -> c_21(split#1#(@l)):1
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
3: splitAndSort#(@l) -> c_24(split#(@l))
1: split#(@l) -> c_21(split#1#(@l))
2: split#1#(::(@x,@xs)) -> c_22(split#(@xs))
******* Step 8.b:4.b:3.b:4.b:4.a:1.b:2: EmptyProcessor WORST_CASE(?,O(1))
+ Considered Problem:
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
EmptyProcessor
+ Details:
The problem is already closed. The intended complexity is O(1).
****** Step 8.b:4.b:3.b:4.b:4.b:1: PredecessorEstimation WORST_CASE(?,O(1))
+ Considered Problem:
- Strict DPs:
splitAndSort#(@l) -> c_24(split#(@l))
- Weak DPs:
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(split#(@xs))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
PredecessorEstimation {onSelection = all simple predecessor estimation selector}
+ Details:
We estimate the number of application of
{1}
by application of
Pre({1}) = {}.
Here rules are labelled as follows:
1: splitAndSort#(@l) -> c_24(split#(@l))
2: split#(@l) -> c_21(split#1#(@l))
3: split#1#(::(@x,@xs)) -> c_22(split#(@xs))
****** Step 8.b:4.b:3.b:4.b:4.b:2: RemoveWeakSuffixes WORST_CASE(?,O(1))
+ Considered Problem:
- Weak DPs:
split#(@l) -> c_21(split#1#(@l))
split#1#(::(@x,@xs)) -> c_22(split#(@xs))
splitAndSort#(@l) -> c_24(split#(@l))
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:W:split#(@l) -> c_21(split#1#(@l))
-->_1 split#1#(::(@x,@xs)) -> c_22(split#(@xs)):2
2:W:split#1#(::(@x,@xs)) -> c_22(split#(@xs))
-->_1 split#(@l) -> c_21(split#1#(@l)):1
3:W:splitAndSort#(@l) -> c_24(split#(@l))
-->_1 split#(@l) -> c_21(split#1#(@l)):1
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
3: splitAndSort#(@l) -> c_24(split#(@l))
1: split#(@l) -> c_21(split#1#(@l))
2: split#1#(::(@x,@xs)) -> c_22(split#(@xs))
****** Step 8.b:4.b:3.b:4.b:4.b:3: EmptyProcessor WORST_CASE(?,O(1))
+ Considered Problem:
- Signature:
{#and/2,#ckgt/1,#compare/2,#eq/2,#equal/2,#greater/2,append/2,append#1/2,insert/2,insert#1/3,insert#2/4
,insert#3/5,insert#4/6,quicksort/1,quicksort#1/1,quicksort#2/2,sortAll/1,sortAll#1/1,sortAll#2/2,split/1
,split#1/1,splitAndSort/1,splitqs/2,splitqs#1/2,splitqs#2/3,splitqs#3/4,#and#/2,#ckgt#/1,#compare#/2,#eq#/2
,#equal#/2,#greater#/2,append#/2,append#1#/2,insert#/2,insert#1#/3,insert#2#/4,insert#3#/5,insert#4#/6
,quicksort#/1,quicksort#1#/1,quicksort#2#/2,sortAll#/1,sortAll#1#/1,sortAll#2#/2,split#/1,split#1#/1
,splitAndSort#/1,splitqs#/2,splitqs#1#/2,splitqs#2#/3,splitqs#3#/4} / {#0/0,#EQ/0,#GT/0,#LT/0,#false/0
,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2,c_1/1,c_2/2,c_3/1,c_4/1,c_5/0,c_6/1,c_7/1,c_8/1,c_9/0
,c_10/1,c_11/1,c_12/0,c_13/1,c_14/2,c_15/0,c_16/2,c_17/1,c_18/1,c_19/0,c_20/1,c_21/1,c_22/1,c_23/0,c_24/1
,c_25/1,c_26/1,c_27/0,c_28/2,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0
,c_40/0,c_41/0,c_42/0,c_43/1,c_44/0,c_45/0,c_46/0,c_47/1,c_48/0,c_49/1,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0
,c_55/1,c_56/0,c_57/0,c_58/0,c_59/1,c_60/0,c_61/1,c_62/3,c_63/0,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0
,c_70/3}
- Obligation:
innermost runtime complexity wrt. defined symbols {#and#,#ckgt#,#compare#,#eq#,#equal#,#greater#,append#
,append#1#,insert#,insert#1#,insert#2#,insert#3#,insert#4#,quicksort#,quicksort#1#,quicksort#2#,sortAll#
,sortAll#1#,sortAll#2#,split#,split#1#,splitAndSort#,splitqs#,splitqs#1#,splitqs#2#
,splitqs#3#} and constructors {#0,#EQ,#GT,#LT,#false,#neg,#pos,#s,#true,::,nil,tuple#2}
+ Applied Processor:
EmptyProcessor
+ Details:
The problem is already closed. The intended complexity is O(1).
WORST_CASE(?,O(n^5))