| bytes2bits(bytes).first ⊦ bitsinvert(bytes2bits(bytes)) + bitsinvert(byte2bits(by)) = [], bytes2bits(bytes) + byte2bits(by) = [], bytes = [], 255 = band(b2i(by), 255) + bits2uint(bitsinvert(byte2bits(by))) |
⊦ bits ≠ [] ∧ bits.first → bits2uint(bitsinvert(bits)) = ~ bits2int(bits) - 1
¬(byte2bits(by) ≠ [] ∧ byte2bits(by).first), bytes2bits(bytes).first ⊦ bitsinvert(bytes2bits(bytes)) + bitsinvert(byte2bits(by)) = [], bytes2bits(bytes) + byte2bits(by) = [], bytes = [], 255 = band(b2i(by), 255) + bits2uint(bitsinvert(byte2bits(by)))
Used simplifier rules: byte2bits-value: ⊦ bits2int(byte2bits(by)) = b2i(by);%byte2bits-empty: ⊦ byte2bits(by) ≠ [];%byte2bits-first: ⊦ byte2bits(by).first ↔ b2i(by) < 0;% ⊦ ~ i - j = ~(i + j);% ⊦ i + ~ j = i - j;% ⊦ i + j + i0 = (i + j) + i0;% ⊦ i + j = j + i;% ⊦ i - j = i0 ↔ i = i0 + j;% ⊦ i < 0 → band(i, 255) = (i + 1) % 256 + 255;% ⊦ (b2i(by) + 1) % 256 = b2i(by) + 1;% ⊦ band(i, band(i0, j)) = band(band(i, i0), j);% ⊦ band(i, j) = band(j, i);% ⊦ i + j = i + i0 ↔ j = i0; Used terms: byte2bits(by)