| ~1 ≤ i3, ∀ i1, i2, intfun. i→n(i1 - i2) < i→n(i3) → i2 ≤ i1 + 1 → countFun(i2, i1 + 1, intfun) = countFun(i2, i1, intfun) + intfun(i1 + 1) ' ⊦ countFun(i, (i3 + i) + 1, intfun) = countFun(i, i3 + i, intfun) + intfun((i3 + i) + 1) ' |
⊦ j < i → countFun(i, j, intfun) = []
¬ i3 + i < i, ~1 ≤ i3, ∀ i1, i2, intfun. i→n(i1 - i2) < i→n(i3) → i2 ≤ i1 + 1 → countFun(i2, i1 + 1, intfun) = countFun(i2, i1, intfun) + intfun(i1 + 1) ' ⊦ countFun(i, (i3 + i) + 1, intfun) = countFun(i, i3 + i, intfun) + intfun((i3 + i) + 1) '
Used simplifier rules: countFun-one: ⊦ countFun(i, i, intfun) = intfun(i) ';%Nil: ⊦ [] + ints = ints; from specification list[intlista]%a: ⊦ (ints + ints0) + ints1 = ints + ints0 + ints1; from specification list[intlista]%ls: ⊦ i + j < j ↔ i < 0; from specification int-basic2%add-a: ⊦ i + j + i0 = (i + j) + i0; from specification int-basic2%add-c: ⊦ i + j = j + i; from specification int-basic2%mone-08: ⊦ i < 0 → (~1 ≤ i ↔ i = ~1); from specification int-abs%lel: ⊦ i < i0 ∧ i = i1 → i1 < i0; (forward) from specification oelem[intlista]%forward-le-02: ⊦ j < i ∧ i ≤ 0 → j < 0; (forward) from specification int-abs%ax-04: ⊦ i + 0 = i; from specification int-basic2%c-04: ⊦ i ' = i0 ' ↔ i = i0; from specification list[intlista] Used terms: intfun, i3 + i, i