| # sgn(boolvar ' + bits0) ≤ 1 + # bits0 ⊦ mklist(boolvar, 1 + # bits0 - # sgn(boolvar ' + bits0)) + sgn(boolvar ' + bits0) = boolvar ' + bits0 |
⊦ bits ≠ [] ↔ (∃ n. bits = mklist(bits.first, n) + sgn(bits) ∧ bits ≠ [])
boolvar ' + bits0 ≠ [] ↔ (∃ n. boolvar ' + bits0 = mklist((boolvar ' + bits0).first, n) + sgn(boolvar ' + bits0) ∧ boolvar ' + bits0 ≠ []), # sgn(boolvar ' + bits0) ≤ 1 + # bits0 ⊦ mklist(boolvar, 1 + # bits0 - # sgn(boolvar ' + bits0)) + sgn(boolvar ' + bits0) = boolvar ' + bits0
Used terms: boolvar ' + bits0