YES We show the termination of the TRS R: 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 -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: filter#(cons(X,Y),|0|(),M) -> activate#(Y) p2: filter#(cons(X,Y),s(N),M) -> activate#(Y) p3: sieve#(cons(|0|(),Y)) -> activate#(Y) p4: sieve#(cons(s(N),Y)) -> activate#(Y) p5: zprimes#() -> sieve#(nats(s(s(|0|())))) p6: zprimes#() -> nats#(s(s(|0|()))) p7: zprimes#() -> s#(s(|0|())) p8: zprimes#() -> s#(|0|()) p9: activate#(n__filter(X1,X2,X3)) -> filter#(activate(X1),activate(X2),activate(X3)) p10: activate#(n__filter(X1,X2,X3)) -> activate#(X1) p11: activate#(n__filter(X1,X2,X3)) -> activate#(X2) p12: activate#(n__filter(X1,X2,X3)) -> activate#(X3) p13: activate#(n__sieve(X)) -> sieve#(activate(X)) p14: activate#(n__sieve(X)) -> activate#(X) p15: activate#(n__nats(X)) -> nats#(activate(X)) p16: activate#(n__nats(X)) -> activate#(X) p17: activate#(n__s(X)) -> s#(activate(X)) p18: activate#(n__s(X)) -> activate#(X) and R consists of: r1: filter(cons(X,Y),|0|(),M) -> cons(|0|(),n__filter(activate(Y),M,M)) r2: filter(cons(X,Y),s(N),M) -> cons(X,n__filter(activate(Y),N,M)) r3: sieve(cons(|0|(),Y)) -> cons(|0|(),n__sieve(activate(Y))) r4: sieve(cons(s(N),Y)) -> cons(s(N),n__sieve(n__filter(activate(Y),N,N))) r5: nats(N) -> cons(N,n__nats(n__s(N))) r6: zprimes() -> sieve(nats(s(s(|0|())))) r7: filter(X1,X2,X3) -> n__filter(X1,X2,X3) r8: sieve(X) -> n__sieve(X) r9: nats(X) -> n__nats(X) r10: s(X) -> n__s(X) r11: activate(n__filter(X1,X2,X3)) -> filter(activate(X1),activate(X2),activate(X3)) r12: activate(n__sieve(X)) -> sieve(activate(X)) r13: activate(n__nats(X)) -> nats(activate(X)) r14: activate(n__s(X)) -> s(activate(X)) r15: activate(X) -> X The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p9, p10, p11, p12, p13, p14, p16, p18} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: filter#(cons(X,Y),|0|(),M) -> activate#(Y) p2: activate#(n__s(X)) -> activate#(X) p3: activate#(n__nats(X)) -> activate#(X) p4: activate#(n__sieve(X)) -> activate#(X) p5: activate#(n__sieve(X)) -> sieve#(activate(X)) p6: sieve#(cons(s(N),Y)) -> activate#(Y) p7: activate#(n__filter(X1,X2,X3)) -> activate#(X3) p8: activate#(n__filter(X1,X2,X3)) -> activate#(X2) p9: activate#(n__filter(X1,X2,X3)) -> activate#(X1) p10: activate#(n__filter(X1,X2,X3)) -> filter#(activate(X1),activate(X2),activate(X3)) p11: filter#(cons(X,Y),s(N),M) -> activate#(Y) p12: sieve#(cons(|0|(),Y)) -> activate#(Y) and R consists of: r1: filter(cons(X,Y),|0|(),M) -> cons(|0|(),n__filter(activate(Y),M,M)) r2: filter(cons(X,Y),s(N),M) -> cons(X,n__filter(activate(Y),N,M)) r3: sieve(cons(|0|(),Y)) -> cons(|0|(),n__sieve(activate(Y))) r4: sieve(cons(s(N),Y)) -> cons(s(N),n__sieve(n__filter(activate(Y),N,N))) r5: nats(N) -> cons(N,n__nats(n__s(N))) r6: zprimes() -> sieve(nats(s(s(|0|())))) r7: filter(X1,X2,X3) -> n__filter(X1,X2,X3) r8: sieve(X) -> n__sieve(X) r9: nats(X) -> n__nats(X) r10: s(X) -> n__s(X) r11: activate(n__filter(X1,X2,X3)) -> filter(activate(X1),activate(X2),activate(X3)) r12: activate(n__sieve(X)) -> sieve(activate(X)) r13: activate(n__nats(X)) -> nats(activate(X)) r14: activate(n__s(X)) -> s(activate(X)) r15: activate(X) -> X The set of usable rules consists of r1, r2, r3, r4, r5, r7, r8, r9, r10, r11, r12, r13, r14, r15 Take the reduction pair: lexicographic combination of reduction pairs: 1. max/plus interpretations on natural numbers: filter#_A(x1,x2,x3) = max{x1 + 2, x2 + 3, x3 + 1} cons_A(x1,x2) = max{x1 + 9, x2} |0|_A = 0 activate#_A(x1) = x1 + 2 n__s_A(x1) = x1 n__nats_A(x1) = max{10, x1 + 9} n__sieve_A(x1) = max{5, x1 + 4} sieve#_A(x1) = x1 + 2 activate_A(x1) = x1 s_A(x1) = x1 n__filter_A(x1,x2,x3) = max{x1, x2 + 8, x3 + 8} filter_A(x1,x2,x3) = max{x1, x2 + 8, x3 + 8} sieve_A(x1) = max{5, x1 + 4} nats_A(x1) = max{10, x1 + 9} 2. max/plus interpretations on natural numbers: filter#_A(x1,x2,x3) = 0 cons_A(x1,x2) = 6 |0|_A = 0 activate#_A(x1) = 0 n__s_A(x1) = 0 n__nats_A(x1) = 0 n__sieve_A(x1) = 10 sieve#_A(x1) = max{2, x1} activate_A(x1) = max{7, x1 + 2} s_A(x1) = 3 n__filter_A(x1,x2,x3) = 3 filter_A(x1,x2,x3) = 6 sieve_A(x1) = 11 nats_A(x1) = 6 The next rules are strictly ordered: p3, p4, p5, p6, p7, p8, p12 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: filter#(cons(X,Y),|0|(),M) -> activate#(Y) p2: activate#(n__s(X)) -> activate#(X) p3: activate#(n__filter(X1,X2,X3)) -> activate#(X1) p4: activate#(n__filter(X1,X2,X3)) -> filter#(activate(X1),activate(X2),activate(X3)) p5: filter#(cons(X,Y),s(N),M) -> activate#(Y) and R consists of: r1: filter(cons(X,Y),|0|(),M) -> cons(|0|(),n__filter(activate(Y),M,M)) r2: filter(cons(X,Y),s(N),M) -> cons(X,n__filter(activate(Y),N,M)) r3: sieve(cons(|0|(),Y)) -> cons(|0|(),n__sieve(activate(Y))) r4: sieve(cons(s(N),Y)) -> cons(s(N),n__sieve(n__filter(activate(Y),N,N))) r5: nats(N) -> cons(N,n__nats(n__s(N))) r6: zprimes() -> sieve(nats(s(s(|0|())))) r7: filter(X1,X2,X3) -> n__filter(X1,X2,X3) r8: sieve(X) -> n__sieve(X) r9: nats(X) -> n__nats(X) r10: s(X) -> n__s(X) r11: activate(n__filter(X1,X2,X3)) -> filter(activate(X1),activate(X2),activate(X3)) r12: activate(n__sieve(X)) -> sieve(activate(X)) r13: activate(n__nats(X)) -> nats(activate(X)) r14: activate(n__s(X)) -> s(activate(X)) r15: activate(X) -> X The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: filter#(cons(X,Y),|0|(),M) -> activate#(Y) p2: activate#(n__filter(X1,X2,X3)) -> filter#(activate(X1),activate(X2),activate(X3)) p3: filter#(cons(X,Y),s(N),M) -> activate#(Y) p4: activate#(n__filter(X1,X2,X3)) -> activate#(X1) p5: activate#(n__s(X)) -> activate#(X) and R consists of: r1: filter(cons(X,Y),|0|(),M) -> cons(|0|(),n__filter(activate(Y),M,M)) r2: filter(cons(X,Y),s(N),M) -> cons(X,n__filter(activate(Y),N,M)) r3: sieve(cons(|0|(),Y)) -> cons(|0|(),n__sieve(activate(Y))) r4: sieve(cons(s(N),Y)) -> cons(s(N),n__sieve(n__filter(activate(Y),N,N))) r5: nats(N) -> cons(N,n__nats(n__s(N))) r6: zprimes() -> sieve(nats(s(s(|0|())))) r7: filter(X1,X2,X3) -> n__filter(X1,X2,X3) r8: sieve(X) -> n__sieve(X) r9: nats(X) -> n__nats(X) r10: s(X) -> n__s(X) r11: activate(n__filter(X1,X2,X3)) -> filter(activate(X1),activate(X2),activate(X3)) r12: activate(n__sieve(X)) -> sieve(activate(X)) r13: activate(n__nats(X)) -> nats(activate(X)) r14: activate(n__s(X)) -> s(activate(X)) r15: activate(X) -> X The set of usable rules consists of r1, r2, r3, r4, r5, r7, r8, r9, r10, r11, r12, r13, r14, r15 Take the reduction pair: lexicographic combination of reduction pairs: 1. max/plus interpretations on natural numbers: filter#_A(x1,x2,x3) = max{x1 + 7, x2 - 1, x3 + 6} cons_A(x1,x2) = max{6, x2 - 5} |0|_A = 2 activate#_A(x1) = x1 n__filter_A(x1,x2,x3) = max{x1 + 7, x2 + 7, x3 + 7} activate_A(x1) = x1 s_A(x1) = max{5, x1 + 4} n__s_A(x1) = max{5, x1 + 4} filter_A(x1,x2,x3) = max{x1 + 7, x2 + 7, x3 + 7} sieve_A(x1) = 18 n__sieve_A(x1) = 18 nats_A(x1) = x1 + 6 n__nats_A(x1) = x1 + 6 2. max/plus interpretations on natural numbers: filter#_A(x1,x2,x3) = 0 cons_A(x1,x2) = 6 |0|_A = 0 activate#_A(x1) = x1 + 1 n__filter_A(x1,x2,x3) = 0 activate_A(x1) = max{8, x1 + 6} s_A(x1) = 6 n__s_A(x1) = 5 filter_A(x1,x2,x3) = 7 sieve_A(x1) = 8 n__sieve_A(x1) = 0 nats_A(x1) = 7 n__nats_A(x1) = 0 The next rules are strictly ordered: p1, p2, p3, p4, p5 We remove them from the problem. Then no dependency pair remains.