We consider termination of the STRS with no additional rule schemes: Signature: 0 :: a 1 :: a 2 :: a cons :: d -> e -> e f :: a -> a -> a -> a false :: c filter :: (d -> c) -> e -> e filter2 :: c -> (d -> c) -> d -> e -> e g :: b -> b -> b -> b map :: (d -> d) -> e -> e nil :: e true :: c Rules: f(0, 1, X) -> f(X, X, X) f(Y, U, V) -> 2 0 -> 2 1 -> 2 g(W, W, P) -> P g(X1, Y1, Y1) -> X1 map(G1, nil) -> nil map(H1, cons(W1, P1)) -> cons(H1(W1), map(H1, P1)) filter(F2, nil) -> nil filter(Z2, cons(U2, V2)) -> filter2(Z2(U2), Z2, U2, V2) filter2(true, I2, P2, X3) -> cons(P2, filter(I2, X3)) filter2(false, Z3, U3, V3) -> filter(Z3, V3) 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) f#(0, 1, X) => f#(X, X, X) (2) map#(H1, cons(W1, P1)) => map#(H1, P1) (3) filter#(Z2, cons(U2, V2)) => filter2#(Z2(U2), Z2, U2, V2) (4) filter2#(true, I2, P2, X3) => filter#(I2, X3) (5) filter2#(false, Z3, U3, V3) => filter#(Z3, V3) ***** We apply the Graph Processor on D1 = (P1, R, i, c). We compute a graph approximation with the following edges: 1: 1 2: 2 3: 4 5 4: 3 5: 3 There are 3 SCCs. Processor output: { D2 = (P2, R, i, c) ; D3 = (P3, R, i, c) ; D4 = (P4, R, i, c) }, where: P2. (1) f#(0, 1, X) => f#(X, X, X) P3. (1) map#(H1, cons(W1, P1)) => map#(H1, P1) P4. (1) filter#(Z2, cons(U2, V2)) => filter2#(Z2(U2), Z2, U2, V2) (2) filter2#(true, I2, P2, X3) => filter#(I2, X3) (3) filter2#(false, Z3, U3, V3) => filter#(Z3, V3) ***** We apply the Usable Rules Processor on D2 = (P2, R, i, c). We obtain 0 usable rules (out of 12 rules in the input problem). Processor output: { D5 = (P2, {}, i, c) }. ***** 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(W1, P1) |>| P1 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(U2, V2) |>| V2 (2) X3 |>=| X3 (3) V3 |>=| V3 We may remove the strictly oriented DPs. Processor output: { D6 = (P5, R, i, c) }, where: P5. (1) filter2#(true, I2, P2, X3) => filter#(I2, X3) (2) filter2#(false, Z3, U3, V3) => filter#(Z3, V3) ***** No progress could be made on DP problem D5 = (P2, {}, i, c).