| mklist(true, # bits1) = bits1, # bits0 < # bits1, bits0.first ⊦ bits1 = [], lastn(# bits1, fillsgn(# bits1, bits0)) = lastn(# bits1, fillsgn(# bits1, bitsand(bits2 + bits1, bits0))), bits0 = [], bits2 + bits1 = [] |
⊦ # bits1 ≤ # bits0 ∧ bits1 ≠ [] ∧ bits1.first → bitsand(bits + bits0, bits1) = bits + bitsand(bits0, bits1)
# bits0 ≤ # bits1 ∧ bits0 ≠ [] ∧ bits0.first, mklist(true, # bits1) = bits1, # bits0 < # bits1, bits0.first ⊦ bits1 = [], lastn(# bits1, fillsgn(# bits1, bits0)) = lastn(# bits1, fillsgn(# bits1, bits2 + bitsand(bits1, bits0))), bits0 = [], bits2 + bits1 = []
Used simplifier rules: ⊦ ¬ m ≤ n ↔ n < m;% ⊦ m < n → ¬ n < m; Used terms: bits0, bits1, bits2