| bits.rest + (¬ boolvar)' = boolvar0 ' + bits0, int2bits(i) = bits + boolvar ', 0 < i, 2 < i ⊦ bits.first ↔ ¬ boolvar0, bits = [], i = 0, # bits = 1, (sgn(bits + (¬ boolvar)')[# bits] ↔ ¬ boolvar) ∧ sgn(bits + (¬ boolvar)')[# bits, boolvar] = int2bits(i), ¬(¬ boolvar ↔ boolvar0) ∧ ¬ (¬ boolvar) ∈ bits0, ¬ boolvar0 ∈ bits.rest ∧ ¬(boolvar0 ↔ ¬ boolvar) |
bits = boolvar1 + bits1, bits1 + (¬ boolvar)' = boolvar0 ' + bits0, int2bits(i) = bits + boolvar ', 0 < i, 2 < i ⊦ boolvar1 ↔ ¬ boolvar0, bits = [], i = 0, # bits = 1, (sgn(bits + (¬ boolvar)')[# bits] ↔ ¬ boolvar) ∧ sgn(bits + (¬ boolvar)')[# bits, boolvar] = int2bits(i), ¬(¬ boolvar ↔ boolvar0) ∧ ¬ (¬ boolvar) ∈ bits0, ¬ boolvar0 ∈ bits1 ∧ ¬(boolvar0 ↔ ¬ boolvar)
Used simplifier rules: ⊦ bits ≠ [] → ( (boolvar ↔ bits.first) ∧ bits0 = bits.rest ↔ bits = boolvar + bits0); (elim) Used terms: bits, boolvar1, bits1