| 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% ⊦ ~ i = j ↔ i + j = 0; (s)% ⊦ ~ i * j = ~(i * j); (s)% ⊦ i < 0 → abs(i) = ~ i; (s)% ⊦ i ≤ j ↔ ¬ j < i; (ss)% ⊦ abs(i) = i ↔ 0 ≤ i; (s)% ⊦ i ≠ 0 → (i * j = i * j0 ↔ j = j0); (s)%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