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