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