| 1 + # bits1 = # bits0 ⊦ # bits0 = 1, bitsxor(boolvar ' + bits1, bits0) = (¬(boolvar ↔ bits0.first))' + bitsxor(bits1, bits0.rest) |
bits0 = boolvar0 + bits ∧ bits0 ≠ [], 1 + # bits1 = # bits0 ⊦ # bits0 = 1, bitsxor(boolvar ' + bits1, bits0) = (¬(boolvar ↔ boolvar0))' + bitsxor(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