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