| bytes = [], int2bytes(i1 / 256) = i2b(0) ' + (by ' + bytes).butlast, int2bytes((i1 + 255) % 256).last = (by ' + bytes).last, 0 ≤ b2i(by), i1 < ~383, i1 < 0, i2b(0) ∈ int2bytes(i1 / 256), ∀ bytes, by, i0. i→n(i0) < i→n(i1 + 255) → int2bytes(i0) = i2b(0) ' + by ' + bytes ∧ 0 ≤ b2i(by) ∧ i2b(0) ∈ int2bytes(i0) → false ⊦ (by ' + bytes).last ≠ i2b(0) ∧ (by ' + bytes).last ≠ by ∧ ¬ (by ' + bytes).last ∈ bytes |
i1 / 256 = 0, 0 ≤ b2i(int2bytes((i1 + 255) % 256).last), i1 < ~383, i1 < 0, ∀ bytes, by, i0. i→n(i0) < i→n(i1 + 255) → int2bytes(i0) = i2b(0) ' + by ' + bytes ∧ 0 ≤ b2i(by) ∧ i2b(0) ∈ int2bytes(i0) → false ⊦
Used simplifier rules: int2bytes-zero: ⊦ int2bytes(i) = i2b(0) ' ↔ i = 0;%int2bytes-byte: ~128 ≤ i, i < 128 ⊦ int2bytes((* i)) = i2b(i) ';% ⊦ i < 0 ∧ 0 ≤ j → i < j;% ⊦ i < j ∧ j ≤ j0 → i < j0; (forward)% ⊦ i ≤ j ∧ 0 ≤ i → 0 ≤ j; (forward)% ⊦ by ∈ by0 ' ↔ by = by0;% ⊦ by '.last = by;% ⊦ by '.butlast = [];% ⊦ (bytes + bytes0) + bytes1 = bytes + bytes0 + bytes1;% ⊦ bytes + [] = bytes;