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