MAYBE * Step 1: DependencyPairs MAYBE + Considered Problem: - Strict TRS: 10() -> s(s(s(s(s(s(s(s(s(s(0())))))))))) gen(x) -> if1(le(x,10()),x) if1(false(),x) -> nil() if1(true(),x) -> if2(x,x) if2(x,y) -> if3(le(y,10()),x,y) if3(false(),x,y) -> gen(s(x)) if3(true(),x,y) -> cons(entry(x,y,times(x,y)),if2(x,s(y))) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) table() -> gen(s(0())) times(0(),y) -> 0() times(s(x),y) -> plus(y,times(x,y)) - Signature: {10/0,gen/1,if1/2,if2/2,if3/3,le/2,plus/2,table/0,times/2} / {0/0,cons/2,entry/3,false/0,nil/0,s/1,true/0} - Obligation: innermost runtime complexity wrt. defined symbols {10,gen,if1,if2,if3,le,plus,table ,times} and constructors {0,cons,entry,false,nil,s,true} + Applied Processor: DependencyPairs {dpKind_ = DT} + Details: We add the following dependency tuples: Strict DPs 10#() -> c_1() gen#(x) -> c_2(if1#(le(x,10()),x),le#(x,10()),10#()) if1#(false(),x) -> c_3() if1#(true(),x) -> c_4(if2#(x,x)) if2#(x,y) -> c_5(if3#(le(y,10()),x,y),le#(y,10()),10#()) if3#(false(),x,y) -> c_6(gen#(s(x))) if3#(true(),x,y) -> c_7(times#(x,y),if2#(x,s(y))) le#(0(),y) -> c_8() le#(s(x),0()) -> c_9() le#(s(x),s(y)) -> c_10(le#(x,y)) plus#(0(),y) -> c_11() plus#(s(x),y) -> c_12(plus#(x,y)) table#() -> c_13(gen#(s(0()))) times#(0(),y) -> c_14() times#(s(x),y) -> c_15(plus#(y,times(x,y)),times#(x,y)) Weak DPs and mark the set of starting terms. * Step 2: UsableRules MAYBE + Considered Problem: - Strict DPs: 10#() -> c_1() gen#(x) -> c_2(if1#(le(x,10()),x),le#(x,10()),10#()) if1#(false(),x) -> c_3() if1#(true(),x) -> c_4(if2#(x,x)) if2#(x,y) -> c_5(if3#(le(y,10()),x,y),le#(y,10()),10#()) if3#(false(),x,y) -> c_6(gen#(s(x))) if3#(true(),x,y) -> c_7(times#(x,y),if2#(x,s(y))) le#(0(),y) -> c_8() le#(s(x),0()) -> c_9() le#(s(x),s(y)) -> c_10(le#(x,y)) plus#(0(),y) -> c_11() plus#(s(x),y) -> c_12(plus#(x,y)) table#() -> c_13(gen#(s(0()))) times#(0(),y) -> c_14() times#(s(x),y) -> c_15(plus#(y,times(x,y)),times#(x,y)) - Weak TRS: 10() -> s(s(s(s(s(s(s(s(s(s(0())))))))))) gen(x) -> if1(le(x,10()),x) if1(false(),x) -> nil() if1(true(),x) -> if2(x,x) if2(x,y) -> if3(le(y,10()),x,y) if3(false(),x,y) -> gen(s(x)) if3(true(),x,y) -> cons(entry(x,y,times(x,y)),if2(x,s(y))) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) table() -> gen(s(0())) times(0(),y) -> 0() times(s(x),y) -> plus(y,times(x,y)) - Signature: {10/0,gen/1,if1/2,if2/2,if3/3,le/2,plus/2,table/0,times/2,10#/0,gen#/1,if1#/2,if2#/2,if3#/3,le#/2,plus#/2 ,table#/0,times#/2} / {0/0,cons/2,entry/3,false/0,nil/0,s/1,true/0,c_1/0,c_2/3,c_3/0,c_4/1,c_5/3,c_6/1,c_7/2 ,c_8/0,c_9/0,c_10/1,c_11/0,c_12/1,c_13/1,c_14/0,c_15/2} - Obligation: innermost runtime complexity wrt. defined symbols {10#,gen#,if1#,if2#,if3#,le#,plus#,table# ,times#} and constructors {0,cons,entry,false,nil,s,true} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: 10() -> s(s(s(s(s(s(s(s(s(s(0())))))))))) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) times(0(),y) -> 0() times(s(x),y) -> plus(y,times(x,y)) 10#() -> c_1() gen#(x) -> c_2(if1#(le(x,10()),x),le#(x,10()),10#()) if1#(false(),x) -> c_3() if1#(true(),x) -> c_4(if2#(x,x)) if2#(x,y) -> c_5(if3#(le(y,10()),x,y),le#(y,10()),10#()) if3#(false(),x,y) -> c_6(gen#(s(x))) if3#(true(),x,y) -> c_7(times#(x,y),if2#(x,s(y))) le#(0(),y) -> c_8() le#(s(x),0()) -> c_9() le#(s(x),s(y)) -> c_10(le#(x,y)) plus#(0(),y) -> c_11() plus#(s(x),y) -> c_12(plus#(x,y)) table#() -> c_13(gen#(s(0()))) times#(0(),y) -> c_14() times#(s(x),y) -> c_15(plus#(y,times(x,y)),times#(x,y)) * Step 3: PredecessorEstimation MAYBE + Considered Problem: - Strict DPs: 10#() -> c_1() gen#(x) -> c_2(if1#(le(x,10()),x),le#(x,10()),10#()) if1#(false(),x) -> c_3() if1#(true(),x) -> c_4(if2#(x,x)) if2#(x,y) -> c_5(if3#(le(y,10()),x,y),le#(y,10()),10#()) if3#(false(),x,y) -> c_6(gen#(s(x))) if3#(true(),x,y) -> c_7(times#(x,y),if2#(x,s(y))) le#(0(),y) -> c_8() le#(s(x),0()) -> c_9() le#(s(x),s(y)) -> c_10(le#(x,y)) plus#(0(),y) -> c_11() plus#(s(x),y) -> c_12(plus#(x,y)) table#() -> c_13(gen#(s(0()))) times#(0(),y) -> c_14() times#(s(x),y) -> c_15(plus#(y,times(x,y)),times#(x,y)) - Weak TRS: 10() -> s(s(s(s(s(s(s(s(s(s(0())))))))))) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) times(0(),y) -> 0() times(s(x),y) -> plus(y,times(x,y)) - Signature: {10/0,gen/1,if1/2,if2/2,if3/3,le/2,plus/2,table/0,times/2,10#/0,gen#/1,if1#/2,if2#/2,if3#/3,le#/2,plus#/2 ,table#/0,times#/2} / {0/0,cons/2,entry/3,false/0,nil/0,s/1,true/0,c_1/0,c_2/3,c_3/0,c_4/1,c_5/3,c_6/1,c_7/2 ,c_8/0,c_9/0,c_10/1,c_11/0,c_12/1,c_13/1,c_14/0,c_15/2} - Obligation: innermost runtime complexity wrt. defined symbols {10#,gen#,if1#,if2#,if3#,le#,plus#,table# ,times#} and constructors {0,cons,entry,false,nil,s,true} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {1,3,8,9,11,14} by application of Pre({1,3,8,9,11,14}) = {2,5,7,10,12,15}. Here rules are labelled as follows: 1: 10#() -> c_1() 2: gen#(x) -> c_2(if1#(le(x,10()),x),le#(x,10()),10#()) 3: if1#(false(),x) -> c_3() 4: if1#(true(),x) -> c_4(if2#(x,x)) 5: if2#(x,y) -> c_5(if3#(le(y,10()),x,y),le#(y,10()),10#()) 6: if3#(false(),x,y) -> c_6(gen#(s(x))) 7: if3#(true(),x,y) -> c_7(times#(x,y),if2#(x,s(y))) 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: plus#(0(),y) -> c_11() 12: plus#(s(x),y) -> c_12(plus#(x,y)) 13: table#() -> c_13(gen#(s(0()))) 14: times#(0(),y) -> c_14() 15: times#(s(x),y) -> c_15(plus#(y,times(x,y)),times#(x,y)) * Step 4: RemoveWeakSuffixes MAYBE + Considered Problem: - Strict DPs: gen#(x) -> c_2(if1#(le(x,10()),x),le#(x,10()),10#()) if1#(true(),x) -> c_4(if2#(x,x)) if2#(x,y) -> c_5(if3#(le(y,10()),x,y),le#(y,10()),10#()) if3#(false(),x,y) -> c_6(gen#(s(x))) if3#(true(),x,y) -> c_7(times#(x,y),if2#(x,s(y))) le#(s(x),s(y)) -> c_10(le#(x,y)) plus#(s(x),y) -> c_12(plus#(x,y)) table#() -> c_13(gen#(s(0()))) times#(s(x),y) -> c_15(plus#(y,times(x,y)),times#(x,y)) - Weak DPs: 10#() -> c_1() if1#(false(),x) -> c_3() le#(0(),y) -> c_8() le#(s(x),0()) -> c_9() plus#(0(),y) -> c_11() times#(0(),y) -> c_14() - Weak TRS: 10() -> s(s(s(s(s(s(s(s(s(s(0())))))))))) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) times(0(),y) -> 0() times(s(x),y) -> plus(y,times(x,y)) - Signature: {10/0,gen/1,if1/2,if2/2,if3/3,le/2,plus/2,table/0,times/2,10#/0,gen#/1,if1#/2,if2#/2,if3#/3,le#/2,plus#/2 ,table#/0,times#/2} / {0/0,cons/2,entry/3,false/0,nil/0,s/1,true/0,c_1/0,c_2/3,c_3/0,c_4/1,c_5/3,c_6/1,c_7/2 ,c_8/0,c_9/0,c_10/1,c_11/0,c_12/1,c_13/1,c_14/0,c_15/2} - Obligation: innermost runtime complexity wrt. defined symbols {10#,gen#,if1#,if2#,if3#,le#,plus#,table# ,times#} and constructors {0,cons,entry,false,nil,s,true} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:gen#(x) -> c_2(if1#(le(x,10()),x),le#(x,10()),10#()) -->_2 le#(s(x),s(y)) -> c_10(le#(x,y)):6 -->_1 if1#(true(),x) -> c_4(if2#(x,x)):2 -->_2 le#(s(x),0()) -> c_9():13 -->_2 le#(0(),y) -> c_8():12 -->_1 if1#(false(),x) -> c_3():11 -->_3 10#() -> c_1():10 2:S:if1#(true(),x) -> c_4(if2#(x,x)) -->_1 if2#(x,y) -> c_5(if3#(le(y,10()),x,y),le#(y,10()),10#()):3 3:S:if2#(x,y) -> c_5(if3#(le(y,10()),x,y),le#(y,10()),10#()) -->_2 le#(s(x),s(y)) -> c_10(le#(x,y)):6 -->_1 if3#(true(),x,y) -> c_7(times#(x,y),if2#(x,s(y))):5 -->_1 if3#(false(),x,y) -> c_6(gen#(s(x))):4 -->_2 le#(s(x),0()) -> c_9():13 -->_2 le#(0(),y) -> c_8():12 -->_3 10#() -> c_1():10 4:S:if3#(false(),x,y) -> c_6(gen#(s(x))) -->_1 gen#(x) -> c_2(if1#(le(x,10()),x),le#(x,10()),10#()):1 5:S:if3#(true(),x,y) -> c_7(times#(x,y),if2#(x,s(y))) -->_1 times#(s(x),y) -> c_15(plus#(y,times(x,y)),times#(x,y)):9 -->_1 times#(0(),y) -> c_14():15 -->_2 if2#(x,y) -> c_5(if3#(le(y,10()),x,y),le#(y,10()),10#()):3 6:S:le#(s(x),s(y)) -> c_10(le#(x,y)) -->_1 le#(s(x),0()) -> c_9():13 -->_1 le#(0(),y) -> c_8():12 -->_1 le#(s(x),s(y)) -> c_10(le#(x,y)):6 7:S:plus#(s(x),y) -> c_12(plus#(x,y)) -->_1 plus#(0(),y) -> c_11():14 -->_1 plus#(s(x),y) -> c_12(plus#(x,y)):7 8:S:table#() -> c_13(gen#(s(0()))) -->_1 gen#(x) -> c_2(if1#(le(x,10()),x),le#(x,10()),10#()):1 9:S:times#(s(x),y) -> c_15(plus#(y,times(x,y)),times#(x,y)) -->_2 times#(0(),y) -> c_14():15 -->_1 plus#(0(),y) -> c_11():14 -->_2 times#(s(x),y) -> c_15(plus#(y,times(x,y)),times#(x,y)):9 -->_1 plus#(s(x),y) -> c_12(plus#(x,y)):7 10:W:10#() -> c_1() 11:W:if1#(false(),x) -> c_3() 12:W:le#(0(),y) -> c_8() 13:W:le#(s(x),0()) -> c_9() 14:W:plus#(0(),y) -> c_11() 15:W:times#(0(),y) -> c_14() The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 11: if1#(false(),x) -> c_3() 10: 10#() -> c_1() 14: plus#(0(),y) -> c_11() 15: times#(0(),y) -> c_14() 12: le#(0(),y) -> c_8() 13: le#(s(x),0()) -> c_9() * Step 5: SimplifyRHS MAYBE + Considered Problem: - Strict DPs: gen#(x) -> c_2(if1#(le(x,10()),x),le#(x,10()),10#()) if1#(true(),x) -> c_4(if2#(x,x)) if2#(x,y) -> c_5(if3#(le(y,10()),x,y),le#(y,10()),10#()) if3#(false(),x,y) -> c_6(gen#(s(x))) if3#(true(),x,y) -> c_7(times#(x,y),if2#(x,s(y))) le#(s(x),s(y)) -> c_10(le#(x,y)) plus#(s(x),y) -> c_12(plus#(x,y)) table#() -> c_13(gen#(s(0()))) times#(s(x),y) -> c_15(plus#(y,times(x,y)),times#(x,y)) - Weak TRS: 10() -> s(s(s(s(s(s(s(s(s(s(0())))))))))) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) times(0(),y) -> 0() times(s(x),y) -> plus(y,times(x,y)) - Signature: {10/0,gen/1,if1/2,if2/2,if3/3,le/2,plus/2,table/0,times/2,10#/0,gen#/1,if1#/2,if2#/2,if3#/3,le#/2,plus#/2 ,table#/0,times#/2} / {0/0,cons/2,entry/3,false/0,nil/0,s/1,true/0,c_1/0,c_2/3,c_3/0,c_4/1,c_5/3,c_6/1,c_7/2 ,c_8/0,c_9/0,c_10/1,c_11/0,c_12/1,c_13/1,c_14/0,c_15/2} - Obligation: innermost runtime complexity wrt. defined symbols {10#,gen#,if1#,if2#,if3#,le#,plus#,table# ,times#} and constructors {0,cons,entry,false,nil,s,true} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:gen#(x) -> c_2(if1#(le(x,10()),x),le#(x,10()),10#()) -->_2 le#(s(x),s(y)) -> c_10(le#(x,y)):6 -->_1 if1#(true(),x) -> c_4(if2#(x,x)):2 2:S:if1#(true(),x) -> c_4(if2#(x,x)) -->_1 if2#(x,y) -> c_5(if3#(le(y,10()),x,y),le#(y,10()),10#()):3 3:S:if2#(x,y) -> c_5(if3#(le(y,10()),x,y),le#(y,10()),10#()) -->_2 le#(s(x),s(y)) -> c_10(le#(x,y)):6 -->_1 if3#(true(),x,y) -> c_7(times#(x,y),if2#(x,s(y))):5 -->_1 if3#(false(),x,y) -> c_6(gen#(s(x))):4 4:S:if3#(false(),x,y) -> c_6(gen#(s(x))) -->_1 gen#(x) -> c_2(if1#(le(x,10()),x),le#(x,10()),10#()):1 5:S:if3#(true(),x,y) -> c_7(times#(x,y),if2#(x,s(y))) -->_1 times#(s(x),y) -> c_15(plus#(y,times(x,y)),times#(x,y)):9 -->_2 if2#(x,y) -> c_5(if3#(le(y,10()),x,y),le#(y,10()),10#()):3 6:S:le#(s(x),s(y)) -> c_10(le#(x,y)) -->_1 le#(s(x),s(y)) -> c_10(le#(x,y)):6 7:S:plus#(s(x),y) -> c_12(plus#(x,y)) -->_1 plus#(s(x),y) -> c_12(plus#(x,y)):7 8:S:table#() -> c_13(gen#(s(0()))) -->_1 gen#(x) -> c_2(if1#(le(x,10()),x),le#(x,10()),10#()):1 9:S:times#(s(x),y) -> c_15(plus#(y,times(x,y)),times#(x,y)) -->_2 times#(s(x),y) -> c_15(plus#(y,times(x,y)),times#(x,y)):9 -->_1 plus#(s(x),y) -> c_12(plus#(x,y)):7 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: gen#(x) -> c_2(if1#(le(x,10()),x),le#(x,10())) if2#(x,y) -> c_5(if3#(le(y,10()),x,y),le#(y,10())) * Step 6: RemoveHeads MAYBE + Considered Problem: - Strict DPs: gen#(x) -> c_2(if1#(le(x,10()),x),le#(x,10())) if1#(true(),x) -> c_4(if2#(x,x)) if2#(x,y) -> c_5(if3#(le(y,10()),x,y),le#(y,10())) if3#(false(),x,y) -> c_6(gen#(s(x))) if3#(true(),x,y) -> c_7(times#(x,y),if2#(x,s(y))) le#(s(x),s(y)) -> c_10(le#(x,y)) plus#(s(x),y) -> c_12(plus#(x,y)) table#() -> c_13(gen#(s(0()))) times#(s(x),y) -> c_15(plus#(y,times(x,y)),times#(x,y)) - Weak TRS: 10() -> s(s(s(s(s(s(s(s(s(s(0())))))))))) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) times(0(),y) -> 0() times(s(x),y) -> plus(y,times(x,y)) - Signature: {10/0,gen/1,if1/2,if2/2,if3/3,le/2,plus/2,table/0,times/2,10#/0,gen#/1,if1#/2,if2#/2,if3#/3,le#/2,plus#/2 ,table#/0,times#/2} / {0/0,cons/2,entry/3,false/0,nil/0,s/1,true/0,c_1/0,c_2/2,c_3/0,c_4/1,c_5/2,c_6/1,c_7/2 ,c_8/0,c_9/0,c_10/1,c_11/0,c_12/1,c_13/1,c_14/0,c_15/2} - Obligation: innermost runtime complexity wrt. defined symbols {10#,gen#,if1#,if2#,if3#,le#,plus#,table# ,times#} and constructors {0,cons,entry,false,nil,s,true} + Applied Processor: RemoveHeads + Details: Consider the dependency graph 1:S:gen#(x) -> c_2(if1#(le(x,10()),x),le#(x,10())) -->_2 le#(s(x),s(y)) -> c_10(le#(x,y)):6 -->_1 if1#(true(),x) -> c_4(if2#(x,x)):2 2:S:if1#(true(),x) -> c_4(if2#(x,x)) -->_1 if2#(x,y) -> c_5(if3#(le(y,10()),x,y),le#(y,10())):3 3:S:if2#(x,y) -> c_5(if3#(le(y,10()),x,y),le#(y,10())) -->_2 le#(s(x),s(y)) -> c_10(le#(x,y)):6 -->_1 if3#(true(),x,y) -> c_7(times#(x,y),if2#(x,s(y))):5 -->_1 if3#(false(),x,y) -> c_6(gen#(s(x))):4 4:S:if3#(false(),x,y) -> c_6(gen#(s(x))) -->_1 gen#(x) -> c_2(if1#(le(x,10()),x),le#(x,10())):1 5:S:if3#(true(),x,y) -> c_7(times#(x,y),if2#(x,s(y))) -->_1 times#(s(x),y) -> c_15(plus#(y,times(x,y)),times#(x,y)):9 -->_2 if2#(x,y) -> c_5(if3#(le(y,10()),x,y),le#(y,10())):3 6:S:le#(s(x),s(y)) -> c_10(le#(x,y)) -->_1 le#(s(x),s(y)) -> c_10(le#(x,y)):6 7:S:plus#(s(x),y) -> c_12(plus#(x,y)) -->_1 plus#(s(x),y) -> c_12(plus#(x,y)):7 8:S:table#() -> c_13(gen#(s(0()))) -->_1 gen#(x) -> c_2(if1#(le(x,10()),x),le#(x,10())):1 9:S:times#(s(x),y) -> c_15(plus#(y,times(x,y)),times#(x,y)) -->_2 times#(s(x),y) -> c_15(plus#(y,times(x,y)),times#(x,y)):9 -->_1 plus#(s(x),y) -> c_12(plus#(x,y)):7 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). [(8,table#() -> c_13(gen#(s(0()))))] * Step 7: Failure MAYBE + Considered Problem: - Strict DPs: gen#(x) -> c_2(if1#(le(x,10()),x),le#(x,10())) if1#(true(),x) -> c_4(if2#(x,x)) if2#(x,y) -> c_5(if3#(le(y,10()),x,y),le#(y,10())) if3#(false(),x,y) -> c_6(gen#(s(x))) if3#(true(),x,y) -> c_7(times#(x,y),if2#(x,s(y))) le#(s(x),s(y)) -> c_10(le#(x,y)) plus#(s(x),y) -> c_12(plus#(x,y)) times#(s(x),y) -> c_15(plus#(y,times(x,y)),times#(x,y)) - Weak TRS: 10() -> s(s(s(s(s(s(s(s(s(s(0())))))))))) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) times(0(),y) -> 0() times(s(x),y) -> plus(y,times(x,y)) - Signature: {10/0,gen/1,if1/2,if2/2,if3/3,le/2,plus/2,table/0,times/2,10#/0,gen#/1,if1#/2,if2#/2,if3#/3,le#/2,plus#/2 ,table#/0,times#/2} / {0/0,cons/2,entry/3,false/0,nil/0,s/1,true/0,c_1/0,c_2/2,c_3/0,c_4/1,c_5/2,c_6/1,c_7/2 ,c_8/0,c_9/0,c_10/1,c_11/0,c_12/1,c_13/1,c_14/0,c_15/2} - Obligation: innermost runtime complexity wrt. defined symbols {10#,gen#,if1#,if2#,if3#,le#,plus#,table# ,times#} and constructors {0,cons,entry,false,nil,s,true} + Applied Processor: EmptyProcessor + Details: The problem is still open. MAYBE