| i % 10 = 0, abs(j) ≤ maxScale(i / 10), ∀ i0, j. i→n(i0) < i→n(i) → abs(j) < maxScale(i0) → mkDecimal(i0, j).int = i0 / 10 ^ abs(j) ⊦ j = 0, mkDecimal(i / 10, abs(j) - 1).int = i / 10 ^ abs(j), i = 0 |
mkDecimal(i / 10, abs(j) - 1).int = (i / 10) / 10 ^ abs(abs(j) - 1), i % 10 = 0, abs(j) ≤ maxScale(i / 10), ∀ i0, j. i→n(i0) < i→n(i) → abs(j) < maxScale(i0) → mkDecimal(i0, j).int = i0 / 10 ^ abs(j) ⊦ j = 0, mkDecimal(i / 10, abs(j) - 1).int = i / 10 ^ abs(j), i = 0
Used simplifier rules: abs-abs: ⊦ j ≠ 0 → abs(abs(j) - 1) = abs(j) - 1; from specification int-abs%sub-ls: ⊦ i - j < i0 ↔ i < j + i0; from specification int-abs%succ-02: ⊦ i < j + 1 ↔ i ≤ j; from specification int-abs%lels-01: ⊦ ¬ i ≤ j ↔ j < i; from specification int-abs%lenls: ⊦ i ≤ j → ¬ j < i; 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%labs: ⊦ i→n(i) < i→n(j) ↔ abs(i) < abs(j); from specification intnat%abs: j ≠ 0 ⊦ abs(i / j) = abs(i) / abs(j); from specification int-div%lels: ⊦ ¬ i < j ↔ j ≤ i; from specification int-abs%abs-div10-le: ⊦ abs(i) ≤ abs(i) / 10 ↔ i = 0; from specification int-div Used terms: i / 10, abs(j) - 1