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