MAYBE * Step 1: DependencyPairs MAYBE + Considered Problem: - Strict TRS: add(0(),x) -> x add(s(x),y) -> s(add(x,y)) cond(true(),x,y) -> cond(gr(x,y),x,add(x,y)) gr(0(),x) -> false() gr(s(x),0()) -> true() gr(s(x),s(y)) -> gr(x,y) - Signature: {add/2,cond/3,gr/2} / {0/0,false/0,s/1,true/0} - Obligation: innermost runtime complexity wrt. defined symbols {add,cond,gr} and constructors {0,false,s,true} + Applied Processor: DependencyPairs {dpKind_ = DT} + Details: We add the following dependency tuples: Strict DPs add#(0(),x) -> c_1() add#(s(x),y) -> c_2(add#(x,y)) cond#(true(),x,y) -> c_3(cond#(gr(x,y),x,add(x,y)),gr#(x,y),add#(x,y)) gr#(0(),x) -> c_4() gr#(s(x),0()) -> c_5() gr#(s(x),s(y)) -> c_6(gr#(x,y)) Weak DPs and mark the set of starting terms. * Step 2: UsableRules MAYBE + Considered Problem: - Strict DPs: add#(0(),x) -> c_1() add#(s(x),y) -> c_2(add#(x,y)) cond#(true(),x,y) -> c_3(cond#(gr(x,y),x,add(x,y)),gr#(x,y),add#(x,y)) gr#(0(),x) -> c_4() gr#(s(x),0()) -> c_5() gr#(s(x),s(y)) -> c_6(gr#(x,y)) - Weak TRS: add(0(),x) -> x add(s(x),y) -> s(add(x,y)) cond(true(),x,y) -> cond(gr(x,y),x,add(x,y)) gr(0(),x) -> false() gr(s(x),0()) -> true() gr(s(x),s(y)) -> gr(x,y) - Signature: {add/2,cond/3,gr/2,add#/2,cond#/3,gr#/2} / {0/0,false/0,s/1,true/0,c_1/0,c_2/1,c_3/3,c_4/0,c_5/0,c_6/1} - Obligation: innermost runtime complexity wrt. defined symbols {add#,cond#,gr#} and constructors {0,false,s,true} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: add(0(),x) -> x add(s(x),y) -> s(add(x,y)) gr(0(),x) -> false() gr(s(x),0()) -> true() gr(s(x),s(y)) -> gr(x,y) add#(0(),x) -> c_1() add#(s(x),y) -> c_2(add#(x,y)) cond#(true(),x,y) -> c_3(cond#(gr(x,y),x,add(x,y)),gr#(x,y),add#(x,y)) gr#(0(),x) -> c_4() gr#(s(x),0()) -> c_5() gr#(s(x),s(y)) -> c_6(gr#(x,y)) * Step 3: PredecessorEstimation MAYBE + Considered Problem: - Strict DPs: add#(0(),x) -> c_1() add#(s(x),y) -> c_2(add#(x,y)) cond#(true(),x,y) -> c_3(cond#(gr(x,y),x,add(x,y)),gr#(x,y),add#(x,y)) gr#(0(),x) -> c_4() gr#(s(x),0()) -> c_5() gr#(s(x),s(y)) -> c_6(gr#(x,y)) - Weak TRS: add(0(),x) -> x add(s(x),y) -> s(add(x,y)) gr(0(),x) -> false() gr(s(x),0()) -> true() gr(s(x),s(y)) -> gr(x,y) - Signature: {add/2,cond/3,gr/2,add#/2,cond#/3,gr#/2} / {0/0,false/0,s/1,true/0,c_1/0,c_2/1,c_3/3,c_4/0,c_5/0,c_6/1} - Obligation: innermost runtime complexity wrt. defined symbols {add#,cond#,gr#} and constructors {0,false,s,true} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {1,4,5} by application of Pre({1,4,5}) = {2,3,6}. Here rules are labelled as follows: 1: add#(0(),x) -> c_1() 2: add#(s(x),y) -> c_2(add#(x,y)) 3: cond#(true(),x,y) -> c_3(cond#(gr(x,y),x,add(x,y)),gr#(x,y),add#(x,y)) 4: gr#(0(),x) -> c_4() 5: gr#(s(x),0()) -> c_5() 6: gr#(s(x),s(y)) -> c_6(gr#(x,y)) * Step 4: RemoveWeakSuffixes MAYBE + Considered Problem: - Strict DPs: add#(s(x),y) -> c_2(add#(x,y)) cond#(true(),x,y) -> c_3(cond#(gr(x,y),x,add(x,y)),gr#(x,y),add#(x,y)) gr#(s(x),s(y)) -> c_6(gr#(x,y)) - Weak DPs: add#(0(),x) -> c_1() gr#(0(),x) -> c_4() gr#(s(x),0()) -> c_5() - Weak TRS: add(0(),x) -> x add(s(x),y) -> s(add(x,y)) gr(0(),x) -> false() gr(s(x),0()) -> true() gr(s(x),s(y)) -> gr(x,y) - Signature: {add/2,cond/3,gr/2,add#/2,cond#/3,gr#/2} / {0/0,false/0,s/1,true/0,c_1/0,c_2/1,c_3/3,c_4/0,c_5/0,c_6/1} - Obligation: innermost runtime complexity wrt. defined symbols {add#,cond#,gr#} and constructors {0,false,s,true} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:add#(s(x),y) -> c_2(add#(x,y)) -->_1 add#(0(),x) -> c_1():4 -->_1 add#(s(x),y) -> c_2(add#(x,y)):1 2:S:cond#(true(),x,y) -> c_3(cond#(gr(x,y),x,add(x,y)),gr#(x,y),add#(x,y)) -->_2 gr#(s(x),s(y)) -> c_6(gr#(x,y)):3 -->_2 gr#(s(x),0()) -> c_5():6 -->_2 gr#(0(),x) -> c_4():5 -->_3 add#(0(),x) -> c_1():4 -->_1 cond#(true(),x,y) -> c_3(cond#(gr(x,y),x,add(x,y)),gr#(x,y),add#(x,y)):2 -->_3 add#(s(x),y) -> c_2(add#(x,y)):1 3:S:gr#(s(x),s(y)) -> c_6(gr#(x,y)) -->_1 gr#(s(x),0()) -> c_5():6 -->_1 gr#(0(),x) -> c_4():5 -->_1 gr#(s(x),s(y)) -> c_6(gr#(x,y)):3 4:W:add#(0(),x) -> c_1() 5:W:gr#(0(),x) -> c_4() 6:W:gr#(s(x),0()) -> c_5() The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 5: gr#(0(),x) -> c_4() 6: gr#(s(x),0()) -> c_5() 4: add#(0(),x) -> c_1() * Step 5: Decompose MAYBE + Considered Problem: - Strict DPs: add#(s(x),y) -> c_2(add#(x,y)) cond#(true(),x,y) -> c_3(cond#(gr(x,y),x,add(x,y)),gr#(x,y),add#(x,y)) gr#(s(x),s(y)) -> c_6(gr#(x,y)) - Weak TRS: add(0(),x) -> x add(s(x),y) -> s(add(x,y)) gr(0(),x) -> false() gr(s(x),0()) -> true() gr(s(x),s(y)) -> gr(x,y) - Signature: {add/2,cond/3,gr/2,add#/2,cond#/3,gr#/2} / {0/0,false/0,s/1,true/0,c_1/0,c_2/1,c_3/3,c_4/0,c_5/0,c_6/1} - Obligation: innermost runtime complexity wrt. defined symbols {add#,cond#,gr#} and constructors {0,false,s,true} + Applied Processor: Decompose {onSelection = all cycle independent sub-graph, withBound = RelativeAdd} + Details: We analyse the complexity of following sub-problems (R) and (S). Problem (S) is obtained from the input problem by shifting strict rules from (R) into the weak component. Problem (R) - Strict DPs: add#(s(x),y) -> c_2(add#(x,y)) - Weak DPs: cond#(true(),x,y) -> c_3(cond#(gr(x,y),x,add(x,y)),gr#(x,y),add#(x,y)) gr#(s(x),s(y)) -> c_6(gr#(x,y)) - Weak TRS: add(0(),x) -> x add(s(x),y) -> s(add(x,y)) gr(0(),x) -> false() gr(s(x),0()) -> true() gr(s(x),s(y)) -> gr(x,y) - Signature: {add/2,cond/3,gr/2,add#/2,cond#/3,gr#/2} / {0/0,false/0,s/1,true/0,c_1/0,c_2/1,c_3/3,c_4/0,c_5/0,c_6/1} - Obligation: innermost runtime complexity wrt. defined symbols {add#,cond#,gr#} and constructors {0,false,s,true} Problem (S) - Strict DPs: cond#(true(),x,y) -> c_3(cond#(gr(x,y),x,add(x,y)),gr#(x,y),add#(x,y)) gr#(s(x),s(y)) -> c_6(gr#(x,y)) - Weak DPs: add#(s(x),y) -> c_2(add#(x,y)) - Weak TRS: add(0(),x) -> x add(s(x),y) -> s(add(x,y)) gr(0(),x) -> false() gr(s(x),0()) -> true() gr(s(x),s(y)) -> gr(x,y) - Signature: {add/2,cond/3,gr/2,add#/2,cond#/3,gr#/2} / {0/0,false/0,s/1,true/0,c_1/0,c_2/1,c_3/3,c_4/0,c_5/0,c_6/1} - Obligation: innermost runtime complexity wrt. defined symbols {add#,cond#,gr#} and constructors {0,false,s,true} ** Step 5.a:1: RemoveWeakSuffixes MAYBE + Considered Problem: - Strict DPs: add#(s(x),y) -> c_2(add#(x,y)) - Weak DPs: cond#(true(),x,y) -> c_3(cond#(gr(x,y),x,add(x,y)),gr#(x,y),add#(x,y)) gr#(s(x),s(y)) -> c_6(gr#(x,y)) - Weak TRS: add(0(),x) -> x add(s(x),y) -> s(add(x,y)) gr(0(),x) -> false() gr(s(x),0()) -> true() gr(s(x),s(y)) -> gr(x,y) - Signature: {add/2,cond/3,gr/2,add#/2,cond#/3,gr#/2} / {0/0,false/0,s/1,true/0,c_1/0,c_2/1,c_3/3,c_4/0,c_5/0,c_6/1} - Obligation: innermost runtime complexity wrt. defined symbols {add#,cond#,gr#} and constructors {0,false,s,true} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:add#(s(x),y) -> c_2(add#(x,y)) -->_1 add#(s(x),y) -> c_2(add#(x,y)):1 2:W:cond#(true(),x,y) -> c_3(cond#(gr(x,y),x,add(x,y)),gr#(x,y),add#(x,y)) -->_3 add#(s(x),y) -> c_2(add#(x,y)):1 -->_2 gr#(s(x),s(y)) -> c_6(gr#(x,y)):3 -->_1 cond#(true(),x,y) -> c_3(cond#(gr(x,y),x,add(x,y)),gr#(x,y),add#(x,y)):2 3:W:gr#(s(x),s(y)) -> c_6(gr#(x,y)) -->_1 gr#(s(x),s(y)) -> c_6(gr#(x,y)):3 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 3: gr#(s(x),s(y)) -> c_6(gr#(x,y)) ** Step 5.a:2: SimplifyRHS MAYBE + Considered Problem: - Strict DPs: add#(s(x),y) -> c_2(add#(x,y)) - Weak DPs: cond#(true(),x,y) -> c_3(cond#(gr(x,y),x,add(x,y)),gr#(x,y),add#(x,y)) - Weak TRS: add(0(),x) -> x add(s(x),y) -> s(add(x,y)) gr(0(),x) -> false() gr(s(x),0()) -> true() gr(s(x),s(y)) -> gr(x,y) - Signature: {add/2,cond/3,gr/2,add#/2,cond#/3,gr#/2} / {0/0,false/0,s/1,true/0,c_1/0,c_2/1,c_3/3,c_4/0,c_5/0,c_6/1} - Obligation: innermost runtime complexity wrt. defined symbols {add#,cond#,gr#} and constructors {0,false,s,true} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:add#(s(x),y) -> c_2(add#(x,y)) -->_1 add#(s(x),y) -> c_2(add#(x,y)):1 2:W:cond#(true(),x,y) -> c_3(cond#(gr(x,y),x,add(x,y)),gr#(x,y),add#(x,y)) -->_3 add#(s(x),y) -> c_2(add#(x,y)):1 -->_1 cond#(true(),x,y) -> c_3(cond#(gr(x,y),x,add(x,y)),gr#(x,y),add#(x,y)):2 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: cond#(true(),x,y) -> c_3(cond#(gr(x,y),x,add(x,y)),add#(x,y)) ** Step 5.a:3: Failure MAYBE + Considered Problem: - Strict DPs: add#(s(x),y) -> c_2(add#(x,y)) - Weak DPs: cond#(true(),x,y) -> c_3(cond#(gr(x,y),x,add(x,y)),add#(x,y)) - Weak TRS: add(0(),x) -> x add(s(x),y) -> s(add(x,y)) gr(0(),x) -> false() gr(s(x),0()) -> true() gr(s(x),s(y)) -> gr(x,y) - Signature: {add/2,cond/3,gr/2,add#/2,cond#/3,gr#/2} / {0/0,false/0,s/1,true/0,c_1/0,c_2/1,c_3/2,c_4/0,c_5/0,c_6/1} - Obligation: innermost runtime complexity wrt. defined symbols {add#,cond#,gr#} and constructors {0,false,s,true} + Applied Processor: EmptyProcessor + Details: The problem is still open. ** Step 5.b:1: RemoveWeakSuffixes MAYBE + Considered Problem: - Strict DPs: cond#(true(),x,y) -> c_3(cond#(gr(x,y),x,add(x,y)),gr#(x,y),add#(x,y)) gr#(s(x),s(y)) -> c_6(gr#(x,y)) - Weak DPs: add#(s(x),y) -> c_2(add#(x,y)) - Weak TRS: add(0(),x) -> x add(s(x),y) -> s(add(x,y)) gr(0(),x) -> false() gr(s(x),0()) -> true() gr(s(x),s(y)) -> gr(x,y) - Signature: {add/2,cond/3,gr/2,add#/2,cond#/3,gr#/2} / {0/0,false/0,s/1,true/0,c_1/0,c_2/1,c_3/3,c_4/0,c_5/0,c_6/1} - Obligation: innermost runtime complexity wrt. defined symbols {add#,cond#,gr#} and constructors {0,false,s,true} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:cond#(true(),x,y) -> c_3(cond#(gr(x,y),x,add(x,y)),gr#(x,y),add#(x,y)) -->_3 add#(s(x),y) -> c_2(add#(x,y)):3 -->_2 gr#(s(x),s(y)) -> c_6(gr#(x,y)):2 -->_1 cond#(true(),x,y) -> c_3(cond#(gr(x,y),x,add(x,y)),gr#(x,y),add#(x,y)):1 2:S:gr#(s(x),s(y)) -> c_6(gr#(x,y)) -->_1 gr#(s(x),s(y)) -> c_6(gr#(x,y)):2 3:W:add#(s(x),y) -> c_2(add#(x,y)) -->_1 add#(s(x),y) -> c_2(add#(x,y)):3 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 3: add#(s(x),y) -> c_2(add#(x,y)) ** Step 5.b:2: SimplifyRHS MAYBE + Considered Problem: - Strict DPs: cond#(true(),x,y) -> c_3(cond#(gr(x,y),x,add(x,y)),gr#(x,y),add#(x,y)) gr#(s(x),s(y)) -> c_6(gr#(x,y)) - Weak TRS: add(0(),x) -> x add(s(x),y) -> s(add(x,y)) gr(0(),x) -> false() gr(s(x),0()) -> true() gr(s(x),s(y)) -> gr(x,y) - Signature: {add/2,cond/3,gr/2,add#/2,cond#/3,gr#/2} / {0/0,false/0,s/1,true/0,c_1/0,c_2/1,c_3/3,c_4/0,c_5/0,c_6/1} - Obligation: innermost runtime complexity wrt. defined symbols {add#,cond#,gr#} and constructors {0,false,s,true} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:cond#(true(),x,y) -> c_3(cond#(gr(x,y),x,add(x,y)),gr#(x,y),add#(x,y)) -->_2 gr#(s(x),s(y)) -> c_6(gr#(x,y)):2 -->_1 cond#(true(),x,y) -> c_3(cond#(gr(x,y),x,add(x,y)),gr#(x,y),add#(x,y)):1 2:S:gr#(s(x),s(y)) -> c_6(gr#(x,y)) -->_1 gr#(s(x),s(y)) -> c_6(gr#(x,y)):2 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: cond#(true(),x,y) -> c_3(cond#(gr(x,y),x,add(x,y)),gr#(x,y)) ** Step 5.b:3: Failure MAYBE + Considered Problem: - Strict DPs: cond#(true(),x,y) -> c_3(cond#(gr(x,y),x,add(x,y)),gr#(x,y)) gr#(s(x),s(y)) -> c_6(gr#(x,y)) - Weak TRS: add(0(),x) -> x add(s(x),y) -> s(add(x,y)) gr(0(),x) -> false() gr(s(x),0()) -> true() gr(s(x),s(y)) -> gr(x,y) - Signature: {add/2,cond/3,gr/2,add#/2,cond#/3,gr#/2} / {0/0,false/0,s/1,true/0,c_1/0,c_2/1,c_3/2,c_4/0,c_5/0,c_6/1} - Obligation: innermost runtime complexity wrt. defined symbols {add#,cond#,gr#} and constructors {0,false,s,true} + Applied Processor: EmptyProcessor + Details: The problem is still open. MAYBE