| ⊦ bits2int(mklist(boolvar, n) + boolvar ' + bits) = bits2int(boolvar ' + bits) |
bits ≠ [], ¬ (¬ bits.first) ∈ bits0 ⊦ bits2int(bits0 + bits) = bits2int(bits)
Used simplifier rules: bits2int-neg: ⊦ bits2int(true ' + bits) = ~ bits2uint(bitsinvert(true + bits) +1);% ⊦ mklist(boolvar, n) + boolvar ' = boolvar ' + mklist(boolvar, n);% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ ¬ bits + bits0 ≠ [] ↔ bits = [] ∧ bits0 = [];% ⊦ boolvar ' ≠ [];% ⊦ (boolvar ' + bits).first ↔ boolvar;% ⊦ boolvar ∈ mklist(boolvar0, n) → (boolvar ↔ boolvar0); (forward)% ⊦ boolvar + bits = boolvar ' + bits;% ⊦ bitsinvert(true ' + bits) = false + bitsinvert(bits);% ⊦ bitsinvert(bits + bits0) = bitsinvert(bits) + bitsinvert(bits0);% ⊦ bitsinvert(mklist(boolvar, n)) = mklist(¬ boolvar, n);% ⊦ ~ i = ~ j ↔ i = j;% ⊦ ¬ false ∈ mklist(true, n); Used terms: boolvar ' + bits, mklist(boolvar, n)