| ¬ abs(i) < 2 ^ n→i(# int2bits(i)), int2bits(i) = lastn(# int2bits(i), int2bits(i)), i < 0 ⊦ i + 2 ^ n→i(# int2bits(i)) = 0, i = i % 2 ^ n→i(# int2bits(i)) |
int2bits(i) = lastn(# int2bits(i), int2bits(i)), i < 0, 2 ^ n→i(# int2bits(i)) + i < 0 ⊦ i + 2 ^ n→i(# int2bits(i)) = 0, i = i % 2 ^ n→i(# int2bits(i))
Used simplifier rules: ⊦ i ≠ j → (i ≤ j ↔ i < j);% ⊦ i + j = j + i;% ⊦ ¬ i < j ↔ j ≤ i;% ⊦ ~ i < j ↔ 0 < j + i;% ⊦ i < 0 → abs(i) = ~ i;