| j < 0, # int2bits(j) < # int2bits(0 - j) ⊦ j = 0, 0 - j = 2 ^ n→i(# int2bits(j) - 1), band(j, 2 ^ n→i(# int2bits(j)) - 1) = bits2uint(int2bits(j)) |
j < 0, # int2bits(j) < # int2bits(~ j) ⊦ j + 2 ^ n→i(# int2bits(j) - 1) = 0, j = 0, band(j, 2 ^ n→i(# int2bits(j)) - 1) = bits2uint(int2bits(j))
Used simplifier rules: ⊦ int2bits(j) ≠ [];% ⊦ # bits = 0 ↔ bits = [];% ⊦ j < i ∧ i ≤ 0 → j < 0; (forward)% ⊦ m < n → n ≠ 0; (forward)% ⊦ ~ i = j ↔ i + j = 0;% ⊦ 0 - i = ~ i;