| int2bits(j) = bits0 + boolvar ' + bits1, # bits1 = i→n(i), 0 < i ⊦ bits2uint(bitsand(bits1, mklist(true, i→n(i)))) = bits2uint(bits1), bits1 = [] |
⊦ ¬ false ∈ bits ∧ # bits ≤ # bits0 ∧ bits ≠ [] → bitsand(bits0, bits) = bits0
Used simplifier rules: ⊦ ¬ false ∈ mklist(true, n);% ⊦ # mklist(boolvar, n) = n;% ⊦ ¬ m ≤ n ↔ n < m;% ⊦ mklist(boolvar, m) = [] ↔ m = 0;% ⊦ i→n(i) = 0 ↔ i = 0;% ⊦ m < n ∧ m = n0 → n0 < n; (forward)% ⊦ m < n ∧ n = n0 → m < n0; (forward)% ⊦ m < n → n ≠ 0; (forward)% ⊦ i→n(i) < i→n(j) ↔ abs(i) < abs(j);% ⊦ 0 < j → abs(j) = j;% ⊦ ¬ i < i;% ⊦ # bits = 0 ↔ bits = []; Used terms: mklist(true, i→n(i)), bits1