We consider termination of the STRS with no additional rule schemes: Signature: cons :: c -> d -> d f :: a -> a false :: b filter :: (c -> b) -> d -> d filter2 :: b -> (c -> b) -> c -> d -> d g :: a -> a map :: (c -> c) -> d -> d nil :: d true :: b Rules: f(g(X)) -> g(g(f(X))) f(g(Y)) -> g(g(g(Y))) map(G, nil) -> nil map(H, cons(W, P)) -> cons(H(W), map(H, P)) filter(F1, nil) -> nil filter(Z1, cons(U1, V1)) -> filter2(Z1(U1), Z1, U1, V1) filter2(true, I1, P1, X2) -> cons(P1, filter(I1, X2)) filter2(false, Z2, U2, V2) -> filter(Z2, V2) 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, f, c), where: P1. (1) f#(g(X)) => f#(X) (2) map#(H, cons(W, P)) => map#(H, P) (3) filter#(Z1, cons(U1, V1)) => filter2#(Z1(U1), Z1, U1, V1) (4) filter2#(true, I1, P1, X2) => filter#(I1, X2) (5) filter2#(false, Z2, U2, V2) => filter#(Z2, V2) ***** We apply the Graph Processor on D1 = (P1, R, f, 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, f, c) ; D3 = (P3, R, f, c) ; D4 = (P4, R, f, c) }, where: P2. (1) f#(g(X)) => f#(X) P3. (1) map#(H, cons(W, P)) => map#(H, P) P4. (1) filter#(Z1, cons(U1, V1)) => filter2#(Z1(U1), Z1, U1, V1) (2) filter2#(true, I1, P1, X2) => filter#(I1, X2) (3) filter2#(false, Z2, U2, V2) => filter#(Z2, V2) ***** We apply the Subterm Criterion Processor on D2 = (P2, R, f, c). We use the following projection function: nu(f#) = 1 We thus have: (1) g(X) |>| X All DPs are strictly oriented, and may be removed. Hence, this DP problem is finite. Processor output: { }. ***** We apply the Subterm Criterion Processor on D3 = (P3, R, f, c). We use the following projection function: nu(map#) = 2 We thus have: (1) cons(W, P) |>| P 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, f, c). We use the following projection function: nu(filter#) = 2 nu(filter2#) = 4 We thus have: (1) cons(U1, V1) |>| V1 (2) X2 |>=| X2 (3) V2 |>=| V2 We may remove the strictly oriented DPs. Processor output: { D5 = (P5, R, f, c) }, where: P5. (1) filter2#(true, I1, P1, X2) => filter#(I1, X2) (2) filter2#(false, Z2, U2, V2) => filter#(Z2, V2) ***** We apply the Graph Processor on D5 = (P5, R, f, c). We compute a graph approximation with the following edges: 1: 2: As there are no SCCs, this DP problem is removed. Processor output: { }.