MAYBE We are left with following problem, upon which TcT provides the certificate MAYBE. Strict Trs: { le(0(), Y) -> true() , le(s(X), 0()) -> false() , le(s(X), s(Y)) -> le(X, Y) , app(nil(), Y) -> Y , app(cons(N, L), Y) -> cons(N, app(L, Y)) , low(N, nil()) -> nil() , low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L)) , iflow(true(), N, cons(M, L)) -> cons(M, low(N, L)) , iflow(false(), N, cons(M, L)) -> low(N, L) , high(N, nil()) -> nil() , high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L)) , ifhigh(true(), N, cons(M, L)) -> high(N, L) , ifhigh(false(), N, cons(M, L)) -> cons(M, high(N, L)) , quicksort(nil()) -> nil() , quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L)))) } Obligation: innermost runtime complexity Answer: MAYBE We add following dependency tuples: Strict DPs: { le^#(0(), Y) -> c_1() , le^#(s(X), 0()) -> c_2() , le^#(s(X), s(Y)) -> c_3(le^#(X, Y)) , app^#(nil(), Y) -> c_4() , app^#(cons(N, L), Y) -> c_5(app^#(L, Y)) , low^#(N, nil()) -> c_6() , low^#(N, cons(M, L)) -> c_7(iflow^#(le(M, N), N, cons(M, L)), le^#(M, N)) , iflow^#(true(), N, cons(M, L)) -> c_8(low^#(N, L)) , iflow^#(false(), N, cons(M, L)) -> c_9(low^#(N, L)) , high^#(N, nil()) -> c_10() , high^#(N, cons(M, L)) -> c_11(ifhigh^#(le(M, N), N, cons(M, L)), le^#(M, N)) , ifhigh^#(true(), N, cons(M, L)) -> c_12(high^#(N, L)) , ifhigh^#(false(), N, cons(M, L)) -> c_13(high^#(N, L)) , quicksort^#(nil()) -> c_14() , quicksort^#(cons(N, L)) -> c_15(app^#(quicksort(low(N, L)), cons(N, quicksort(high(N, L)))), quicksort^#(low(N, L)), low^#(N, L), quicksort^#(high(N, L)), high^#(N, L)) } and mark the set of starting terms. We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { le^#(0(), Y) -> c_1() , le^#(s(X), 0()) -> c_2() , le^#(s(X), s(Y)) -> c_3(le^#(X, Y)) , app^#(nil(), Y) -> c_4() , app^#(cons(N, L), Y) -> c_5(app^#(L, Y)) , low^#(N, nil()) -> c_6() , low^#(N, cons(M, L)) -> c_7(iflow^#(le(M, N), N, cons(M, L)), le^#(M, N)) , iflow^#(true(), N, cons(M, L)) -> c_8(low^#(N, L)) , iflow^#(false(), N, cons(M, L)) -> c_9(low^#(N, L)) , high^#(N, nil()) -> c_10() , high^#(N, cons(M, L)) -> c_11(ifhigh^#(le(M, N), N, cons(M, L)), le^#(M, N)) , ifhigh^#(true(), N, cons(M, L)) -> c_12(high^#(N, L)) , ifhigh^#(false(), N, cons(M, L)) -> c_13(high^#(N, L)) , quicksort^#(nil()) -> c_14() , quicksort^#(cons(N, L)) -> c_15(app^#(quicksort(low(N, L)), cons(N, quicksort(high(N, L)))), quicksort^#(low(N, L)), low^#(N, L), quicksort^#(high(N, L)), high^#(N, L)) } Weak Trs: { le(0(), Y) -> true() , le(s(X), 0()) -> false() , le(s(X), s(Y)) -> le(X, Y) , app(nil(), Y) -> Y , app(cons(N, L), Y) -> cons(N, app(L, Y)) , low(N, nil()) -> nil() , low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L)) , iflow(true(), N, cons(M, L)) -> cons(M, low(N, L)) , iflow(false(), N, cons(M, L)) -> low(N, L) , high(N, nil()) -> nil() , high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L)) , ifhigh(true(), N, cons(M, L)) -> high(N, L) , ifhigh(false(), N, cons(M, L)) -> cons(M, high(N, L)) , quicksort(nil()) -> nil() , quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L)))) } Obligation: innermost runtime complexity Answer: MAYBE We estimate the number of application of {1,2,4,6,10,14} by applications of Pre({1,2,4,6,10,14}) = {3,5,7,8,9,11,12,13,15}. Here rules are labeled as follows: DPs: { 1: le^#(0(), Y) -> c_1() , 2: le^#(s(X), 0()) -> c_2() , 3: le^#(s(X), s(Y)) -> c_3(le^#(X, Y)) , 4: app^#(nil(), Y) -> c_4() , 5: app^#(cons(N, L), Y) -> c_5(app^#(L, Y)) , 6: low^#(N, nil()) -> c_6() , 7: low^#(N, cons(M, L)) -> c_7(iflow^#(le(M, N), N, cons(M, L)), le^#(M, N)) , 8: iflow^#(true(), N, cons(M, L)) -> c_8(low^#(N, L)) , 9: iflow^#(false(), N, cons(M, L)) -> c_9(low^#(N, L)) , 10: high^#(N, nil()) -> c_10() , 11: high^#(N, cons(M, L)) -> c_11(ifhigh^#(le(M, N), N, cons(M, L)), le^#(M, N)) , 12: ifhigh^#(true(), N, cons(M, L)) -> c_12(high^#(N, L)) , 13: ifhigh^#(false(), N, cons(M, L)) -> c_13(high^#(N, L)) , 14: quicksort^#(nil()) -> c_14() , 15: quicksort^#(cons(N, L)) -> c_15(app^#(quicksort(low(N, L)), cons(N, quicksort(high(N, L)))), quicksort^#(low(N, L)), low^#(N, L), quicksort^#(high(N, L)), high^#(N, L)) } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { le^#(s(X), s(Y)) -> c_3(le^#(X, Y)) , app^#(cons(N, L), Y) -> c_5(app^#(L, Y)) , low^#(N, cons(M, L)) -> c_7(iflow^#(le(M, N), N, cons(M, L)), le^#(M, N)) , iflow^#(true(), N, cons(M, L)) -> c_8(low^#(N, L)) , iflow^#(false(), N, cons(M, L)) -> c_9(low^#(N, L)) , high^#(N, cons(M, L)) -> c_11(ifhigh^#(le(M, N), N, cons(M, L)), le^#(M, N)) , ifhigh^#(true(), N, cons(M, L)) -> c_12(high^#(N, L)) , ifhigh^#(false(), N, cons(M, L)) -> c_13(high^#(N, L)) , quicksort^#(cons(N, L)) -> c_15(app^#(quicksort(low(N, L)), cons(N, quicksort(high(N, L)))), quicksort^#(low(N, L)), low^#(N, L), quicksort^#(high(N, L)), high^#(N, L)) } Weak DPs: { le^#(0(), Y) -> c_1() , le^#(s(X), 0()) -> c_2() , app^#(nil(), Y) -> c_4() , low^#(N, nil()) -> c_6() , high^#(N, nil()) -> c_10() , quicksort^#(nil()) -> c_14() } Weak Trs: { le(0(), Y) -> true() , le(s(X), 0()) -> false() , le(s(X), s(Y)) -> le(X, Y) , app(nil(), Y) -> Y , app(cons(N, L), Y) -> cons(N, app(L, Y)) , low(N, nil()) -> nil() , low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L)) , iflow(true(), N, cons(M, L)) -> cons(M, low(N, L)) , iflow(false(), N, cons(M, L)) -> low(N, L) , high(N, nil()) -> nil() , high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L)) , ifhigh(true(), N, cons(M, L)) -> high(N, L) , ifhigh(false(), N, cons(M, L)) -> cons(M, high(N, L)) , quicksort(nil()) -> nil() , quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L)))) } Obligation: innermost runtime complexity Answer: MAYBE The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. { le^#(0(), Y) -> c_1() , le^#(s(X), 0()) -> c_2() , app^#(nil(), Y) -> c_4() , low^#(N, nil()) -> c_6() , high^#(N, nil()) -> c_10() , quicksort^#(nil()) -> c_14() } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { le^#(s(X), s(Y)) -> c_3(le^#(X, Y)) , app^#(cons(N, L), Y) -> c_5(app^#(L, Y)) , low^#(N, cons(M, L)) -> c_7(iflow^#(le(M, N), N, cons(M, L)), le^#(M, N)) , iflow^#(true(), N, cons(M, L)) -> c_8(low^#(N, L)) , iflow^#(false(), N, cons(M, L)) -> c_9(low^#(N, L)) , high^#(N, cons(M, L)) -> c_11(ifhigh^#(le(M, N), N, cons(M, L)), le^#(M, N)) , ifhigh^#(true(), N, cons(M, L)) -> c_12(high^#(N, L)) , ifhigh^#(false(), N, cons(M, L)) -> c_13(high^#(N, L)) , quicksort^#(cons(N, L)) -> c_15(app^#(quicksort(low(N, L)), cons(N, quicksort(high(N, L)))), quicksort^#(low(N, L)), low^#(N, L), quicksort^#(high(N, L)), high^#(N, L)) } Weak Trs: { le(0(), Y) -> true() , le(s(X), 0()) -> false() , le(s(X), s(Y)) -> le(X, Y) , app(nil(), Y) -> Y , app(cons(N, L), Y) -> cons(N, app(L, Y)) , low(N, nil()) -> nil() , low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L)) , iflow(true(), N, cons(M, L)) -> cons(M, low(N, L)) , iflow(false(), N, cons(M, L)) -> low(N, L) , high(N, nil()) -> nil() , high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L)) , ifhigh(true(), N, cons(M, L)) -> high(N, L) , ifhigh(false(), N, cons(M, L)) -> cons(M, high(N, L)) , quicksort(nil()) -> nil() , quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L)))) } Obligation: innermost runtime complexity Answer: MAYBE The input cannot be shown compatible Arrrr..