| 0 ≤ 2 ^ (8 * n→i(# bytes0)) + bits2int(bytes2bits(bytes0)), bits2int(bytes2bits(bytes0)) < 0 ⊦ bits2int(bytes2bits(bytes0)) + 2 ^ (8 * n→i(# bytes0)) = bits2uint(bytes2bits(bytes0)), bytes2bits(bytes) + bytes2bits(bytes0) = [], bytes0 = [], bytes = [], bytes2bits(bytes).first |
⊦ bits.first ∧ bits ≠ [] → bits2int(bits) = ~ bits2uint(bitsinvert(bits) +1)
bytes2bits(bytes0).first ∧ bytes2bits(bytes0) ≠ [], 0 ≤ 2 ^ (8 * n→i(# bytes0)) + ~ bits2uint(bitsinvert(bytes2bits(bytes0)) +1), ~ bits2uint(bitsinvert(bytes2bits(bytes0)) +1) < 0 ⊦ ~ bits2uint(bitsinvert(bytes2bits(bytes0)) +1) + 2 ^ (8 * n→i(# bytes0)) = bits2uint(bytes2bits(bytes0)), bytes2bits(bytes) + bytes2bits(bytes0) = [], bytes0 = [], bytes = [], bytes2bits(bytes).first
Used simplifier rules: bytes2bits-empty-01: ⊦ bytes2bits(bytes) = [] ↔ bytes = [];% ⊦ i + j = j + i;%bits ≠ [] ⊦ bits2int(bits) < 0 → bits.first; Used terms: bytes2bits(bytes0)