| i ≤ j, (∀ i1. i ≤ i1 ∧ i1 ≤ j → intfun(i1) = i0) ∧ i ≤ j ∧ 0 ≤ i, ∀ j0, i1, intfun, i0. i→n(j0) - i→n(i1) < i→n(j) - i→n(i) → (∀ i2. i1 ≤ i2 ∧ i2 ≤ j0 → intfun(i2) = i0) ∧ i1 ≤ j0 ∧ 0 ≤ i1 → Σ countFun(i1, j0, intfun) = (1 + j0 - i1) * i0 ⊦ Σ(countFun(i, j - 1, intfun) + intfun(j) ') = (1 + j - i) * i0 |
i ≤ j, 0 ≤ i, 0 ≤ j, ∀ i1. i ≤ i1 ∧ i1 ≤ j → intfun(i1) = i0, ∀ j0, i1, intfun, i0. i→n(j0) - i→n(i1) < i→n(j) - i→n(i) → (∀ i2. i1 ≤ i2 ∧ i2 ≤ j0 → intfun(i2) = i0) ∧ i1 ≤ j0 ∧ 0 ≤ i1 → Σ countFun(i1, j0, intfun) = (1 + j0 - i1) * i0 ⊦ Σ countFun(i, j - 1, intfun) + intfun(j) = (1 + j - i) * i0
Used simplifier rules: sum-app: ⊦ Σ(ints + ints0) = Σ ints + Σ ints0;%sum-one: ⊦ Σ i ' = i;%forward-le-01: ⊦ i ≤ j ∧ 0 ≤ i → 0 ≤ j; (forward) from specification int-abs%forward-lele: ⊦ j ≤ j0 ∧ j0 ≤ j1 → j ≤ j1; (forward) from specification int-abs%a: ⊦ (ints + ints0) + ints1 = ints + ints0 + ints1; from specification list[intlista]