| n1 + m0 = n + 1, sum(ar, n0, m) < sum(ar, n1, m0), ar[n] < 0, n0 + m < # ar, n < # ar, upper-bound(subarray(ar, 0, n), sum(ar, n0, m)), n0 + m ≤ n, n0 + m ≤ n + 1 ⊦ |
⊦ upper-bound(ar, i) ↔ (∀ n, m. n + m ≤ # ar → sum(ar, n, m) ≤ i)
n1 + m0 = n + 1, n < # ar, n0 + m < # ar, ar[n] < 0, sum(ar, n0, m) < sum(ar, n1, m0), n0 + m ≤ n + 1, n0 + m ≤ n, ∀ n1, m0. n1 + m0 ≤ # subarray(ar, 0, n) → sum(subarray(ar, 0, n), n1, m0) ≤ sum(ar, n0, m) ⊦
Used terms: sum(ar, n0, m), subarray(ar, 0, n)