* Step 1: Sum WORST_CASE(?,O(1))
+ Considered Problem:
- Strict TRS:
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)
- 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 runtime complexity wrt. defined symbols {activate,cons,filter,from,head,if,primes,sieve
,tail} and constructors {0,divides,false,n__cons,n__filter,n__from,s,true}
+ Applied Processor:
Sum {left = someStrategy, right = someStrategy}
+ Details:
()
* Step 2: InnermostRuleRemoval WORST_CASE(?,O(1))
+ Considered Problem:
- Strict TRS:
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)
- 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 runtime complexity wrt. defined symbols {activate,cons,filter,from,head,if,primes,sieve
,tail} and constructors {0,divides,false,n__cons,n__filter,n__from,s,true}
+ Applied Processor:
InnermostRuleRemoval
+ Details:
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.
* Step 3: DependencyPairs WORST_CASE(?,O(1))
+ Considered Problem:
- Strict TRS:
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} / {0/0,divides/2,false/0,n__cons/2
,n__filter/2,n__from/1,s/1,true/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {activate,cons,filter,from,head,if,primes,sieve
,tail} and constructors {0,divides,false,n__cons,n__filter,n__from,s,true}
+ Applied Processor:
DependencyPairs {dpKind_ = DT}
+ Details:
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.
* Step 4: UsableRules WORST_CASE(?,O(1))
+ Considered Problem:
- 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 TRS:
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 runtime complexity wrt. defined symbols {activate#,cons#,filter#,from#,head#,if#,primes#,sieve#
,tail#} and constructors {0,divides,false,n__cons,n__filter,n__from,s,true}
+ Applied Processor:
UsableRules
+ Details:
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()))))
* Step 5: Trivial WORST_CASE(?,O(1))
+ Considered Problem:
- 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 TRS:
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 runtime complexity wrt. defined symbols {activate#,cons#,filter#,from#,head#,if#,primes#,sieve#
,tail#} and constructors {0,divides,false,n__cons,n__filter,n__from,s,true}
+ Applied Processor:
Trivial
+ Details:
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.
* Step 6: EmptyProcessor WORST_CASE(?,O(1))
+ Considered Problem:
- Weak TRS:
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 runtime complexity wrt. defined symbols {activate#,cons#,filter#,from#,head#,if#,primes#,sieve#
,tail#} and constructors {0,divides,false,n__cons,n__filter,n__from,s,true}
+ Applied Processor:
EmptyProcessor
+ Details:
The problem is already closed. The intended complexity is O(1).
WORST_CASE(?,O(1))