We consider universal computability of the LCTRS with only rule scheme Calc: Signature: ack :: Int -> Int -> Int ackNat :: Bool -> Int -> Int -> Int cond1 :: Bool -> Int -> Int -> Int cond2 :: Bool -> Int -> Int -> Int f :: Bool -> Int -> o Rules: f(true, x) -> f(ack(10, 10) >= x, x + 1) ack(x, y) -> ackNat(x >= 0 /\ y >= 0, x, y) ackNat(true, x, y) -> cond1(x = 0, x, y) ackNat(false, x, y) -> 0 cond1(true, x, y) -> y + 1 cond1(false, x, y) -> cond2(y = 0, x, y) cond2(true, x, y) -> ack(x - 1, y + 1) cond2(false, x, y) -> ack(x - 1, ack(x, y - 1)) 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 UNION R_?, i, c), where: P1. (1) f#(true, x) => ack#(10, 10) (2) f#(true, x) => f#(ack(10, 10) >= x, x + 1) (3) ack#(x, y) => ackNat#(x >= 0 /\ y >= 0, x, y) (4) ackNat#(true, x, y) => cond1#(x = 0, x, y) (5) cond1#(false, x, y) => cond2#(y = 0, x, y) (6) cond2#(true, x, y) => ack#(x - 1, y + 1) (7) cond2#(false, x, y) => ack#(x, y - 1) (8) cond2#(false, x, y) => ack#(x - 1, ack(x, y - 1)) ***** We apply the Graph Processor on D1 = (P1, R UNION R_?, i, c). We compute a graph approximation with the following edges: 1: 3 2: 3: 4 4: 5 5: 6 7 8 6: 3 7: 3 8: 3 There is only one SCC, so all DPs not inside the SCC can be removed. Processor output: { D2 = (P2, R UNION R_?, i, c) }, where: P2. (1) ack#(x, y) => ackNat#(x >= 0 /\ y >= 0, x, y) (2) ackNat#(true, x, y) => cond1#(x = 0, x, y) (3) cond1#(false, x, y) => cond2#(y = 0, x, y) (4) cond2#(true, x, y) => ack#(x - 1, y + 1) (5) cond2#(false, x, y) => ack#(x, y - 1) (6) cond2#(false, x, y) => ack#(x - 1, ack(x, y - 1)) ***** We apply the Theory Arguments Processor on D2 = (P2, R UNION R_?, i, c). We use the following theory arguments function: ack# : [] ackNat# : [1, 2, 3] cond1# : [1, 2, 3] cond2# : [1, 2, 3] Processor output: { D3 = (P3, R UNION R_?, i, c) ; D4 = (P4, R UNION R_?, i, c) }, where: P3. (1) ack#(x, y) => ackNat#(x >= 0 /\ y >= 0, x, y) (2) ackNat#(true, x, y) => cond1#(x = 0, x, y) | x = x /\ y = y (3) cond1#(false, x, y) => cond2#(y = 0, x, y) | x = x /\ y = y (4) cond2#(true, x, y) => ack#(x - 1, y + 1) | x = x /\ y = y (5) cond2#(false, x, y) => ack#(x, y - 1) | x = x /\ y = y (6) cond2#(false, x, y) => ack#(x - 1, ack(x, y - 1)) | x = x /\ y = y P4. (1) ackNat#(true, x, y) => cond1#(x = 0, x, y) (2) cond1#(false, x, y) => cond2#(y = 0, x, y) (3) cond2#(true, x, y) => ack#(x - 1, y + 1) (4) cond2#(false, x, y) => ack#(x, y - 1) (5) cond2#(false, x, y) => ack#(x - 1, ack(x, y - 1)) ***** We apply the Usable Rules Processor on D3 = (P3, R UNION R_?, i, c). We obtain 7 usable rules (out of 8 rules in the input problem). Processor output: { D5 = (P3, R2, i, c) }, where: R2. (1) ackNat(true, x, y) -> cond1(x = 0, x, y) (2) ackNat(false, x, y) -> 0 (3) ack(x, y) -> ackNat(x >= 0 /\ y >= 0, x, y) (4) cond1(true, x, y) -> y + 1 (5) cond1(false, x, y) -> cond2(y = 0, x, y) (6) cond2(true, x, y) -> ack(x - 1, y + 1) (7) cond2(false, x, y) -> ack(x - 1, ack(x, y - 1)) ***** We apply the Graph Processor on D4 = (P4, R UNION R_?, i, c). We compute a graph approximation with the following edges: 1: 2 2: 3 4 5 3: 4: 5: As there are no SCCs, this DP problem is removed. Processor output: { }. ***** No progress could be made on DP problem D5 = (P3, R2, i, c).