MAYBE * Step 1: DependencyPairs MAYBE + Considered Problem: - Strict TRS: a__filter(X1,X2) -> filter(X1,X2) a__filter(s(s(X)),cons(Y,Z)) -> a__if(divides(s(s(mark(X))),mark(Y)) ,filter(s(s(X)),Z) ,cons(Y,filter(X,sieve(Y)))) a__from(X) -> cons(mark(X),from(s(X))) a__from(X) -> from(X) a__head(X) -> head(X) a__head(cons(X,Y)) -> mark(X) a__if(X1,X2,X3) -> if(X1,X2,X3) a__if(false(),X,Y) -> mark(Y) a__if(true(),X,Y) -> mark(X) a__primes() -> a__sieve(a__from(s(s(0())))) a__primes() -> primes() a__sieve(X) -> sieve(X) a__sieve(cons(X,Y)) -> cons(mark(X),filter(X,sieve(Y))) a__tail(X) -> tail(X) a__tail(cons(X,Y)) -> mark(Y) mark(0()) -> 0() mark(cons(X1,X2)) -> cons(mark(X1),X2) mark(divides(X1,X2)) -> divides(mark(X1),mark(X2)) mark(false()) -> false() mark(filter(X1,X2)) -> a__filter(mark(X1),mark(X2)) mark(from(X)) -> a__from(mark(X)) mark(head(X)) -> a__head(mark(X)) mark(if(X1,X2,X3)) -> a__if(mark(X1),X2,X3) mark(primes()) -> a__primes() mark(s(X)) -> s(mark(X)) mark(sieve(X)) -> a__sieve(mark(X)) mark(tail(X)) -> a__tail(mark(X)) mark(true()) -> true() - Signature: {a__filter/2,a__from/1,a__head/1,a__if/3,a__primes/0,a__sieve/1,a__tail/1,mark/1} / {0/0,cons/2,divides/2 ,false/0,filter/2,from/1,head/1,if/3,primes/0,s/1,sieve/1,tail/1,true/0} - Obligation: innermost runtime complexity wrt. defined symbols {a__filter,a__from,a__head,a__if,a__primes,a__sieve ,a__tail,mark} and constructors {0,cons,divides,false,filter,from,head,if,primes,s,sieve,tail,true} + Applied Processor: DependencyPairs {dpKind_ = DT} + Details: We add the following dependency tuples: Strict DPs a__filter#(X1,X2) -> c_1() a__filter#(s(s(X)),cons(Y,Z)) -> c_2(a__if#(divides(s(s(mark(X))),mark(Y)) ,filter(s(s(X)),Z) ,cons(Y,filter(X,sieve(Y)))) ,mark#(X) ,mark#(Y)) a__from#(X) -> c_3(mark#(X)) a__from#(X) -> c_4() a__head#(X) -> c_5() a__head#(cons(X,Y)) -> c_6(mark#(X)) a__if#(X1,X2,X3) -> c_7() a__if#(false(),X,Y) -> c_8(mark#(Y)) a__if#(true(),X,Y) -> c_9(mark#(X)) a__primes#() -> c_10(a__sieve#(a__from(s(s(0())))),a__from#(s(s(0())))) a__primes#() -> c_11() a__sieve#(X) -> c_12() a__sieve#(cons(X,Y)) -> c_13(mark#(X)) a__tail#(X) -> c_14() a__tail#(cons(X,Y)) -> c_15(mark#(Y)) mark#(0()) -> c_16() mark#(cons(X1,X2)) -> c_17(mark#(X1)) mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)) mark#(false()) -> c_19() mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)) mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)) mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)) mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)) mark#(primes()) -> c_24(a__primes#()) mark#(s(X)) -> c_25(mark#(X)) mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)) mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)) mark#(true()) -> c_28() Weak DPs and mark the set of starting terms. * Step 2: PredecessorEstimation MAYBE + Considered Problem: - Strict DPs: a__filter#(X1,X2) -> c_1() a__filter#(s(s(X)),cons(Y,Z)) -> c_2(a__if#(divides(s(s(mark(X))),mark(Y)) ,filter(s(s(X)),Z) ,cons(Y,filter(X,sieve(Y)))) ,mark#(X) ,mark#(Y)) a__from#(X) -> c_3(mark#(X)) a__from#(X) -> c_4() a__head#(X) -> c_5() a__head#(cons(X,Y)) -> c_6(mark#(X)) a__if#(X1,X2,X3) -> c_7() a__if#(false(),X,Y) -> c_8(mark#(Y)) a__if#(true(),X,Y) -> c_9(mark#(X)) a__primes#() -> c_10(a__sieve#(a__from(s(s(0())))),a__from#(s(s(0())))) a__primes#() -> c_11() a__sieve#(X) -> c_12() a__sieve#(cons(X,Y)) -> c_13(mark#(X)) a__tail#(X) -> c_14() a__tail#(cons(X,Y)) -> c_15(mark#(Y)) mark#(0()) -> c_16() mark#(cons(X1,X2)) -> c_17(mark#(X1)) mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)) mark#(false()) -> c_19() mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)) mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)) mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)) mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)) mark#(primes()) -> c_24(a__primes#()) mark#(s(X)) -> c_25(mark#(X)) mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)) mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)) mark#(true()) -> c_28() - Weak TRS: a__filter(X1,X2) -> filter(X1,X2) a__filter(s(s(X)),cons(Y,Z)) -> a__if(divides(s(s(mark(X))),mark(Y)) ,filter(s(s(X)),Z) ,cons(Y,filter(X,sieve(Y)))) a__from(X) -> cons(mark(X),from(s(X))) a__from(X) -> from(X) a__head(X) -> head(X) a__head(cons(X,Y)) -> mark(X) a__if(X1,X2,X3) -> if(X1,X2,X3) a__if(false(),X,Y) -> mark(Y) a__if(true(),X,Y) -> mark(X) a__primes() -> a__sieve(a__from(s(s(0())))) a__primes() -> primes() a__sieve(X) -> sieve(X) a__sieve(cons(X,Y)) -> cons(mark(X),filter(X,sieve(Y))) a__tail(X) -> tail(X) a__tail(cons(X,Y)) -> mark(Y) mark(0()) -> 0() mark(cons(X1,X2)) -> cons(mark(X1),X2) mark(divides(X1,X2)) -> divides(mark(X1),mark(X2)) mark(false()) -> false() mark(filter(X1,X2)) -> a__filter(mark(X1),mark(X2)) mark(from(X)) -> a__from(mark(X)) mark(head(X)) -> a__head(mark(X)) mark(if(X1,X2,X3)) -> a__if(mark(X1),X2,X3) mark(primes()) -> a__primes() mark(s(X)) -> s(mark(X)) mark(sieve(X)) -> a__sieve(mark(X)) mark(tail(X)) -> a__tail(mark(X)) mark(true()) -> true() - Signature: {a__filter/2,a__from/1,a__head/1,a__if/3,a__primes/0,a__sieve/1,a__tail/1,mark/1,a__filter#/2,a__from#/1 ,a__head#/1,a__if#/3,a__primes#/0,a__sieve#/1,a__tail#/1,mark#/1} / {0/0,cons/2,divides/2,false/0,filter/2 ,from/1,head/1,if/3,primes/0,s/1,sieve/1,tail/1,true/0,c_1/0,c_2/3,c_3/1,c_4/0,c_5/0,c_6/1,c_7/0,c_8/1,c_9/1 ,c_10/2,c_11/0,c_12/0,c_13/1,c_14/0,c_15/1,c_16/0,c_17/1,c_18/2,c_19/0,c_20/3,c_21/2,c_22/2,c_23/2,c_24/1 ,c_25/1,c_26/2,c_27/2,c_28/0} - Obligation: innermost runtime complexity wrt. defined symbols {a__filter#,a__from#,a__head#,a__if#,a__primes#,a__sieve# ,a__tail#,mark#} and constructors {0,cons,divides,false,filter,from,head,if,primes,s,sieve,tail,true} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {1,4,5,7,11,12,14,16,19,28} by application of Pre({1,4,5,7,11,12,14,16,19,28}) = {2,3,6,8,9,10,13,15,17,18,20,21,22,23,24,25,26,27}. Here rules are labelled as follows: 1: a__filter#(X1,X2) -> c_1() 2: a__filter#(s(s(X)),cons(Y,Z)) -> c_2(a__if#(divides(s(s(mark(X))),mark(Y)) ,filter(s(s(X)),Z) ,cons(Y,filter(X,sieve(Y)))) ,mark#(X) ,mark#(Y)) 3: a__from#(X) -> c_3(mark#(X)) 4: a__from#(X) -> c_4() 5: a__head#(X) -> c_5() 6: a__head#(cons(X,Y)) -> c_6(mark#(X)) 7: a__if#(X1,X2,X3) -> c_7() 8: a__if#(false(),X,Y) -> c_8(mark#(Y)) 9: a__if#(true(),X,Y) -> c_9(mark#(X)) 10: a__primes#() -> c_10(a__sieve#(a__from(s(s(0())))),a__from#(s(s(0())))) 11: a__primes#() -> c_11() 12: a__sieve#(X) -> c_12() 13: a__sieve#(cons(X,Y)) -> c_13(mark#(X)) 14: a__tail#(X) -> c_14() 15: a__tail#(cons(X,Y)) -> c_15(mark#(Y)) 16: mark#(0()) -> c_16() 17: mark#(cons(X1,X2)) -> c_17(mark#(X1)) 18: mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)) 19: mark#(false()) -> c_19() 20: mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)) 21: mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)) 22: mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)) 23: mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)) 24: mark#(primes()) -> c_24(a__primes#()) 25: mark#(s(X)) -> c_25(mark#(X)) 26: mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)) 27: mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)) 28: mark#(true()) -> c_28() * Step 3: RemoveWeakSuffixes MAYBE + Considered Problem: - Strict DPs: a__filter#(s(s(X)),cons(Y,Z)) -> c_2(a__if#(divides(s(s(mark(X))),mark(Y)) ,filter(s(s(X)),Z) ,cons(Y,filter(X,sieve(Y)))) ,mark#(X) ,mark#(Y)) a__from#(X) -> c_3(mark#(X)) a__head#(cons(X,Y)) -> c_6(mark#(X)) a__if#(false(),X,Y) -> c_8(mark#(Y)) a__if#(true(),X,Y) -> c_9(mark#(X)) a__primes#() -> c_10(a__sieve#(a__from(s(s(0())))),a__from#(s(s(0())))) a__sieve#(cons(X,Y)) -> c_13(mark#(X)) a__tail#(cons(X,Y)) -> c_15(mark#(Y)) mark#(cons(X1,X2)) -> c_17(mark#(X1)) mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)) mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)) mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)) mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)) mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)) mark#(primes()) -> c_24(a__primes#()) mark#(s(X)) -> c_25(mark#(X)) mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)) mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)) - Weak DPs: a__filter#(X1,X2) -> c_1() a__from#(X) -> c_4() a__head#(X) -> c_5() a__if#(X1,X2,X3) -> c_7() a__primes#() -> c_11() a__sieve#(X) -> c_12() a__tail#(X) -> c_14() mark#(0()) -> c_16() mark#(false()) -> c_19() mark#(true()) -> c_28() - Weak TRS: a__filter(X1,X2) -> filter(X1,X2) a__filter(s(s(X)),cons(Y,Z)) -> a__if(divides(s(s(mark(X))),mark(Y)) ,filter(s(s(X)),Z) ,cons(Y,filter(X,sieve(Y)))) a__from(X) -> cons(mark(X),from(s(X))) a__from(X) -> from(X) a__head(X) -> head(X) a__head(cons(X,Y)) -> mark(X) a__if(X1,X2,X3) -> if(X1,X2,X3) a__if(false(),X,Y) -> mark(Y) a__if(true(),X,Y) -> mark(X) a__primes() -> a__sieve(a__from(s(s(0())))) a__primes() -> primes() a__sieve(X) -> sieve(X) a__sieve(cons(X,Y)) -> cons(mark(X),filter(X,sieve(Y))) a__tail(X) -> tail(X) a__tail(cons(X,Y)) -> mark(Y) mark(0()) -> 0() mark(cons(X1,X2)) -> cons(mark(X1),X2) mark(divides(X1,X2)) -> divides(mark(X1),mark(X2)) mark(false()) -> false() mark(filter(X1,X2)) -> a__filter(mark(X1),mark(X2)) mark(from(X)) -> a__from(mark(X)) mark(head(X)) -> a__head(mark(X)) mark(if(X1,X2,X3)) -> a__if(mark(X1),X2,X3) mark(primes()) -> a__primes() mark(s(X)) -> s(mark(X)) mark(sieve(X)) -> a__sieve(mark(X)) mark(tail(X)) -> a__tail(mark(X)) mark(true()) -> true() - Signature: {a__filter/2,a__from/1,a__head/1,a__if/3,a__primes/0,a__sieve/1,a__tail/1,mark/1,a__filter#/2,a__from#/1 ,a__head#/1,a__if#/3,a__primes#/0,a__sieve#/1,a__tail#/1,mark#/1} / {0/0,cons/2,divides/2,false/0,filter/2 ,from/1,head/1,if/3,primes/0,s/1,sieve/1,tail/1,true/0,c_1/0,c_2/3,c_3/1,c_4/0,c_5/0,c_6/1,c_7/0,c_8/1,c_9/1 ,c_10/2,c_11/0,c_12/0,c_13/1,c_14/0,c_15/1,c_16/0,c_17/1,c_18/2,c_19/0,c_20/3,c_21/2,c_22/2,c_23/2,c_24/1 ,c_25/1,c_26/2,c_27/2,c_28/0} - Obligation: innermost runtime complexity wrt. defined symbols {a__filter#,a__from#,a__head#,a__if#,a__primes#,a__sieve# ,a__tail#,mark#} and constructors {0,cons,divides,false,filter,from,head,if,primes,s,sieve,tail,true} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:a__filter#(s(s(X)),cons(Y,Z)) -> c_2(a__if#(divides(s(s(mark(X))),mark(Y)) ,filter(s(s(X)),Z) ,cons(Y,filter(X,sieve(Y)))) ,mark#(X) ,mark#(Y)) -->_3 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_2 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_3 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_2 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_3 mark#(s(X)) -> c_25(mark#(X)):16 -->_2 mark#(s(X)) -> c_25(mark#(X)):16 -->_3 mark#(primes()) -> c_24(a__primes#()):15 -->_2 mark#(primes()) -> c_24(a__primes#()):15 -->_3 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_2 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_3 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_2 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_3 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_2 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_3 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_2 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_3 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_2 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_3 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 -->_2 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 -->_3 mark#(true()) -> c_28():28 -->_2 mark#(true()) -> c_28():28 -->_3 mark#(false()) -> c_19():27 -->_2 mark#(false()) -> c_19():27 -->_3 mark#(0()) -> c_16():26 -->_2 mark#(0()) -> c_16():26 -->_1 a__if#(X1,X2,X3) -> c_7():22 2:S:a__from#(X) -> c_3(mark#(X)) -->_1 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_1 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_1 mark#(s(X)) -> c_25(mark#(X)):16 -->_1 mark#(primes()) -> c_24(a__primes#()):15 -->_1 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_1 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_1 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_1 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_1 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_1 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 -->_1 mark#(true()) -> c_28():28 -->_1 mark#(false()) -> c_19():27 -->_1 mark#(0()) -> c_16():26 3:S:a__head#(cons(X,Y)) -> c_6(mark#(X)) -->_1 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_1 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_1 mark#(s(X)) -> c_25(mark#(X)):16 -->_1 mark#(primes()) -> c_24(a__primes#()):15 -->_1 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_1 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_1 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_1 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_1 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_1 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 -->_1 mark#(true()) -> c_28():28 -->_1 mark#(false()) -> c_19():27 -->_1 mark#(0()) -> c_16():26 4:S:a__if#(false(),X,Y) -> c_8(mark#(Y)) -->_1 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_1 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_1 mark#(s(X)) -> c_25(mark#(X)):16 -->_1 mark#(primes()) -> c_24(a__primes#()):15 -->_1 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_1 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_1 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_1 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_1 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_1 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 -->_1 mark#(true()) -> c_28():28 -->_1 mark#(false()) -> c_19():27 -->_1 mark#(0()) -> c_16():26 5:S:a__if#(true(),X,Y) -> c_9(mark#(X)) -->_1 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_1 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_1 mark#(s(X)) -> c_25(mark#(X)):16 -->_1 mark#(primes()) -> c_24(a__primes#()):15 -->_1 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_1 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_1 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_1 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_1 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_1 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 -->_1 mark#(true()) -> c_28():28 -->_1 mark#(false()) -> c_19():27 -->_1 mark#(0()) -> c_16():26 6:S:a__primes#() -> c_10(a__sieve#(a__from(s(s(0())))),a__from#(s(s(0())))) -->_1 a__sieve#(cons(X,Y)) -> c_13(mark#(X)):7 -->_1 a__sieve#(X) -> c_12():24 -->_2 a__from#(X) -> c_4():20 -->_2 a__from#(X) -> c_3(mark#(X)):2 7:S:a__sieve#(cons(X,Y)) -> c_13(mark#(X)) -->_1 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_1 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_1 mark#(s(X)) -> c_25(mark#(X)):16 -->_1 mark#(primes()) -> c_24(a__primes#()):15 -->_1 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_1 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_1 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_1 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_1 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_1 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 -->_1 mark#(true()) -> c_28():28 -->_1 mark#(false()) -> c_19():27 -->_1 mark#(0()) -> c_16():26 8:S:a__tail#(cons(X,Y)) -> c_15(mark#(Y)) -->_1 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_1 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_1 mark#(s(X)) -> c_25(mark#(X)):16 -->_1 mark#(primes()) -> c_24(a__primes#()):15 -->_1 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_1 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_1 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_1 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_1 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_1 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 -->_1 mark#(true()) -> c_28():28 -->_1 mark#(false()) -> c_19():27 -->_1 mark#(0()) -> c_16():26 9:S:mark#(cons(X1,X2)) -> c_17(mark#(X1)) -->_1 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_1 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_1 mark#(s(X)) -> c_25(mark#(X)):16 -->_1 mark#(primes()) -> c_24(a__primes#()):15 -->_1 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_1 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_1 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_1 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_1 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_1 mark#(true()) -> c_28():28 -->_1 mark#(false()) -> c_19():27 -->_1 mark#(0()) -> c_16():26 -->_1 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 10:S:mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)) -->_2 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_1 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_2 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_1 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_2 mark#(s(X)) -> c_25(mark#(X)):16 -->_1 mark#(s(X)) -> c_25(mark#(X)):16 -->_2 mark#(primes()) -> c_24(a__primes#()):15 -->_1 mark#(primes()) -> c_24(a__primes#()):15 -->_2 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_1 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_2 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_1 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_2 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_1 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_2 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_1 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_2 mark#(true()) -> c_28():28 -->_1 mark#(true()) -> c_28():28 -->_2 mark#(false()) -> c_19():27 -->_1 mark#(false()) -> c_19():27 -->_2 mark#(0()) -> c_16():26 -->_1 mark#(0()) -> c_16():26 -->_2 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_1 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_2 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 -->_1 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 11:S:mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)) -->_3 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_2 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_3 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_2 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_3 mark#(s(X)) -> c_25(mark#(X)):16 -->_2 mark#(s(X)) -> c_25(mark#(X)):16 -->_3 mark#(primes()) -> c_24(a__primes#()):15 -->_2 mark#(primes()) -> c_24(a__primes#()):15 -->_3 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_2 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_3 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_2 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_3 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_2 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_3 mark#(true()) -> c_28():28 -->_2 mark#(true()) -> c_28():28 -->_3 mark#(false()) -> c_19():27 -->_2 mark#(false()) -> c_19():27 -->_3 mark#(0()) -> c_16():26 -->_2 mark#(0()) -> c_16():26 -->_1 a__filter#(X1,X2) -> c_1():19 -->_3 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_2 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_3 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_2 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_3 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 -->_2 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 -->_1 a__filter#(s(s(X)),cons(Y,Z)) -> c_2(a__if#(divides(s(s(mark(X))),mark(Y)) ,filter(s(s(X)),Z) ,cons(Y,filter(X,sieve(Y)))) ,mark#(X) ,mark#(Y)):1 12:S:mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)) -->_2 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_2 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_2 mark#(s(X)) -> c_25(mark#(X)):16 -->_2 mark#(primes()) -> c_24(a__primes#()):15 -->_2 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_2 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_2 mark#(true()) -> c_28():28 -->_2 mark#(false()) -> c_19():27 -->_2 mark#(0()) -> c_16():26 -->_1 a__from#(X) -> c_4():20 -->_2 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_2 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_2 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_2 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 -->_1 a__from#(X) -> c_3(mark#(X)):2 13:S:mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)) -->_2 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_2 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_2 mark#(s(X)) -> c_25(mark#(X)):16 -->_2 mark#(primes()) -> c_24(a__primes#()):15 -->_2 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_2 mark#(true()) -> c_28():28 -->_2 mark#(false()) -> c_19():27 -->_2 mark#(0()) -> c_16():26 -->_1 a__head#(X) -> c_5():21 -->_2 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_2 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_2 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_2 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_2 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 -->_1 a__head#(cons(X,Y)) -> c_6(mark#(X)):3 14:S:mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)) -->_2 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_2 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_2 mark#(s(X)) -> c_25(mark#(X)):16 -->_2 mark#(primes()) -> c_24(a__primes#()):15 -->_2 mark#(true()) -> c_28():28 -->_2 mark#(false()) -> c_19():27 -->_2 mark#(0()) -> c_16():26 -->_1 a__if#(X1,X2,X3) -> c_7():22 -->_2 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_2 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_2 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_2 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_2 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_2 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 -->_1 a__if#(true(),X,Y) -> c_9(mark#(X)):5 -->_1 a__if#(false(),X,Y) -> c_8(mark#(Y)):4 15:S:mark#(primes()) -> c_24(a__primes#()) -->_1 a__primes#() -> c_11():23 -->_1 a__primes#() -> c_10(a__sieve#(a__from(s(s(0())))),a__from#(s(s(0())))):6 16:S:mark#(s(X)) -> c_25(mark#(X)) -->_1 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_1 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_1 mark#(true()) -> c_28():28 -->_1 mark#(false()) -> c_19():27 -->_1 mark#(0()) -> c_16():26 -->_1 mark#(s(X)) -> c_25(mark#(X)):16 -->_1 mark#(primes()) -> c_24(a__primes#()):15 -->_1 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_1 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_1 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_1 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_1 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_1 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 17:S:mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)) -->_2 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_2 mark#(true()) -> c_28():28 -->_2 mark#(false()) -> c_19():27 -->_2 mark#(0()) -> c_16():26 -->_1 a__sieve#(X) -> c_12():24 -->_2 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_2 mark#(s(X)) -> c_25(mark#(X)):16 -->_2 mark#(primes()) -> c_24(a__primes#()):15 -->_2 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_2 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_2 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_2 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_2 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_2 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 -->_1 a__sieve#(cons(X,Y)) -> c_13(mark#(X)):7 18:S:mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)) -->_2 mark#(true()) -> c_28():28 -->_2 mark#(false()) -> c_19():27 -->_2 mark#(0()) -> c_16():26 -->_1 a__tail#(X) -> c_14():25 -->_2 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_2 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_2 mark#(s(X)) -> c_25(mark#(X)):16 -->_2 mark#(primes()) -> c_24(a__primes#()):15 -->_2 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_2 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_2 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_2 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_2 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_2 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 -->_1 a__tail#(cons(X,Y)) -> c_15(mark#(Y)):8 19:W:a__filter#(X1,X2) -> c_1() 20:W:a__from#(X) -> c_4() 21:W:a__head#(X) -> c_5() 22:W:a__if#(X1,X2,X3) -> c_7() 23:W:a__primes#() -> c_11() 24:W:a__sieve#(X) -> c_12() 25:W:a__tail#(X) -> c_14() 26:W:mark#(0()) -> c_16() 27:W:mark#(false()) -> c_19() 28:W:mark#(true()) -> c_28() The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 19: a__filter#(X1,X2) -> c_1() 20: a__from#(X) -> c_4() 21: a__head#(X) -> c_5() 22: a__if#(X1,X2,X3) -> c_7() 23: a__primes#() -> c_11() 24: a__sieve#(X) -> c_12() 25: a__tail#(X) -> c_14() 26: mark#(0()) -> c_16() 27: mark#(false()) -> c_19() 28: mark#(true()) -> c_28() * Step 4: SimplifyRHS MAYBE + Considered Problem: - Strict DPs: a__filter#(s(s(X)),cons(Y,Z)) -> c_2(a__if#(divides(s(s(mark(X))),mark(Y)) ,filter(s(s(X)),Z) ,cons(Y,filter(X,sieve(Y)))) ,mark#(X) ,mark#(Y)) a__from#(X) -> c_3(mark#(X)) a__head#(cons(X,Y)) -> c_6(mark#(X)) a__if#(false(),X,Y) -> c_8(mark#(Y)) a__if#(true(),X,Y) -> c_9(mark#(X)) a__primes#() -> c_10(a__sieve#(a__from(s(s(0())))),a__from#(s(s(0())))) a__sieve#(cons(X,Y)) -> c_13(mark#(X)) a__tail#(cons(X,Y)) -> c_15(mark#(Y)) mark#(cons(X1,X2)) -> c_17(mark#(X1)) mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)) mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)) mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)) mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)) mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)) mark#(primes()) -> c_24(a__primes#()) mark#(s(X)) -> c_25(mark#(X)) mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)) mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)) - Weak TRS: a__filter(X1,X2) -> filter(X1,X2) a__filter(s(s(X)),cons(Y,Z)) -> a__if(divides(s(s(mark(X))),mark(Y)) ,filter(s(s(X)),Z) ,cons(Y,filter(X,sieve(Y)))) a__from(X) -> cons(mark(X),from(s(X))) a__from(X) -> from(X) a__head(X) -> head(X) a__head(cons(X,Y)) -> mark(X) a__if(X1,X2,X3) -> if(X1,X2,X3) a__if(false(),X,Y) -> mark(Y) a__if(true(),X,Y) -> mark(X) a__primes() -> a__sieve(a__from(s(s(0())))) a__primes() -> primes() a__sieve(X) -> sieve(X) a__sieve(cons(X,Y)) -> cons(mark(X),filter(X,sieve(Y))) a__tail(X) -> tail(X) a__tail(cons(X,Y)) -> mark(Y) mark(0()) -> 0() mark(cons(X1,X2)) -> cons(mark(X1),X2) mark(divides(X1,X2)) -> divides(mark(X1),mark(X2)) mark(false()) -> false() mark(filter(X1,X2)) -> a__filter(mark(X1),mark(X2)) mark(from(X)) -> a__from(mark(X)) mark(head(X)) -> a__head(mark(X)) mark(if(X1,X2,X3)) -> a__if(mark(X1),X2,X3) mark(primes()) -> a__primes() mark(s(X)) -> s(mark(X)) mark(sieve(X)) -> a__sieve(mark(X)) mark(tail(X)) -> a__tail(mark(X)) mark(true()) -> true() - Signature: {a__filter/2,a__from/1,a__head/1,a__if/3,a__primes/0,a__sieve/1,a__tail/1,mark/1,a__filter#/2,a__from#/1 ,a__head#/1,a__if#/3,a__primes#/0,a__sieve#/1,a__tail#/1,mark#/1} / {0/0,cons/2,divides/2,false/0,filter/2 ,from/1,head/1,if/3,primes/0,s/1,sieve/1,tail/1,true/0,c_1/0,c_2/3,c_3/1,c_4/0,c_5/0,c_6/1,c_7/0,c_8/1,c_9/1 ,c_10/2,c_11/0,c_12/0,c_13/1,c_14/0,c_15/1,c_16/0,c_17/1,c_18/2,c_19/0,c_20/3,c_21/2,c_22/2,c_23/2,c_24/1 ,c_25/1,c_26/2,c_27/2,c_28/0} - Obligation: innermost runtime complexity wrt. defined symbols {a__filter#,a__from#,a__head#,a__if#,a__primes#,a__sieve# ,a__tail#,mark#} and constructors {0,cons,divides,false,filter,from,head,if,primes,s,sieve,tail,true} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:a__filter#(s(s(X)),cons(Y,Z)) -> c_2(a__if#(divides(s(s(mark(X))),mark(Y)) ,filter(s(s(X)),Z) ,cons(Y,filter(X,sieve(Y)))) ,mark#(X) ,mark#(Y)) -->_3 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_2 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_3 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_2 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_3 mark#(s(X)) -> c_25(mark#(X)):16 -->_2 mark#(s(X)) -> c_25(mark#(X)):16 -->_3 mark#(primes()) -> c_24(a__primes#()):15 -->_2 mark#(primes()) -> c_24(a__primes#()):15 -->_3 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_2 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_3 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_2 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_3 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_2 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_3 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_2 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_3 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_2 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_3 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 -->_2 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 2:S:a__from#(X) -> c_3(mark#(X)) -->_1 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_1 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_1 mark#(s(X)) -> c_25(mark#(X)):16 -->_1 mark#(primes()) -> c_24(a__primes#()):15 -->_1 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_1 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_1 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_1 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_1 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_1 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 3:S:a__head#(cons(X,Y)) -> c_6(mark#(X)) -->_1 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_1 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_1 mark#(s(X)) -> c_25(mark#(X)):16 -->_1 mark#(primes()) -> c_24(a__primes#()):15 -->_1 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_1 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_1 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_1 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_1 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_1 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 4:S:a__if#(false(),X,Y) -> c_8(mark#(Y)) -->_1 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_1 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_1 mark#(s(X)) -> c_25(mark#(X)):16 -->_1 mark#(primes()) -> c_24(a__primes#()):15 -->_1 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_1 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_1 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_1 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_1 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_1 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 5:S:a__if#(true(),X,Y) -> c_9(mark#(X)) -->_1 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_1 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_1 mark#(s(X)) -> c_25(mark#(X)):16 -->_1 mark#(primes()) -> c_24(a__primes#()):15 -->_1 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_1 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_1 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_1 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_1 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_1 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 6:S:a__primes#() -> c_10(a__sieve#(a__from(s(s(0())))),a__from#(s(s(0())))) -->_1 a__sieve#(cons(X,Y)) -> c_13(mark#(X)):7 -->_2 a__from#(X) -> c_3(mark#(X)):2 7:S:a__sieve#(cons(X,Y)) -> c_13(mark#(X)) -->_1 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_1 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_1 mark#(s(X)) -> c_25(mark#(X)):16 -->_1 mark#(primes()) -> c_24(a__primes#()):15 -->_1 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_1 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_1 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_1 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_1 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_1 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 8:S:a__tail#(cons(X,Y)) -> c_15(mark#(Y)) -->_1 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_1 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_1 mark#(s(X)) -> c_25(mark#(X)):16 -->_1 mark#(primes()) -> c_24(a__primes#()):15 -->_1 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_1 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_1 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_1 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_1 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_1 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 9:S:mark#(cons(X1,X2)) -> c_17(mark#(X1)) -->_1 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_1 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_1 mark#(s(X)) -> c_25(mark#(X)):16 -->_1 mark#(primes()) -> c_24(a__primes#()):15 -->_1 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_1 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_1 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_1 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_1 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_1 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 10:S:mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)) -->_2 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_1 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_2 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_1 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_2 mark#(s(X)) -> c_25(mark#(X)):16 -->_1 mark#(s(X)) -> c_25(mark#(X)):16 -->_2 mark#(primes()) -> c_24(a__primes#()):15 -->_1 mark#(primes()) -> c_24(a__primes#()):15 -->_2 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_1 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_2 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_1 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_2 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_1 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_2 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_1 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_2 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_1 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_2 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 -->_1 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 11:S:mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)) -->_3 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_2 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_3 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_2 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_3 mark#(s(X)) -> c_25(mark#(X)):16 -->_2 mark#(s(X)) -> c_25(mark#(X)):16 -->_3 mark#(primes()) -> c_24(a__primes#()):15 -->_2 mark#(primes()) -> c_24(a__primes#()):15 -->_3 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_2 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_3 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_2 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_3 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_2 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_3 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_2 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_3 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_2 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_3 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 -->_2 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 -->_1 a__filter#(s(s(X)),cons(Y,Z)) -> c_2(a__if#(divides(s(s(mark(X))),mark(Y)) ,filter(s(s(X)),Z) ,cons(Y,filter(X,sieve(Y)))) ,mark#(X) ,mark#(Y)):1 12:S:mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)) -->_2 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_2 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_2 mark#(s(X)) -> c_25(mark#(X)):16 -->_2 mark#(primes()) -> c_24(a__primes#()):15 -->_2 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_2 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_2 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_2 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_2 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_2 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 -->_1 a__from#(X) -> c_3(mark#(X)):2 13:S:mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)) -->_2 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_2 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_2 mark#(s(X)) -> c_25(mark#(X)):16 -->_2 mark#(primes()) -> c_24(a__primes#()):15 -->_2 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_2 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_2 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_2 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_2 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_2 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 -->_1 a__head#(cons(X,Y)) -> c_6(mark#(X)):3 14:S:mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)) -->_2 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_2 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_2 mark#(s(X)) -> c_25(mark#(X)):16 -->_2 mark#(primes()) -> c_24(a__primes#()):15 -->_2 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_2 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_2 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_2 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_2 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_2 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 -->_1 a__if#(true(),X,Y) -> c_9(mark#(X)):5 -->_1 a__if#(false(),X,Y) -> c_8(mark#(Y)):4 15:S:mark#(primes()) -> c_24(a__primes#()) -->_1 a__primes#() -> c_10(a__sieve#(a__from(s(s(0())))),a__from#(s(s(0())))):6 16:S:mark#(s(X)) -> c_25(mark#(X)) -->_1 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_1 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_1 mark#(s(X)) -> c_25(mark#(X)):16 -->_1 mark#(primes()) -> c_24(a__primes#()):15 -->_1 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_1 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_1 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_1 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_1 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_1 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 17:S:mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)) -->_2 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_2 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_2 mark#(s(X)) -> c_25(mark#(X)):16 -->_2 mark#(primes()) -> c_24(a__primes#()):15 -->_2 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_2 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_2 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_2 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_2 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_2 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 -->_1 a__sieve#(cons(X,Y)) -> c_13(mark#(X)):7 18:S:mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)) -->_2 mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)):18 -->_2 mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)):17 -->_2 mark#(s(X)) -> c_25(mark#(X)):16 -->_2 mark#(primes()) -> c_24(a__primes#()):15 -->_2 mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)):14 -->_2 mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)):13 -->_2 mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)):12 -->_2 mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):11 -->_2 mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)):10 -->_2 mark#(cons(X1,X2)) -> c_17(mark#(X1)):9 -->_1 a__tail#(cons(X,Y)) -> c_15(mark#(Y)):8 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: a__filter#(s(s(X)),cons(Y,Z)) -> c_2(mark#(X),mark#(Y)) * Step 5: Failure MAYBE + Considered Problem: - Strict DPs: a__filter#(s(s(X)),cons(Y,Z)) -> c_2(mark#(X),mark#(Y)) a__from#(X) -> c_3(mark#(X)) a__head#(cons(X,Y)) -> c_6(mark#(X)) a__if#(false(),X,Y) -> c_8(mark#(Y)) a__if#(true(),X,Y) -> c_9(mark#(X)) a__primes#() -> c_10(a__sieve#(a__from(s(s(0())))),a__from#(s(s(0())))) a__sieve#(cons(X,Y)) -> c_13(mark#(X)) a__tail#(cons(X,Y)) -> c_15(mark#(Y)) mark#(cons(X1,X2)) -> c_17(mark#(X1)) mark#(divides(X1,X2)) -> c_18(mark#(X1),mark#(X2)) mark#(filter(X1,X2)) -> c_20(a__filter#(mark(X1),mark(X2)),mark#(X1),mark#(X2)) mark#(from(X)) -> c_21(a__from#(mark(X)),mark#(X)) mark#(head(X)) -> c_22(a__head#(mark(X)),mark#(X)) mark#(if(X1,X2,X3)) -> c_23(a__if#(mark(X1),X2,X3),mark#(X1)) mark#(primes()) -> c_24(a__primes#()) mark#(s(X)) -> c_25(mark#(X)) mark#(sieve(X)) -> c_26(a__sieve#(mark(X)),mark#(X)) mark#(tail(X)) -> c_27(a__tail#(mark(X)),mark#(X)) - Weak TRS: a__filter(X1,X2) -> filter(X1,X2) a__filter(s(s(X)),cons(Y,Z)) -> a__if(divides(s(s(mark(X))),mark(Y)) ,filter(s(s(X)),Z) ,cons(Y,filter(X,sieve(Y)))) a__from(X) -> cons(mark(X),from(s(X))) a__from(X) -> from(X) a__head(X) -> head(X) a__head(cons(X,Y)) -> mark(X) a__if(X1,X2,X3) -> if(X1,X2,X3) a__if(false(),X,Y) -> mark(Y) a__if(true(),X,Y) -> mark(X) a__primes() -> a__sieve(a__from(s(s(0())))) a__primes() -> primes() a__sieve(X) -> sieve(X) a__sieve(cons(X,Y)) -> cons(mark(X),filter(X,sieve(Y))) a__tail(X) -> tail(X) a__tail(cons(X,Y)) -> mark(Y) mark(0()) -> 0() mark(cons(X1,X2)) -> cons(mark(X1),X2) mark(divides(X1,X2)) -> divides(mark(X1),mark(X2)) mark(false()) -> false() mark(filter(X1,X2)) -> a__filter(mark(X1),mark(X2)) mark(from(X)) -> a__from(mark(X)) mark(head(X)) -> a__head(mark(X)) mark(if(X1,X2,X3)) -> a__if(mark(X1),X2,X3) mark(primes()) -> a__primes() mark(s(X)) -> s(mark(X)) mark(sieve(X)) -> a__sieve(mark(X)) mark(tail(X)) -> a__tail(mark(X)) mark(true()) -> true() - Signature: {a__filter/2,a__from/1,a__head/1,a__if/3,a__primes/0,a__sieve/1,a__tail/1,mark/1,a__filter#/2,a__from#/1 ,a__head#/1,a__if#/3,a__primes#/0,a__sieve#/1,a__tail#/1,mark#/1} / {0/0,cons/2,divides/2,false/0,filter/2 ,from/1,head/1,if/3,primes/0,s/1,sieve/1,tail/1,true/0,c_1/0,c_2/2,c_3/1,c_4/0,c_5/0,c_6/1,c_7/0,c_8/1,c_9/1 ,c_10/2,c_11/0,c_12/0,c_13/1,c_14/0,c_15/1,c_16/0,c_17/1,c_18/2,c_19/0,c_20/3,c_21/2,c_22/2,c_23/2,c_24/1 ,c_25/1,c_26/2,c_27/2,c_28/0} - Obligation: innermost runtime complexity wrt. defined symbols {a__filter#,a__from#,a__head#,a__if#,a__primes#,a__sieve# ,a__tail#,mark#} and constructors {0,cons,divides,false,filter,from,head,if,primes,s,sieve,tail,true} + Applied Processor: EmptyProcessor + Details: The problem is still open. MAYBE