| 0 ≤ i ⊦ 2 ^ n→i(# int2bits(i)) = bits2uint(bitsinvert(int2bits(i))) + i + 1 |
⊦ bits ≠ [] ∧ ¬ bits.first → bits2uint(bitsinvert(bits)) = 2 ^ n→i(# bits) + ~ bits2int(bits) - 1
Used simplifier rules: int2bits-not-empty: ⊦ int2bits(j) ≠ [];%int2bits-first-02: ⊦ int2bits(j).first ↔ j < 0;%int2int-inj: ⊦ bits2int(int2bits(i)) = i;%int2bits-not-empty: ⊦ int2bits(j) ≠ [];% ⊦ i + ~ j = i - j;% ⊦ i + j + i0 = (i + j) + i0;% ⊦ i + j = j + i;% ⊦ i - j - i0 = i - j + i0;% ⊦ i + (j - i) = j;% ⊦ i ≤ j → (¬ ¬ j < i ↔ false); Used terms: int2bits(i)