| i2b(0) ' ≠ [], int2bytes(bytes2int(i2b(0) ') * 256 + band(b2i(by), 255)) = i2b(0) ' + by ', 0 ≤ b2i(by), ∀ by, bytes0. # bytes0 < # [] → int2bytes(bytes2int(i2b(0) ' + by ' + bytes0)) = i2b(0) ' + by ' + bytes0 ∧ 0 ≤ b2i(by) → false ⊦ |
int2bytes(b2i(by)) = i2b(0) ' + by ', 0 ≤ b2i(by), i2b(0) ∈ int2bytes(b2i(by)), by ∈ int2bytes(b2i(by)), ∀ by, bytes0. # bytes0 < # [] → int2bytes(bytes2int(i2b(0) ' + by ' + bytes0)) = i2b(0) ' + by ' + bytes0 ∧ 0 ≤ b2i(by) → false ⊦
Used simplifier rules: bytes2int-zero: ⊦ bytes2int(i2b(0) ') = 0;% ⊦ by ' + bytes = bytes0 → by ∈ bytes0; (forward)% ⊦ (bytes + bytes0) + bytes1 = bytes + bytes0 + bytes1;% ⊦ bytes + by ' = bytes0 → by ∈ bytes0; (forward)% ⊦ by ' ≠ [];% ⊦ i + j = j + i;% ⊦ i + j + i0 = (i + j) + i0;% ⊦ i + 0 = i;% ⊦ band(i, j) = band(j, i);% ⊦ band(i, band(i0, j)) = band(band(i, i0), j);% ⊦ b2i(by) % 256 = b2i(by);% ⊦ 0 ≤ i → band(i, 255) = i % 256;