We consider termination of the STRS with no additional rule schemes: Signature: 0 :: b cons :: c -> d -> d false :: a filter :: (c -> a) -> d -> d filter2 :: a -> (c -> a) -> c -> d -> d if :: a -> b -> b -> b le :: b -> b -> a map :: (c -> c) -> d -> d minus :: b -> b -> b nil :: d p :: b -> b s :: b -> b true :: a Rules: p(0) -> 0 p(s(X)) -> X le(0, Y) -> true le(s(U), 0) -> false le(s(V), s(W)) -> le(V, W) minus(P, X1) -> if(le(P, X1), P, X1) if(true, Y1, U1) -> 0 if(false, V1, W1) -> s(minus(p(V1), W1)) map(J1, nil) -> nil map(F2, cons(Y2, U2)) -> cons(F2(Y2), map(F2, U2)) filter(H2, nil) -> nil filter(I2, cons(P2, X3)) -> filter2(I2(P2), I2, P2, X3) filter2(true, Z3, U3, V3) -> cons(U3, filter(Z3, V3)) filter2(false, I3, P3, X4) -> filter(I3, X4) 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) le#(s(V), s(W)) => le#(V, W) (2) minus#(P, X1) => le#(P, X1) (3) minus#(P, X1) => if#(le(P, X1), P, X1) (4) if#(false, V1, W1) => p#(V1) (5) if#(false, V1, W1) => minus#(p(V1), W1) (6) map#(F2, cons(Y2, U2)) => map#(F2, U2) (7) filter#(I2, cons(P2, X3)) => filter2#(I2(P2), I2, P2, X3) (8) filter2#(true, Z3, U3, V3) => filter#(Z3, V3) (9) filter2#(false, I3, P3, X4) => filter#(I3, X4) ***** We apply the Graph Processor on D1 = (P1, R, i, c). We compute a graph approximation with the following edges: 1: 1 2: 1 3: 4 5 4: 5: 2 3 6: 6 7: 8 9 8: 7 9: 7 There are 4 SCCs. Processor output: { D2 = (P2, R, i, c) ; D3 = (P3, R, i, c) ; D4 = (P4, R, i, c) ; D5 = (P5, R, i, c) }, where: P2. (1) le#(s(V), s(W)) => le#(V, W) P3. (1) minus#(P, X1) => if#(le(P, X1), P, X1) (2) if#(false, V1, W1) => minus#(p(V1), W1) P4. (1) map#(F2, cons(Y2, U2)) => map#(F2, U2) P5. (1) filter#(I2, cons(P2, X3)) => filter2#(I2(P2), I2, P2, X3) (2) filter2#(true, Z3, U3, V3) => filter#(Z3, V3) (3) filter2#(false, I3, P3, X4) => filter#(I3, X4) ***** We apply the Subterm Criterion Processor on D2 = (P2, R, i, c). We use the following projection function: nu(le#) = 1 We thus have: (1) s(V) |>| V All DPs are strictly oriented, and may be removed. Hence, this DP problem is finite. Processor output: { }. ***** We apply the Usable Rules Processor on D3 = (P3, R, i, c). We obtain 5 usable rules (out of 14 rules in the input problem). Processor output: { D6 = (P3, R2, i, c) }, where: R2. (1) le(0, Y) -> true (2) le(s(U), 0) -> false (3) le(s(V), s(W)) -> le(V, W) (4) p(0) -> 0 (5) p(s(X)) -> X ***** We apply the Subterm Criterion Processor on D4 = (P4, R, i, c). We use the following projection function: nu(map#) = 2 We thus have: (1) cons(Y2, U2) |>| U2 All DPs are strictly oriented, and may be removed. Hence, this DP problem is finite. Processor output: { }. ***** We apply the Subterm Criterion Processor on D5 = (P5, R, i, c). We use the following projection function: nu(filter#) = 2 nu(filter2#) = 4 We thus have: (1) cons(P2, X3) |>| X3 (2) V3 |>=| V3 (3) X4 |>=| X4 We may remove the strictly oriented DPs. Processor output: { D7 = (P6, R, i, c) }, where: P6. (1) filter2#(true, Z3, U3, V3) => filter#(Z3, V3) (2) filter2#(false, I3, P3, X4) => filter#(I3, X4) ***** No progress could be made on DP problem D6 = (P3, R2, i, c).