| 10 ≠ 0, i % 10 = 0, mkDecimal(i / 10, abs(j) - 1).int = mkDecimal(i0 / 10, abs(j) - 1).int, mkDecimal(i / 10, abs(j) - 1).scale = mkDecimal(i0 / 10, abs(j) - 1).scale, ∃ j0. i0 = j0 * 10, i→n(i) + i→n(i0) ≤ i→n(i / 10) + i→n(i0 / 10), ∀ i1, i2, j. i→n(i1) + i→n(i2) < i→n(i) + i→n(i0) → mkDecimal(i1, j).scale = mkDecimal(i2, j).scale ∧ mkDecimal(i1, j).int = mkDecimal(i2, j).int → i1 = i2 ⊦ j = 0, i = i0, abs(i) / 10 < abs(i) ∧ abs(i0) / 10 < abs(i0) |
i % 10 = 0, mkDecimal(i / 10, abs(j) - 1).int = mkDecimal(j0, abs(j) - 1).int, mkDecimal(i / 10, abs(j) - 1).scale = mkDecimal(j0, abs(j) - 1).scale, i→n(i) + i→n(j0 * 10) ≤ i→n(i / 10) + i→n(j0), ∀ i1, i2, j. i→n(i1) + i→n(i2) < i→n(i) + i→n(j0 * 10) → mkDecimal(i1, j).scale = mkDecimal(i2, j).scale ∧ mkDecimal(i1, j).int = mkDecimal(i2, j).int → i1 = i2 ⊦ j = 0, i = j0 * 10, abs(i) / 10 < abs(i) ∧ j0 ≠ 0
Used simplifier rules: abs-06: ⊦ 0 < abs(i) ↔ i ≠ 0; from specification int-abs%zero-gr: ⊦ 0 < i → (0 < i * j ↔ 0 < j); from specification int-mult%numls-09: ⊦ j < (* i1) * j ↔ 0 < (i1 - 1) * j; from specification int-mult%abs-eqall: ⊦ abs(i * j) = abs(i) * abs(j); from specification int-mult%commutativity: ⊦ i * j = j * i; from specification int-mult%associativity: ⊦ i * j * j0 = (i * j) * j0; from specification int-mult%one: ⊦ 1 * i = i; from specification int-mult%div-mult-num: j ≠ 0, j0 % j = 0 ⊦ (i * (* j0)) / (* j) = i * j0 / j; from specification int-div