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. weighted path order base order: max/plus interpretations on natural numbers: filter#_A(x1,x2,x3) = max{x1 + 6, x2 + 5, x3 + 4} cons_A(x1,x2) = max{2, x1 + 1, x2} |0|_A = 0 activate#_A(x1) = x1 + 6 n__s_A(x1) = x1 n__nats_A(x1) = x1 + 6 n__sieve_A(x1) = max{9, x1 + 6} sieve#_A(x1) = x1 + 6 activate_A(x1) = x1 s_A(x1) = x1 n__filter_A(x1,x2,x3) = max{x1, x2, x3} filter_A(x1,x2,x3) = max{x1, x2, x3} sieve_A(x1) = max{9, x1 + 6} nats_A(x1) = x1 + 6 precedence: n__sieve = sieve > n__nats = nats > n__filter = filter > cons > filter# = activate# = sieve# > activate > s > n__s > |0| partial status: pi(filter#) = [] pi(cons) = [1] pi(|0|) = [] pi(activate#) = [] pi(n__s) = [1] pi(n__nats) = [] pi(n__sieve) = [] pi(sieve#) = [1] pi(activate) = [1] pi(s) = [1] pi(n__filter) = [] pi(filter) = [] pi(sieve) = [] pi(nats) = [] 2. weighted path order base order: max/plus interpretations on natural numbers: filter#_A(x1,x2,x3) = 50 cons_A(x1,x2) = max{49, x1 + 28} |0|_A = 23 activate#_A(x1) = 50 n__s_A(x1) = 12 n__nats_A(x1) = 0 n__sieve_A(x1) = 14 sieve#_A(x1) = max{49, x1 + 36} activate_A(x1) = 13 s_A(x1) = 13 n__filter_A(x1,x2,x3) = 13 filter_A(x1,x2,x3) = 13 sieve_A(x1) = 49 nats_A(x1) = 14 precedence: n__sieve = sieve > filter# = cons = activate# > |0| = sieve# = activate > n__nats = s = filter = nats > n__s = n__filter partial status: pi(filter#) = [] pi(cons) = [] pi(|0|) = [] pi(activate#) = [] pi(n__s) = [] pi(n__nats) = [] pi(n__sieve) = [] pi(sieve#) = [1] pi(activate) = [] pi(s) = [] pi(n__filter) = [] pi(filter) = [] pi(sieve) = [] pi(nats) = [] The next rules are strictly ordered: p5, p6, 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__nats(X)) -> activate#(X) p4: activate#(n__sieve(X)) -> activate#(X) p5: activate#(n__filter(X1,X2,X3)) -> activate#(X3) p6: activate#(n__filter(X1,X2,X3)) -> activate#(X2) p7: activate#(n__filter(X1,X2,X3)) -> activate#(X1) p8: activate#(n__filter(X1,X2,X3)) -> filter#(activate(X1),activate(X2),activate(X3)) p9: 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, p6, p7, p8, p9} -- 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__filter(X1,X2,X3)) -> activate#(X2) p6: activate#(n__filter(X1,X2,X3)) -> activate#(X3) p7: activate#(n__sieve(X)) -> activate#(X) p8: activate#(n__nats(X)) -> activate#(X) p9: 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. weighted path order base order: max/plus interpretations on natural numbers: filter#_A(x1,x2,x3) = max{0, x1 - 1, x2 - 1, x3 - 2} cons_A(x1,x2) = max{x1 + 3, x2} |0|_A = 3 activate#_A(x1) = max{2, x1 - 1} n__filter_A(x1,x2,x3) = max{4, x1, x2 + 3, x3 + 3} activate_A(x1) = x1 s_A(x1) = max{4, x1} n__sieve_A(x1) = max{7, x1} n__nats_A(x1) = max{9, x1 + 5} n__s_A(x1) = max{4, x1} filter_A(x1,x2,x3) = max{4, x1, x2 + 3, x3 + 3} sieve_A(x1) = max{7, x1} nats_A(x1) = max{9, x1 + 5} precedence: n__sieve = sieve > n__filter = filter > cons = n__nats = nats > |0| > filter# = activate# > activate = s = n__s partial status: pi(filter#) = [] pi(cons) = [] pi(|0|) = [] pi(activate#) = [] pi(n__filter) = [] pi(activate) = [1] pi(s) = [] pi(n__sieve) = [] pi(n__nats) = [] pi(n__s) = [] pi(filter) = [] pi(sieve) = [] pi(nats) = [] 2. weighted path order base order: max/plus interpretations on natural numbers: filter#_A(x1,x2,x3) = 5 cons_A(x1,x2) = 24 |0|_A = 107 activate#_A(x1) = 5 n__filter_A(x1,x2,x3) = 28 activate_A(x1) = 28 s_A(x1) = 28 n__sieve_A(x1) = 97 n__nats_A(x1) = 98 n__s_A(x1) = 3 filter_A(x1,x2,x3) = 28 sieve_A(x1) = 341 nats_A(x1) = 135 precedence: filter# = cons = |0| = activate# = activate = n__s > s = nats > n__nats > filter > n__filter = sieve > n__sieve partial status: pi(filter#) = [] pi(cons) = [] pi(|0|) = [] pi(activate#) = [] pi(n__filter) = [] pi(activate) = [] pi(s) = [] pi(n__sieve) = [] pi(n__nats) = [] pi(n__s) = [] pi(filter) = [] pi(sieve) = [] pi(nats) = [] The next rules are strictly ordered: p6 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__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__filter(X1,X2,X3)) -> activate#(X2) p6: activate#(n__sieve(X)) -> activate#(X) p7: activate#(n__nats(X)) -> activate#(X) p8: 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, p5, p6, p7, p8} -- 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__filter(X1,X2,X3)) -> activate#(X2) p6: activate#(n__filter(X1,X2,X3)) -> activate#(X1) p7: activate#(n__filter(X1,X2,X3)) -> filter#(activate(X1),activate(X2),activate(X3)) p8: 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 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. weighted path order base order: max/plus interpretations on natural numbers: filter#_A(x1,x2,x3) = max{x1 + 3, x2 + 1, x3 + 2} cons_A(x1,x2) = max{7, x1 + 6, x2} |0|_A = 1 activate#_A(x1) = x1 + 3 n__s_A(x1) = x1 n__nats_A(x1) = max{9, x1 + 8} n__sieve_A(x1) = x1 n__filter_A(x1,x2,x3) = max{x1, x2 + 5, x3 + 5} activate_A(x1) = x1 s_A(x1) = x1 filter_A(x1,x2,x3) = max{x1, x2 + 5, x3 + 5} sieve_A(x1) = x1 nats_A(x1) = max{9, x1 + 8} precedence: filter# = cons = |0| = activate# = n__s = n__nats = n__sieve = n__filter = activate = s = filter = sieve = nats partial status: pi(filter#) = [] pi(cons) = [] pi(|0|) = [] pi(activate#) = [] pi(n__s) = [] pi(n__nats) = [] pi(n__sieve) = [] pi(n__filter) = [] pi(activate) = [] pi(s) = [] pi(filter) = [] pi(sieve) = [] pi(nats) = [] 2. weighted path order base order: max/plus interpretations on natural numbers: filter#_A(x1,x2,x3) = 18 cons_A(x1,x2) = 21 |0|_A = 6 activate#_A(x1) = 18 n__s_A(x1) = 17 n__nats_A(x1) = 22 n__sieve_A(x1) = max{154, x1 + 97} n__filter_A(x1,x2,x3) = 17 activate_A(x1) = max{21, x1} s_A(x1) = 21 filter_A(x1,x2,x3) = 21 sieve_A(x1) = max{154, x1 + 97} nats_A(x1) = 22 precedence: filter# = |0| = activate# > activate = nats > filter > s > n__s > sieve > cons = n__nats = n__sieve = n__filter partial status: pi(filter#) = [] pi(cons) = [] pi(|0|) = [] pi(activate#) = [] pi(n__s) = [] pi(n__nats) = [] pi(n__sieve) = [1] pi(n__filter) = [] pi(activate) = [1] pi(s) = [] pi(filter) = [] pi(sieve) = [] pi(nats) = [] The next rules are strictly ordered: p3 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__sieve(X)) -> activate#(X) p4: activate#(n__filter(X1,X2,X3)) -> activate#(X2) p5: activate#(n__filter(X1,X2,X3)) -> activate#(X1) p6: activate#(n__filter(X1,X2,X3)) -> filter#(activate(X1),activate(X2),activate(X3)) p7: 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, p6, p7} -- 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__filter(X1,X2,X3)) -> activate#(X2) p6: activate#(n__sieve(X)) -> activate#(X) p7: 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. weighted path order base order: max/plus interpretations on natural numbers: filter#_A(x1,x2,x3) = max{3, x1 - 2, x2 + 1, x3 - 3} cons_A(x1,x2) = max{x1 + 14, x2} |0|_A = 0 activate#_A(x1) = max{0, x1 - 2} n__filter_A(x1,x2,x3) = max{x1, x2 + 5, x3 + 5} activate_A(x1) = x1 s_A(x1) = x1 n__sieve_A(x1) = max{15, x1 + 5} n__s_A(x1) = x1 filter_A(x1,x2,x3) = max{x1, x2 + 5, x3 + 5} sieve_A(x1) = max{15, x1 + 5} nats_A(x1) = x1 + 14 n__nats_A(x1) = x1 + 14 precedence: activate = s = n__s = sieve = nats > n__nats > filter > cons = n__sieve > filter# = |0| = activate# = n__filter partial status: pi(filter#) = [] pi(cons) = [2] pi(|0|) = [] pi(activate#) = [] pi(n__filter) = [2, 3] pi(activate) = [1] pi(s) = [] pi(n__sieve) = [] pi(n__s) = [] pi(filter) = [2] pi(sieve) = [] pi(nats) = [] pi(n__nats) = [1] 2. weighted path order base order: max/plus interpretations on natural numbers: filter#_A(x1,x2,x3) = 100 cons_A(x1,x2) = 31 |0|_A = 60 activate#_A(x1) = 100 n__filter_A(x1,x2,x3) = x2 + 163 activate_A(x1) = max{28, x1} s_A(x1) = 32 n__sieve_A(x1) = 0 n__s_A(x1) = 32 filter_A(x1,x2,x3) = x2 + 283 sieve_A(x1) = 31 nats_A(x1) = 30 n__nats_A(x1) = max{29, x1 - 1} precedence: n__sieve > sieve > filter# = cons = |0| = activate# = n__filter = filter = n__nats > nats > activate = s > n__s partial status: pi(filter#) = [] pi(cons) = [] pi(|0|) = [] pi(activate#) = [] pi(n__filter) = [] pi(activate) = [1] pi(s) = [] pi(n__sieve) = [] pi(n__s) = [] pi(filter) = [2] pi(sieve) = [] pi(nats) = [] pi(n__nats) = [] The next rules are strictly ordered: p5 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__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__sieve(X)) -> activate#(X) p6: 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, p5, p6} -- 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__sieve(X)) -> activate#(X) p4: activate#(n__filter(X1,X2,X3)) -> activate#(X1) p5: activate#(n__filter(X1,X2,X3)) -> filter#(activate(X1),activate(X2),activate(X3)) p6: 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 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. weighted path order base order: max/plus interpretations on natural numbers: filter#_A(x1,x2,x3) = max{4, x1 - 1} cons_A(x1,x2) = max{11, x2} |0|_A = 0 activate#_A(x1) = max{0, x1 - 1} n__s_A(x1) = max{14, x1 + 8} n__sieve_A(x1) = max{24, x1 + 6} n__filter_A(x1,x2,x3) = max{18, x1} activate_A(x1) = max{6, x1} s_A(x1) = max{14, x1 + 8} filter_A(x1,x2,x3) = max{18, x1} sieve_A(x1) = max{24, x1 + 6} nats_A(x1) = 22 n__nats_A(x1) = 22 precedence: activate > sieve > filter > n__sieve = nats > cons > s > filter# = |0| = activate# = n__s = n__filter = n__nats partial status: pi(filter#) = [] pi(cons) = [] pi(|0|) = [] pi(activate#) = [] pi(n__s) = [1] pi(n__sieve) = [1] pi(n__filter) = [1] pi(activate) = [1] pi(s) = [] pi(filter) = [1] pi(sieve) = [1] pi(nats) = [] pi(n__nats) = [] 2. weighted path order base order: max/plus interpretations on natural numbers: filter#_A(x1,x2,x3) = 13 cons_A(x1,x2) = 199 |0|_A = 6 activate#_A(x1) = 13 n__s_A(x1) = max{197, x1 + 17} n__sieve_A(x1) = x1 + 31 n__filter_A(x1,x2,x3) = max{54, x1} activate_A(x1) = max{198, x1 + 32} s_A(x1) = 48 filter_A(x1,x2,x3) = max{198, x1} sieve_A(x1) = max{47, x1 + 13} nats_A(x1) = 199 n__nats_A(x1) = 200 precedence: n__sieve = activate = s = sieve > filter# = activate# = n__s = filter > n__nats > n__filter = nats > cons > |0| partial status: pi(filter#) = [] pi(cons) = [] pi(|0|) = [] pi(activate#) = [] pi(n__s) = [1] pi(n__sieve) = [] pi(n__filter) = [1] pi(activate) = [1] pi(s) = [] pi(filter) = [1] pi(sieve) = [1] pi(nats) = [] pi(n__nats) = [] The next rules are strictly ordered: p3 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. weighted path order base order: max/plus interpretations on natural numbers: filter#_A(x1,x2,x3) = max{x1 + 14, x2 + 70, x3 + 14} cons_A(x1,x2) = max{40, x2 - 12} |0|_A = 0 activate#_A(x1) = max{1, x1} n__filter_A(x1,x2,x3) = max{x1 + 69, x2 + 70, x3 + 59} activate_A(x1) = x1 s_A(x1) = max{11, x1 + 10} n__s_A(x1) = max{11, x1 + 10} filter_A(x1,x2,x3) = max{x1 + 69, x2 + 70, x3 + 59} sieve_A(x1) = 40 n__sieve_A(x1) = 40 nats_A(x1) = x1 + 41 n__nats_A(x1) = x1 + 41 precedence: |0| = n__filter = activate = filter = sieve = nats > s > cons > filter# > activate# = n__s = n__sieve = n__nats partial status: pi(filter#) = [2] pi(cons) = [] pi(|0|) = [] pi(activate#) = [1] pi(n__filter) = [2, 3] pi(activate) = [1] pi(s) = [1] pi(n__s) = [1] pi(filter) = [2, 3] pi(sieve) = [] pi(n__sieve) = [] pi(nats) = [] pi(n__nats) = [] 2. weighted path order base order: max/plus interpretations on natural numbers: filter#_A(x1,x2,x3) = max{40, x2 + 39} cons_A(x1,x2) = 43 |0|_A = 62 activate#_A(x1) = 85 n__filter_A(x1,x2,x3) = max{0, x3 - 46} activate_A(x1) = 45 s_A(x1) = x1 + 78 n__s_A(x1) = x1 + 77 filter_A(x1,x2,x3) = max{x2, x3 - 46} sieve_A(x1) = 45 n__sieve_A(x1) = 1 nats_A(x1) = 43 n__nats_A(x1) = 43 precedence: s > activate > n__s = filter = sieve = n__sieve = nats > |0| > filter# = cons = activate# = n__nats > n__filter partial status: pi(filter#) = [] pi(cons) = [] pi(|0|) = [] pi(activate#) = [] pi(n__filter) = [] pi(activate) = [] pi(s) = [] pi(n__s) = [1] pi(filter) = [] pi(sieve) = [] pi(n__sieve) = [] pi(nats) = [] pi(n__nats) = [] The next rules are strictly ordered: p1 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: activate#(n__filter(X1,X2,X3)) -> filter#(activate(X1),activate(X2),activate(X3)) p2: filter#(cons(X,Y),s(N),M) -> activate#(Y) p3: activate#(n__filter(X1,X2,X3)) -> activate#(X1) p4: 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} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: activate#(n__filter(X1,X2,X3)) -> filter#(activate(X1),activate(X2),activate(X3)) p2: filter#(cons(X,Y),s(N),M) -> activate#(Y) p3: activate#(n__s(X)) -> activate#(X) p4: activate#(n__filter(X1,X2,X3)) -> activate#(X1) 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. weighted path order base order: max/plus interpretations on natural numbers: activate#_A(x1) = x1 n__filter_A(x1,x2,x3) = max{24, x1 + 10, x2 + 18, x3 + 19} filter#_A(x1,x2,x3) = max{x1 + 1, x2 - 6, x3 + 19} activate_A(x1) = max{5, x1} cons_A(x1,x2) = max{22, x2} s_A(x1) = max{20, x1 + 15} n__s_A(x1) = max{20, x1 + 15} filter_A(x1,x2,x3) = max{24, x1 + 10, x2 + 18, x3 + 19} |0|_A = 7 sieve_A(x1) = 23 n__sieve_A(x1) = 23 nats_A(x1) = 22 n__nats_A(x1) = 22 precedence: activate# = activate = s > n__s = filter > filter# = sieve > n__sieve = nats > cons > n__filter = |0| = n__nats partial status: pi(activate#) = [1] pi(n__filter) = [1, 2] pi(filter#) = [1, 3] pi(activate) = [1] pi(cons) = [2] pi(s) = [] pi(n__s) = [1] pi(filter) = [] pi(|0|) = [] pi(sieve) = [] pi(n__sieve) = [] pi(nats) = [] pi(n__nats) = [] 2. weighted path order base order: max/plus interpretations on natural numbers: activate#_A(x1) = max{61, x1} n__filter_A(x1,x2,x3) = x1 + 61 filter#_A(x1,x2,x3) = max{60, x1 + 35} activate_A(x1) = max{23, x1 + 14} cons_A(x1,x2) = x2 + 162 s_A(x1) = 104 n__s_A(x1) = x1 + 4 filter_A(x1,x2,x3) = 218 |0|_A = 28 sieve_A(x1) = 26 n__sieve_A(x1) = 1 nats_A(x1) = 24 n__nats_A(x1) = 1 precedence: n__filter > activate# = filter# = activate = cons = s = n__s = filter = |0| = sieve = n__sieve = nats = n__nats partial status: pi(activate#) = [1] pi(n__filter) = [] pi(filter#) = [] pi(activate) = [1] pi(cons) = [2] pi(s) = [] pi(n__s) = [1] pi(filter) = [] pi(|0|) = [] pi(sieve) = [] pi(n__sieve) = [] pi(nats) = [] pi(n__nats) = [] The next rules are strictly ordered: p1, p2, p3, p4 We remove them from the problem. Then no dependency pair remains.