| bytes = [], 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) |
i / 256 = 0, i < ~256, i < 0, b2i(i2b(i % 256)) < 0, ∀ bytes, by, i0. i→n(i0) < i→n(i) → true → b2i(by) < 0 → int2bytes(i0) ≠ i2b(~1) ' + by ' + bytes ⊦ i % 256 = 0
Used simplifier rules: int2bytes-minus-one: ⊦ int2bytes(i) = i2b(~1) ' ↔ i = ~1;%int2bytes-byte: ~128 ≤ i, i < 128 ⊦ int2bytes((* i)) = i2b(i) ';% ⊦ j < i ∧ i ≤ 0 → j < 0; (forward)% ⊦ by ∈ by0 ' ↔ by = by0;% ⊦ i - j = i0 ↔ i = i0 + j;% ⊦ bytes + by ' = bytes0 + by0 ' ↔ bytes = bytes0 ∧ by = by0;% ⊦ (bytes + bytes0) + bytes1 = bytes + bytes0 + bytes1;% ⊦ bytes + [] = bytes;