| # mklist(false, i→n(band(j, 31))) ≠ 0 ∧ # int2bits(i) ≠ 0 ∧ ¬ int2bits(i).first ⊦ bits2uint(int2bits(i)) * 2 ^ n→i(# mklist(false, i→n(band(j, 31)))) + bits2uint(mklist(false, i→n(band(j, 31)))) = i * 2 ^ band(j, 31) |
0 < i ⊦ band(j, 31) = 0, i = 0, 2 ^ abs(band(j, 31)) = 2 ^ band(j, 31)
Used simplifier rules: ⊦ i < j ∧ 0 ≤ i → 0 < j; (forward)% ⊦ i ≠ j → (i ≤ j ↔ i < j);% ⊦ i ≠ 0 → (i * j = i * j0 ↔ j = j0);% ⊦ i * j = j * i;% ⊦ i * j * j0 = (i * j) * j0;% ⊦ i * j ≠ i * j0 → i ≠ 0; (forward)% ⊦ i ≤ j ∧ 0 ≤ i → 0 ≤ j; (forward)% ⊦ 0 ≤ j → bits2uint(int2bits(j)) = j;% ⊦ ¬ i < j ↔ j ≤ i;% ⊦ int2bits(j).first ↔ j < 0;% ⊦ i→n(i) = 0 ↔ i = 0;% ⊦ int2bits(j) ≠ [];% ⊦ # bits = 0 ↔ bits = [];% ⊦ i + j = j + i;% ⊦ i + j + i0 = (i + j) + i0;% ⊦ i + 0 = i;% ⊦ n→i(i→n(i)) = abs(i);% ⊦ # mklist(boolvar, n) = n;% ⊦ bits2uint(mklist(false, n)) = 0;