*** 1 Progress [(O(1),O(1))] *** Considered Problem: Strict DP Rules: Strict TRS Rules: activate(X) -> X activate(n__cons(X1,X2)) -> cons(X1,X2) activate(n__filter(X1,X2)) -> filter(X1,X2) activate(n__from(X)) -> from(X) cons(X1,X2) -> n__cons(X1,X2) filter(X1,X2) -> n__filter(X1,X2) filter(s(s(X)),cons(Y,Z)) -> if(divides(s(s(X)),Y),n__filter(s(s(X)),activate(Z)),n__cons(Y,n__filter(X,sieve(Y)))) from(X) -> cons(X,n__from(s(X))) from(X) -> n__from(X) head(cons(X,Y)) -> X if(false(),X,Y) -> activate(Y) if(true(),X,Y) -> activate(X) primes() -> sieve(from(s(s(0())))) sieve(cons(X,Y)) -> cons(X,n__filter(X,sieve(activate(Y)))) tail(cons(X,Y)) -> activate(Y) Weak DP Rules: Weak TRS Rules: Signature: {activate/1,cons/2,filter/2,from/1,head/1,if/3,primes/0,sieve/1,tail/1} / {0/0,divides/2,false/0,n__cons/2,n__filter/2,n__from/1,s/1,true/0} Obligation: Innermost basic terms: {activate,cons,filter,from,head,if,primes,sieve,tail}/{0,divides,false,n__cons,n__filter,n__from,s,true} Applied Processor: InnermostRuleRemoval Proof: Arguments of following rules are not normal-forms. filter(s(s(X)),cons(Y,Z)) -> if(divides(s(s(X)),Y),n__filter(s(s(X)),activate(Z)),n__cons(Y,n__filter(X,sieve(Y)))) head(cons(X,Y)) -> X sieve(cons(X,Y)) -> cons(X,n__filter(X,sieve(activate(Y)))) tail(cons(X,Y)) -> activate(Y) All above mentioned rules can be savely removed. *** 1.1 Progress [(O(1),O(1))] *** Considered Problem: Strict DP Rules: Strict TRS Rules: activate(X) -> X activate(n__cons(X1,X2)) -> cons(X1,X2) activate(n__filter(X1,X2)) -> filter(X1,X2) activate(n__from(X)) -> from(X) cons(X1,X2) -> n__cons(X1,X2) filter(X1,X2) -> n__filter(X1,X2) from(X) -> cons(X,n__from(s(X))) from(X) -> n__from(X) if(false(),X,Y) -> activate(Y) if(true(),X,Y) -> activate(X) primes() -> sieve(from(s(s(0())))) Weak DP Rules: Weak TRS Rules: Signature: {activate/1,cons/2,filter/2,from/1,head/1,if/3,primes/0,sieve/1,tail/1} / {0/0,divides/2,false/0,n__cons/2,n__filter/2,n__from/1,s/1,true/0} Obligation: Innermost basic terms: {activate,cons,filter,from,head,if,primes,sieve,tail}/{0,divides,false,n__cons,n__filter,n__from,s,true} Applied Processor: DependencyPairs {dpKind_ = DT} Proof: We add the following dependency tuples: Strict DPs activate#(X) -> c_1() activate#(n__cons(X1,X2)) -> c_2(cons#(X1,X2)) activate#(n__filter(X1,X2)) -> c_3(filter#(X1,X2)) activate#(n__from(X)) -> c_4(from#(X)) cons#(X1,X2) -> c_5() filter#(X1,X2) -> c_6() from#(X) -> c_7(cons#(X,n__from(s(X)))) from#(X) -> c_8() if#(false(),X,Y) -> c_9(activate#(Y)) if#(true(),X,Y) -> c_10(activate#(X)) primes#() -> c_11(sieve#(from(s(s(0())))),from#(s(s(0())))) Weak DPs and mark the set of starting terms. *** 1.1.1 Progress [(O(1),O(1))] *** Considered Problem: Strict DP Rules: activate#(X) -> c_1() activate#(n__cons(X1,X2)) -> c_2(cons#(X1,X2)) activate#(n__filter(X1,X2)) -> c_3(filter#(X1,X2)) activate#(n__from(X)) -> c_4(from#(X)) cons#(X1,X2) -> c_5() filter#(X1,X2) -> c_6() from#(X) -> c_7(cons#(X,n__from(s(X)))) from#(X) -> c_8() if#(false(),X,Y) -> c_9(activate#(Y)) if#(true(),X,Y) -> c_10(activate#(X)) primes#() -> c_11(sieve#(from(s(s(0())))),from#(s(s(0())))) Strict TRS Rules: Weak DP Rules: Weak TRS Rules: activate(X) -> X activate(n__cons(X1,X2)) -> cons(X1,X2) activate(n__filter(X1,X2)) -> filter(X1,X2) activate(n__from(X)) -> from(X) cons(X1,X2) -> n__cons(X1,X2) filter(X1,X2) -> n__filter(X1,X2) from(X) -> cons(X,n__from(s(X))) from(X) -> n__from(X) if(false(),X,Y) -> activate(Y) if(true(),X,Y) -> activate(X) primes() -> sieve(from(s(s(0())))) Signature: {activate/1,cons/2,filter/2,from/1,head/1,if/3,primes/0,sieve/1,tail/1,activate#/1,cons#/2,filter#/2,from#/1,head#/1,if#/3,primes#/0,sieve#/1,tail#/1} / {0/0,divides/2,false/0,n__cons/2,n__filter/2,n__from/1,s/1,true/0,c_1/0,c_2/1,c_3/1,c_4/1,c_5/0,c_6/0,c_7/1,c_8/0,c_9/1,c_10/1,c_11/2} Obligation: Innermost basic terms: {activate#,cons#,filter#,from#,head#,if#,primes#,sieve#,tail#}/{0,divides,false,n__cons,n__filter,n__from,s,true} Applied Processor: UsableRules Proof: We replace rewrite rules by usable rules: cons(X1,X2) -> n__cons(X1,X2) from(X) -> cons(X,n__from(s(X))) from(X) -> n__from(X) activate#(X) -> c_1() activate#(n__cons(X1,X2)) -> c_2(cons#(X1,X2)) activate#(n__filter(X1,X2)) -> c_3(filter#(X1,X2)) activate#(n__from(X)) -> c_4(from#(X)) cons#(X1,X2) -> c_5() filter#(X1,X2) -> c_6() from#(X) -> c_7(cons#(X,n__from(s(X)))) from#(X) -> c_8() if#(false(),X,Y) -> c_9(activate#(Y)) if#(true(),X,Y) -> c_10(activate#(X)) primes#() -> c_11(sieve#(from(s(s(0())))),from#(s(s(0())))) *** 1.1.1.1 Progress [(O(1),O(1))] *** Considered Problem: Strict DP Rules: activate#(X) -> c_1() activate#(n__cons(X1,X2)) -> c_2(cons#(X1,X2)) activate#(n__filter(X1,X2)) -> c_3(filter#(X1,X2)) activate#(n__from(X)) -> c_4(from#(X)) cons#(X1,X2) -> c_5() filter#(X1,X2) -> c_6() from#(X) -> c_7(cons#(X,n__from(s(X)))) from#(X) -> c_8() if#(false(),X,Y) -> c_9(activate#(Y)) if#(true(),X,Y) -> c_10(activate#(X)) primes#() -> c_11(sieve#(from(s(s(0())))),from#(s(s(0())))) Strict TRS Rules: Weak DP Rules: Weak TRS Rules: cons(X1,X2) -> n__cons(X1,X2) from(X) -> cons(X,n__from(s(X))) from(X) -> n__from(X) Signature: {activate/1,cons/2,filter/2,from/1,head/1,if/3,primes/0,sieve/1,tail/1,activate#/1,cons#/2,filter#/2,from#/1,head#/1,if#/3,primes#/0,sieve#/1,tail#/1} / {0/0,divides/2,false/0,n__cons/2,n__filter/2,n__from/1,s/1,true/0,c_1/0,c_2/1,c_3/1,c_4/1,c_5/0,c_6/0,c_7/1,c_8/0,c_9/1,c_10/1,c_11/2} Obligation: Innermost basic terms: {activate#,cons#,filter#,from#,head#,if#,primes#,sieve#,tail#}/{0,divides,false,n__cons,n__filter,n__from,s,true} Applied Processor: Trivial Proof: Consider the dependency graph 1:S:activate#(X) -> c_1() 2:S:activate#(n__cons(X1,X2)) -> c_2(cons#(X1,X2)) -->_1 cons#(X1,X2) -> c_5():5 3:S:activate#(n__filter(X1,X2)) -> c_3(filter#(X1,X2)) -->_1 filter#(X1,X2) -> c_6():6 4:S:activate#(n__from(X)) -> c_4(from#(X)) -->_1 from#(X) -> c_7(cons#(X,n__from(s(X)))):7 -->_1 from#(X) -> c_8():8 5:S:cons#(X1,X2) -> c_5() 6:S:filter#(X1,X2) -> c_6() 7:S:from#(X) -> c_7(cons#(X,n__from(s(X)))) -->_1 cons#(X1,X2) -> c_5():5 8:S:from#(X) -> c_8() 9:S:if#(false(),X,Y) -> c_9(activate#(Y)) -->_1 activate#(n__from(X)) -> c_4(from#(X)):4 -->_1 activate#(n__filter(X1,X2)) -> c_3(filter#(X1,X2)):3 -->_1 activate#(n__cons(X1,X2)) -> c_2(cons#(X1,X2)):2 -->_1 activate#(X) -> c_1():1 10:S:if#(true(),X,Y) -> c_10(activate#(X)) -->_1 activate#(n__from(X)) -> c_4(from#(X)):4 -->_1 activate#(n__filter(X1,X2)) -> c_3(filter#(X1,X2)):3 -->_1 activate#(n__cons(X1,X2)) -> c_2(cons#(X1,X2)):2 -->_1 activate#(X) -> c_1():1 11:S:primes#() -> c_11(sieve#(from(s(s(0())))),from#(s(s(0())))) -->_2 from#(X) -> c_8():8 -->_2 from#(X) -> c_7(cons#(X,n__from(s(X)))):7 The dependency graph contains no loops, we remove all dependency pairs. *** 1.1.1.1.1 Progress [(O(1),O(1))] *** Considered Problem: Strict DP Rules: Strict TRS Rules: Weak DP Rules: Weak TRS Rules: cons(X1,X2) -> n__cons(X1,X2) from(X) -> cons(X,n__from(s(X))) from(X) -> n__from(X) Signature: {activate/1,cons/2,filter/2,from/1,head/1,if/3,primes/0,sieve/1,tail/1,activate#/1,cons#/2,filter#/2,from#/1,head#/1,if#/3,primes#/0,sieve#/1,tail#/1} / {0/0,divides/2,false/0,n__cons/2,n__filter/2,n__from/1,s/1,true/0,c_1/0,c_2/1,c_3/1,c_4/1,c_5/0,c_6/0,c_7/1,c_8/0,c_9/1,c_10/1,c_11/2} Obligation: Innermost basic terms: {activate#,cons#,filter#,from#,head#,if#,primes#,sieve#,tail#}/{0,divides,false,n__cons,n__filter,n__from,s,true} Applied Processor: EmptyProcessor Proof: The problem is already closed. The intended complexity is O(1).