| i < 0, i < ~1 ⊦ bits = [], sgn(true ' + (false ' + bitsinvert(bits))+1) = true ' + false ' + sgn(true ' + (false ' + bitsinvert(bits))+1).rest.rest, ∃ bits. sgn(bitsinvert(uint2bits(~ i)) +1) = true ' + false ' + bits |
i < 0, i < ~1 ⊦ true ∈ bits, bits = [], sgn(true ' + (false ' + bitsinvert(bits))+1) = true ' + false ' + sgn(true ' + (false ' + bitsinvert(bits))+1).rest.rest, ∃ bits. sgn(bitsinvert(uint2bits(~ i)) +1) = true ' + false ' + bits
Used simplifier rules: ⊦ true ∈ bits0 → (bits + bitsinvert(bits0))+1 = bits + bitsinvert(bits0) +1;% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ sgn(true ' + false ' + bits) = true ' + false ' + bits;% ⊦ (boolvar ' + bits).rest = bits;% ⊦ bits + bits0 = bits + bits1 ↔ bits0 = bits1; Used formulas: true ∈ bits