| 0 < abs(2 ^ n→i(# int2bits(~ j)) + j) ∧ abs(2 ^ n→i(# int2bits(~ j)) + j) ≠ 1, 2 ^ n→i(# int2bits(~ j)) + j < 0, sgn(bitsinvert(uint2bits(abs(2 ^ n→i(# int2bits(~ j)) + j) / 2) + (abs(2 ^ n→i(# int2bits(~ j)) + j) % 2 = 1)) +1) = boolvar ', j < 0, 2 ^ n→i(# int2bits(~ j)) + j < 0 ⊦ |
sgn((bitsinvert(uint2bits(~((2 ^ n→i(# int2bits(~ j)) + j) / 2))) + (~1 ≠ (2 ^ n→i(# int2bits(~ j)) + j) % 2)')+1) = boolvar ', j < 0, 2 ^ n→i(# int2bits(~ j)) + j < 0 ⊦ ~1 = 2 ^ n→i(# int2bits(~ j)) + j
Used simplifier rules: ⊦ 0 < ~ i ↔ i < 0;% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ bitsinvert(boolvar ') = (¬ boolvar)';% ⊦ bitsinvert(bits + bits0) = bitsinvert(bits) + bitsinvert(bits0);% ⊦ bits + boolvar = bits + boolvar ';% ⊦ i + j = j + i;% ⊦ i + j + i0 = (i + j) + i0;% ⊦ (* j) = i0 + (* j0) ↔ j - j0 = i0;% ⊦ ~ i = j ↔ i + j = 0;%j ≠ 0 ⊦ ~ i % j = ~(i % j);%j ≠ 0 ⊦ ~ i / j = ~(i / j);% ⊦ i < 0 → abs(i) = ~ i;