| ∀ bits, boolvar. bits = [] ∨ fillsgn(m0 + 1, bits + boolvar ') = fillsgn(m0, bits) + boolvar ' ⊦ bits = [], fillsgn(2 + m0, bits + boolvar ') = fillsgn(m0 + 1, bits) + boolvar ' |
⊦ bits ≠ [] ∧ # bits < n → fillsgn(n, bits) = bits.first ' + fillsgn(n -1, bits)
¬(bits ≠ [] ∧ # bits < m0 + 1), ∀ bits, boolvar. bits = [] ∨ fillsgn(m0 + 1, bits + boolvar ') = fillsgn(m0, bits) + boolvar ' ⊦ bits = [], fillsgn(2 + m0, bits + boolvar ') = fillsgn(m0 + 1, bits) + boolvar '
bits ≠ [] ∧ # bits < m0 + 1, ∀ bits, boolvar. bits = [] ∨ fillsgn(m0 + 1, bits + boolvar ') = fillsgn(m0, bits) + boolvar ' ⊦ bits = [], fillsgn(2 + m0, bits + boolvar ') = (bits.first ' + fillsgn((m0 + 1)-1, bits)) + boolvar '
Used terms: bits, m0 + 1