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