We consider universal computability of the STRS with no additional rule schemes: Signature: 0 :: c 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 rev :: d -> d rev1 :: c -> d -> c rev2 :: c -> d -> d s :: a -> c true :: b Rules: rev(nil) -> nil rev(cons(Y, X)) -> cons(rev1(Y, X), rev2(Y, X)) rev1(0, nil) -> 0 rev1(s(U), nil) -> s(U) rev1(W, cons(P, V)) -> rev1(P, V) rev2(X1, nil) -> nil rev2(U1, cons(V1, Y1)) -> rev(cons(U1, rev2(V1, Y1))) map(I1, nil) -> nil map(J1, cons(X2, Y2)) -> cons(J1(X2), map(J1, Y2)) filter(G2, nil) -> nil filter(H2, cons(W2, P2)) -> filter2(H2(W2), H2, W2, P2) filter2(true, F3, Y3, U3) -> cons(Y3, filter(F3, U3)) filter2(false, H3, W3, P3) -> filter(H3, P3) 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 UNION R_?, i, c), where: P1. (1) rev#(cons(Y, X)) => rev1#(Y, X) (2) rev#(cons(Y, X)) => rev2#(Y, X) (3) rev1#(W, cons(P, V)) => rev1#(P, V) (4) rev2#(U1, cons(V1, Y1)) => rev2#(V1, Y1) (5) rev2#(U1, cons(V1, Y1)) => rev#(cons(U1, rev2(V1, Y1))) (6) map#(J1, cons(X2, Y2)) => map#(J1, Y2) (7) filter#(H2, cons(W2, P2)) => filter2#(H2(W2), H2, W2, P2) (8) filter2#(true, F3, Y3, U3) => filter#(F3, U3) (9) filter2#(false, H3, W3, P3) => filter#(H3, P3) ***** We apply the Graph Processor on D1 = (P1, R UNION R_?, i, c). We compute a graph approximation with the following edges: 1: 3 2: 4 5 3: 3 4: 4 5 5: 1 2 6: 6 7: 8 9 8: 7 9: 7 There are 4 SCCs. Processor output: { D2 = (P2, R UNION R_?, i, c) ; D3 = (P3, R UNION R_?, i, c) ; D4 = (P4, R UNION R_?, i, c) ; D5 = (P5, R UNION R_?, i, c) }, where: P2. (1) rev1#(W, cons(P, V)) => rev1#(P, V) P3. (1) rev#(cons(Y, X)) => rev2#(Y, X) (2) rev2#(U1, cons(V1, Y1)) => rev2#(V1, Y1) (3) rev2#(U1, cons(V1, Y1)) => rev#(cons(U1, rev2(V1, Y1))) P4. (1) map#(J1, cons(X2, Y2)) => map#(J1, Y2) P5. (1) filter#(H2, cons(W2, P2)) => filter2#(H2(W2), H2, W2, P2) (2) filter2#(true, F3, Y3, U3) => filter#(F3, U3) (3) filter2#(false, H3, W3, P3) => filter#(H3, P3) ***** We apply the Subterm Criterion Processor on D2 = (P2, R UNION R_?, i, c). We use the following projection function: nu(rev1#) = 2 We thus have: (1) cons(P, 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 UNION R_?, i, c). We obtain 7 usable rules (out of 13 rules in the input problem). Processor output: { D6 = (P3, R2, i, c) }, where: R2. (1) rev1(0, nil) -> 0 (2) rev1(s(U), nil) -> s(U) (3) rev1(W, cons(P, V)) -> rev1(P, V) (4) rev2(X1, nil) -> nil (5) rev2(U1, cons(V1, Y1)) -> rev(cons(U1, rev2(V1, Y1))) (6) rev(nil) -> nil (7) rev(cons(Y, X)) -> cons(rev1(Y, X), rev2(Y, X)) ***** We apply the Subterm Criterion Processor on D4 = (P4, R UNION R_?, i, c). We use the following projection function: nu(map#) = 2 We thus have: (1) cons(X2, Y2) |>| Y2 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 UNION R_?, i, c). We use the following projection function: nu(filter#) = 2 nu(filter2#) = 4 We thus have: (1) cons(W2, P2) |>| P2 (2) U3 |>=| U3 (3) P3 |>=| P3 We may remove the strictly oriented DPs. Processor output: { D7 = (P6, R UNION R_?, i, c) }, where: P6. (1) filter2#(true, F3, Y3, U3) => filter#(F3, U3) (2) filter2#(false, H3, W3, P3) => filter#(H3, P3) ***** No progress could be made on DP problem D6 = (P3, R2, i, c).