| # bits0 % 8 = 0, 8 < # bits0, 8 < # bits + # bits0, ∀ bits1, bits2. # bits2 + # bits1 < # bits + # bits0 → # bits1 % 8 = 0 → bits2 = [] ∨ bits1 = [] ∨ bits2bytes(bits2 + bits1) = bits2bytes(bits2) + bits2bytes(bits1) ⊦ bits0 = [], bits = [], bits2bytes(bits + firstn(# bits0 - 8, bits0)) = bits2bytes(bits) + bits2bytes(firstn(# bits0 - 8, bits0)) |
# bits0 % 8 = 0, 8 < # bits0, 8 < # bits + # bits0, ∀ bits1, bits2. # bits2 + # bits1 < # bits + # bits0 → # bits1 % 8 = 0 → bits2 = [] ∨ bits1 = [] ∨ bits2bytes(bits2 + bits1) = bits2bytes(bits2) + bits2bytes(bits1) ⊦ # firstn(# bits0 - 8, bits0) % 8 = 0, bits0 = [], bits = [], bits2bytes(bits + firstn(# bits0 - 8, bits0)) = bits2bytes(bits) + bits2bytes(firstn(# bits0 - 8, bits0))
Used simplifier rules: ⊦ n < m → m - n ≠ 0;% ⊦ firstn(n, bits) = [] ↔ n = 0;% ⊦ # firstn(n, bits) = n;% ⊦ m + n < m + n0 ↔ n < n0;% ⊦ m < n → ¬ n < m;% ⊦ ¬ m ≤ n ↔ n < m;%n0 ≤ n ⊦ n - n0 < m ↔ n < m + n0;% ⊦ ¬ m < n ↔ n ≤ m;% ⊦ m + n ≤ m ↔ n = 0;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ m + n = n + m; Used terms: firstn(# bits0 - 8, bits0), bits