We consider termination of the STRS with no additional rule schemes: Signature: 0 :: d cons :: d -> d -> d f :: d -> a false :: c filter :: (d -> c) -> d -> d filter2 :: c -> (d -> c) -> d -> d -> d g :: d -> d h :: d -> b map :: (d -> d) -> d -> d nil :: d s :: d -> d true :: c Rules: f(s(X)) -> f(X) g(cons(0, Y)) -> g(Y) g(cons(s(U), V)) -> s(U) h(cons(W, P)) -> h(g(cons(W, P))) map(F1, nil) -> nil map(Z1, cons(U1, V1)) -> cons(Z1(U1), map(Z1, V1)) filter(I1, nil) -> nil filter(J1, cons(X2, Y2)) -> filter2(J1(X2), J1, X2, Y2) filter2(true, G2, V2, W2) -> cons(V2, filter(G2, W2)) filter2(false, J2, X3, Y3) -> filter(J2, Y3) 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#(s(X)) => f#(X) (2) g#(cons(0, Y)) => g#(Y) (3) h#(cons(W, P)) => g#(cons(W, P)) (4) h#(cons(W, P)) => h#(g(cons(W, P))) (5) map#(Z1, cons(U1, V1)) => map#(Z1, V1) (6) filter#(J1, cons(X2, Y2)) => filter2#(J1(X2), J1, X2, Y2) (7) filter2#(true, G2, V2, W2) => filter#(G2, W2) (8) filter2#(false, J2, X3, Y3) => filter#(J2, Y3) ***** 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: 2 4: 3 4 5: 5 6: 7 8 7: 6 8: 6 There are 5 SCCs. Processor output: { D2 = (P2, R, f, c) ; D3 = (P3, R, f, c) ; D4 = (P4, R, f, c) ; D5 = (P5, R, f, c) ; D6 = (P6, R, f, c) }, where: P2. (1) f#(s(X)) => f#(X) P3. (1) g#(cons(0, Y)) => g#(Y) P4. (1) h#(cons(W, P)) => h#(g(cons(W, P))) P5. (1) map#(Z1, cons(U1, V1)) => map#(Z1, V1) P6. (1) filter#(J1, cons(X2, Y2)) => filter2#(J1(X2), J1, X2, Y2) (2) filter2#(true, G2, V2, W2) => filter#(G2, W2) (3) filter2#(false, J2, X3, Y3) => filter#(J2, Y3) ***** 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) s(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(g#) = 1 We thus have: (1) cons(0, Y) |>| Y All DPs are strictly oriented, and may be removed. Hence, this DP problem is finite. Processor output: { }. ***** We apply the Reduction Pair [with HORPO] Processor on D4 = (P4, R, f, c). Constrained HORPO yields: h#(cons(W, P)) (>) h#(g(cons(W, P))) f(s(X)) (>=) f(X) g(cons(0, Y)) (>=) g(Y) g(cons(s(U), V)) (>=) s(U) h(cons(W, P)) (>=) h(g(cons(W, P))) map(F1, nil) (>=) nil map(Z1, cons(U1, V1)) (>=) cons(Z1(U1), map(Z1, V1)) filter(I1, nil) (>=) nil filter(J1, cons(X2, Y2)) (>=) filter2(J1(X2), J1, X2, Y2) filter2(true, G2, V2, W2) (>=) cons(V2, filter(G2, W2)) filter2(false, J2, X3, Y3) (>=) filter(J2, Y3) We do this using the following settings: * Disregarded arguments: f 1 g 1 h 1 s 1 * Precedence and permutation: false { } > 0 { } = h# { 1 } > map { 1 2 } = nil { } > filter2 { 2 3 4 } _ _ 1 = filter { 1 2 } = true { } > cons { 1 2 } > h { } > f { } = g { } = s { } * Well-founded theory orderings: [>]_{Bool} = {(true,false)} [>]_{Int} = {(x,y) | x < 1000 /\ x < y } All dependency pairs were removed. Processor output: { }. ***** We apply the Subterm Criterion Processor on D5 = (P5, R, f, c). We use the following projection function: nu(map#) = 2 We thus have: (1) cons(U1, V1) |>| V1 All DPs are strictly oriented, and may be removed. Hence, this DP problem is finite. Processor output: { }. ***** We apply the Subterm Criterion Processor on D6 = (P6, R, f, c). We use the following projection function: nu(filter#) = 2 nu(filter2#) = 4 We thus have: (1) cons(X2, Y2) |>| Y2 (2) W2 |>=| W2 (3) Y3 |>=| Y3 We may remove the strictly oriented DPs. Processor output: { D7 = (P7, R, f, c) }, where: P7. (1) filter2#(true, G2, V2, W2) => filter#(G2, W2) (2) filter2#(false, J2, X3, Y3) => filter#(J2, Y3) ***** We apply the Graph Processor on D7 = (P7, 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: { }.