| 0 ≤ 2 * 2 ^ (i - 1) + j, j < 2 ^ (i - 1), j + 1 < i, 0 < 2 ^ (i - 1), j < 0, 0 < i, 0 ≤ j + 2 ^ (i - 1), j < i, j + 1 < 2 ^ (i - 1), 2 * 2 ^ (i - 1) + j ≤ 1, ∀ i0, j. i→n(i0) < i→n(i) → true → j < 0 ∧ 0 < i0 ∧ abs(j) ≤ 2 ^ (i0 - 1) → uint2bits(j + 2 ^ i0) = false ' + fillsgn(i→n(i0), int2bits(j)) ⊦ uint2bits(2 * 2 ^ (i - 1) + j) = false ' + fillsgn(i→n(i), int2bits(j)) |
2 * 2 ^ (i - 1) + j = 1, j ≤ 0, j + 1 < 2 ^ (i - 1), j < i, 0 ≤ j + 2 ^ (i - 1), 0 < i, j < 0, 0 < 2 ^ (i - 1), j + 1 < i, j < 2 ^ (i - 1), 0 ≤ 2 ^ (i - 1), j ≤ 2 ^ (i - 1), ∀ i0, j. i→n(i0) < i→n(i) → true → j < 0 ∧ 0 < i0 ∧ abs(j) ≤ 2 ^ (i0 - 1) → uint2bits(j + 2 ^ i0) = false ' + fillsgn(i→n(i0), int2bits(j)) ⊦ true ' = fillsgn(i→n(i), int2bits(j))
Used simplifier rules: uint2bits-one: ⊦ uint2bits(1) = false + true;% ⊦ i ≤ i + j ↔ 0 ≤ j;% ⊦ i < 1 ↔ i ≤ 0;% ⊦ i + (* j) < (* j0) ↔ i < j0 - j;% ⊦ i +1 = i + 1;% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ bits + bits0 = bits + bits1 ↔ bits0 = bits1;% ⊦ boolvar + boolvar0 = boolvar ' + boolvar0 ';% ⊦ i < j ∧ j < j0 → i < j0; (forward)% ⊦ i < j ∧ j < i0 → i +1 < i0; (forward)% ⊦ i < j ∧ j = i0 → i < i0; (forward)% ⊦ 0 < i → (i ≤ 1 ↔ i = 1);% ⊦ 0 ≤ i → (i < 1 ↔ i = 0);% ⊦ i ≠ j → (i ≤ j ↔ i < j);% ⊦ i ≤ j → (¬ ¬ j < i ↔ false);% ⊦ 1 * i = i;% ⊦ (* i1) * j + i < j ↔ (i1 - 1) * j + i < 0;% ⊦ i < j ∧ i = i0 → i0 < j; (forward)% ⊦ i * j * j0 = (i * j) * j0;% ⊦ 0 < i → (0 < i * j ↔ 0 < j);% ⊦ i < i + j ↔ 0 < j;% ⊦ j ≤ j0 ∧ j0 ≤ j1 → j ≤ j1; (forward)% ⊦ 0 ≤ i ∧ i ≤ 1 → i = 0 ∨ i = 1; (forward)% ⊦ i < j ∧ j ≤ j0 → i < j0; (forward)% ⊦ i + j + i0 = (i + j) + i0;% ⊦ i + j = j + i;% ⊦ i * j = j * i;