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