| # bytes ≤ n, 0 ≤ bytes2int(bytes) ⊦ # bytes = 1, bytes = [], fillsgn(n, bytes.butlast) = mklist(i2b(0), (n - # bytes) + 1) + bytes.butlast |
⊦ # bytes < n ∧ 0 ≤ bytes2int(bytes) → fillsgn(n, bytes) = mklist(i2b(0), n - # bytes) + bytes
¬(# bytes.butlast < n ∧ 0 ≤ bytes2int(bytes.butlast)), # bytes ≤ n, 0 ≤ bytes2int(bytes) ⊦ # bytes = 1, bytes = [], fillsgn(n, bytes.butlast) = mklist(i2b(0), (n - # bytes) + 1) + bytes.butlast
Used simplifier rules: ⊦ m + n = n + m;% ⊦ bytes ≠ [] → # bytes.butlast = # bytes - 1;% ⊦ bytes + bytes0 = bytes1 + bytes0 ↔ bytes = bytes1;% ⊦ mklist(by, m) = mklist(by, n) ↔ m = n;% ⊦ m ≤ n → (n < m ↔ false);% ⊦ ¬ m ≤ n ↔ n < m;%n ≤ m ⊦ (m - n) + n0 = n1 ↔ m + n0 = n + n1;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ ¬ m + n < m;% ⊦ # bytes = 0 ↔ bytes = [];% ⊦ m < n → n ≠ 0;% ⊦ i ≤ j ∧ 0 ≤ i → 0 ≤ j; (forward)% ⊦ m < n → n ≠ 0; (forward)% ⊦ m < n ∧ n ≤ n0 → m < n0; (forward)%n0 ≤ n ⊦ n - n0 ≤ m ↔ n ≤ m + n0;% ⊦ m < 1 ↔ m = 0;% ⊦ m + n = m + n0 ↔ n = n0;% ⊦ (bytes + bytes0) + bytes1 = bytes + bytes0 + bytes1; Used terms: bytes.butlast, n