| # bits ≤ n, # bits ≤ m, m ≤ n ⊦ bits = [], restn(n - m, mklist(bits.first, n - # bits) + bits) = mklist(bits.first, m - # bits) + bits |
⊦ n ≤ # bits → restn(n, bits + bits0) = restn(n, bits) + bits0
¬ n - m ≤ # mklist(bits.first, n - # bits), # bits ≤ n, # bits ≤ m, m ≤ n ⊦ bits = [], restn(n - m, mklist(bits.first, n - # bits) + bits) = mklist(bits.first, m - # bits) + bits
n - m ≤ # mklist(bits.first, n - # bits), # bits ≤ n, # bits ≤ m, m ≤ n ⊦ bits = [], restn(n - m, mklist(bits.first, n - # bits)) + bits = mklist(bits.first, m - # bits) + bits
Used terms: bits, mklist(bits.first, n - # bits), n - m