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