We consider termination of the LCTRS with only rule scheme Calc: Signature: cond1 :: Bool -> Int -> Int cond2 :: Bool -> Int -> Int f :: Int -> Int Rules: f(x) -> cond1(x > 1, x) | x = x cond1(true, x) -> cond2(x % 2 = 0, x) | x = x cond1(false, x) -> x | x = x cond2(true, x) -> f(x / 2) | x = x cond2(false, x) -> f(3 * x + 1) | x = 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) f#(x) => cond1#(x > 1, x) | x = x (2) cond1#(true, x) => cond2#(x % 2 = 0, x) | x = x (3) cond2#(true, x) => f#(x / 2) | x = x (4) cond2#(false, x) => f#(3 * x + 1) | x = x ***** We apply the Chaining Processor Processor on D1 = (P1, R, i, c). We chain DPs according to the following mapping: cond2#(true, x) => cond1#(x / 2 > 1, x / 2) | x = x /\ x / 2 = x / 2 is obtained by chaining cond2#(true, x) => f#(x / 2) | x = x and f#(x') => cond1#(x' > 1, x') | x' = x' cond2#(false, x) => cond1#(3 * x + 1 > 1, 3 * x + 1) | x = x /\ 3 * x + 1 = 3 * x + 1 is obtained by chaining cond2#(false, x) => f#(3 * x + 1) | x = x and f#(x') => cond1#(x' > 1, x') | x' = x' The following DPs were deleted: cond2#(true, x) => f#(x / 2) | x = x cond2#(false, x) => f#(3 * x + 1) | x = x f#(x) => cond1#(x > 1, x) | x = x By chaining, we added 2 DPs and removed 3 DPs. Processor output: { D2 = (P2, R, i, c) }, where: P2. (1) cond1#(true, x) => cond2#(x % 2 = 0, x) | x = x (2) cond2#(true, x) => cond1#(x / 2 > 1, x / 2) | x = x /\ x / 2 = x / 2 (3) cond2#(false, x) => cond1#(3 * x + 1 > 1, 3 * x + 1) | x = x /\ 3 * x + 1 = 3 * x + 1 ***** No progress could be made on DP problem D2 = (P2, R, i, c).