| 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) ' |
i * j + j0 = i0 * j + j1, j0 ≤ 0, abs(j0) < j, j1 ≤ 0, abs(j1) < j ⊦ i = i0 ∧ j0 = j1
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) '
Used simplifier rules: ⊦ band(i, j) = band(j, i);% ⊦ i = 1 → i * j = j;% ⊦ i * j * j0 = (i * j) * j0;% ⊦ i * j = j * i;% ⊦ i + j = i + i0 ↔ j = i0;% ⊦ i + j + i0 = (i + j) + i0;% ⊦ i + j = j + i;% ⊦ i2b(band(255, b2i(by))) = by;% ⊦ band(i, band(i0, j)) = band(band(i, i0), j);% ⊦ bytes + bytes0 = bytes1 + bytes0 ↔ bytes = bytes1;% ⊦ by ' = by0 ' ↔ by = by0;% ⊦ (bytes + bytes0) + bytes1 = bytes + bytes0 + bytes1;% ⊦ 0 ≤ i → ¬ band(i, j) < 0; Used terms: b2i(by0), 256, band(b2i(by), 255), 1, i