| (bytes2bits(bytes) + bytes2bits(bytes0)).first ∧ bytes2bits(bytes) + bytes2bits(bytes0) ≠ [], (bytes2bits(bytes) + bytes2bits(bytes0)).first ⊦ bytes0 = [], bytes = [], ~ bits2uint(bitsinvert(bytes2bits(bytes) + bytes2bits(bytes0)) +1) = bits2int(bytes2bits(bytes)) * 256 ^ n→i(# bytes0) + band(bits2int(bytes2bits(bytes0)), 256 ^ n→i(# bytes0) - 1) |
(bytes2bits(bytes) + bytes2bits(bytes0)).first ⊦ bytes2bits(bytes) + bytes2bits(bytes0) = [], bytes0 = [], bytes = [], bits2uint((bitsinvert(bytes2bits(bytes)) + bitsinvert(bytes2bits(bytes0)))+1) + bits2int(bytes2bits(bytes)) * 256 ^ n→i(# bytes0) + band(bits2int(bytes2bits(bytes0)), 256 ^ n→i(# bytes0) - 1) = 0
Used simplifier rules: ⊦ ~ i = j ↔ i + j = 0;% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ bitsinvert(bits + bits0) = bitsinvert(bits) + bitsinvert(bits0);