| bytes2bits(bytes).first, 0 ≤ b2i(by) ⊦ bitsinvert(bytes2bits(bytes)) + bitsinvert(byte2bits(by)) = [], bytes2bits(bytes) + byte2bits(by) = [], bytes = [], 255 = bits2uint(bitsinvert(byte2bits(by))) + b2i(by) |
⊦ bits ≠ [] ∧ ¬ bits.first → bits2uint(bitsinvert(bits)) = 2 ^ n→i(# bits) + ~ bits2int(bits) - 1
Used simplifier rules: byte2bits-empty: ⊦ byte2bits(by) ≠ [];%byte2bits-first: ⊦ byte2bits(by).first ↔ b2i(by) < 0;%byte2bits-value: ⊦ bits2int(byte2bits(by)) = b2i(by);%byte2bits-length: ⊦ # byte2bits(by) = 8;% ⊦ i ≤ j → (¬ ¬ j < i ↔ false);% ⊦ i + ~ j = i - j;% ⊦ i + j + i0 = (i + j) + i0;% ⊦ i + j = j + i;% ⊦ i - i1 - j = i - i1 + j;% ⊦ (* i) - j + (* i0) = i - i0 - j;% ⊦ i + (j - i) = j; Used terms: byte2bits(by)