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