| # 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 ≠ [] |
# bits = 1, ∀ boolvar, bits1, bits0. # bits0 < 1 → # bits0 ≤ 1 + # bits1 ∨ boolvar → bits0 = [] ∨ bitsand(bits0, boolvar ' + bits1) = bits0 ∨ true ∈ bits0 ⊦ bits = [], bitsand(bits, boolvar ' + bits1) = bits, true ∈ bits
Used simplifier rules: ⊦ m ≤ m + n;% ⊦ m + 1 ≠ 0;%0 < n ⊦ (* n) ≤ m → m ≠ 0; (forward)% ⊦ m + n = n + m;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ ¬ m + n < m;% ⊦ # bits = 0 ↔ bits = [];% ⊦ m < n → n ≠ 0; (forward)% ⊦ m < n ∧ n = n0 → m < n0; (forward)% ⊦ ¬ m ≤ n ↔ n < m;