MAYBE * Step 1: DependencyPairs MAYBE + Considered Problem: - Strict TRS: a() -> b() a() -> c() ge(x,0()) -> true() ge(0(),s(y)) -> false() ge(s(x),s(y)) -> ge(x,y) head(cons(x,xs)) -> x head(nil()) -> error() ifProd(false(),xs,x) -> prodIter(tail(xs),times(x,head(xs))) ifProd(true(),xs,x) -> x ifTimes(false(),x,y,z,u) -> timesIter(x,y,plus(y,z),s(u)) ifTimes(true(),x,y,z,u) -> z isempty(cons(x,xs)) -> false() isempty(nil()) -> true() plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) prod(xs) -> prodIter(xs,s(0())) prodIter(xs,x) -> ifProd(isempty(xs),xs,x) tail(cons(x,xs)) -> xs tail(nil()) -> nil() times(x,y) -> timesIter(x,y,0(),0()) timesIter(x,y,z,u) -> ifTimes(ge(u,x),x,y,z,u) - Signature: {a/0,ge/2,head/1,ifProd/3,ifTimes/5,isempty/1,plus/2,prod/1,prodIter/2,tail/1,times/2,timesIter/4} / {0/0 ,b/0,c/0,cons/2,error/0,false/0,nil/0,s/1,true/0} - Obligation: innermost runtime complexity wrt. defined symbols {a,ge,head,ifProd,ifTimes,isempty,plus,prod,prodIter,tail ,times,timesIter} and constructors {0,b,c,cons,error,false,nil,s,true} + Applied Processor: DependencyPairs {dpKind_ = DT} + Details: We add the following dependency tuples: Strict DPs a#() -> c_1() a#() -> c_2() ge#(x,0()) -> c_3() ge#(0(),s(y)) -> c_4() ge#(s(x),s(y)) -> c_5(ge#(x,y)) head#(cons(x,xs)) -> c_6() head#(nil()) -> c_7() ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))),tail#(xs),times#(x,head(xs)),head#(xs)) ifProd#(true(),xs,x) -> c_9() ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)) ifTimes#(true(),x,y,z,u) -> c_11() isempty#(cons(x,xs)) -> c_12() isempty#(nil()) -> c_13() plus#(0(),y) -> c_14() plus#(s(x),y) -> c_15(plus#(x,y)) prod#(xs) -> c_16(prodIter#(xs,s(0()))) prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x),isempty#(xs)) tail#(cons(x,xs)) -> c_18() tail#(nil()) -> c_19() times#(x,y) -> c_20(timesIter#(x,y,0(),0())) timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)) Weak DPs and mark the set of starting terms. * Step 2: UsableRules MAYBE + Considered Problem: - Strict DPs: a#() -> c_1() a#() -> c_2() ge#(x,0()) -> c_3() ge#(0(),s(y)) -> c_4() ge#(s(x),s(y)) -> c_5(ge#(x,y)) head#(cons(x,xs)) -> c_6() head#(nil()) -> c_7() ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))),tail#(xs),times#(x,head(xs)),head#(xs)) ifProd#(true(),xs,x) -> c_9() ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)) ifTimes#(true(),x,y,z,u) -> c_11() isempty#(cons(x,xs)) -> c_12() isempty#(nil()) -> c_13() plus#(0(),y) -> c_14() plus#(s(x),y) -> c_15(plus#(x,y)) prod#(xs) -> c_16(prodIter#(xs,s(0()))) prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x),isempty#(xs)) tail#(cons(x,xs)) -> c_18() tail#(nil()) -> c_19() times#(x,y) -> c_20(timesIter#(x,y,0(),0())) timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)) - Weak TRS: a() -> b() a() -> c() ge(x,0()) -> true() ge(0(),s(y)) -> false() ge(s(x),s(y)) -> ge(x,y) head(cons(x,xs)) -> x head(nil()) -> error() ifProd(false(),xs,x) -> prodIter(tail(xs),times(x,head(xs))) ifProd(true(),xs,x) -> x ifTimes(false(),x,y,z,u) -> timesIter(x,y,plus(y,z),s(u)) ifTimes(true(),x,y,z,u) -> z isempty(cons(x,xs)) -> false() isempty(nil()) -> true() plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) prod(xs) -> prodIter(xs,s(0())) prodIter(xs,x) -> ifProd(isempty(xs),xs,x) tail(cons(x,xs)) -> xs tail(nil()) -> nil() times(x,y) -> timesIter(x,y,0(),0()) timesIter(x,y,z,u) -> ifTimes(ge(u,x),x,y,z,u) - Signature: {a/0,ge/2,head/1,ifProd/3,ifTimes/5,isempty/1,plus/2,prod/1,prodIter/2,tail/1,times/2,timesIter/4,a#/0,ge#/2 ,head#/1,ifProd#/3,ifTimes#/5,isempty#/1,plus#/2,prod#/1,prodIter#/2,tail#/1,times#/2,timesIter#/4} / {0/0 ,b/0,c/0,cons/2,error/0,false/0,nil/0,s/1,true/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/0,c_7/0,c_8/4,c_9/0 ,c_10/2,c_11/0,c_12/0,c_13/0,c_14/0,c_15/1,c_16/1,c_17/2,c_18/0,c_19/0,c_20/1,c_21/2} - Obligation: innermost runtime complexity wrt. defined symbols {a#,ge#,head#,ifProd#,ifTimes#,isempty#,plus#,prod# ,prodIter#,tail#,times#,timesIter#} and constructors {0,b,c,cons,error,false,nil,s,true} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: ge(x,0()) -> true() ge(0(),s(y)) -> false() ge(s(x),s(y)) -> ge(x,y) head(cons(x,xs)) -> x head(nil()) -> error() ifTimes(false(),x,y,z,u) -> timesIter(x,y,plus(y,z),s(u)) ifTimes(true(),x,y,z,u) -> z isempty(cons(x,xs)) -> false() isempty(nil()) -> true() plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) tail(cons(x,xs)) -> xs tail(nil()) -> nil() times(x,y) -> timesIter(x,y,0(),0()) timesIter(x,y,z,u) -> ifTimes(ge(u,x),x,y,z,u) a#() -> c_1() a#() -> c_2() ge#(x,0()) -> c_3() ge#(0(),s(y)) -> c_4() ge#(s(x),s(y)) -> c_5(ge#(x,y)) head#(cons(x,xs)) -> c_6() head#(nil()) -> c_7() ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))),tail#(xs),times#(x,head(xs)),head#(xs)) ifProd#(true(),xs,x) -> c_9() ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)) ifTimes#(true(),x,y,z,u) -> c_11() isempty#(cons(x,xs)) -> c_12() isempty#(nil()) -> c_13() plus#(0(),y) -> c_14() plus#(s(x),y) -> c_15(plus#(x,y)) prod#(xs) -> c_16(prodIter#(xs,s(0()))) prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x),isempty#(xs)) tail#(cons(x,xs)) -> c_18() tail#(nil()) -> c_19() times#(x,y) -> c_20(timesIter#(x,y,0(),0())) timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)) * Step 3: PredecessorEstimation MAYBE + Considered Problem: - Strict DPs: a#() -> c_1() a#() -> c_2() ge#(x,0()) -> c_3() ge#(0(),s(y)) -> c_4() ge#(s(x),s(y)) -> c_5(ge#(x,y)) head#(cons(x,xs)) -> c_6() head#(nil()) -> c_7() ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))),tail#(xs),times#(x,head(xs)),head#(xs)) ifProd#(true(),xs,x) -> c_9() ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)) ifTimes#(true(),x,y,z,u) -> c_11() isempty#(cons(x,xs)) -> c_12() isempty#(nil()) -> c_13() plus#(0(),y) -> c_14() plus#(s(x),y) -> c_15(plus#(x,y)) prod#(xs) -> c_16(prodIter#(xs,s(0()))) prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x),isempty#(xs)) tail#(cons(x,xs)) -> c_18() tail#(nil()) -> c_19() times#(x,y) -> c_20(timesIter#(x,y,0(),0())) timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)) - Weak TRS: ge(x,0()) -> true() ge(0(),s(y)) -> false() ge(s(x),s(y)) -> ge(x,y) head(cons(x,xs)) -> x head(nil()) -> error() ifTimes(false(),x,y,z,u) -> timesIter(x,y,plus(y,z),s(u)) ifTimes(true(),x,y,z,u) -> z isempty(cons(x,xs)) -> false() isempty(nil()) -> true() plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) tail(cons(x,xs)) -> xs tail(nil()) -> nil() times(x,y) -> timesIter(x,y,0(),0()) timesIter(x,y,z,u) -> ifTimes(ge(u,x),x,y,z,u) - Signature: {a/0,ge/2,head/1,ifProd/3,ifTimes/5,isempty/1,plus/2,prod/1,prodIter/2,tail/1,times/2,timesIter/4,a#/0,ge#/2 ,head#/1,ifProd#/3,ifTimes#/5,isempty#/1,plus#/2,prod#/1,prodIter#/2,tail#/1,times#/2,timesIter#/4} / {0/0 ,b/0,c/0,cons/2,error/0,false/0,nil/0,s/1,true/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/0,c_7/0,c_8/4,c_9/0 ,c_10/2,c_11/0,c_12/0,c_13/0,c_14/0,c_15/1,c_16/1,c_17/2,c_18/0,c_19/0,c_20/1,c_21/2} - Obligation: innermost runtime complexity wrt. defined symbols {a#,ge#,head#,ifProd#,ifTimes#,isempty#,plus#,prod# ,prodIter#,tail#,times#,timesIter#} and constructors {0,b,c,cons,error,false,nil,s,true} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {1,2,3,4,6,7,9,11,12,13,14,18,19} by application of Pre({1,2,3,4,6,7,9,11,12,13,14,18,19}) = {5,8,10,15,17,21}. Here rules are labelled as follows: 1: a#() -> c_1() 2: a#() -> c_2() 3: ge#(x,0()) -> c_3() 4: ge#(0(),s(y)) -> c_4() 5: ge#(s(x),s(y)) -> c_5(ge#(x,y)) 6: head#(cons(x,xs)) -> c_6() 7: head#(nil()) -> c_7() 8: ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))) ,tail#(xs) ,times#(x,head(xs)) ,head#(xs)) 9: ifProd#(true(),xs,x) -> c_9() 10: ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)) 11: ifTimes#(true(),x,y,z,u) -> c_11() 12: isempty#(cons(x,xs)) -> c_12() 13: isempty#(nil()) -> c_13() 14: plus#(0(),y) -> c_14() 15: plus#(s(x),y) -> c_15(plus#(x,y)) 16: prod#(xs) -> c_16(prodIter#(xs,s(0()))) 17: prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x),isempty#(xs)) 18: tail#(cons(x,xs)) -> c_18() 19: tail#(nil()) -> c_19() 20: times#(x,y) -> c_20(timesIter#(x,y,0(),0())) 21: timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)) * Step 4: RemoveWeakSuffixes MAYBE + Considered Problem: - Strict DPs: ge#(s(x),s(y)) -> c_5(ge#(x,y)) ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))),tail#(xs),times#(x,head(xs)),head#(xs)) ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)) plus#(s(x),y) -> c_15(plus#(x,y)) prod#(xs) -> c_16(prodIter#(xs,s(0()))) prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x),isempty#(xs)) times#(x,y) -> c_20(timesIter#(x,y,0(),0())) timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)) - Weak DPs: a#() -> c_1() a#() -> c_2() ge#(x,0()) -> c_3() ge#(0(),s(y)) -> c_4() head#(cons(x,xs)) -> c_6() head#(nil()) -> c_7() ifProd#(true(),xs,x) -> c_9() ifTimes#(true(),x,y,z,u) -> c_11() isempty#(cons(x,xs)) -> c_12() isempty#(nil()) -> c_13() plus#(0(),y) -> c_14() tail#(cons(x,xs)) -> c_18() tail#(nil()) -> c_19() - Weak TRS: ge(x,0()) -> true() ge(0(),s(y)) -> false() ge(s(x),s(y)) -> ge(x,y) head(cons(x,xs)) -> x head(nil()) -> error() ifTimes(false(),x,y,z,u) -> timesIter(x,y,plus(y,z),s(u)) ifTimes(true(),x,y,z,u) -> z isempty(cons(x,xs)) -> false() isempty(nil()) -> true() plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) tail(cons(x,xs)) -> xs tail(nil()) -> nil() times(x,y) -> timesIter(x,y,0(),0()) timesIter(x,y,z,u) -> ifTimes(ge(u,x),x,y,z,u) - Signature: {a/0,ge/2,head/1,ifProd/3,ifTimes/5,isempty/1,plus/2,prod/1,prodIter/2,tail/1,times/2,timesIter/4,a#/0,ge#/2 ,head#/1,ifProd#/3,ifTimes#/5,isempty#/1,plus#/2,prod#/1,prodIter#/2,tail#/1,times#/2,timesIter#/4} / {0/0 ,b/0,c/0,cons/2,error/0,false/0,nil/0,s/1,true/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/0,c_7/0,c_8/4,c_9/0 ,c_10/2,c_11/0,c_12/0,c_13/0,c_14/0,c_15/1,c_16/1,c_17/2,c_18/0,c_19/0,c_20/1,c_21/2} - Obligation: innermost runtime complexity wrt. defined symbols {a#,ge#,head#,ifProd#,ifTimes#,isempty#,plus#,prod# ,prodIter#,tail#,times#,timesIter#} and constructors {0,b,c,cons,error,false,nil,s,true} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:ge#(s(x),s(y)) -> c_5(ge#(x,y)) -->_1 ge#(0(),s(y)) -> c_4():12 -->_1 ge#(x,0()) -> c_3():11 -->_1 ge#(s(x),s(y)) -> c_5(ge#(x,y)):1 2:S:ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))) ,tail#(xs) ,times#(x,head(xs)) ,head#(xs)) -->_3 times#(x,y) -> c_20(timesIter#(x,y,0(),0())):7 -->_1 prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x),isempty#(xs)):6 -->_2 tail#(nil()) -> c_19():21 -->_2 tail#(cons(x,xs)) -> c_18():20 -->_4 head#(nil()) -> c_7():14 -->_4 head#(cons(x,xs)) -> c_6():13 3:S:ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)) -->_1 timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)):8 -->_2 plus#(s(x),y) -> c_15(plus#(x,y)):4 -->_2 plus#(0(),y) -> c_14():19 4:S:plus#(s(x),y) -> c_15(plus#(x,y)) -->_1 plus#(0(),y) -> c_14():19 -->_1 plus#(s(x),y) -> c_15(plus#(x,y)):4 5:S:prod#(xs) -> c_16(prodIter#(xs,s(0()))) -->_1 prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x),isempty#(xs)):6 6:S:prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x),isempty#(xs)) -->_2 isempty#(nil()) -> c_13():18 -->_2 isempty#(cons(x,xs)) -> c_12():17 -->_1 ifProd#(true(),xs,x) -> c_9():15 -->_1 ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))) ,tail#(xs) ,times#(x,head(xs)) ,head#(xs)):2 7:S:times#(x,y) -> c_20(timesIter#(x,y,0(),0())) -->_1 timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)):8 8:S:timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)) -->_1 ifTimes#(true(),x,y,z,u) -> c_11():16 -->_2 ge#(0(),s(y)) -> c_4():12 -->_2 ge#(x,0()) -> c_3():11 -->_1 ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)):3 -->_2 ge#(s(x),s(y)) -> c_5(ge#(x,y)):1 9:W:a#() -> c_1() 10:W:a#() -> c_2() 11:W:ge#(x,0()) -> c_3() 12:W:ge#(0(),s(y)) -> c_4() 13:W:head#(cons(x,xs)) -> c_6() 14:W:head#(nil()) -> c_7() 15:W:ifProd#(true(),xs,x) -> c_9() 16:W:ifTimes#(true(),x,y,z,u) -> c_11() 17:W:isempty#(cons(x,xs)) -> c_12() 18:W:isempty#(nil()) -> c_13() 19:W:plus#(0(),y) -> c_14() 20:W:tail#(cons(x,xs)) -> c_18() 21:W:tail#(nil()) -> c_19() The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 10: a#() -> c_2() 9: a#() -> c_1() 13: head#(cons(x,xs)) -> c_6() 14: head#(nil()) -> c_7() 20: tail#(cons(x,xs)) -> c_18() 21: tail#(nil()) -> c_19() 15: ifProd#(true(),xs,x) -> c_9() 17: isempty#(cons(x,xs)) -> c_12() 18: isempty#(nil()) -> c_13() 19: plus#(0(),y) -> c_14() 16: ifTimes#(true(),x,y,z,u) -> c_11() 11: ge#(x,0()) -> c_3() 12: ge#(0(),s(y)) -> c_4() * Step 5: SimplifyRHS MAYBE + Considered Problem: - Strict DPs: ge#(s(x),s(y)) -> c_5(ge#(x,y)) ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))),tail#(xs),times#(x,head(xs)),head#(xs)) ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)) plus#(s(x),y) -> c_15(plus#(x,y)) prod#(xs) -> c_16(prodIter#(xs,s(0()))) prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x),isempty#(xs)) times#(x,y) -> c_20(timesIter#(x,y,0(),0())) timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)) - Weak TRS: ge(x,0()) -> true() ge(0(),s(y)) -> false() ge(s(x),s(y)) -> ge(x,y) head(cons(x,xs)) -> x head(nil()) -> error() ifTimes(false(),x,y,z,u) -> timesIter(x,y,plus(y,z),s(u)) ifTimes(true(),x,y,z,u) -> z isempty(cons(x,xs)) -> false() isempty(nil()) -> true() plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) tail(cons(x,xs)) -> xs tail(nil()) -> nil() times(x,y) -> timesIter(x,y,0(),0()) timesIter(x,y,z,u) -> ifTimes(ge(u,x),x,y,z,u) - Signature: {a/0,ge/2,head/1,ifProd/3,ifTimes/5,isempty/1,plus/2,prod/1,prodIter/2,tail/1,times/2,timesIter/4,a#/0,ge#/2 ,head#/1,ifProd#/3,ifTimes#/5,isempty#/1,plus#/2,prod#/1,prodIter#/2,tail#/1,times#/2,timesIter#/4} / {0/0 ,b/0,c/0,cons/2,error/0,false/0,nil/0,s/1,true/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/0,c_7/0,c_8/4,c_9/0 ,c_10/2,c_11/0,c_12/0,c_13/0,c_14/0,c_15/1,c_16/1,c_17/2,c_18/0,c_19/0,c_20/1,c_21/2} - Obligation: innermost runtime complexity wrt. defined symbols {a#,ge#,head#,ifProd#,ifTimes#,isempty#,plus#,prod# ,prodIter#,tail#,times#,timesIter#} and constructors {0,b,c,cons,error,false,nil,s,true} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:ge#(s(x),s(y)) -> c_5(ge#(x,y)) -->_1 ge#(s(x),s(y)) -> c_5(ge#(x,y)):1 2:S:ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))) ,tail#(xs) ,times#(x,head(xs)) ,head#(xs)) -->_3 times#(x,y) -> c_20(timesIter#(x,y,0(),0())):7 -->_1 prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x),isempty#(xs)):6 3:S:ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)) -->_1 timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)):8 -->_2 plus#(s(x),y) -> c_15(plus#(x,y)):4 4:S:plus#(s(x),y) -> c_15(plus#(x,y)) -->_1 plus#(s(x),y) -> c_15(plus#(x,y)):4 5:S:prod#(xs) -> c_16(prodIter#(xs,s(0()))) -->_1 prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x),isempty#(xs)):6 6:S:prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x),isempty#(xs)) -->_1 ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))) ,tail#(xs) ,times#(x,head(xs)) ,head#(xs)):2 7:S:times#(x,y) -> c_20(timesIter#(x,y,0(),0())) -->_1 timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)):8 8:S:timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)) -->_1 ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)):3 -->_2 ge#(s(x),s(y)) -> c_5(ge#(x,y)):1 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))),times#(x,head(xs))) prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x)) * Step 6: RemoveHeads MAYBE + Considered Problem: - Strict DPs: ge#(s(x),s(y)) -> c_5(ge#(x,y)) ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))),times#(x,head(xs))) ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)) plus#(s(x),y) -> c_15(plus#(x,y)) prod#(xs) -> c_16(prodIter#(xs,s(0()))) prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x)) times#(x,y) -> c_20(timesIter#(x,y,0(),0())) timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)) - Weak TRS: ge(x,0()) -> true() ge(0(),s(y)) -> false() ge(s(x),s(y)) -> ge(x,y) head(cons(x,xs)) -> x head(nil()) -> error() ifTimes(false(),x,y,z,u) -> timesIter(x,y,plus(y,z),s(u)) ifTimes(true(),x,y,z,u) -> z isempty(cons(x,xs)) -> false() isempty(nil()) -> true() plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) tail(cons(x,xs)) -> xs tail(nil()) -> nil() times(x,y) -> timesIter(x,y,0(),0()) timesIter(x,y,z,u) -> ifTimes(ge(u,x),x,y,z,u) - Signature: {a/0,ge/2,head/1,ifProd/3,ifTimes/5,isempty/1,plus/2,prod/1,prodIter/2,tail/1,times/2,timesIter/4,a#/0,ge#/2 ,head#/1,ifProd#/3,ifTimes#/5,isempty#/1,plus#/2,prod#/1,prodIter#/2,tail#/1,times#/2,timesIter#/4} / {0/0 ,b/0,c/0,cons/2,error/0,false/0,nil/0,s/1,true/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/0,c_7/0,c_8/2,c_9/0 ,c_10/2,c_11/0,c_12/0,c_13/0,c_14/0,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2} - Obligation: innermost runtime complexity wrt. defined symbols {a#,ge#,head#,ifProd#,ifTimes#,isempty#,plus#,prod# ,prodIter#,tail#,times#,timesIter#} and constructors {0,b,c,cons,error,false,nil,s,true} + Applied Processor: RemoveHeads + Details: Consider the dependency graph 1:S:ge#(s(x),s(y)) -> c_5(ge#(x,y)) -->_1 ge#(s(x),s(y)) -> c_5(ge#(x,y)):1 2:S:ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))),times#(x,head(xs))) -->_2 times#(x,y) -> c_20(timesIter#(x,y,0(),0())):7 -->_1 prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x)):6 3:S:ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)) -->_1 timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)):8 -->_2 plus#(s(x),y) -> c_15(plus#(x,y)):4 4:S:plus#(s(x),y) -> c_15(plus#(x,y)) -->_1 plus#(s(x),y) -> c_15(plus#(x,y)):4 5:S:prod#(xs) -> c_16(prodIter#(xs,s(0()))) -->_1 prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x)):6 6:S:prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x)) -->_1 ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))),times#(x,head(xs))):2 7:S:times#(x,y) -> c_20(timesIter#(x,y,0(),0())) -->_1 timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)):8 8:S:timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)) -->_1 ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)):3 -->_2 ge#(s(x),s(y)) -> c_5(ge#(x,y)):1 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). [(5,prod#(xs) -> c_16(prodIter#(xs,s(0()))))] * Step 7: Decompose MAYBE + Considered Problem: - Strict DPs: ge#(s(x),s(y)) -> c_5(ge#(x,y)) ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))),times#(x,head(xs))) ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)) plus#(s(x),y) -> c_15(plus#(x,y)) prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x)) times#(x,y) -> c_20(timesIter#(x,y,0(),0())) timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)) - Weak TRS: ge(x,0()) -> true() ge(0(),s(y)) -> false() ge(s(x),s(y)) -> ge(x,y) head(cons(x,xs)) -> x head(nil()) -> error() ifTimes(false(),x,y,z,u) -> timesIter(x,y,plus(y,z),s(u)) ifTimes(true(),x,y,z,u) -> z isempty(cons(x,xs)) -> false() isempty(nil()) -> true() plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) tail(cons(x,xs)) -> xs tail(nil()) -> nil() times(x,y) -> timesIter(x,y,0(),0()) timesIter(x,y,z,u) -> ifTimes(ge(u,x),x,y,z,u) - Signature: {a/0,ge/2,head/1,ifProd/3,ifTimes/5,isempty/1,plus/2,prod/1,prodIter/2,tail/1,times/2,timesIter/4,a#/0,ge#/2 ,head#/1,ifProd#/3,ifTimes#/5,isempty#/1,plus#/2,prod#/1,prodIter#/2,tail#/1,times#/2,timesIter#/4} / {0/0 ,b/0,c/0,cons/2,error/0,false/0,nil/0,s/1,true/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/0,c_7/0,c_8/2,c_9/0 ,c_10/2,c_11/0,c_12/0,c_13/0,c_14/0,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2} - Obligation: innermost runtime complexity wrt. defined symbols {a#,ge#,head#,ifProd#,ifTimes#,isempty#,plus#,prod# ,prodIter#,tail#,times#,timesIter#} and constructors {0,b,c,cons,error,false,nil,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: ge#(s(x),s(y)) -> c_5(ge#(x,y)) - Weak DPs: ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))),times#(x,head(xs))) ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)) plus#(s(x),y) -> c_15(plus#(x,y)) prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x)) times#(x,y) -> c_20(timesIter#(x,y,0(),0())) timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)) - Weak TRS: ge(x,0()) -> true() ge(0(),s(y)) -> false() ge(s(x),s(y)) -> ge(x,y) head(cons(x,xs)) -> x head(nil()) -> error() ifTimes(false(),x,y,z,u) -> timesIter(x,y,plus(y,z),s(u)) ifTimes(true(),x,y,z,u) -> z isempty(cons(x,xs)) -> false() isempty(nil()) -> true() plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) tail(cons(x,xs)) -> xs tail(nil()) -> nil() times(x,y) -> timesIter(x,y,0(),0()) timesIter(x,y,z,u) -> ifTimes(ge(u,x),x,y,z,u) - Signature: {a/0,ge/2,head/1,ifProd/3,ifTimes/5,isempty/1,plus/2,prod/1,prodIter/2,tail/1,times/2,timesIter/4,a#/0 ,ge#/2,head#/1,ifProd#/3,ifTimes#/5,isempty#/1,plus#/2,prod#/1,prodIter#/2,tail#/1,times#/2 ,timesIter#/4} / {0/0,b/0,c/0,cons/2,error/0,false/0,nil/0,s/1,true/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/0 ,c_7/0,c_8/2,c_9/0,c_10/2,c_11/0,c_12/0,c_13/0,c_14/0,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2} - Obligation: innermost runtime complexity wrt. defined symbols {a#,ge#,head#,ifProd#,ifTimes#,isempty#,plus#,prod# ,prodIter#,tail#,times#,timesIter#} and constructors {0,b,c,cons,error,false,nil,s,true} Problem (S) - Strict DPs: ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))),times#(x,head(xs))) ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)) plus#(s(x),y) -> c_15(plus#(x,y)) prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x)) times#(x,y) -> c_20(timesIter#(x,y,0(),0())) timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)) - Weak DPs: ge#(s(x),s(y)) -> c_5(ge#(x,y)) - Weak TRS: ge(x,0()) -> true() ge(0(),s(y)) -> false() ge(s(x),s(y)) -> ge(x,y) head(cons(x,xs)) -> x head(nil()) -> error() ifTimes(false(),x,y,z,u) -> timesIter(x,y,plus(y,z),s(u)) ifTimes(true(),x,y,z,u) -> z isempty(cons(x,xs)) -> false() isempty(nil()) -> true() plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) tail(cons(x,xs)) -> xs tail(nil()) -> nil() times(x,y) -> timesIter(x,y,0(),0()) timesIter(x,y,z,u) -> ifTimes(ge(u,x),x,y,z,u) - Signature: {a/0,ge/2,head/1,ifProd/3,ifTimes/5,isempty/1,plus/2,prod/1,prodIter/2,tail/1,times/2,timesIter/4,a#/0 ,ge#/2,head#/1,ifProd#/3,ifTimes#/5,isempty#/1,plus#/2,prod#/1,prodIter#/2,tail#/1,times#/2 ,timesIter#/4} / {0/0,b/0,c/0,cons/2,error/0,false/0,nil/0,s/1,true/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/0 ,c_7/0,c_8/2,c_9/0,c_10/2,c_11/0,c_12/0,c_13/0,c_14/0,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2} - Obligation: innermost runtime complexity wrt. defined symbols {a#,ge#,head#,ifProd#,ifTimes#,isempty#,plus#,prod# ,prodIter#,tail#,times#,timesIter#} and constructors {0,b,c,cons,error,false,nil,s,true} ** Step 7.a:1: RemoveWeakSuffixes MAYBE + Considered Problem: - Strict DPs: ge#(s(x),s(y)) -> c_5(ge#(x,y)) - Weak DPs: ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))),times#(x,head(xs))) ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)) plus#(s(x),y) -> c_15(plus#(x,y)) prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x)) times#(x,y) -> c_20(timesIter#(x,y,0(),0())) timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)) - Weak TRS: ge(x,0()) -> true() ge(0(),s(y)) -> false() ge(s(x),s(y)) -> ge(x,y) head(cons(x,xs)) -> x head(nil()) -> error() ifTimes(false(),x,y,z,u) -> timesIter(x,y,plus(y,z),s(u)) ifTimes(true(),x,y,z,u) -> z isempty(cons(x,xs)) -> false() isempty(nil()) -> true() plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) tail(cons(x,xs)) -> xs tail(nil()) -> nil() times(x,y) -> timesIter(x,y,0(),0()) timesIter(x,y,z,u) -> ifTimes(ge(u,x),x,y,z,u) - Signature: {a/0,ge/2,head/1,ifProd/3,ifTimes/5,isempty/1,plus/2,prod/1,prodIter/2,tail/1,times/2,timesIter/4,a#/0,ge#/2 ,head#/1,ifProd#/3,ifTimes#/5,isempty#/1,plus#/2,prod#/1,prodIter#/2,tail#/1,times#/2,timesIter#/4} / {0/0 ,b/0,c/0,cons/2,error/0,false/0,nil/0,s/1,true/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/0,c_7/0,c_8/2,c_9/0 ,c_10/2,c_11/0,c_12/0,c_13/0,c_14/0,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2} - Obligation: innermost runtime complexity wrt. defined symbols {a#,ge#,head#,ifProd#,ifTimes#,isempty#,plus#,prod# ,prodIter#,tail#,times#,timesIter#} and constructors {0,b,c,cons,error,false,nil,s,true} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:ge#(s(x),s(y)) -> c_5(ge#(x,y)) -->_1 ge#(s(x),s(y)) -> c_5(ge#(x,y)):1 2:W:ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))),times#(x,head(xs))) -->_2 times#(x,y) -> c_20(timesIter#(x,y,0(),0())):7 -->_1 prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x)):6 3:W:ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)) -->_1 timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)):8 -->_2 plus#(s(x),y) -> c_15(plus#(x,y)):4 4:W:plus#(s(x),y) -> c_15(plus#(x,y)) -->_1 plus#(s(x),y) -> c_15(plus#(x,y)):4 6:W:prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x)) -->_1 ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))),times#(x,head(xs))):2 7:W:times#(x,y) -> c_20(timesIter#(x,y,0(),0())) -->_1 timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)):8 8:W:timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)) -->_2 ge#(s(x),s(y)) -> c_5(ge#(x,y)):1 -->_1 ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)):3 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 4: plus#(s(x),y) -> c_15(plus#(x,y)) ** Step 7.a:2: SimplifyRHS MAYBE + Considered Problem: - Strict DPs: ge#(s(x),s(y)) -> c_5(ge#(x,y)) - Weak DPs: ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))),times#(x,head(xs))) ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)) prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x)) times#(x,y) -> c_20(timesIter#(x,y,0(),0())) timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)) - Weak TRS: ge(x,0()) -> true() ge(0(),s(y)) -> false() ge(s(x),s(y)) -> ge(x,y) head(cons(x,xs)) -> x head(nil()) -> error() ifTimes(false(),x,y,z,u) -> timesIter(x,y,plus(y,z),s(u)) ifTimes(true(),x,y,z,u) -> z isempty(cons(x,xs)) -> false() isempty(nil()) -> true() plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) tail(cons(x,xs)) -> xs tail(nil()) -> nil() times(x,y) -> timesIter(x,y,0(),0()) timesIter(x,y,z,u) -> ifTimes(ge(u,x),x,y,z,u) - Signature: {a/0,ge/2,head/1,ifProd/3,ifTimes/5,isempty/1,plus/2,prod/1,prodIter/2,tail/1,times/2,timesIter/4,a#/0,ge#/2 ,head#/1,ifProd#/3,ifTimes#/5,isempty#/1,plus#/2,prod#/1,prodIter#/2,tail#/1,times#/2,timesIter#/4} / {0/0 ,b/0,c/0,cons/2,error/0,false/0,nil/0,s/1,true/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/0,c_7/0,c_8/2,c_9/0 ,c_10/2,c_11/0,c_12/0,c_13/0,c_14/0,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2} - Obligation: innermost runtime complexity wrt. defined symbols {a#,ge#,head#,ifProd#,ifTimes#,isempty#,plus#,prod# ,prodIter#,tail#,times#,timesIter#} and constructors {0,b,c,cons,error,false,nil,s,true} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:ge#(s(x),s(y)) -> c_5(ge#(x,y)) -->_1 ge#(s(x),s(y)) -> c_5(ge#(x,y)):1 2:W:ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))),times#(x,head(xs))) -->_2 times#(x,y) -> c_20(timesIter#(x,y,0(),0())):7 -->_1 prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x)):6 3:W:ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)) -->_1 timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)):8 6:W:prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x)) -->_1 ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))),times#(x,head(xs))):2 7:W:times#(x,y) -> c_20(timesIter#(x,y,0(),0())) -->_1 timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)):8 8:W:timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)) -->_2 ge#(s(x),s(y)) -> c_5(ge#(x,y)):1 -->_1 ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)):3 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u))) ** Step 7.a:3: Failure MAYBE + Considered Problem: - Strict DPs: ge#(s(x),s(y)) -> c_5(ge#(x,y)) - Weak DPs: ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))),times#(x,head(xs))) ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u))) prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x)) times#(x,y) -> c_20(timesIter#(x,y,0(),0())) timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)) - Weak TRS: ge(x,0()) -> true() ge(0(),s(y)) -> false() ge(s(x),s(y)) -> ge(x,y) head(cons(x,xs)) -> x head(nil()) -> error() ifTimes(false(),x,y,z,u) -> timesIter(x,y,plus(y,z),s(u)) ifTimes(true(),x,y,z,u) -> z isempty(cons(x,xs)) -> false() isempty(nil()) -> true() plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) tail(cons(x,xs)) -> xs tail(nil()) -> nil() times(x,y) -> timesIter(x,y,0(),0()) timesIter(x,y,z,u) -> ifTimes(ge(u,x),x,y,z,u) - Signature: {a/0,ge/2,head/1,ifProd/3,ifTimes/5,isempty/1,plus/2,prod/1,prodIter/2,tail/1,times/2,timesIter/4,a#/0,ge#/2 ,head#/1,ifProd#/3,ifTimes#/5,isempty#/1,plus#/2,prod#/1,prodIter#/2,tail#/1,times#/2,timesIter#/4} / {0/0 ,b/0,c/0,cons/2,error/0,false/0,nil/0,s/1,true/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/0,c_7/0,c_8/2,c_9/0 ,c_10/1,c_11/0,c_12/0,c_13/0,c_14/0,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2} - Obligation: innermost runtime complexity wrt. defined symbols {a#,ge#,head#,ifProd#,ifTimes#,isempty#,plus#,prod# ,prodIter#,tail#,times#,timesIter#} and constructors {0,b,c,cons,error,false,nil,s,true} + Applied Processor: EmptyProcessor + Details: The problem is still open. ** Step 7.b:1: RemoveWeakSuffixes MAYBE + Considered Problem: - Strict DPs: ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))),times#(x,head(xs))) ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)) plus#(s(x),y) -> c_15(plus#(x,y)) prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x)) times#(x,y) -> c_20(timesIter#(x,y,0(),0())) timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)) - Weak DPs: ge#(s(x),s(y)) -> c_5(ge#(x,y)) - Weak TRS: ge(x,0()) -> true() ge(0(),s(y)) -> false() ge(s(x),s(y)) -> ge(x,y) head(cons(x,xs)) -> x head(nil()) -> error() ifTimes(false(),x,y,z,u) -> timesIter(x,y,plus(y,z),s(u)) ifTimes(true(),x,y,z,u) -> z isempty(cons(x,xs)) -> false() isempty(nil()) -> true() plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) tail(cons(x,xs)) -> xs tail(nil()) -> nil() times(x,y) -> timesIter(x,y,0(),0()) timesIter(x,y,z,u) -> ifTimes(ge(u,x),x,y,z,u) - Signature: {a/0,ge/2,head/1,ifProd/3,ifTimes/5,isempty/1,plus/2,prod/1,prodIter/2,tail/1,times/2,timesIter/4,a#/0,ge#/2 ,head#/1,ifProd#/3,ifTimes#/5,isempty#/1,plus#/2,prod#/1,prodIter#/2,tail#/1,times#/2,timesIter#/4} / {0/0 ,b/0,c/0,cons/2,error/0,false/0,nil/0,s/1,true/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/0,c_7/0,c_8/2,c_9/0 ,c_10/2,c_11/0,c_12/0,c_13/0,c_14/0,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2} - Obligation: innermost runtime complexity wrt. defined symbols {a#,ge#,head#,ifProd#,ifTimes#,isempty#,plus#,prod# ,prodIter#,tail#,times#,timesIter#} and constructors {0,b,c,cons,error,false,nil,s,true} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))),times#(x,head(xs))) -->_2 times#(x,y) -> c_20(timesIter#(x,y,0(),0())):5 -->_1 prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x)):4 2:S:ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)) -->_1 timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)):6 -->_2 plus#(s(x),y) -> c_15(plus#(x,y)):3 3:S:plus#(s(x),y) -> c_15(plus#(x,y)) -->_1 plus#(s(x),y) -> c_15(plus#(x,y)):3 4:S:prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x)) -->_1 ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))),times#(x,head(xs))):1 5:S:times#(x,y) -> c_20(timesIter#(x,y,0(),0())) -->_1 timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)):6 6:S:timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)) -->_2 ge#(s(x),s(y)) -> c_5(ge#(x,y)):7 -->_1 ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)):2 7:W:ge#(s(x),s(y)) -> c_5(ge#(x,y)) -->_1 ge#(s(x),s(y)) -> c_5(ge#(x,y)):7 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 7: ge#(s(x),s(y)) -> c_5(ge#(x,y)) ** Step 7.b:2: SimplifyRHS MAYBE + Considered Problem: - Strict DPs: ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))),times#(x,head(xs))) ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)) plus#(s(x),y) -> c_15(plus#(x,y)) prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x)) times#(x,y) -> c_20(timesIter#(x,y,0(),0())) timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)) - Weak TRS: ge(x,0()) -> true() ge(0(),s(y)) -> false() ge(s(x),s(y)) -> ge(x,y) head(cons(x,xs)) -> x head(nil()) -> error() ifTimes(false(),x,y,z,u) -> timesIter(x,y,plus(y,z),s(u)) ifTimes(true(),x,y,z,u) -> z isempty(cons(x,xs)) -> false() isempty(nil()) -> true() plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) tail(cons(x,xs)) -> xs tail(nil()) -> nil() times(x,y) -> timesIter(x,y,0(),0()) timesIter(x,y,z,u) -> ifTimes(ge(u,x),x,y,z,u) - Signature: {a/0,ge/2,head/1,ifProd/3,ifTimes/5,isempty/1,plus/2,prod/1,prodIter/2,tail/1,times/2,timesIter/4,a#/0,ge#/2 ,head#/1,ifProd#/3,ifTimes#/5,isempty#/1,plus#/2,prod#/1,prodIter#/2,tail#/1,times#/2,timesIter#/4} / {0/0 ,b/0,c/0,cons/2,error/0,false/0,nil/0,s/1,true/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/0,c_7/0,c_8/2,c_9/0 ,c_10/2,c_11/0,c_12/0,c_13/0,c_14/0,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/2} - Obligation: innermost runtime complexity wrt. defined symbols {a#,ge#,head#,ifProd#,ifTimes#,isempty#,plus#,prod# ,prodIter#,tail#,times#,timesIter#} and constructors {0,b,c,cons,error,false,nil,s,true} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))),times#(x,head(xs))) -->_2 times#(x,y) -> c_20(timesIter#(x,y,0(),0())):5 -->_1 prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x)):4 2:S:ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)) -->_1 timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)):6 -->_2 plus#(s(x),y) -> c_15(plus#(x,y)):3 3:S:plus#(s(x),y) -> c_15(plus#(x,y)) -->_1 plus#(s(x),y) -> c_15(plus#(x,y)):3 4:S:prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x)) -->_1 ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))),times#(x,head(xs))):1 5:S:times#(x,y) -> c_20(timesIter#(x,y,0(),0())) -->_1 timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)):6 6:S:timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u),ge#(u,x)) -->_1 ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)):2 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u)) ** Step 7.b:3: Failure MAYBE + Considered Problem: - Strict DPs: ifProd#(false(),xs,x) -> c_8(prodIter#(tail(xs),times(x,head(xs))),times#(x,head(xs))) ifTimes#(false(),x,y,z,u) -> c_10(timesIter#(x,y,plus(y,z),s(u)),plus#(y,z)) plus#(s(x),y) -> c_15(plus#(x,y)) prodIter#(xs,x) -> c_17(ifProd#(isempty(xs),xs,x)) times#(x,y) -> c_20(timesIter#(x,y,0(),0())) timesIter#(x,y,z,u) -> c_21(ifTimes#(ge(u,x),x,y,z,u)) - Weak TRS: ge(x,0()) -> true() ge(0(),s(y)) -> false() ge(s(x),s(y)) -> ge(x,y) head(cons(x,xs)) -> x head(nil()) -> error() ifTimes(false(),x,y,z,u) -> timesIter(x,y,plus(y,z),s(u)) ifTimes(true(),x,y,z,u) -> z isempty(cons(x,xs)) -> false() isempty(nil()) -> true() plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) tail(cons(x,xs)) -> xs tail(nil()) -> nil() times(x,y) -> timesIter(x,y,0(),0()) timesIter(x,y,z,u) -> ifTimes(ge(u,x),x,y,z,u) - Signature: {a/0,ge/2,head/1,ifProd/3,ifTimes/5,isempty/1,plus/2,prod/1,prodIter/2,tail/1,times/2,timesIter/4,a#/0,ge#/2 ,head#/1,ifProd#/3,ifTimes#/5,isempty#/1,plus#/2,prod#/1,prodIter#/2,tail#/1,times#/2,timesIter#/4} / {0/0 ,b/0,c/0,cons/2,error/0,false/0,nil/0,s/1,true/0,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/0,c_7/0,c_8/2,c_9/0 ,c_10/2,c_11/0,c_12/0,c_13/0,c_14/0,c_15/1,c_16/1,c_17/1,c_18/0,c_19/0,c_20/1,c_21/1} - Obligation: innermost runtime complexity wrt. defined symbols {a#,ge#,head#,ifProd#,ifTimes#,isempty#,plus#,prod# ,prodIter#,tail#,times#,timesIter#} and constructors {0,b,c,cons,error,false,nil,s,true} + Applied Processor: EmptyProcessor + Details: The problem is still open. MAYBE