MAYBE * Step 1: InnermostRuleRemoval MAYBE + Considered Problem: - Strict TRS: 0() -> n__0() activate(X) -> X activate(n__0()) -> 0() activate(n__s(X)) -> s(X) diff(X,Y) -> if(leq(X,Y),n__0(),n__s(diff(p(X),Y))) if(false(),X,Y) -> activate(Y) if(true(),X,Y) -> activate(X) leq(0(),Y) -> true() leq(s(X),0()) -> false() leq(s(X),s(Y)) -> leq(X,Y) p(0()) -> 0() p(s(X)) -> X s(X) -> n__s(X) - Signature: {0/0,activate/1,diff/2,if/3,leq/2,p/1,s/1} / {false/0,n__0/0,n__s/1,true/0} - Obligation: innermost runtime complexity wrt. defined symbols {0,activate,diff,if,leq,p,s} and constructors {false,n__0 ,n__s,true} + Applied Processor: InnermostRuleRemoval + Details: Arguments of following rules are not normal-forms. leq(0(),Y) -> true() leq(s(X),0()) -> false() leq(s(X),s(Y)) -> leq(X,Y) p(0()) -> 0() p(s(X)) -> X All above mentioned rules can be savely removed. * Step 2: DependencyPairs MAYBE + Considered Problem: - Strict TRS: 0() -> n__0() activate(X) -> X activate(n__0()) -> 0() activate(n__s(X)) -> s(X) diff(X,Y) -> if(leq(X,Y),n__0(),n__s(diff(p(X),Y))) if(false(),X,Y) -> activate(Y) if(true(),X,Y) -> activate(X) s(X) -> n__s(X) - Signature: {0/0,activate/1,diff/2,if/3,leq/2,p/1,s/1} / {false/0,n__0/0,n__s/1,true/0} - Obligation: innermost runtime complexity wrt. defined symbols {0,activate,diff,if,leq,p,s} and constructors {false,n__0 ,n__s,true} + Applied Processor: DependencyPairs {dpKind_ = DT} + Details: We add the following dependency tuples: Strict DPs 0#() -> c_1() activate#(X) -> c_2() activate#(n__0()) -> c_3(0#()) activate#(n__s(X)) -> c_4(s#(X)) diff#(X,Y) -> c_5(if#(leq(X,Y),n__0(),n__s(diff(p(X),Y))),leq#(X,Y),diff#(p(X),Y),p#(X)) if#(false(),X,Y) -> c_6(activate#(Y)) if#(true(),X,Y) -> c_7(activate#(X)) s#(X) -> c_8() Weak DPs and mark the set of starting terms. * Step 3: UsableRules MAYBE + Considered Problem: - Strict DPs: 0#() -> c_1() activate#(X) -> c_2() activate#(n__0()) -> c_3(0#()) activate#(n__s(X)) -> c_4(s#(X)) diff#(X,Y) -> c_5(if#(leq(X,Y),n__0(),n__s(diff(p(X),Y))),leq#(X,Y),diff#(p(X),Y),p#(X)) if#(false(),X,Y) -> c_6(activate#(Y)) if#(true(),X,Y) -> c_7(activate#(X)) s#(X) -> c_8() - Weak TRS: 0() -> n__0() activate(X) -> X activate(n__0()) -> 0() activate(n__s(X)) -> s(X) diff(X,Y) -> if(leq(X,Y),n__0(),n__s(diff(p(X),Y))) if(false(),X,Y) -> activate(Y) if(true(),X,Y) -> activate(X) s(X) -> n__s(X) - Signature: {0/0,activate/1,diff/2,if/3,leq/2,p/1,s/1,0#/0,activate#/1,diff#/2,if#/3,leq#/2,p#/1,s#/1} / {false/0,n__0/0 ,n__s/1,true/0,c_1/0,c_2/0,c_3/1,c_4/1,c_5/4,c_6/1,c_7/1,c_8/0} - Obligation: innermost runtime complexity wrt. defined symbols {0#,activate#,diff#,if#,leq#,p# ,s#} and constructors {false,n__0,n__s,true} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: diff(X,Y) -> if(leq(X,Y),n__0(),n__s(diff(p(X),Y))) 0#() -> c_1() activate#(X) -> c_2() activate#(n__0()) -> c_3(0#()) activate#(n__s(X)) -> c_4(s#(X)) diff#(X,Y) -> c_5(if#(leq(X,Y),n__0(),n__s(diff(p(X),Y))),leq#(X,Y),diff#(p(X),Y),p#(X)) if#(false(),X,Y) -> c_6(activate#(Y)) if#(true(),X,Y) -> c_7(activate#(X)) s#(X) -> c_8() * Step 4: PredecessorEstimation MAYBE + Considered Problem: - Strict DPs: 0#() -> c_1() activate#(X) -> c_2() activate#(n__0()) -> c_3(0#()) activate#(n__s(X)) -> c_4(s#(X)) diff#(X,Y) -> c_5(if#(leq(X,Y),n__0(),n__s(diff(p(X),Y))),leq#(X,Y),diff#(p(X),Y),p#(X)) if#(false(),X,Y) -> c_6(activate#(Y)) if#(true(),X,Y) -> c_7(activate#(X)) s#(X) -> c_8() - Weak TRS: diff(X,Y) -> if(leq(X,Y),n__0(),n__s(diff(p(X),Y))) - Signature: {0/0,activate/1,diff/2,if/3,leq/2,p/1,s/1,0#/0,activate#/1,diff#/2,if#/3,leq#/2,p#/1,s#/1} / {false/0,n__0/0 ,n__s/1,true/0,c_1/0,c_2/0,c_3/1,c_4/1,c_5/4,c_6/1,c_7/1,c_8/0} - Obligation: innermost runtime complexity wrt. defined symbols {0#,activate#,diff#,if#,leq#,p# ,s#} and constructors {false,n__0,n__s,true} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {1,2,8} by application of Pre({1,2,8}) = {3,4,6,7}. Here rules are labelled as follows: 1: 0#() -> c_1() 2: activate#(X) -> c_2() 3: activate#(n__0()) -> c_3(0#()) 4: activate#(n__s(X)) -> c_4(s#(X)) 5: diff#(X,Y) -> c_5(if#(leq(X,Y),n__0(),n__s(diff(p(X),Y))),leq#(X,Y),diff#(p(X),Y),p#(X)) 6: if#(false(),X,Y) -> c_6(activate#(Y)) 7: if#(true(),X,Y) -> c_7(activate#(X)) 8: s#(X) -> c_8() * Step 5: PredecessorEstimation MAYBE + Considered Problem: - Strict DPs: activate#(n__0()) -> c_3(0#()) activate#(n__s(X)) -> c_4(s#(X)) diff#(X,Y) -> c_5(if#(leq(X,Y),n__0(),n__s(diff(p(X),Y))),leq#(X,Y),diff#(p(X),Y),p#(X)) if#(false(),X,Y) -> c_6(activate#(Y)) if#(true(),X,Y) -> c_7(activate#(X)) - Weak DPs: 0#() -> c_1() activate#(X) -> c_2() s#(X) -> c_8() - Weak TRS: diff(X,Y) -> if(leq(X,Y),n__0(),n__s(diff(p(X),Y))) - Signature: {0/0,activate/1,diff/2,if/3,leq/2,p/1,s/1,0#/0,activate#/1,diff#/2,if#/3,leq#/2,p#/1,s#/1} / {false/0,n__0/0 ,n__s/1,true/0,c_1/0,c_2/0,c_3/1,c_4/1,c_5/4,c_6/1,c_7/1,c_8/0} - Obligation: innermost runtime complexity wrt. defined symbols {0#,activate#,diff#,if#,leq#,p# ,s#} and constructors {false,n__0,n__s,true} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {1,2} by application of Pre({1,2}) = {4,5}. Here rules are labelled as follows: 1: activate#(n__0()) -> c_3(0#()) 2: activate#(n__s(X)) -> c_4(s#(X)) 3: diff#(X,Y) -> c_5(if#(leq(X,Y),n__0(),n__s(diff(p(X),Y))),leq#(X,Y),diff#(p(X),Y),p#(X)) 4: if#(false(),X,Y) -> c_6(activate#(Y)) 5: if#(true(),X,Y) -> c_7(activate#(X)) 6: 0#() -> c_1() 7: activate#(X) -> c_2() 8: s#(X) -> c_8() * Step 6: PredecessorEstimation MAYBE + Considered Problem: - Strict DPs: diff#(X,Y) -> c_5(if#(leq(X,Y),n__0(),n__s(diff(p(X),Y))),leq#(X,Y),diff#(p(X),Y),p#(X)) if#(false(),X,Y) -> c_6(activate#(Y)) if#(true(),X,Y) -> c_7(activate#(X)) - Weak DPs: 0#() -> c_1() activate#(X) -> c_2() activate#(n__0()) -> c_3(0#()) activate#(n__s(X)) -> c_4(s#(X)) s#(X) -> c_8() - Weak TRS: diff(X,Y) -> if(leq(X,Y),n__0(),n__s(diff(p(X),Y))) - Signature: {0/0,activate/1,diff/2,if/3,leq/2,p/1,s/1,0#/0,activate#/1,diff#/2,if#/3,leq#/2,p#/1,s#/1} / {false/0,n__0/0 ,n__s/1,true/0,c_1/0,c_2/0,c_3/1,c_4/1,c_5/4,c_6/1,c_7/1,c_8/0} - Obligation: innermost runtime complexity wrt. defined symbols {0#,activate#,diff#,if#,leq#,p# ,s#} and constructors {false,n__0,n__s,true} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {2,3} by application of Pre({2,3}) = {}. Here rules are labelled as follows: 1: diff#(X,Y) -> c_5(if#(leq(X,Y),n__0(),n__s(diff(p(X),Y))),leq#(X,Y),diff#(p(X),Y),p#(X)) 2: if#(false(),X,Y) -> c_6(activate#(Y)) 3: if#(true(),X,Y) -> c_7(activate#(X)) 4: 0#() -> c_1() 5: activate#(X) -> c_2() 6: activate#(n__0()) -> c_3(0#()) 7: activate#(n__s(X)) -> c_4(s#(X)) 8: s#(X) -> c_8() * Step 7: RemoveWeakSuffixes MAYBE + Considered Problem: - Strict DPs: diff#(X,Y) -> c_5(if#(leq(X,Y),n__0(),n__s(diff(p(X),Y))),leq#(X,Y),diff#(p(X),Y),p#(X)) - Weak DPs: 0#() -> c_1() activate#(X) -> c_2() activate#(n__0()) -> c_3(0#()) activate#(n__s(X)) -> c_4(s#(X)) if#(false(),X,Y) -> c_6(activate#(Y)) if#(true(),X,Y) -> c_7(activate#(X)) s#(X) -> c_8() - Weak TRS: diff(X,Y) -> if(leq(X,Y),n__0(),n__s(diff(p(X),Y))) - Signature: {0/0,activate/1,diff/2,if/3,leq/2,p/1,s/1,0#/0,activate#/1,diff#/2,if#/3,leq#/2,p#/1,s#/1} / {false/0,n__0/0 ,n__s/1,true/0,c_1/0,c_2/0,c_3/1,c_4/1,c_5/4,c_6/1,c_7/1,c_8/0} - Obligation: innermost runtime complexity wrt. defined symbols {0#,activate#,diff#,if#,leq#,p# ,s#} and constructors {false,n__0,n__s,true} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:diff#(X,Y) -> c_5(if#(leq(X,Y),n__0(),n__s(diff(p(X),Y))),leq#(X,Y),diff#(p(X),Y),p#(X)) -->_3 diff#(X,Y) -> c_5(if#(leq(X,Y),n__0(),n__s(diff(p(X),Y))),leq#(X,Y),diff#(p(X),Y),p#(X)):1 2:W:0#() -> c_1() 3:W:activate#(X) -> c_2() 4:W:activate#(n__0()) -> c_3(0#()) -->_1 0#() -> c_1():2 5:W:activate#(n__s(X)) -> c_4(s#(X)) -->_1 s#(X) -> c_8():8 6:W:if#(false(),X,Y) -> c_6(activate#(Y)) -->_1 activate#(n__s(X)) -> c_4(s#(X)):5 -->_1 activate#(n__0()) -> c_3(0#()):4 -->_1 activate#(X) -> c_2():3 7:W:if#(true(),X,Y) -> c_7(activate#(X)) -->_1 activate#(n__s(X)) -> c_4(s#(X)):5 -->_1 activate#(n__0()) -> c_3(0#()):4 -->_1 activate#(X) -> c_2():3 8:W:s#(X) -> c_8() The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 7: if#(true(),X,Y) -> c_7(activate#(X)) 6: if#(false(),X,Y) -> c_6(activate#(Y)) 5: activate#(n__s(X)) -> c_4(s#(X)) 8: s#(X) -> c_8() 4: activate#(n__0()) -> c_3(0#()) 3: activate#(X) -> c_2() 2: 0#() -> c_1() * Step 8: SimplifyRHS MAYBE + Considered Problem: - Strict DPs: diff#(X,Y) -> c_5(if#(leq(X,Y),n__0(),n__s(diff(p(X),Y))),leq#(X,Y),diff#(p(X),Y),p#(X)) - Weak TRS: diff(X,Y) -> if(leq(X,Y),n__0(),n__s(diff(p(X),Y))) - Signature: {0/0,activate/1,diff/2,if/3,leq/2,p/1,s/1,0#/0,activate#/1,diff#/2,if#/3,leq#/2,p#/1,s#/1} / {false/0,n__0/0 ,n__s/1,true/0,c_1/0,c_2/0,c_3/1,c_4/1,c_5/4,c_6/1,c_7/1,c_8/0} - Obligation: innermost runtime complexity wrt. defined symbols {0#,activate#,diff#,if#,leq#,p# ,s#} and constructors {false,n__0,n__s,true} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:diff#(X,Y) -> c_5(if#(leq(X,Y),n__0(),n__s(diff(p(X),Y))),leq#(X,Y),diff#(p(X),Y),p#(X)) -->_3 diff#(X,Y) -> c_5(if#(leq(X,Y),n__0(),n__s(diff(p(X),Y))),leq#(X,Y),diff#(p(X),Y),p#(X)):1 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: diff#(X,Y) -> c_5(diff#(p(X),Y)) * Step 9: UsableRules MAYBE + Considered Problem: - Strict DPs: diff#(X,Y) -> c_5(diff#(p(X),Y)) - Weak TRS: diff(X,Y) -> if(leq(X,Y),n__0(),n__s(diff(p(X),Y))) - Signature: {0/0,activate/1,diff/2,if/3,leq/2,p/1,s/1,0#/0,activate#/1,diff#/2,if#/3,leq#/2,p#/1,s#/1} / {false/0,n__0/0 ,n__s/1,true/0,c_1/0,c_2/0,c_3/1,c_4/1,c_5/1,c_6/1,c_7/1,c_8/0} - Obligation: innermost runtime complexity wrt. defined symbols {0#,activate#,diff#,if#,leq#,p# ,s#} and constructors {false,n__0,n__s,true} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: diff#(X,Y) -> c_5(diff#(p(X),Y)) * Step 10: Failure MAYBE + Considered Problem: - Strict DPs: diff#(X,Y) -> c_5(diff#(p(X),Y)) - Signature: {0/0,activate/1,diff/2,if/3,leq/2,p/1,s/1,0#/0,activate#/1,diff#/2,if#/3,leq#/2,p#/1,s#/1} / {false/0,n__0/0 ,n__s/1,true/0,c_1/0,c_2/0,c_3/1,c_4/1,c_5/1,c_6/1,c_7/1,c_8/0} - Obligation: innermost runtime complexity wrt. defined symbols {0#,activate#,diff#,if#,leq#,p# ,s#} and constructors {false,n__0,n__s,true} + Applied Processor: EmptyProcessor + Details: The problem is still open. MAYBE