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