| ¬ 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 - # bits) + m < n, m ≤ n, # bits ≤ m, # bits ≤ n ⊦ restn(n - m, mklist(bits.first, n - # bits) + bits) = mklist(bits.first, m - # bits) + bits, bits = []
Used simplifier rules: ⊦ m < n → n ≠ 0;% ⊦ m < n → n ≠ 0; (forward)%n0 ≤ n ⊦ n - n0 ≤ m ↔ n ≤ m + n0;% ⊦ ¬ m ≤ n ↔ n < m;% ⊦ m ≤ n → (n < m ↔ false);% ⊦ # mklist(boolvar, n) = n;