| 1 + # bits2 < n, ∀ n, bits, bits1. # bits1 < #(false + bits2) → true → bits = [] ∨ bits1 = [] ∨ fillsgn(n, bitsand(fillsgn(n, bits), bits1)) = fillsgn(n, bitsand(bits, bits1)) ⊦ fillsgn(n, false ' + mklist(false, # bits2)) = mklist(false, n) |
⊦ # bits < n → fillsgn(n, boolvar ' + bits) = mklist(boolvar, n - # bits) + bits
# mklist(false, # bits2) < n, 1 + # bits2 < n, ∀ n, bits, bits1. # bits1 < #(false + bits2) → true → bits = [] ∨ bits1 = [] ∨ fillsgn(n, bitsand(fillsgn(n, bits), bits1)) = fillsgn(n, bitsand(bits, bits1)) ⊦ mklist(false, n - # mklist(false, # bits2)) + mklist(false, # bits2) = mklist(false, n)
Used simplifier rules: ⊦ # mklist(boolvar, n) = n;% ⊦ ¬ m < n ↔ n ≤ m;% ⊦ m < n ∧ n ≤ n0 → m < n0; (forward)% ⊦ ¬ m + n < m;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ m + n = n + m; Used terms: mklist(false, # bits2), false, n