| # bits = i→n(i) + 1, int2bits(j) = bits0 + bits, i→n(i) < # bits, 0 < i, i→n(i) < # bits0 + # bits ⊦ i→n(i) = # bits0 + # bits, bits = [], bits2int(bitsand(bits, false ' + mklist(true, i→n(i)))) = bits2uint(bits.rest) |
bits = boolvar + bits1, # bits = i→n(i) + 1, int2bits(j) = bits0 + bits, i→n(i) < # bits, 0 < i, i→n(i) < # bits0 + # bits ⊦ i→n(i) = # bits0 + # bits, bits = [], bits2int(bitsand(bits, false ' + mklist(true, i→n(i)))) = bits2uint(bits1)
Used simplifier rules: bits ≠ [] ⊦ (boolvar ↔ bits.first) ∧ bits0 = bits.rest ↔ bits = boolvar + bits0; (elim) Used terms: bits, boolvar, bits1