| ⊦ ~1 i>> 16 = ~1 |
Used simplifier rules: intshiftrsign-num: ⊦ (* i) i>> (* j) = (# int2bits(i) ≤ i→n(band(j, 31)) ⊃ (i < 0 ⊃ ~1;0) ;bits2int (sublist(0, # int2bits(i) - i→n(band(j, 31)), int2bits(i))) );%band-num: ⊦ band((* i), (* j)) = bits2int(bitsand(int2bits(i), int2bits(j)));%and-rec-10: ⊦ bitsand(bits + boolvar ' + false ', bits0 + boolvar1 ' + true ') = bitsand(bits + boolvar, bits0 + boolvar1) + false ';%and-two: ⊦ bitsand(boolvar ' + boolvar0 ', boolvar1 ' + boolvar2 ') = (boolvar ∧ boolvar1)' + (boolvar0 ∧ boolvar2)';%band-associativity: ⊦ band(i, band(i0, j)) = band(band(i, i0), j);%band-commutativity: ⊦ band(i, j) = band(j, i);% ⊦ bits2uint(true ') = 1;% ⊦ bits2uint(bits + false ') = bits2uint(bits) * 2;% ⊦ bits2int(false ' + bits) = bits2uint(bits);%1 < i ⊦ uint2bits((* i)) = uint2bits(i / 2) + (i % 2 = 1);%0 ≤ i ⊦ int2bits((* i)) = uint2bits(i);% ⊦ # boolvar ' = 0 +1;% ⊦ sgn(true ' + true ') = true ';% ⊦ bits + boolvar = bits + boolvar ';% ⊦ (bits + false ')+1 = bits + true;% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ boolvar + bits = boolvar ' + bits;% ⊦ bitsinvert(true ') = false ';% ⊦ bitsinvert(false ' + bits) = true + bitsinvert(bits);% ⊦ boolvar + boolvar0 = boolvar ' + boolvar0 ';% ⊦ uint2bits(1) = false + true;%i < 0 ⊦ int2bits((* i)) = sgn(bitsinvert(uint2bits(abs(i))) +1);