| n = n0 + # bits ∧ # bits ≤ n, mklist(false, # bits) = bits, # bits ≤ # bits0, # bits < n ⊦ bits0 = [], mklist(false, n) = mklist(bits.first, n0) + bits, bits = [] |
mklist(false, # bits) = bits, # bits ≤ # bits0 ⊦ bits0 = [], bits = [], n0 = 0, mklist(false, n0) = mklist(bits.first, n0)
Used simplifier rules: ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ bits + bits0 = bits1 + bits0 ↔ bits = bits1;% ⊦ m < m + n ↔ n ≠ 0;% ⊦ m < n → m ≤ n;% ⊦ m + n = n + m;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ mklist(boolvar, m + n) = mklist(boolvar, m) + mklist(boolvar, n);