| bits.rest + (¬ boolvar)' = boolvar0 + bits0 ∧ bits.rest + (¬ boolvar)' ≠ [], int2bits(i) = bits + boolvar ', 2 < i, 0 < i ⊦ # bits = 1, i = 0, bits = [], bits.first ↔ ¬ boolvar0, (sgn(bits + (¬ boolvar)')[# bits] ↔ ¬ boolvar) ∧ sgn(bits + (¬ boolvar)')[# bits, boolvar] = int2bits(i) |
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)
Used simplifier rules: ⊦ boolvar ∈ boolvar0 ' ↔ boolvar ↔ boolvar0;% ⊦ boolvar ∈ bits + bits0 ↔ ¬ ¬(boolvar ∈ bits ∨ boolvar ∈ bits0);% ⊦ boolvar ' + bits = bits0 → boolvar ∈ bits0; (forward)% ⊦ bits + boolvar ' = bits0 → boolvar ∈ bits0; (forward)% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ bits + boolvar ' ≠ [];% ⊦ boolvar + bits = boolvar ' + bits;