The system is accessible function passing by a sort ordering that equates all sorts. We start by computing the following initial DP problem: P1. (1) primes#(x) => nats#(2, x) (2) primes#(x) => sieve#(nats(2, x)) (3) nats#(x, y) => nats#(x + 1, y) | y >= x (4) sieve#(cons(x, ys)) => filter#(x, ys) (5) sieve#(cons(x, ys)) => sieve#(filter(x, ys)) (6) filter#(x, cons(y, zs)) => isdiv#(x, y) (7) filter#(x, cons(y, zs)) => if#(isdiv(x, y), x, y, zs) (8) if#(true, x, y, zs) => filter#(x, zs) (9) if#(false, x, y, zs) => filter#(x, zs) (10) isdiv#(x, y) => isdiv#(x, y - x) | y >= x /\ x > 0 ***** We apply the Graph Processor on P1. Considering the 4 SCCs, this DP problem is split into the following new problems. P2. (1) nats#(x, y) => nats#(x + 1, y) | y >= x P3. (1) isdiv#(x, y) => isdiv#(x, y - x) | y >= x /\ x > 0 P4. (1) filter#(x, cons(y, zs)) => if#(isdiv(x, y), x, y, zs) (2) if#(true, x, y, zs) => filter#(x, zs) (3) if#(false, x, y, zs) => filter#(x, zs) P5. (1) sieve#(cons(x, ys)) => sieve#(filter(x, ys)) ***** We apply the Integer Function Processor on P2. We use the following integer mapping: J(nats#) = arg_2 - arg_1 We thus have: (1) y >= x |= y - x > y - (x + 1) (and y - x >= 0) All DPs are strictly oriented, and may be removed. Hence, this DP problem is finite. ***** We apply the Integer Function Processor on P3. We use the following integer mapping: J(isdiv#) = arg_2 We thus have: (1) y >= x /\ x > 0 |= y > y - x (and y >= 0) All DPs are strictly oriented, and may be removed. Hence, this DP problem is finite. ***** We apply the Subterm Criterion Processor on P4. We use the following projection function: nu(filter#) = 2 nu(if#) = 4 We thus have: (1) cons(y, zs) |>| zs (2) zs |>=| zs (3) zs |>=| zs We may remove the strictly oriented DPs, which yields: P6. (1) if#(true, x, y, zs) => filter#(x, zs) (2) if#(false, x, y, zs) => filter#(x, zs) ***** No progress could be made on DP problem P5.