| mklist(false, # bits) = bits, # bits0 + 1 < n0 + # bits, # bits0 < n0 + # bits, bits0.first, # bits0 < # bits ⊦ bits0 = [], bits = [], n0 = 0, mklist(false, n0) = mklist(bits.first, n0) |
bits0 = boolvar + bits1, mklist(false, # bits) = bits, # bits0 + 1 < n0 + # bits, # bits0 < n0 + # bits, boolvar, # bits0 < # bits ⊦ bits0 = [], bits = [], n0 = 0, mklist(false, n0) = mklist(bits.first, n0)
Used simplifier rules: ⊦ bits ≠ [] → ( (boolvar ↔ bits.first) ∧ bits0 = bits.rest ↔ bits = boolvar + bits0); (elim) Used terms: bits0, boolvar, bits1