| mklist(i < 0, i→n(j)) + int2bits(i) = boolvar + bits ∧ mklist(i < 0, i→n(j)) + int2bits(i) ≠ [], # int2bits(i) = m + 1, j < 32, 0 ≤ j ⊦ bits2int(boolvar ' + sublist(0, m, bits)) < 0 ↔ ¬ 0 ≤ i, mklist(¬ 0 ≤ i, i→n(j)) + int2bits(i) = [] |
mklist(i < 0, i→n(j)) + int2bits(i) = boolvar ' + bits, # int2bits(i) = m + 1, 0 ≤ j, j < 32 ⊦ mklist(¬ 0 ≤ i, i→n(j)) + int2bits(i) = [], bits2int(boolvar ' + sublist(0, m, bits)) < 0 ↔ ¬ 0 ≤ i, ¬ boolvar ∈ mklist(i < 0, i→n(j)) ∧ ¬ boolvar ∈ int2bits(i)
Used simplifier rules: ⊦ boolvar ∈ bits + bits0 ↔ ¬ ¬(boolvar ∈ bits ∨ boolvar ∈ bits0);% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ boolvar ' + bits = bits0 → boolvar ∈ bits0; (forward)% ⊦ ¬ i < j ↔ j ≤ i;% ⊦ boolvar + bits = boolvar ' + bits;