| ¬ ¬ maxScale(i / 10) < abs(j) - 1, i % 10 = 0, mkDecimal(i / 10, abs(j) - 1).int = (i / 10) / 10 ^ min(maxScale(i / 10), abs(j) - 1), min(maxScale(i / 10), abs(j) - 1) < 0, ∀ i0, j. i→n(i0) < i→n(i) → true → mkDecimal(i0, j).int = i0 / 10 ^ min(maxScale(i0), abs(j)) ⊦ i = 0, mkDecimal(i / 10, abs(j) - 1).int = i / 10 ^ min(maxScale(i / 10) + 1, abs(j)), j = 0 |
i % 10 = 0, mkDecimal(i / 10, abs(j) - 1).int = (i / 10) / 10 ^ maxScale(i / 10), min(maxScale(i / 10), abs(j) - 1) < 0, maxScale(i / 10) + 1 < abs(j), ∀ i0, j. i→n(i0) < i→n(i) → true → mkDecimal(i0, j).int = i0 / 10 ^ min(maxScale(i0), abs(j)) ⊦ j = 0, i = 0, (i / 10) / 10 ^ maxScale(i / 10) = i / 10 ^ (maxScale(i / 10) + 1)
Used simplifier rules: sub-ls-01: ⊦ i < j - i0 ↔ i + i0 < j; from specification int-abs%min-c: ⊦ min(i, j) = min(j, i); from specification int-min%min-a: ⊦ min(i, min(j, j0)) = min(min(i, j), j0); from specification int-min%Min-left: ⊦ j < i → min(j, i) = j; from specification int-min