1.64/1.66 YES 1.64/1.66 1.64/1.66 DP problem for innermost termination. 1.64/1.66 P = 1.64/1.66 eval_2#(i, j) -> eval_1#(i - 1, j) [j > i - 1] 1.64/1.66 eval_2#(I0, I1) -> eval_2#(I0, I1 + 1) [I1 <= I0 - 1] 1.64/1.66 eval_1#(I2, I3) -> eval_2#(I2, 0) [I2 >= 0] 1.64/1.66 R = 1.64/1.66 eval_2(i, j) -> eval_1(i - 1, j) [j > i - 1] 1.64/1.66 eval_2(I0, I1) -> eval_2(I0, I1 + 1) [I1 <= I0 - 1] 1.64/1.66 eval_1(I2, I3) -> eval_2(I2, 0) [I2 >= 0] 1.64/1.66 1.64/1.66 We use the reverse value criterion with the projection function NU: 1.64/1.66 NU[eval_1#(z1,z2)] = z1 + -1 * 0 1.64/1.66 NU[eval_2#(z1,z2)] = z1 - 1 + -1 * 0 1.64/1.66 1.64/1.66 This gives the following inequalities: 1.64/1.66 j > i - 1 ==> i - 1 + -1 * 0 >= i - 1 + -1 * 0 1.64/1.66 I1 <= I0 - 1 ==> I0 - 1 + -1 * 0 >= I0 - 1 + -1 * 0 1.64/1.66 I2 >= 0 ==> I2 + -1 * 0 > I2 - 1 + -1 * 0 with I2 + -1 * 0 >= 0 1.64/1.66 1.64/1.66 We remove all the strictly oriented dependency pairs. 1.64/1.66 1.64/1.66 DP problem for innermost termination. 1.64/1.66 P = 1.64/1.66 eval_2#(i, j) -> eval_1#(i - 1, j) [j > i - 1] 1.64/1.66 eval_2#(I0, I1) -> eval_2#(I0, I1 + 1) [I1 <= I0 - 1] 1.64/1.66 R = 1.64/1.66 eval_2(i, j) -> eval_1(i - 1, j) [j > i - 1] 1.64/1.66 eval_2(I0, I1) -> eval_2(I0, I1 + 1) [I1 <= I0 - 1] 1.64/1.66 eval_1(I2, I3) -> eval_2(I2, 0) [I2 >= 0] 1.64/1.66 1.64/1.66 The dependency graph for this problem is: 1.64/1.66 0 -> 1.64/1.66 1 -> 0, 1 1.64/1.66 Where: 1.64/1.66 0) eval_2#(i, j) -> eval_1#(i - 1, j) [j > i - 1] 1.64/1.66 1) eval_2#(I0, I1) -> eval_2#(I0, I1 + 1) [I1 <= I0 - 1] 1.64/1.66 1.64/1.66 We have the following SCCs. 1.64/1.66 { 1 } 1.64/1.66 1.64/1.66 DP problem for innermost termination. 1.64/1.66 P = 1.64/1.66 eval_2#(I0, I1) -> eval_2#(I0, I1 + 1) [I1 <= I0 - 1] 1.64/1.66 R = 1.64/1.66 eval_2(i, j) -> eval_1(i - 1, j) [j > i - 1] 1.64/1.66 eval_2(I0, I1) -> eval_2(I0, I1 + 1) [I1 <= I0 - 1] 1.64/1.66 eval_1(I2, I3) -> eval_2(I2, 0) [I2 >= 0] 1.64/1.66 1.64/1.66 We use the reverse value criterion with the projection function NU: 1.64/1.66 NU[eval_2#(z1,z2)] = z1 - 1 + -1 * z2 1.64/1.66 1.64/1.66 This gives the following inequalities: 1.64/1.66 I1 <= I0 - 1 ==> I0 - 1 + -1 * I1 > I0 - 1 + -1 * (I1 + 1) with I0 - 1 + -1 * I1 >= 0 1.64/1.66 1.64/1.66 All dependency pairs are strictly oriented, so the entire dependency pair problem may be removed. 1.64/1.66 EOF