We consider termination of the STRS with no additional rule schemes: Signature: 0 :: nat false :: bool h :: (nat -> bool) -> (nat -> nat) -> nat -> nat if :: bool -> nat -> nat -> nat s :: nat -> nat true :: bool Rules: if(true, X, Y) -> X if(false, X, Y) -> Y h(F, G, 0) -> 0 h(F, G, s(Y)) -> G(h(F, G, if(F(Y), Y, 0))) 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) h#(F, G, s(Y)) => if#(F(Y), Y, 0) (2) h#(F, G, s(Y)) => h#(F, G, if(F(Y), Y, 0)) ***** We apply the Graph Processor on D1 = (P1, R, i, c). We compute a graph approximation with the following edges: 1: 2: 1 2 There is only one SCC, so all DPs not inside the SCC can be removed. Processor output: { D2 = (P2, R, i, c) }, where: P2. (1) h#(F, G, s(Y)) => h#(F, G, if(F(Y), Y, 0)) ***** We apply the Usable rules with respect to an argument wiltering [with HORPO] Processor on D2 = (P2, R, i, c). Constrained HORPO yields: h#3(F, G, s1(Y)) (>) h#3(F, G, if3($, Y, 00)) if3(true0, X, Y) (>=) X if3(false0, X, Y) (>=) Y We do this using the following settings: * Disregarded arguments: h#3 2 if3 1 * Precedence and permutation: $ { } = h3 { 2 } 1 = s1 { 1 } > $ { } = 00 { } = false0 { } = h#3 { } 1 3 = if3 { 2 } 3 = true0 { } * Well-founded theory orderings: [>]_{Bool} = {(true,false)} [>]_{Int} = {(x,y) | x < 1000 /\ x < y } Processor output: { }.