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