| 65536 * i0 + j < 0, # int2bits(j) ≤ 16, abs(j) < 65536, ~32768 ≤ j, 65536 * i0 + j < ~32768, j ≤ 0, i0 < 0 ⊦ j = 0, s2i(i2s(bits2int(lastn(16, int2bits(65536 * i0 + j))))) = j, i0 = 0, ¬ 32768 ≤ abs(j) ∧ j ≠ 0 |
i0 < 0 ⊦ i0 = 0, s2i(i2s(bits2int(lastn(16, int2bits(65536 * i0 - 32768))))) = ~32768
Used simplifier rules: ⊦ i < 1 ↔ i ≤ 0;% ⊦ 0 < i ∧ 0 ≤ j → ((* i) * i0 < (* j) ↔ i0 < (i + j - 1) / i);% ⊦ # boolvar ' = 0 +1;% ⊦ #(bits + bits0) = # bits + # bits0;% ⊦ sgn(true ' + false ' + bits) = true ' + false ' + bits;% ⊦ sgn(boolvar ' + boolvar ' + bits) = sgn(boolvar ' + bits);% ⊦ (bits + false ')+1 = bits + true;% ⊦ (bits + true ')+1 = bits +1 + false;% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ boolvar + bits = boolvar ' + bits;% ⊦ bitsinvert(false ') = true ';% ⊦ bitsinvert(true ' + bits) = false + bitsinvert(bits);% ⊦ bitsinvert(false ' + bits) = true + bitsinvert(bits);% ⊦ bits + boolvar = bits + boolvar ';% ⊦ boolvar + boolvar0 = boolvar ' + boolvar0 ';% ⊦ uint2bits(1) = false + true;%1 < i ⊦ uint2bits((* i)) = uint2bits(i / 2) + (i % 2 = 1);%i < 0 ⊦ int2bits((* i)) = sgn(bitsinvert(uint2bits(abs(i))) +1);% ⊦ i * j * j0 = (i * j) * j0;% ⊦ i < 0 ∧ 0 ≤ j → i < j;% ⊦ 0 < i → (i * j < 0 ↔ j < 0);% ⊦ i - j < i0 ↔ i < j + i0;%i < 0 ⊦ (* i) + j = j - ~ i;% ⊦ j < i ∧ i ≤ 0 → j < 0; (forward)% ⊦ i ≤ j → (j ≤ i ↔ i = j);% ⊦ i + (* j) ≤ (* j0) ↔ i ≤ j0 - j;% ⊦ i ≤ ~ j ↔ i + j ≤ 0;%i0 ≠ 0, i0 < i ⊦ (* i) ≤ j → (* i0) < j;% ⊦ (* j) < i0 + (* j0) ↔ j - j0 < i0;% ⊦ ~ i < j ↔ 0 < j + i;% ⊦ i < 0 → abs(i) = ~ i;% ⊦ i ≠ j → (i ≤ j ↔ i < j);% ⊦ i + j + i0 = (i + j) + i0;% ⊦ i + j = j + i;% ⊦ i * j = j * i;