| ∀ bits, bits2, bits3. # bits < # bits1 → bitsand(false ' + bits, true ' + bits2) = false ' + bits3 → 2 ^ n→i(# bits) = 1 + bits2uint(bitsinvert(bits2)) % 2 ^ n→i(# bits) + bits2uint(bits3) ∨ false ∈ bits ⊦ 2 ^ n→i(# bits1) = 1 + bits2uint(bits1), false ∈ bits1 |
⊦ ¬ false ∈ bits ∧ bits ≠ [] → bits2uint(bits) = 2 ^ n→i(# bits) - 1
Used simplifier rules: ⊦ i + (j - i) = j;% ⊦ i + j + i0 = (i + j) + i0;% ⊦ i + j = j + i;% ⊦ # [] = 0;% ⊦ bits2uint([]) = 0; Used terms: bits1