| n * 8 ≠ # bits, bits.first, # bits2bytes(bits) < n, # bits ≤ 8 * n ⊦ mklist(i2b(~1), n - # bits2bytes(bits)) + bits2bytes(bits) = bits2bytes(mklist(true, n * 8 - # bits) + bits), bits = [], # bits % 8 = 0 ∧ n * 8 ≠ # bits |
# bits < 8 * n, # bits2bytes(bits) < n, bits.first ⊦ # bits % 8 = 0, n * 8 = # bits, bits = [], mklist(i2b(~1), n - # bits2bytes(bits)) + bits2bytes(bits) = bits2bytes(mklist(true, n * 8 - # bits) + bits)
Used simplifier rules: ⊦ m0 * m * n = (m0 * m) * n;% ⊦ m < n → n ≠ 0;% ⊦ m0 * m = 0 ↔ m0 = 0 ∨ m = 0;% ⊦ m < n → n ≠ 0; (forward)% ⊦ m ≠ n → (m ≤ n ↔ m < n);% ⊦ m * n = n * m;