YES We show the termination of the TRS R: a__filter(cons(X,Y),|0|(),M) -> cons(|0|(),filter(Y,M,M)) a__filter(cons(X,Y),s(N),M) -> cons(mark(X),filter(Y,N,M)) a__sieve(cons(|0|(),Y)) -> cons(|0|(),sieve(Y)) a__sieve(cons(s(N),Y)) -> cons(s(mark(N)),sieve(filter(Y,N,N))) a__nats(N) -> cons(mark(N),nats(s(N))) a__zprimes() -> a__sieve(a__nats(s(s(|0|())))) mark(filter(X1,X2,X3)) -> a__filter(mark(X1),mark(X2),mark(X3)) mark(sieve(X)) -> a__sieve(mark(X)) mark(nats(X)) -> a__nats(mark(X)) mark(zprimes()) -> a__zprimes() mark(cons(X1,X2)) -> cons(mark(X1),X2) mark(|0|()) -> |0|() mark(s(X)) -> s(mark(X)) a__filter(X1,X2,X3) -> filter(X1,X2,X3) a__sieve(X) -> sieve(X) a__nats(X) -> nats(X) a__zprimes() -> zprimes() -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: a__filter#(cons(X,Y),s(N),M) -> mark#(X) p2: a__sieve#(cons(s(N),Y)) -> mark#(N) p3: a__nats#(N) -> mark#(N) p4: a__zprimes#() -> a__sieve#(a__nats(s(s(|0|())))) p5: a__zprimes#() -> a__nats#(s(s(|0|()))) p6: mark#(filter(X1,X2,X3)) -> a__filter#(mark(X1),mark(X2),mark(X3)) p7: mark#(filter(X1,X2,X3)) -> mark#(X1) p8: mark#(filter(X1,X2,X3)) -> mark#(X2) p9: mark#(filter(X1,X2,X3)) -> mark#(X3) p10: mark#(sieve(X)) -> a__sieve#(mark(X)) p11: mark#(sieve(X)) -> mark#(X) p12: mark#(nats(X)) -> a__nats#(mark(X)) p13: mark#(nats(X)) -> mark#(X) p14: mark#(zprimes()) -> a__zprimes#() p15: mark#(cons(X1,X2)) -> mark#(X1) p16: mark#(s(X)) -> mark#(X) and R consists of: r1: a__filter(cons(X,Y),|0|(),M) -> cons(|0|(),filter(Y,M,M)) r2: a__filter(cons(X,Y),s(N),M) -> cons(mark(X),filter(Y,N,M)) r3: a__sieve(cons(|0|(),Y)) -> cons(|0|(),sieve(Y)) r4: a__sieve(cons(s(N),Y)) -> cons(s(mark(N)),sieve(filter(Y,N,N))) r5: a__nats(N) -> cons(mark(N),nats(s(N))) r6: a__zprimes() -> a__sieve(a__nats(s(s(|0|())))) r7: mark(filter(X1,X2,X3)) -> a__filter(mark(X1),mark(X2),mark(X3)) r8: mark(sieve(X)) -> a__sieve(mark(X)) r9: mark(nats(X)) -> a__nats(mark(X)) r10: mark(zprimes()) -> a__zprimes() r11: mark(cons(X1,X2)) -> cons(mark(X1),X2) r12: mark(|0|()) -> |0|() r13: mark(s(X)) -> s(mark(X)) r14: a__filter(X1,X2,X3) -> filter(X1,X2,X3) r15: a__sieve(X) -> sieve(X) r16: a__nats(X) -> nats(X) r17: a__zprimes() -> zprimes() The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: a__filter#(cons(X,Y),s(N),M) -> mark#(X) p2: mark#(s(X)) -> mark#(X) p3: mark#(cons(X1,X2)) -> mark#(X1) p4: mark#(zprimes()) -> a__zprimes#() p5: a__zprimes#() -> a__nats#(s(s(|0|()))) p6: a__nats#(N) -> mark#(N) p7: mark#(nats(X)) -> mark#(X) p8: mark#(nats(X)) -> a__nats#(mark(X)) p9: mark#(sieve(X)) -> mark#(X) p10: mark#(sieve(X)) -> a__sieve#(mark(X)) p11: a__sieve#(cons(s(N),Y)) -> mark#(N) p12: mark#(filter(X1,X2,X3)) -> mark#(X3) p13: mark#(filter(X1,X2,X3)) -> mark#(X2) p14: mark#(filter(X1,X2,X3)) -> mark#(X1) p15: mark#(filter(X1,X2,X3)) -> a__filter#(mark(X1),mark(X2),mark(X3)) p16: a__zprimes#() -> a__sieve#(a__nats(s(s(|0|())))) and R consists of: r1: a__filter(cons(X,Y),|0|(),M) -> cons(|0|(),filter(Y,M,M)) r2: a__filter(cons(X,Y),s(N),M) -> cons(mark(X),filter(Y,N,M)) r3: a__sieve(cons(|0|(),Y)) -> cons(|0|(),sieve(Y)) r4: a__sieve(cons(s(N),Y)) -> cons(s(mark(N)),sieve(filter(Y,N,N))) r5: a__nats(N) -> cons(mark(N),nats(s(N))) r6: a__zprimes() -> a__sieve(a__nats(s(s(|0|())))) r7: mark(filter(X1,X2,X3)) -> a__filter(mark(X1),mark(X2),mark(X3)) r8: mark(sieve(X)) -> a__sieve(mark(X)) r9: mark(nats(X)) -> a__nats(mark(X)) r10: mark(zprimes()) -> a__zprimes() r11: mark(cons(X1,X2)) -> cons(mark(X1),X2) r12: mark(|0|()) -> |0|() r13: mark(s(X)) -> s(mark(X)) r14: a__filter(X1,X2,X3) -> filter(X1,X2,X3) r15: a__sieve(X) -> sieve(X) r16: a__nats(X) -> nats(X) r17: a__zprimes() -> zprimes() The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17 Take the reduction pair: weighted path order base order: max/plus interpretations on natural numbers: a__filter#_A(x1,x2,x3) = max{21, x1 + 18, x2 + 17, x3 - 1} cons_A(x1,x2) = max{23, x1 + 13} s_A(x1) = x1 + 6 mark#_A(x1) = max{21, x1} zprimes_A = 64 a__zprimes#_A = 45 a__nats#_A(x1) = x1 + 22 |0|_A = 10 nats_A(x1) = x1 + 41 mark_A(x1) = x1 sieve_A(x1) = max{22, x1} a__sieve#_A(x1) = max{21, x1 - 18} filter_A(x1,x2,x3) = max{x1 + 18, x2 + 20, x3 + 21} a__nats_A(x1) = x1 + 41 a__filter_A(x1,x2,x3) = max{x1 + 18, x2 + 20, x3 + 21} a__sieve_A(x1) = max{22, x1} a__zprimes_A = 64 precedence: a__zprimes# = a__nats# > nats = a__sieve# = a__nats > cons = mark > zprimes = |0| = a__zprimes > s > sieve = a__sieve > a__filter > filter > mark# > a__filter# partial status: pi(a__filter#) = [] pi(cons) = [] pi(s) = [] pi(mark#) = [1] pi(zprimes) = [] pi(a__zprimes#) = [] pi(a__nats#) = [] pi(|0|) = [] pi(nats) = [] pi(mark) = [1] pi(sieve) = [1] pi(a__sieve#) = [] pi(filter) = [3] pi(a__nats) = [] pi(a__filter) = [1, 2] pi(a__sieve) = [1] pi(a__zprimes) = [] 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: mark#(s(X)) -> mark#(X) p2: mark#(cons(X1,X2)) -> mark#(X1) p3: mark#(zprimes()) -> a__zprimes#() p4: a__zprimes#() -> a__nats#(s(s(|0|()))) p5: a__nats#(N) -> mark#(N) p6: mark#(nats(X)) -> mark#(X) p7: mark#(nats(X)) -> a__nats#(mark(X)) p8: mark#(sieve(X)) -> mark#(X) p9: mark#(sieve(X)) -> a__sieve#(mark(X)) p10: a__sieve#(cons(s(N),Y)) -> mark#(N) p11: mark#(filter(X1,X2,X3)) -> mark#(X3) p12: mark#(filter(X1,X2,X3)) -> mark#(X2) p13: mark#(filter(X1,X2,X3)) -> mark#(X1) p14: mark#(filter(X1,X2,X3)) -> a__filter#(mark(X1),mark(X2),mark(X3)) p15: a__zprimes#() -> a__sieve#(a__nats(s(s(|0|())))) and R consists of: r1: a__filter(cons(X,Y),|0|(),M) -> cons(|0|(),filter(Y,M,M)) r2: a__filter(cons(X,Y),s(N),M) -> cons(mark(X),filter(Y,N,M)) r3: a__sieve(cons(|0|(),Y)) -> cons(|0|(),sieve(Y)) r4: a__sieve(cons(s(N),Y)) -> cons(s(mark(N)),sieve(filter(Y,N,N))) r5: a__nats(N) -> cons(mark(N),nats(s(N))) r6: a__zprimes() -> a__sieve(a__nats(s(s(|0|())))) r7: mark(filter(X1,X2,X3)) -> a__filter(mark(X1),mark(X2),mark(X3)) r8: mark(sieve(X)) -> a__sieve(mark(X)) r9: mark(nats(X)) -> a__nats(mark(X)) r10: mark(zprimes()) -> a__zprimes() r11: mark(cons(X1,X2)) -> cons(mark(X1),X2) r12: mark(|0|()) -> |0|() r13: mark(s(X)) -> s(mark(X)) r14: a__filter(X1,X2,X3) -> filter(X1,X2,X3) r15: a__sieve(X) -> sieve(X) r16: a__nats(X) -> nats(X) r17: a__zprimes() -> zprimes() The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p15} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(s(X)) -> mark#(X) p2: mark#(filter(X1,X2,X3)) -> mark#(X1) p3: mark#(filter(X1,X2,X3)) -> mark#(X2) p4: mark#(filter(X1,X2,X3)) -> mark#(X3) p5: mark#(sieve(X)) -> a__sieve#(mark(X)) p6: a__sieve#(cons(s(N),Y)) -> mark#(N) p7: mark#(sieve(X)) -> mark#(X) p8: mark#(nats(X)) -> a__nats#(mark(X)) p9: a__nats#(N) -> mark#(N) p10: mark#(nats(X)) -> mark#(X) p11: mark#(zprimes()) -> a__zprimes#() p12: a__zprimes#() -> a__sieve#(a__nats(s(s(|0|())))) p13: a__zprimes#() -> a__nats#(s(s(|0|()))) p14: mark#(cons(X1,X2)) -> mark#(X1) and R consists of: r1: a__filter(cons(X,Y),|0|(),M) -> cons(|0|(),filter(Y,M,M)) r2: a__filter(cons(X,Y),s(N),M) -> cons(mark(X),filter(Y,N,M)) r3: a__sieve(cons(|0|(),Y)) -> cons(|0|(),sieve(Y)) r4: a__sieve(cons(s(N),Y)) -> cons(s(mark(N)),sieve(filter(Y,N,N))) r5: a__nats(N) -> cons(mark(N),nats(s(N))) r6: a__zprimes() -> a__sieve(a__nats(s(s(|0|())))) r7: mark(filter(X1,X2,X3)) -> a__filter(mark(X1),mark(X2),mark(X3)) r8: mark(sieve(X)) -> a__sieve(mark(X)) r9: mark(nats(X)) -> a__nats(mark(X)) r10: mark(zprimes()) -> a__zprimes() r11: mark(cons(X1,X2)) -> cons(mark(X1),X2) r12: mark(|0|()) -> |0|() r13: mark(s(X)) -> s(mark(X)) r14: a__filter(X1,X2,X3) -> filter(X1,X2,X3) r15: a__sieve(X) -> sieve(X) r16: a__nats(X) -> nats(X) r17: a__zprimes() -> zprimes() The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17 Take the reduction pair: weighted path order base order: max/plus interpretations on natural numbers: mark#_A(x1) = x1 + 26 s_A(x1) = max{18, x1 + 15} filter_A(x1,x2,x3) = max{58, x1 + 27, x2 + 26, x3 + 41} sieve_A(x1) = x1 a__sieve#_A(x1) = max{26, x1 + 23} mark_A(x1) = max{2, x1} cons_A(x1,x2) = max{40, x1 + 11} nats_A(x1) = max{43, x1 + 41} a__nats#_A(x1) = x1 + 38 zprimes_A = 111 a__zprimes#_A = 110 a__nats_A(x1) = max{43, x1 + 41} |0|_A = 15 a__filter_A(x1,x2,x3) = max{58, x1 + 27, x2 + 26, x3 + 41} a__sieve_A(x1) = x1 a__zprimes_A = 111 precedence: s = mark = cons = zprimes = a__nats = |0| = a__filter = a__zprimes > a__sieve > filter = sieve > mark# > a__sieve# > a__zprimes# > nats = a__nats# partial status: pi(mark#) = [1] pi(s) = [] pi(filter) = [] pi(sieve) = [1] pi(a__sieve#) = [1] pi(mark) = [1] pi(cons) = [] pi(nats) = [1] pi(a__nats#) = [] pi(zprimes) = [] pi(a__zprimes#) = [] pi(a__nats) = [1] pi(|0|) = [] pi(a__filter) = [1] pi(a__sieve) = [1] pi(a__zprimes) = [] The next rules are strictly ordered: p13 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: mark#(s(X)) -> mark#(X) p2: mark#(filter(X1,X2,X3)) -> mark#(X1) p3: mark#(filter(X1,X2,X3)) -> mark#(X2) p4: mark#(filter(X1,X2,X3)) -> mark#(X3) p5: mark#(sieve(X)) -> a__sieve#(mark(X)) p6: a__sieve#(cons(s(N),Y)) -> mark#(N) p7: mark#(sieve(X)) -> mark#(X) p8: mark#(nats(X)) -> a__nats#(mark(X)) p9: a__nats#(N) -> mark#(N) p10: mark#(nats(X)) -> mark#(X) p11: mark#(zprimes()) -> a__zprimes#() p12: a__zprimes#() -> a__sieve#(a__nats(s(s(|0|())))) p13: mark#(cons(X1,X2)) -> mark#(X1) and R consists of: r1: a__filter(cons(X,Y),|0|(),M) -> cons(|0|(),filter(Y,M,M)) r2: a__filter(cons(X,Y),s(N),M) -> cons(mark(X),filter(Y,N,M)) r3: a__sieve(cons(|0|(),Y)) -> cons(|0|(),sieve(Y)) r4: a__sieve(cons(s(N),Y)) -> cons(s(mark(N)),sieve(filter(Y,N,N))) r5: a__nats(N) -> cons(mark(N),nats(s(N))) r6: a__zprimes() -> a__sieve(a__nats(s(s(|0|())))) r7: mark(filter(X1,X2,X3)) -> a__filter(mark(X1),mark(X2),mark(X3)) r8: mark(sieve(X)) -> a__sieve(mark(X)) r9: mark(nats(X)) -> a__nats(mark(X)) r10: mark(zprimes()) -> a__zprimes() r11: mark(cons(X1,X2)) -> cons(mark(X1),X2) r12: mark(|0|()) -> |0|() r13: mark(s(X)) -> s(mark(X)) r14: a__filter(X1,X2,X3) -> filter(X1,X2,X3) r15: a__sieve(X) -> sieve(X) r16: a__nats(X) -> nats(X) r17: a__zprimes() -> zprimes() The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(s(X)) -> mark#(X) p2: mark#(cons(X1,X2)) -> mark#(X1) p3: mark#(zprimes()) -> a__zprimes#() p4: a__zprimes#() -> a__sieve#(a__nats(s(s(|0|())))) p5: a__sieve#(cons(s(N),Y)) -> mark#(N) p6: mark#(nats(X)) -> mark#(X) p7: mark#(nats(X)) -> a__nats#(mark(X)) p8: a__nats#(N) -> mark#(N) p9: mark#(sieve(X)) -> mark#(X) p10: mark#(sieve(X)) -> a__sieve#(mark(X)) p11: mark#(filter(X1,X2,X3)) -> mark#(X3) p12: mark#(filter(X1,X2,X3)) -> mark#(X2) p13: mark#(filter(X1,X2,X3)) -> mark#(X1) and R consists of: r1: a__filter(cons(X,Y),|0|(),M) -> cons(|0|(),filter(Y,M,M)) r2: a__filter(cons(X,Y),s(N),M) -> cons(mark(X),filter(Y,N,M)) r3: a__sieve(cons(|0|(),Y)) -> cons(|0|(),sieve(Y)) r4: a__sieve(cons(s(N),Y)) -> cons(s(mark(N)),sieve(filter(Y,N,N))) r5: a__nats(N) -> cons(mark(N),nats(s(N))) r6: a__zprimes() -> a__sieve(a__nats(s(s(|0|())))) r7: mark(filter(X1,X2,X3)) -> a__filter(mark(X1),mark(X2),mark(X3)) r8: mark(sieve(X)) -> a__sieve(mark(X)) r9: mark(nats(X)) -> a__nats(mark(X)) r10: mark(zprimes()) -> a__zprimes() r11: mark(cons(X1,X2)) -> cons(mark(X1),X2) r12: mark(|0|()) -> |0|() r13: mark(s(X)) -> s(mark(X)) r14: a__filter(X1,X2,X3) -> filter(X1,X2,X3) r15: a__sieve(X) -> sieve(X) r16: a__nats(X) -> nats(X) r17: a__zprimes() -> zprimes() The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17 Take the reduction pair: weighted path order base order: max/plus interpretations on natural numbers: mark#_A(x1) = x1 + 28 s_A(x1) = x1 + 23 cons_A(x1,x2) = x1 + 11 zprimes_A = 118 a__zprimes#_A = 118 a__sieve#_A(x1) = max{50, x1 + 27} a__nats_A(x1) = max{51, x1 + 33} |0|_A = 12 nats_A(x1) = x1 + 33 a__nats#_A(x1) = max{61, x1 + 29} mark_A(x1) = x1 + 22 sieve_A(x1) = x1 + 22 filter_A(x1,x2,x3) = max{25, x1 + 22, x2 + 1, x3} a__filter_A(x1,x2,x3) = max{25, x1 + 22, x2 + 1, x3} a__sieve_A(x1) = x1 + 22 a__zprimes_A = 119 precedence: mark# = |0| = a__nats# > cons = a__nats = nats = mark = filter = a__filter = a__sieve > zprimes = a__zprimes# = a__zprimes > s = a__sieve# > sieve partial status: pi(mark#) = [] pi(s) = [] pi(cons) = [] pi(zprimes) = [] pi(a__zprimes#) = [] pi(a__sieve#) = [1] pi(a__nats) = [] pi(|0|) = [] pi(nats) = [] pi(a__nats#) = [] pi(mark) = [] pi(sieve) = [] pi(filter) = [] pi(a__filter) = [] pi(a__sieve) = [] pi(a__zprimes) = [] The next rules are strictly ordered: p10 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: mark#(s(X)) -> mark#(X) p2: mark#(cons(X1,X2)) -> mark#(X1) p3: mark#(zprimes()) -> a__zprimes#() p4: a__zprimes#() -> a__sieve#(a__nats(s(s(|0|())))) p5: a__sieve#(cons(s(N),Y)) -> mark#(N) p6: mark#(nats(X)) -> mark#(X) p7: mark#(nats(X)) -> a__nats#(mark(X)) p8: a__nats#(N) -> mark#(N) p9: mark#(sieve(X)) -> mark#(X) p10: mark#(filter(X1,X2,X3)) -> mark#(X3) p11: mark#(filter(X1,X2,X3)) -> mark#(X2) p12: mark#(filter(X1,X2,X3)) -> mark#(X1) and R consists of: r1: a__filter(cons(X,Y),|0|(),M) -> cons(|0|(),filter(Y,M,M)) r2: a__filter(cons(X,Y),s(N),M) -> cons(mark(X),filter(Y,N,M)) r3: a__sieve(cons(|0|(),Y)) -> cons(|0|(),sieve(Y)) r4: a__sieve(cons(s(N),Y)) -> cons(s(mark(N)),sieve(filter(Y,N,N))) r5: a__nats(N) -> cons(mark(N),nats(s(N))) r6: a__zprimes() -> a__sieve(a__nats(s(s(|0|())))) r7: mark(filter(X1,X2,X3)) -> a__filter(mark(X1),mark(X2),mark(X3)) r8: mark(sieve(X)) -> a__sieve(mark(X)) r9: mark(nats(X)) -> a__nats(mark(X)) r10: mark(zprimes()) -> a__zprimes() r11: mark(cons(X1,X2)) -> cons(mark(X1),X2) r12: mark(|0|()) -> |0|() r13: mark(s(X)) -> s(mark(X)) r14: a__filter(X1,X2,X3) -> filter(X1,X2,X3) r15: a__sieve(X) -> sieve(X) r16: a__nats(X) -> nats(X) r17: a__zprimes() -> zprimes() The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(s(X)) -> mark#(X) p2: mark#(filter(X1,X2,X3)) -> mark#(X1) p3: mark#(filter(X1,X2,X3)) -> mark#(X2) p4: mark#(filter(X1,X2,X3)) -> mark#(X3) p5: mark#(sieve(X)) -> mark#(X) p6: mark#(nats(X)) -> a__nats#(mark(X)) p7: a__nats#(N) -> mark#(N) p8: mark#(nats(X)) -> mark#(X) p9: mark#(zprimes()) -> a__zprimes#() p10: a__zprimes#() -> a__sieve#(a__nats(s(s(|0|())))) p11: a__sieve#(cons(s(N),Y)) -> mark#(N) p12: mark#(cons(X1,X2)) -> mark#(X1) and R consists of: r1: a__filter(cons(X,Y),|0|(),M) -> cons(|0|(),filter(Y,M,M)) r2: a__filter(cons(X,Y),s(N),M) -> cons(mark(X),filter(Y,N,M)) r3: a__sieve(cons(|0|(),Y)) -> cons(|0|(),sieve(Y)) r4: a__sieve(cons(s(N),Y)) -> cons(s(mark(N)),sieve(filter(Y,N,N))) r5: a__nats(N) -> cons(mark(N),nats(s(N))) r6: a__zprimes() -> a__sieve(a__nats(s(s(|0|())))) r7: mark(filter(X1,X2,X3)) -> a__filter(mark(X1),mark(X2),mark(X3)) r8: mark(sieve(X)) -> a__sieve(mark(X)) r9: mark(nats(X)) -> a__nats(mark(X)) r10: mark(zprimes()) -> a__zprimes() r11: mark(cons(X1,X2)) -> cons(mark(X1),X2) r12: mark(|0|()) -> |0|() r13: mark(s(X)) -> s(mark(X)) r14: a__filter(X1,X2,X3) -> filter(X1,X2,X3) r15: a__sieve(X) -> sieve(X) r16: a__nats(X) -> nats(X) r17: a__zprimes() -> zprimes() The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17 Take the reduction pair: weighted path order base order: max/plus interpretations on natural numbers: mark#_A(x1) = max{41, x1 - 95} s_A(x1) = x1 + 41 filter_A(x1,x2,x3) = max{161, x1 + 45, x2 + 137, x3 + 21} sieve_A(x1) = x1 + 51 nats_A(x1) = x1 + 159 a__nats#_A(x1) = max{43, x1 - 79} mark_A(x1) = x1 + 40 zprimes_A = 276 a__zprimes#_A = 41 a__sieve#_A(x1) = max{41, x1 - 222} a__nats_A(x1) = x1 + 159 |0|_A = 22 cons_A(x1,x2) = max{159, x1 + 87} a__filter_A(x1,x2,x3) = max{176, x1 + 45, x2 + 137, x3 + 21} a__sieve_A(x1) = max{52, x1 + 51} a__zprimes_A = 315 precedence: mark = a__zprimes > a__zprimes# > zprimes = a__sieve# > mark# = s = filter = a__nats# = |0| = a__filter > a__nats > cons > sieve = nats = a__sieve partial status: pi(mark#) = [] pi(s) = [1] pi(filter) = [] pi(sieve) = [] pi(nats) = [] pi(a__nats#) = [] pi(mark) = [] pi(zprimes) = [] pi(a__zprimes#) = [] pi(a__sieve#) = [] pi(a__nats) = [] pi(|0|) = [] pi(cons) = [1] pi(a__filter) = [] pi(a__sieve) = [1] pi(a__zprimes) = [] The next rules are strictly ordered: p9 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: mark#(s(X)) -> mark#(X) p2: mark#(filter(X1,X2,X3)) -> mark#(X1) p3: mark#(filter(X1,X2,X3)) -> mark#(X2) p4: mark#(filter(X1,X2,X3)) -> mark#(X3) p5: mark#(sieve(X)) -> mark#(X) p6: mark#(nats(X)) -> a__nats#(mark(X)) p7: a__nats#(N) -> mark#(N) p8: mark#(nats(X)) -> mark#(X) p9: a__zprimes#() -> a__sieve#(a__nats(s(s(|0|())))) p10: a__sieve#(cons(s(N),Y)) -> mark#(N) p11: mark#(cons(X1,X2)) -> mark#(X1) and R consists of: r1: a__filter(cons(X,Y),|0|(),M) -> cons(|0|(),filter(Y,M,M)) r2: a__filter(cons(X,Y),s(N),M) -> cons(mark(X),filter(Y,N,M)) r3: a__sieve(cons(|0|(),Y)) -> cons(|0|(),sieve(Y)) r4: a__sieve(cons(s(N),Y)) -> cons(s(mark(N)),sieve(filter(Y,N,N))) r5: a__nats(N) -> cons(mark(N),nats(s(N))) r6: a__zprimes() -> a__sieve(a__nats(s(s(|0|())))) r7: mark(filter(X1,X2,X3)) -> a__filter(mark(X1),mark(X2),mark(X3)) r8: mark(sieve(X)) -> a__sieve(mark(X)) r9: mark(nats(X)) -> a__nats(mark(X)) r10: mark(zprimes()) -> a__zprimes() r11: mark(cons(X1,X2)) -> cons(mark(X1),X2) r12: mark(|0|()) -> |0|() r13: mark(s(X)) -> s(mark(X)) r14: a__filter(X1,X2,X3) -> filter(X1,X2,X3) r15: a__sieve(X) -> sieve(X) r16: a__nats(X) -> nats(X) r17: a__zprimes() -> zprimes() The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5, p6, p7, p8, p11} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(s(X)) -> mark#(X) p2: mark#(cons(X1,X2)) -> mark#(X1) p3: mark#(nats(X)) -> mark#(X) p4: mark#(nats(X)) -> a__nats#(mark(X)) p5: a__nats#(N) -> mark#(N) p6: mark#(sieve(X)) -> mark#(X) p7: mark#(filter(X1,X2,X3)) -> mark#(X3) p8: mark#(filter(X1,X2,X3)) -> mark#(X2) p9: mark#(filter(X1,X2,X3)) -> mark#(X1) and R consists of: r1: a__filter(cons(X,Y),|0|(),M) -> cons(|0|(),filter(Y,M,M)) r2: a__filter(cons(X,Y),s(N),M) -> cons(mark(X),filter(Y,N,M)) r3: a__sieve(cons(|0|(),Y)) -> cons(|0|(),sieve(Y)) r4: a__sieve(cons(s(N),Y)) -> cons(s(mark(N)),sieve(filter(Y,N,N))) r5: a__nats(N) -> cons(mark(N),nats(s(N))) r6: a__zprimes() -> a__sieve(a__nats(s(s(|0|())))) r7: mark(filter(X1,X2,X3)) -> a__filter(mark(X1),mark(X2),mark(X3)) r8: mark(sieve(X)) -> a__sieve(mark(X)) r9: mark(nats(X)) -> a__nats(mark(X)) r10: mark(zprimes()) -> a__zprimes() r11: mark(cons(X1,X2)) -> cons(mark(X1),X2) r12: mark(|0|()) -> |0|() r13: mark(s(X)) -> s(mark(X)) r14: a__filter(X1,X2,X3) -> filter(X1,X2,X3) r15: a__sieve(X) -> sieve(X) r16: a__nats(X) -> nats(X) r17: a__zprimes() -> zprimes() The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17 Take the reduction pair: weighted path order base order: max/plus interpretations on natural numbers: mark#_A(x1) = x1 + 1 s_A(x1) = max{4, x1 + 2} cons_A(x1,x2) = max{88, x1 + 16} nats_A(x1) = x1 + 112 a__nats#_A(x1) = x1 + 95 mark_A(x1) = x1 + 17 sieve_A(x1) = max{111, x1 + 22} filter_A(x1,x2,x3) = max{44, x1 + 42, x2 + 32, x3 + 39} a__filter_A(x1,x2,x3) = max{45, x1 + 42, x2 + 32, x3 + 39} |0|_A = 1 a__sieve_A(x1) = max{111, x1 + 22} a__nats_A(x1) = x1 + 112 a__zprimes_A = 140 zprimes_A = 124 precedence: cons = mark > nats = a__nats > mark# = a__nats# = sieve = |0| = a__sieve = a__zprimes = zprimes > s = filter = a__filter partial status: pi(mark#) = [1] pi(s) = [1] pi(cons) = [] pi(nats) = [] pi(a__nats#) = [1] pi(mark) = [1] pi(sieve) = [] pi(filter) = [] pi(a__filter) = [] pi(|0|) = [] pi(a__sieve) = [] pi(a__nats) = [] pi(a__zprimes) = [] pi(zprimes) = [] The next rules are strictly ordered: p4 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: mark#(s(X)) -> mark#(X) p2: mark#(cons(X1,X2)) -> mark#(X1) p3: mark#(nats(X)) -> mark#(X) p4: a__nats#(N) -> mark#(N) p5: mark#(sieve(X)) -> mark#(X) p6: mark#(filter(X1,X2,X3)) -> mark#(X3) p7: mark#(filter(X1,X2,X3)) -> mark#(X2) p8: mark#(filter(X1,X2,X3)) -> mark#(X1) and R consists of: r1: a__filter(cons(X,Y),|0|(),M) -> cons(|0|(),filter(Y,M,M)) r2: a__filter(cons(X,Y),s(N),M) -> cons(mark(X),filter(Y,N,M)) r3: a__sieve(cons(|0|(),Y)) -> cons(|0|(),sieve(Y)) r4: a__sieve(cons(s(N),Y)) -> cons(s(mark(N)),sieve(filter(Y,N,N))) r5: a__nats(N) -> cons(mark(N),nats(s(N))) r6: a__zprimes() -> a__sieve(a__nats(s(s(|0|())))) r7: mark(filter(X1,X2,X3)) -> a__filter(mark(X1),mark(X2),mark(X3)) r8: mark(sieve(X)) -> a__sieve(mark(X)) r9: mark(nats(X)) -> a__nats(mark(X)) r10: mark(zprimes()) -> a__zprimes() r11: mark(cons(X1,X2)) -> cons(mark(X1),X2) r12: mark(|0|()) -> |0|() r13: mark(s(X)) -> s(mark(X)) r14: a__filter(X1,X2,X3) -> filter(X1,X2,X3) r15: a__sieve(X) -> sieve(X) r16: a__nats(X) -> nats(X) r17: a__zprimes() -> zprimes() The estimated dependency graph contains the following SCCs: {p1, p2, p3, p5, p6, p7, p8} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(s(X)) -> mark#(X) p2: mark#(filter(X1,X2,X3)) -> mark#(X1) p3: mark#(filter(X1,X2,X3)) -> mark#(X2) p4: mark#(filter(X1,X2,X3)) -> mark#(X3) p5: mark#(sieve(X)) -> mark#(X) p6: mark#(nats(X)) -> mark#(X) p7: mark#(cons(X1,X2)) -> mark#(X1) and R consists of: r1: a__filter(cons(X,Y),|0|(),M) -> cons(|0|(),filter(Y,M,M)) r2: a__filter(cons(X,Y),s(N),M) -> cons(mark(X),filter(Y,N,M)) r3: a__sieve(cons(|0|(),Y)) -> cons(|0|(),sieve(Y)) r4: a__sieve(cons(s(N),Y)) -> cons(s(mark(N)),sieve(filter(Y,N,N))) r5: a__nats(N) -> cons(mark(N),nats(s(N))) r6: a__zprimes() -> a__sieve(a__nats(s(s(|0|())))) r7: mark(filter(X1,X2,X3)) -> a__filter(mark(X1),mark(X2),mark(X3)) r8: mark(sieve(X)) -> a__sieve(mark(X)) r9: mark(nats(X)) -> a__nats(mark(X)) r10: mark(zprimes()) -> a__zprimes() r11: mark(cons(X1,X2)) -> cons(mark(X1),X2) r12: mark(|0|()) -> |0|() r13: mark(s(X)) -> s(mark(X)) r14: a__filter(X1,X2,X3) -> filter(X1,X2,X3) r15: a__sieve(X) -> sieve(X) r16: a__nats(X) -> nats(X) r17: a__zprimes() -> zprimes() The set of usable rules consists of (no rules) Take the reduction pair: weighted path order base order: max/plus interpretations on natural numbers: mark#_A(x1) = x1 + 3 s_A(x1) = x1 filter_A(x1,x2,x3) = max{x1 + 2, x2 + 4, x3 + 2} sieve_A(x1) = x1 nats_A(x1) = x1 cons_A(x1,x2) = max{x1, x2} precedence: mark# = s = filter = sieve = nats = cons partial status: pi(mark#) = [1] pi(s) = [1] pi(filter) = [2, 3] pi(sieve) = [1] pi(nats) = [1] pi(cons) = [1, 2] The next rules are strictly ordered: p2 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: mark#(s(X)) -> mark#(X) p2: mark#(filter(X1,X2,X3)) -> mark#(X2) p3: mark#(filter(X1,X2,X3)) -> mark#(X3) p4: mark#(sieve(X)) -> mark#(X) p5: mark#(nats(X)) -> mark#(X) p6: mark#(cons(X1,X2)) -> mark#(X1) and R consists of: r1: a__filter(cons(X,Y),|0|(),M) -> cons(|0|(),filter(Y,M,M)) r2: a__filter(cons(X,Y),s(N),M) -> cons(mark(X),filter(Y,N,M)) r3: a__sieve(cons(|0|(),Y)) -> cons(|0|(),sieve(Y)) r4: a__sieve(cons(s(N),Y)) -> cons(s(mark(N)),sieve(filter(Y,N,N))) r5: a__nats(N) -> cons(mark(N),nats(s(N))) r6: a__zprimes() -> a__sieve(a__nats(s(s(|0|())))) r7: mark(filter(X1,X2,X3)) -> a__filter(mark(X1),mark(X2),mark(X3)) r8: mark(sieve(X)) -> a__sieve(mark(X)) r9: mark(nats(X)) -> a__nats(mark(X)) r10: mark(zprimes()) -> a__zprimes() r11: mark(cons(X1,X2)) -> cons(mark(X1),X2) r12: mark(|0|()) -> |0|() r13: mark(s(X)) -> s(mark(X)) r14: a__filter(X1,X2,X3) -> filter(X1,X2,X3) r15: a__sieve(X) -> sieve(X) r16: a__nats(X) -> nats(X) r17: a__zprimes() -> zprimes() 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: mark#(s(X)) -> mark#(X) p2: mark#(cons(X1,X2)) -> mark#(X1) p3: mark#(nats(X)) -> mark#(X) p4: mark#(sieve(X)) -> mark#(X) p5: mark#(filter(X1,X2,X3)) -> mark#(X3) p6: mark#(filter(X1,X2,X3)) -> mark#(X2) and R consists of: r1: a__filter(cons(X,Y),|0|(),M) -> cons(|0|(),filter(Y,M,M)) r2: a__filter(cons(X,Y),s(N),M) -> cons(mark(X),filter(Y,N,M)) r3: a__sieve(cons(|0|(),Y)) -> cons(|0|(),sieve(Y)) r4: a__sieve(cons(s(N),Y)) -> cons(s(mark(N)),sieve(filter(Y,N,N))) r5: a__nats(N) -> cons(mark(N),nats(s(N))) r6: a__zprimes() -> a__sieve(a__nats(s(s(|0|())))) r7: mark(filter(X1,X2,X3)) -> a__filter(mark(X1),mark(X2),mark(X3)) r8: mark(sieve(X)) -> a__sieve(mark(X)) r9: mark(nats(X)) -> a__nats(mark(X)) r10: mark(zprimes()) -> a__zprimes() r11: mark(cons(X1,X2)) -> cons(mark(X1),X2) r12: mark(|0|()) -> |0|() r13: mark(s(X)) -> s(mark(X)) r14: a__filter(X1,X2,X3) -> filter(X1,X2,X3) r15: a__sieve(X) -> sieve(X) r16: a__nats(X) -> nats(X) r17: a__zprimes() -> zprimes() The set of usable rules consists of (no rules) Take the reduction pair: weighted path order base order: max/plus interpretations on natural numbers: mark#_A(x1) = x1 + 4 s_A(x1) = x1 cons_A(x1,x2) = max{x1 + 1, x2} nats_A(x1) = x1 + 3 sieve_A(x1) = x1 filter_A(x1,x2,x3) = max{x1 + 1, x2 + 2, x3} precedence: mark# = s = cons = nats = sieve = filter partial status: pi(mark#) = [] pi(s) = [1] pi(cons) = [2] pi(nats) = [1] pi(sieve) = [1] pi(filter) = [3] 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: mark#(s(X)) -> mark#(X) p2: mark#(cons(X1,X2)) -> mark#(X1) p3: mark#(sieve(X)) -> mark#(X) p4: mark#(filter(X1,X2,X3)) -> mark#(X3) p5: mark#(filter(X1,X2,X3)) -> mark#(X2) and R consists of: r1: a__filter(cons(X,Y),|0|(),M) -> cons(|0|(),filter(Y,M,M)) r2: a__filter(cons(X,Y),s(N),M) -> cons(mark(X),filter(Y,N,M)) r3: a__sieve(cons(|0|(),Y)) -> cons(|0|(),sieve(Y)) r4: a__sieve(cons(s(N),Y)) -> cons(s(mark(N)),sieve(filter(Y,N,N))) r5: a__nats(N) -> cons(mark(N),nats(s(N))) r6: a__zprimes() -> a__sieve(a__nats(s(s(|0|())))) r7: mark(filter(X1,X2,X3)) -> a__filter(mark(X1),mark(X2),mark(X3)) r8: mark(sieve(X)) -> a__sieve(mark(X)) r9: mark(nats(X)) -> a__nats(mark(X)) r10: mark(zprimes()) -> a__zprimes() r11: mark(cons(X1,X2)) -> cons(mark(X1),X2) r12: mark(|0|()) -> |0|() r13: mark(s(X)) -> s(mark(X)) r14: a__filter(X1,X2,X3) -> filter(X1,X2,X3) r15: a__sieve(X) -> sieve(X) r16: a__nats(X) -> nats(X) r17: a__zprimes() -> zprimes() 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: mark#(s(X)) -> mark#(X) p2: mark#(filter(X1,X2,X3)) -> mark#(X2) p3: mark#(filter(X1,X2,X3)) -> mark#(X3) p4: mark#(sieve(X)) -> mark#(X) p5: mark#(cons(X1,X2)) -> mark#(X1) and R consists of: r1: a__filter(cons(X,Y),|0|(),M) -> cons(|0|(),filter(Y,M,M)) r2: a__filter(cons(X,Y),s(N),M) -> cons(mark(X),filter(Y,N,M)) r3: a__sieve(cons(|0|(),Y)) -> cons(|0|(),sieve(Y)) r4: a__sieve(cons(s(N),Y)) -> cons(s(mark(N)),sieve(filter(Y,N,N))) r5: a__nats(N) -> cons(mark(N),nats(s(N))) r6: a__zprimes() -> a__sieve(a__nats(s(s(|0|())))) r7: mark(filter(X1,X2,X3)) -> a__filter(mark(X1),mark(X2),mark(X3)) r8: mark(sieve(X)) -> a__sieve(mark(X)) r9: mark(nats(X)) -> a__nats(mark(X)) r10: mark(zprimes()) -> a__zprimes() r11: mark(cons(X1,X2)) -> cons(mark(X1),X2) r12: mark(|0|()) -> |0|() r13: mark(s(X)) -> s(mark(X)) r14: a__filter(X1,X2,X3) -> filter(X1,X2,X3) r15: a__sieve(X) -> sieve(X) r16: a__nats(X) -> nats(X) r17: a__zprimes() -> zprimes() The set of usable rules consists of (no rules) Take the reduction pair: weighted path order base order: max/plus interpretations on natural numbers: mark#_A(x1) = max{3, x1 + 2} s_A(x1) = x1 filter_A(x1,x2,x3) = max{x2, x3} sieve_A(x1) = max{3, x1 + 2} cons_A(x1,x2) = max{x1 + 1, x2 + 1} precedence: mark# = s = filter = sieve = cons partial status: pi(mark#) = [] pi(s) = [1] pi(filter) = [3] pi(sieve) = [1] pi(cons) = [2] The next rules are strictly ordered: p4 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: mark#(s(X)) -> mark#(X) p2: mark#(filter(X1,X2,X3)) -> mark#(X2) p3: mark#(filter(X1,X2,X3)) -> mark#(X3) p4: mark#(cons(X1,X2)) -> mark#(X1) and R consists of: r1: a__filter(cons(X,Y),|0|(),M) -> cons(|0|(),filter(Y,M,M)) r2: a__filter(cons(X,Y),s(N),M) -> cons(mark(X),filter(Y,N,M)) r3: a__sieve(cons(|0|(),Y)) -> cons(|0|(),sieve(Y)) r4: a__sieve(cons(s(N),Y)) -> cons(s(mark(N)),sieve(filter(Y,N,N))) r5: a__nats(N) -> cons(mark(N),nats(s(N))) r6: a__zprimes() -> a__sieve(a__nats(s(s(|0|())))) r7: mark(filter(X1,X2,X3)) -> a__filter(mark(X1),mark(X2),mark(X3)) r8: mark(sieve(X)) -> a__sieve(mark(X)) r9: mark(nats(X)) -> a__nats(mark(X)) r10: mark(zprimes()) -> a__zprimes() r11: mark(cons(X1,X2)) -> cons(mark(X1),X2) r12: mark(|0|()) -> |0|() r13: mark(s(X)) -> s(mark(X)) r14: a__filter(X1,X2,X3) -> filter(X1,X2,X3) r15: a__sieve(X) -> sieve(X) r16: a__nats(X) -> nats(X) r17: a__zprimes() -> zprimes() 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: mark#(s(X)) -> mark#(X) p2: mark#(cons(X1,X2)) -> mark#(X1) p3: mark#(filter(X1,X2,X3)) -> mark#(X3) p4: mark#(filter(X1,X2,X3)) -> mark#(X2) and R consists of: r1: a__filter(cons(X,Y),|0|(),M) -> cons(|0|(),filter(Y,M,M)) r2: a__filter(cons(X,Y),s(N),M) -> cons(mark(X),filter(Y,N,M)) r3: a__sieve(cons(|0|(),Y)) -> cons(|0|(),sieve(Y)) r4: a__sieve(cons(s(N),Y)) -> cons(s(mark(N)),sieve(filter(Y,N,N))) r5: a__nats(N) -> cons(mark(N),nats(s(N))) r6: a__zprimes() -> a__sieve(a__nats(s(s(|0|())))) r7: mark(filter(X1,X2,X3)) -> a__filter(mark(X1),mark(X2),mark(X3)) r8: mark(sieve(X)) -> a__sieve(mark(X)) r9: mark(nats(X)) -> a__nats(mark(X)) r10: mark(zprimes()) -> a__zprimes() r11: mark(cons(X1,X2)) -> cons(mark(X1),X2) r12: mark(|0|()) -> |0|() r13: mark(s(X)) -> s(mark(X)) r14: a__filter(X1,X2,X3) -> filter(X1,X2,X3) r15: a__sieve(X) -> sieve(X) r16: a__nats(X) -> nats(X) r17: a__zprimes() -> zprimes() The set of usable rules consists of (no rules) Take the reduction pair: weighted path order base order: max/plus interpretations on natural numbers: mark#_A(x1) = x1 + 3 s_A(x1) = x1 + 1 cons_A(x1,x2) = max{x1, x2} filter_A(x1,x2,x3) = max{2, x2 + 1, x3} precedence: mark# = s = cons = filter partial status: pi(mark#) = [] pi(s) = [1] pi(cons) = [2] pi(filter) = [3] 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: mark#(cons(X1,X2)) -> mark#(X1) p2: mark#(filter(X1,X2,X3)) -> mark#(X3) p3: mark#(filter(X1,X2,X3)) -> mark#(X2) and R consists of: r1: a__filter(cons(X,Y),|0|(),M) -> cons(|0|(),filter(Y,M,M)) r2: a__filter(cons(X,Y),s(N),M) -> cons(mark(X),filter(Y,N,M)) r3: a__sieve(cons(|0|(),Y)) -> cons(|0|(),sieve(Y)) r4: a__sieve(cons(s(N),Y)) -> cons(s(mark(N)),sieve(filter(Y,N,N))) r5: a__nats(N) -> cons(mark(N),nats(s(N))) r6: a__zprimes() -> a__sieve(a__nats(s(s(|0|())))) r7: mark(filter(X1,X2,X3)) -> a__filter(mark(X1),mark(X2),mark(X3)) r8: mark(sieve(X)) -> a__sieve(mark(X)) r9: mark(nats(X)) -> a__nats(mark(X)) r10: mark(zprimes()) -> a__zprimes() r11: mark(cons(X1,X2)) -> cons(mark(X1),X2) r12: mark(|0|()) -> |0|() r13: mark(s(X)) -> s(mark(X)) r14: a__filter(X1,X2,X3) -> filter(X1,X2,X3) r15: a__sieve(X) -> sieve(X) r16: a__nats(X) -> nats(X) r17: a__zprimes() -> zprimes() The estimated dependency graph contains the following SCCs: {p1, p2, p3} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(cons(X1,X2)) -> mark#(X1) p2: mark#(filter(X1,X2,X3)) -> mark#(X2) p3: mark#(filter(X1,X2,X3)) -> mark#(X3) and R consists of: r1: a__filter(cons(X,Y),|0|(),M) -> cons(|0|(),filter(Y,M,M)) r2: a__filter(cons(X,Y),s(N),M) -> cons(mark(X),filter(Y,N,M)) r3: a__sieve(cons(|0|(),Y)) -> cons(|0|(),sieve(Y)) r4: a__sieve(cons(s(N),Y)) -> cons(s(mark(N)),sieve(filter(Y,N,N))) r5: a__nats(N) -> cons(mark(N),nats(s(N))) r6: a__zprimes() -> a__sieve(a__nats(s(s(|0|())))) r7: mark(filter(X1,X2,X3)) -> a__filter(mark(X1),mark(X2),mark(X3)) r8: mark(sieve(X)) -> a__sieve(mark(X)) r9: mark(nats(X)) -> a__nats(mark(X)) r10: mark(zprimes()) -> a__zprimes() r11: mark(cons(X1,X2)) -> cons(mark(X1),X2) r12: mark(|0|()) -> |0|() r13: mark(s(X)) -> s(mark(X)) r14: a__filter(X1,X2,X3) -> filter(X1,X2,X3) r15: a__sieve(X) -> sieve(X) r16: a__nats(X) -> nats(X) r17: a__zprimes() -> zprimes() The set of usable rules consists of (no rules) Take the reduction pair: weighted path order base order: max/plus interpretations on natural numbers: mark#_A(x1) = x1 + 4 cons_A(x1,x2) = max{x1 + 1, x2} filter_A(x1,x2,x3) = max{x1 - 1, x2 + 1, x3} precedence: mark# = cons = filter partial status: pi(mark#) = [] pi(cons) = [2] pi(filter) = [3] The next rules are strictly ordered: p2 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: mark#(cons(X1,X2)) -> mark#(X1) p2: mark#(filter(X1,X2,X3)) -> mark#(X3) and R consists of: r1: a__filter(cons(X,Y),|0|(),M) -> cons(|0|(),filter(Y,M,M)) r2: a__filter(cons(X,Y),s(N),M) -> cons(mark(X),filter(Y,N,M)) r3: a__sieve(cons(|0|(),Y)) -> cons(|0|(),sieve(Y)) r4: a__sieve(cons(s(N),Y)) -> cons(s(mark(N)),sieve(filter(Y,N,N))) r5: a__nats(N) -> cons(mark(N),nats(s(N))) r6: a__zprimes() -> a__sieve(a__nats(s(s(|0|())))) r7: mark(filter(X1,X2,X3)) -> a__filter(mark(X1),mark(X2),mark(X3)) r8: mark(sieve(X)) -> a__sieve(mark(X)) r9: mark(nats(X)) -> a__nats(mark(X)) r10: mark(zprimes()) -> a__zprimes() r11: mark(cons(X1,X2)) -> cons(mark(X1),X2) r12: mark(|0|()) -> |0|() r13: mark(s(X)) -> s(mark(X)) r14: a__filter(X1,X2,X3) -> filter(X1,X2,X3) r15: a__sieve(X) -> sieve(X) r16: a__nats(X) -> nats(X) r17: a__zprimes() -> zprimes() The estimated dependency graph contains the following SCCs: {p1, p2} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(cons(X1,X2)) -> mark#(X1) p2: mark#(filter(X1,X2,X3)) -> mark#(X3) and R consists of: r1: a__filter(cons(X,Y),|0|(),M) -> cons(|0|(),filter(Y,M,M)) r2: a__filter(cons(X,Y),s(N),M) -> cons(mark(X),filter(Y,N,M)) r3: a__sieve(cons(|0|(),Y)) -> cons(|0|(),sieve(Y)) r4: a__sieve(cons(s(N),Y)) -> cons(s(mark(N)),sieve(filter(Y,N,N))) r5: a__nats(N) -> cons(mark(N),nats(s(N))) r6: a__zprimes() -> a__sieve(a__nats(s(s(|0|())))) r7: mark(filter(X1,X2,X3)) -> a__filter(mark(X1),mark(X2),mark(X3)) r8: mark(sieve(X)) -> a__sieve(mark(X)) r9: mark(nats(X)) -> a__nats(mark(X)) r10: mark(zprimes()) -> a__zprimes() r11: mark(cons(X1,X2)) -> cons(mark(X1),X2) r12: mark(|0|()) -> |0|() r13: mark(s(X)) -> s(mark(X)) r14: a__filter(X1,X2,X3) -> filter(X1,X2,X3) r15: a__sieve(X) -> sieve(X) r16: a__nats(X) -> nats(X) r17: a__zprimes() -> zprimes() The set of usable rules consists of (no rules) Take the reduction pair: weighted path order base order: max/plus interpretations on natural numbers: mark#_A(x1) = max{4, x1 + 3} cons_A(x1,x2) = max{x1, x2 + 1} filter_A(x1,x2,x3) = max{3, x1 + 2, x2 + 2, x3 + 2} precedence: mark# = cons = filter partial status: pi(mark#) = [] pi(cons) = [2] pi(filter) = [3] The next rules are strictly ordered: p2 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: mark#(cons(X1,X2)) -> mark#(X1) and R consists of: r1: a__filter(cons(X,Y),|0|(),M) -> cons(|0|(),filter(Y,M,M)) r2: a__filter(cons(X,Y),s(N),M) -> cons(mark(X),filter(Y,N,M)) r3: a__sieve(cons(|0|(),Y)) -> cons(|0|(),sieve(Y)) r4: a__sieve(cons(s(N),Y)) -> cons(s(mark(N)),sieve(filter(Y,N,N))) r5: a__nats(N) -> cons(mark(N),nats(s(N))) r6: a__zprimes() -> a__sieve(a__nats(s(s(|0|())))) r7: mark(filter(X1,X2,X3)) -> a__filter(mark(X1),mark(X2),mark(X3)) r8: mark(sieve(X)) -> a__sieve(mark(X)) r9: mark(nats(X)) -> a__nats(mark(X)) r10: mark(zprimes()) -> a__zprimes() r11: mark(cons(X1,X2)) -> cons(mark(X1),X2) r12: mark(|0|()) -> |0|() r13: mark(s(X)) -> s(mark(X)) r14: a__filter(X1,X2,X3) -> filter(X1,X2,X3) r15: a__sieve(X) -> sieve(X) r16: a__nats(X) -> nats(X) r17: a__zprimes() -> zprimes() The estimated dependency graph contains the following SCCs: {p1} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(cons(X1,X2)) -> mark#(X1) and R consists of: r1: a__filter(cons(X,Y),|0|(),M) -> cons(|0|(),filter(Y,M,M)) r2: a__filter(cons(X,Y),s(N),M) -> cons(mark(X),filter(Y,N,M)) r3: a__sieve(cons(|0|(),Y)) -> cons(|0|(),sieve(Y)) r4: a__sieve(cons(s(N),Y)) -> cons(s(mark(N)),sieve(filter(Y,N,N))) r5: a__nats(N) -> cons(mark(N),nats(s(N))) r6: a__zprimes() -> a__sieve(a__nats(s(s(|0|())))) r7: mark(filter(X1,X2,X3)) -> a__filter(mark(X1),mark(X2),mark(X3)) r8: mark(sieve(X)) -> a__sieve(mark(X)) r9: mark(nats(X)) -> a__nats(mark(X)) r10: mark(zprimes()) -> a__zprimes() r11: mark(cons(X1,X2)) -> cons(mark(X1),X2) r12: mark(|0|()) -> |0|() r13: mark(s(X)) -> s(mark(X)) r14: a__filter(X1,X2,X3) -> filter(X1,X2,X3) r15: a__sieve(X) -> sieve(X) r16: a__nats(X) -> nats(X) r17: a__zprimes() -> zprimes() The set of usable rules consists of (no rules) Take the reduction pair: weighted path order base order: max/plus interpretations on natural numbers: mark#_A(x1) = x1 + 2 cons_A(x1,x2) = max{x1 + 1, x2 + 1} precedence: mark# = cons partial status: pi(mark#) = [] pi(cons) = [2] The next rules are strictly ordered: p1 We remove them from the problem. Then no dependency pair remains.