| sgn(boolvar ' + bits0) = boolvar0 ' + boolvar0 ' + bits1, ∀ boolvar, bits1. sgn(bits0) ≠ boolvar ' + boolvar ' + bits1 ⊦ bits0.first ↔ boolvar, bits0 = [], ¬ boolvar0 ∈ bits0 ∧ ¬(boolvar0 ↔ boolvar) |
bits0 = boolvar1 + bits, sgn(boolvar ' + bits0) = boolvar0 ' + boolvar0 ' + bits1, ∀ boolvar, bits1. sgn(bits0) ≠ boolvar ' + boolvar ' + bits1 ⊦ boolvar1 ↔ boolvar, bits0 = [], ¬ boolvar0 ∈ bits0 ∧ ¬(boolvar0 ↔ boolvar)
Used simplifier rules: bits ≠ [] ⊦ (boolvar ↔ bits.first) ∧ bits0 = bits.rest ↔ bits = boolvar + bits0; (elim) Used terms: bits0, boolvar1, bits