| # bits ≤ n * 8, bits.first, # bits2bytes(bits) < n, # bits ≤ 8 * (n - 1) ⊦ bits = [], mklist(i2b(~1), n - # bits2bytes(bits)) + bits2bytes(bits) = bits2bytes(mklist(true, n * 8 - # bits) + bits), # bits % 8 = 0 ∧ n * 8 ≠ # bits |
n * 8 ≠ # bits, # bits ≤ n * 8, bits.first, # bits2bytes(bits) < n, # bits ≤ 8 * (n - 1) ⊦ bits = [], mklist(i2b(~1), n - # bits2bytes(bits)) + bits2bytes(bits) = bits2bytes(mklist(true, n * 8 - # bits) + bits), # bits % 8 = 0 ∧ n * 8 ≠ # bits
Used simplifier rules: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward)% ⊦ n0 ≤ n → n * m - n0 * m = (n - n0) * m;% ⊦ m * 0 = 0;% ⊦ m0 * m * n = (m0 * m) * n;% ⊦ m * n = n * m;% ⊦ mklist(boolvar, 0) = [];% ⊦ [] + bits = bits;% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ bytes = bytes0 + bytes ↔ bytes0 = [];% ⊦ mklist(by, m) = [] ↔ m = 0;% ⊦ n < m → m - n ≠ 0;% ⊦ (bytes + bytes0) + bytes1 = bytes + bytes0 + bytes1;%0 ≠ m ⊦ (* m) * n ≤ m * n0 ↔ n ≤ n0;% ⊦ m < n → n ≠ 0;% ⊦ m < 1 ↔ m = 0;% ⊦ ¬ m ≤ n ↔ n < m;% ⊦ m ≤ m;%n0 ≤ n ⊦ m ≤ n - n0 ↔ m + n0 ≤ n;% ⊦ m + n ≤ m ↔ n = 0;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ m + n = n + m; Used formulas: n * 8 ≠ # bits