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