| bytes1.first = 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 = [] |
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 = []
Used simplifier rules: ⊦ bytes ≠ [] → (by = bytes.first ∧ bytes0 = bytes.rest ↔ bytes = by + bytes0); (elim) Used terms: bytes1, by, bytes