| j < 32, i < 0, 0 < j ⊦ bits2int(int2bits(i) + mklist(false, i→n(j))) = i * 2 ^ j, j = 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(j)) ≠ 0 ∧ # int2bits(i) ≠ 0 ∧ int2bits(i).first, j < 32, i < 0, 0 < j ⊦ ~(2 ^ n→i(# mklist(false, i→n(j))) * bits2uint(bitsinvert(int2bits(i)))) - bits2uint(bitsinvert(mklist(false, i→n(j)))) + 1 = i * 2 ^ j, j = 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(j)), int2bits(i)