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