| int2bytes(bytes2int(bytes)) = bytes, bytes.rest.first = i2b(0), bytes.first = i2b(0), ∀ bytes0. # bytes0 < # bytes → bytes0.first = i2b(0) ∧ bytes0.rest.first = i2b(0) ∧ int2bytes(bytes2int(bytes0)) = bytes0 → # bytes0 = 1 ∨ bytes0 = [] ⊦ bytes = [], # bytes = 1 |
bytes = by + bytes1, int2bytes(bytes2int(bytes)) = bytes, bytes1.first = i2b(0), by = i2b(0), ∀ bytes0. # bytes0 < # bytes → bytes0.first = i2b(0) ∧ bytes0.rest.first = i2b(0) ∧ int2bytes(bytes2int(bytes0)) = bytes0 → # bytes0 = 1 ∨ bytes0 = [] ⊦ bytes = [], # bytes = 1
Used simplifier rules: ⊦ bytes ≠ [] → (by = bytes.first ∧ bytes0 = bytes.rest ↔ bytes = by + bytes0); (elim) Used terms: bytes, by, bytes1