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