| bytes = by + bytes1, # bytes < # int2bytes(bytes2int(bytes)), ∀ bytes0. # bytes0 < # bytes → # bytes0 < # int2bytes(bytes2int(bytes0)) → bytes0 = [] ⊦ bytes = [], b2i(by) ≠ 0 ∧ b2i(by) ≠ ~1 |
1 + # bytes1 < # int2bytes(bytes2int(by ' + bytes1)), ∀ bytes0. # bytes0 < #(by + bytes1) → # bytes0 < # int2bytes(bytes2int(bytes0)) → bytes0 = [] ⊦ b2i(by) ≠ 0 ∧ b2i(by) ≠ ~1
Used simplifier rules: int2bytes-empty: ⊦ int2bytes(i) ≠ [];% ⊦ # bytes = 0 ↔ bytes = [];% ⊦ m < n → n ≠ 0; (forward)% ⊦ # by ' = 0 +1;% ⊦ #(bytes + bytes0) = # bytes + # bytes0;% ⊦ (bytes + bytes0) + bytes1 = bytes + bytes0 + bytes1;% ⊦ by ' + bytes ≠ [];% ⊦ by + bytes = by ' + bytes;