| # bits ≤ 1 + # bits1 ∨ boolvar, ∀ boolvar, bits1, bits0. # bits0 < # bits → # bits0 ≤ 1 + # bits1 ∨ boolvar → bits0 = [] ∨ bitsand(bits0, boolvar ' + bits1) = bits0 ∨ true ∈ bits0 ⊦ bitsand(bits, boolvar ' + bits1) = bits, bits = [], true ∈ bits, # bits ≠ 1 ∧ bits1 ≠ [] |
# bits ≤ 1 + # bits1 ∨ boolvar, ∀ boolvar, bits1, bits0. # bits0 < # bits → # bits0 ≤ 1 + # bits1 ∨ boolvar → bits0 = [] ∨ bitsand(bits0, boolvar ' + bits1) = bits0 ∨ true ∈ bits0 ⊦ # bits ≠ 1, bitsand(bits, boolvar ' + bits1) = bits, bits = [], true ∈ bits, # bits ≠ 1 ∧ bits1 ≠ []
Used simplifier rules: and-oner-01: ⊦ bits ≠ [] → bitsand(bits, true ') = bits;% ⊦ bits + [] = bits;% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ # [] = 0;% ⊦ m ≠ n → (m ≤ n ↔ m < n);% ⊦ m < 1 ↔ m = 0;% ⊦ # bits = 0 ↔ bits = []; Used formulas: # bits ≠ 1