| bits2int(bitsor(sgn(boolvar1 ' + bits0), bits3)) = bits2int(true ' + bits2), bitsor(boolvar1 ' + bits0, bits3) = true ' + bits2, false ∈ bits2, (¬ boolvar1) ∈ bits0, 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(true ' + bits2) * 2 + 1, bits3 = [], ¬ boolvar ∧ ¬ boolvar0, bitsor(sgn(boolvar1 ' + bits0), bits3).first ∧ false ∈ bitsor(sgn(boolvar1 ' + bits0), bits3) |
⊦ bits ≠ [] ∧ bits0 ≠ [] → (bitsor(bits, bits0).first ↔ bits.first ∨ bits0.first)
sgn(boolvar1 ' + bits0) ≠ [] ∧ bits3 ≠ [], bits2int(bitsor(sgn(boolvar1 ' + bits0), bits3)) = bits2int(true ' + bits2), bitsor(boolvar1 ' + bits0, bits3) = true ' + bits2, false ∈ bits2, (¬ boolvar1) ∈ bits0, 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(true ' + bits2) * 2 + 1, bits3 = [], ¬ boolvar ∧ ¬ boolvar0, (sgn(boolvar1 ' + bits0).first ∨ bits3.first) ∧ false ∈ bitsor(sgn(boolvar1 ' + bits0), bits3)
Used simplifier rules: ⊦ sgn(boolvar ' + bits) ≠ [];% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1; Used terms: bits3, sgn(boolvar1 ' + bits0)