| abs(j0) * abs(j0) = abs(j) * abs(i) * abs(i), j0 * j0 = j * i * i, ∃ j0. j0 * j0 = abs(j) ⊦ i = 0, isSquare(j) |
j1 * j1 = abs(j), j0 * j0 = j * i * i, abs(j0) = abs(j1) * abs(i) ⊦ i = 0, isSquare(j)
Used simplifier rules: 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%abs-01: ⊦ abs(abs(i)) = abs(i); from specification int-abs%square-eq: ⊦ i * i = j * j ↔ abs(i) = abs(j); from specification int-mult