| 256 * b2i(by0) + band(b2i(by), 255) = i + 256, i < 0, ~129 < i, ∀ bytes0. # bytes0 < #((by0 + []) + by ') → true → # bytes0 = # int2bytes(bytes2int(bytes0)) → bytes0 = int2bytes(bytes2int(bytes0)) ⊦ b2i(by0) * 256 + band(b2i(by), 255) = 1 * 256 + i ∧ band(b2i(by), 255) ≤ 0 ∧ abs(band(b2i(by), 255)) < 256 ∧ i ≤ 0 ∧ abs(i) < 256, by0 ' + by ' = i2b(0) ' + i2b(i) ' |
256 * b2i(by0) + band(b2i(by), 255) = i + 256, i < 0, ~129 < i, ∀ bytes0. # bytes0 < #((by0 + []) + by ') → true → # bytes0 = # int2bytes(bytes2int(bytes0)) → bytes0 = int2bytes(bytes2int(bytes0)) ⊦ by0 ' + by ' = i2b(0) ' + i2b(i) ', by = i2b(0)
Used simplifier rules: i0 ≠ 0, i0 < i ⊦ (* i) < j → (* i0) < j;% ⊦ (* j) < i0 + (* j0) ↔ j - j0 < i0;% ⊦ ~ i < j ↔ 0 < j + i;% ⊦ i < 0 → abs(i) = ~ i;% ⊦ i < j → ¬ j < i;% ⊦ ¬ i ≤ j ↔ j < i;% ⊦ i + j + i0 = (i + j) + i0;% ⊦ 0 ≤ i → band(i, 255) = i % 256;% ⊦ b2i(i2b(0)) = 0;% ⊦ band(i, band(i0, j)) = band(band(i, i0), j);% ⊦ band(255, b2i(by)) ≤ 0 ↔ by = i2b(0);% ⊦ i + j = j + i;% ⊦ band(i, j) = band(j, i);% ⊦ i * j = j * i;