| ¬(# int2bits(j) ≤ # bits ∧ int2bits(j) ≠ [] ∧ int2bits(j).first), # bits = 8, int2bits(i) = bits0 + bits, # int2bits(j) < 8 ⊦ lastn(8, fillsgn(8, bitsand(bits0 + bits, int2bits(j)))) = lastn(8, fillsgn(8, bitsand(bits, int2bits(j)))), bitsand(bits, int2bits(j)) = [] |
int2bits(i) = bits0 + bits, # bits = 8, 0 ≤ j, # int2bits(j) < 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 < n → m ≤ n;% ⊦ i ≤ j ∧ 0 ≤ i → 0 ≤ j; (forward)% ⊦ ¬ m < n ↔ n ≤ m;% ⊦ m < n → ¬ n < m;% ⊦ m + n = n + m;% ⊦ (m + n0) + n1 = m + n0 + n1;%n < n0 ⊦ m + (* n) < (* n0) ↔ m < n0 - n;% ⊦ m +1 = m + 1;% ⊦ # bits = 0 ↔ bits = [];% ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward)% ⊦ m < n → n ≠ 0; (forward)% ⊦ m < n ∧ m = n0 → n0 < n; (forward)% ⊦ n < n0 ∧ n0 < n1 → n +1 < n1; (forward)% ⊦ ¬ i < j ↔ j ≤ i;% ⊦ int2bits(j).first ↔ j < 0;% ⊦ int2bits(j) ≠ [];% ⊦ ¬ m ≤ n ↔ n < m;