1.10/1.16 YES 1.10/1.16 1.10/1.16 DP problem for innermost termination. 1.10/1.16 P = 1.10/1.16 g#(true, x, y, z) -> f#(x > z, x, y, z + 1) 1.10/1.16 g#(true, I0, I1, I2) -> f#(I0 > I2, I0, I1 + 1, I2) 1.10/1.16 f#(true, I3, I4, I5) -> g#(I3 > I4, I3, I4, I5) 1.10/1.16 R = 1.10/1.16 g(true, x, y, z) -> f(x > z, x, y, z + 1) 1.10/1.16 g(true, I0, I1, I2) -> f(I0 > I2, I0, I1 + 1, I2) 1.10/1.16 f(true, I3, I4, I5) -> g(I3 > I4, I3, I4, I5) 1.10/1.16 1.10/1.16 This problem is converted using chaining, where edges between chained DPs are removed. 1.10/1.16 1.10/1.16 DP problem for innermost termination. 1.10/1.16 P = 1.10/1.16 g#(true, x, y, z) -> f#(x > z, x, y, z + 1) 1.10/1.16 g#(true, I0, I1, I2) -> f#(I0 > I2, I0, I1 + 1, I2) 1.10/1.16 f#(true, I3, I4, I5) -> f_1#(I3, I4, I5) 1.10/1.16 f_1#(I3, I4, I5) -> g#(I3 > I4, I3, I4, I5) 1.10/1.16 f_1#(I3, I4, I5) -> f#(I3 > I5, I3, I4 + 1, I5) [I3 > I4] 1.10/1.16 f_1#(I3, I4, I5) -> f_1#(I3, I4 + 1, I5) [I3 > I4, I3 > I5] 1.10/1.16 f_1#(I3, I4, I5) -> f#(I3 > I5, I3, I4, I5 + 1) [I3 > I4] 1.10/1.16 f_1#(I3, I4, I5) -> f_1#(I3, I4, I5 + 1) [I3 > I4, I3 > I5] 1.10/1.16 g#(true, I0, I1, I2) -> f_1#(I0, I1 + 1, I2) [I0 > I2] 1.10/1.16 g#(true, x, y, z) -> f_1#(x, y, z + 1) [x > z] 1.10/1.16 R = 1.10/1.16 g(true, x, y, z) -> f(x > z, x, y, z + 1) 1.10/1.16 g(true, I0, I1, I2) -> f(I0 > I2, I0, I1 + 1, I2) 1.10/1.16 f(true, I3, I4, I5) -> g(I3 > I4, I3, I4, I5) 1.10/1.16 1.10/1.16 The dependency graph for this problem is: 1.10/1.16 0 -> 1.10/1.16 1 -> 1.10/1.16 2 -> 7, 6, 5, 4, 3 1.10/1.16 3 -> 1.10/1.16 4 -> 1.10/1.16 5 -> 7, 6, 5, 3, 4 1.10/1.16 6 -> 1.10/1.16 7 -> 7, 3, 4, 5, 6 1.10/1.16 8 -> 3, 4, 5, 6, 7 1.10/1.16 9 -> 3, 4, 5, 6, 7 1.10/1.16 Where: 1.10/1.16 0) g#(true, x, y, z) -> f#(x > z, x, y, z + 1) 1.10/1.16 1) g#(true, I0, I1, I2) -> f#(I0 > I2, I0, I1 + 1, I2) 1.10/1.16 2) f#(true, I3, I4, I5) -> f_1#(I3, I4, I5) 1.10/1.16 3) f_1#(I3, I4, I5) -> g#(I3 > I4, I3, I4, I5) 1.10/1.16 4) f_1#(I3, I4, I5) -> f#(I3 > I5, I3, I4 + 1, I5) [I3 > I4] 1.10/1.16 5) f_1#(I3, I4, I5) -> f_1#(I3, I4 + 1, I5) [I3 > I4, I3 > I5] 1.10/1.16 6) f_1#(I3, I4, I5) -> f#(I3 > I5, I3, I4, I5 + 1) [I3 > I4] 1.10/1.16 7) f_1#(I3, I4, I5) -> f_1#(I3, I4, I5 + 1) [I3 > I4, I3 > I5] 1.10/1.16 8) g#(true, I0, I1, I2) -> f_1#(I0, I1 + 1, I2) [I0 > I2] 1.10/1.16 9) g#(true, x, y, z) -> f_1#(x, y, z + 1) [x > z] 1.10/1.16 1.10/1.16 We have the following SCCs. 1.10/1.16 { 5, 7 } 1.10/1.16 1.10/1.16 DP problem for innermost termination. 1.10/1.16 P = 1.10/1.16 f_1#(I3, I4, I5) -> f_1#(I3, I4 + 1, I5) [I3 > I4, I3 > I5] 1.10/1.16 f_1#(I3, I4, I5) -> f_1#(I3, I4, I5 + 1) [I3 > I4, I3 > I5] 1.10/1.16 R = 1.10/1.16 g(true, x, y, z) -> f(x > z, x, y, z + 1) 1.10/1.16 g(true, I0, I1, I2) -> f(I0 > I2, I0, I1 + 1, I2) 1.10/1.16 f(true, I3, I4, I5) -> g(I3 > I4, I3, I4, I5) 1.10/1.16 1.10/1.16 We use the reverse value criterion with the projection function NU: 1.10/1.16 NU[f_1#(z1,z2,z3)] = z1 + -1 * z2 1.10/1.16 1.10/1.16 This gives the following inequalities: 1.10/1.16 I3 > I4/\I3 > I5 ==> I3 + -1 * I4 > I3 + -1 * (I4 + 1) with I3 + -1 * I4 >= 0 1.10/1.16 I3 > I4/\I3 > I5 ==> I3 + -1 * I4 >= I3 + -1 * I4 1.10/1.16 1.10/1.16 We remove all the strictly oriented dependency pairs. 1.10/1.16 1.10/1.16 DP problem for innermost termination. 1.10/1.16 P = 1.10/1.16 f_1#(I3, I4, I5) -> f_1#(I3, I4, I5 + 1) [I3 > I4, I3 > I5] 1.10/1.16 R = 1.10/1.16 g(true, x, y, z) -> f(x > z, x, y, z + 1) 1.10/1.16 g(true, I0, I1, I2) -> f(I0 > I2, I0, I1 + 1, I2) 1.10/1.16 f(true, I3, I4, I5) -> g(I3 > I4, I3, I4, I5) 1.10/1.16 1.10/1.16 We use the reverse value criterion with the projection function NU: 1.10/1.16 NU[f_1#(z1,z2,z3)] = z1 + -1 * z3 1.10/1.16 1.10/1.16 This gives the following inequalities: 1.10/1.16 I3 > I4/\I3 > I5 ==> I3 + -1 * I5 > I3 + -1 * (I5 + 1) with I3 + -1 * I5 >= 0 1.10/1.16 1.10/1.16 All dependency pairs are strictly oriented, so the entire dependency pair problem may be removed. 1.10/4.14 EOF