| ¬(i % 10 = 0 ∧ j ≠ 0 ∧ i ≠ 0), abs(j) < maxScale(i), ∀ i0, j. i→n(i0) < i→n(i) → abs(j) < maxScale(i0) → mkDecimal(i0, j).int = i0 / 10 ^ abs(j) ⊦ mkDecimal(i, j).int = i / 10 ^ abs(j) |
i % 10 = 0, 0 < maxScale(i), ∀ i0, j. i→n(i0) < i→n(i) → abs(j) < maxScale(i0) → mkDecimal(i0, j).int = i0 / 10 ^ abs(j) ⊦ i = 0, mkDecimal(i, 0).int = i
Used simplifier rules: intvalue-zero: ⊦ mkDecimal(0, j).int = 0;%maxScale-zero: ⊦ maxScale(0) = 0;%maxScale-base: ⊦ i % 10 ≠ 0 ∧ i ≠ 0 → maxScale(i) = 0;%forward-le-05: ⊦ i < j ∧ 0 ≤ i → 0 < j; (forward) from specification int-abs%one: ⊦ i / 1 = i; from specification int-div%absls: ⊦ ¬ abs(i) < 0; from specification int-abs