YES Problem: 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(filter(activate(Y),N,N))) nats(N) -> cons(N,n__nats(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) activate(n__filter(X1,X2,X3)) -> filter(X1,X2,X3) activate(n__sieve(X)) -> sieve(X) activate(n__nats(X)) -> nats(X) activate(X) -> X Proof: DP Processor: DPs: filter#(cons(X,Y),0(),M) -> activate#(Y) filter#(cons(X,Y),s(N),M) -> activate#(Y) sieve#(cons(0(),Y)) -> activate#(Y) sieve#(cons(s(N),Y)) -> activate#(Y) sieve#(cons(s(N),Y)) -> filter#(activate(Y),N,N) zprimes#() -> nats#(s(s(0()))) zprimes#() -> sieve#(nats(s(s(0())))) activate#(n__filter(X1,X2,X3)) -> filter#(X1,X2,X3) activate#(n__sieve(X)) -> sieve#(X) activate#(n__nats(X)) -> nats#(X) TRS: 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(filter(activate(Y),N,N))) nats(N) -> cons(N,n__nats(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) activate(n__filter(X1,X2,X3)) -> filter(X1,X2,X3) activate(n__sieve(X)) -> sieve(X) activate(n__nats(X)) -> nats(X) activate(X) -> X TDG Processor: DPs: filter#(cons(X,Y),0(),M) -> activate#(Y) filter#(cons(X,Y),s(N),M) -> activate#(Y) sieve#(cons(0(),Y)) -> activate#(Y) sieve#(cons(s(N),Y)) -> activate#(Y) sieve#(cons(s(N),Y)) -> filter#(activate(Y),N,N) zprimes#() -> nats#(s(s(0()))) zprimes#() -> sieve#(nats(s(s(0())))) activate#(n__filter(X1,X2,X3)) -> filter#(X1,X2,X3) activate#(n__sieve(X)) -> sieve#(X) activate#(n__nats(X)) -> nats#(X) TRS: 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(filter(activate(Y),N,N))) nats(N) -> cons(N,n__nats(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) activate(n__filter(X1,X2,X3)) -> filter(X1,X2,X3) activate(n__sieve(X)) -> sieve(X) activate(n__nats(X)) -> nats(X) activate(X) -> X graph: zprimes#() -> sieve#(nats(s(s(0())))) -> sieve#(cons(s(N),Y)) -> filter#(activate(Y),N,N) zprimes#() -> sieve#(nats(s(s(0())))) -> sieve#(cons(s(N),Y)) -> activate#(Y) zprimes#() -> sieve#(nats(s(s(0())))) -> sieve#(cons(0(),Y)) -> activate#(Y) sieve#(cons(s(N),Y)) -> activate#(Y) -> activate#(n__nats(X)) -> nats#(X) sieve#(cons(s(N),Y)) -> activate#(Y) -> activate#(n__sieve(X)) -> sieve#(X) sieve#(cons(s(N),Y)) -> activate#(Y) -> activate#(n__filter(X1,X2,X3)) -> filter#(X1,X2,X3) sieve#(cons(s(N),Y)) -> filter#(activate(Y),N,N) -> filter#(cons(X,Y),s(N),M) -> activate#(Y) sieve#(cons(s(N),Y)) -> filter#(activate(Y),N,N) -> filter#(cons(X,Y),0(),M) -> activate#(Y) sieve#(cons(0(),Y)) -> activate#(Y) -> activate#(n__nats(X)) -> nats#(X) sieve#(cons(0(),Y)) -> activate#(Y) -> activate#(n__sieve(X)) -> sieve#(X) sieve#(cons(0(),Y)) -> activate#(Y) -> activate#(n__filter(X1,X2,X3)) -> filter#(X1,X2,X3) activate#(n__sieve(X)) -> sieve#(X) -> sieve#(cons(s(N),Y)) -> filter#(activate(Y),N,N) activate#(n__sieve(X)) -> sieve#(X) -> sieve#(cons(s(N),Y)) -> activate#(Y) activate#(n__sieve(X)) -> sieve#(X) -> sieve#(cons(0(),Y)) -> activate#(Y) activate#(n__filter(X1,X2,X3)) -> filter#(X1,X2,X3) -> filter#(cons(X,Y),s(N),M) -> activate#(Y) activate#(n__filter(X1,X2,X3)) -> filter#(X1,X2,X3) -> filter#(cons(X,Y),0(),M) -> activate#(Y) filter#(cons(X,Y),s(N),M) -> activate#(Y) -> activate#(n__nats(X)) -> nats#(X) filter#(cons(X,Y),s(N),M) -> activate#(Y) -> activate#(n__sieve(X)) -> sieve#(X) filter#(cons(X,Y),s(N),M) -> activate#(Y) -> activate#(n__filter(X1,X2,X3)) -> filter#(X1,X2,X3) filter#(cons(X,Y),0(),M) -> activate#(Y) -> activate#(n__nats(X)) -> nats#(X) filter#(cons(X,Y),0(),M) -> activate#(Y) -> activate#(n__sieve(X)) -> sieve#(X) filter#(cons(X,Y),0(),M) -> activate#(Y) -> activate#(n__filter(X1,X2,X3)) -> filter#(X1,X2,X3) SCC Processor: #sccs: 1 #rules: 7 #arcs: 22/100 DPs: sieve#(cons(0(),Y)) -> activate#(Y) activate#(n__filter(X1,X2,X3)) -> filter#(X1,X2,X3) filter#(cons(X,Y),0(),M) -> activate#(Y) activate#(n__sieve(X)) -> sieve#(X) sieve#(cons(s(N),Y)) -> activate#(Y) sieve#(cons(s(N),Y)) -> filter#(activate(Y),N,N) filter#(cons(X,Y),s(N),M) -> activate#(Y) TRS: 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(filter(activate(Y),N,N))) nats(N) -> cons(N,n__nats(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) activate(n__filter(X1,X2,X3)) -> filter(X1,X2,X3) activate(n__sieve(X)) -> sieve(X) activate(n__nats(X)) -> nats(X) activate(X) -> X Arctic Interpretation Processor: dimension: 1 interpretation: [sieve#](x0) = x0, [activate#](x0) = x0, [filter#](x0, x1, x2) = x0 + x1 + x2, [zprimes] = 6, [n__nats](x0) = x0 + 4, [nats](x0) = x0 + 4, [n__sieve](x0) = 2x0 + 0, [sieve](x0) = 2x0 + 0, [s](x0) = x0 + 0, [n__filter](x0, x1, x2) = x0 + x1 + x2 + 0, [activate](x0) = x0 + 0, [filter](x0, x1, x2) = x0 + x1 + x2 + 0, [0] = 0, [cons](x0, x1) = x0 + x1 + 0 orientation: sieve#(cons(0(),Y)) = Y + 0 >= Y = activate#(Y) activate#(n__filter(X1,X2,X3)) = X1 + X2 + X3 + 0 >= X1 + X2 + X3 = filter#(X1,X2,X3) filter#(cons(X,Y),0(),M) = M + X + Y + 0 >= Y = activate#(Y) activate#(n__sieve(X)) = 2X + 0 >= X = sieve#(X) sieve#(cons(s(N),Y)) = N + Y + 0 >= Y = activate#(Y) sieve#(cons(s(N),Y)) = N + Y + 0 >= N + Y + 0 = filter#(activate(Y),N,N) filter#(cons(X,Y),s(N),M) = M + N + X + Y + 0 >= Y = activate#(Y) filter(cons(X,Y),0(),M) = M + X + Y + 0 >= M + Y + 0 = cons(0(),n__filter(activate(Y),M,M)) filter(cons(X,Y),s(N),M) = M + N + X + Y + 0 >= M + N + X + Y + 0 = cons(X,n__filter(activate(Y),N,M)) sieve(cons(0(),Y)) = 2Y + 2 >= 2Y + 2 = cons(0(),n__sieve(activate(Y))) sieve(cons(s(N),Y)) = 2N + 2Y + 2 >= 2N + 2Y + 2 = cons(s(N),n__sieve(filter(activate(Y),N,N))) nats(N) = N + 4 >= N + 4 = cons(N,n__nats(s(N))) zprimes() = 6 >= 6 = sieve(nats(s(s(0())))) filter(X1,X2,X3) = X1 + X2 + X3 + 0 >= X1 + X2 + X3 + 0 = n__filter(X1,X2,X3) sieve(X) = 2X + 0 >= 2X + 0 = n__sieve(X) nats(X) = X + 4 >= X + 4 = n__nats(X) activate(n__filter(X1,X2,X3)) = X1 + X2 + X3 + 0 >= X1 + X2 + X3 + 0 = filter(X1,X2,X3) activate(n__sieve(X)) = 2X + 0 >= 2X + 0 = sieve(X) activate(n__nats(X)) = X + 4 >= X + 4 = nats(X) activate(X) = X + 0 >= X = X problem: DPs: sieve#(cons(0(),Y)) -> activate#(Y) activate#(n__filter(X1,X2,X3)) -> filter#(X1,X2,X3) filter#(cons(X,Y),0(),M) -> activate#(Y) sieve#(cons(s(N),Y)) -> activate#(Y) sieve#(cons(s(N),Y)) -> filter#(activate(Y),N,N) filter#(cons(X,Y),s(N),M) -> activate#(Y) TRS: 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(filter(activate(Y),N,N))) nats(N) -> cons(N,n__nats(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) activate(n__filter(X1,X2,X3)) -> filter(X1,X2,X3) activate(n__sieve(X)) -> sieve(X) activate(n__nats(X)) -> nats(X) activate(X) -> X SCC Processor: #sccs: 1 #rules: 3 #arcs: 15/36 DPs: activate#(n__filter(X1,X2,X3)) -> filter#(X1,X2,X3) filter#(cons(X,Y),0(),M) -> activate#(Y) filter#(cons(X,Y),s(N),M) -> activate#(Y) TRS: 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(filter(activate(Y),N,N))) nats(N) -> cons(N,n__nats(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) activate(n__filter(X1,X2,X3)) -> filter(X1,X2,X3) activate(n__sieve(X)) -> sieve(X) activate(n__nats(X)) -> nats(X) activate(X) -> X Subterm Criterion Processor: simple projection: pi(filter#) = 0 pi(activate#) = 0 problem: DPs: TRS: 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(filter(activate(Y),N,N))) nats(N) -> cons(N,n__nats(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) activate(n__filter(X1,X2,X3)) -> filter(X1,X2,X3) activate(n__sieve(X)) -> sieve(X) activate(n__nats(X)) -> nats(X) activate(X) -> X Qed