We consider termination of the STRS with no additional rule schemes: Signature: cons :: a -> c -> c dropWhile :: (a -> b) -> c -> c if :: b -> c -> c -> c nil :: c takeWhile :: (a -> b) -> c -> c true :: b Rules: if(true, X, Y) -> X if(true, U, V) -> V takeWhile(I, nil) -> nil takeWhile(J, cons(X1, Y1)) -> if(J(X1), cons(X1, takeWhile(J, Y1)), nil) dropWhile(G1, nil) -> nil dropWhile(H1, cons(W1, P1)) -> if(H1(W1), dropWhile(H1, P1), cons(W1, P1)) 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) takeWhile#(J, cons(X1, Y1)) => takeWhile#(J, Y1) (2) takeWhile#(J, cons(X1, Y1)) => if#(J(X1), cons(X1, takeWhile(J, Y1)), nil) (3) dropWhile#(H1, cons(W1, P1)) => dropWhile#(H1, P1) (4) dropWhile#(H1, cons(W1, P1)) => if#(H1(W1), dropWhile(H1, P1), cons(W1, P1)) ***** 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: 3 4 4: There are 2 SCCs. Processor output: { D2 = (P2, R, i, c) ; D3 = (P3, R, i, c) }, where: P2. (1) takeWhile#(J, cons(X1, Y1)) => takeWhile#(J, Y1) P3. (1) dropWhile#(H1, cons(W1, P1)) => dropWhile#(H1, P1) ***** We apply the Subterm Criterion Processor on D2 = (P2, R, i, c). We use the following projection function: nu(takeWhile#) = 2 We thus have: (1) cons(X1, Y1) |>| Y1 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(dropWhile#) = 2 We thus have: (1) cons(W1, P1) |>| P1 All DPs are strictly oriented, and may be removed. Hence, this DP problem is finite. Processor output: { }.