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