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