| ¬(0 ≤ i ∧ 2 ^ i < j), 0 ≤ i, 2 ^ i ≤ j ⊦ uint2bits(j) = uint2bits(j / 2 ^ i) + fillsgn(i→n(i) + 1, uint2bits(j % 2 ^ i)).rest |
Used simplifier rules: uint2bits-2pot: 0 ≤ i ⊦ uint2bits(2 ^ i) = false ' + true ' + mklist(false, i→n(i));%uint2bits-one: ⊦ uint2bits(1) = false + true;%uint2bits-zero: ⊦ uint2bits(0) = false ';% ⊦ bits + bits0 = bits + bits1 ↔ bits0 = bits1;% ⊦ (boolvar ' + bits).rest = bits;% ⊦ m + n = n + m;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ mklist(boolvar, n) + boolvar ' = boolvar ' + mklist(boolvar, n);% ⊦ mklist(boolvar, 1) = boolvar ';% ⊦ mklist(boolvar, m + n) = mklist(boolvar, m) + mklist(boolvar, n);% ⊦ fillsgn(n + 1, boolvar ') = mklist(boolvar, n + 1);%i ≠ 0 ⊦ i % i = 0;% ⊦ boolvar + boolvar0 = boolvar ' + boolvar0 ';%i ≠ 0 ⊦ i / i = 1;% ⊦ 0 ≤ j → 2 ^ j ≠ 0;% ⊦ i ≤ j → (j ≤ i ↔ i = j);% ⊦ ¬ i < j ↔ j ≤ i;% ⊦ i ≤ j → (¬ ¬ j < i ↔ false);% ⊦ ¬ i ≤ j ↔ j < i;