| 0 ≤ 2 ^ n→i(# bits) ∧ 2 ^ n→i(# bits) ≤ bits2uint(bits) → # uint2bits(2 ^ n→i(# bits)) ≤ # uint2bits(bits2uint(bits)), 2 ^ n→i(# bits) ≤ bits2uint(bits) ⊦ |
2 ^ n→i(# bits) ≤ bits2uint(bits), 2 + # bits ≤ # uint2bits(bits2uint(bits)) ⊦
Used simplifier rules: uint2bits-2pot: 0 ≤ i ⊦ uint2bits(2 ^ i) = false ' + true ' + mklist(false, i→n(i));% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ # mklist(boolvar, n) = n;% ⊦ # boolvar ' = 0 +1;% ⊦ #(bits + bits0) = # bits + # bits0;% ⊦ i→n(n→i(n)) = n;% ⊦ 0 ≤ n→i(n);% ⊦ i ≤ j → (¬ ¬ j < i ↔ false);% ⊦ ¬ 2 ^ i < 0;% ⊦ ¬ i ≤ j ↔ j < i;