| maxScale(i) ≤ abs(j), ∀ i0, j. i→n(i0) < i→n(i) → maxScale(i0) ≤ abs(j) → abs(j) = mkDecimal(i0, j).scale + maxScale(i0) ⊦ abs(j) = mkDecimal(i, j).scale + maxScale(i) |
⊦ ¬(i % 10 = 0 ∧ j ≠ 0 ∧ i ≠ 0) → mkDecimal(i, j).scale = abs(j)
¬ ¬(i % 10 = 0 ∧ j ≠ 0 ∧ i ≠ 0), maxScale(i) ≤ abs(j), ∀ i0, j. i→n(i0) < i→n(i) → maxScale(i0) ≤ abs(j) → abs(j) = mkDecimal(i0, j).scale + maxScale(i0) ⊦ abs(j) = mkDecimal(i, j).scale + maxScale(i)
Used simplifier rules: maxScale-le-zero: ⊦ maxScale(i) ≤ 0 ↔ maxScale(i) = 0;%maxScale-zero: ⊦ maxScale(0) = 0;%maxScale-base: ⊦ i % 10 ≠ 0 ∧ i ≠ 0 → maxScale(i) = 0;%eq: ⊦ i = i + j ↔ j = 0; from specification int-basic2%add-a: ⊦ i + j + i0 = (i + j) + i0; from specification int-basic2%add-c: ⊦ i + j = j + i; from specification int-basic2 Used terms: j, i