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