| ∀ bits1, bits. # bits1 < # bits0 → true → bits = [] ∨ bits1 = [] ∨ bitsand(bits, bits1) = bitsand(bits1, bits) ⊦ bits = bits.first ', bits0 = bits0.first ', bits0 = [], bits = [], bitsand(bits.butlast, bits0.butlast) + (bits.last ∧ bits0.last)' = bitsand(bits0.butlast, bits.butlast) + (bits0.last ∧ bits.last)' |
Used simplifier rules: ⊦ bits ≠ [] → (bits.butlast = [] ↔ bits = bits.first ');%⊦ bits + boolvar ' = bits0 + boolvar0 ' ↔ bits = bits0 ∧ (boolvar ↔ boolvar0);% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ bits ≠ [] → # bits.butlast = # bits - 1;% ⊦ ¬ m ≤ n ↔ n < m;% ⊦ m < 1 ↔ m = 0;% ⊦ # bits = 0 ↔ bits = [];%n0 ≤ n ⊦ n - n0 < m ↔ n < m + n0;% ⊦ m < n + 1 ↔ ¬ n < m;% ⊦ ¬ n < n;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ m + n = n + m; Used terms: bits0.butlast, bits.butlast