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