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: matrix interpretations: carrier: N^2 order: standard order interpretations: a__filter#_A(x1,x2,x3) = ((1,0),(0,0)) x1 + ((1,0),(0,0)) x3 + (1,0) cons_A(x1,x2) = ((1,0),(0,0)) x1 + (1,3) s_A(x1) = ((1,0),(1,0)) x1 + (6,21) mark#_A(x1) = ((1,0),(0,0)) x1 zprimes_A() = (25,21) a__zprimes#_A() = (24,0) a__nats#_A(x1) = ((1,0),(0,0)) x1 |0|_A() = (1,3) nats_A(x1) = x1 + (7,21) mark_A(x1) = x1 + (0,3) sieve_A(x1) = ((1,0),(1,0)) x1 + (3,1) a__sieve#_A(x1) = ((1,0),(0,0)) x1 + (3,0) filter_A(x1,x2,x3) = ((1,0),(1,1)) x1 + ((1,0),(1,0)) x2 + ((1,0),(0,0)) x3 + (2,0) a__nats_A(x1) = x1 + (7,21) a__filter_A(x1,x2,x3) = ((1,0),(1,1)) x1 + ((1,0),(1,0)) x2 + ((1,0),(0,0)) x3 + (2,0) a__sieve_A(x1) = ((1,0),(1,0)) x1 + (3,1) a__zprimes_A() = (25,21) precedence: a__nats# > a__filter# = cons = s = mark# = zprimes = a__zprimes# = nats = mark = sieve = a__sieve# = a__nats = a__sieve = a__zprimes > |0| = a__filter > filter partial status: pi(a__filter#) = [] pi(cons) = [] pi(s) = [] pi(mark#) = [] pi(zprimes) = [] pi(a__zprimes#) = [] pi(a__nats#) = [] pi(|0|) = [] pi(nats) = [1] pi(mark) = [1] pi(sieve) = [] pi(a__sieve#) = [] pi(filter) = [] pi(a__nats) = [1] pi(a__filter) = [1] pi(a__sieve) = [] pi(a__zprimes) = [] The next rules are strictly ordered: p16 We remove them from the problem. -- 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: 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)) 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} -- 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#(filter(X1,X2,X3)) -> a__filter#(mark(X1),mark(X2),mark(X3)) p3: mark#(filter(X1,X2,X3)) -> mark#(X1) p4: mark#(filter(X1,X2,X3)) -> mark#(X2) p5: mark#(filter(X1,X2,X3)) -> mark#(X3) p6: mark#(sieve(X)) -> a__sieve#(mark(X)) p7: a__sieve#(cons(s(N),Y)) -> mark#(N) p8: mark#(sieve(X)) -> mark#(X) p9: mark#(nats(X)) -> a__nats#(mark(X)) p10: a__nats#(N) -> mark#(N) p11: mark#(nats(X)) -> mark#(X) p12: mark#(zprimes()) -> a__zprimes#() p13: a__zprimes#() -> a__nats#(s(s(|0|()))) p14: mark#(cons(X1,X2)) -> mark#(X1) p15: 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 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: matrix interpretations: carrier: N^2 order: standard order interpretations: a__filter#_A(x1,x2,x3) = ((0,1),(0,0)) x1 + ((1,0),(0,0)) x2 + (10,3) cons_A(x1,x2) = x1 + (18,35) s_A(x1) = x1 mark#_A(x1) = ((0,1),(0,0)) x1 + (1,3) filter_A(x1,x2,x3) = ((1,1),(1,1)) x1 + ((1,1),(1,1)) x2 + ((1,1),(1,1)) x3 + (17,15) mark_A(x1) = ((1,1),(1,1)) x1 + (5,1) sieve_A(x1) = ((1,1),(1,1)) x1 + (19,3) a__sieve#_A(x1) = ((0,1),(0,0)) x1 + (1,3) nats_A(x1) = ((1,1),(1,1)) x1 + (20,21) a__nats#_A(x1) = ((0,1),(0,0)) x1 + (20,3) zprimes_A() = (87,88) a__zprimes#_A() = (88,3) |0|_A() = (0,3) a__filter_A(x1,x2,x3) = ((1,1),(1,1)) x1 + ((1,1),(1,1)) x2 + ((1,1),(1,1)) x3 + (18,15) a__sieve_A(x1) = ((1,1),(1,1)) x1 + (20,3) a__nats_A(x1) = ((1,1),(1,1)) x1 + (24,36) a__zprimes_A() = (87,88) precedence: |0| = a__sieve = a__zprimes > filter = mark = a__filter > a__nats# > a__filter# = mark# = sieve = a__sieve# = a__zprimes# = a__nats > s > nats = zprimes > cons partial status: pi(a__filter#) = [] pi(cons) = [] pi(s) = [1] pi(mark#) = [] pi(filter) = [] pi(mark) = [1] pi(sieve) = [1] pi(a__sieve#) = [] pi(nats) = [] pi(a__nats#) = [] pi(zprimes) = [] pi(a__zprimes#) = [] pi(|0|) = [] pi(a__filter) = [] pi(a__sieve) = [] pi(a__nats) = [] 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#(filter(X1,X2,X3)) -> a__filter#(mark(X1),mark(X2),mark(X3)) 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__nats#(s(s(|0|()))) p13: mark#(cons(X1,X2)) -> mark#(X1) p14: 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: {p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(filter(X1,X2,X3)) -> mark#(X1) 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) 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: matrix interpretations: carrier: N^2 order: standard order interpretations: mark#_A(x1) = ((1,1),(1,1)) x1 + (12,8) filter_A(x1,x2,x3) = ((1,1),(1,0)) x1 + x2 + x3 + (8,7) s_A(x1) = x1 + (2,1) cons_A(x1,x2) = x1 + (9,1) zprimes_A() = (21,15) a__zprimes#_A() = (20,14) a__nats#_A(x1) = ((1,1),(1,1)) x1 + (13,8) |0|_A() = (0,0) nats_A(x1) = ((1,1),(1,0)) x1 + (9,8) mark_A(x1) = ((1,1),(1,0)) x1 sieve_A(x1) = ((1,1),(1,0)) x1 + (1,1) a__sieve#_A(x1) = ((1,1),(1,1)) x1 + (2,2) a__filter_A(x1,x2,x3) = ((1,1),(1,0)) x1 + x2 + x3 + (8,8) a__sieve_A(x1) = ((1,1),(1,0)) x1 + (2,1) a__nats_A(x1) = ((1,1),(1,0)) x1 + (13,9) a__zprimes_A() = (35,20) precedence: zprimes > mark# = a__zprimes# = a__nats# = a__sieve# > s = mark = a__zprimes > a__nats > filter = cons = nats = sieve = a__filter = a__sieve > |0| partial status: pi(mark#) = [1] pi(filter) = [2] pi(s) = [] pi(cons) = [] pi(zprimes) = [] pi(a__zprimes#) = [] pi(a__nats#) = [1] pi(|0|) = [] pi(nats) = [] pi(mark) = [] pi(sieve) = [] pi(a__sieve#) = [1] pi(a__filter) = [2, 3] pi(a__sieve) = [] pi(a__nats) = [] pi(a__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#(filter(X1,X2,X3)) -> mark#(X1) p2: mark#(s(X)) -> mark#(X) p3: mark#(cons(X1,X2)) -> mark#(X1) 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) 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, p9, p10, p11, p12} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(filter(X1,X2,X3)) -> mark#(X1) p2: mark#(filter(X1,X2,X3)) -> mark#(X2) p3: mark#(filter(X1,X2,X3)) -> mark#(X3) p4: mark#(sieve(X)) -> a__sieve#(mark(X)) p5: a__sieve#(cons(s(N),Y)) -> mark#(N) p6: mark#(sieve(X)) -> mark#(X) p7: mark#(nats(X)) -> a__nats#(mark(X)) p8: a__nats#(N) -> mark#(N) p9: mark#(nats(X)) -> mark#(X) p10: mark#(cons(X1,X2)) -> mark#(X1) p11: 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 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: matrix interpretations: carrier: N^2 order: standard order interpretations: mark#_A(x1) = ((1,1),(1,0)) x1 + (7,1) filter_A(x1,x2,x3) = ((1,1),(1,0)) x1 + x2 + ((1,1),(1,0)) x3 + (26,16) sieve_A(x1) = ((1,1),(1,0)) x1 + (6,2) a__sieve#_A(x1) = x1 + (2,1) mark_A(x1) = ((1,1),(1,0)) x1 + (5,2) cons_A(x1,x2) = x1 + (4,1) s_A(x1) = ((1,1),(1,0)) x1 + (8,2) nats_A(x1) = ((1,1),(1,0)) x1 + (15,4) a__nats#_A(x1) = ((1,1),(1,0)) x1 + (9,1) a__filter_A(x1,x2,x3) = ((1,1),(1,0)) x1 + x2 + ((1,1),(1,0)) x3 + (27,16) |0|_A() = (27,29) a__sieve_A(x1) = ((1,1),(1,0)) x1 + (6,2) a__nats_A(x1) = ((1,1),(1,0)) x1 + (16,12) a__zprimes_A() = (303,185) zprimes_A() = (183,184) precedence: a__nats# > mark# > mark = nats = a__nats > |0| > a__sieve# > a__zprimes > a__sieve > sieve > a__filter > cons > s > zprimes > filter partial status: pi(mark#) = [] pi(filter) = [] pi(sieve) = [] pi(a__sieve#) = [1] pi(mark) = [] pi(cons) = [1] pi(s) = [] pi(nats) = [] pi(a__nats#) = [] 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#(filter(X1,X2,X3)) -> mark#(X1) p2: mark#(filter(X1,X2,X3)) -> mark#(X2) p3: mark#(filter(X1,X2,X3)) -> mark#(X3) p4: a__sieve#(cons(s(N),Y)) -> mark#(N) 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#(cons(X1,X2)) -> mark#(X1) p10: 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, p5, p6, p7, p8, p9, p10} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(filter(X1,X2,X3)) -> mark#(X1) p2: mark#(s(X)) -> mark#(X) p3: mark#(cons(X1,X2)) -> mark#(X1) p4: mark#(nats(X)) -> mark#(X) p5: mark#(nats(X)) -> a__nats#(mark(X)) p6: a__nats#(N) -> mark#(N) p7: mark#(sieve(X)) -> mark#(X) p8: mark#(filter(X1,X2,X3)) -> mark#(X3) p9: 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 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: matrix interpretations: carrier: N^2 order: standard order interpretations: mark#_A(x1) = ((1,1),(1,1)) x1 + (7,0) filter_A(x1,x2,x3) = ((1,1),(1,0)) x1 + ((1,1),(1,0)) x2 + x3 + (6,4) s_A(x1) = ((1,1),(1,0)) x1 + (19,3) cons_A(x1,x2) = x1 + (7,1) nats_A(x1) = ((1,1),(1,0)) x1 + (8,0) a__nats#_A(x1) = ((1,1),(1,1)) x1 + (8,0) mark_A(x1) = ((1,1),(1,0)) x1 + (1,0) sieve_A(x1) = ((1,1),(1,0)) x1 + (8,2) a__filter_A(x1,x2,x3) = ((1,1),(1,0)) x1 + ((1,1),(1,0)) x2 + x3 + (7,4) |0|_A() = (9,1) a__sieve_A(x1) = ((1,1),(1,0)) x1 + (8,2) a__nats_A(x1) = ((1,1),(1,0)) x1 + (8,1) a__zprimes_A() = (170,102) zprimes_A() = (169,101) precedence: a__nats# > mark# = s = mark = a__filter = |0| = a__sieve = a__zprimes > zprimes > filter = cons = a__nats > nats > sieve partial status: pi(mark#) = [1] pi(filter) = [3] pi(s) = [] pi(cons) = [] pi(nats) = [] pi(a__nats#) = [] pi(mark) = [] pi(sieve) = [] pi(a__filter) = [] pi(|0|) = [] pi(a__sieve) = [] pi(a__nats) = [] pi(a__zprimes) = [] pi(zprimes) = [] 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: mark#(filter(X1,X2,X3)) -> mark#(X1) p2: mark#(s(X)) -> mark#(X) p3: mark#(cons(X1,X2)) -> mark#(X1) p4: mark#(nats(X)) -> mark#(X) p5: mark#(nats(X)) -> a__nats#(mark(X)) p6: mark#(sieve(X)) -> mark#(X) p7: mark#(filter(X1,X2,X3)) -> mark#(X3) p8: 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, p6, p7, p8} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(filter(X1,X2,X3)) -> mark#(X1) 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) p7: 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 set of usable rules consists of (no rules) Take the reduction pair: weighted path order base order: matrix interpretations: carrier: N^2 order: standard order interpretations: mark#_A(x1) = ((0,1),(0,1)) x1 + (2,2) filter_A(x1,x2,x3) = ((0,0),(0,1)) x1 + ((1,1),(1,1)) x2 + ((0,0),(0,1)) x3 + (3,2) sieve_A(x1) = ((1,0),(1,1)) x1 + (1,1) nats_A(x1) = ((0,0),(0,1)) x1 + (1,1) cons_A(x1,x2) = ((0,0),(0,1)) x1 + ((1,1),(1,1)) x2 + (0,1) s_A(x1) = ((0,0),(0,1)) x1 + (1,1) precedence: mark# = nats > sieve > filter > cons = s partial status: pi(mark#) = [] pi(filter) = [] pi(sieve) = [] pi(nats) = [] pi(cons) = [2] pi(s) = [] 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#(filter(X1,X2,X3)) -> mark#(X1) p2: mark#(filter(X1,X2,X3)) -> mark#(X2) p3: mark#(filter(X1,X2,X3)) -> mark#(X3) p4: mark#(nats(X)) -> mark#(X) p5: mark#(cons(X1,X2)) -> mark#(X1) p6: 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} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(filter(X1,X2,X3)) -> mark#(X1) p2: mark#(s(X)) -> mark#(X) p3: mark#(cons(X1,X2)) -> mark#(X1) p4: mark#(nats(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: matrix interpretations: carrier: N^2 order: standard order interpretations: mark#_A(x1) = ((0,1),(0,1)) x1 + (2,2) filter_A(x1,x2,x3) = x1 + ((0,0),(0,1)) x2 + ((0,0),(0,1)) x3 + (1,1) s_A(x1) = ((0,0),(0,1)) x1 + (1,1) cons_A(x1,x2) = ((0,0),(0,1)) x1 + ((1,1),(1,1)) x2 + (1,1) nats_A(x1) = ((0,0),(1,1)) x1 + (1,1) precedence: mark# = s > filter > cons > nats partial status: pi(mark#) = [] pi(filter) = [] pi(s) = [] pi(cons) = [] pi(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: mark#(filter(X1,X2,X3)) -> mark#(X1) p2: mark#(s(X)) -> mark#(X) p3: mark#(cons(X1,X2)) -> mark#(X1) p4: mark#(nats(X)) -> mark#(X) 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#(filter(X1,X2,X3)) -> mark#(X1) p2: mark#(filter(X1,X2,X3)) -> mark#(X2) p3: mark#(nats(X)) -> mark#(X) p4: mark#(cons(X1,X2)) -> mark#(X1) p5: 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 set of usable rules consists of (no rules) Take the reduction pair: weighted path order base order: matrix interpretations: carrier: N^2 order: standard order interpretations: mark#_A(x1) = ((1,0),(1,1)) x1 + (2,2) filter_A(x1,x2,x3) = ((1,1),(1,1)) x1 + ((1,1),(0,0)) x2 + ((1,1),(1,1)) x3 + (3,2) nats_A(x1) = ((1,1),(0,0)) x1 + (1,1) cons_A(x1,x2) = ((1,1),(0,0)) x1 + ((1,1),(1,1)) x2 + (1,1) s_A(x1) = ((1,1),(0,0)) x1 + (1,1) precedence: mark# = filter > nats = cons = s partial status: pi(mark#) = [1] pi(filter) = [1, 3] pi(nats) = [] pi(cons) = [2] pi(s) = [] 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#(filter(X1,X2,X3)) -> mark#(X2) p2: mark#(nats(X)) -> mark#(X) p3: mark#(cons(X1,X2)) -> mark#(X1) p4: 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} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(filter(X1,X2,X3)) -> mark#(X2) p2: mark#(s(X)) -> mark#(X) p3: mark#(cons(X1,X2)) -> mark#(X1) p4: mark#(nats(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 set of usable rules consists of (no rules) Take the reduction pair: weighted path order base order: matrix interpretations: carrier: N^2 order: standard order interpretations: mark#_A(x1) = ((0,1),(0,0)) x1 + (2,2) filter_A(x1,x2,x3) = ((1,1),(1,1)) x1 + ((1,1),(1,1)) x2 + ((1,1),(1,1)) x3 + (3,2) s_A(x1) = x1 + (0,1) cons_A(x1,x2) = ((0,0),(0,1)) x1 + ((1,1),(1,1)) x2 + (1,1) nats_A(x1) = ((0,0),(0,1)) x1 + (1,1) precedence: cons > nats > s > mark# = filter partial status: pi(mark#) = [] pi(filter) = [2, 3] pi(s) = [1] pi(cons) = [2] pi(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: mark#(s(X)) -> mark#(X) p2: mark#(cons(X1,X2)) -> mark#(X1) p3: mark#(nats(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} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(s(X)) -> mark#(X) p2: mark#(nats(X)) -> mark#(X) p3: 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: matrix interpretations: carrier: N^2 order: standard order interpretations: mark#_A(x1) = ((0,1),(0,1)) x1 + (1,2) s_A(x1) = ((0,0),(0,1)) x1 + (2,1) nats_A(x1) = ((0,0),(0,1)) x1 + (2,1) cons_A(x1,x2) = ((0,0),(0,1)) x1 + ((1,1),(1,1)) x2 + (0,1) precedence: s = nats > mark# = cons partial status: pi(mark#) = [] pi(s) = [] pi(nats) = [] pi(cons) = [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#(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} -- 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) 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: matrix interpretations: carrier: N^2 order: standard order interpretations: mark#_A(x1) = ((0,1),(0,0)) x1 + (2,2) s_A(x1) = x1 + (1,1) cons_A(x1,x2) = ((0,0),(0,1)) x1 + ((1,1),(1,1)) x2 + (1,1) precedence: mark# = s = cons partial status: pi(mark#) = [] pi(s) = [1] pi(cons) = [2] 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) 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 monotone reduction pair: weighted path order base order: matrix interpretations: carrier: N^2 order: standard order interpretations: mark#_A(x1) = x1 + (1,1) cons_A(x1,x2) = x1 + ((1,1),(1,1)) x2 + (2,1) precedence: cons > mark# partial status: pi(mark#) = [1] pi(cons) = [1, 2] The next rules are strictly ordered: p1 We remove them from the problem. Then no dependency pair remains.