| 0 = 2 ^ i * 2 + ~(2 ^ i * 2), 0 ≤ i, ~(2 ^ i * 2) + 2 ^ i < 0, ~(2 ^ i * 2) < 0, i→n(i + 2) + 1 < # int2bits(~(2 ^ i * 2) - 1) ⊦ |
i→n(i + 2) + 1 < # int2bits(~(2 ^ i * 2 + 1)), 0 ≤ i ⊦
Used simplifier rules: int2bits-not-empty: ⊦ int2bits(j) ≠ [];% ⊦ # bits = 0 ↔ bits = [];% ⊦ m < n → n ≠ 0; (forward)% ⊦ ~ i - j = ~(i + j);% ⊦ 0 < i → (0 < i * j ↔ 0 < j);% ⊦ ~ i < 0 ↔ 0 < i;% ⊦ i ≤ 0 ∧ 0 ≤ j → i ≤ j;% ⊦ 0 < 2 ^ i ↔ 0 ≤ i;% ⊦ i * j * j0 = (i * j) * j0;% ⊦ 1 * i = i;% ⊦ j < (* i1) * j ↔ 0 < (i1 - 1) * j;% ⊦ i + 0 = i;% ⊦ i - j < i0 ↔ i < j + i0;% ⊦ i + ~ j = i - j;% ⊦ i + j = j + i;% ⊦ i + j + i0 = (i + j) + i0;% ⊦ ~ i + i = 0;% ⊦ i * j = j * i;