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