| 0 ≤ 2 ^ n→i(# int2bits(~ j)) + j ⊦ j < 0 → bits2int(int2bits(j)) = bits2int(uint2bits(2 ^ n→i(# int2bits(~ j)) + j).rest) |
⊦ 0 < i → bits2int(uint2bits(i).rest) = i - 2 ^ (n→i(# uint2bits(i)) - 1)
¬ 0 < 2 ^ n→i(# int2bits(~ j)) + j, 0 ≤ 2 ^ n→i(# int2bits(~ j)) + j ⊦ j < 0 → bits2int(int2bits(j)) = bits2int(uint2bits(2 ^ n→i(# int2bits(~ j)) + j).rest)
0 < 2 ^ n→i(# int2bits(~ j)) + j, 0 ≤ 2 ^ n→i(# int2bits(~ j)) + j ⊦ j < 0 → bits2int(int2bits(j)) = 2 ^ n→i(# int2bits(~ j)) + j - 2 ^ (n→i(# uint2bits(2 ^ n→i(# int2bits(~ j)) + j)) - 1)
Used terms: 2 ^ n→i(# int2bits(~ j)) + j