| mklist(false, # bits) = bits, # bits0 + 1 < n, # bits < n, # bits0 < # bits, bits0.first, # bits0 < n ⊦ bits0 = [], mklist(false, n) = mklist(bits.first, n - # bits) + bits, bits = [] |
n = n0 + # bits ∧ # bits ≤ n, mklist(false, # bits) = bits, # bits0 + 1 < n, # bits < n, # bits0 < # bits, bits0.first, # bits0 < n ⊦ bits0 = [], mklist(false, n) = mklist(bits.first, n0) + bits, bits = []
Used simplifier rules: ⊦ ¬ m ≤ n ↔ n < m;% ⊦ m < n → ¬ n < m;%n ≤ m ⊦ n0 = m - n ↔ m = n0 + n; (elim) Used terms: n, # bits, n0