| ⊦ n = 0, bits2int(mklist(false, n) + bits) = bits2uint(bits) |
⊦ ¬ bits.first ∧ bits ≠ [] → bits2int(bits) = bits2uint(bits.rest)
¬ (mklist(false, n) + bits).first ∧ mklist(false, n) + bits ≠ [] ⊦ n = 0, bits2uint((mklist(false, n) + bits).rest) = bits2uint(bits)
Used simplifier rules: ⊦ n ≠ 0 → ((mklist(boolvar, n) + bits).first ↔ boolvar);% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ ¬ bits + bits0 ≠ [] ↔ bits = [] ∧ bits0 = [];% ⊦ mklist(boolvar, m) = [] ↔ m = 0; Used terms: mklist(false, n) + bits