| ¬ j < 0, j1 * j1 = j, j0 * j0 = j * i * i, abs(j0) = abs(j1) * abs(i) ⊦ i = 0, ∃ j0. j0 * j0 = j, 0 < j0 * j0 ∧ j < 0 |
abs(j0) = abs(j1) * abs(i) ⊦ i = 0, ∃ j. abs(j) = abs(j1)
Used simplifier rules: square-lez: ⊦ ¬ i * i < 0; from specification int-mult%commutativity: ⊦ i * j = j * i; from specification int-mult%associativity: ⊦ i * j * j0 = (i * j) * j0; from specification int-mult%abs-eqall: ⊦ abs(i * j) = abs(i) * abs(j); from specification int-mult%square-eq: ⊦ i * i = j * j ↔ abs(i) = abs(j); from specification int-mult