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