| ¬(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))) +1) = boolvar ', j < 0, 2 ^ n→i(# int2bits(~ j)) + j < 0 ⊦ |
~1 = 2 ^ n→i(# int2bits(~ j)) + j, j < 0 ⊦
Used simplifier rules: uint2bits-one: ⊦ uint2bits(1) = false + true;% ⊦ boolvar ' = boolvar0 ' ↔ boolvar ↔ boolvar0;% ⊦ sgn(true ' + true ') = true ';% ⊦ bits + boolvar = bits + boolvar ';% ⊦ (bits + false ')+1 = bits + true;% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ boolvar + bits = boolvar ' + bits;% ⊦ bitsinvert(true ') = false ';% ⊦ bitsinvert(false ' + bits) = true + bitsinvert(bits);% ⊦ boolvar + boolvar0 = boolvar ' + boolvar0 ';% ⊦ i < j ∧ i = i0 → i0 < j; (forward)% ⊦ (* j) = i0 + (* j0) ↔ j - j0 = i0;% ⊦ ~ i = j ↔ i + j = 0;% ⊦ i < j → (¬ ¬ j ≤ i ↔ false);% ⊦ ¬ i < j ↔ j ≤ i;% ⊦ i + j = j + i;% ⊦ i + j + i0 = (i + j) + i0;% ⊦ 0 < ~ i ↔ i < 0;% ⊦ i < 0 → abs(i) = ~ i;