| 0 < j, ∀ i1, i0. i→n(i1) < i→n(j * 10) → 0 ≤ i1 → mkDecimal(sqrt(mkDecimal(i1 * i1, 2 * abs(i0)).int), mkDecimal(i1 * i1, 2 * abs(i0)).scale / 2) = mkDecimal(i1, i0) ⊦ j = 0, i0 = 0, mkDecimal(sqrt(mkDecimal((j * j) * 10, 2 * abs(i0) - 1).int), mkDecimal((j * j) * 10, 2 * abs(i0) - 1).scale / 2) = mkDecimal(j * 10, i0) |
⊦ i % 10 = 0 ∧ j ≠ 0 ∧ i ≠ 0 → mkDecimal(i, j).int = mkDecimal(i / 10, abs(j) - 1).int
((j * j) * 10) % 10 = 0 ∧ 2 * abs(i0) - 1 ≠ 0 ∧ (j * j) * 10 ≠ 0, 0 < j, ∀ i1, i0. i→n(i1) < i→n(j * 10) → 0 ≤ i1 → mkDecimal(sqrt(mkDecimal(i1 * i1, 2 * abs(i0)).int), mkDecimal(i1 * i1, 2 * abs(i0)).scale / 2) = mkDecimal(i1, i0) ⊦ j = 0, i0 = 0, mkDecimal(sqrt(mkDecimal(((j * j) * 10) / 10, abs(2 * abs(i0) - 1) - 1).int), mkDecimal((j * j) * 10, 2 * abs(i0) - 1).scale / 2) = mkDecimal(j * 10, i0)
Used simplifier rules: mod-zero-num: i0 % j = 0, j ≠ 0 ⊦ (i * (* i0)) % (* j) = 0; from specification int-div%associativity: ⊦ i * j * j0 = (i * j) * j0; from specification int-mult%commutativity: ⊦ i * j = j * i; from specification int-mult%sub-eq: ⊦ i - j = i0 ↔ i = i0 + j; from specification int-abs%add-a: ⊦ i + j + i0 = (i + j) + i0; from specification int-basic2%add-c: ⊦ i + j = j + i; from specification int-basic2%neq-two: ⊦ 2 * i ≠ 1; from specification int-mult%zero-eq: ⊦ i * j = 0 ↔ i = 0 ∨ j = 0; from specification int-mult Used terms: 2 * abs(i0) - 1, (j * j) * 10