| #(mklist(bits.first, 8 - # bits % 8) + bits) % 8 = 0 ∧ 8 < #(mklist(bits.first, 8 - # bits % 8) + bits) ⊦ bits2bytes(bits) = bits2bytes(firstn(8, mklist(bits.first, 8 - # bits % 8) + bits)) + bits2bytes(restn(8, mklist(bits.first, 8 - # bits % 8) + bits)), # bits % 8 = 0, bits = [] |
((8 - # bits % 8) + # bits) % 8 = 0, 8 < (8 - # bits % 8) + # bits ⊦ bits = [], # bits % 8 = 0, bits2bytes(bits) = bits2bytes(firstn(8, mklist(bits.first, 8 - # bits % 8) + bits)) + bits2bytes(restn(8, mklist(bits.first, 8 - # bits % 8) + bits)), 8 + # bits = # bits % 8
Used simplifier rules: ⊦ m + n = n + m;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ 0 + m = m;%n ≤ m ⊦ (m - n) + n0 = n1 ↔ m + n0 = n + n1;%n ≠ 0 ⊦ m % n ≤ n;% ⊦ m < n → n ≠ 0; (forward)% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ # mklist(boolvar, n) = n;% ⊦ #(bits + bits0) = # bits + # bits0;