| 2 * 2 ^ (31 - band(j, 31)) = 2 ^ (32 - band(j, 31)), # int2bits(i) ≤ 32, ~2147483648 ≤ i, i < 0, band(j, 31) ≤ 31, 0 < band(j, 31) ⊦ band(j, 31) = 0, bits2int(firstn(32, mklist(false, i→n(band(j, 31))) + fillsgn(32, int2bits(i)))) = bits2int(firstn(32, mklist(true, i→n(band(j, 31))) + fillsgn(32, int2bits(i)))) + 2 ^ (32 - band(j, 31)), false ∈ int2bits(31).rest |
⊦ m ≤ # bits + # bits0 ∧ # bits ≤ m → firstn(m, bits + bits0) = bits + firstn(m - # bits, bits0)
32 ≤ # mklist(false, i→n(band(j, 31))) + # fillsgn(32, int2bits(i)) ∧ # mklist(false, i→n(band(j, 31))) ≤ 32, 2 * 2 ^ (31 - band(j, 31)) = 2 ^ (32 - band(j, 31)), # int2bits(i) ≤ 32, ~2147483648 ≤ i, i < 0, band(j, 31) ≤ 31, 0 < band(j, 31) ⊦ band(j, 31) = 0, bits2int(mklist(false, i→n(band(j, 31))) + firstn(32 - # mklist(false, i→n(band(j, 31))), fillsgn(32, int2bits(i)))) = bits2int(firstn(32, mklist(true, i→n(band(j, 31))) + fillsgn(32, int2bits(i)))) + 2 ^ (32 - band(j, 31)), false ∈ int2bits(31).rest
Used simplifier rules: band-commutativity: ⊦ band(i, j) = band(j, i);%band-associativity: ⊦ band(i, band(i0, j)) = band(band(i, i0), j);%band-ls-zero-01: ⊦ ¬ band(j, 31) < 0;% ⊦ # bits ≤ n → # fillsgn(n, bits) = n;% ⊦ # mklist(boolvar, n) = n;% ⊦ ¬ m ≤ n ↔ n < m;% ⊦ ¬ m + n < m;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ m + n = n + m;% ⊦ ¬ i ≤ j ↔ j < i;%0 ≤ i ⊦ i→n(i) ≤ (* m) ↔ i ≤ n→i(m);%j0 ≠ 0, j ≤ j0 ⊦ i ≤ (* j) → i ≤ (* j0); Used terms: fillsgn(32, int2bits(i)), mklist(false, i→n(band(j, 31))), 32