| ∃ bits0, bits1. int2bits(i) = bits0 + bits1 ∧ # bits1 = 8, 8 ≤ # int2bits(i) ⊦ bitsand(lastn(8, int2bits(i)), int2bits(j)) = [], lastn(8, fillsgn(8, bitsand(int2bits(i), int2bits(j)))) = lastn(8, fillsgn(8, bitsand(lastn(8, int2bits(i)), int2bits(j)))) |
int2bits(i) = bits0 + bits, # bits = 8 ⊦ bitsand(bits, int2bits(j)) = [], lastn(8, fillsgn(8, bitsand(bits0 + bits, int2bits(j)))) = lastn(8, fillsgn(8, bitsand(bits, int2bits(j))))
Used simplifier rules: ⊦ m ≤ m + n;% ⊦ (m + n0) + n1 = m + n0 + n1;%n < n0 ⊦ (* n) ≠ m0 + (* n0);% ⊦ m + n = n + m;% ⊦ n = # bits → lastn(n, bits0 + bits) = bits;% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ #(bits + bits0) = # bits + # bits0;%0 < n ⊦ (* n) ≤ m → m ≠ 0; (forward)