| 0 < i ∧ i ≠ 1, 0 < i, ∀ i0. i→n(i0) < i→n(i) → 0 < i0 → 2 ^ n→i(# uint2bits(i0)) = bits2uint(bitsinvert(uint2bits(i0))) + i0 + 1 ⊦ 2 ^ n→i(#(uint2bits(i / 2) + (i % 2 = 1))) = bits2uint(bitsinvert(uint2bits(i / 2) + (i % 2 = 1))) + i + 1 |
0 < i, ∀ i0. i→n(i0) < i→n(i) → 0 < i0 → 2 ^ n→i(# uint2bits(i0)) = bits2uint(bitsinvert(uint2bits(i0))) + i0 + 1 ⊦ i = 1, 2 ^ (n→i(# uint2bits(i / 2)) + 1) = 1 + bits2uint(bitsinvert(uint2bits(i / 2)) + (i % 2 ≠ 1)') + i
Used simplifier rules: ⊦ bitsinvert(boolvar ') = (¬ boolvar)';% ⊦ bitsinvert(bits + bits0) = bitsinvert(bits) + bitsinvert(bits0);% ⊦ m + n = n + m;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ n→i(m + n) = n→i(m) + n→i(n);% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ # boolvar ' = 0 +1;% ⊦ #(bits + bits0) = # bits + # bits0;% ⊦ bits + boolvar = bits + boolvar ';