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