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