MAYBE * Step 1: DependencyPairs MAYBE + Considered Problem: - Strict TRS: bsort(.(x,y)) -> last(.(bubble(.(x,y)),bsort(butlast(bubble(.(x,y)))))) bsort(nil()) -> nil() bubble(.(x,.(y,z))) -> if(<=(x,y),.(y,bubble(.(x,z))),.(x,bubble(.(y,z)))) bubble(.(x,nil())) -> .(x,nil()) bubble(nil()) -> nil() butlast(.(x,.(y,z))) -> .(x,butlast(.(y,z))) butlast(.(x,nil())) -> nil() butlast(nil()) -> nil() last(.(x,.(y,z))) -> last(.(y,z)) last(.(x,nil())) -> x last(nil()) -> 0() - Signature: {bsort/1,bubble/1,butlast/1,last/1} / {./2,0/0,<=/2,if/3,nil/0} - Obligation: innermost runtime complexity wrt. defined symbols {bsort,bubble,butlast,last} and constructors {.,0,<=,if ,nil} + Applied Processor: DependencyPairs {dpKind_ = DT} + Details: We add the following dependency tuples: Strict DPs bsort#(.(x,y)) -> c_1(last#(.(bubble(.(x,y)),bsort(butlast(bubble(.(x,y)))))) ,bubble#(.(x,y)) ,bsort#(butlast(bubble(.(x,y)))) ,butlast#(bubble(.(x,y))) ,bubble#(.(x,y))) bsort#(nil()) -> c_2() bubble#(.(x,.(y,z))) -> c_3(bubble#(.(x,z)),bubble#(.(y,z))) bubble#(.(x,nil())) -> c_4() bubble#(nil()) -> c_5() butlast#(.(x,.(y,z))) -> c_6(butlast#(.(y,z))) butlast#(.(x,nil())) -> c_7() butlast#(nil()) -> c_8() last#(.(x,.(y,z))) -> c_9(last#(.(y,z))) last#(.(x,nil())) -> c_10() last#(nil()) -> c_11() Weak DPs and mark the set of starting terms. * Step 2: UsableRules MAYBE + Considered Problem: - Strict DPs: bsort#(.(x,y)) -> c_1(last#(.(bubble(.(x,y)),bsort(butlast(bubble(.(x,y)))))) ,bubble#(.(x,y)) ,bsort#(butlast(bubble(.(x,y)))) ,butlast#(bubble(.(x,y))) ,bubble#(.(x,y))) bsort#(nil()) -> c_2() bubble#(.(x,.(y,z))) -> c_3(bubble#(.(x,z)),bubble#(.(y,z))) bubble#(.(x,nil())) -> c_4() bubble#(nil()) -> c_5() butlast#(.(x,.(y,z))) -> c_6(butlast#(.(y,z))) butlast#(.(x,nil())) -> c_7() butlast#(nil()) -> c_8() last#(.(x,.(y,z))) -> c_9(last#(.(y,z))) last#(.(x,nil())) -> c_10() last#(nil()) -> c_11() - Weak TRS: bsort(.(x,y)) -> last(.(bubble(.(x,y)),bsort(butlast(bubble(.(x,y)))))) bsort(nil()) -> nil() bubble(.(x,.(y,z))) -> if(<=(x,y),.(y,bubble(.(x,z))),.(x,bubble(.(y,z)))) bubble(.(x,nil())) -> .(x,nil()) bubble(nil()) -> nil() butlast(.(x,.(y,z))) -> .(x,butlast(.(y,z))) butlast(.(x,nil())) -> nil() butlast(nil()) -> nil() last(.(x,.(y,z))) -> last(.(y,z)) last(.(x,nil())) -> x last(nil()) -> 0() - Signature: {bsort/1,bubble/1,butlast/1,last/1,bsort#/1,bubble#/1,butlast#/1,last#/1} / {./2,0/0,<=/2,if/3,nil/0,c_1/5 ,c_2/0,c_3/2,c_4/0,c_5/0,c_6/1,c_7/0,c_8/0,c_9/1,c_10/0,c_11/0} - Obligation: innermost runtime complexity wrt. defined symbols {bsort#,bubble#,butlast#,last#} and constructors {.,0,<= ,if,nil} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: bsort(.(x,y)) -> last(.(bubble(.(x,y)),bsort(butlast(bubble(.(x,y)))))) bsort(nil()) -> nil() bubble(.(x,.(y,z))) -> if(<=(x,y),.(y,bubble(.(x,z))),.(x,bubble(.(y,z)))) bubble(.(x,nil())) -> .(x,nil()) butlast(.(x,.(y,z))) -> .(x,butlast(.(y,z))) butlast(.(x,nil())) -> nil() butlast(nil()) -> nil() last(.(x,.(y,z))) -> last(.(y,z)) last(.(x,nil())) -> x bsort#(.(x,y)) -> c_1(last#(.(bubble(.(x,y)),bsort(butlast(bubble(.(x,y)))))) ,bubble#(.(x,y)) ,bsort#(butlast(bubble(.(x,y)))) ,butlast#(bubble(.(x,y))) ,bubble#(.(x,y))) bsort#(nil()) -> c_2() bubble#(.(x,.(y,z))) -> c_3(bubble#(.(x,z)),bubble#(.(y,z))) bubble#(.(x,nil())) -> c_4() bubble#(nil()) -> c_5() butlast#(.(x,.(y,z))) -> c_6(butlast#(.(y,z))) butlast#(.(x,nil())) -> c_7() butlast#(nil()) -> c_8() last#(.(x,.(y,z))) -> c_9(last#(.(y,z))) last#(.(x,nil())) -> c_10() last#(nil()) -> c_11() * Step 3: PredecessorEstimation MAYBE + Considered Problem: - Strict DPs: bsort#(.(x,y)) -> c_1(last#(.(bubble(.(x,y)),bsort(butlast(bubble(.(x,y)))))) ,bubble#(.(x,y)) ,bsort#(butlast(bubble(.(x,y)))) ,butlast#(bubble(.(x,y))) ,bubble#(.(x,y))) bsort#(nil()) -> c_2() bubble#(.(x,.(y,z))) -> c_3(bubble#(.(x,z)),bubble#(.(y,z))) bubble#(.(x,nil())) -> c_4() bubble#(nil()) -> c_5() butlast#(.(x,.(y,z))) -> c_6(butlast#(.(y,z))) butlast#(.(x,nil())) -> c_7() butlast#(nil()) -> c_8() last#(.(x,.(y,z))) -> c_9(last#(.(y,z))) last#(.(x,nil())) -> c_10() last#(nil()) -> c_11() - Weak TRS: bsort(.(x,y)) -> last(.(bubble(.(x,y)),bsort(butlast(bubble(.(x,y)))))) bsort(nil()) -> nil() bubble(.(x,.(y,z))) -> if(<=(x,y),.(y,bubble(.(x,z))),.(x,bubble(.(y,z)))) bubble(.(x,nil())) -> .(x,nil()) butlast(.(x,.(y,z))) -> .(x,butlast(.(y,z))) butlast(.(x,nil())) -> nil() butlast(nil()) -> nil() last(.(x,.(y,z))) -> last(.(y,z)) last(.(x,nil())) -> x - Signature: {bsort/1,bubble/1,butlast/1,last/1,bsort#/1,bubble#/1,butlast#/1,last#/1} / {./2,0/0,<=/2,if/3,nil/0,c_1/5 ,c_2/0,c_3/2,c_4/0,c_5/0,c_6/1,c_7/0,c_8/0,c_9/1,c_10/0,c_11/0} - Obligation: innermost runtime complexity wrt. defined symbols {bsort#,bubble#,butlast#,last#} and constructors {.,0,<= ,if,nil} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {2,4,5,7,8,10,11} by application of Pre({2,4,5,7,8,10,11}) = {1,3,6,9}. Here rules are labelled as follows: 1: bsort#(.(x,y)) -> c_1(last#(.(bubble(.(x,y)),bsort(butlast(bubble(.(x,y)))))) ,bubble#(.(x,y)) ,bsort#(butlast(bubble(.(x,y)))) ,butlast#(bubble(.(x,y))) ,bubble#(.(x,y))) 2: bsort#(nil()) -> c_2() 3: bubble#(.(x,.(y,z))) -> c_3(bubble#(.(x,z)),bubble#(.(y,z))) 4: bubble#(.(x,nil())) -> c_4() 5: bubble#(nil()) -> c_5() 6: butlast#(.(x,.(y,z))) -> c_6(butlast#(.(y,z))) 7: butlast#(.(x,nil())) -> c_7() 8: butlast#(nil()) -> c_8() 9: last#(.(x,.(y,z))) -> c_9(last#(.(y,z))) 10: last#(.(x,nil())) -> c_10() 11: last#(nil()) -> c_11() * Step 4: RemoveWeakSuffixes MAYBE + Considered Problem: - Strict DPs: bsort#(.(x,y)) -> c_1(last#(.(bubble(.(x,y)),bsort(butlast(bubble(.(x,y)))))) ,bubble#(.(x,y)) ,bsort#(butlast(bubble(.(x,y)))) ,butlast#(bubble(.(x,y))) ,bubble#(.(x,y))) bubble#(.(x,.(y,z))) -> c_3(bubble#(.(x,z)),bubble#(.(y,z))) butlast#(.(x,.(y,z))) -> c_6(butlast#(.(y,z))) last#(.(x,.(y,z))) -> c_9(last#(.(y,z))) - Weak DPs: bsort#(nil()) -> c_2() bubble#(.(x,nil())) -> c_4() bubble#(nil()) -> c_5() butlast#(.(x,nil())) -> c_7() butlast#(nil()) -> c_8() last#(.(x,nil())) -> c_10() last#(nil()) -> c_11() - Weak TRS: bsort(.(x,y)) -> last(.(bubble(.(x,y)),bsort(butlast(bubble(.(x,y)))))) bsort(nil()) -> nil() bubble(.(x,.(y,z))) -> if(<=(x,y),.(y,bubble(.(x,z))),.(x,bubble(.(y,z)))) bubble(.(x,nil())) -> .(x,nil()) butlast(.(x,.(y,z))) -> .(x,butlast(.(y,z))) butlast(.(x,nil())) -> nil() butlast(nil()) -> nil() last(.(x,.(y,z))) -> last(.(y,z)) last(.(x,nil())) -> x - Signature: {bsort/1,bubble/1,butlast/1,last/1,bsort#/1,bubble#/1,butlast#/1,last#/1} / {./2,0/0,<=/2,if/3,nil/0,c_1/5 ,c_2/0,c_3/2,c_4/0,c_5/0,c_6/1,c_7/0,c_8/0,c_9/1,c_10/0,c_11/0} - Obligation: innermost runtime complexity wrt. defined symbols {bsort#,bubble#,butlast#,last#} and constructors {.,0,<= ,if,nil} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:bsort#(.(x,y)) -> c_1(last#(.(bubble(.(x,y)),bsort(butlast(bubble(.(x,y)))))) ,bubble#(.(x,y)) ,bsort#(butlast(bubble(.(x,y)))) ,butlast#(bubble(.(x,y))) ,bubble#(.(x,y))) -->_1 last#(.(x,.(y,z))) -> c_9(last#(.(y,z))):4 -->_4 butlast#(.(x,.(y,z))) -> c_6(butlast#(.(y,z))):3 -->_5 bubble#(.(x,.(y,z))) -> c_3(bubble#(.(x,z)),bubble#(.(y,z))):2 -->_2 bubble#(.(x,.(y,z))) -> c_3(bubble#(.(x,z)),bubble#(.(y,z))):2 -->_1 last#(.(x,nil())) -> c_10():10 -->_4 butlast#(nil()) -> c_8():9 -->_4 butlast#(.(x,nil())) -> c_7():8 -->_5 bubble#(.(x,nil())) -> c_4():6 -->_2 bubble#(.(x,nil())) -> c_4():6 -->_3 bsort#(nil()) -> c_2():5 -->_3 bsort#(.(x,y)) -> c_1(last#(.(bubble(.(x,y)),bsort(butlast(bubble(.(x,y)))))) ,bubble#(.(x,y)) ,bsort#(butlast(bubble(.(x,y)))) ,butlast#(bubble(.(x,y))) ,bubble#(.(x,y))):1 2:S:bubble#(.(x,.(y,z))) -> c_3(bubble#(.(x,z)),bubble#(.(y,z))) -->_2 bubble#(.(x,nil())) -> c_4():6 -->_1 bubble#(.(x,nil())) -> c_4():6 -->_2 bubble#(.(x,.(y,z))) -> c_3(bubble#(.(x,z)),bubble#(.(y,z))):2 -->_1 bubble#(.(x,.(y,z))) -> c_3(bubble#(.(x,z)),bubble#(.(y,z))):2 3:S:butlast#(.(x,.(y,z))) -> c_6(butlast#(.(y,z))) -->_1 butlast#(.(x,nil())) -> c_7():8 -->_1 butlast#(.(x,.(y,z))) -> c_6(butlast#(.(y,z))):3 4:S:last#(.(x,.(y,z))) -> c_9(last#(.(y,z))) -->_1 last#(.(x,nil())) -> c_10():10 -->_1 last#(.(x,.(y,z))) -> c_9(last#(.(y,z))):4 5:W:bsort#(nil()) -> c_2() 6:W:bubble#(.(x,nil())) -> c_4() 7:W:bubble#(nil()) -> c_5() 8:W:butlast#(.(x,nil())) -> c_7() 9:W:butlast#(nil()) -> c_8() 10:W:last#(.(x,nil())) -> c_10() 11:W:last#(nil()) -> c_11() The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 11: last#(nil()) -> c_11() 7: bubble#(nil()) -> c_5() 5: bsort#(nil()) -> c_2() 9: butlast#(nil()) -> c_8() 6: bubble#(.(x,nil())) -> c_4() 8: butlast#(.(x,nil())) -> c_7() 10: last#(.(x,nil())) -> c_10() * Step 5: Failure MAYBE + Considered Problem: - Strict DPs: bsort#(.(x,y)) -> c_1(last#(.(bubble(.(x,y)),bsort(butlast(bubble(.(x,y)))))) ,bubble#(.(x,y)) ,bsort#(butlast(bubble(.(x,y)))) ,butlast#(bubble(.(x,y))) ,bubble#(.(x,y))) bubble#(.(x,.(y,z))) -> c_3(bubble#(.(x,z)),bubble#(.(y,z))) butlast#(.(x,.(y,z))) -> c_6(butlast#(.(y,z))) last#(.(x,.(y,z))) -> c_9(last#(.(y,z))) - Weak TRS: bsort(.(x,y)) -> last(.(bubble(.(x,y)),bsort(butlast(bubble(.(x,y)))))) bsort(nil()) -> nil() bubble(.(x,.(y,z))) -> if(<=(x,y),.(y,bubble(.(x,z))),.(x,bubble(.(y,z)))) bubble(.(x,nil())) -> .(x,nil()) butlast(.(x,.(y,z))) -> .(x,butlast(.(y,z))) butlast(.(x,nil())) -> nil() butlast(nil()) -> nil() last(.(x,.(y,z))) -> last(.(y,z)) last(.(x,nil())) -> x - Signature: {bsort/1,bubble/1,butlast/1,last/1,bsort#/1,bubble#/1,butlast#/1,last#/1} / {./2,0/0,<=/2,if/3,nil/0,c_1/5 ,c_2/0,c_3/2,c_4/0,c_5/0,c_6/1,c_7/0,c_8/0,c_9/1,c_10/0,c_11/0} - Obligation: innermost runtime complexity wrt. defined symbols {bsort#,bubble#,butlast#,last#} and constructors {.,0,<= ,if,nil} + Applied Processor: EmptyProcessor + Details: The problem is still open. MAYBE