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