| bitsand(false ' + mklist(true, i→n(i)), sgn(bitsinvert(uint2bits(~ j)) +1)) = false ' + bits, j < i, 0 ≤ i, j < 0 ⊦ (j + 1) % 2 ^ i + 2 ^ i = 1 + bits2uint(bits), sgn(bitsinvert(uint2bits(~ j)) +1).first |
sgn(bitsinvert(uint2bits(~ j)) +1) = boolvar + bits0 ∧ sgn(bitsinvert(uint2bits(~ j)) +1) ≠ [], bitsand(false ' + mklist(true, i→n(i)), sgn(bitsinvert(uint2bits(~ j)) +1)) = false ' + bits, j < i, 0 ≤ i, j < 0 ⊦ (j + 1) % 2 ^ i + 2 ^ i = 1 + bits2uint(bits), boolvar
Used simplifier rules: ⊦ sgn(bits) = [] ↔ bits = [];% ⊦ ¬ bits +1 ≠ [] ↔ false;%bits ≠ [] ⊦ (boolvar ↔ bits.first) ∧ bits0 = bits.rest ↔ bits = boolvar + bits0; (elim) Used terms: sgn(bitsinvert(uint2bits(~ j)) +1), boolvar, bits0