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