| ⊦ # bits0 ≠ 0 ∧ # bits ≠ 0 ∧ ¬ bits.first → bits2int(bits + bits0) = bits2uint(bits) * 2 ^ n→i(# bits0) + bits2uint(bits0) |
⊦ ¬ bits.first ∧ bits ≠ [] → bits2int(bits) = bits2uint(bits)
¬ (bits + bits0).first ∧ bits + bits0 ≠ [] ⊦ # bits0 ≠ 0 ∧ # bits ≠ 0 ∧ ¬ bits.first → bits2uint(bits + bits0) = bits2uint(bits) * 2 ^ n→i(# bits0) + bits2uint(bits0)
Used simplifier rules: ⊦ # bits = 0 ↔ bits = [];% ⊦ bits ≠ [] → ((bits + bits0).first ↔ bits.first);% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ ¬ bits + bits0 ≠ [] ↔ bits = [] ∧ bits0 = []; Used terms: bits + bits0