| 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 |
bytes2bits(bytes0).first, bits2uint(bitsinvert(bytes2bits(bytes0))) < 2 ^ (8 * n→i(# bytes0)), 0 ≤ bits2uint(bitsinvert(bytes2bits(bytes0))) ⊦ 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 = [];% ⊦ i ≤ j ∧ 0 ≤ i → 0 ≤ j; (forward)% ⊦ i + 1 ≤ j ↔ i < j;% ⊦ i + j = j + i;% ⊦ i + j + i0 = (i + j) + i0;% ⊦ ~1 < i ↔ 0 ≤ i;% ⊦ (* j) < i0 + (* j0) ↔ j - j0 < i0;% ⊦ bitsinvert(bits) = [] ↔ bits = [];