| bitsor(true ' + bits3, bits4) + (boolvar ∨ boolvar0)' = false ' + bits1, (boolvar ∨ boolvar0) ∈ bits1, false ∈ bitsor(true ' + bits3, bits4), ∀ bits1, bits, bits2. # bits2 < #(bits4 + boolvar0 ') → bitsor(true ' + bits, bits2) = false ' + bits1 → bits2 = [] ⊦ bits1 = [], bits4 = [], (boolvar ∨ boolvar0) ∧ ¬ true ∈ bits1 |
bits ≠ [] ⊦ bits0 + boolvar ' = bits ↔ bits0 = bits.butlast ∧ (boolvar ↔ bits.last)
false ' + bits1 ≠ [], bitsor(true ' + bits3, bits4) = (false ' + bits1).butlast ∧ (boolvar ∨ boolvar0 ↔ (false ' + bits1).last), (boolvar ∨ boolvar0) ∈ bits1, false ∈ bitsor(true ' + bits3, bits4), ∀ bits1, bits, bits2. # bits2 < #(bits4 + boolvar0 ') → bitsor(true ' + bits, bits2) = false ' + bits1 → bits2 = [] ⊦ bits1 = [], bits4 = [], (boolvar ∨ boolvar0) ∧ ¬ true ∈ bits1
Used simplifier rules: ⊦ ¬ bits + bits0 ≠ [] ↔ bits = [] ∧ bits0 = [];% ⊦ boolvar ' ≠ [];% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1; Used terms: false ' + bits1, boolvar ∨ boolvar0, bitsor(true ' + bits3, bits4)