| bitsand(false ' + mklist(true, i→n(i)), sgn(bitsinvert(uint2bits(~ j)) +1)) = false ' + bits, j < i, 0 ≤ i, j < 0 ⊦ (j + 1) % 2 ^ i + 2 ^ i = 1 + bits2uint(bits) |
¬ false ∈ bits0, bits ≠ [], bits.first, bitsand(false ' + bits0, bits) = false ' + bits1 ⊦ bits2uint(bits1) = 2 ^ n→i(# bits0) - bits2uint(bitsinvert(bits)) % 2 ^ n→i(# bits0) + 1
bitsand(false ' + mklist(true, i→n(i)), sgn(bitsinvert(uint2bits(~ j)) +1)) = false ' + bits, j < i, 0 ≤ i, j < 0 ⊦ ¬ false ∈ mklist(true, i→n(i)) ∧ sgn(bitsinvert(uint2bits(~ j)) +1) ≠ [] ∧ sgn(bitsinvert(uint2bits(~ j)) +1).first, (j + 1) % 2 ^ i + 2 ^ i = 1 + bits2uint(bits)
bits2uint(bits) = 2 ^ n→i(# mklist(true, i→n(i))) - bits2uint(bitsinvert(sgn(bitsinvert(uint2bits(~ j)) +1))) % 2 ^ n→i(# mklist(true, i→n(i))) + 1, bitsand(false ' + mklist(true, i→n(i)), sgn(bitsinvert(uint2bits(~ j)) +1)) = false ' + bits, j < i, 0 ≤ i, j < 0 ⊦ (j + 1) % 2 ^ i + 2 ^ i = 1 + bits2uint(bits)
Used terms: mklist(true, i→n(i)), sgn(bitsinvert(uint2bits(~ j)) +1), bits