| (n0 + m) + 1 = n1 + n, n0 + m < # ar, m < # ar, sum(ar, m, n0) + ar[n0 + m] < sum(ar, n, n1), 0 < sum(ar, n, n1), suffix-upper-bound(subarray(ar, 0, n0 + m), sum(ar, m, n0)), 0 ≤ sum(ar, m, n0) + ar[n0 + m], 0 ≤ sum(ar, m, n0), n ≤ (n0 + m) + 1, n ≤ # ar, n ≤ n0 + m → sum(ar, n, n0 + m - n) ≤ sum(ar, m, n0) ⊦ |
(n0 + m) + 1 = n1 + n, 0 < sum(ar, n, n1), n0 + m < # ar, m < # ar, sum(ar, m, n0) + ar[n0 + m] < sum(ar, n, n1), suffix-upper-bound(subarray(ar, 0, n0 + m), sum(ar, m, n0)), n1 + n ≤ # ar, 0 ≤ sum(ar, m, n0) + ar[n0 + m], 0 ≤ sum(ar, m, n0), n ≤ # ar, n ≤ n0 + m → sum(ar, n, n0 + m - n) ≤ sum(ar, m, n0) ⊦
Used simplifier rules: ⊦ m ≤ m + n; (s)%forward-le-05: ⊦ i < j ∧ 0 ≤ i → 0 < j; (forward) from specification int-abs%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%eqle-one: ⊦ m = n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat