| bitsinvert(bits0) ≠ [] ∧ (bitsinvert(bits0).first ↔ ¬ ¬ boolvar), bitsinvert(bits0) = boolvar0 ' + bits, # sgn(bitsinvert(bits0)) = # sgn(bits0), (¬ boolvar0) ∈ bits0 ⊦ boolvar0 ↔ ¬ boolvar, bits0 = [], #((¬ boolvar)' + bitsinvert(bits0)) = # sgn(boolvar ' + bits0) |
# sgn(bitsinvert(bits0)) = # sgn(bits0), bitsinvert(bits0) = boolvar0 ' + bits, (¬ boolvar0) ∈ bits0 ⊦ 1 + # bits0 = # sgn(bitsinvert(bits0).first ' + bits0), bits0 = [], boolvar0 ↔ ¬ bitsinvert(bits0).first
Used simplifier rules: inv-len: ⊦ # bitsinvert(bits) = # bits;%inv-empty: ⊦ bitsinvert(bits) = [] ↔ bits = [];% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ # boolvar ' = 0 +1;% ⊦ #(bits + bits0) = # bits + # bits0;