| 1 + # bits0 < # bits1 ⊦ bits1 = [], sgn(bitsand(lastn(# bits1, mklist(boolvar, # bits1 - 1 + # bits0) + boolvar ' + bits0), false ' + bits1)) = sgn(bitsand(boolvar ' + bits0, false ' + bits1)) |
# bits1 = n + 1 + # bits0 ∧ 1 + # bits0 ≤ # bits1, 1 + # bits0 < # bits1 ⊦ bits1 = [], sgn(bitsand(lastn(# bits1, mklist(boolvar, n) + boolvar ' + bits0), false ' + bits1)) = sgn(bitsand(boolvar ' + bits0, false ' + bits1))
Used simplifier rules: ⊦ m + 1 ≤ n ↔ m < n;% ⊦ ¬ m < n ↔ n ≤ m;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ m + n = n + m;% ⊦ n ≤ # bits → lastn(n, bits0 + bits) = lastn(n, bits);% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ m < n ∧ n ≤ n0 → m < n0; (forward)% ⊦ ¬ m + n < m;%n ≤ m ⊦ n0 = m - n ↔ m = n0 + n; (elim) Used terms: # bits1, 1 + # bits0, n