| ub2i(by0) = 0, bytes2int(bytes1) * 256 + ub2i(by0) = 0, ∀ by, bytes0. # bytes0 < #(bytes1 + by0 ') → bytes2int(bytes0) = 0 ∧ by ∈ bytes0 → by = i2b(0) ⊦ by = i2b(0), bytes1 = [], ¬ by ∈ bytes1 ∧ by ≠ by0, ¬ bytes2int(bytes1) ≤ 0 ∧ ub2i(by0) ≠ 0 |
ub2i(by0) = 0, b2i(by0) = 0, bytes2int(bytes1) = 0, by ∈ bytes1, ∀ by, bytes0. # bytes0 < #(bytes1 + by0 ') → bytes2int(bytes0) = 0 ∧ by ∈ bytes0 → by = i2b(0) ⊦ by = by0, bytes1 = [], by = i2b(0)
Used simplifier rules: ⊦ i * j = j * i;% ⊦ i * j * j0 = (i * j) * j0;% ⊦ 0 < i → (i * j = 0 ↔ j = 0);% ⊦ i + j = j + i;% ⊦ i + j + i0 = (i + j) + i0;% ⊦ i + 0 = i;% ⊦ b2i(by) = i → (i2b(i) ≠ by ↔ false);% ⊦ ub2i(by) = 0 → b2i(by) = 0; (forward)