| 0 ≤ 2 ^ (n→i(# int2bits(j)) - 1) ∧ 2 ^ (n→i(# int2bits(j)) - 1) ≤ j → # uint2bits(2 ^ (n→i(# int2bits(j)) - 1)) ≤ # uint2bits(j), 0 ≤ j, 2 ^ (n→i(# int2bits(j)) - 1) ≤ j ⊦ |
0 ≤ j, 2 ^ (n→i(# int2bits(j)) - 1) ≤ j, 2 + i→n(n→i(# int2bits(j)) - 1) ≤ # uint2bits(j) ⊦
Used simplifier rules: int2bits-not-empty: ⊦ int2bits(j) ≠ [];%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 ≤ j - i0 ↔ i + i0 ≤ j;% ⊦ 1 ≤ i ↔ 0 < i;%0 ≤ i ⊦ (* i) < n→i(n) ↔ i→n(i) < n;% ⊦ 0 < n ↔ n ≠ 0;% ⊦ # bits = 0 ↔ bits = [];% ⊦ i ≤ j → (¬ ¬ j < i ↔ false);% ⊦ ¬ 2 ^ i < 0;% ⊦ ¬ i ≤ j ↔ j < i;