| 2 * (i1 * 2 + j1) + j0 = i0 * 4 + j2, i0 * 4 + j2 < 0, i1 * 2 + j1 < 0, abs(j0) < 2, i0 * 4 + j2 < ~3, abs(j1) < 2, abs(j2) < 4, abs(j2) < abs(2 * j1 + j0), j2 ≤ 0, i0 ≤ 0, j1 ≤ 0, i1 ≤ 0, j0 ≤ 0, 4 ≤ abs(2 * j1 + j0) ⊦ 2 * j1 + j0 = 0, i1 = i0, j0 = ~1 |
Used simplifier rules: nummult-le-02: ⊦ 0 < i ∧ 0 ≤ j → ((* j) ≤ (* i) * i0 ↔ (i + j - 1) / i ≤ i0);% ⊦ i ≠ j → (i ≤ j ↔ i < j); (s)% ⊦ i < 0 → abs(i) = ~ i; (s)% ⊦ ~ i < j ↔ 0 < j + i; (s)% ⊦ (* j) < i0 + (* j0) ↔ j - j0 < i0; (s)% ⊦ i < 0 → (~2 < i ↔ i = ~1); (s)%add-a: ⊦ i + j + i0 = (i + j) + i0; from specification int-basic2%add-c: ⊦ i + j = j + i; from specification int-basic2% ⊦ i + 0 = i; (s)% ⊦ 2 * i = 0 ↔ i = 0; (s)%associativity: ⊦ i * j * j0 = (i * j) * j0; from specification int-mult%commutativity: ⊦ i * j = j * i; from specification int-mult% ⊦ abs(i * j) = abs(i) * abs(j); (s) Used formulas: j0 = 0