| false ' + bits0 ≠ [], ∀ bits1, bits0. # bits1 < #(true + bits2) → true → bits1 = [] ∨ bitsand(bits1, false ' + bits0) = false ' + bits0 ∨ false ∈ bits1 ∨ false ∈ bits0 ⊦ bitsand(true ' + bits2.butlast, false ' + bits0.butlast) = (false ' + bits0).butlast ∧ (bits2.last ∧ bits0.last ↔ (false ' + bits0).last), bits0 = [], bits2 = [], false ∈ bits2, false ∈ bits0 |
∀ bits1, bits0. # bits1 < #(true + bits2) → true → bits1 = [] ∨ bitsand(bits1, false ' + bits0) = false ' + bits0 ∨ false ∈ bits1 ∨ false ∈ bits0 ⊦ bits0 = [], bits2 = [], false ∈ bits2, false ∈ bits0, (bits0.last → bits2.last) ∧ bitsand(true ' + bits2.butlast, false ' + bits0.butlast) = false ' + bits0.butlast
Used simplifier rules: ⊦ bits ≠ [] → ((boolvar ' + bits).last ↔ bits.last);% ⊦ bits ≠ [] → (bits0 + bits).butlast = bits0 + bits.butlast;% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ boolvar ' + bits ≠ [];