| 0 ≤ i, j < 0, j0 < 0, 0 < 2 ^ i + j0, j * 2 ^ i + j0 ≤ 0 ⊦ # uint2bits(~(j * 2 ^ i + j0)) = # int2bits(~ j) + i→n(i) |
~(j * 2 ^ i + j0) = ~ j * 2 ^ i + ~ j0, 0 ≤ i, j < 0, j0 < 0, 0 < 2 ^ i + j0, j * 2 ^ i + j0 ≤ 0 ⊦ # uint2bits(~(j * 2 ^ i + j0)) = # int2bits(~ j) + i→n(i)
Used simplifier rules: ⊦ i * j = j * i;% ⊦ i + j = j + i;% ⊦ ~ i * j = ~(i * j);% ⊦ i * j * j0 = (i * j) * j0;% ⊦ ~ i + ~ j = ~(i + j);% ⊦ i + j + i0 = (i + j) + i0;% ⊦ ~ i = ~ j ↔ i = j; Used formulas: ~(j * 2 ^ i + j0) = ~ j * 2 ^ i + ~ j0