MAYBE * Step 1: DependencyPairs MAYBE + Considered Problem: - Strict TRS: half(0()) -> 0() half(s(0())) -> 0() half(s(s(x))) -> s(half(x)) if(false(),x,y) -> log2(half(x),y) if(true(),x,s(y)) -> y inc(0()) -> 0() inc(s(x)) -> s(inc(x)) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) log(x) -> log2(x,0()) log2(x,y) -> if(le(x,s(0())),x,inc(y)) - Signature: {half/1,if/3,inc/1,le/2,log/1,log2/2} / {0/0,false/0,s/1,true/0} - Obligation: innermost runtime complexity wrt. defined symbols {half,if,inc,le,log,log2} and constructors {0,false,s ,true} + Applied Processor: DependencyPairs {dpKind_ = DT} + Details: We add the following dependency tuples: Strict DPs half#(0()) -> c_1() half#(s(0())) -> c_2() half#(s(s(x))) -> c_3(half#(x)) if#(false(),x,y) -> c_4(log2#(half(x),y),half#(x)) if#(true(),x,s(y)) -> c_5() inc#(0()) -> c_6() inc#(s(x)) -> c_7(inc#(x)) le#(0(),y) -> c_8() le#(s(x),0()) -> c_9() le#(s(x),s(y)) -> c_10(le#(x,y)) log#(x) -> c_11(log2#(x,0())) log2#(x,y) -> c_12(if#(le(x,s(0())),x,inc(y)),le#(x,s(0())),inc#(y)) Weak DPs and mark the set of starting terms. * Step 2: UsableRules MAYBE + Considered Problem: - Strict DPs: half#(0()) -> c_1() half#(s(0())) -> c_2() half#(s(s(x))) -> c_3(half#(x)) if#(false(),x,y) -> c_4(log2#(half(x),y),half#(x)) if#(true(),x,s(y)) -> c_5() inc#(0()) -> c_6() inc#(s(x)) -> c_7(inc#(x)) le#(0(),y) -> c_8() le#(s(x),0()) -> c_9() le#(s(x),s(y)) -> c_10(le#(x,y)) log#(x) -> c_11(log2#(x,0())) log2#(x,y) -> c_12(if#(le(x,s(0())),x,inc(y)),le#(x,s(0())),inc#(y)) - Weak TRS: half(0()) -> 0() half(s(0())) -> 0() half(s(s(x))) -> s(half(x)) if(false(),x,y) -> log2(half(x),y) if(true(),x,s(y)) -> y inc(0()) -> 0() inc(s(x)) -> s(inc(x)) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) log(x) -> log2(x,0()) log2(x,y) -> if(le(x,s(0())),x,inc(y)) - Signature: {half/1,if/3,inc/1,le/2,log/1,log2/2,half#/1,if#/3,inc#/1,le#/2,log#/1,log2#/2} / {0/0,false/0,s/1,true/0 ,c_1/0,c_2/0,c_3/1,c_4/2,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1,c_11/1,c_12/3} - Obligation: innermost runtime complexity wrt. defined symbols {half#,if#,inc#,le#,log#,log2#} and constructors {0,false ,s,true} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: half(0()) -> 0() half(s(0())) -> 0() half(s(s(x))) -> s(half(x)) inc(0()) -> 0() inc(s(x)) -> s(inc(x)) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) half#(0()) -> c_1() half#(s(0())) -> c_2() half#(s(s(x))) -> c_3(half#(x)) if#(false(),x,y) -> c_4(log2#(half(x),y),half#(x)) if#(true(),x,s(y)) -> c_5() inc#(0()) -> c_6() inc#(s(x)) -> c_7(inc#(x)) le#(0(),y) -> c_8() le#(s(x),0()) -> c_9() le#(s(x),s(y)) -> c_10(le#(x,y)) log#(x) -> c_11(log2#(x,0())) log2#(x,y) -> c_12(if#(le(x,s(0())),x,inc(y)),le#(x,s(0())),inc#(y)) * Step 3: PredecessorEstimation MAYBE + Considered Problem: - Strict DPs: half#(0()) -> c_1() half#(s(0())) -> c_2() half#(s(s(x))) -> c_3(half#(x)) if#(false(),x,y) -> c_4(log2#(half(x),y),half#(x)) if#(true(),x,s(y)) -> c_5() inc#(0()) -> c_6() inc#(s(x)) -> c_7(inc#(x)) le#(0(),y) -> c_8() le#(s(x),0()) -> c_9() le#(s(x),s(y)) -> c_10(le#(x,y)) log#(x) -> c_11(log2#(x,0())) log2#(x,y) -> c_12(if#(le(x,s(0())),x,inc(y)),le#(x,s(0())),inc#(y)) - Weak TRS: half(0()) -> 0() half(s(0())) -> 0() half(s(s(x))) -> s(half(x)) inc(0()) -> 0() inc(s(x)) -> s(inc(x)) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) - Signature: {half/1,if/3,inc/1,le/2,log/1,log2/2,half#/1,if#/3,inc#/1,le#/2,log#/1,log2#/2} / {0/0,false/0,s/1,true/0 ,c_1/0,c_2/0,c_3/1,c_4/2,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1,c_11/1,c_12/3} - Obligation: innermost runtime complexity wrt. defined symbols {half#,if#,inc#,le#,log#,log2#} and constructors {0,false ,s,true} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {1,2,5,6,8,9} by application of Pre({1,2,5,6,8,9}) = {3,4,7,10,12}. Here rules are labelled as follows: 1: half#(0()) -> c_1() 2: half#(s(0())) -> c_2() 3: half#(s(s(x))) -> c_3(half#(x)) 4: if#(false(),x,y) -> c_4(log2#(half(x),y),half#(x)) 5: if#(true(),x,s(y)) -> c_5() 6: inc#(0()) -> c_6() 7: inc#(s(x)) -> c_7(inc#(x)) 8: le#(0(),y) -> c_8() 9: le#(s(x),0()) -> c_9() 10: le#(s(x),s(y)) -> c_10(le#(x,y)) 11: log#(x) -> c_11(log2#(x,0())) 12: log2#(x,y) -> c_12(if#(le(x,s(0())),x,inc(y)),le#(x,s(0())),inc#(y)) * Step 4: RemoveWeakSuffixes MAYBE + Considered Problem: - Strict DPs: half#(s(s(x))) -> c_3(half#(x)) if#(false(),x,y) -> c_4(log2#(half(x),y),half#(x)) inc#(s(x)) -> c_7(inc#(x)) le#(s(x),s(y)) -> c_10(le#(x,y)) log#(x) -> c_11(log2#(x,0())) log2#(x,y) -> c_12(if#(le(x,s(0())),x,inc(y)),le#(x,s(0())),inc#(y)) - Weak DPs: half#(0()) -> c_1() half#(s(0())) -> c_2() if#(true(),x,s(y)) -> c_5() inc#(0()) -> c_6() le#(0(),y) -> c_8() le#(s(x),0()) -> c_9() - Weak TRS: half(0()) -> 0() half(s(0())) -> 0() half(s(s(x))) -> s(half(x)) inc(0()) -> 0() inc(s(x)) -> s(inc(x)) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) - Signature: {half/1,if/3,inc/1,le/2,log/1,log2/2,half#/1,if#/3,inc#/1,le#/2,log#/1,log2#/2} / {0/0,false/0,s/1,true/0 ,c_1/0,c_2/0,c_3/1,c_4/2,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1,c_11/1,c_12/3} - Obligation: innermost runtime complexity wrt. defined symbols {half#,if#,inc#,le#,log#,log2#} and constructors {0,false ,s,true} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:half#(s(s(x))) -> c_3(half#(x)) -->_1 half#(s(0())) -> c_2():8 -->_1 half#(0()) -> c_1():7 -->_1 half#(s(s(x))) -> c_3(half#(x)):1 2:S:if#(false(),x,y) -> c_4(log2#(half(x),y),half#(x)) -->_1 log2#(x,y) -> c_12(if#(le(x,s(0())),x,inc(y)),le#(x,s(0())),inc#(y)):6 -->_2 half#(s(0())) -> c_2():8 -->_2 half#(0()) -> c_1():7 -->_2 half#(s(s(x))) -> c_3(half#(x)):1 3:S:inc#(s(x)) -> c_7(inc#(x)) -->_1 inc#(0()) -> c_6():10 -->_1 inc#(s(x)) -> c_7(inc#(x)):3 4:S:le#(s(x),s(y)) -> c_10(le#(x,y)) -->_1 le#(s(x),0()) -> c_9():12 -->_1 le#(0(),y) -> c_8():11 -->_1 le#(s(x),s(y)) -> c_10(le#(x,y)):4 5:S:log#(x) -> c_11(log2#(x,0())) -->_1 log2#(x,y) -> c_12(if#(le(x,s(0())),x,inc(y)),le#(x,s(0())),inc#(y)):6 6:S:log2#(x,y) -> c_12(if#(le(x,s(0())),x,inc(y)),le#(x,s(0())),inc#(y)) -->_2 le#(0(),y) -> c_8():11 -->_3 inc#(0()) -> c_6():10 -->_1 if#(true(),x,s(y)) -> c_5():9 -->_2 le#(s(x),s(y)) -> c_10(le#(x,y)):4 -->_3 inc#(s(x)) -> c_7(inc#(x)):3 -->_1 if#(false(),x,y) -> c_4(log2#(half(x),y),half#(x)):2 7:W:half#(0()) -> c_1() 8:W:half#(s(0())) -> c_2() 9:W:if#(true(),x,s(y)) -> c_5() 10:W:inc#(0()) -> c_6() 11:W:le#(0(),y) -> c_8() 12:W:le#(s(x),0()) -> c_9() The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 12: le#(s(x),0()) -> c_9() 9: if#(true(),x,s(y)) -> c_5() 10: inc#(0()) -> c_6() 11: le#(0(),y) -> c_8() 7: half#(0()) -> c_1() 8: half#(s(0())) -> c_2() * Step 5: RemoveHeads MAYBE + Considered Problem: - Strict DPs: half#(s(s(x))) -> c_3(half#(x)) if#(false(),x,y) -> c_4(log2#(half(x),y),half#(x)) inc#(s(x)) -> c_7(inc#(x)) le#(s(x),s(y)) -> c_10(le#(x,y)) log#(x) -> c_11(log2#(x,0())) log2#(x,y) -> c_12(if#(le(x,s(0())),x,inc(y)),le#(x,s(0())),inc#(y)) - Weak TRS: half(0()) -> 0() half(s(0())) -> 0() half(s(s(x))) -> s(half(x)) inc(0()) -> 0() inc(s(x)) -> s(inc(x)) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) - Signature: {half/1,if/3,inc/1,le/2,log/1,log2/2,half#/1,if#/3,inc#/1,le#/2,log#/1,log2#/2} / {0/0,false/0,s/1,true/0 ,c_1/0,c_2/0,c_3/1,c_4/2,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1,c_11/1,c_12/3} - Obligation: innermost runtime complexity wrt. defined symbols {half#,if#,inc#,le#,log#,log2#} and constructors {0,false ,s,true} + Applied Processor: RemoveHeads + Details: Consider the dependency graph 1:S:half#(s(s(x))) -> c_3(half#(x)) -->_1 half#(s(s(x))) -> c_3(half#(x)):1 2:S:if#(false(),x,y) -> c_4(log2#(half(x),y),half#(x)) -->_1 log2#(x,y) -> c_12(if#(le(x,s(0())),x,inc(y)),le#(x,s(0())),inc#(y)):6 -->_2 half#(s(s(x))) -> c_3(half#(x)):1 3:S:inc#(s(x)) -> c_7(inc#(x)) -->_1 inc#(s(x)) -> c_7(inc#(x)):3 4:S:le#(s(x),s(y)) -> c_10(le#(x,y)) -->_1 le#(s(x),s(y)) -> c_10(le#(x,y)):4 5:S:log#(x) -> c_11(log2#(x,0())) -->_1 log2#(x,y) -> c_12(if#(le(x,s(0())),x,inc(y)),le#(x,s(0())),inc#(y)):6 6:S:log2#(x,y) -> c_12(if#(le(x,s(0())),x,inc(y)),le#(x,s(0())),inc#(y)) -->_2 le#(s(x),s(y)) -> c_10(le#(x,y)):4 -->_3 inc#(s(x)) -> c_7(inc#(x)):3 -->_1 if#(false(),x,y) -> c_4(log2#(half(x),y),half#(x)):2 Following roots of the dependency graph are removed, as the considered set of starting terms is closed under reduction with respect to these rules (modulo compound contexts). [(5,log#(x) -> c_11(log2#(x,0())))] * Step 6: Failure MAYBE + Considered Problem: - Strict DPs: half#(s(s(x))) -> c_3(half#(x)) if#(false(),x,y) -> c_4(log2#(half(x),y),half#(x)) inc#(s(x)) -> c_7(inc#(x)) le#(s(x),s(y)) -> c_10(le#(x,y)) log2#(x,y) -> c_12(if#(le(x,s(0())),x,inc(y)),le#(x,s(0())),inc#(y)) - Weak TRS: half(0()) -> 0() half(s(0())) -> 0() half(s(s(x))) -> s(half(x)) inc(0()) -> 0() inc(s(x)) -> s(inc(x)) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) - Signature: {half/1,if/3,inc/1,le/2,log/1,log2/2,half#/1,if#/3,inc#/1,le#/2,log#/1,log2#/2} / {0/0,false/0,s/1,true/0 ,c_1/0,c_2/0,c_3/1,c_4/2,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1,c_11/1,c_12/3} - Obligation: innermost runtime complexity wrt. defined symbols {half#,if#,inc#,le#,log#,log2#} and constructors {0,false ,s,true} + Applied Processor: EmptyProcessor + Details: The problem is still open. MAYBE