| # 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 |
i < 0 ⊦ band(j, 31) = 0, (i + 1) * 2 ^ abs(band(j, 31)) = i * 2 ^ band(j, 31) + 1 + bits2uint(mklist(true, i→n(band(j, 31))))
Used simplifier rules: ⊦ j < 0 → int2bits(j).first;% ⊦ i→n(i) = 0 ↔ i = 0;% ⊦ int2bits(j) ≠ [];% ⊦ # bits = 0 ↔ bits = [];% ⊦ i - j = i0 ↔ i = i0 + j;% ⊦ bitsinvert(mklist(boolvar, n)) = mklist(¬ boolvar, n);% ⊦ ~ ~ i = i;% ⊦ i * j = j * i;% ⊦ i * j * j0 = (i * j) * j0;% ⊦ ~ i * j = ~(i * j);% ⊦ n→i(i→n(i)) = abs(i);% ⊦ # mklist(boolvar, n) = n;% ⊦ ~ i - j = ~(i + j);% ⊦ j < 0 → bits2uint(bitsinvert(int2bits(j))) = ~ j - 1;