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