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