| bytes1 = by + bytes, by = i2b(0), int2bytes(bytes2int(i2b(0) ' + bytes1)) = i2b(0) ' + bytes1, ∀ bytes0. # bytes0 < #(i2b(0) + bytes1) → bytes0.first = i2b(0) ∧ bytes0.rest.first = i2b(0) ∧ int2bytes(bytes2int(bytes0)) = bytes0 → # bytes0 = 1 ∨ bytes0 = [] ⊦ bytes1 = [] |
int2bytes(bytes2int(i2b(0) ' + bytes)) = i2b(0) ' + i2b(0) ' + bytes, ∀ bytes0. # bytes0 < #(i2b(0) + i2b(0) + bytes) → bytes0.first = i2b(0) ∧ bytes0.rest.first = i2b(0) ∧ int2bytes(bytes2int(bytes0)) = bytes0 → # bytes0 = 1 ∨ bytes0 = [] ⊦
Used simplifier rules: bytes2int-zero-02: ⊦ bytes2int(i2b(0) ' + i2b(0) ' + bytes) = bytes2int(i2b(0) ' + bytes);% ⊦ bytes = bytes0 + by ' + bytes1 → by ∈ bytes;% ⊦ by ' + bytes = bytes0 → by ∈ bytes0; (forward)% ⊦ by ' + bytes ≠ [];% ⊦ (bytes + bytes0) + bytes1 = bytes + bytes0 + bytes1;% ⊦ by + bytes = by ' + bytes;