| int2bits(i % 2) ≠ [], i < 0, i < ~1 ⊦ # int2bits(i % 2) - 1 = # [] ∧ (∀ n. n < # int2bits(i % 2) - 1 → (int2bits(i % 2).butlast[n] ↔ ([])[n])), int2bits((i - 1) / 2) + int2bits(i % 2) = [], i→n(j) + # int2bits(i % 2) = 0, bits2int(firstn(# int2bits((i - 1) / 2) + 1, mklist(true, i→n(j)) + int2bits((i - 1) / 2) + int2bits(i % 2).butlast)) = bits2int(firstn(# int2bits((i - 1) / 2), mklist(true, i→n(abs(j) - 1)) + int2bits((i - 1) / 2))), j = 0 |
⊦ i ≤ 0 → # int2bits(i % 2) = 1
Used simplifier rules: ⊦ i < j → ¬ j < i;% ⊦ ¬ i ≤ j ↔ j < i;% ⊦ m + 1 ≠ 0;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ m + n = n + m;% ⊦ int2bits(j) ≠ [];% ⊦ i < 0 ∧ 0 ≤ j → i ≤ j;% ⊦ # [] = 0;% ⊦ ¬ n < 0; Used terms: i