| ¬(# 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 |
bytes2int(bytes.butlast) < 0, 0 ≤ bytes2int(bytes), # bytes ≤ n ⊦ fillsgn(n, bytes.butlast) = mklist(i2b(0), (n - # bytes) + 1) + bytes.butlast, bytes = [], # bytes = 1
Used simplifier rules: ⊦ i < 0 ∧ 0 ≤ j → i < j;% ⊦ j < i ∧ i ≤ 0 → j < 0; (forward)% ⊦ i < j ∧ j ≤ j0 → i < j0; (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;