| # bits2 < # bits0, ∀ bits, bits0, bits1. # bits1 < # bits2 → # bits1 < # bits0 → bitsand(bits + bits0, true ' + bits1) = bits + bitsand(bits0, true ' + bits1) ∨ bits0 = [] ⊦ bits0 = [], bitsand(bits + bits0, true ' + bits2) = bits + bitsand(bits0, true ' + bits2) |
⊦ 1 < # bits ∧ 1 < # bits0 → bitsand(bits, bits0) = bitsand(bits.butlast, bits0.butlast) + (bits.last ∧ bits0.last)
¬(1 < #(bits + bits0) ∧ 1 < #(true ' + bits2)), # bits2 < # bits0, ∀ bits, bits0, bits1. # bits1 < # bits2 → # bits1 < # bits0 → bitsand(bits + bits0, true ' + bits1) = bits + bitsand(bits0, true ' + bits1) ∨ bits0 = [] ⊦ bits0 = [], bitsand(bits + bits0, true ' + bits2) = bits + bitsand(bits0, true ' + bits2)
1 < #(bits + bits0) ∧ 1 < #(true ' + bits2), # bits2 < # bits0, ∀ bits, bits0, bits1. # bits1 < # bits2 → # bits1 < # bits0 → bitsand(bits + bits0, true ' + bits1) = bits + bitsand(bits0, true ' + bits1) ∨ bits0 = [] ⊦ bits0 = [], bitsand((bits + bits0).butlast, (true ' + bits2).butlast) + ((bits + bits0).last ∧ (true ' + bits2).last) = bits + bitsand(bits0, true ' + bits2)
Used terms: true ' + bits2, bits + bits0