| # bits = m * 8 + n0, 8 = n1 + n0, # bits ≤ 8 * m, # bits2bytes(bits) ≤ m, bits.first, n0 < 8 ⊦ (i2b(~1) ' + mklist(i2b(~1), m - # bits2bytes(bits))) + bits2bytes(bits) = bits2bytes(mklist(true, n1) + bits), bits = [], n1 = 0, n0 = 0, 8 * m + 8 = # bits |
Used simplifier rules: ⊦ m * n = n * m;% ⊦ m + n = m + n0 ↔ n = n0;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ m + n = n + m;% ⊦ m + n ≤ m ↔ n = 0;