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