| # mklist(false, i→n(j)) ≤ # int2bits(i), # int2bits(i) < n, 0 ≤ i ⊦ bits2int(firstn(n, mklist(false, i→n(j)) + mklist(false, n - # int2bits(i)) + int2bits(i))) = bits2int(mklist(false, i→n(j)) + firstn(# int2bits(i) - # mklist(false, i→n(j)), int2bits(i))) |
# int2bits(i) < n, 0 ≤ i, i→n(j) ≤ # int2bits(i), i→n(j) < n ⊦ bits2int(firstn(n, mklist(false, i→n(j)) + mklist(false, n - # int2bits(i)) + int2bits(i))) = bits2int(mklist(false, i→n(j)) + firstn(# int2bits(i) - i→n(j), int2bits(i)))
Used simplifier rules: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward)% ⊦ # mklist(boolvar, n) = n;