The system is accessible function passing by a sort ordering that equates all sorts. We start by computing the following initial DP problem: P1. (1) merge#(nil, cons(Y, U), V) => merge#(U, nil, cons(Y, V)) (2) merge#(cons(W, P), X1, Y1) => merge#(X1, P, cons(W, Y1)) (3) map#(H1, cons(W1, P1)) => map#(H1, P1) ***** We apply the Graph Processor on P1. Considering the 2 SCCs, this DP problem is split into the following new problems. P2. (1) merge#(nil, cons(Y, U), V) => merge#(U, nil, cons(Y, V)) (2) merge#(cons(W, P), X1, Y1) => merge#(X1, P, cons(W, Y1)) P3. (1) map#(H1, cons(W1, P1)) => map#(H1, P1) ***** We apply the horpo Processor on P2. Constrained HORPO yields: merge#(nil, cons(Y, U), V) (>) merge#(U, nil, cons(Y, V)) merge#(cons(W, P), X1, Y1) (>) merge#(X1, P, cons(W, Y1)) merge(nil, nil, X) (>=) X merge(nil, cons(Y, U), V) (>=) merge(U, nil, cons(Y, V)) merge(cons(W, P), X1, Y1) (>=) merge(X1, P, cons(W, Y1)) map(G1, nil) (>=) nil map(H1, cons(W1, P1)) (>=) cons(H1(W1), map(H1, P1)) We do this using the following settings: * Precedence and status (for non-mentioned symbols the precedence is irrelevant and the status is Lex): merge# (status: Mul_2) > merge (status: Mul_2) > map (status: Mul_2) > nil (status: Lex) > cons (status: Mul_2) * Well-founded theory orderings: [>]_{Bool} = {(true,false)} [>]_{Int} = {(x,y) | x < 1000 /\ x < y } * Filter: cons disregards argument(s) 1 map disregards argument(s) 1 All dependency pairs were removed. ***** We apply the Subterm Criterion Processor on P3. We use the following projection function: nu(map#) = 2 We thus have: (1) cons(W1, P1) |>| P1 All DPs are strictly oriented, and may be removed. Hence, this DP problem is finite.