MAYBE * Step 1: DependencyPairs MAYBE + Considered Problem: - Strict TRS: ge(x,0()) -> true() ge(0(),s(x)) -> false() ge(s(x),s(y)) -> ge(x,y) half(x) -> if(ge(x,s(s(0()))),x) if(false(),x) -> 0() if(true(),x) -> s(half(p(p(x)))) log(0()) -> 0() log(s(x)) -> s(log(half(s(x)))) p(0()) -> 0() p(s(x)) -> x - Signature: {ge/2,half/1,if/2,log/1,p/1} / {0/0,false/0,s/1,true/0} - Obligation: innermost runtime complexity wrt. defined symbols {ge,half,if,log,p} and constructors {0,false,s,true} + Applied Processor: DependencyPairs {dpKind_ = DT} + Details: We add the following dependency tuples: Strict DPs ge#(x,0()) -> c_1() ge#(0(),s(x)) -> c_2() ge#(s(x),s(y)) -> c_3(ge#(x,y)) half#(x) -> c_4(if#(ge(x,s(s(0()))),x),ge#(x,s(s(0())))) if#(false(),x) -> c_5() if#(true(),x) -> c_6(half#(p(p(x))),p#(p(x)),p#(x)) log#(0()) -> c_7() log#(s(x)) -> c_8(log#(half(s(x))),half#(s(x))) p#(0()) -> c_9() p#(s(x)) -> c_10() Weak DPs and mark the set of starting terms. * Step 2: UsableRules MAYBE + Considered Problem: - Strict DPs: ge#(x,0()) -> c_1() ge#(0(),s(x)) -> c_2() ge#(s(x),s(y)) -> c_3(ge#(x,y)) half#(x) -> c_4(if#(ge(x,s(s(0()))),x),ge#(x,s(s(0())))) if#(false(),x) -> c_5() if#(true(),x) -> c_6(half#(p(p(x))),p#(p(x)),p#(x)) log#(0()) -> c_7() log#(s(x)) -> c_8(log#(half(s(x))),half#(s(x))) p#(0()) -> c_9() p#(s(x)) -> c_10() - Weak TRS: ge(x,0()) -> true() ge(0(),s(x)) -> false() ge(s(x),s(y)) -> ge(x,y) half(x) -> if(ge(x,s(s(0()))),x) if(false(),x) -> 0() if(true(),x) -> s(half(p(p(x)))) log(0()) -> 0() log(s(x)) -> s(log(half(s(x)))) p(0()) -> 0() p(s(x)) -> x - Signature: {ge/2,half/1,if/2,log/1,p/1,ge#/2,half#/1,if#/2,log#/1,p#/1} / {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/3,c_7/0,c_8/2,c_9/0,c_10/0} - Obligation: innermost runtime complexity wrt. defined symbols {ge#,half#,if#,log#,p#} and constructors {0,false,s,true} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: ge(x,0()) -> true() ge(0(),s(x)) -> false() ge(s(x),s(y)) -> ge(x,y) half(x) -> if(ge(x,s(s(0()))),x) if(false(),x) -> 0() if(true(),x) -> s(half(p(p(x)))) p(0()) -> 0() p(s(x)) -> x ge#(x,0()) -> c_1() ge#(0(),s(x)) -> c_2() ge#(s(x),s(y)) -> c_3(ge#(x,y)) half#(x) -> c_4(if#(ge(x,s(s(0()))),x),ge#(x,s(s(0())))) if#(false(),x) -> c_5() if#(true(),x) -> c_6(half#(p(p(x))),p#(p(x)),p#(x)) log#(0()) -> c_7() log#(s(x)) -> c_8(log#(half(s(x))),half#(s(x))) p#(0()) -> c_9() p#(s(x)) -> c_10() * Step 3: PredecessorEstimation MAYBE + Considered Problem: - Strict DPs: ge#(x,0()) -> c_1() ge#(0(),s(x)) -> c_2() ge#(s(x),s(y)) -> c_3(ge#(x,y)) half#(x) -> c_4(if#(ge(x,s(s(0()))),x),ge#(x,s(s(0())))) if#(false(),x) -> c_5() if#(true(),x) -> c_6(half#(p(p(x))),p#(p(x)),p#(x)) log#(0()) -> c_7() log#(s(x)) -> c_8(log#(half(s(x))),half#(s(x))) p#(0()) -> c_9() p#(s(x)) -> c_10() - Weak TRS: ge(x,0()) -> true() ge(0(),s(x)) -> false() ge(s(x),s(y)) -> ge(x,y) half(x) -> if(ge(x,s(s(0()))),x) if(false(),x) -> 0() if(true(),x) -> s(half(p(p(x)))) p(0()) -> 0() p(s(x)) -> x - Signature: {ge/2,half/1,if/2,log/1,p/1,ge#/2,half#/1,if#/2,log#/1,p#/1} / {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/3,c_7/0,c_8/2,c_9/0,c_10/0} - Obligation: innermost runtime complexity wrt. defined symbols {ge#,half#,if#,log#,p#} 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,7,9,10} by application of Pre({1,2,5,7,9,10}) = {3,4,6,8}. Here rules are labelled as follows: 1: ge#(x,0()) -> c_1() 2: ge#(0(),s(x)) -> c_2() 3: ge#(s(x),s(y)) -> c_3(ge#(x,y)) 4: half#(x) -> c_4(if#(ge(x,s(s(0()))),x),ge#(x,s(s(0())))) 5: if#(false(),x) -> c_5() 6: if#(true(),x) -> c_6(half#(p(p(x))),p#(p(x)),p#(x)) 7: log#(0()) -> c_7() 8: log#(s(x)) -> c_8(log#(half(s(x))),half#(s(x))) 9: p#(0()) -> c_9() 10: p#(s(x)) -> c_10() * Step 4: RemoveWeakSuffixes MAYBE + Considered Problem: - Strict DPs: ge#(s(x),s(y)) -> c_3(ge#(x,y)) half#(x) -> c_4(if#(ge(x,s(s(0()))),x),ge#(x,s(s(0())))) if#(true(),x) -> c_6(half#(p(p(x))),p#(p(x)),p#(x)) log#(s(x)) -> c_8(log#(half(s(x))),half#(s(x))) - Weak DPs: ge#(x,0()) -> c_1() ge#(0(),s(x)) -> c_2() if#(false(),x) -> c_5() log#(0()) -> c_7() p#(0()) -> c_9() p#(s(x)) -> c_10() - Weak TRS: ge(x,0()) -> true() ge(0(),s(x)) -> false() ge(s(x),s(y)) -> ge(x,y) half(x) -> if(ge(x,s(s(0()))),x) if(false(),x) -> 0() if(true(),x) -> s(half(p(p(x)))) p(0()) -> 0() p(s(x)) -> x - Signature: {ge/2,half/1,if/2,log/1,p/1,ge#/2,half#/1,if#/2,log#/1,p#/1} / {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/3,c_7/0,c_8/2,c_9/0,c_10/0} - Obligation: innermost runtime complexity wrt. defined symbols {ge#,half#,if#,log#,p#} and constructors {0,false,s,true} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:ge#(s(x),s(y)) -> c_3(ge#(x,y)) -->_1 ge#(0(),s(x)) -> c_2():6 -->_1 ge#(x,0()) -> c_1():5 -->_1 ge#(s(x),s(y)) -> c_3(ge#(x,y)):1 2:S:half#(x) -> c_4(if#(ge(x,s(s(0()))),x),ge#(x,s(s(0())))) -->_1 if#(true(),x) -> c_6(half#(p(p(x))),p#(p(x)),p#(x)):3 -->_1 if#(false(),x) -> c_5():7 -->_2 ge#(0(),s(x)) -> c_2():6 -->_2 ge#(s(x),s(y)) -> c_3(ge#(x,y)):1 3:S:if#(true(),x) -> c_6(half#(p(p(x))),p#(p(x)),p#(x)) -->_3 p#(s(x)) -> c_10():10 -->_2 p#(s(x)) -> c_10():10 -->_3 p#(0()) -> c_9():9 -->_2 p#(0()) -> c_9():9 -->_1 half#(x) -> c_4(if#(ge(x,s(s(0()))),x),ge#(x,s(s(0())))):2 4:S:log#(s(x)) -> c_8(log#(half(s(x))),half#(s(x))) -->_1 log#(0()) -> c_7():8 -->_1 log#(s(x)) -> c_8(log#(half(s(x))),half#(s(x))):4 -->_2 half#(x) -> c_4(if#(ge(x,s(s(0()))),x),ge#(x,s(s(0())))):2 5:W:ge#(x,0()) -> c_1() 6:W:ge#(0(),s(x)) -> c_2() 7:W:if#(false(),x) -> c_5() 8:W:log#(0()) -> c_7() 9:W:p#(0()) -> c_9() 10:W:p#(s(x)) -> c_10() The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 8: log#(0()) -> c_7() 7: if#(false(),x) -> c_5() 9: p#(0()) -> c_9() 10: p#(s(x)) -> c_10() 5: ge#(x,0()) -> c_1() 6: ge#(0(),s(x)) -> c_2() * Step 5: SimplifyRHS MAYBE + Considered Problem: - Strict DPs: ge#(s(x),s(y)) -> c_3(ge#(x,y)) half#(x) -> c_4(if#(ge(x,s(s(0()))),x),ge#(x,s(s(0())))) if#(true(),x) -> c_6(half#(p(p(x))),p#(p(x)),p#(x)) log#(s(x)) -> c_8(log#(half(s(x))),half#(s(x))) - Weak TRS: ge(x,0()) -> true() ge(0(),s(x)) -> false() ge(s(x),s(y)) -> ge(x,y) half(x) -> if(ge(x,s(s(0()))),x) if(false(),x) -> 0() if(true(),x) -> s(half(p(p(x)))) p(0()) -> 0() p(s(x)) -> x - Signature: {ge/2,half/1,if/2,log/1,p/1,ge#/2,half#/1,if#/2,log#/1,p#/1} / {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/3,c_7/0,c_8/2,c_9/0,c_10/0} - Obligation: innermost runtime complexity wrt. defined symbols {ge#,half#,if#,log#,p#} and constructors {0,false,s,true} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:ge#(s(x),s(y)) -> c_3(ge#(x,y)) -->_1 ge#(s(x),s(y)) -> c_3(ge#(x,y)):1 2:S:half#(x) -> c_4(if#(ge(x,s(s(0()))),x),ge#(x,s(s(0())))) -->_1 if#(true(),x) -> c_6(half#(p(p(x))),p#(p(x)),p#(x)):3 -->_2 ge#(s(x),s(y)) -> c_3(ge#(x,y)):1 3:S:if#(true(),x) -> c_6(half#(p(p(x))),p#(p(x)),p#(x)) -->_1 half#(x) -> c_4(if#(ge(x,s(s(0()))),x),ge#(x,s(s(0())))):2 4:S:log#(s(x)) -> c_8(log#(half(s(x))),half#(s(x))) -->_1 log#(s(x)) -> c_8(log#(half(s(x))),half#(s(x))):4 -->_2 half#(x) -> c_4(if#(ge(x,s(s(0()))),x),ge#(x,s(s(0())))):2 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: if#(true(),x) -> c_6(half#(p(p(x)))) * Step 6: Failure MAYBE + Considered Problem: - Strict DPs: ge#(s(x),s(y)) -> c_3(ge#(x,y)) half#(x) -> c_4(if#(ge(x,s(s(0()))),x),ge#(x,s(s(0())))) if#(true(),x) -> c_6(half#(p(p(x)))) log#(s(x)) -> c_8(log#(half(s(x))),half#(s(x))) - Weak TRS: ge(x,0()) -> true() ge(0(),s(x)) -> false() ge(s(x),s(y)) -> ge(x,y) half(x) -> if(ge(x,s(s(0()))),x) if(false(),x) -> 0() if(true(),x) -> s(half(p(p(x)))) p(0()) -> 0() p(s(x)) -> x - Signature: {ge/2,half/1,if/2,log/1,p/1,ge#/2,half#/1,if#/2,log#/1,p#/1} / {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/1,c_7/0,c_8/2,c_9/0,c_10/0} - Obligation: innermost runtime complexity wrt. defined symbols {ge#,half#,if#,log#,p#} and constructors {0,false,s,true} + Applied Processor: EmptyProcessor + Details: The problem is still open. MAYBE