| 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) |
⊦ bits ≠ [] ∧ ¬ bits.first → bits2uint(bitsinvert(bits)) = 2 ^ n→i(# bits) + ~ bits2int(bits) - 1
¬(bytes2bits(bytes0) ≠ [] ∧ ¬ bytes2bits(bytes0).first), 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)
bytes2bits(bytes0) ≠ [] ∧ ¬ bytes2bits(bytes0).first, bytes2bits(bytes).first ⊦ bytes = [], bytes0 = [], bytes2bits(bytes) + bytes2bits(bytes0) = [], bitsinvert(bytes2bits(bytes)) + bitsinvert(bytes2bits(bytes0)) = [], 256 ^ n→i(# bytes0) = 1 + (2 ^ n→i(# bytes2bits(bytes0)) + ~ bits2int(bytes2bits(bytes0)) - 1) + band(bits2int(bytes2bits(bytes0)), 256 ^ n→i(# bytes0) - 1)
Used terms: bytes2bits(bytes0)