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