| i < ~256 ∧ i % 256 ≠ 0, int2bytes(i / 256 - 1) + int2bytes(i % 256).last ' = i2b(~1) ' + by ' + bytes, b2i(by) < 0, i2b(~1) ∈ int2bytes(i / 256 - 1) + int2bytes(i % 256).last ', i < ~256, i < 0, ∀ bytes, by, i0. i→n(i0) < i→n(i) → true → b2i(by) < 0 → int2bytes(i0) ≠ i2b(~1) ' + by ' + bytes ⊦ i % 256 = 0 |
int2bytes(i / 256 - 1) + i2b(i % 256) ' = i2b(~1) ' + by ' + bytes, i < 0, i < ~256, b2i(by) < 0, ∀ bytes, by, i0. i→n(i0) < i→n(i) → true → b2i(by) < 0 → int2bytes(i0) ≠ i2b(~1) ' + by ' + bytes ⊦ i % 256 = 0, i2b(i % 256) ≠ i2b(~1) ∧ i2b(i % 256) ≠ by ∧ ¬ i2b(i % 256) ∈ bytes, ¬ i2b(~1) ∈ int2bytes(i / 256 - 1) ∧ i2b(~1) ≠ i2b(i % 256)
Used simplifier rules: int2bytes-last-01: ⊦ int2bytes(i).last = i2b(i);% ⊦ by ' + bytes = bytes0 → by ∈ bytes0; (forward)% ⊦ bytes + by ' = bytes0 → by ∈ bytes0; (forward)% ⊦ (bytes + bytes0) + bytes1 = bytes + bytes0 + bytes1;% ⊦ by ∈ by0 ' ↔ by = by0;% ⊦ by ∈ bytes + bytes0 ↔ ¬ ¬(by ∈ bytes ∨ by ∈ bytes0);