| ~2147483648 ≤ i, i < 0, band(j, 31) ≤ 31, 0 < band(j, 31) ⊦ band(j, 31) = 0, bits2int(sublist(0, # fillsgn(32, int2bits(i)), mklist(false, i→n(band(j, 31))) + fillsgn(32, int2bits(i)))) = (i i>> j) + bits2uint(true ' + mklist(false, (31 - i→n(band(j, 31))) + 1)), false ∈ int2bits(31).rest |
~2147483648 ≤ i, i < 0, band(j, 31) ≤ 31, 0 < band(j, 31) ⊦ band(j, 31) = 0, bits2int(sublist(0, # fillsgn(32, int2bits(i)), mklist(false, i→n(band(j, 31))) + fillsgn(32, int2bits(i)))) = 2 ^ n→i(31 - i→n(band(j, 31))) * 2 + (i i>> j), false ∈ int2bits(31).rest
Used simplifier rules: band-commutativity: ⊦ band(i, j) = band(j, i);% ⊦ bits2uint(true ' + mklist(false, n)) = 2 ^ n→i(n);% ⊦ bits2uint(bits + false ') = bits2uint(bits) * 2;% ⊦ m + n = n + m;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ bits + [] = bits;% ⊦ mklist(boolvar, 0) = [];%n ≠ 0 ⊦ mklist(false, (* n)) = false ' + mklist(false, n -1);% ⊦ mklist(boolvar, m + n) = mklist(boolvar, m) + mklist(boolvar, n);