| ¬(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(bytes).first, bytes2bits(bytes0).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: bytes2bits-empty-01: ⊦ bytes2bits(bytes) = [] ↔ bytes = [];