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