We consider universal computability of the LCSTRS with only rule scheme Calc: Signature: l1 :: Int -> Int -> A (private) l2 :: Int -> Int -> A (private) l3 :: Int -> Int -> Int -> A (private) l4 :: Int -> Int -> Int -> A (private) l5 :: Int -> Int -> Int -> A (private) start :: Int -> A Rules: start(x) -> l1(x, 0) | x = x l1(x, y) -> l2(x, y) | x > y l2(x, y) -> l3(x, y, y) | x = x /\ y = y l3(x, y, z) -> l4(x, y, z) | z > 0 /\ x = x /\ y = y l4(x, y, z) -> l3(x, y, z - y - 1) | x = x /\ y = y /\ z = z l4(x, y, z) -> l5(x, y + 1, z) | x = x /\ y = y /\ z = z l5(x, y, z) -> l1(x, y) | x = x /\ y = y /\ z = z 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) start#(x) => l1#(x, 0) | x = x (2) l1#(x, y) => l2#(x, y) | x > y (private) (3) l2#(x, y) => l3#(x, y, y) | x = x /\ y = y (private) (4) l3#(x, y, z) => l4#(x, y, z) | z > 0 /\ x = x /\ y = y (private) (5) l4#(x, y, z) => l3#(x, y, z - y - 1) | x = x /\ y = y /\ z = z (private) (6) l4#(x, y, z) => l5#(x, y + 1, z) | x = x /\ y = y /\ z = z (private) (7) l5#(x, y, z) => l1#(x, y) | x = x /\ y = y /\ z = z (private) ***** We apply the Graph Processor on D1 = (P1, R UNION R_?, i, c). We compute a graph approximation with the following edges: 1: 2 2: 3 3: 4 4: 5 6 5: 4 6: 7 7: 2 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) l1#(x, y) => l2#(x, y) | x > y (2) l2#(x, y) => l3#(x, y, y) | x = x /\ y = y (3) l3#(x, y, z) => l4#(x, y, z) | z > 0 /\ x = x /\ y = y (4) l4#(x, y, z) => l3#(x, y, z - y - 1) | x = x /\ y = y /\ z = z (5) l4#(x, y, z) => l5#(x, y + 1, z) | x = x /\ y = y /\ z = z (6) l5#(x, y, z) => l1#(x, y) | x = x /\ y = y /\ z = z ***** We apply the Chaining Processor Processor on D2 = (P2, R UNION R_?, i, c). We chain DPs according to the following mapping: l5#(x, y, z) => l2#(x, y) | x = x /\ y = y /\ z = z /\ x > y is obtained by chaining l5#(x, y, z) => l1#(x, y) | x = x /\ y = y /\ z = z and l1#(x', y') => l2#(x', y') | x' > y' The following DPs were deleted: l5#(x, y, z) => l1#(x, y) | x = x /\ y = y /\ z = z l1#(x, y) => l2#(x, y) | x > y By chaining, we added 1 DPs and removed 2 DPs. Processor output: { D3 = (P3, R UNION R_?, i, c) }, where: P3. (1) l2#(x, y) => l3#(x, y, y) | x = x /\ y = y (2) l3#(x, y, z) => l4#(x, y, z) | z > 0 /\ x = x /\ y = y (3) l4#(x, y, z) => l3#(x, y, z - y - 1) | x = x /\ y = y /\ z = z (4) l4#(x, y, z) => l5#(x, y + 1, z) | x = x /\ y = y /\ z = z (5) l5#(x, y, z) => l2#(x, y) | x = x /\ y = y /\ z = z /\ x > y ***** We apply the Chaining Processor Processor on D3 = (P3, R UNION R_?, i, c). We chain DPs according to the following mapping: l5#(x, y, z) => l3#(x, y, y) | x = x /\ y = y /\ z = z /\ x > y /\ (x = x /\ y = y) is obtained by chaining l5#(x, y, z) => l2#(x, y) | x = x /\ y = y /\ z = z /\ x > y and l2#(x', y') => l3#(x', y', y') | x' = x' /\ y' = y' The following DPs were deleted: l5#(x, y, z) => l2#(x, y) | x = x /\ y = y /\ z = z /\ x > y l2#(x, y) => l3#(x, y, y) | x = x /\ y = y By chaining, we added 1 DPs and removed 2 DPs. Processor output: { D4 = (P4, R UNION R_?, i, c) }, where: P4. (1) l3#(x, y, z) => l4#(x, y, z) | z > 0 /\ x = x /\ y = y (2) l4#(x, y, z) => l3#(x, y, z - y - 1) | x = x /\ y = y /\ z = z (3) l4#(x, y, z) => l5#(x, y + 1, z) | x = x /\ y = y /\ z = z (4) l5#(x, y, z) => l3#(x, y, y) | x = x /\ y = y /\ z = z /\ x > y /\ (x = x /\ y = y) ***** We apply the Chaining Processor Processor on D4 = (P4, R UNION R_?, i, c). We chain DPs according to the following mapping: l4#(x, y, z) => l4#(x, y, z - y - 1) | x = x /\ y = y /\ z = z /\ (z - y - 1 > 0 /\ x = x /\ y = y) is obtained by chaining l4#(x, y, z) => l3#(x, y, z - y - 1) | x = x /\ y = y /\ z = z and l3#(x', y', z') => l4#(x', y', z') | z' > 0 /\ x' = x' /\ y' = y' l5#(x, y, z) => l4#(x, y, y) | x = x /\ y = y /\ z = z /\ x > y /\ (x = x /\ y = y) /\ (y > 0 /\ x = x /\ y = y) is obtained by chaining l5#(x, y, z) => l3#(x, y, y) | x = x /\ y = y /\ z = z /\ x > y /\ (x = x /\ y = y) and l3#(x', y', z') => l4#(x', y', z') | z' > 0 /\ x' = x' /\ y' = y' The following DPs were deleted: l4#(x, y, z) => l3#(x, y, z - y - 1) | x = x /\ y = y /\ z = z l5#(x, y, z) => l3#(x, y, y) | x = x /\ y = y /\ z = z /\ x > y /\ (x = x /\ y = y) l3#(x, y, z) => l4#(x, y, z) | z > 0 /\ x = x /\ y = y By chaining, we added 2 DPs and removed 3 DPs. Processor output: { D5 = (P5, R UNION R_?, i, c) }, where: P5. (1) l4#(x, y, z) => l5#(x, y + 1, z) | x = x /\ y = y /\ z = z (2) l4#(x, y, z) => l4#(x, y, z - y - 1) | x = x /\ y = y /\ z = z /\ (z - y - 1 > 0 /\ x = x /\ y = y) (3) l5#(x, y, z) => l4#(x, y, y) | x = x /\ y = y /\ z = z /\ x > y /\ (x = x /\ y = y) /\ (y > 0 /\ x = x /\ y = y) ***** We apply the Graph Processor on D5 = (P5, R UNION R_?, i, c). We compute a graph approximation with the following edges: 1: 3 2: 1 2 3: 1 There are 2 SCCs. Processor output: { D6 = (P6, R UNION R_?, i, c) ; D7 = (P7, R UNION R_?, i, c) }, where: P6. (1) l4#(x, y, z) => l5#(x, y + 1, z) | x = x /\ y = y /\ z = z (2) l5#(x, y, z) => l4#(x, y, y) | x = x /\ y = y /\ z = z /\ x > y /\ (x = x /\ y = y) /\ (y > 0 /\ x = x /\ y = y) P7. (1) l4#(x, y, z) => l4#(x, y, z - y - 1) | x = x /\ y = y /\ z = z /\ (z - y - 1 > 0 /\ x = x /\ y = y) ***** We apply the Chaining Processor Processor on D6 = (P6, R UNION R_?, i, c). We chain DPs according to the following mapping: l5#(x, y, z) => l5#(x, y + 1, y) | x = x /\ y = y /\ z = z /\ x > y /\ (x = x /\ y = y) /\ (y > 0 /\ x = x /\ y = y) /\ (x = x /\ y = y /\ y = y) is obtained by chaining l5#(x, y, z) => l4#(x, y, y) | x = x /\ y = y /\ z = z /\ x > y /\ (x = x /\ y = y) /\ (y > 0 /\ x = x /\ y = y) and l4#(x', y', z') => l5#(x', y' + 1, z') | x' = x' /\ y' = y' /\ z' = z' The following DPs were deleted: l5#(x, y, z) => l4#(x, y, y) | x = x /\ y = y /\ z = z /\ x > y /\ (x = x /\ y = y) /\ (y > 0 /\ x = x /\ y = y) l4#(x, y, z) => l5#(x, y + 1, z) | x = x /\ y = y /\ z = z By chaining, we added 1 DPs and removed 2 DPs. Processor output: { D8 = (P8, R UNION R_?, i, c) }, where: P8. (1) l5#(x, y, z) => l5#(x, y + 1, y) | x = x /\ y = y /\ z = z /\ x > y /\ (x = x /\ y = y) /\ (y > 0 /\ x = x /\ y = y) /\ (x = x /\ y = y /\ y = y) ***** No progress could be made on DP problem D7 = (P7, R UNION R_?, i, c).