| 0 ≤ i, 0 = 2 ^ (i + 1) + j, 0 ≤ i, 0 < 2 ^ i, j + 2 ^ i < 0, j < 0, j + 1 < 2 ^ i, j < i, j + 2 ^ i < i, j < ~1, j < 2 ^ i, true ∈ uint2bits(2 ^ (i + 1)).rest.rest, 2 ^ i + j < 0 ⊦ # uint2bits(2 ^ (i + 1)) = i→n(i + 2) |
0 ≤ i ⊦ uint2bits(2 ^ i) = false ' + true ' + mklist(false, i→n(i))
Used simplifier rules: ⊦ i ≤ j ∧ j < j0 → i < j0; (forward)% ⊦ i * j = j * i;% ⊦ i < j ∧ j < j0 → i < j0; (forward)% ⊦ i < j ∧ j < i0 → i +1 < i0; (forward)% ⊦ i < (* j) ∧ j < 0 → i < 0; (forward)% ⊦ ¬ i ≤ j ↔ j < i;% ⊦ 0 ≤ i → j ^ (i + 1) = j ^ i * j;% ⊦ i + j + i0 = (i + j) + i0;% ⊦ i + j = j + i;% ⊦ 0 ≤ i → i→n(i + 1) = i→n(i) + 1;% ⊦ mklist(boolvar, m + n) = mklist(boolvar, m) + mklist(boolvar, n);% ⊦ mklist(boolvar, 1) = boolvar ';% ⊦ mklist(boolvar, n) + boolvar ' = boolvar ' + mklist(boolvar, n);% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ m + n = n + m;% ⊦ #(bits + bits0) = # bits + # bits0;% ⊦ # boolvar ' = 0 +1;% ⊦ # mklist(boolvar, n) = n;% ⊦ (* j) ≤ i0 + (* j0) ↔ j - j0 ≤ i0;% ⊦ (boolvar ' + bits).rest = bits;% ⊦ boolvar ∈ bits + bits0 ↔ ¬ ¬(boolvar ∈ bits ∨ boolvar ∈ bits0);% ⊦ boolvar ∈ boolvar0 ' ↔ boolvar ↔ boolvar0;% ⊦ ¬ true ∈ mklist(false, n); Used terms: i + 1