| # bits0 = # bits2 ⊦ bits3 + bits0 = [], bits2uint((bits3 + bitsor(bits0, bits2)) + bits1) = bits2uint(bits2 + bits1), # bits3 = 1, bits2 = [], bits0 = [], bits3 = [], (bits3 + bitsor(bits0, bits2)) + bits1 = [], true ∈ bits3, true ∈ bits0, bits3.first |
bits3 = boolvar + bits, # bits0 = # bits2 ⊦ bits3 + bits0 = [], bits2uint((bits3 + bitsor(bits0, bits2)) + bits1) = bits2uint(bits2 + bits1), # bits3 = 1, bits2 = [], bits0 = [], bits3 = [], (bits3 + bitsor(bits0, bits2)) + bits1 = [], true ∈ bits3, true ∈ bits0, boolvar
Used simplifier rules: bits ≠ [] ⊦ (boolvar ↔ bits.first) ∧ bits0 = bits.rest ↔ bits = boolvar + bits0; (elim) Used terms: bits3, boolvar, bits