| bitsinvert(uint2bits(~((2 ^ n→i(# int2bits(~ j)) + j) / 2))) + true ' ≠ [], ~1 = (2 ^ n→i(# int2bits(~ j)) + j) % 2, ¬ (¬ boolvar) ∈ bitsinvert(uint2bits(~((2 ^ n→i(# int2bits(~ j)) + j) / 2))) + true ', j < 0, 2 ^ n→i(# int2bits(~ j)) + j < 0 ⊦ ~1 = 2 ^ n→i(# int2bits(~ j)) + j |
~1 = (2 ^ n→i(# int2bits(~ j)) + j) % 2, 2 ^ n→i(# int2bits(~ j)) + j < 0, j < 0 ⊦ ~1 = 2 ^ n→i(# int2bits(~ j)) + j, true ∈ uint2bits(~((2 ^ n→i(# int2bits(~ j)) + j) / 2))
Used simplifier rules: ⊦ boolvar ∈ boolvar0 ' ↔ boolvar ↔ boolvar0;% ⊦ boolvar ∈ bitsinvert(bits) ↔ (¬ boolvar) ∈ bits;% ⊦ boolvar ∈ bits + bits0 ↔ ¬ ¬(boolvar ∈ bits ∨ boolvar ∈ bits0);% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ bits + boolvar ' ≠ [];