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