| # bits2 + 1 = # bits, ∀ boolvar0, boolvar, bits1, bits0. # bits0 < # bits → # bits1 = # bits0 → bits0 = [] ∨ bitsand(boolvar ' + bits1, boolvar0 ' + bits0) = (boolvar ∧ boolvar0)' + bitsand(bits1, bits0) ⊦ # bits = 1, bitsand(boolvar ' + bits2 + boolvar1 ', boolvar0 ' + bits) = (boolvar ∧ boolvar0)' + bitsand(bits2, bits.butlast) + (boolvar1 ∧ bits.last)', bits = [] |
bits = bits3 + boolvar2 ', # bits2 + 1 = # bits, ∀ boolvar0, boolvar, bits1, bits0. # bits0 < # bits → # bits1 = # bits0 → bits0 = [] ∨ bitsand(boolvar ' + bits1, boolvar0 ' + bits0) = (boolvar ∧ boolvar0)' + bitsand(bits1, bits0) ⊦ # bits = 1, bitsand(boolvar ' + bits2 + boolvar1 ', boolvar0 ' + bits) = (boolvar ∧ boolvar0)' + bitsand(bits2, bits3) + (boolvar1 ∧ boolvar2)', bits = []
Used simplifier rules: bits ≠ [] ⊦ (boolvar ↔ bits.last) ∧ bits0 = bits.butlast ↔ bits = bits0 + boolvar '; (elim) Used terms: bits, boolvar2, bits3