| 0 < 2 ^ n→i(# bits) ⊦ uint2bits(2 ^ n→i(# bits) - 1) = false ' + bits, false ∈ bits |
0 < i ⊦ uint2bits(2 ^ i - 1) = false ' + mklist(true, i→n(i))
Used simplifier rules: uint2bits-zero: ⊦ uint2bits(0) = false ';% ⊦ bits + bits0 = bits + bits1 ↔ bits0 = bits1;% ⊦ ¬ false ∈ bits → mklist(true, # bits) = bits;% ⊦ i→n(n→i(n)) = n;%0 ≤ i ⊦ (* i) < n→i(n) ↔ i→n(i) < n;% ⊦ 0 < n ↔ n ≠ 0;% ⊦ # bits = 0 ↔ bits = [];% ⊦ # [] = 0;% ⊦ bits + [] = bits;% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ boolvar ' = boolvar0 ' ↔ boolvar ↔ boolvar0; Used terms: n→i(# bits)