| ¬(¬ ((bits3 + bitsor(bits0, bits2)) + bits1).first ∧ (bits3 + bitsor(bits0, bits2)) + bits1 ≠ []), # bits0 = # bits2 ⊦ bits3 + bits0 = [], bits2int((bits3 + bitsor(bits0, bits2)) + bits1) = bits2uint(bits2 + bits1), # bits3 = 1, bits2 = [], bits0 = [], bits3 = [], true ∈ bits3, true ∈ bits0 |
# bits0 = # bits2, bits3.first ⊦ bits3 + bits0 = [], bits2int((bits3 + bitsor(bits0, bits2)) + bits1) = bits2uint(bits2 + bits1), # bits3 = 1, bits2 = [], bits0 = [], bits3 = [], true ∈ bits3, true ∈ bits0
Used simplifier rules: ⊦ ¬ bits + bits0 ≠ [] ↔ bits = [] ∧ bits0 = [];% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ bits ≠ [] → ((bits + bits0).first ↔ bits.first);