| n = n0 + # bits0, # bits0 ≤ n, # bits0 = 1 + # bits1, # bits1 < n, # bits1 < # bits0, n ≤ # bits2 + # bits0, # bits1 < # bits2 + # bits0, # bits0 ≤ n ⊦ sgn(bitsand(lastn(n0, bits2) + bits0, false ' + bits1)) = sgn(bitsand(bits0, false ' + bits1)), bits2 + bits0 = [], bits0 = [] |
# bits0 = 1 + # bits1, n0 ≤ # bits2, # bits1 < # bits0, # bits1 < n0 + # bits0, # bits1 < # bits2 + # bits0 ⊦ bits0 = [], bits2 + bits0 = [], sgn(bitsand(lastn(n0, bits2) + bits0, false ' + bits1)) = sgn(bitsand(bits0, false ' + bits1))
Used simplifier rules: ⊦ m < n → n ≠ 0;% ⊦ m < n → n ≠ 0; (forward)% ⊦ m = n + 1 ∧ n < n0 → m ≤ n0; (forward)% ⊦ m ≤ m + n;% ⊦ m + n = n + m;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ m + n ≤ m + n0 ↔ n ≤ n0;