| # 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 |
⊦ bits0 ≠ [] ∧ bits = true ' → bitsand(bits, bits0) = bits0
Used simplifier rules: and-zero-01: ⊦ bitsand(false ', boolvar ' + bits) = false ';% ⊦ boolvar ∈ boolvar0 ' ↔ boolvar ↔ boolvar0;% ⊦ boolvar ' + bits ≠ [];% ⊦ ¬ bits + bits0 ≠ [] ↔ bits = [] ∧ bits0 = [];% ⊦ boolvar ' ≠ [];% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ # bits = 1 ∧ bits ≠ true ' → bits = false '; (forward)% ⊦ # boolvar ' = 0 +1;% ⊦ boolvar ' = boolvar0 ' ↔ boolvar ↔ boolvar0; Used terms: boolvar ' + bits1, bits