| ⊦ # bits0 ≠ 0 ∧ # bits ≠ 0 ∧ bits.first → bits2int(bits + bits0) = ~(2 ^ n→i(# bits0) * bits2uint(bitsinvert(bits))) - bits2uint(bitsinvert(bits0)) + 1 |
bits.first ⊦ ~1 = 2 ^ n→i(# bits0) * bits2uint(bitsinvert(bits)) + bits2uint(bitsinvert(bits0)) + bits2int(bits + bits0), bits = [], bits0 = []
Used simplifier rules: ⊦ # bits = 0 ↔ bits = [];% ⊦ i + j = j + i;% ⊦ i + j + i0 = (i + j) + i0;% ⊦ (* j) = i0 + (* j0) ↔ j - j0 = i0;% ⊦ ~ i = j ↔ i + j = 0;% ⊦ ~ i - j = ~(i + j);