| false ∈ true ' + bitsinvert(bitsinvert(bits) +1), uint2bits(~ i) = false ' + true ' + bits, true ∈ bits, i < 0 ⊦ bits2uint(false ' + (true ' + bitsinvert(bitsinvert(bits) +1))+1) + i = 0 |
uint2bits(~ i) = false ' + true ' + bits, true ∈ bits, i < 0, true ∈ bitsinvert(bits) +1 ⊦ bits2uint(uint2bits(~ i)) + i = 0
Used simplifier rules: ⊦ true ∈ bits → bitsinvert(bitsinvert(bits) +1) +1 = bits;%⊦ true ∈ bits0 → (bits + bitsinvert(bits0))+1 = bits + bitsinvert(bits0) +1;% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ false ∈ bitsinvert(bits) ↔ true ∈ bits;% ⊦ boolvar ∈ boolvar0 ' ↔ boolvar ↔ boolvar0;% ⊦ boolvar ∈ bits + bits0 ↔ ¬ ¬(boolvar ∈ bits ∨ boolvar ∈ bits0);