| 1 + # bits1 = # bits0 ⊦ # bits0 = 1, bitsand(boolvar ' + bits1, bits0) = (boolvar ∧ bits0.first)' + bitsand(bits1, bits0.rest) |
bits0 = boolvar0 + bits ∧ bits0 ≠ [], 1 + # bits1 = # bits0 ⊦ # bits0 = 1, bitsand(boolvar ' + bits1, bits0) = (boolvar ∧ boolvar0)' + bitsand(bits1, bits)
Used simplifier rules: ⊦ # [] = 0;% ⊦ m + 1 ≠ 0;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ m + n = n + m;%bits ≠ [] ⊦ (boolvar ↔ bits.first) ∧ bits0 = bits.rest ↔ bits = boolvar + bits0; (elim) Used terms: bits0, boolvar0, bits