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