| # int2bits(i) = n + i→n(band(j, 31)), sublist(0, n, int2bits(i)) = boolvar ' + bits, i→n(band(j, 31)) < # int2bits(i), boolvar ∈ sublist(0, n, int2bits(i)) ⊦ bits2int(mklist(¬ 0 ≤ i, i→n(band(j, 31))) + sublist(0, n, int2bits(i))) = bits2int(sublist(0, n, int2bits(i))), n = 0, boolvar ↔ ¬ 0 ≤ i |
⊦ sublist(0, n, bits) = boolvar ' + bits0 ↔ n = # bits0 + 1 ∧ (bits.first ↔ boolvar) ∧ sublist(0, n -1, bits.rest) = bits0
Used simplifier rules: ⊦ (m + 1)-1 = m;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ m + n = n + m;% ⊦ m + 1 ≠ 0;% ⊦ int2bits(j).first ↔ j < 0;% ⊦ i ≤ j → (¬ ¬ j < i ↔ false);% ⊦ ¬ i ≤ j ↔ j < i;% ⊦ j < 0 → int2bits(j).first; Used terms: bits, boolvar, int2bits(i), n