| # bits = 2 + # bits1, sgn(mklist(boolvar, n0 - 1) + boolvar ' + boolvar0 ' + bits1) = boolvar ' + boolvar0 ' + bits1, n = # fillsgn(n, mklist(boolvar, n0 - 1) + boolvar ' + boolvar0 ' + bits1), n0 + 1 + # bits1 < n ⊦ bits2 = [], lastn(n, fillsgn(n, bitsand(bits2 + bits, boolvar ' + boolvar0 ' + bits1))) = lastn(n, fillsgn(n, bitsand(mklist(boolvar, n0 - 1) + boolvar ' + boolvar0 ' + bits1, bits2 + bits))), n0 = 0, boolvar ↔ boolvar0, bits2 + bits = [], boolvar ∧ boolvar0 |
⊦ # bits1 ≤ # bits0 ∧ bits1 ≠ [] ∧ ¬ bits1.first → bitsand(bits + bits0, bits1) = bitsand(bits0, bits1)
¬(#(boolvar ' + boolvar0 ' + bits1) ≤ # bits ∧ boolvar ' + boolvar0 ' + bits1 ≠ [] ∧ ¬ (boolvar ' + boolvar0 ' + bits1).first), # bits = 2 + # bits1, sgn(mklist(boolvar, n0 - 1) + boolvar ' + boolvar0 ' + bits1) = boolvar ' + boolvar0 ' + bits1, n = # fillsgn(n, mklist(boolvar, n0 - 1) + boolvar ' + boolvar0 ' + bits1), n0 + 1 + # bits1 < n ⊦ bits2 = [], lastn(n, fillsgn(n, bitsand(bits2 + bits, boolvar ' + boolvar0 ' + bits1))) = lastn(n, fillsgn(n, bitsand(mklist(boolvar, n0 - 1) + boolvar ' + boolvar0 ' + bits1, bits2 + bits))), n0 = 0, boolvar ↔ boolvar0, bits2 + bits = [], boolvar ∧ boolvar0
#(boolvar ' + boolvar0 ' + bits1) ≤ # bits ∧ boolvar ' + boolvar0 ' + bits1 ≠ [] ∧ ¬ (boolvar ' + boolvar0 ' + bits1).first, # bits = 2 + # bits1, sgn(mklist(boolvar, n0 - 1) + boolvar ' + boolvar0 ' + bits1) = boolvar ' + boolvar0 ' + bits1, n = # fillsgn(n, mklist(boolvar, n0 - 1) + boolvar ' + boolvar0 ' + bits1), n0 + 1 + # bits1 < n ⊦ bits2 = [], lastn(n, fillsgn(n, bitsand(bits, boolvar ' + boolvar0 ' + bits1))) = lastn(n, fillsgn(n, bitsand(mklist(boolvar, n0 - 1) + boolvar ' + boolvar0 ' + bits1, bits2 + bits))), n0 = 0, boolvar ↔ boolvar0, bits2 + bits = [], boolvar ∧ boolvar0
Used terms: boolvar ' + boolvar0 ' + bits1, bits, bits2