| bits2int(bitsxor(bits0, bits2)) = bits2int(bitsor(bitsand(bitsinvert(bits0), bits2), bitsand(bitsinvert(bits2), bits0))), ¬ boolvar0 ∧ boolvar ∨ ¬ boolvar ∧ boolvar0, ∀ bits, bits1. # bits1 < #(bits2 + boolvar ') → true → bits = [] ∨ bits1 = [] ∨ bits2int(bitsxor(bits, bits1)) = bits2int(bitsor(bitsand(bitsinvert(bits), bits1), bitsand(bitsinvert(bits1), bits))) ⊦ bitsxor(bits0, bits2) = [], bits2int(bitsxor(bits0, bits2)) * 2 + 1 = bits2int(bitsor(bitsand(bitsinvert(bits0), bits2), bitsand(bitsinvert(bits2), bits0)) + true '), bits2 = [], bits0 = [], bitsand(bitsinvert(bits2), bits0) = [], bitsand(bitsinvert(bits0), bits2) = [], boolvar0 ↔ boolvar |
⊦ boolvar ∧ bits ≠ [] → bits2int(bits + boolvar ') = bits2int(bits) * 2 + 1
Used simplifier rules: bitsor-empty: ⊦ bits ≠ [] ∧ bits0 ≠ [] → bitsor(bits, bits0) ≠ [];%⊦ bits ≠ [] ∧ bits0 ≠ [] → (bits2int(bits) = bits2int(bits0) ↔ sgn(bits) = sgn(bits0));% ⊦ i + j = i + i0 ↔ j = i0;% ⊦ 0 < i → (i * j = i * j0 ↔ j = j0);% ⊦ i * j * j0 = (i * j) * j0;% ⊦ i * j = j * i;% ⊦ i + j + i0 = (i + j) + i0;% ⊦ i + j = j + i; Used terms: true, bitsor (bitsand(bitsinvert(bits0), bits2), bitsand(bitsinvert(bits2), bits0))