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