| bitsand(false ' + bits0, bits) = false ' + bits1, bits.first ⊦ bits = [], 2 ^ n→i(# bits0) = bits2uint(bits1) + bits2uint(bitsinvert(bits)) % 2 ^ n→i(# bits0) + 1, false ∈ bits0 |
bits = boolvar + bits2, bitsand(false ' + bits0, bits) = false ' + bits1, boolvar ⊦ bits = [], 2 ^ n→i(# bits0) = bits2uint(bits1) + bits2uint(bitsinvert(bits)) % 2 ^ n→i(# bits0) + 1, false ∈ bits0
Used simplifier rules: bits ≠ [] ⊦ (boolvar ↔ bits.first) ∧ bits0 = bits.rest ↔ bits = boolvar + bits0; (elim) Used terms: bits, boolvar, bits2