| n ≤ 8, (m * 8 + 8) % 8 = 0, # bits = m * 8 + n, n < m * 8 + 8, 8 < m * 8 + 8, m * 8 + n ≤ 8, n < 8, n + 1 < m * 8 + 8 ⊦ bits = [], n = 0, i2b(bits2int(bits)) ' = bits2bytes(firstn(8, mklist(bits.first, 8 - n) + bits)) + bits2bytes(restn(n, bits)), 8 + m * 8 + n = n |
# bits = m * 8 + n, n < m * 8 + 7, n < 8, # bits ≤ 8, n < m * 8 + 8 ⊦ m = 0, i2b(bits2int(bits)) ' = bits2bytes(firstn(8, mklist(bits.first, 8 - n) + bits)) + bits2bytes(restn(n, bits)), n = 0, bits = []
Used simplifier rules: ⊦ m < n → n ≠ 0; (forward)%n < n0 ⊦ m + (* n) < m0 + (* n0) ↔ m < m0 + (n0 - n);% ⊦ m0 * m = 0 ↔ m0 = 0 ∨ m = 0;% ⊦ m < m + n ↔ n ≠ 0;% ⊦ m < n → m ≤ n;%n < n0 ⊦ (* n) ≠ m0 + (* n0);% ⊦ m = m + n ↔ n = 0;% ⊦ m + n = n + m;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ m * n = n * m;% ⊦ m0 * m * n = (m0 * m) * n;%n ≠ 0 ⊦ (m + n0 * n) % n = m % n;