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