| i→n(i) < # uint2bits(j), i→n(i) + 1 < # uint2bits(j), 2 ^ i ≤ j, 0 ≤ i, 2 ^ i < j, # lastn(i→n(i), uint2bits(j)) ≤ i→n(i), # lastn(i→n(i), uint2bits(j)) < # uint2bits(j) ⊦ uint2bits(j) = butlastn(i→n(i), uint2bits(j)) + fillsgn(i→n(i) + 1, false ' + lastn(i→n(i), uint2bits(j))).rest |
⊦ n ≤ # bits → fillsgn(n, bits) = bits
¬ i→n(i) + 1 ≤ #(false ' + lastn(i→n(i), uint2bits(j))), i→n(i) < # uint2bits(j), i→n(i) + 1 < # uint2bits(j), 2 ^ i ≤ j, 0 ≤ i, 2 ^ i < j, # lastn(i→n(i), uint2bits(j)) ≤ i→n(i), # lastn(i→n(i), uint2bits(j)) < # uint2bits(j) ⊦ uint2bits(j) = butlastn(i→n(i), uint2bits(j)) + fillsgn(i→n(i) + 1, false ' + lastn(i→n(i), uint2bits(j))).rest
i→n(i) + 1 ≤ #(false ' + lastn(i→n(i), uint2bits(j))), i→n(i) < # uint2bits(j), i→n(i) + 1 < # uint2bits(j), 2 ^ i ≤ j, 0 ≤ i, 2 ^ i < j, # lastn(i→n(i), uint2bits(j)) ≤ i→n(i), # lastn(i→n(i), uint2bits(j)) < # uint2bits(j) ⊦ uint2bits(j) = butlastn(i→n(i), uint2bits(j)) + (false ' + lastn(i→n(i), uint2bits(j))).rest
Used terms: false ' + lastn(i→n(i), uint2bits(j)), i→n(i) + 1