| 0 ≤ 2 ∧ 0 ≤ 8 ∧ 0 ≤ n→i(# bytes0), bytes2bits(bytes).first ⊦ bytes = [], bytes0 = [], bytes2bits(bytes) + bytes2bits(bytes0) = [], bitsinvert(bytes2bits(bytes)) + bitsinvert(bytes2bits(bytes0)) = [], 1 + band(bits2int(bytes2bits(bytes0)), 256 ^ n→i(# bytes0) - 1) + bits2uint(bitsinvert(bytes2bits(bytes0))) + (2 ^ 8) ^ n→i(# bytes0) * bits2uint(bitsinvert(bytes2bits(bytes))) = (bits2uint(bitsinvert(bytes2bits(bytes))) + 1) * 256 ^ n→i(# bytes0) |
bytes2bits(bytes).first ⊦ bytes = [], bytes0 = [], bytes2bits(bytes) + bytes2bits(bytes0) = [], bitsinvert(bytes2bits(bytes)) + bitsinvert(bytes2bits(bytes0)) = [], 256 ^ n→i(# bytes0) = 1 + bits2uint(bitsinvert(bytes2bits(bytes0))) + band(bits2int(bytes2bits(bytes0)), 256 ^ n→i(# bytes0) - 1)
Used simplifier rules: ⊦ 0 ≤ n→i(n);% ⊦ i + j = j + i;% ⊦ i + j + i0 = (i + j) + i0;% ⊦ i * j = j * i;% ⊦ i * j * j0 = (i * j) * j0;% ⊦ 1 * i = i;% ⊦ (i + j) * i0 = j0 + j * i0 ↔ i * i0 = j0;