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