| # bytes < n + 1 ∧ bytes ≠ [], fillsgn(n, bytes) = by ' + bytes0, # bytes < n, by ∈ fillsgn(n, bytes) ⊦ bytes = [], # bytes = 1, ((b2i(bytes.first) < 0 ⊃ i2b(~1);i2b(0)) ' + fillsgn((n + 1)-1, bytes)).butlast = by ' + fillsgn(n, bytes).butlast, fillsgn(n, bytes) = [] |
fillsgn(n, bytes) = by ' + bytes0, # bytes < n, by ∈ fillsgn(n, bytes) ⊦ fillsgn(n, bytes) = [], bytes = [], # bytes = 1, (¬ 0 ≤ b2i(bytes.first) ⊃ i2b(~1);i2b(0)) = by
Used simplifier rules: ⊦ m < n → ¬ n < m;% ⊦ m < n + 1 ↔ ¬ n < m;% ⊦ by ' = by0 ' ↔ by = by0;% ⊦ bytes + bytes0 = bytes1 + bytes0 ↔ bytes = bytes1;% ⊦ (bytes + bytes0) + bytes1 = bytes + bytes0 + bytes1;% ⊦ bytes ≠ [] → (bytes0 + bytes).butlast = bytes0 + bytes.butlast;% ⊦ m + n = n + m;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ (m + 1)-1 = m;% ⊦ ¬ i < j ↔ j ≤ i;