| bits2int(bitsor(sgn(boolvar1 ' + bits0), bits3)) = bits2int(bitsor(boolvar1 ' + bits0, bits3)), bitsor(boolvar1 ' + bits0, bits3).first, (¬ boolvar1) ∈ bits0, false ∈ bitsor(boolvar1 ' + bits0, bits3), boolvar ∨ boolvar0, ∀ bits, bits1. # bits1 < #(bits3 + boolvar0 ') → true → bits ≠ [] ∧ bits1 ≠ [] → bits2int(bitsor(sgn(bits), bits1)) = bits2int(bitsor(bits, bits1)) ⊦ bits2int(bitsor(sgn(boolvar1 ' + bits0), bits3) + true ') = bits2int(bitsor(boolvar1 ' + bits0, bits3)) * 2 + 1, bits3 = [], bitsor(boolvar1 ' + bits0, bits3) = [], ¬ boolvar ∧ ¬ boolvar0, bitsor(sgn(boolvar1 ' + bits0), bits3).first ∧ false ∈ bitsor(sgn(boolvar1 ' + bits0), bits3) |
bitsor(boolvar1 ' + bits0, bits3) = boolvar2 + bits2, bits2int(bitsor(sgn(boolvar1 ' + bits0), bits3)) = bits2int(bitsor(boolvar1 ' + bits0, bits3)), boolvar2, (¬ boolvar1) ∈ bits0, false ∈ bitsor(boolvar1 ' + bits0, bits3), boolvar ∨ boolvar0, ∀ bits, bits1. # bits1 < #(bits3 + boolvar0 ') → true → bits ≠ [] ∧ bits1 ≠ [] → bits2int(bitsor(sgn(bits), bits1)) = bits2int(bitsor(bits, bits1)) ⊦ bits2int(bitsor(sgn(boolvar1 ' + bits0), bits3) + true ') = bits2int(bitsor(boolvar1 ' + bits0, bits3)) * 2 + 1, bits3 = [], bitsor(boolvar1 ' + bits0, bits3) = [], ¬ boolvar ∧ ¬ boolvar0, bitsor(sgn(boolvar1 ' + bits0), bits3).first ∧ false ∈ bitsor(sgn(boolvar1 ' + bits0), bits3)
Used simplifier rules: bits ≠ [] ⊦ (boolvar ↔ bits.first) ∧ bits0 = bits.rest ↔ bits = boolvar + bits0; (elim) Used terms: bitsor(boolvar1 ' + bits0, bits3), boolvar2, bits2