| ∀ bits, bits1. # bits1 < # true ' → true → bits = [] ∨ bits1 = [] ∨ bits2int(bitsxor(bits, bits1)) = bits2int(bitsor(bitsand(bitsinvert(bits), bits1), bitsand(bitsinvert(bits1), bits))) ⊦ bits = [], ~1 = bits2int(bits) + bits2int(bitsor(bitsinvert(bits), false ')) |
⊦ bits ≠ [] ∧ bits0 = false ' → bitsor(bits, bits0) = bits
Used simplifier rules: ⊦ bitsinvert(bits) = [] ↔ bits = [];% ⊦ bits ≠ [] → bits2int(bitsinvert(bits)) = ~ bits2int(bits) - 1;% ⊦ ~ i - j = ~(i + j);% ⊦ i + ~ j = i - j;% ⊦ i - j + i = ~ j;% ⊦ i + j + i0 = (i + j) + i0;% ⊦ i + j = j + i; Used terms: false ', bitsinvert(bits)