We consider termination of the STRS with no additional rule schemes: Signature: cons :: nat -> list -> list explode :: list -> (nat -> nat) -> nat -> nat implode :: list -> (nat -> nat) -> nat -> nat nil :: list op :: (nat -> nat) -> (nat -> nat) -> nat -> nat Rules: op(F, G, X) -> F(G(X)) implode(nil, F, X) -> X implode(cons(H, T), F, X) -> implode(T, F, F(X)) explode(nil, F, X) -> X explode(cons(H, T), F, X) -> explode(T, op(F, F), F(X)) 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) implode#(cons(H, T), F, X) => implode#(T, F, F(X)) (2) explode#(cons(H, T), F, X) => op#(F, F, fresh1) (3) explode#(cons(H, T), F, X) => explode#(T, op(F, F), F(X)) ***** 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 3 There are 2 SCCs. Processor output: { D2 = (P2, R, i, c) ; D3 = (P3, R, i, c) }, where: P2. (1) implode#(cons(H, T), F, X) => implode#(T, F, F(X)) P3. (1) explode#(cons(H, T), F, X) => explode#(T, op(F, F), F(X)) ***** We apply the Subterm Criterion Processor on D2 = (P2, R, i, c). We use the following projection function: nu(implode#) = 1 We thus have: (1) cons(H, T) |>| T 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(explode#) = 1 We thus have: (1) cons(H, T) |>| T All DPs are strictly oriented, and may be removed. Hence, this DP problem is finite. Processor output: { }.