| # int2bits(i / 2) = m + 1, 0 < i, 1 < i, 0 ≤ i0, 0 ≤ i, i0 < 31, (mklist(false, i→n(i0)) + int2bits(i / 2)).first ⊦ m = 0, mklist(false, i→n(i0)) + int2bits(i / 2) = [], bits2uint(true ' + sublist(0, m - 1, (mklist(false, i→n(i0)) + int2bits(i / 2)).rest) + (mklist(false, i→n(i0)) + int2bits(i / 2))[m] ') = bits2int(true ' + sublist(0, m - 1, (mklist(false, i→n(i0)) + int2bits(i / 2)).rest) + (mklist(false, i→n(i0)) + int2bits(i / 2))[m] ') |
⊦ bits ≠ [] → ((bits + bits0).first ↔ bits.first)
mklist(false, i→n(i0)) ≠ [], # int2bits(i / 2) = m + 1, 0 < i, 1 < i, 0 ≤ i0, 0 ≤ i, i0 < 31, mklist(false, i→n(i0)).first ⊦ m = 0, mklist(false, i→n(i0)) + int2bits(i / 2) = [], bits2uint(true ' + sublist(0, m - 1, (mklist(false, i→n(i0)) + int2bits(i / 2)).rest) + (mklist(false, i→n(i0)) + int2bits(i / 2))[m] ') = bits2int(true ' + sublist(0, m - 1, (mklist(false, i→n(i0)) + int2bits(i / 2)).rest) + (mklist(false, i→n(i0)) + int2bits(i / 2))[m] ')
Used simplifier rules: ⊦ mklist(boolvar, m) = [] ↔ m = 0;% ⊦ i→n(i) = 0 ↔ i = 0;% ⊦ mklist(boolvar, 0) = [];% ⊦ [] + bits = bits;% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ int2bits(j) ≠ [];% ⊦ int2bits(j).first ↔ j < 0;%0 < j ⊦ i / (* j) < 0 ↔ i + j ≤ 0;% ⊦ i + (* j) ≤ (* j0) ↔ i ≤ j0 - j;% ⊦ i < 0 ∧ 0 < j → ¬ j ≤ i;% ⊦ i + j + i0 = (i + j) + i0;% ⊦ i + j = j + i; Used terms: int2bits(i / 2), mklist(false, i→n(i0))