| mklist(true, # bits1) = bits1, true ∈ mklist(true, # bits1) ⊦ bits2 + mklist(true, # bits1) = [], bits0 = [], lastn(# mklist(true, # bits1), fillsgn(# mklist(true, # bits1), bitsand(sgn(mklist(true, # bits1)), bits0))) = lastn(# mklist(true, # bits1), fillsgn(# mklist(true, # bits1), bitsand(bits2 + mklist(true, # bits1), bits0))) |
⊦ n ≠ 0 → sgn(mklist(boolvar, n)) = boolvar '
# bits1 ≠ 0, mklist(true, # bits1) = bits1, true ∈ mklist(true, # bits1) ⊦ bits2 + mklist(true, # bits1) = [], bits0 = [], lastn(# mklist(true, # bits1), fillsgn(# mklist(true, # bits1), bitsand(true ', bits0))) = lastn(# mklist(true, # bits1), fillsgn(# mklist(true, # bits1), bitsand(bits2 + mklist(true, # bits1), bits0)))
Used simplifier rules: ⊦ # bits = 0 ↔ bits = [];% ⊦ # mklist(boolvar, n) = n;% ⊦ boolvar ∈ mklist(boolvar, m) ↔ m ≠ 0; Used terms: # bits1, true