| # firstn(8, int2bits(j)) ≤ 8, # int2bits(j) = 8 * i→n(i) + 8, # int2bits(j) % 8 = 0, j < 0, 0 < 2 ^ (i * 8) + j, 0 < j + 2 ^ (i * 8), j + 2 ^ (i * 8 - 1) < 0, 0 < i, 8 < # int2bits(j) ⊦ i2b(bits2int(firstn(8, int2bits(j)))) ' + bits2bytes(restn(8, int2bits(j))) = i2b(~1) ' + (i2b(bits2int(firstn(8, int2bits(j)))) ' + bits2bytes(restn(8, int2bits(j)))).rest, j = 0, i = 0 |
# int2bits(j) = 8 * i→n(i) + 8, # int2bits(j) % 8 = 0, j < 0, 0 < 2 ^ (i * 8) + j, 0 < j + 2 ^ (i * 8), j + 2 ^ (i * 8 - 1) < 0, 0 < i, 8 < # int2bits(j) ⊦ j = 0, i = 0, i2b(bits2int(firstn(8, int2bits(j)))) = i2b(~1), bits2int(firstn(8, int2bits(j))) = ~1
Used simplifier rules: ⊦ i2b(i) ≠ i2b(j) → i ≠ j; (forward)% ⊦ i * j = j * i;% ⊦ i + j = j + i;% ⊦ i + j + i0 = (i + j) + i0;% ⊦ # firstn(n, bits) = n;% ⊦ by ' = by0 ' ↔ by = by0;% ⊦ bytes + bytes0 = bytes1 + bytes0 ↔ bytes = bytes1;% ⊦ (bytes + bytes0) + bytes1 = bytes + bytes0 + bytes1;% ⊦ (by ' + bytes).rest = bytes;