| sgn(mklist(false, m) + false ' + true ' + bits1) = false ' + true ' + bits1, n = # fillsgn(n, mklist(false, m) + false ' + true ' + bits1), n = # fillsgn(n, bitsand(bits, false ' + true ' + bits1)), 2 + # bits1 + m < n, n < (2 + # bits1) + # bitsand(bits2, mklist(false, m)), m + 1 < # bitsand(bits2, mklist(false, m)), m < # bitsand(bits2, mklist(false, m)) ⊦ bits2 = [], n = # fillsgn(n, bitsand(bits2, mklist(false, m)) + bitsand(bits, false ' + true ' + bits1)), bits = [], m = 0, bits2 + bits = [], fillsgn(n, bitsand(bits, false ' + true ' + bits1)) = lastn(n, fillsgn(n, bitsand(bits2, mklist(false, m)) + bitsand(bits, false ' + true ' + bits1))), bitsand(bits2, mklist(false, m)) = [] |
⊦ ¬ bits0.first ∧ # bits0 ≤ # bits ∧ bits0 ≠ [] → # bitsand(bits, bits0) = # bits0
¬(¬ mklist(false, m).first ∧ # mklist(false, m) ≤ # bits2 ∧ mklist(false, m) ≠ []), sgn(mklist(false, m) + false ' + true ' + bits1) = false ' + true ' + bits1, n = # fillsgn(n, mklist(false, m) + false ' + true ' + bits1), n = # fillsgn(n, bitsand(bits, false ' + true ' + bits1)), 2 + # bits1 + m < n, n < (2 + # bits1) + # bitsand(bits2, mklist(false, m)), m + 1 < # bitsand(bits2, mklist(false, m)), m < # bitsand(bits2, mklist(false, m)) ⊦ bits2 = [], n = # fillsgn(n, bitsand(bits2, mklist(false, m)) + bitsand(bits, false ' + true ' + bits1)), bits = [], m = 0, bits2 + bits = [], fillsgn(n, bitsand(bits, false ' + true ' + bits1)) = lastn(n, fillsgn(n, bitsand(bits2, mklist(false, m)) + bitsand(bits, false ' + true ' + bits1))), bitsand(bits2, mklist(false, m)) = []
Used simplifier rules: and-notempty: ⊦ bits ≠ [] ∧ bits0 ≠ [] → bitsand(bits, bits0) ≠ [];% ⊦ mklist(boolvar, m) = [] ↔ m = 0;% ⊦ # mklist(boolvar, n) = n;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ m + n = n + m;% ⊦ m < n → ¬ n < m; Used terms: mklist(false, m), bits2