| bytes2bits(bytes).first ⊦ bitsinvert(bytes2bits(bytes)) + bitsinvert(byte2bits(by)) = [], bytes2bits(bytes) + byte2bits(by) = [], bytes = [], ~1 = bits2uint(bitsinvert(bytes2bits(bytes)) + bitsinvert(byte2bits(by))) + bits2int(bytes2bits(bytes)) * 256 + band(b2i(by), 255) |
⊦ bits.first ∧ bits ≠ [] → bits2int(bits) = ~ bits2uint(bitsinvert(bits) +1)
bytes2bits(bytes).first ∧ bytes2bits(bytes) ≠ [], bytes2bits(bytes).first ⊦ bitsinvert(bytes2bits(bytes)) + bitsinvert(byte2bits(by)) = [], bytes2bits(bytes) + byte2bits(by) = [], bytes = [], ~1 = bits2uint(bitsinvert(bytes2bits(bytes)) + bitsinvert(byte2bits(by))) + ~ bits2uint(bitsinvert(bytes2bits(bytes)) +1) * 256 + band(b2i(by), 255)
Used simplifier rules: bytes2bits-empty-01: ⊦ bytes2bits(bytes) = [] ↔ bytes = []; Used terms: bytes2bits(bytes)