We consider termination of the STRS with no additional rule schemes: Signature: * :: a -> a -> a + :: a -> a -> a - :: a -> a -> a 0 :: a 1 :: a D :: a -> a cons :: c -> d -> d constant :: a false :: b filter :: (c -> b) -> d -> d filter2 :: b -> (c -> b) -> c -> d -> d map :: (c -> c) -> d -> d nil :: d t :: a true :: b Rules: D(t) -> 1 D(constant) -> 0 D(+(X, Y)) -> +(D(X), D(Y)) D(*(U, V)) -> +(*(V, D(U)), *(U, D(V))) D(-(W, P)) -> -(D(W), D(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, i, c), where: P1. (1) D#(+(X, Y)) => D#(X) (2) D#(+(X, Y)) => D#(Y) (3) D#(*(U, V)) => D#(U) (4) D#(*(U, V)) => D#(V) (5) D#(-(W, P)) => D#(W) (6) D#(-(W, P)) => D#(P) (7) map#(Z1, cons(U1, V1)) => map#(Z1, V1) (8) filter#(J1, cons(X2, Y2)) => filter2#(J1(X2), J1, X2, Y2) (9) filter2#(true, G2, V2, W2) => filter#(G2, W2) (10) filter2#(false, J2, X3, Y3) => filter#(J2, Y3) ***** 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 6 2: 1 2 3 4 5 6 3: 1 2 3 4 5 6 4: 1 2 3 4 5 6 5: 1 2 3 4 5 6 6: 1 2 3 4 5 6 7: 7 8: 9 10 9: 8 10: 8 There are 3 SCCs. Processor output: { D2 = (P2, R, i, c) ; D3 = (P3, R, i, c) ; D4 = (P4, R, i, c) }, where: P2. (1) D#(+(X, Y)) => D#(X) (2) D#(+(X, Y)) => D#(Y) (3) D#(*(U, V)) => D#(U) (4) D#(*(U, V)) => D#(V) (5) D#(-(W, P)) => D#(W) (6) D#(-(W, P)) => D#(P) P3. (1) map#(Z1, cons(U1, V1)) => map#(Z1, V1) P4. (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, i, c). We use the following projection function: nu(D#) = 1 We thus have: (1) +(X, Y) |>| X (2) +(X, Y) |>| Y (3) *(U, V) |>| U (4) *(U, V) |>| V (5) -(W, P) |>| W (6) -(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 D3 = (P3, R, i, 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 D4 = (P4, R, i, 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: { D5 = (P5, R, i, c) }, where: P5. (1) filter2#(true, G2, V2, W2) => filter#(G2, W2) (2) filter2#(false, J2, X3, Y3) => filter#(J2, Y3) ***** We apply the Graph Processor on D5 = (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: { }.