/export/starexec/sandbox2/solver/bin/starexec_run_Itrs /export/starexec/sandbox2/benchmark/theBenchmark.itrs /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES DP problem for innermost termination. P = cond2#(false, x, y) -> diff#(x + 1, y) cond2#(true, I0, I1) -> diff#(I0, I1 + 1) cond1#(false, I2, I3) -> cond2#(I2 > I3, I2, I3) diff#(I6, I7) -> cond1#(I6 = I7, I6, I7) R = cond2(false, x, y) -> 1 + diff(x + 1, y) cond2(true, I0, I1) -> 1 + diff(I0, I1 + 1) cond1(false, I2, I3) -> cond2(I2 > I3, I2, I3) cond1(true, I4, I5) -> 0 diff(I6, I7) -> cond1(I6 = I7, I6, I7) This problem is converted using chaining, where edges between chained DPs are removed. DP problem for innermost termination. P = cond2#(false, x, y) -> diff#(x + 1, y) cond2#(true, I0, I1) -> diff#(I0, I1 + 1) cond1#(false, I2, I3) -> cond2#(I2 > I3, I2, I3) diff#(I6, I7) -> cond1#(I6 = I7, I6, I7) diff#(I6, I7) -> cond2#(I6 > I7, I6, I7) [not(I6 = I7)] diff#(I6, I7) -> diff#(I6, I7 + 1) [not(I6 = I7), I6 > I7] diff#(I6, I7) -> diff#(I6 + 1, I7) [not(I6 = I7), not(I6 > I7)] cond1#(false, I2, I3) -> diff#(I2 + 1, I3) [not(I2 > I3)] cond1#(false, I2, I3) -> diff#(I2, I3 + 1) [I2 > I3] R = cond2(false, x, y) -> 1 + diff(x + 1, y) cond2(true, I0, I1) -> 1 + diff(I0, I1 + 1) cond1(false, I2, I3) -> cond2(I2 > I3, I2, I3) cond1(true, I4, I5) -> 0 diff(I6, I7) -> cond1(I6 = I7, I6, I7) The dependency graph for this problem is: 0 -> 6, 5, 4, 3 1 -> 6, 5, 4, 3 2 -> 3 -> 4 -> 5 -> 5, 3, 4 6 -> 6, 3, 4 7 -> 3, 4, 5, 6 8 -> 3, 4, 5 Where: 0) cond2#(false, x, y) -> diff#(x + 1, y) 1) cond2#(true, I0, I1) -> diff#(I0, I1 + 1) 2) cond1#(false, I2, I3) -> cond2#(I2 > I3, I2, I3) 3) diff#(I6, I7) -> cond1#(I6 = I7, I6, I7) 4) diff#(I6, I7) -> cond2#(I6 > I7, I6, I7) [not(I6 = I7)] 5) diff#(I6, I7) -> diff#(I6, I7 + 1) [not(I6 = I7), I6 > I7] 6) diff#(I6, I7) -> diff#(I6 + 1, I7) [not(I6 = I7), not(I6 > I7)] 7) cond1#(false, I2, I3) -> diff#(I2 + 1, I3) [not(I2 > I3)] 8) cond1#(false, I2, I3) -> diff#(I2, I3 + 1) [I2 > I3] We have the following SCCs. { 6 } { 5 } DP problem for innermost termination. P = diff#(I6, I7) -> diff#(I6, I7 + 1) [not(I6 = I7), I6 > I7] R = cond2(false, x, y) -> 1 + diff(x + 1, y) cond2(true, I0, I1) -> 1 + diff(I0, I1 + 1) cond1(false, I2, I3) -> cond2(I2 > I3, I2, I3) cond1(true, I4, I5) -> 0 diff(I6, I7) -> cond1(I6 = I7, I6, I7) We use the reverse value criterion with the projection function NU: NU[diff#(z1,z2)] = z1 + -1 * z2 This gives the following inequalities: not(I6 = I7)/\I6 > I7 ==> I6 + -1 * I7 > I6 + -1 * (I7 + 1) with I6 + -1 * I7 >= 0 All dependency pairs are strictly oriented, so the entire dependency pair problem may be removed. DP problem for innermost termination. P = diff#(I6, I7) -> diff#(I6 + 1, I7) [not(I6 = I7), not(I6 > I7)] R = cond2(false, x, y) -> 1 + diff(x + 1, y) cond2(true, I0, I1) -> 1 + diff(I0, I1 + 1) cond1(false, I2, I3) -> cond2(I2 > I3, I2, I3) cond1(true, I4, I5) -> 0 diff(I6, I7) -> cond1(I6 = I7, I6, I7) We use the extended value criterion with the projection function NU: NU[diff#(x0,x1)] = -x0 + x1 This gives the following inequalities: not(I6 = I7)/\not(I6 > I7) ==> -I6 + I7 > -(I6 + 1) + I7 with -I6 + I7 >= 0 All dependency pairs are strictly oriented, so the entire dependency pair problem may be removed.