We consider termination of the STRS with no additional rule schemes: Signature: 0 :: b cons :: b -> b -> b del :: b -> b -> b eq :: b -> b -> a false :: a filter :: (b -> a) -> b -> b filter2 :: a -> (b -> a) -> b -> b -> b if :: a -> b -> b -> b le :: b -> b -> a map :: (b -> b) -> b -> b min :: b -> b -> b minsort :: b -> b nil :: b s :: b -> b true :: a Rules: le(0, X) -> true le(s(Y), 0) -> false le(s(U), s(V)) -> le(U, V) eq(0, 0) -> true eq(0, s(W)) -> false eq(s(P), 0) -> false eq(s(X1), s(Y1)) -> eq(X1, Y1) if(true, U1, V1) -> U1 if(false, W1, P1) -> P1 minsort(nil) -> nil minsort(cons(X2, Y2)) -> cons(min(X2, Y2), minsort(del(min(X2, Y2), cons(X2, Y2)))) min(U2, nil) -> U2 min(V2, cons(W2, P2)) -> if(le(V2, W2), min(V2, P2), min(W2, P2)) del(X3, nil) -> nil del(Y3, cons(U3, V3)) -> if(eq(Y3, U3), V3, cons(U3, del(Y3, V3))) map(I3, nil) -> nil map(J3, cons(X4, Y4)) -> cons(J3(X4), map(J3, Y4)) filter(G4, nil) -> nil filter(H4, cons(W4, P4)) -> filter2(H4(W4), H4, W4, P4) filter2(true, F5, Y5, U5) -> cons(Y5, filter(F5, U5)) filter2(false, H5, W5, P5) -> filter(H5, P5) 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(U), s(V)) => le#(U, V) (2) eq#(s(X1), s(Y1)) => eq#(X1, Y1) (3) minsort#(cons(X2, Y2)) => min#(X2, Y2) (4) minsort#(cons(X2, Y2)) => min#(X2, Y2) (5) minsort#(cons(X2, Y2)) => del#(min(X2, Y2), cons(X2, Y2)) (6) minsort#(cons(X2, Y2)) => minsort#(del(min(X2, Y2), cons(X2, Y2))) (7) min#(V2, cons(W2, P2)) => le#(V2, W2) (8) min#(V2, cons(W2, P2)) => min#(V2, P2) (9) min#(V2, cons(W2, P2)) => min#(W2, P2) (10) min#(V2, cons(W2, P2)) => if#(le(V2, W2), min(V2, P2), min(W2, P2)) (11) del#(Y3, cons(U3, V3)) => eq#(Y3, U3) (12) del#(Y3, cons(U3, V3)) => del#(Y3, V3) (13) del#(Y3, cons(U3, V3)) => if#(eq(Y3, U3), V3, cons(U3, del(Y3, V3))) (14) map#(J3, cons(X4, Y4)) => map#(J3, Y4) (15) filter#(H4, cons(W4, P4)) => filter2#(H4(W4), H4, W4, P4) (16) filter2#(true, F5, Y5, U5) => filter#(F5, U5) (17) filter2#(false, H5, W5, P5) => filter#(H5, P5) ***** We apply the Graph Processor on D1 = (P1, R, i, c). We compute a graph approximation with the following edges: 1: 1 2: 2 3: 7 8 9 10 4: 7 8 9 10 5: 11 12 13 6: 3 4 5 6 7: 1 8: 7 8 9 10 9: 7 8 9 10 10: 11: 2 12: 11 12 13 13: 14: 14 15: 16 17 16: 15 17: 15 There are 7 SCCs. Processor output: { D2 = (P2, R, i, c) ; D3 = (P3, R, i, c) ; D4 = (P4, R, i, c) ; D5 = (P5, R, i, c) ; D6 = (P6, R, i, c) ; D7 = (P7, R, i, c) ; D8 = (P8, R, i, c) }, where: P2. (1) le#(s(U), s(V)) => le#(U, V) P3. (1) eq#(s(X1), s(Y1)) => eq#(X1, Y1) P4. (1) min#(V2, cons(W2, P2)) => min#(V2, P2) (2) min#(V2, cons(W2, P2)) => min#(W2, P2) P5. (1) del#(Y3, cons(U3, V3)) => del#(Y3, V3) P6. (1) minsort#(cons(X2, Y2)) => minsort#(del(min(X2, Y2), cons(X2, Y2))) P7. (1) map#(J3, cons(X4, Y4)) => map#(J3, Y4) P8. (1) filter#(H4, cons(W4, P4)) => filter2#(H4(W4), H4, W4, P4) (2) filter2#(true, F5, Y5, U5) => filter#(F5, U5) (3) filter2#(false, H5, W5, P5) => filter#(H5, P5) ***** 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(U) |>| U 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(eq#) = 1 We thus have: (1) s(X1) |>| X1 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(min#) = 2 We thus have: (1) cons(W2, P2) |>| P2 (2) cons(W2, P2) |>| P2 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(del#) = 2 We thus have: (1) cons(U3, V3) |>| V3 All DPs are strictly oriented, and may be removed. Hence, this DP problem is finite. Processor output: { }. ***** We apply the Usable Rules Processor on D6 = (P6, R, i, c). We obtain 13 usable rules (out of 21 rules in the input problem). Processor output: { D9 = (P6, R2, i, c) }, where: R2. (1) del(X3, nil) -> nil (2) del(Y3, cons(U3, V3)) -> if(eq(Y3, U3), V3, cons(U3, del(Y3, V3))) (3) eq(0, 0) -> true (4) eq(0, s(W)) -> false (5) eq(s(P), 0) -> false (6) eq(s(X1), s(Y1)) -> eq(X1, Y1) (7) if(true, U1, V1) -> U1 (8) if(false, W1, P1) -> P1 (9) le(0, X) -> true (10) le(s(Y), 0) -> false (11) le(s(U), s(V)) -> le(U, V) (12) min(U2, nil) -> U2 (13) min(V2, cons(W2, P2)) -> if(le(V2, W2), min(V2, P2), min(W2, P2)) ***** We apply the Subterm Criterion Processor on D7 = (P7, R, i, c). We use the following projection function: nu(map#) = 2 We thus have: (1) cons(X4, Y4) |>| Y4 All DPs are strictly oriented, and may be removed. Hence, this DP problem is finite. Processor output: { }. ***** We apply the Subterm Criterion Processor on D8 = (P8, R, i, c). We use the following projection function: nu(filter#) = 2 nu(filter2#) = 4 We thus have: (1) cons(W4, P4) |>| P4 (2) U5 |>=| U5 (3) P5 |>=| P5 We may remove the strictly oriented DPs. Processor output: { D10 = (P9, R, i, c) }, where: P9. (1) filter2#(true, F5, Y5, U5) => filter#(F5, U5) (2) filter2#(false, H5, W5, P5) => filter#(H5, P5) ***** No progress could be made on DP problem D9 = (P6, R2, i, c).