| dec_i.scale = dec_j.scale, dec_j.scale < mkDecimal(dec_i.int * 10 ^ dec_j.scale + dec_j.int * 10 ^ dec_j.scale, 2 * dec_j.scale).scale, maxScale(dec_i.int * 10 ^ dec_j.scale + dec_j.int * 10 ^ dec_j.scale) ≤ 2 * abs(dec_j.scale) ⊦ dec_i.int + dec_j.int = 0 |
⊦ maxScale(i) ≤ abs(j) → mkDecimal(i, j).scale = abs(j) - maxScale(i)
maxScale(dec_i.int * 10 ^ dec_j.scale + dec_j.int * 10 ^ dec_j.scale) ≤ abs(2 * dec_j.scale), dec_i.scale = dec_j.scale, dec_j.scale < abs(2 * dec_j.scale) - maxScale(dec_i.int * 10 ^ dec_j.scale + dec_j.int * 10 ^ dec_j.scale), maxScale(dec_i.int * 10 ^ dec_j.scale + dec_j.int * 10 ^ dec_j.scale) ≤ 2 * abs(dec_j.scale) ⊦ dec_i.int + dec_j.int = 0
Used simplifier rules: abs-eqall: ⊦ abs(i * j) = abs(i) * abs(j); from specification int-mult%associativity: ⊦ i * j * j0 = (i * j) * j0; from specification int-mult%commutativity: ⊦ i * j = j * i; from specification int-mult%lels-01: ⊦ ¬ i ≤ j ↔ j < i; from specification int-abs%lenls: ⊦ i ≤ j → ¬ j < i; from specification int-abs Used terms: 2 * dec_j.scale, dec_i.int * 10 ^ dec_j.scale + dec_j.int * 10 ^ dec_j.scale