We consider termination of the STRS with no additional rule schemes: Signature: : :: a -> a -> a C :: a cons :: c -> d -> d false :: b filter :: (c -> b) -> d -> d filter2 :: b -> (c -> b) -> c -> d -> d map :: (c -> c) -> d -> d nil :: d true :: b Rules: :(:(:(:(C, Y), U), V), X) -> :(:(Y, V), :(:(:(Y, U), V), X)) map(I, nil) -> nil map(J, cons(X1, Y1)) -> cons(J(X1), map(J, Y1)) filter(G1, nil) -> nil filter(H1, cons(W1, P1)) -> filter2(H1(W1), H1, W1, P1) filter2(true, F2, Y2, U2) -> cons(Y2, filter(F2, U2)) filter2(false, H2, W2, P2) -> filter(H2, P2) The system is accessible function passing by a sort ordering that equates all sorts. We start by computing the initial DP problem D1 = (P1, R, i, c), where: P1. (1) :#(:(:(:(C, Y), U), V), X) => :#(Y, V) (2) :#(:(:(:(C, Y), U), V), X) => :#(Y, U) (3) :#(:(:(:(C, Y), U), V), X) => :#(:(Y, U), V) (4) :#(:(:(:(C, Y), U), V), X) => :#(:(:(Y, U), V), X) (5) :#(:(:(:(C, Y), U), V), X) => :#(:(Y, V), :(:(:(Y, U), V), X)) (6) map#(J, cons(X1, Y1)) => map#(J, Y1) (7) filter#(H1, cons(W1, P1)) => filter2#(H1(W1), H1, W1, P1) (8) filter2#(true, F2, Y2, U2) => filter#(F2, U2) (9) filter2#(false, H2, W2, P2) => filter#(H2, P2) ***** We apply the Graph Processor on D1 = (P1, R, i, c). We compute a graph approximation with the following edges: 1: 1 2 3 4 5 2: 1 2 3 4 5 3: 1 2 3 4 5 4: 1 2 3 4 5 5: 1 2 3 4 5 6: 6 7: 8 9 8: 7 9: 7 There are 3 SCCs. Processor output: { D2 = (P2, R, i, c) ; D3 = (P3, R, i, c) ; D4 = (P4, R, i, c) }, where: P2. (1) :#(:(:(:(C, Y), U), V), X) => :#(Y, V) (2) :#(:(:(:(C, Y), U), V), X) => :#(Y, U) (3) :#(:(:(:(C, Y), U), V), X) => :#(:(Y, U), V) (4) :#(:(:(:(C, Y), U), V), X) => :#(:(:(Y, U), V), X) (5) :#(:(:(:(C, Y), U), V), X) => :#(:(Y, V), :(:(:(Y, U), V), X)) P3. (1) map#(J, cons(X1, Y1)) => map#(J, Y1) P4. (1) filter#(H1, cons(W1, P1)) => filter2#(H1(W1), H1, W1, P1) (2) filter2#(true, F2, Y2, U2) => filter#(F2, U2) (3) filter2#(false, H2, W2, P2) => filter#(H2, P2) ***** We apply the Usable Rules Processor on D2 = (P2, R, i, c). We obtain 1 usable rules (out of 7 rules in the input problem). Processor output: { D5 = (P2, R2, i, c) }, where: R2. (1) :(:(:(:(C, Y), U), V), X) -> :(:(Y, V), :(:(:(Y, U), V), X)) ***** We apply the Subterm Criterion Processor on D3 = (P3, R, i, c). We use the following projection function: nu(map#) = 2 We thus have: (1) cons(X1, Y1) |>| Y1 All DPs are strictly oriented, and may be removed. Hence, this DP problem is finite. Processor output: { }. ***** We apply the Subterm Criterion Processor on D4 = (P4, R, i, c). We use the following projection function: nu(filter#) = 2 nu(filter2#) = 4 We thus have: (1) cons(W1, P1) |>| P1 (2) U2 |>=| U2 (3) P2 |>=| P2 We may remove the strictly oriented DPs. Processor output: { D6 = (P5, R, i, c) }, where: P5. (1) filter2#(true, F2, Y2, U2) => filter#(F2, U2) (2) filter2#(false, H2, W2, P2) => filter#(H2, P2) ***** We apply the Usable rules with respect to an argument wiltering [with HORPO] Processor on D5 = (P2, R2, i, c). Constrained HORPO yields: :#2(:2(:2(:2(C0, Y), U), V), X) (>) :#2(Y, V) :#2(:2(:2(:2(C0, Y), U), V), X) (>) :#2(Y, U) :#2(:2(:2(:2(C0, Y), U), V), X) (>) :#2(:2(Y, U), V) :#2(:2(:2(:2(C0, Y), U), V), X) (>) :#2(:2(:2(Y, U), V), X) :#2(:2(:2(:2(C0, Y), U), V), X) (>) :#2(:2(Y, V), :2(:2(:2(Y, U), V), X)) :2(:2(:2(:2(C0, Y), U), V), X) (>=) :2(:2(Y, V), :2(:2(:2(Y, U), V), X)) We do this using the following settings: * Disregarded arguments: :#2 2 * Precedence and permutation: :2 { 1 } 2 = C0 { } > :#2 { 1 } * Well-founded theory orderings: [>]_{Bool} = {(true,false)} [>]_{Int} = {(x,y) | x < 1000 /\ x < y } Processor output: { }. ***** We apply the Graph Processor on D6 = (P5, R, i, c). We compute a graph approximation with the following edges: 1: 2: As there are no SCCs, this DP problem is removed. Processor output: { }.