| i < 0 ⊦ bits2int(int2bits(i) + mklist(false, i→n(band(j, 31)))) = i * 2 ^ band(j, 31), band(j, 31) = 0 |
⊦ # bits0 ≠ 0 ∧ # bits ≠ 0 ∧ bits.first → bits2int(bits + bits0) = ~(2 ^ n→i(# bits0) * bits2uint(bitsinvert(bits))) - bits2uint(bitsinvert(bits0)) + 1
# mklist(false, i→n(band(j, 31))) ≠ 0 ∧ # int2bits(i) ≠ 0 ∧ int2bits(i).first, i < 0 ⊦ ~(2 ^ n→i(# mklist(false, i→n(band(j, 31)))) * bits2uint(bitsinvert(int2bits(i)))) - bits2uint(bitsinvert(mklist(false, i→n(band(j, 31))))) + 1 = i * 2 ^ band(j, 31), band(j, 31) = 0
Used simplifier rules: ⊦ # mklist(boolvar, n) = n;% ⊦ i→n(i) = 0 ↔ i = 0;% ⊦ # bits = 0 ↔ bits = [];% ⊦ int2bits(j) ≠ [];% ⊦ j < 0 → int2bits(j).first; Used terms: mklist(false, i→n(band(j, 31))), int2bits(i)