| a[n0] < 0, n0 < # a, max_ending_here1 + a[n0] < 0, maximum-suffix-sum(subarray(a, 0, n0), m, max_ending_here1), maximum-sum(subarray(a, 0, n0), max_so_far), max_ending_here1 ≤ max_so_far, 0 ≤ max_ending_here1, 0 ≤ max_so_far ⊦ ∃ m. maximum-suffix-sum(subarray(a, 0, n0 + 1), m, 0) |
Used simplifier rules: add-a: ⊦ i + j + i0 = (i + j) + i0; from specification int-basic2%add-c: ⊦ i + j = j + i; from specification int-basic2%n < # ar ⊦ i + ar[n] < 0 ∧ maximum-suffix-sum(subarray(ar, 0, n), m, i) → maximum-suffix-sum(subarray(ar, 0, n + 1), n + 1, 0); (ss)%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic%# ar0 = n ⊦ subarray(ar0, 0, n) = ar0; (s)% ⊦ m < n ↔ ¬ n ≤ m; (ss)% ⊦ m < n → (n ≤ m ↔ false); (s) Used terms: n0 + 1