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