We consider termination of the STRS with no additional rule schemes: Signature: 0 :: a cons :: b -> c -> c d :: a -> a -> c false :: c filter :: (b -> c) -> c -> c gtr :: a -> a -> c if :: c -> c -> c -> c len :: c -> a nil :: c s :: a -> a sub :: a -> a -> a true :: c Rules: if(true, X, Y) -> X if(false, U, V) -> V sub(W, 0) -> W sub(s(P), s(X1)) -> sub(P, X1) gtr(0, Y1) -> false gtr(s(U1), 0) -> true gtr(s(V1), s(W1)) -> gtr(V1, W1) d(P1, 0) -> true d(s(X2), s(Y2)) -> if(gtr(X2, Y2), false, d(s(X2), sub(Y2, X2))) len(nil) -> 0 len(cons(U2, V2)) -> s(len(V2)) filter(I2, nil) -> nil filter(J2, cons(X3, Y3)) -> if(J2(X3), cons(X3, filter(J2, 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) sub#(s(P), s(X1)) => sub#(P, X1) (2) gtr#(s(V1), s(W1)) => gtr#(V1, W1) (3) d#(s(X2), s(Y2)) => gtr#(X2, Y2) (4) d#(s(X2), s(Y2)) => sub#(Y2, X2) (5) d#(s(X2), s(Y2)) => d#(s(X2), sub(Y2, X2)) (6) d#(s(X2), s(Y2)) => if#(gtr(X2, Y2), false, d(s(X2), sub(Y2, X2))) (7) len#(cons(U2, V2)) => len#(V2) (8) filter#(J2, cons(X3, Y3)) => filter#(J2, Y3) (9) filter#(J2, cons(X3, Y3)) => filter#(J2, Y3) (10) filter#(J2, cons(X3, Y3)) => if#(J2(X3), cons(X3, filter(J2, 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: 2 3: 2 4: 1 5: 3 4 5 6 6: 7: 7 8: 8 9 10 9: 8 9 10 10: There are 5 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) }, where: P2. (1) sub#(s(P), s(X1)) => sub#(P, X1) P3. (1) gtr#(s(V1), s(W1)) => gtr#(V1, W1) P4. (1) d#(s(X2), s(Y2)) => d#(s(X2), sub(Y2, X2)) P5. (1) len#(cons(U2, V2)) => len#(V2) P6. (1) filter#(J2, cons(X3, Y3)) => filter#(J2, Y3) (2) filter#(J2, cons(X3, Y3)) => filter#(J2, Y3) ***** We apply the Subterm Criterion Processor on D2 = (P2, R, i, c). We use the following projection function: nu(sub#) = 1 We thus have: (1) s(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(gtr#) = 1 We thus have: (1) s(V1) |>| V1 All DPs are strictly oriented, and may be removed. Hence, this DP problem is finite. Processor output: { }. ***** We apply the Usable Rules Processor on D4 = (P4, R, i, c). We obtain 2 usable rules (out of 13 rules in the input problem). Processor output: { D7 = (P4, R2, i, c) }, where: R2. (1) sub(W, 0) -> W (2) sub(s(P), s(X1)) -> sub(P, X1) ***** We apply the Subterm Criterion Processor on D5 = (P5, R, i, c). We use the following projection function: nu(len#) = 1 We thus have: (1) cons(U2, V2) |>| V2 All DPs are strictly oriented, and may be removed. Hence, this DP problem is finite. Processor output: { }. ***** We apply the Subterm Criterion Processor on D6 = (P6, R, i, c). We use the following projection function: nu(filter#) = 2 We thus have: (1) cons(X3, Y3) |>| Y3 (2) cons(X3, Y3) |>| Y3 All DPs are strictly oriented, and may be removed. Hence, this DP problem is finite. Processor output: { }. ***** We apply the Usable rules with respect to HORPO Processor on D7 = (P4, R2, i, c). Constrained HORPO yields: d#2(s1(X2), s1(Y2)) (>) d#2(s1(X2), sub2(Y2, X2)) sub2(W, 00) (>=) W sub2(s1(P), s1(X1)) (>=) sub2(P, X1) We do this using the following settings: * Disregarded arguments: sub2 2 * Precedence and permutation: s1 { 1 } > 00 { } = d#2 { 2 } 1 = sub2 { 1 } * Well-founded theory orderings: [>]_{Bool} = {(true,false)} [>]_{Int} = {(x,y) | x < 1000 /\ x < y } Processor output: { }.