| m + 1 ≠ 0 ∧ int2bits((i - 1) / 2) ≠ [], i→n(j) = m0 + 1, # int2bits((i - 1) / 2) ≤ m, i < ~1, i < 0, 1 < j, 0 < j ⊦ i = ~1, j = 0, bits2uint(firstn(m, mklist(false, m0) + (fillsgn((m + 1)-1, int2bits((i - 1) / 2)) + (i % 2 ≠ 0)))) = bits2int(firstn(m, mklist(false, m0) + fillsgn(m, int2bits((i - 1) / 2)))) |
i→n(j) = m0 + 1, # int2bits((i - 1) / 2) ≤ m, i < ~1, i < 0, 1 < j, 0 < j ⊦ i = ~1, j = 0, bits2uint(firstn(m, mklist(false, m0) + (mklist(true, m - # int2bits((i - 1) / 2)) + int2bits((i - 1) / 2)) + (i % 2 ≠ 0)')) = bits2int(firstn(m, mklist(false, m0) + mklist(true, m - # int2bits((i - 1) / 2)) + int2bits((i - 1) / 2)))
Used simplifier rules: ⊦ m + 1 ≠ 0;% ⊦ int2bits(j) ≠ [];% ⊦ bits + boolvar = bits + boolvar ';% ⊦ i < j → (¬ ¬ j ≤ i ↔ false);% ⊦ ¬ i < j ↔ j ≤ i;% ⊦ i ≤ ~1 ↔ i < 0;% ⊦ i + (* j) ≤ (* j0) ↔ i ≤ j0 - j;% ⊦ i + j = j + i;% ⊦ i + j + i0 = (i + j) + i0;% ⊦ (* i) + i0 - (* j) = (i - j) + i0;% ⊦ i + (j - i0) = i + j - i0;%0 < j ⊦ i / (* j) < 0 ↔ i + j ≤ 0;% ⊦ int2bits(j).first ↔ j < 0;%⊦ # bits ≤ n ∧ bits ≠ [] → fillsgn(n, bits) = mklist(bits.first, n - # bits) + bits;% ⊦ m + n = n + m;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ (m + 1)-1 = m;