| # mklist(false, i→n(j)) ≠ 0 ∧ # int2bits(i) ≠ 0 ∧ ¬ int2bits(i).first, j < 32, 0 ≤ j ⊦ bits2uint(int2bits(i)) * 2 ^ n→i(# mklist(false, i→n(j))) + bits2uint(mklist(false, i→n(j))) = i * 2 ^ j |
j < 32, 0 < j, 0 ≤ i ⊦ 2 ^ j * bits2uint(int2bits(i)) = i * 2 ^ j, j = 0
Used simplifier rules: ⊦ i < j ∧ 0 < i → 0 < j ∧ 1 < j; (forward)% ⊦ i < j ∧ 0 ≤ i → 0 < j; (forward)% ⊦ i ≤ j ∧ 0 ≤ i → 0 ≤ j; (forward)% ⊦ ¬ i < j ↔ j ≤ i;% ⊦ int2bits(j).first ↔ j < 0;% ⊦ i ≠ j → (i ≤ j ↔ i < j);% ⊦ i→n(i) = 0 ↔ i = 0;% ⊦ int2bits(j) ≠ [];% ⊦ # bits = 0 ↔ bits = [];% ⊦ i + j = j + i;% ⊦ i + j + i0 = (i + j) + i0;% ⊦ i + 0 = i;% ⊦ 0 ≤ i → n→i(i→n(i)) = i;% ⊦ # mklist(boolvar, n) = n;% ⊦ bits2uint(mklist(false, n)) = 0;