| i * i0 = j * j0 ⊦ i * i0 = abs(j) * j0, ∃ i0. i * i0 = abs(j) * j0 |
i * i0 = j * j0, j < 0 ⊦ j0 = 0, ∃ i1. j * j0 + i * i1 = 0
Used simplifier rules: forward-le-02: ⊦ j < i ∧ i ≤ 0 → j < 0; (forward) from specification int-abs%negeq: ⊦ ~ i = j ↔ i + j = 0; from specification int-abs%minus-left: ⊦ ~ i * j = ~(i * j); from specification int-mult%abs-08: ⊦ i < 0 → abs(i) = ~ i; from specification int-abs%lels-01: ⊦ ¬ i ≤ j ↔ j < i; from specification int-abs%abs-18: ⊦ abs(i) = i ↔ 0 ≤ i; from specification int-abs%eq-nonzero: ⊦ i ≠ 0 → (i * j = i * j0 ↔ j = j0); from specification int-mult%commutativity: ⊦ i * j = j * i; from specification int-mult%associativity: ⊦ i * j * j0 = (i * j) * j0; from specification int-mult%neq-not-zero: ⊦ i * j ≠ i * j0 → i ≠ 0; (forward) from specification int-mult