Runtime Complexity TRS:
The TRS R consists of the following rules:

filter(cons(X, Y), 0, M) → cons(0, n__filter(activate(Y), M, M))
filter(cons(X, Y), s(N), M) → cons(X, n__filter(activate(Y), N, M))
sieve(cons(0, Y)) → cons(0, n__sieve(activate(Y)))
sieve(cons(s(N), Y)) → cons(s(N), n__sieve(n__filter(activate(Y), N, N)))
nats(N) → cons(N, n__nats(n__s(N)))
zprimessieve(nats(s(s(0))))
filter(X1, X2, X3) → n__filter(X1, X2, X3)
sieve(X) → n__sieve(X)
nats(X) → n__nats(X)
s(X) → n__s(X)
activate(n__filter(X1, X2, X3)) → filter(activate(X1), activate(X2), activate(X3))
activate(n__sieve(X)) → sieve(activate(X))
activate(n__nats(X)) → nats(activate(X))
activate(n__s(X)) → s(activate(X))
activate(X) → X

Rewrite Strategy: INNERMOST


Renamed function symbols to avoid clashes with predefined symbol.


Runtime Complexity TRS:
The TRS R consists of the following rules:


filter'(cons'(X, Y), 0', M) → cons'(0', n__filter'(activate'(Y), M, M))
filter'(cons'(X, Y), s'(N), M) → cons'(X, n__filter'(activate'(Y), N, M))
sieve'(cons'(0', Y)) → cons'(0', n__sieve'(activate'(Y)))
sieve'(cons'(s'(N), Y)) → cons'(s'(N), n__sieve'(n__filter'(activate'(Y), N, N)))
nats'(N) → cons'(N, n__nats'(n__s'(N)))
zprimes'sieve'(nats'(s'(s'(0'))))
filter'(X1, X2, X3) → n__filter'(X1, X2, X3)
sieve'(X) → n__sieve'(X)
nats'(X) → n__nats'(X)
s'(X) → n__s'(X)
activate'(n__filter'(X1, X2, X3)) → filter'(activate'(X1), activate'(X2), activate'(X3))
activate'(n__sieve'(X)) → sieve'(activate'(X))
activate'(n__nats'(X)) → nats'(activate'(X))
activate'(n__s'(X)) → s'(activate'(X))
activate'(X) → X

Rewrite Strategy: INNERMOST


Infered types.


Rules:
filter'(cons'(X, Y), 0', M) → cons'(0', n__filter'(activate'(Y), M, M))
filter'(cons'(X, Y), s'(N), M) → cons'(X, n__filter'(activate'(Y), N, M))
sieve'(cons'(0', Y)) → cons'(0', n__sieve'(activate'(Y)))
sieve'(cons'(s'(N), Y)) → cons'(s'(N), n__sieve'(n__filter'(activate'(Y), N, N)))
nats'(N) → cons'(N, n__nats'(n__s'(N)))
zprimes'sieve'(nats'(s'(s'(0'))))
filter'(X1, X2, X3) → n__filter'(X1, X2, X3)
sieve'(X) → n__sieve'(X)
nats'(X) → n__nats'(X)
s'(X) → n__s'(X)
activate'(n__filter'(X1, X2, X3)) → filter'(activate'(X1), activate'(X2), activate'(X3))
activate'(n__sieve'(X)) → sieve'(activate'(X))
activate'(n__nats'(X)) → nats'(activate'(X))
activate'(n__s'(X)) → s'(activate'(X))
activate'(X) → X

Types:
filter' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
cons' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
0' :: cons':0':n__filter':n__sieve':n__s':n__nats'
n__filter' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
activate' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
s' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
sieve' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
n__sieve' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
nats' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
n__nats' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
n__s' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
zprimes' :: cons':0':n__filter':n__sieve':n__s':n__nats'
_hole_cons':0':n__filter':n__sieve':n__s':n__nats'1 :: cons':0':n__filter':n__sieve':n__s':n__nats'
_gen_cons':0':n__filter':n__sieve':n__s':n__nats'2 :: Nat → cons':0':n__filter':n__sieve':n__s':n__nats'


Heuristically decided to analyse the following defined symbols:
activate', sieve'

They will be analysed ascendingly in the following order:
activate' = sieve'


Rules:
filter'(cons'(X, Y), 0', M) → cons'(0', n__filter'(activate'(Y), M, M))
filter'(cons'(X, Y), s'(N), M) → cons'(X, n__filter'(activate'(Y), N, M))
sieve'(cons'(0', Y)) → cons'(0', n__sieve'(activate'(Y)))
sieve'(cons'(s'(N), Y)) → cons'(s'(N), n__sieve'(n__filter'(activate'(Y), N, N)))
nats'(N) → cons'(N, n__nats'(n__s'(N)))
zprimes'sieve'(nats'(s'(s'(0'))))
filter'(X1, X2, X3) → n__filter'(X1, X2, X3)
sieve'(X) → n__sieve'(X)
nats'(X) → n__nats'(X)
s'(X) → n__s'(X)
activate'(n__filter'(X1, X2, X3)) → filter'(activate'(X1), activate'(X2), activate'(X3))
activate'(n__sieve'(X)) → sieve'(activate'(X))
activate'(n__nats'(X)) → nats'(activate'(X))
activate'(n__s'(X)) → s'(activate'(X))
activate'(X) → X

Types:
filter' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
cons' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
0' :: cons':0':n__filter':n__sieve':n__s':n__nats'
n__filter' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
activate' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
s' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
sieve' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
n__sieve' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
nats' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
n__nats' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
n__s' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
zprimes' :: cons':0':n__filter':n__sieve':n__s':n__nats'
_hole_cons':0':n__filter':n__sieve':n__s':n__nats'1 :: cons':0':n__filter':n__sieve':n__s':n__nats'
_gen_cons':0':n__filter':n__sieve':n__s':n__nats'2 :: Nat → cons':0':n__filter':n__sieve':n__s':n__nats'

Generator Equations:
_gen_cons':0':n__filter':n__sieve':n__s':n__nats'2(0) ⇔ 0'
_gen_cons':0':n__filter':n__sieve':n__s':n__nats'2(+(x, 1)) ⇔ cons'(0', _gen_cons':0':n__filter':n__sieve':n__s':n__nats'2(x))

The following defined symbols remain to be analysed:
sieve', activate'

They will be analysed ascendingly in the following order:
activate' = sieve'


Could not prove a rewrite lemma for the defined symbol sieve'.


Rules:
filter'(cons'(X, Y), 0', M) → cons'(0', n__filter'(activate'(Y), M, M))
filter'(cons'(X, Y), s'(N), M) → cons'(X, n__filter'(activate'(Y), N, M))
sieve'(cons'(0', Y)) → cons'(0', n__sieve'(activate'(Y)))
sieve'(cons'(s'(N), Y)) → cons'(s'(N), n__sieve'(n__filter'(activate'(Y), N, N)))
nats'(N) → cons'(N, n__nats'(n__s'(N)))
zprimes'sieve'(nats'(s'(s'(0'))))
filter'(X1, X2, X3) → n__filter'(X1, X2, X3)
sieve'(X) → n__sieve'(X)
nats'(X) → n__nats'(X)
s'(X) → n__s'(X)
activate'(n__filter'(X1, X2, X3)) → filter'(activate'(X1), activate'(X2), activate'(X3))
activate'(n__sieve'(X)) → sieve'(activate'(X))
activate'(n__nats'(X)) → nats'(activate'(X))
activate'(n__s'(X)) → s'(activate'(X))
activate'(X) → X

Types:
filter' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
cons' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
0' :: cons':0':n__filter':n__sieve':n__s':n__nats'
n__filter' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
activate' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
s' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
sieve' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
n__sieve' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
nats' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
n__nats' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
n__s' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
zprimes' :: cons':0':n__filter':n__sieve':n__s':n__nats'
_hole_cons':0':n__filter':n__sieve':n__s':n__nats'1 :: cons':0':n__filter':n__sieve':n__s':n__nats'
_gen_cons':0':n__filter':n__sieve':n__s':n__nats'2 :: Nat → cons':0':n__filter':n__sieve':n__s':n__nats'

Generator Equations:
_gen_cons':0':n__filter':n__sieve':n__s':n__nats'2(0) ⇔ 0'
_gen_cons':0':n__filter':n__sieve':n__s':n__nats'2(+(x, 1)) ⇔ cons'(0', _gen_cons':0':n__filter':n__sieve':n__s':n__nats'2(x))

The following defined symbols remain to be analysed:
activate'

They will be analysed ascendingly in the following order:
activate' = sieve'


Could not prove a rewrite lemma for the defined symbol activate'.


Rules:
filter'(cons'(X, Y), 0', M) → cons'(0', n__filter'(activate'(Y), M, M))
filter'(cons'(X, Y), s'(N), M) → cons'(X, n__filter'(activate'(Y), N, M))
sieve'(cons'(0', Y)) → cons'(0', n__sieve'(activate'(Y)))
sieve'(cons'(s'(N), Y)) → cons'(s'(N), n__sieve'(n__filter'(activate'(Y), N, N)))
nats'(N) → cons'(N, n__nats'(n__s'(N)))
zprimes'sieve'(nats'(s'(s'(0'))))
filter'(X1, X2, X3) → n__filter'(X1, X2, X3)
sieve'(X) → n__sieve'(X)
nats'(X) → n__nats'(X)
s'(X) → n__s'(X)
activate'(n__filter'(X1, X2, X3)) → filter'(activate'(X1), activate'(X2), activate'(X3))
activate'(n__sieve'(X)) → sieve'(activate'(X))
activate'(n__nats'(X)) → nats'(activate'(X))
activate'(n__s'(X)) → s'(activate'(X))
activate'(X) → X

Types:
filter' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
cons' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
0' :: cons':0':n__filter':n__sieve':n__s':n__nats'
n__filter' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
activate' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
s' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
sieve' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
n__sieve' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
nats' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
n__nats' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
n__s' :: cons':0':n__filter':n__sieve':n__s':n__nats' → cons':0':n__filter':n__sieve':n__s':n__nats'
zprimes' :: cons':0':n__filter':n__sieve':n__s':n__nats'
_hole_cons':0':n__filter':n__sieve':n__s':n__nats'1 :: cons':0':n__filter':n__sieve':n__s':n__nats'
_gen_cons':0':n__filter':n__sieve':n__s':n__nats'2 :: Nat → cons':0':n__filter':n__sieve':n__s':n__nats'

Generator Equations:
_gen_cons':0':n__filter':n__sieve':n__s':n__nats'2(0) ⇔ 0'
_gen_cons':0':n__filter':n__sieve':n__s':n__nats'2(+(x, 1)) ⇔ cons'(0', _gen_cons':0':n__filter':n__sieve':n__s':n__nats'2(x))

No more defined symbols left to analyse.