| true ∈ bits0 ↔ (∃ bits2, bits1. bitsinvert(bits0) +1 = bitsinvert(bits2) + true ' + bits1 ∧ ¬ true ∈ bits1 ∧ bits0 = bits2 + true ' + bits1), true ∈ bits0, 0 < bits2uint(false ' + bitsinvert(bits0) +1) ⊦ sgn(sgn(true ' + bitsinvert(bitsinvert(bits0) +1)) +1) = sgn(true ' + bits0) |
0 < bits2uint(false ' + bitsinvert(bits) + true ' + bits1) ⊦ sgn(sgn(true ' + bits + false ' + bitsinvert(bits1)) +1) = sgn(true ' + bits + true ' + bits1), true ∈ bits1
Used simplifier rules: ⊦ true ∈ bitsinvert(bits) ↔ false ∈ bits;%⊦ ¬ boolvar ∈ bits → (boolvar ∈ boolvar0 ' + bits ↔ boolvar ↔ boolvar0);% ⊦ boolvar ∈ bits + bits0 ↔ ¬ ¬(boolvar ∈ bits ∨ boolvar ∈ bits0);% ⊦ bitsinvert(bitsinvert(bits)) = bits;% ⊦ bits + bits0 = bits + bits1 ↔ bits0 = bits1;% ⊦ false ' +1 = true ';% ⊦ ¬ true ∈ bits0 → (bits + bitsinvert(bits0))+1 = bits +1 + bits0;% ⊦ (bits + false ' + bits0)+1 = bits + (false ' + bits0)+1;% ⊦ boolvar + bits = boolvar ' + bits;% ⊦ bitsinvert(true ' + bits) = false + bitsinvert(bits);% ⊦ bitsinvert(bits + bits0) = bitsinvert(bits) + bitsinvert(bits0);% ⊦ bits = bits0 + boolvar ' + bits1 → boolvar ∈ bits; (forward)% ⊦ bits = bits0 + boolvar ' + bits1 → boolvar ∈ bits;% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ ¬ boolvar ∈ bits → bits ≠ bits0 + boolvar ' + bits1;