| # bits ≤ 1 + # bits1, ∀ bits1, bits0. # bits0 < # bits → # bits0 ≤ 1 + # bits1 → bits0 = [] ∨ bitsor(bits0, true ' + bits1) = bits0 ∨ false ∈ bits0 ⊦ bitsor(bits, true ' + bits1) = bits, bits = [], false ∈ bits, # bits ≠ 1 ∧ bits1 ≠ [] |
⊦ bits ≠ [] ∧ bits0 = true ' → bitsor(bits, bits0) = true '
¬(bits ≠ [] ∧ true ' + bits1 = true '), # bits ≤ 1 + # bits1, ∀ bits1, bits0. # bits0 < # bits → # bits0 ≤ 1 + # bits1 → bits0 = [] ∨ bitsor(bits0, true ' + bits1) = bits0 ∨ false ∈ bits0 ⊦ bitsor(bits, true ' + bits1) = bits, bits = [], false ∈ bits, # bits ≠ 1 ∧ bits1 ≠ []
Used simplifier rules: ⊦ boolvar ' = boolvar0 ' + bits ↔ (boolvar ↔ boolvar0) ∧ bits = [];% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ # [] = 0;% ⊦ # bits ≤ 1 ∧ bits ≠ [] → # bits = 1; (forward)% ⊦ # bits = 1 ∧ bits ≠ true ' → bits = false '; (forward)%0 < n ⊦ (* n) ≤ m → m ≠ 0; (forward)% ⊦ # boolvar ' = 0 +1;% ⊦ boolvar ' ≠ [];% ⊦ boolvar ' = boolvar0 ' ↔ boolvar ↔ boolvar0;% ⊦ boolvar ∈ boolvar0 ' ↔ boolvar ↔ boolvar0; Used terms: true ' + bits1, bits