| # bits = # bits1, mklist(true, # bits1) = bits1 ⊦ bits1 = [], bits3 + bits = [], bits = lastn(# bits1, fillsgn(# bits1, bitsand(bits3 + bits, bits1))) |
⊦ # bits1 ≤ # bits0 ∧ bits1 ≠ [] ∧ bits1.first → bitsand(bits + bits0, bits1) = bits + bitsand(bits0, bits1)
¬(# bits1 ≤ # bits ∧ bits1 ≠ [] ∧ bits1.first), # bits = # bits1, mklist(true, # bits1) = bits1 ⊦ bits1 = [], bits3 + bits = [], bits = lastn(# bits1, fillsgn(# bits1, bitsand(bits3 + bits, bits1)))
# bits1 ≤ # bits ∧ bits1 ≠ [] ∧ bits1.first, # bits = # bits1, mklist(true, # bits1) = bits1 ⊦ bits1 = [], bits3 + bits = [], bits = lastn(# bits1, fillsgn(# bits1, bits3 + bitsand(bits, bits1)))
Used terms: bits1, bits, bits3