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) sub#(s(P), s(X1)) => sub#(P, X1) (2) gtr#(s(V1), s(W1)) => gtr#(V1, W1) (3) d#(s(X2), s(Y2)) => gtr#(X2, Y2) (4) d#(s(X2), s(Y2)) => sub#(Y2, X2) (5) d#(s(X2), s(Y2)) => d#(s(X2), sub(Y2, X2)) (6) d#(s(X2), s(Y2)) => if#(gtr(X2, Y2), false, d(s(X2), sub(Y2, X2))) (7) len#(cons(U2, V2)) => len#(V2) (8) filter#(J2, cons(X3, Y3)) => filter#(J2, Y3) (9) filter#(J2, cons(X3, Y3)) => filter#(J2, Y3) (10) filter#(J2, cons(X3, Y3)) => if#(J2(X3), cons(X3, filter(J2, Y3)), filter(J2, Y3)) ***** We apply the Graph Processor on P1. Considering the 5 SCCs, this DP problem is split into the following new problems. P2. (1) sub#(s(P), s(X1)) => sub#(P, X1) P3. (1) gtr#(s(V1), s(W1)) => gtr#(V1, W1) P4. (1) d#(s(X2), s(Y2)) => d#(s(X2), sub(Y2, X2)) P5. (1) len#(cons(U2, V2)) => len#(V2) P6. (1) filter#(J2, cons(X3, Y3)) => filter#(J2, Y3) (2) filter#(J2, cons(X3, Y3)) => filter#(J2, Y3) ***** We apply the Subterm Criterion Processor on P2. We use the following projection function: nu(sub#) = 1 We thus have: (1) s(P) |>| P All DPs are strictly oriented, and may be removed. Hence, this DP problem is finite. ***** We apply the Subterm Criterion Processor on P3. We use the following projection function: nu(gtr#) = 1 We thus have: (1) s(V1) |>| V1 All DPs are strictly oriented, and may be removed. Hence, this DP problem is finite. ***** We apply the horpo Processor on P4. Constrained HORPO yields: d#(s(X2), s(Y2)) (>) d#(s(X2), sub(Y2, X2)) if(true, X, Y) (>=) X if(false, U, V) (>=) V sub(W, 0) (>=) W sub(s(P), s(X1)) (>=) sub(P, X1) gtr(0, Y1) (>=) false gtr(s(U1), 0) (>=) true gtr(s(V1), s(W1)) (>=) gtr(V1, W1) d(P1, 0) (>=) true d(s(X2), s(Y2)) (>=) if(gtr(X2, Y2), false, d(s(X2), sub(Y2, X2))) len(nil) (>=) 0 len(cons(U2, V2)) (>=) s(len(V2)) filter(I2, nil) (>=) nil filter(J2, cons(X3, Y3)) (>=) if(J2(X3), cons(X3, filter(J2, Y3)), filter(J2, Y3)) We do this using the following settings: * Precedence and status (for non-mentioned symbols the precedence is irrelevant and the status is Lex): len (status: Lex) > filter (status: Mul_2) > cons = nil (status: Lex) > 0 (status: Lex) > gtr (status: Mul_2) > s (status: Lex) > false = if = sub (status: Lex) > d (status: Lex) > d# (status: Mul_2) > true (status: Lex) * Well-founded theory orderings: [>]_{Bool} = {(true,false)} [>]_{Int} = {(x,y) | x < 1000 /\ x < y } * Filter: d disregards argument(s) 1 d# disregards argument(s) 1 filter disregards argument(s) 1 gtr disregards argument(s) 1 if disregards argument(s) 1 sub disregards argument(s) 2 All dependency pairs were removed. ***** We apply the Subterm Criterion Processor on P5. We use the following projection function: nu(len#) = 1 We thus have: (1) cons(U2, V2) |>| V2 All DPs are strictly oriented, and may be removed. Hence, this DP problem is finite. ***** We apply the Subterm Criterion Processor on P6. We use the following projection function: nu(filter#) = 2 We thus have: (1) cons(X3, Y3) |>| Y3 (2) cons(X3, Y3) |>| Y3 All DPs are strictly oriented, and may be removed. Hence, this DP problem is finite.