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